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?


Dodatki SourceMod



Temat jest zamknięty









