←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Kolejnosc wykonywanych funkcji

Zablokowany

  • +
  • -
diggs - zdjęcie 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:
[...]
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 funkcja
Jak 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
Odpowiedz

GoldeN - zdjęcie 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
Odpowiedz

  • +
  • -
diggs - zdjęcie 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 ++.
Odpowiedz
Zablokowany