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

[ROZWIĄZANE] HudSyncObject -1 is invalid


Najlepsza odpowiedź BlackPerfum , 22.06.2014 15:03

To mnie troszkę zdiwiło. Troszkę poszukałem i sprawa rozwiązana:

static cell AMX_NATIVE_CALL ShowSyncHudMsg(AMX *amx, cell *params)
{
	int len = 0;
	char* message = NULL;
	int index = params[1];
	unsigned int sync_obj = static_cast<unsigned int>(params[2]) - 1;//O to chodzi xD
	if (sync_obj >= g_hudsync.size())
	{
		LogError(amx, AMX_ERR_NATIVE, "HudSyncObject %d is invalid", sync_obj);
		return 0;
	}
.
.
.
}

I takie coś zadziała:

if(is_user_alive(id) && wczytuje_dane[id] &&  SyncHudObj2 > 0)
{
	new szText[128];
	if(poziom_gracza[id] >= 80)
	{
		formatex(szText, charsmax(szText), "[Forum: XXX]^n[Ranga: %s]^n[Poziom: 80]^n[HP: %i]^n[Zlote monety: %i]", 
		nazwy_rang[poziom_gracza[id]], 
		get_user_health(id), 
		get_gold_shop(id));
	}
	else
	{
		formatex(szText, charsmax(szText), "[Forum: XXX]^n[Ranga: %s]^n[Poziom: %i]^n[EXP: %0.2f%%]^n[HP: %i]^n[Zlote monety: %i]",
		nazwy_rang[poziom_gracza[id]], 
		poziom_gracza[id], procenpoziom, 
		get_user_health(id), 
		get_gold_shop(id));
	}
	set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 1.9, 0.0, 0.0);
	ShowSyncHudMsg(id, SyncHudObj2, szText);
}
Przejdź do postu


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

#1 szelbi

    Hero

  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 22.06.2014 00:27

if(wczytuje_dane[id])
	{
		new szText[128];
		
		if(poziom_gracza[id] >= 80)
		{
			if(is_user_alive(id))
			formatex(szText, charsmax(szText), "[Forum: XXX]^n[Ranga: %s]^n[Poziom: 80]^n[HP: %i]^n[Zlote monety: %i]", nazwy_rang[poziom_gracza[id]], get_user_health(id), get_gold_shop(id));
		}
		else
		{
			if(is_user_alive(id))
			formatex(szText, charsmax(szText), "[Forum: XXX]^n[Ranga: %s]^n[Poziom: %i]^n[EXP: %0.2f%%]^n[HP: %i]^n[Zlote monety: %i]", nazwy_rang[poziom_gracza[id]], poziom_gracza[id], procenpoziom, get_user_health(id), get_gold_shop(id));
		}
		
		set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 1.9, 0.0, 0.0);
		ShowSyncHudMsg(id, SyncHudObj2, szText);
	}
L 06/21/2014 - 21:28:05: HudSyncObject -1 is invalid
L 06/21/2014 - 21:28:05: [AMXX] Displaying debug trace (plugin "codmw3.amxx")
L 06/21/2014 - 21:28:05: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
L 06/21/2014 - 21:28:05: [AMXX]    [0] codmw3.sma::PokazInformacje (line 3656)

Powie mi ktoś co jest źle? Bo ja nie mam pomysłu. Identyczny kod na wyświetlanie HUD'a znajduje się jeszcze w 50 innych miejscach, ale tutaj wywala błąd.


  • +
  • -
  • 0

#2 Puchate

    Wszechobecny

  • Użytkownik

Reputacja: 204
Profesjonalista

  • Postów:433
  • Lokalizacja:Polska
Offline

Napisano 22.06.2014 00:30

 

 

HudSyncObject -1 is invalid

Ilu kanałów jeszcze używasz w hudzie? Wygląda na to jakby brakowało już wolnych (zwraca -1).


  • +
  • -
  • 0

#3 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 22.06.2014 00:41

SyncHudObj2 jest użyte 56 razy, ale z automatycznym doborem kanału. Później z tego co widzę dwa razy kanał drugi i po razie 1 i 3. W tym nawet jak wpiszę kanał 4 to jest ten sam błąd.


  • +
  • -
  • 0

#4 Puchate

    Wszechobecny

  • Użytkownik

Reputacja: 204
Profesjonalista

  • Postów:433
  • Lokalizacja:Polska
Offline

Napisano 22.06.2014 00:46

Jak często jest to aktualizowane? Najlepiej jakbyś podzielił wszystkie wiadomości na 4 grupy i do każdego wywołania ręcznie podał kanał.


  • +
  • -
  • 0

#5 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 22.06.2014 10:23

Jeśli:

HudSyncObject -1 is invalid

 
To oznacza że:

