*Descriere:
Acest bugfix pentru sistemul official de căsătorie (Marriage/Wedding) în Metin2 rezolvă verificări inutile și posibile null pointer crashes în questlua_marriage.cpp, corectează funcția ShoutInMap pentru trimiterea corectă a tipului de chat și adaugă funcții noi (wedding_is_dark / wedding_is_snow) pentru un control mai flexibil al evenimentului de nuntă din quest-uri.
*Poze / Video:
*Link download / Code:
1) Verificare inutila in "marriage_wedding_is_playing_music" din questlua_marriage.cpp
Deschidem questlua_marriage.cpp si cautam:
Inlocuim cu:
Explicatie:
Functia IsPlayingMusic returneaza deja un boolean. In acest punct, pWedding nu poate fi NULL sau nullptr, deoarece functia este executata doar pe harta de casatorie (Marriage-Map). Acest lucru este sustinut si de numeroasele alte functii din questlua_marriage.cpp, care folosesc acelasi pointer fara a-l verifica inainte.
2) Variabila nefolosita in "ShoutInMap" din marriage.cpp
Deschidem marriage.cpp si cautam:
Inlocuim cu:
Explicatie:
Astfel, functia ShoutInMap poate fi folosita si pentru a trimite mesaje normale de chat in harta, nu doar comenzi.
Exemplu de utilizare:
3) Fix Nullpointer in "marriage_wedding_client_command" din questlua_marriage.cpp
Deschidem questlua_marriage.cpp si cautam (in functia marriage_wedding_client_command):
Inlocuim cu:
Explicatie:
Daca pointerul pMarriage este NULL, nu putem accesa pWeddingInfo. In toate celelalte functii aceasta verificare este facuta inainte, doar aici lipsea.
4) Bonus: Functii wedding_is_dark si wedding_is_snow pentru a scrie quest-uri mai usor
Deschidem wedding.cpp si adaugam undeva sub public::
Deschidem questlua_marriage.cpp si adaugam urmatoarele functii in namespace marriage:
Tot in questlua_marriage.cpp, jos in tabelul de functii, adaugam:
Explicatie:
Aceste functii permit folosirea unor toggle-uri direct in quest-uri, de exemplu pentru activarea/dezactivarea vremii intunecate sau a zapezii in timpul nuntii.
Exemplu de utilizare in quest:
Acest bugfix pentru sistemul official de căsătorie (Marriage/Wedding) în Metin2 rezolvă verificări inutile și posibile null pointer crashes în questlua_marriage.cpp, corectează funcția ShoutInMap pentru trimiterea corectă a tipului de chat și adaugă funcții noi (wedding_is_dark / wedding_is_snow) pentru un control mai flexibil al evenimentului de nuntă din quest-uri.
*Poze / Video:
- 03-02-2026, 11-44-55.png (642.6 KiB) Vizualizat de 493 ori
1) Verificare inutila in "marriage_wedding_is_playing_music" din questlua_marriage.cpp
Deschidem questlua_marriage.cpp si cautam:
Cod: Selectaţi tot
if (pWedding)
lua_pushboolean(L, pWedding->IsPlayingMusic());
else
lua_pushboolean(L, false); 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.Explicatie:
Functia IsPlayingMusic returneaza deja un boolean. In acest punct, pWedding nu poate fi NULL sau nullptr, deoarece functia este executata doar pe harta de casatorie (Marriage-Map). Acest lucru este sustinut si de numeroasele alte functii din questlua_marriage.cpp, care folosesc acelasi pointer fara a-l verifica inainte.
2) Variabila nefolosita in "ShoutInMap" din marriage.cpp
Deschidem marriage.cpp si cautam:
Cod: Selectaţi tot
ch->ChatPacket(CHAT_TYPE_COMMAND, msg); 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.Explicatie:
Astfel, functia ShoutInMap poate fi folosita si pentru a trimite mesaje normale de chat in harta, nu doar comenzi.
Exemplu de utilizare:
Cod: Selectaţi tot
std::stringstream test("");
test << "hey " << 123;
ShoutInMap(CHAT_TYPE_INFO, test.str().c_str());3) Fix Nullpointer in "marriage_wedding_client_command" din questlua_marriage.cpp
Deschidem questlua_marriage.cpp si cautam (in functia marriage_wedding_client_command):
Cod: Selectaţi tot
if (pMarriage->pWeddingInfo) 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.Explicatie:
Daca pointerul pMarriage este NULL, nu putem accesa pWeddingInfo. In toate celelalte functii aceasta verificare este facuta inainte, doar aici lipsea.
4) Bonus: Functii wedding_is_dark si wedding_is_snow pentru a scrie quest-uri mai usor
Deschidem wedding.cpp si adaugam undeva sub public::
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 questlua_marriage.cpp si adaugam urmatoarele functii in namespace marriage:
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.Tot in questlua_marriage.cpp, jos in tabelul de functii, 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.Explicatie:
Aceste functii permit folosirea unor toggle-uri direct in quest-uri, de exemplu pentru activarea/dezactivarea vremii intunecate sau a zapezii in timpul nuntii.
Exemplu de utilizare in quest:
Cod: Selectaţi tot
when WEDDING_MANAGER.click with pc.is_engaged_or_married() and marriage.in_my_wedding() begin
local sel = select3("Wetter togglen", "Schnee togglen")
if sel == -1 then return end
if sel == 1 then
marriage.wedding_dark(not marriage.wedding_is_dark())
elseif sel == 2 then
marriage.wedding_snow(not marriage.wedding_is_snow())
end
end


