*Descriere:
Aceste fixuri rezolva mai multe probleme din sistemul de pescuit Metin2, inclusiv crash-uri la reload, verificari lipsa, iteme consumate gresit si posibilitatea de a pescui prin packet-uri modificate in zone fara apa.
- previne crash-uri in fishing.cpp;
- adauga verificari pentru GetDesc si undita;
- rezolva consumarea gresita a pestilor;
- valideaza pescuitul server-side;
- corecteaza unghiurile negative trimise de client.
*Link download / Code:
Deschide game/src/fishing.cpp, in functia Initialize, si cauta:
Inlocuieste cu:
Aceasta modificare previne crash-ul core-ului la pornire sau la /reload f daca ultima linie din fishing.txt nu contine line break.
In acelasi fisier, la finalul functiei FishingPractice, cauta:
Inlocuieste cu:
In game/src/fishing.cpp cauta ambele aparitii:
Inlocuieste fiecare aparitie cu:
In functia UseFish cauta:
Adauga dedesubt:
In functia Grill cauta:
Adauga dedesubt:
Deschide game/src/fishing.h, in namespace fishing, si adauga:
Deschide game/src/fishing.cpp, in namespace fishing, si adauga:
Deschide game/src/char.cpp, in functia CHARACTER::fishing, si cauta:
Inlocuieste cu:
Aceasta verificare blocheaza pescuitul daca jucatorul este mort, stun, observer, calare sau daca nu exista apa in raza valida din fata caracterului.
Deschide game/src/input_main.cpp, in functia CInputMain::Fishing, si cauta:
Inlocuieste cu:
Daca m_pkFishingEvent este private in char.h, adauga un getter pentru el si foloseste getter-ul in verificarea de mai sus.
Fix-ul pentru IsWaterInReach foloseste aceeasi logica generala ca verificarea clientului, dar probeaza mai multe distante si unghiuri apropiate pentru a compensa rotunjirea unghiului si diferentele mici dintre pozitia clientului si serverului.
Aceste fixuri rezolva mai multe probleme din sistemul de pescuit Metin2, inclusiv crash-uri la reload, verificari lipsa, iteme consumate gresit si posibilitatea de a pescui prin packet-uri modificate in zone fara apa.
- previne crash-uri in fishing.cpp;
- adauga verificari pentru GetDesc si undita;
- rezolva consumarea gresita a pestilor;
- valideaza pescuitul server-side;
- corecteaza unghiurile negative trimise de client.
*Link download / Code:
Deschide game/src/fishing.cpp, in functia Initialize, si cauta:
Cod: Selectaţi tot
char * p = strrchr(buf, '\n');
*p = '\0';Inlocuieste cu:
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.Aceasta modificare previne crash-ul core-ului la pornire sau la /reload f daca ultima linie din fishing.txt nu contine line break.
In acelasi fisier, la finalul functiei FishingPractice, cauta:
Cod: Selectaţi tot
rod->SetSocket(2, 0);
}Inlocuieste cu:
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.In game/src/fishing.cpp cauta ambele aparitii:
Cod: Selectaţi tot
ch->GetDesc()->Packet(&p, sizeof(TPacketGCFishing));Inlocuieste fiecare aparitie cu:
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.In functia UseFish cauta:
Cod: Selectaţi tot
if (idx<=1 || idx >= MAX_FISH)
return;Adauga dedesubt:
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.In functia Grill cauta:
Cod: Selectaţi tot
if (idx == -1)
return;Adauga dedesubt:
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.Deschide game/src/fishing.h, in namespace fishing, si adauga:
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.Deschide game/src/fishing.cpp, in namespace fishing, si adauga:
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.Deschide game/src/char.cpp, in functia CHARACTER::fishing, si cauta:
Cod: Selectaţi tot
{
LPSECTREE_MAP pkSectreeMap = SECTREE_MANAGER::instance().GetMap(GetMapIndex());
int x = GetX();
int y = GetY();
LPSECTREE tree = pkSectreeMap->Find(x, y);
DWORD dwAttr = tree->GetAttribute(x, y);
if (IS_SET(dwAttr, ATTR_BLOCK))
{Inlocuieste cu:
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.Aceasta verificare blocheaza pescuitul daca jucatorul este mort, stun, observer, calare sau daca nu exista apa in raza valida din fata caracterului.
Deschide game/src/input_main.cpp, in functia CInputMain::Fishing, si cauta:
Cod: Selectaţi tot
ch->SetRotation(p->dir * 5);Inlocuieste cu:
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.Daca m_pkFishingEvent este private in char.h, adauga un getter pentru el si foloseste getter-ul in verificarea de mai sus.
Fix-ul pentru IsWaterInReach foloseste aceeasi logica generala ca verificarea clientului, dar probeaza mai multe distante si unghiuri apropiate pentru a compensa rotunjirea unghiului si diferentele mici dintre pozitia clientului si serverului.



