COD Cypis - index out of bounds
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?
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);