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

Przekroczenie warości


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

#1 Z_Nosa_Do_Buzi

    Życzliwy

  • Użytkownik

Reputacja: -5
Nowy

  • Postów:29
  • Imię:Marek
  • Lokalizacja:Gdynia
Offline

Napisano 05.10.2014 22:52

Tak jak w temacie mam miliony logów z tym błędem nie mam już siły, przeleciałem już chyba całe możliwe google ale żaden sposób nie pomaga

 

L 10/05/2014 - 17:55:33: [AMXX] Run time error 4: index out of bounds 
L 10/05/2014 - 17:55:33: [AMXX]    [0] ::add_xp (line 290)
L 10/05/2014 - 17:55:33: [AMXX]    [1] ::EventDeathMsg (line 274)
 
tutaj cały public od add_xp
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;
	
}

a tutaj od EventDeathMsg 

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 ]
	
	if( PLEVEL[ id ] < 201 ){
		add_xp( killer, xp, hs )
	} else {
		return PLUGIN_HANDLED;
	}
	
	check_level( killer )
	
	new Text[ 100 ]
	formatex(Text,191,"Zginales i straciles swoj killstreak!")
	MakeTutor(victim,Text,RED,3.0)
	return PLUGIN_CONTINUE
}

Pozdrawiam

 


  • +
  • -
  • 0

#2 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 06.10.2014 02:55

new Text[ 100 ]
    formatex(Text,191,"Zginales i straciles swoj killstreak!")

Robisz tablicę o rozmiarze 100 (a wlasciwie 99, bo ostatni element musi byc pusty) a wciskasz do niej 191 elementow. Jak sprobujesz wlac 10 litrow wody do czajnika to tez z pewnoscia cos pojdzie nie tak.

 

Nie mniej jednak nie jestem pewny czy akurat to powoduje blad, bo mimo wszystko tylko deklarujesz ile tam wlozysz, a w rzeczywistosci wkladasz duzo mniej. Zaznacz ktore linijki maja podane w bledzie numery tj. 290 i 274. Dokladnie te linijki z pilku sma. Przypuszczam odwolanie do nieistniejacego elementu tablicy tutaj, ale jak nie wiem ktore to linijki to tylko mowie co jest prawdopodobne: 

new newlevel = LEVELS[PLEVEL[ id ]]-PXP[ id ]

Użytkownik grankee edytował ten post 06.10.2014 02:56

  • +
  • -
  • 1

#3 Z_Nosa_Do_Buzi

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: -5
Nowy

  • Postów:29
  • Imię:Marek
  • Lokalizacja:Gdynia
Offline

Napisano 06.10.2014 19:36

Dziękuje za pomoc linia 274 to

add_xp( killer, xp, hs )

a 290 to

new newlevel = LEVELS[PLEVEL[ id ]]-PXP[ id ]

Robisz tablicę o rozmiarze 100 (a wlasciwie 99, bo ostatni element musi byc pusty) a wciskasz do niej 191 elementow. Jak sprobujesz wlac 10 litrow wody do czajnika to tez z pewnoscia cos pojdzie nie tak.

 

czyli jak dobrze rozumiem zmiana 100 na 192 będzie okey? jeżeli dobrze rozumiem 19* to ostatni element musi być pusty

 

Pozdrawiam


  • +
  • -
  • 0

#4 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 07.10.2014 01:26

Jeżeli chcesz formatować "string", a właściwie to tablicę char 

new jakis_tekst[192]

to ostatnim elementem tej tablicy jest jakis_tekst[191] co wynika z faktu, że indeksujemy od 0 a nie od 1, natomiast ten element musi pozostać pusty, tak więc możesz tam wcisnąć 190 elementów, w tym przypadku pojedynczych liter. Nie wiem jednak po co Ci aż tyle bo na oko jest tam 40-50 znaków.

 

Podaj całe funkcje, w których występują te linijki, bo tak to ciężko powiedzieć dlaczego. W 290 zmienna id przybiera z jakiejś przyczyny większą wartość niż 32, albo mniejszą niż 1, ewentualnie tablica PLEVEL lub PXP ma inny rozmiar niż 33. Druga możliwość, to że wartość PLEVEL[id] przyjmuje wartość spoza zakresu tablicy LEVELS, tzn PLEVEL[id] może mieć np. 100 (domyślam się, że to jakiś exp gracza czy cuś), a tablica LEVELS ma mniej zadeklarowanych elementów np:

new LEVELS[40]

  • +
  • -
  • 1

#5 Z_Nosa_Do_Buzi

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: -5
Nowy

  • Postów:29
  • Imię:Marek
  • Lokalizacja:Gdynia
Offline

Napisano 07.10.2014 18:03

Więc tak 

new const LEVELS[201] 
new PXP[ 33 ]
new PLEVEL[ 33 ]
new PKS[ 33 ]

 

Czyli jak dobrze rozumiem błędem jest tablica Plevel[33] i powinnieniem zamienić to na 201? bo tyle wynosi levels?


Użytkownik Z_Nosa_Do_Buzi edytował ten post 07.10.2014 18:04

  • +
  • -
  • 0

#6 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 08.10.2014 01:53

Zakładam, że do zmiennej PLEVEL jest przypisywany level gracza, ale nie rozumiem sensu istnienia zmiennej LEVELS, ale jeżli już istnieje to musi być to tablica o rozmiarze większym niż ilość możliwych leveli gracza, ale na logikę jest tu błąd, bo pobierasz do zmiennej element tablicy o numerze równym levelowi danego gracza i co Ci to daje... chyba nic poza błędem. Tak jak pisałem, podaj całe funkcje albo sma.

new newlevel = LEVELS[PLEVEL[ id ]]-PXP[ id ]

w dodatku ta zmienna newlevel nie jest dalej nigdzie uzyta w tej funkcji. 

 

Przypuszczam, że nie ma sprawdzania maksymalnego levelu i kiedy przekroczy on 199 pojawia się błąd, bo 199 to ostatni element tablicy.


Użytkownik grankee edytował ten post 08.10.2014 02:01

  • +
  • -
  • 0




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

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