*Descriere:
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
Adica, daca avem un player numit "Focu' Intunericului" vom folosi:
*Poze / Video:
*Link download / Code:
In sursa Binary -> Userinterface -> Locale_inc.h adaugam::
Acum mergem in Userinterface/StdAfx.h si cautam:
Inlocuim cu:
Mergem in locale/ui/createcharacterwindow.py si adaugam:
Acum cautam ("character_name_value":):
Inlocuim cu:
Acum deschidem uiscript/inputdialog.py si facem acelasi lucru - adaugam:
Cautam:
Inlocuim cu:
Acum la fel si in uiscript/createcharacterwindow.py - adaugam:
Cautam:
Inlocuim cu:
Acum, in sursa game adaugam in service.h / CommonDefines.h:
Deschidem game/locale_service.cpp si cautam:
Inlocuim / adaptam sa arate asa:
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:
Inlocuim / adaptam asa:
Cautam in aceeasi functie:
Inlocuim / adaptam:
Deschidem acum db/ClientManagerLogin.cpp si cautam:
Inlocuim functia / adaptam cu:
Deschidem db/ClientManagerPlayer.cpp si cautam:
Inlocuim sau adaptam:
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:
Cod: Selectaţi tot
/warp "Focu' Intunericului"- pasted-from-clipboard.png (250.75 KiB) Vizualizat de 1050 ori
In sursa Binary -> Userinterface -> Locale_inc.h adaugam::
Cod: Selectaţi tot
#define ENABLE_EXTENDED_PLAYER_NAMES //Enable extended character names (longer names and special chars)Cod: Selectaţi tot
#if defined(LOCALE_SERVICE_JAPAN)
PLAYER_NAME_MAX_LEN = 16,
#else
PLAYER_NAME_MAX_LEN = 12,
#endif Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Mergem in locale/ui/createcharacterwindow.py si adaugam:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Acum cautam ("character_name_value":):
Cod: Selectaţi tot
"input_limit" : 12, Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Acum deschidem uiscript/inputdialog.py si facem acelasi lucru - adaugam:
Cod: Selectaţi tot
import chrCod: Selectaţi tot
"input_limit" : 12, Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Acum la fel si in uiscript/createcharacterwindow.py - adaugam:
Cod: Selectaţi tot
import chrCod: Selectaţi tot
"input_limit" : 12, Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Acum, in sursa game adaugam in service.h / CommonDefines.h:
Cod: Selectaţi tot
#define ENABLE_EXTENDED_PLAYER_NAMES //Enable extended character names (longer names and special chars)Cod: Selectaţi tot
int check_name_alphabet(const char* str) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Acum in log.cpp cautam si adaptam functiile ca mai jos:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat. Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat. Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat. Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat. Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat. Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Acum mergem in messenger_manager.cpp si facem acelasi lucru - cautam si adaptam/inlocuim:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat. Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat. Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat. Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Acum in questlua_pc.cpp cautam in pc_change_name:
Cod: Selectaţi tot
snprintf(szQuery, sizeof(szQuery), "SELECT COUNT(*) FROM player%s WHERE name='%s'", get_table_postfix(), szName); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cautam in aceeasi functie:
Cod: Selectaţi tot
snprintf(szQuery, sizeof(szQuery), "UPDATE player%s SET name='%s' WHERE id=%u", get_table_postfix(), szName, pid); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschidem acum db/ClientManagerLogin.cpp si cautam:
Cod: Selectaţi tot
void CClientManager::QUERY_CHANGE_NAME(CPeer * peer, DWORD dwHandle, TPacketGDChangeName * p) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschidem db/ClientManagerPlayer.cpp si cautam:
Cod: Selectaţi tot
void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerCreatePacket* packet): Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.






