Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Проблема то ли в моде, то ли в плагине

Статус пользователя Impeccable
сообщение 18.3.2021, 20:51
Сообщение #1
Стаж: 5 лет 2 месяца

Сообщений: 22
Благодарностей: 1
Полезность: 35

Код
L 03/18/2021 - 21:17:11: Invalid index 32 (count: 32)
L 03/18/2021 - 21:17:11: [AMXX] Displaying debug trace (plugin "zombie_plague40.amxx", version "4.3")
L 03/18/2021 - 21:17:11: [AMXX] Run time error 10: native error (native "ArrayGetCell")
L 03/18/2021 - 21:17:11: [AMXX]    [0] zombie_plague40.sma::native_register_extra_item (line 9944)
L 03/18/2021 - 21:17:11: Unhandled dynamic native error
L 03/18/2021 - 21:17:11: [AMXX] Displaying debug trace (plugin "azp_extra_airburster.amxx", version "1.0")
L 03/18/2021 - 21:17:11: [AMXX] Run time error 10: native error (native "zp_register_extra_item")
L 03/18/2021 - 21:17:11: [AMXX]    [0] azp_extra_airburster.sma::HookFm_SetModel (line 126)


пушка
Код
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zombieplague>
#include <engine>

#define pDataKey_CustomAmmo 3

//Linux extra offsets
#define pData_Player                5
#define pData_Item                4

// CWeaponBox
#define pDataKey_WeaponBoxItems            34

//CBasePlayerItem
#define pDataKey_iOwner                41
#define pDataKey_iNext                42
#define pDataKey_iId                43

//CBasePlayerWeapon
#define pDataKey_flNextPrimaryAttack        46
#define pDataKey_flNextSecondaryAttack        47
#define pDataKey_flNextTimeWeaponIdle        48
#define pDataKey_iPrimaryAmmoType        49
#define pDataKey_iClip                51
#define pDataKey_iInReload            54
#define pDataKey_iSpecialReload            55
#define pDataKey_iState                74

//CBaseMonster
#define pDataKey_iLastHitGroup            75
#define pDataKey_flNextAttack            83

//CBasePlayer
#define m_flPainShock                           108
#define pDataKey_iPlayerItems            367
#define pDataKey_iActiveItem            373    
#define pDataKey_ibpAmmo            376
#define pDataKey_iPlayerWeaponAnim        492

#define PLUGIN "AirBurster"
#define VERSION "1.0"
#define AUTHOR "NONE"

#define WEAPON_KEY                82813
#define Is_CustomItem(%0)            (pev(%0,pev_impulse)==WEAPON_KEY)

//Weapon Settings
#define weapon_name    "weapon_m249"
#define weapon_new    "weapon_airburster"

#define model_v        "models/dm/v_airburster.mdl"
#define model_p        "models/dm/p_airburster.mdl"
#define model_w        "models/dm/w_airburster.mdl"
#define body_w        0

#define weapon_punchangle    0.0
#define weapon_aspeed        0.097

#define weapon_ammo        50
#define weapon_bpammo        100

#define sound_shot "weapons/airburster_shoot.wav"

new const sounds_dump[][]={
    "weapons/airburster_shoot.wav"
};
/*new const precache_dump[][]={
    "sprites/dm_balrog7.txt",
    "sprites/dm/640hud2.spr",
    "sprites/dm/640hud76.spr"
};*/

new AllocString_V,AllocString_P;

//DM Register Item
new dm_item,g_steam;

#define DMG_ENTS    4
new const damage_entites[DMG_ENTS][]={"player","info_target","hostage_entity","func_breakable"}
new HamHook:tr_fwds[DMG_ENTS];
trace_register()for(new i=0;i<DMG_ENTS;i++)tr_fwds[i]=RegisterHam(Ham_TraceAttack,damage_entites[i],"HookHam_TakeTrace",0),DisableHamForward(tr_fwds[i])
stock trblock_enable(){for(new i=0;i<DMG_ENTS;i++)EnableHamForward(tr_fwds[i]);}
stock trblock_disable(){for(new i=0;i<DMG_ENTS;i++)DisableHamForward(tr_fwds[i]);}
public HookHam_TakeTrace(victim,inflictor,attacker, Float:damage){SetHamParamFloat(3,0.0);return HAM_SUPERCEDE;}

