Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Kolejnosc wykonywanych funkcji


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 diggs

    Wszechwidzący

  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:229
  • Lokalizacja:Internet
Offline

Napisano 22.04.2011 17:06

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

  • +
  • -
  • 0

cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
b_350_20_D91408_470002_FFFFFA_000000.png

cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
b_350_20_F8D241_B69427_0F100D_000000.png


#2 GoldeN

    Wszechmogący

  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 22.04.2011 19:33

[...]
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


#3 diggs

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:229
  • Lokalizacja:Internet
Offline

Napisano 22.04.2011 20:42

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 ++.
  • +
  • -
  • 0

cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
b_350_20_D91408_470002_FFFFFA_000000.png

cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
b_350_20_F8D241_B69427_0F100D_000000.png





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych