Index out of bounds - Przyczyny ? [Ukochan...
ex0
23.06.2014
Tak jak w temacie, chciałem zapytać o główne przyczyny tego błędu ?
Brak miejsca w tabeli ?
Zapełniona pamięć pluginu ?
A może nie zjadł plugin kolacji i grymasi ?
Co o tym możecie mi powiedzieć ?
if(ma_perk[b] && cod_get_user_perk(a) != 0 && random_num(1,4)==1)
Ogólnie rozchodzi się o to powyżej.
Co go tutaj boli ?
A cały plug wygląda tak:
new bool:ma_perk[33] public plugin_init() { register_plugin(perk_name, "1.0", "MasterOfGames") cod_register_perk(perk_name, perk_desc) RegisterHam(Ham_Killed, "player", "Kill") } public cod_perk_enabled(id) { ma_perk[id] = true } public cod_perk_disabled(id) { ma_perk[id] = false } public Kill(a, b) { if(ma_perk[b] && cod_get_user_perk(a) != 0 && random_num(1,4)==1) { cod_set_user_perk(b, cod_get_user_perk(a)) cod_set_user_perk(a, 0) } }
Biblioteki:
#include <amxmodx> #include <amxmisc> #include <codmod> #include <hamsandwich>
Pozdrawiam !
Zabijaka Gryps
23.06.2014
Co niby w tym jest nie tak??Jak dla mnie to to
cod_get_user_perk(a) != 0
@topic
Spróbuj standardowego lekarstwa na problem wychodzenia indexów poza granice, czyli sprawdzenia podłączenia.
if(is_user_connected(a) && is_user_connected(b) && ma_perk[b] && cod_get_user_perk(a) != 0 && random_num(1,4)==1)
BlackPerfum
23.06.2014
po co sprawdzasz 2x czy gracz martwy jest podłączony do serwerais_user_connected(a)
cod_get_user_perk(a) != 0
ex0
23.06.2014
po co sprawdzasz 2x czy gracz martwy jest podłączony do serwerais_user_connected(a)
cod_get_user_perk(a) != 0
Czyli wystarczy po prostu zastosować standardowe sprawdzanie gracza z pojedynczym sprawdzeniem if_user tak?
// Okej Działa jak natura przykazała.
Natomiast przy okazji tego tematu co w tej funkcji należy zgwałcić aby nie wyskakiwał ten sam błąd?
Ponownie zastosować sprawdzenie?
Krzyczy o new Float jak coś.
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { new Float:ile = reborn[idattacker]*3.0 if(!is_user_connected(idattacker)) return HAM_IGNORED; if(get_user_team(this) != get_user_team(idattacker) && damagebits & DMG_BULLET) cod_inflict_damage(idattacker, this, ile, 0.0, idinflictor, damagebits); return HAM_IGNORED; }
BlackPerfum
23.06.2014
Tzn:
if(is_user_connected(b) && ma_perk[b] && cod_get_user_perk(a) != 0 && !random(4))
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; new Float:ile = float(reborn[idattacker])*3.0 if(get_user_team(this) != get_user_team(idattacker) && damagebits & DMG_BULLET) cod_inflict_damage(idattacker, this, ile, 0.0, idinflictor, damagebits); return HAM_IGNORED; }
Użytkownik BlackPerfum edytował ten post 23.06.2014 07:48
Zabijaka Gryps
23.06.2014
A czy aby pobranie perka niepodłączonego gracza nie wyrzuci erroru?po co sprawdzasz 2x czy gracz martwy jest podłączony do serwerais_user_connected(a)
cod_get_user_perk(a) != 0