Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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

Przyczyny błędów: Run time error 10: native error (native "XXX")


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
7 odpowiedzi w tym temacie

#1 Danny OK

    Zaawansowany

  • Użytkownik

Reputacja: 12
Początkujący

  • Postów:148
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Internet
Offline

Napisano 21.06.2014 14:00

Witam,

Czy są może znane przyczyny błędów:
Run time error 10: native error (native "XXX")

 

Głównie mam na myśli: 

Run time error 10: native error (native "ArrayGetCell")

 

Wykazuje błąd w linijce:

	new typ = ArrayGetCell(gTyp, zadanie[attacker]);
	if(typ==10) postep[attacker]+= damage;

Pozdrawiam, Danny.


  • +
  • -
  • 0

Battlefield 2 Exp Mod

www.BF2Mod.pl


#2 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 453
Wszechobecny

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

Napisano 21.06.2014 14:14

Ależ tak. Zasadniczo są dwie:
 
• Podajesz błędny uchwyt (1 arg) (pamiętaj że tworzenie uchwytu może się nie powieść)
• Próbujesz pobrać dane z nie istniejącego miejsca (nie użyłeś push cel tyle razy ile równa się zadanie[attacker] ) lub zadanie[attacker] < 0


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

#3 Danny OK

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 12
Początkujący

  • Postów:148
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Internet
Offline

Napisano 21.06.2014 14:25

Czyli nie czyta gTyp?

 

 

Pierwszy raz pracuję nad pobieraniem danych z pliku i nie do końca jeszcze to ogarniam :) 
Tutaj mam kod do pobierania danych:

public zadania(id) {
	gAktualne 	= ArrayCreate();
	gIleRazy	= ArrayCreate();
	gTyp		= ArrayCreate();
	gNagroda	= ArrayCreate();
	
	new plik[128]; get_localinfo("amxx_configsdir", plik, charsmax(plik));
	format(plik, charsmax(plik), "%s/zadania.ini", plik);

	if(!file_exists(plik)){
		 new szError[512];
		 formatex(szError, charsmax(szError), "[Zadania] Nie mozna znależć pliku zadania.ini w lokalizacji %s", plik)
		 set_fail_state(szError);
	}
	
	new fp = fopen(plik, "r");
	
	new tresc[128], dane[4][32];
	while( !feof(fp) ) {
		fgets(fp, tresc, charsmax(tresc));
		
		if(tresc[0] == ';' || tresc[0] == '^0') 
			continue;
				
		parse(tresc, dane[0], 31, dane[1], 31, dane[2], 31, dane[3], 31);
		
		replace_all(tresc, 127, "^"", "");
		
		ArrayPushCell(gAktualne, str_to_num(dane[0]));
		ArrayPushCell(gIleRazy, str_to_num(dane[1]));
		ArrayPushCell(gTyp, str_to_num(dane[2]));
		ArrayPushCell(gNagroda, str_to_num(dane[3]));	
	}
	fclose(fp);
}

Mógłbyś mnie nakierować co muszę zmienić aby nie wykazywało logów oraz poprawnie działało. Ponieważ niektórym graczom nie zalicza zabić do wymagań i teraz myślę że jest to wina iż nie wczytuje lub błędnie interpretuje gTyp w tym kodzie co dałem 2 posty wyżej.


  • +
  • -
  • 0

Battlefield 2 Exp Mod

www.BF2Mod.pl


#4 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 453
Wszechobecny

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

Napisano 21.06.2014 15:41

Polecam takim sposobem wczytywać. Jeszcze nigdy się na tym nie zawiodłem:

public LoadItems()
{
	new FileName[128]
	get_localinfo("amxx_configsdir", FileName, charsmax(FileName))
	add(FileName, charsmax(FileName), "/zadania.ini")
	if(!file_exists(FileName))
	{
		new szError[512];
		formatex(szError, charsmax(szError), "[Zadania] Nie mozna znależć pliku zadania.ini w lokalizacji %s", plik)
		set_fail_state(szError);
		return
	}
	new File = fopen( FileName, "rt")
	if(!File)
	{
		set_fail_state("[Zadania] Jakiś inny proces używa pliku zadania.ini");
		return
	}
	new Data[128], dane[4][32];
	while(!feof(File))//Przelatuje po pliku aby wiedzieć ile komórek będę musiał wykorzystać do ulokowania danych
	{
		fgets(File, Data, 2)
		if( !Data[0] || Data[0] == '^n'|| Data[0] == ';'|| Data[0] == '/' && Data[1] == '/' )	continue
		
		i++
    }
	if(!i)
	{
		set_fail_state("[Zadania] Brak zadan w pliku zadania.ini")
		return
	}
	gAktualne 	= ArrayCreate(1,i)
	gIleRazy	= ArrayCreate(1,i)
	gTyp		= ArrayCreate(1,i)
	gNagroda	= ArrayCreate(1,i)
	
	if(gAktualne == Invalid_Array || gIleRazy == Invalid_Array || gTyp == Invalid_Array || gNagroda == Invalid_Array)
	{
		set_fail_state("[Zadania] Nie mozna ulokowac dynamicznej pamięci")
		return
	}
	
	fseek(File, 0, 0)
	while(!feof(File))
	{
		fgets(File, Data, sizeof Data)
		if( !Data[0] || Data[0] == '^n'|| Data[0] == ';'|| Data[0] == '/' && Data[1] == '/' )	continue
		
		trim(Data)
		parse(Data, dane[0], 31, dane[1], 31, dane[2], 31, dane[3], 31);
		
		
		ArrayPushCell(gAktualne, str_to_num(dane[0]));
		ArrayPushCell(gIleRazy, str_to_num(dane[1]));
		ArrayPushCell(gTyp, str_to_num(dane[2]));
		ArrayPushCell(gNagroda, str_to_num(dane[3]));
	}
	fclose(File)
}

I to nie raczej tu się popełnia błędy lecz przy wczytywaniu / zapisywaniu danych. Pokaż kod w którym używasz:

new typ = ArrayGetCell(gTyp, zadanie[attacker])
if(typ==10) postep[attacker]+= damage

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

#5 Puchate

    Wszechobecny

  • Użytkownik

Reputacja: 198
Profesjonalista

  • Postów:432
  • Lokalizacja:Polska
Offline

Napisano 21.06.2014 18:49

Włącz debug dla tego pluginu a dopiero później zadawaj takie pytania :) 


  • +
  • -
  • 0

#6 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 22.06.2014 00:23

Skoro zna linię, która powoduje błąd, to raczej debug już włączył.

Pamiętaj, że linia Run time error to nie wszystko, często właściwy komunikat błędu jest linię wcześniej w error logach.
  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#7 Danny OK

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 12
Początkujący

  • Postów:148
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Internet
Offline

Napisano 22.06.2014 18:07

Ale tylko wywala mi błąd dot. [AMXX] Run time error 10: native error (native "ArrayGetCell")


  • +
  • -
  • 0

Battlefield 2 Exp Mod

www.BF2Mod.pl


#8 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 453
Wszechobecny

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

Napisano 22.06.2014 18:20

Pozwól że troszkę będę tereotyzował xD

 

Ten kod:

new typ = ArrayGetCell(gTyp, zadanie[attacker])
if(typ==10) postep[attacker]+= damage

Znajduje się w evencie Ham_TakeDamage. Pamiętaj aby sprawdzić czy atakujący jest graczem (najlepiej czy jest podłączony)

Lecz to nie wystarcza bo nie widzę kodu i nie moge ci pomóc w banalny sposób xD

 

Ominięcie błędu:

if(is_user_connected(attacker) && zadanie[attacker] > -1 && zadanie[attacker] < ArraySize(gTyp))
{
	new typ = ArrayGetCell(gTyp, zadanie[attacker])
	if(typ==10) postep[attacker]+= damage
}

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




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

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