[Kleines RLS] Name und Titel trennen

  • hey,


    und zwar gings um folgendes:


    Wir hatten Premium User, bei denen das Premium abgelaufen ist & sie dadurch ihren Titel "[P]" wieder abgenommen bekamen
    und zu ihrem ursprünglichen Namen zurückgesetzt werden sollten.
    Allerdings gab es ein Problem, wenn ein anderer User in der Zwischenzeit diesen Namen genutzt hatte.


    Daher die Trennung von Namen und Titeln.


    Das ganze ist für den Spieler nicht sichtbar, allerdings hat es einen vorteil gegenüber dem ändern des Namen:
    Der Spieler 'Paul' kauft Premium/Vip und sein name bleibt in Mysql bei 'Paul' ingame sieht er allerdings '[P]Paul'.


    Was das ganze bringt ? Sein Name ist weiterhin 'Paul' und somit kann kein Character erstellt werden, der Paul heißt.


    Der selbe Vorteil gilt für GM's etc. Auch ihr Name kann nicht mehr kopiert werden.


    Screen:


    Bitte melden Sie sich an, um dieses Bild zu sehen.


    zum How-To:


    Server Source:


    common/tables.h


    Sucht nach:

    C: tables.h
    1. typedef struct SPlayerTable
    2. {
    3. DWORD id;
    4. char name[CHARACTER_NAME_MAX_LEN + 1];
    5. char ip[IP_ADDRESS_LENGTH + 1];


    über "char name[CHARACTER_NAME_MAX_LEN + 1];" das einfügen:


    C: table.h
    1. char title[CHARACTER_NAME_MAX_LEN + 1];

    Sollte dann so aussehen:


    C: table.h
    1. typedef struct SPlayerTable
    2. {
    3. DWORD id;
    4. char title[CHARACTER_NAME_MAX_LEN + 1];
    5. char name[CHARACTER_NAME_MAX_LEN + 1];
    6. char ip[IP_ADDRESS_LENGTH + 1];


    Als nächstes geht ihr in folgende Datei:


    db/src/ClientManagerPlayer.cpp


    Sucht nach:


    C: ClientManagerPlayer.cpp
    1. "id,name,job,voice,dir,x,y,z,map_index,exit_x,exit_y,exit_map_index,hp,mp,stamina,random_hp,random_sp,playtime,"

    Und ersetzt es mit:



    C: ClientManagerPlayer.cpp
    1. "id,title,name,job,voice,dir,x,y,z,map_index,exit_x,exit_y,exit_map_index,hp,mp,stamina,random_hp,random_sp,playtime,"


    Dann sucht ihr nach:


    C: ClientManagerPlayer.cpp
    1. strlcpy(pkTab->name, row[col++], sizeof(pkTab->name));

    und fügt das darüber ein:



    C: ClientManagerPlayer.cpp
    1. strlcpy(pkTab->title, row[col++], sizeof(pkTab->name));

    Sollte dann so aussehen:


    C: ClientManagerPlayer.cpp
    1. strlcpy(pkTab->title, row[col++], sizeof(pkTab->name));
    2. strlcpy(pkTab->name, row[col++], sizeof(pkTab->name));


    Dann geht ihr in game/src/input_db.cpp


    Und sucht nach:


    C: input_db.cpp
    1. LPCHARACTER ch = CHARACTER_MANAGER::instance().CreateCharacter(pTab->name, pTab->id);

    das ersetzt ihr duch folgendes:





    So in der Source fertig.


    jetzt noch den Sql befehl ausführen:



    SQL
    1. ALTER TABLE `player` ADD `title` varchar(24) NOT NULL DEFAULT '';


    Hier ist das DEFAULT wichtig, da ihr sonst keine Chars mehr erstellen könnt >.<


    So das wars :)


    Jetzt könnt ihr einfach in die title spalte [p] oder [SA] etc. eintragen & es wird angezeigt.


    LG Bequiet

    Du bist Designer, Programmierer oder Allround-Tallent
    und suchst nach einem Struktuierten Projekt ?


    Dann schau dir doch mal unsere Teamsuche an:
    Bitte melden Sie sich an, um diesen Link zu sehen.


    [progressbar=62,-1,#254c73,85,0][/progressbar]


    Bequiet


  • Dieses Thema enthält 7 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.