ShowSyncHudMsg(id, (SyncHudObj2==-1), szText); 

Czyli nie można było utworzyć uchwytu tzn. CreateHudSyncObj zwróciło ci -1 powodów może być parę:

 

• Wypadek amxx'a spowodował nie udane stworzenie uchwytu (szansa 1/d245777abca64ece2d5d7ca0d19fddb6.png)

• Zbyt wcześnie/późno próbowałeś stworzyć uchwyt przez co amxx sobie nie poradził :(

• Utworzyłeś zbyt dużo uchwytów (zapełniłeś pamięć)


  • +
  • -
  • 3
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#6 ex0

    Wolny strzelec.

  • Power User

Reputacja: 383
Wszechpomocny

  • Postów:1 127
  • GG:
  • Imię:Kacper
  • Lokalizacja:Żywiec
Offline

Napisano 22.06.2014 10:29

Jeśli:

HudSyncObject -1 is invalid

 
To oznacza że:

ShowSyncHudMsg(id, (SyncHudObj2==-1), szText); 

Czyli nie można było utworzyć uchwytu tzn. CreateHudSyncObj zwróciło ci -1 powodów może być parę:

 

• Wypadek amxx'a spowodował nie udane stworzenie uchwytu (szansa 1/d245777abca64ece2d5d7ca0d19fddb6.png)

• Zbyt wcześnie/późno próbowałeś stworzyć uchwyt przez co amxx sobie nie poradził :(

• Utworzyłeś zbyt dużo uchwytów (zapełniłeś pamięć)

L 06/21/2014 - 21:28:05: [AMXX]    [0] codmw3.sma::PokazInformacje (line 3656)

Bazując na tym głównym stwierdzeniem jak wspomniałeś będzie zapełnienie pamięci, pamiętam że bawiąc się z COD`em też napotkałem taki error i kolega to rozwiązał właśnie zwiększeniem pamięci .

 


  • +
  • -
  • 1

TWORZENIE FOR SPOŁECZNOŚCIOWYCH | ZARZĄDZANIE STRONAMI INTERNETOWYMI
WSPARCIE TECHNICZNE SERWERÓW HLDS | MODERNIZACJA, OPTYMALIZACJA, ZABEZPIECZENIA


Zapraszam do mojego profilu ;)


#7 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 22.06.2014 11:03

Czyli nie można było utworzyć uchwytu tzn. CreateHudSyncObj zwróciło ci -1

No OK, ale dlaczego błąd wywala tutaj, a nie w 56 miejscach jednocześnie?


  • +
  • -
  • 0

#8 ex0

    Wolny strzelec.

  • Power User

Reputacja: 383
Wszechpomocny

  • Postów:1 127
  • GG:
  • Imię:Kacper
  • Lokalizacja:Żywiec
Offline

Napisano 22.06.2014 11:33

 

Czyli nie można było utworzyć uchwytu tzn. CreateHudSyncObj zwróciło ci -1

No OK, ale dlaczego błąd wywala tutaj, a nie w 56 miejscach jednocześnie?

 

Ponieważ te 55 miejsc które masz generuję (że tak to ujmę) taką pamięć która wystarcza, a to 56 miejsce już przekracza stan pamięci, dlatego krzyczy o to miejsce które jest źródłem błędy a nie o wszystkie ogniwa z nim związane.

Kapiszi? :D


  • +
  • -
  • 0

TWORZENIE FOR SPOŁECZNOŚCIOWYCH | ZARZĄDZANIE STRONAMI INTERNETOWYMI
WSPARCIE TECHNICZNE SERWERÓW HLDS | MODERNIZACJA, OPTYMALIZACJA, ZABEZPIECZENIA


Zapraszam do mojego profilu ;)


#9 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 22.06.2014 11:55

Ponieważ te 55 miejsc które masz generuję (że tak to ujmę) taką pamięć która wystarcza, a to 56 miejsce już przekracza stan pamięci, dlatego krzyczy o to miejsce które jest źródłem błędy a nie o wszystkie ogniwa z nim związane.

No nie o to tu chodzi sleep.png
 

No OK, ale dlaczego błąd wywala tutaj, a nie w 56 miejscach jednocześnie?

Dlaczego tylko w tym?? Gdyż to jest błąd nie do przewidzenia (przez człowieka) bez użycia tego kodu. Dlatego w każdym z tych 56 miejsc jest błąd tylko to miejsce wykonuje się jako pierwsze. Tutaj problemem nie jest użycie:
 

ShowSyncHudMsg

A:

CreateHudSyncObj

 
Gdyż czy wywołasz hud w jednym miejscu w kodzie czy w 2109834921 nie ma dla nas różnicy. Jest jednak różnica między stworzeniem uchwytu do niego raz a 10 razy (choć i przy 10 nie powinno być problemu(z tym błędem))
 
Pokaż kod z użyciem CreateHudSyncObj


Użytkownik BlackPerfum edytował ten post 22.06.2014 11:56

  • +
  • -
  • 2
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#10 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 22.06.2014 12:17

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	SyncHudObj2 = CreateHudSyncObj();
	
	set_task(2.5,"radar_scan", .flags="b"); // im mniej tym gorzej bo wieksze zuzycie
	set_task(36.0, "apteczka_info", .flags="b");
	set_task(5.0, "wyszkolenie_sanitarne", .flags="b");
}

Wszystkie register_event itp. wywaliłem, bo by za dużo miejsca zajmowało ;)


  • +
  • -
  • 0

#11 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 22.06.2014 13:31

Widocznie źle mnie zrozumiałeś haha.gif Pokaż wszystkie użycia CreateHudSyncObj

Chyba że to jest jedynie jeśli tak to niestety musisz przed każdym użyciem ShowSyncHudMsg musisz sprawdzać czy uchwyt jest prawidłowy (sprawdzaj czy czasem nie równa się -1)


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#12 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 22.06.2014 13:37

Tak, tylko tutaj jest użyte. W jaki sposób to sprawdzić?

if(SyncHudObj2 < 0)
return;

Tak?


  • +
  • -
  • 0

#13 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 22.06.2014 13:48

:ok: Tak


  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#14 szelbi

    Hero

  • Autor tematu
  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Napisano 22.06.2014 14:22

if(wczytuje_dane[id])
	{
		new szText[128];
		
		if(poziom_gracza[id] >= 80)
		{
			if(is_user_alive(id))
			formatex(szText, charsmax(szText), "[Forum: XXX]^n[Ranga: %s]^n[Poziom: 80]^n[HP: %i]^n[Zlote monety: %i]", nazwy_rang[poziom_gracza[id]], get_user_health(id), get_gold_shop(id));
		}
		else
		{
			if(is_user_alive(id))
			formatex(szText, charsmax(szText), "[Forum: XXX]^n[Ranga: %s]^n[Poziom: %i]^n[EXP: %0.2f%%]^n[HP: %i]^n[Zlote monety: %i]", nazwy_rang[poziom_gracza[id]], poziom_gracza[id], procenpoziom, get_user_health(id), get_gold_shop(id));
		}
		
		if(SyncHudObj2 < 0)
		return;
		
		set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 1.9, 0.0, 0.0);
		ShowSyncHudMsg(id, SyncHudObj2, szText);
	}
L 06/22/2014 - 15:20:33: HudSyncObject -1 is invalid
L 06/22/2014 - 15:20:33: [AMXX] Displaying debug trace (plugin "codmw3.amxx")
L 06/22/2014 - 15:20:33: [AMXX] Run time error 10: native error (native "ShowSyncHudMsg")
L 06/22/2014 - 15:20:33: [AMXX]    [0] codmw3.sma::PokazInformacje (line 3659)

  • +
  • -
  • 0

#15 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 22.06.2014 15:03   Najlepsza odpowiedź

To mnie troszkę zdiwiło. Troszkę poszukałem i sprawa rozwiązana:

static cell AMX_NATIVE_CALL ShowSyncHudMsg(AMX *amx, cell *params)
{
	int len = 0;
	char* message = NULL;
	int index = params[1];
	unsigned int sync_obj = static_cast<unsigned int>(params[2]) - 1;//O to chodzi xD
	if (sync_obj >= g_hudsync.size())
	{
		LogError(amx, AMX_ERR_NATIVE, "HudSyncObject %d is invalid", sync_obj);
		return 0;
	}
.
.
.
}

I takie coś zadziała:

if(is_user_alive(id) && wczytuje_dane[id] &&  SyncHudObj2 > 0)
{
	new szText[128];
	if(poziom_gracza[id] >= 80)
	{
		formatex(szText, charsmax(szText), "[Forum: XXX]^n[Ranga: %s]^n[Poziom: 80]^n[HP: %i]^n[Zlote monety: %i]", 
		nazwy_rang[poziom_gracza[id]], 
		get_user_health(id), 
		get_gold_shop(id));
	}
	else
	{
		formatex(szText, charsmax(szText), "[Forum: XXX]^n[Ranga: %s]^n[Poziom: %i]^n[EXP: %0.2f%%]^n[HP: %i]^n[Zlote monety: %i]",
		nazwy_rang[poziom_gracza[id]], 
		poziom_gracza[id], procenpoziom, 
		get_user_health(id), 
		get_gold_shop(id));
	}
	set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 1.9, 0.0, 0.0);
	ShowSyncHudMsg(id, SyncHudObj2, szText);
}

  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika




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

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