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
CoD Nowy

COD Cypis - index out of bounds

cod nowy

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

#1 Aemiksowy

    Banned

  • Zbanowany

Reputacja: 34
Życzliwy

  • Postów:222
  • Lokalizacja::)
Offline

Napisano 05.12.2013 18:53

Witam serdecznie,

 

Kompletnie nie wiem jak naprawić ten problem. Otóż wywala błąd:

L 12/05/2013 - 18:24:20: [AMXX] Run time error 4: index out of bounds 
L 12/05/2013 - 18:24:20: [AMXX]    [0] cod_engine.sma::Item_Deploy_Post (line 1181)

Błąd dotyczy tego fragmentu:

public Item_Deploy_Post(ent){
	
	static id; id = get_pdata_cbase(ent, 41, 4);
	if(!is_user_alive(id))
		return;
		
	static team; team = get_user_team(id);
	if(team > 2)
		return;	
	
	static bron; bron = cs_get_weapon_id(ent);
	new bronie = (bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id] | bronie_druzyny[team] | bronie_dozwolone);
	
	if(!(1<<bron & bronie))
	{
		new weaponname[24];
		get_weaponname(bron, weaponname, 23);
		engclient_cmd(id, "drop", weaponname);
	}
	if(cs_get_user_shield(id) && !gracz_ma_tarcze[id])
		engclient_cmd(id, "drop", "weapon_shield");
}

A dokładnie: new bronie = (bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id] | bronie_druzyny[team] | bronie_dozwolone);

 

Przeanalizowałem co mogłoby być nie tak, doszedłem do wniosku, że bronie_druzyny[team] są tego przyczyną. W codzie utworzono zmienną globalną:

 

new bronie_druzyny[] = {0, 1<<CSW_GLOCK18, 1<<CSW_USP}, bronie_dozwolone = 1<<CSW_KNIFE | 1<<CSW_C4;

a potem w plugin init: 

new WeaponName[26];
	for(new i = CSW_P228; i <= CSW_P90; i++){
		if(i == 2)
			continue;
		
		get_weaponname(i, WeaponName, 25);
		RegisterHam(Ham_Item_Deploy, WeaponName, "Item_Deploy_Post", 1);
	}

Myślę, że po prostu pętla for i jej wielkość stoi za tym... Zwiększyłem wielkość zmiennej lokalnej new WeaponName z 24 do 26, nic to nie daje... Czy ktoś ma jakieś konkretne rozwiązanie?



#2 Vasto_Lorde

    Wszechmogący

  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 06.12.2013 09:47

Która to linia 1181?


  • +
  • -
  • 0

#3 Aemiksowy

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 34
Życzliwy

  • Postów:222
  • Lokalizacja::)
Offline

Napisano 06.12.2013 12:42

Napisałem wyraźnie:

A dokładnie: new bronie = (bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id] | bronie_druzyny[team] | bronie_dozwolone);


#4 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 06.12.2013 12:58

Zrób w log_amxx albo client_print żeby wypisało zmienne id i team.


  • +
  • -
  • 0

#5 Aemiksowy

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 34
Życzliwy

  • Postów:222
  • Lokalizacja::)
Offline

Napisano 08.12.2013 13:48

Zamknijcie, przeniosłem się na CurWeapon.







Również z jednym lub większą ilością słów kluczowych: cod nowy

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

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