#define model_fire    "sprites/ef_aircyclone.spr"
#define classname_fire    "airthrower"

new frames;
//AMXX
public plugin_precache(){
    engfunc(EngFunc_PrecacheModel,model_v);
    engfunc(EngFunc_PrecacheModel,model_p);
    engfunc(EngFunc_PrecacheModel,model_w);
    new a=engfunc(EngFunc_PrecacheModel,model_fire);
    frames= engfunc(EngFunc_ModelFrames,a);
    g_steam=engfunc(EngFunc_PrecacheModel,"sprites/ef_airexplosion.spr");
    AllocString_V = engfunc(EngFunc_AllocString, model_v);
    AllocString_P = engfunc(EngFunc_AllocString, model_p);
    new i;
    for(i=0;i<sizeof(sounds_dump);i++)engfunc(EngFunc_PrecacheSound,sounds_dump[i]);
    //for(i=0;i<sizeof(precache_dump);i++)engfunc(EngFunc_PrecacheGeneric,precache_dump[i]);
}
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    RegisterHam(Ham_Item_Deploy,weapon_name,"HookHam_Weapon_Deploy",1);
    RegisterHam(Ham_Item_AddToPlayer,weapon_name,"HookHam_Weapon_Add",1);
    RegisterHam(Ham_Item_PostFrame,weapon_name,"HookHam_Weapon_Frame",0);
    
    RegisterHam(Ham_Weapon_Reload,weapon_name,"HookHam_Weapon_Reload",0);
    RegisterHam(Ham_Weapon_WeaponIdle,weapon_name,"HookHam_Weapon_Idle",0);
    RegisterHam(Ham_Weapon_PrimaryAttack,weapon_name,"HookHam_Weapon_PrimaryAttack",0);
    
    RegisterHam(Ham_Spawn,"weaponbox","HookHam_WeaponBox_Spawn",1);
    register_forward(FM_SetModel,"HookFm_SetModel",1);
    register_forward(FM_UpdateClientData,"HookFm_UpdateClientData",1);
    
    register_think(classname_fire, "Flame_Think");
    register_touch(classname_fire,"*","Flame_Touch");
    
    dm_item=zp_register_extra_item("AirBuster",50,ZP_TEAM_HUMAN);
    register_clcmd(weapon_new,"hook_item");
    trace_register();
    // Add your code here...
}
//Cl Cmds
public hook_item(id){
    engclient_cmd(id,weapon_name);
    return PLUGIN_HANDLED;
}
public zp_extra_item_selected(id, item){
    if(item == dm_item) {
        UTIL_DropWeapon(id,1);
        new weapon=make_weapon();if(weapon<=0) return;
        if(!ExecuteHamB(Ham_AddPlayerItem, id, weapon)) {engfunc(EngFunc_RemoveEntity, weapon);return;}
        ExecuteHam(Ham_Item_AttachToPlayer,weapon, id);
        new ammotype = pDataKey_ibpAmmo +pDataKey_CustomAmmo;
        new ammo=get_pdata_int(id, ammotype,pData_Player);
        if(ammo< weapon_bpammo)set_pdata_int(id, ammotype, weapon_bpammo,pData_Player);
        set_pdata_int(weapon,pDataKey_iClip,weapon_ammo,pData_Item);
        emit_sound(id, CHAN_ITEM, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
        engclient_cmd(id,weapon_name);
    }
}

//Ham hooks
public HookHam_Weapon_Deploy(ent){
    if(!Is_CustomItem(ent))return HAM_IGNORED;
    new id=get_pdata_cbase(ent,pDataKey_iOwner,pData_Item);
    set_pev_string(id, pev_viewmodel2, AllocString_V);
    set_pev_string(id, pev_weaponmodel2, AllocString_P);
    set_pdata_float(ent,pDataKey_flNextPrimaryAttack,1.2,pData_Item);
    set_pdata_float(ent,pDataKey_flNextSecondaryAttack,1.2,pData_Item);
    set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,1.2,pData_Item);
    Play_WeaponAnim(id,4);
    return HAM_IGNORED;
}
public HookHam_Weapon_Add(ent,id){
    new imp=pev(ent, pev_impulse);
    if(imp==WEAPON_KEY)Weaponlist(id,true),set_pdata_int(id, pDataKey_ibpAmmo +pDataKey_CustomAmmo,pev(ent,pev_iuser1),pData_Player);
    else if(imp==0)Weaponlist(id,false);
    return HAM_IGNORED;
}
public HookHam_Weapon_Frame(ent){
    if(!Is_CustomItem(ent)) return HAM_IGNORED;
    if(get_pdata_int(ent, pDataKey_iInReload,pData_Item)){
        new id = get_pdata_cbase(ent, pDataKey_iOwner,pData_Item);
        new clip,ammotype,ammo,j;
        clip = get_pdata_int(ent, pDataKey_iClip,pData_Item);
        ammotype = pDataKey_ibpAmmo +pDataKey_CustomAmmo;
        ammo = get_pdata_int(id, ammotype,pData_Player);
        j = min(weapon_ammo - clip, ammo);
        set_pdata_int(ent, pDataKey_iClip, clip+j,pData_Item);
        set_pdata_int(id, ammotype, ammo-j,pData_Player);
        set_pdata_int(ent, pDataKey_iInReload,0,pData_Item);
    }/*else if(get_pdata_int(ent,pDataKey_iClip)<=0){
        new id = get_pdata_cbase(ent, pDataKey_iOwner,pData_Item);
        if(get_pdata_int(id,pDataKey_ibpAmmo+pDataKey_CustomAmmo)>0&&!(pev(id,pev_button)&IN_ATTACK))
            ExecuteHamB(Ham_Weapon_Reload,ent);
    }*/else if(get_pdata_int(ent,pDataKey_iState,pData_Item)>0){
        new id=get_pdata_cbase(ent, pDataKey_iOwner,pData_Item)
        if(!(pev( id,pev_button)&IN_ATTACK)|| get_pdata_int(ent, pDataKey_iClip,pData_Item)<=0){
            set_pdata_int(ent,pDataKey_iState,0,pData_Item);
            Play_WeaponAnim(id,2);
            set_pdata_float(ent,pDataKey_flNextPrimaryAttack,0.8,pData_Item);
            set_pdata_float(ent,pDataKey_flNextSecondaryAttack,0.8,pData_Item);
            set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,2.0,pData_Item);
        }
    }
    return HAM_IGNORED;
}
public HookHam_Weapon_Reload(ent){
    if(!Is_CustomItem(ent)) return HAM_IGNORED;
    new clip = get_pdata_int(ent, pDataKey_iClip, pData_Item);
    if(clip >= weapon_ammo) return HAM_SUPERCEDE;
    
    new id = get_pdata_cbase(ent, pDataKey_iOwner, pData_Item);
    if(get_pdata_int(id,pDataKey_ibpAmmo+pDataKey_CustomAmmo,pData_Player)<=0)return HAM_SUPERCEDE;
    
    set_pdata_int(ent, pDataKey_iClip, 0, pData_Item);
    ExecuteHam(Ham_Weapon_Reload, ent);
    set_pdata_int(ent, pDataKey_iClip, clip, pData_Item);
    set_pdata_int(ent, pDataKey_iInReload, 1, pData_Item);
    new Float:time_reload=4.65;
    set_pdata_float(ent,pDataKey_flNextPrimaryAttack,time_reload,pData_Item);
    set_pdata_float(ent,pDataKey_flNextSecondaryAttack,time_reload,pData_Item);
    set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,time_reload,pData_Item);
    set_pdata_float(id,pDataKey_flNextAttack,time_reload,pData_Player);
    Play_WeaponAnim(id,3);
    return HAM_SUPERCEDE;
}
public HookHam_Weapon_Idle(ent){
    if(!Is_CustomItem(ent))return HAM_IGNORED;
    if(get_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,pData_Item)>0.0)return HAM_IGNORED;
    set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,1.7,pData_Item);
    Play_WeaponAnim(get_pdata_cbase(ent,pDataKey_iOwner,pData_Item),0);
    return HAM_SUPERCEDE;
}
public HookHam_Weapon_PrimaryAttack(ent){
    if(!Is_CustomItem(ent))return HAM_IGNORED;
    new ammo=get_pdata_int(ent,pDataKey_iClip,pData_Item);
    if(ammo<=0){
        ExecuteHam(Ham_Weapon_PlayEmptySound, ent);
        set_pdata_float(ent,pDataKey_flNextPrimaryAttack,weapon_aspeed,pData_Item);
        return HAM_SUPERCEDE;
    }
    
    new id=get_pdata_cbase(ent,pDataKey_iOwner,pData_Item)
    new Float:user_punchangle[3];pev(id,pev_punchangle,user_punchangle)
    new Float:oldidle=get_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,pData_Item);
    new fm_playbackevent=register_forward(FM_PlaybackEvent,"HookFm_PlayBackEvent",false)
    trblock_enable()
    
    ExecuteHam(Ham_Weapon_PrimaryAttack,ent);
    
    trblock_disable()
    unregister_forward(FM_PlaybackEvent,fm_playbackevent,false)
    
    new Float:user_newpunch[3];pev(id,pev_punchangle,user_newpunch)
    user_newpunch[0]=user_punchangle[0]+(user_newpunch[0]-user_punchangle[0])*weapon_punchangle
    user_newpunch[1]=user_punchangle[1]+(user_newpunch[1]-user_punchangle[1])*weapon_punchangle
    user_newpunch[2]=user_punchangle[2]+(user_newpunch[2]-user_punchangle[2])*weapon_punchangle
    set_pev(id,pev_punchangle,user_newpunch)
    
    set_pdata_int(ent,pDataKey_iClip,ammo-1,pData_Item)
    
    if(pev(id,pev_weaponanim)!=1||get_pdata_int(ent,pDataKey_iState,pData_Item)!=1){
        set_pdata_int(ent,pDataKey_iState,1,pData_Item)
        Play_WeaponAnim(id,1);
        set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,2.1,pData_Item);
    }else if(oldidle<=0.0){
        set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,2.1,pData_Item);
        Play_WeaponAnim(id,1);
    }else set_pdata_float(ent,pDataKey_flNextTimeWeaponIdle,oldidle,pData_Item);
    
    emit_sound(id, CHAN_WEAPON,sound_shot,VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
    
    set_pdata_float(ent,pDataKey_flNextPrimaryAttack,weapon_aspeed,pData_Item)
    
    
    //Create grnaede...
    new Float:Origin[3];pev(id,pev_origin,Origin);
    new Float:vOfs[3];pev(id,pev_view_ofs,vOfs);
    Origin[0]+=vOfs[0];
    Origin[1]+=vOfs[1];
    Origin[2]+=vOfs[2];
    
    new Float:vAngle[3];pev(id,pev_v_angle,vAngle);
    new Float:Vec[3];velocity_by_aim(id,1,Vec);
    vAngle[0]=-vAngle[0];
    
    new Float:FireOrigin[3]
    FireOrigin[0]=Vec[0]*25.0+Origin[0];
    FireOrigin[1]=Vec[1]*25.0+Origin[1];
    FireOrigin[2]=Vec[2]*25.0+Origin[2];
    Vec[0]*=500.0;
    Vec[1]*=500.0;
    Vec[2]*=500.0;
        
    new tr=create_tr2();
    engfunc(EngFunc_TraceLine,Origin,FireOrigin,IGNORE_MONSTERS,id,tr);
    get_tr2(tr, TR_vecEndPos, FireOrigin);
    free_tr2(tr);    
        
    static info_target;
    if(!info_target)info_target= engfunc(EngFunc_AllocString, "info_target")
    
    new fire=engfunc(EngFunc_CreateNamedEntity,info_target)
    set_pev(fire, pev_classname, classname_fire);
    engfunc(EngFunc_SetModel, fire, model_fire);
    engfunc(EngFunc_SetSize ,fire,Float:{ 0.0, 0.0, 0.0 },Float:{ 0.0, 0.0, 0.0 })
    engfunc(EngFunc_SetOrigin, fire, Origin);
    set_pev(fire, pev_solid, SOLID_TRIGGER);
    set_pev(fire, pev_movetype, MOVETYPE_FLY);
    set_pev(fire, pev_velocity, Vec);
    set_pev(fire, pev_owner, id);
    fm_set_rendering(fire,kRenderFxNone,255,255,255,kRenderTransAdd,255)
    set_pev(fire,pev_scale ,0.01)
    set_pev (fire,pev_nextthink,get_gametime()+0.06);
    return HAM_SUPERCEDE
}
public HookHam_WeaponBox_Spawn(ent)state SetModel: Enabled;
//Fakemeta
public HookFm_SetModel(const ent,const str[]) <SetModel: Enabled>{
    state SetModel: Disabled;
    if(!ent||!pev_valid(ent))return FMRES_HANDLED;
    static i, classname[32], item; pev(ent, pev_classname, classname, 31);
    if(!equal(classname, "weaponbox")) return FMRES_IGNORED;
    for(i = 0; i < 6; i++) {
        item = get_pdata_cbase(ent, pDataKey_WeaponBoxItems + i, pData_Item);
        if(item > 0 && Is_CustomItem(item)) {
            engfunc(EngFunc_SetModel, ent, model_w);
            set_pev(ent,pev_body,body_w);
            static owner;owner=pev(ent,pev_owner);
            if(1<=owner<=32)
                set_pev(item,pev_iuser1,get_pdata_int(owner, pDataKey_ibpAmmo +pDataKey_CustomAmmo,pData_Player)),
                set_pdata_int(owner, pDataKey_ibpAmmo +pDataKey_CustomAmmo,0,pData_Player);
            return FMRES_SUPERCEDE;
        }
    }
    return FMRES_IGNORED;
}
public HookFm_SetModel() <SetModel: Disabled> { return FMRES_IGNORED;}
public HookFm_SetModel() <> { return FMRES_IGNORED;}
public HookFm_PlayBackEvent()return FMRES_SUPERCEDE;
public HookFm_UpdateClientData(const id,const SendWeapons,const CD_Handle){
    static item;item=get_pdata_cbase(id, pDataKey_iActiveItem,pData_Player);
    if(item<=0||!Is_CustomItem(item))return FMRES_IGNORED;
    set_cd(CD_Handle, CD_flNextAttack,99999.0);
    return FMRES_HANDLED;
}
//Stocks
stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
    new Float:RenderColor[3];
    RenderColor[0] = float(r);
    RenderColor[1] = float(g);
    RenderColor[2] = float(b);

    set_pev(entity, pev_renderfx, fx);
    set_pev(entity, pev_rendercolor, RenderColor);
    set_pev(entity, pev_rendermode, render);
    set_pev(entity, pev_renderamt, float(amount));

    return 1;
}
stock make_weapon(){
    new ent;
    static g_AllocString_E;
    if(g_AllocString_E||(g_AllocString_E=engfunc(EngFunc_AllocString,weapon_name)))
        ent = engfunc(EngFunc_CreateNamedEntity, g_AllocString_E);
    else return -1;
    if(ent <= 0) return -1;
    set_pev(ent, pev_spawnflags, SF_NORESPAWN);
    set_pev(ent, pev_impulse, WEAPON_KEY);
    ExecuteHam(Ham_Spawn, ent);
    set_pdata_int(ent,pDataKey_iPrimaryAmmoType,15,pData_Item);
    return ent;
}
stock Play_WeaponAnim(const id,const anim){
    set_pev(id, pev_weaponanim,anim);
    message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id);
    write_byte(anim);
    write_byte(0);
    message_end();
}
//3,    200,-1, -1, 0, 4, 20, 0,    // weapon_m249
stock Weaponlist(const id,const bool:set) {
    static Msg_WeaponList;
    if(!Msg_WeaponList&&!(Msg_WeaponList=get_user_msgid("WeaponList")))return;
    message_begin(MSG_ONE, Msg_WeaponList, {0,0,0}, id);
    if(set==true){
        write_string(weapon_new);
        write_byte(pDataKey_CustomAmmo);
        write_byte(weapon_bpammo);
    }else{
        write_string(weapon_name);
        write_byte(3);
        write_byte(200);
    }
    write_byte(-1);
    write_byte(-1);
    write_byte(0);
    write_byte(4);
    write_byte(20);
    message_end();
}

