←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
COD Cypis - index out of bounds

Zablokowany

Aemiksowy - zdjęcie Aemiksowy 05.12.2013

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?

Odpowiedz

  • +
  • -
Vasto_Lorde - zdjęcie Vasto_Lorde 06.12.2013

Która to linia 1181?

Odpowiedz

Aemiksowy - zdjęcie Aemiksowy 06.12.2013

Napisałem wyraźnie:

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

  • +
  • -
dasiek - zdjęcie dasiek 06.12.2013

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

Odpowiedz

Aemiksowy - zdjęcie Aemiksowy 08.12.2013

Zamknijcie, przeniosłem się na CurWeapon.

Odpowiedz
Zablokowany