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:
Code:
if (pWedding)
lua_pushboolean(L, pWedding->IsPlayingMusic());
else
lua_pushboolean(L, false);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:
Code:
ch->ChatPacket(CHAT_TYPE_COMMAND, msg);Explicatie:
Astfel, functia ShoutInMap poate fi folosita si pentru a trimite mesaje normale de chat in harta, nu doar comenzi.
Exemplu de utilizare:
Code:
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):
Code:
if (pMarriage->pWeddingInfo)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:
Code:
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

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

