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
 

Gacekk - zdjęcie

Gacekk

Rejestracja: 17.04.2014
Aktualnie: Nieaktywny
Poza forum Ostatnio: 28.02.2015 08:12
-----

#674428 [ROZWIĄZANE] spawnprotection error set_user_godmode

Napisane przez Droso w 09.12.2014 18:43

Tak w ogole, to w sma była nawet literówka, która co prawda nie psuła jego działania za bardzo, jednak, mocniej obciążała serwer

Załączone pliki


  • +
  • -
  • 1


#636181 [ROZWIĄZANE] Run time error 4: index out of bounds (jak naprawić)

Napisane przez d0naciak w 02.05.2014 21:50

Hola hola...to że kod działa nie znaczy że jest dobry dla serwera.

Sprawdzanie co śmierć ilość slotów to duże obciążenie dla serwera...

Zamiast wstawiać:

get_maxplayers()

lepiej wstawić

32

A najlepiej to zamiast:

if( id > get_maxplayers())

wpisać

if(!(1 <= id <= 32))

  • +
  • -
  • 1


#636167 [ROZWIĄZANE] Run time error 4: index out of bounds (jak naprawić)

Napisane przez wiwi249 w 02.05.2014 21:21

Identycznie jak poprzednio.

public Death()
{ 
	new id = read_data(2);

        if( id > get_maxplayers())
            return PLUGIN_CONTINUE

	if(ma_klase[id])
		Eksploduj(id);
}

  • +
  • -
  • 1


#636193 [ROZWIĄZANE] Run time error 4: index out of bounds (jak naprawić)

Napisane przez d0naciak w 02.05.2014 22:04

No można tak powiedzieć, ale ja tak też jest dobrze, a nawet lepiej jeśli zostanie 32 ;)


  • +
  • -
  • 2


#635412 [ROZWIĄZANE] Run time error 4: index out of bounds (jak naprawić)

Napisane przez wiwi249 w 28.04.2014 20:32

public DeathMsg()
{
	new killer = read_data(1);
	new victim = read_data(2);


        if( killer > get_maxplayers() || victim > get_maxplayers() )
            return PLUGIN_CONTINUE
        	
	if(!is_user_connected(killer))
		return PLUGIN_CONTINUE;
	
	if(ma_klase[victim] && !ma_klase[killer])
		cod_set_user_xp(killer, cod_get_user_xp(killer)+10);
	
	if(ma_klase[killer])
	{
		new cur_health = pev(killer, pev_health);
		new Float:max_health = 100.0+cod_get_user_health(killer);
		new Float:new_health = cur_health+20.0<max_health? cur_health+20.0: max_health;
		set_pev(killer, pev_health, new_health);
		
		new weapon = get_user_weapon(killer);
		if(maxClip[weapon] != -1)
			set_user_clip(killer, maxClip[weapon]);
	}
	
	
	return PLUGIN_CONTINUE;
}

Index out of bounds jest wiadomością, że plugin próbuje pobrać wartość tablicy powyżej jej rozmiaru.

 

DeathMsg rejestruje jako zabójcę również inne byty, które mogły zadać graczowi śmierć. Byty te też mają swoje id, jak gracz (a ID gracza znajduje się w przedziale <0; 32> albo <1;32>, nie pamiętam. W każdym razie jesli gracz został zabity przez byt o innym id (np. byt ten ma id = 53), to wtedy w linijce (ta, która wskazywała błąd)

if(ma_klase[victim] && !ma_klase[killer])
		cod_set_user_xp(killer, cod_get_user_xp(killer)+10);

będzie sprawdzało ma_klase[53], bo takie jest id zabójcy, a tablica

new bool:ma_klase[33];

ma tylko 34 rekordy, więc 53 będzie już za wysokie i wykracza poza jej rozmiary, dlatego plugin zwróci błąd.


  • +
  • -
  • 1