//Visit to AGHL.ru
stock UTIL_DropWeapon(const id,const slot){
    static iEntity; iEntity = get_pdata_cbase(id, (pDataKey_iPlayerItems + slot), pData_Player);
    if(iEntity > 0) {
        static iNext,szWeaponName[32];
        do{
            iNext = get_pdata_cbase(iEntity, pDataKey_iNext, 4);
            if(get_weaponname(get_pdata_int(iEntity, pDataKey_iId, 4), szWeaponName, 31))
                engclient_cmd(id, "drop", szWeaponName);
        } while(( iEntity = iNext) > 0);
    }
}
//Fire
public Flame_Think(ent){
    new owner=pev(ent,pev_owner);
    if(!is_user_connected(owner)){
        engfunc(EngFunc_RemoveEntity,ent);
        return;
    }
    new Float:fFrame;pev(ent,pev_frame,fFrame);
    new Float:fOrigin[3];pev(ent,pev_origin,fOrigin);
    if(pev(ent,pev_waterlevel)>0||fFrame>=(frames-1.0)){
        /*
        engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);
        write_byte(TE_EXPLOSION);
        engfunc(EngFunc_WriteCoord, fOrigin[0])
        engfunc(EngFunc_WriteCoord, fOrigin[1])
        engfunc(EngFunc_WriteCoord, fOrigin[2])
        write_short(g_steam); // sprite
        write_byte(random_num(1,6)); // scale in 0.1
        write_byte(random_num(10,30)); // framerate
        write_byte(TE_EXPLFLAG_NODLIGHTS|TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES); // flags
        message_end();
        */
        engfunc(EngFunc_RemoveEntity, ent);
        return;
    }
    new Float:fScale;pev(ent,pev_scale,fScale);
    
    static mp;if(!mp)mp=get_maxplayers();
    new target;
    while((target = engfunc(EngFunc_FindEntityInSphere, target, fOrigin,35.0))> 0){
        if(target==owner||target==ent)continue
        if(pev(target,pev_takedamage)==DAMAGE_NO)continue
        new solid=pev(target,pev_solid);if(solid==SOLID_NOT||solid==SOLID_TRIGGER)continue
        new Float:Health;pev(target,pev_health,Health);if(Health<=0.0)continue
        if(target<=mp){
            if(!is_user_connected(target)||!zp_get_user_zombie(target))continue;
            
            //new Float:user_pain=get_pdata_float(target,m_flPainShock,5);
            
            //set_pdata_int(target,pDataKey_iLastHitGroup,HIT_GENERIC,pData_Player);
            
            new Float:user_velocity[3];
            pev(target,pev_velocity,user_velocity);
            
            ExecuteHamB(Ham_TakeDamage, target, ent, owner,5.0, DMG_BULLET);
            
            //set_pdata_float(target, m_flPainShock,user_pain,5);
            if(is_user_alive(target)){
                new Float:vlen=floatsqroot(user_velocity[0]*user_velocity[0]+user_velocity[1]*user_velocity[1]);
                user_velocity[0]=user_velocity[0]/vlen*floatmax(-60.0,vlen-16.0);
                user_velocity[1]=user_velocity[1]/vlen*floatmax(-60.0,vlen-16.0);
                set_pev(target,pev_velocity,user_velocity);
            }
        }else ExecuteHamB(Ham_TakeDamage, target, ent, owner,5.0, DMG_BULLET)
    }
    set_pev(ent,pev_scale,fScale+0.075)
    set_pev(ent,pev_frame,fFrame+1.0)
    set_pev (ent,pev_nextthink,get_gametime()+0.035)
}
public Flame_Touch(ent,touch){
    new owner=pev(ent,pev_owner);
    if(!is_user_connected(owner)){
        engfunc(EngFunc_RemoveEntity,ent);
        return;
    }
    if(touch>0&&pev_valid(touch)){
        static mp;if(!mp)mp=get_maxplayers();
        if(touch<=mp){
            if(!is_user_connected(touch)||!zp_get_user_zombie(touch))return;
            
            //set_pdata_int(touch,pDataKey_iLastHitGroup,HIT_GENERIC,pData_Player);
            //new Float:user_pain=get_pdata_float(touch,m_flPainShock,5);
            
            new Float:user_velocity[3];
            pev(touch,pev_velocity,user_velocity);
            
            ExecuteHamB(Ham_TakeDamage, touch, ent, owner,75.0, DMG_BULLET);
            
            //set_pdata_float(touch, m_flPainShock,user_pain,5);
            
            if(is_user_alive(touch)){
                new Float:vlen=floatsqroot(user_velocity[0]*user_velocity[0]+user_velocity[1]*user_velocity[1]);
                user_velocity[0]=user_velocity[0]/vlen*floatmax(-16.0,vlen-16.0);
                user_velocity[1]=user_velocity[1]/vlen*floatmax(-16.0,vlen-16.0);
                set_pev(touch,pev_velocity,user_velocity);
            }
        }else ExecuteHamB(Ham_TakeDamage, touch, ent,owner,75.0, DMG_BULLET);
    }

    new Float:fOrigin[3];pev(ent,pev_origin,fOrigin)
    engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);
    write_byte(TE_EXPLOSION);
    engfunc(EngFunc_WriteCoord, fOrigin[0])
    engfunc(EngFunc_WriteCoord, fOrigin[1])
    engfunc(EngFunc_WriteCoord, fOrigin[2])
    write_short(g_steam); // sprite
    write_byte(random_num(1,6)); // scale in 0.1
    write_byte(random_num(10,30)); // framerate
    write_byte(TE_EXPLFLAG_NODLIGHTS|TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NOPARTICLES); // flags
    message_end();
            
    engfunc(EngFunc_RemoveEntity, ent)
    
}


