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:
- typedef struct SPlayerTable
- {
- DWORD id;
- char name[CHARACTER_NAME_MAX_LEN + 1];
- char ip[IP_ADDRESS_LENGTH + 1];
über "char name[CHARACTER_NAME_MAX_LEN + 1];" das einfügen:
- char title[CHARACTER_NAME_MAX_LEN + 1];
Sollte dann so aussehen:
- typedef struct SPlayerTable
- {
- DWORD id;
- char title[CHARACTER_NAME_MAX_LEN + 1];
- char name[CHARACTER_NAME_MAX_LEN + 1];
- char ip[IP_ADDRESS_LENGTH + 1];
Als nächstes geht ihr in folgende Datei:
db/src/ClientManagerPlayer.cpp
Sucht nach:
- "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:
- "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:
- strlcpy(pkTab->name, row[col++], sizeof(pkTab->name));
und fügt das darüber ein:
- strlcpy(pkTab->title, row[col++], sizeof(pkTab->name));
Sollte dann so aussehen:
- strlcpy(pkTab->title, row[col++], sizeof(pkTab->name));
- strlcpy(pkTab->name, row[col++], sizeof(pkTab->name));
Dann geht ihr in game/src/input_db.cpp
Und sucht nach:
- LPCHARACTER ch = CHARACTER_MANAGER::instance().CreateCharacter(pTab->name, pTab->id);
das ersetzt ihr duch folgendes:
- if (NULL != pTab->title && "" != pTab->title)
- {
- strcat(pTab->title, pTab->name);
- }
- else
- {
- strcpy(pTab->title, pTab->name);
- }
- LPCHARACTER ch = CHARACTER_MANAGER::instance().CreateCharacter(pTab->title, pTab->id);
Alles anzeigen
So in der Source fertig.
jetzt noch den Sql befehl ausführen:
- 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