Kolejnosc wykonywanych funkcji
diggs
22.04.2011
Witam, mam problem, może nie tyle problem bo da się to obejść set_task'iem, ale męczy mnie to i zastanawia.
Przejdę do sedna sprawy mamy taki przykładowy kod:
Plik z logami wygląda natomiast tak:
Moje pytanie jest dlaczego tak się dzieje przecież za nim "funcjamala" zostanie wywołana "funkcja" musi zwrócić coś do "funkcja_duza". Jakie jest rozwiązanie tego problemu.
Kod i logi nie są prawdziwe napisałem je na potrzeby przykładu, aby lepiej zobrazować problem.
PS. Potrzebuje odpowiedzi na już ponieważ stoje z pluginem
Użytkownik diggs edytował ten post 22.04.2011 17:08
Przejdę do sedna sprawy mamy taki przykładowy kod:
[...] public funkcja_duza() { log_to_file("addons/amxmodx/logs/logi.log", "Jestem funkcja_duza"); funkcja(); funcjamala(); return PLUGIN_CONTINUE; } public funkcja() { log_to_file("addons/amxmodx/logs/logi.log", "Jestem funkcja"); return PLUGIN_CONTINUE; } public funcjamala() { log_to_file("addons/amxmodx/logs/logi.log", "Jestem funcjamala"); return PLUGIN_CONTINUE; } [...]Funkcja "funcja_duza" jest wcześniej wywoływana przez event, nie istotne teraz jaki. "funkcja" oraz "funcjamala" wykonują jakieś zapytania na bazie danych i zapisują odczytane dane do zmiennych. "funcjamala" musi być wykonana po "funkcja" ponieważ korzysta z danych które odczytuje "funkcja".
Plik z logami wygląda natomiast tak:
Jestem funkcja_duza Jestem funcjamala Jestem funkcjaJak widać funkcje są wykonywane w odwrotnej kolejności. Do tej pory rozwiązałem to za pomocą wywołania "funcjamala" za pomocą set_task'a z 5sekundowym opóźnieniem.
Moje pytanie jest dlaczego tak się dzieje przecież za nim "funcjamala" zostanie wywołana "funkcja" musi zwrócić coś do "funkcja_duza". Jakie jest rozwiązanie tego problemu.
Kod i logi nie są prawdziwe napisałem je na potrzeby przykładu, aby lepiej zobrazować problem.
PS. Potrzebuje odpowiedzi na już ponieważ stoje z pluginem
Użytkownik diggs edytował ten post 22.04.2011 17:08
GoldeN 22.04.2011
[...]
public funkcja_duza()
{
log_to_file("addons/amxmodx/logs/logi.log", "Jestem funkcja_duza");
funkcja();
return PLUGIN_CONTINUE;
}
public funkcja()
{
log_to_file("addons/amxmodx/logs/logi.log", "Jestem funkcja");
funcjamala();
return PLUGIN_CONTINUE;
}
public funcjamala()
{
log_to_file("addons/amxmodx/logs/logi.log", "Jestem funcjamala");
return PLUGIN_CONTINUE;
}
[...]
Może tak?
Użytkownik GoldeN edytował ten post 22.04.2011 19:33
diggs
22.04.2011
Hmmm, może i tak. Tak tego nie wymyśliłem, ale się już nie dowiemy bo znalazłem bug w pluginie i musiałem przebudować część funkcji w tym te z którymi miałem problem i wyglądają zupełnie inaczej.
Ale to i tak ciekawe czemu się tak dziwnie wykonywały. Jak ktoś mi to wytłumaczy daje ++.
Ale to i tak ciekawe czemu się tak dziwnie wykonywały. Jak ktoś mi to wytłumaczy daje ++.