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

Index out of bounds (Nie potrafię naprawić)


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

#1 xCiacho

    Początkujący

  • Użytkownik

Reputacja: -1
Nowy

  • Postów:17
  • Lokalizacja:Wągrowiec
Offline

Napisano 30.06.2014 23:39

Tak jak w temacie nie mam już siły do tych błędów :/

L 06/30/2014 - 22:58:45: [AMXX] Run time error 4: index out of bounds 
L 06/30/2014 - 22:58:45: [AMXX]    [0] Surf_ExpMod.sma::add_xp (line 256)
L 06/30/2014 - 22:58:45: [AMXX]    [1] Surf_ExpMod.sma::EventDeathMsg (line 244)

new PXP[ 33 ]
new PLEVEL[ 33 ]
new PKS[ 33 ]
new g_vault
new g_vault2
public EventDeathMsg(id)
{

	new killer = read_data( 1 )
	new victim = read_data( 2 )
	new headshot = read_data( 3 )
	new xp
	new hs
	
	if(PLEVEL[ killer ] > PLEVEL[ victim ])
	{
		xp = 8
	}
	if(PLEVEL[ killer ] < PLEVEL[ victim ])
	{
		xp = 8
	}
	if(PLEVEL[ killer ] == PLEVEL[ victim ])
	{
		xp = 8
	}
	
	PKS[ victim ] = 0
	
	if( victim == killer )
	{
		return PLUGIN_CONTINUE
	}
	
	if(headshot)
	{
		xp = xp + 5
		hs = 1
	}
	
	if(PKS[ killer ] < 10)
	{
		PKS[ killer ]++
	}
	
	xp = xp + PKS[ killer ]
	
	add_xp( killer, xp, hs )
	check_level( killer )
	
	new Text[ 100 ]
	formatex(Text,191,"Zginales i straciles swoj killstreak!")
	MakeTutor(victim,Text,RED,3.0)
	return PLUGIN_CONTINUE
}

public add_xp( id, xp, hs )
{

	new newlevel = LEVELS[PLEVEL[ id ]]-PXP[ id ]
	
	PXP[ id ] = PXP[ id ] + xp
	
	if(hs)
	{
		new Text[ 100 ]
		formatex(Text,191,"Headshot! Dostales %d EXP'a! ^nKillstreak: %d^nNowy level za %d EXP'a!", xp, PKS[ id ], newlevel)
		MakeTutor(id,Text,GREEN,3.0)
	}
	else
	{
		new Text[ 100 ]
		formatex(Text,191,"Dostales %d EXP'a! ^nKillstreak: %d^nNowy level za %d EXP'a!", xp, PKS[ id ], newlevel)
		MakeTutor(id,Text,GREEN,3.0)
	}
	
	return PLUGIN_HANDLED;
	
}


Użytkownik xCiacho edytował ten post 30.06.2014 23:41

  • +
  • -
  • 0

#2 ex0

    Wolny strzelec.

  • Power User

Reputacja: 383
Wszechpomocny

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

Napisano 01.07.2014 07:58

Zastosuj standardowe rozwiązanie czyli sprawdzenie czy użytkownik jest, if_user_connected, mi pomaga to w takiej sytuacji, natomiast wskaż w tym kodzie dokładne linijki gdybyś jednak nie potrafił sam sobie poradzić.
  • +
  • -
  • 0

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


Zapraszam do mojego profilu ;)


#3 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 01.07.2014 08:20

Na przyszłość numeruj linijki lub pokaż które to są

 

 

Sprawdź:

public EventDeathMsg(id)
{

	new killer = read_data( 1 )
	new victim = read_data( 2 )
	new headshot = read_data( 3 )
	new xp
	new hs

	if( !killer ) return PLUGIN_CONTINUE
	
	if(PLEVEL[ killer ] > PLEVEL[ victim ])
	{
		xp = 8
	}
	if(PLEVEL[ killer ] < PLEVEL[ victim ])
	{
		xp = 8
	}
	if(PLEVEL[ killer ] == PLEVEL[ victim ])
	{
		xp = 8
	}
	
	PKS[ victim ] = 0
	
	if( victim == killer )
	{
		return PLUGIN_CONTINUE
	}
	
	if(headshot)
	{
		xp = xp + 5
		hs = 1
	}
	
	if(PKS[ killer ] < 10)
	{
		PKS[ killer ]++
	}
	
	xp = xp + PKS[ killer ]
	
	add_xp( killer, xp, hs )
	check_level( killer )
	
	new Text[ 100 ]
	formatex(Text,191,"Zginales i straciles swoj killstreak!")
	MakeTutor(victim,Text,RED,3.0)
	return PLUGIN_CONTINUE
}

Sprawdz.

 

Pamiętaj. Killerem może być "serwer" (index 0) np. wtedy jak spadniesz z wysokości i sie zabijesz.


  • +
  • -
  • 0

#4 Zabijaka Gryps

    Wszechwiedzący

  • Power User

Reputacja: 266
Wszechwidzący

  • Postów:563
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Świdnica
Offline

Napisano 01.07.2014 09:16

A gdy spadniesz i się zabijesz to nie jesteś przypadkiem zarówno zabójcą jak i ofiarą? Od zawsze pamiętam, że samobójstwa wykrywało się poprzez killer==victim, a nie serwer jako killer.
  • +
  • -
  • 0

#5 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 01.07.2014 09:41

Hmmm.

Nie wiem. Wydaje mi sie ze wtedy killer to serwer.
A to co podales to chyba np. Z granatu.

Druga mozliwosc. Index atakujacego jest wiekszy niz get_maxplayers()
  • +
  • -
  • 0

#6 xCiacho

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: -1
Nowy

  • Postów:17
  • Lokalizacja:Wągrowiec
Offline

Napisano 01.07.2014 18:57

Niestety problem nadal występuje :/

 

proszę o pomoc 


  • +
  • -
  • 0




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

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