Aceasta este o modificare care schimba modul in care functioneaza numele la jucatori pe serverul tau de Metin2.
Aceasta "imbunatatire" permite folosirea de caractere speciale si spatii in numele playerilor.
Urmatoarele caractere speciale vor fi permise:
- spatiu
- underscore (_)
- cratima (-)
- punct (.)
- doua puncte (:)
- ghilimele simple (‘ ’)
- umlaut-uri germane
Cred ca au fost acoperite toate cazurile unde ar putea aparea probleme cu interogarile SQL, dar asta depinde de la sursa la sursa.Cine vrea sa adauge altele (exemplu: diacriticele romanesti) poate face asta in functia bool is_valid_name_char(unsigned char c) – vezi codul, ar trebui sa fie usor de inteles.
Comenzile de GM care se folosesc de numele jucatorilor (exemplu: /warp NumePlayer) vor functiona fara probleme daca folosesti ghilimele pentru nume.
Adica, daca avem un player numit "Focu' Intunericului" vom folosi:
Code:
/warp "Focu' Intunericului"*Link download / Code:
In sursa Binary -> Userinterface -> Locale_inc.h adaugam::
Code:
#define ENABLE_EXTENDED_PLAYER_NAMES //Enable extended character names (longer names and special chars)Code:
#if defined(LOCALE_SERVICE_JAPAN)
PLAYER_NAME_MAX_LEN = 16,
#else
PLAYER_NAME_MAX_LEN = 12,
#endifMergem in locale/ui/createcharacterwindow.py si adaugam:
Acum cautam ("character_name_value":):
Code:
"input_limit" : 12,Acum deschidem uiscript/inputdialog.py si facem acelasi lucru - adaugam:
Code:
import chrCode:
"input_limit" : 12,Acum la fel si in uiscript/createcharacterwindow.py - adaugam:
Code:
import chrCode:
"input_limit" : 12,Acum, in sursa game adaugam in service.h / CommonDefines.h:
Code:
#define ENABLE_EXTENDED_PLAYER_NAMES //Enable extended character names (longer names and special chars)Code:
int check_name_alphabet(const char* str)Acum in log.cpp cautam si adaptam functiile ca mai jos:
Acum mergem in messenger_manager.cpp si facem acelasi lucru - cautam si adaptam/inlocuim:
Acum in questlua_pc.cpp cautam in pc_change_name:
Code:
snprintf(szQuery, sizeof(szQuery), "SELECT COUNT(*) FROM player%s WHERE name='%s'", get_table_postfix(), szName);Cautam in aceeasi functie:
Code:
snprintf(szQuery, sizeof(szQuery), "UPDATE player%s SET name='%s' WHERE id=%u", get_table_postfix(), szName, pid);Deschidem acum db/ClientManagerLogin.cpp si cautam:
Code:
void CClientManager::QUERY_CHANGE_NAME(CPeer * peer, DWORD dwHandle, TPacketGDChangeName * p)Deschidem db/ClientManagerPlayer.cpp si cautam:
Code:
void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerCreatePacket* packet):

la acest mesaj și conținutul se va afișa automat.