кусок мода из зп, на который ругается:
Cкрытый текст
Код
// Native: zp_register_extra_item
public native_register_extra_item(const name[], cost, team)
{
    // ZP disabled
    if (!g_pluginenabled)
        return -1;
    
    // Arrays not yet initialized
    if (!g_arrays_created)
        return -1;
    
    // For backwards compatibility
    if (team == ZP_TEAM_ANY)
        team = ZP_TEAM_ZOMBIE|ZP_TEAM_HUMAN
    
    // Strings passed byref
    param_convert(1)
    
    // Add the item
    ArrayPushString(g_extraitem_name, name)
    ArrayPushCell(g_extraitem_cost, cost)
    ArrayPushCell(g_extraitem_team, team)
    
    // Set temporary new item flag
    ArrayPushCell(g_extraitem_new, 1)
    
    // Override extra items data with our customizations
    new i, buffer[33], size = ArraySize(g_extraitem2_realname)
    for (i = 0; i < size; i++)
    {
        ArrayGetString(g_extraitem2_realname, i, buffer, charsmax(buffer))
        
        // Check if this is the intended item to override
        if (!equal(name, buffer))
            continue;
        
        // Remove new item flag
        ArraySetCell(g_extraitem_new, g_extraitem_i, 0)
        
        // Replace caption
        ArrayGetString(g_extraitem2_name, i, buffer, charsmax(buffer))
        ArraySetString(g_extraitem_name, g_extraitem_i, buffer)
        
        // Replace cost
        buffer[0] = ArrayGetCell(g_extraitem2_cost, i)
        ArraySetCell(g_extraitem_cost, g_extraitem_i, buffer[0])
        
        // Replace team
        buffer[0] = ArrayGetCell(g_extraitem2_team, i)
        ArraySetCell(g_extraitem_team, g_extraitem_i, buffer[0])
    }
    
    // Increase registered items counter
    g_extraitem_i++
    
    // Return id under which we registered the item
    return g_extraitem_i-1;
}


Помогите разрулить ситуацию, вообще не втыкаю, что тут не так.

Искал ответы в интернетах и напоролся на ответ ПростоТёмы на оленях:
Цитата
iArraySize is not zeroed before using, you should use new for most of variables instead of static.


Но вот так ничего и не понял...
На русский перевёл, но всё равно не догнал...


что-то вроде подписи
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Impeccable
сообщение 20.3.2021, 13:38
Сообщение #2
Стаж: 5 лет 2 месяца

Сообщений: 22
Благодарностей: 1
Полезность: 35

Решений так и не нашёл... Может подскажете?


что-то вроде подписи
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Impeccable
сообщение 27.3.2021, 14:43
Сообщение #3
Стаж: 5 лет 2 месяца

Сообщений: 22
Благодарностей: 1
Полезность: 35

Заметил, что у игроков не тратятся аммопаки , не связано ли это?


что-то вроде подписи
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: