Precio a extra item (Servidor normal)
#1
Buenas noches, tengo varios items extra y necesito ponerle precio mediante cvar (en lo posible) cuestion que me den una mano con este sma y saber que metodo usaron para hacerlo con los demas items
PD: Alguna web para ver mas estos tipos de items ?

Código PHP:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>


#define CustomItem(%0) (pev(%0, pev_impulse) == WEAPON_SPECIAL_CODE)

#define DONT_BLEED -1
#define PDATA_SAFE 2
#define ACT_RANGE_ATTACK1 28

#define WEAPON_ANIM_IDLE 0
#define WEAPON_ANIM_SHOOT random_num(3, 5)
#define WEAPON_ANIM_RELOAD 1
#define WEAPON_ANIM_DRAW 2
#define WEAPON_ANIM_STAB_KNIFE 6

// From model: Frames/FPS
#define WEAPON_ANIM_IDLE_TIME 41/4.0
#define WEAPON_ANIM_SHOOT_TIME 13/60.0
#define WEAPON_ANIM_RELOAD_TIME 101/48.0
#define WEAPON_ANIM_DRAW_TIME 24/40.0
#define WEAPON_ANIM_STAB_KNIFE_TIME 61/45.0

#define WEAPON_SPECIAL_CODE 2071
#define WEAPON_REFERENCE "weapon_ak47"
#define WEAPON_NEW_NAME "x/weapon_ak47beast"
#define WEAPON_HUD "sprites/x/640hudx2.spr"
#define WEAPON_HUD_AMMO "sprites/640hud7.spr"

#define WEAPON_ITEM_NAME "AK47 Beast"
#define WEAPON_ITEM_COST 0

#define WEAPON_ANIM_EXTENSION_STAB_KNIFE "knife"

#define WEAPON_MODEL_VIEW "models/x/v_ak47_beast.mdl"
#define WEAPON_MODEL_PLAYER "models/x/p_ak47_beast.mdl"
#define WEAPON_MODEL_WORLD "models/x/w_ak47_beast.mdl"
#define WEAPON_SOUND_SHOOT "weapons/AK47-Beast_Shoot_1.wav"
#define WEAPON_SOUND_STAB_KNIFE "weapons/AK47-Beast_Knife-Attack.wav"
#define WEAPON_BODY 0

#define WEAPON_STAB_KNIFE_DISTANCE 125.0
#define WEAPON_STAB_KNIFE_DAMAGE random_float(200.0, 400.0)
#define WEAPON_STAB_KNIFE_KNOCKBACK 250.0

#define WEAPON_MAX_CLIP 30
#define WEAPON_DEFAULT_AMMO 180
#define WEAPON_RATE 0.1
#define WEAPON_PUNCHAGNLE 0.75
#define WEAPON_DAMAGE 1.45

new const iWeaponList[] = 
{
    
290, -1, -10128// weapon_ak47
};

// Linux extra offsets
#define linux_diff_weapon 4
#define linux_diff_player 5
#define linux_diff_animation 4

// CWeaponBox
#define m_rgpPlayerItems_CWeaponBox 34

// CBaseAnimating
#define m_flFrameRate 36
#define m_flGroundSpeed 37
#define m_flLastEventCheck 38
#define m_fSequenceFinished 39
#define m_fSequenceLoops 40

// CBasePlayerItem
#define m_pPlayer 41
#define m_pNext 42
#define m_iId 43

// CBasePlayerWeapon
#define m_flNextPrimaryAttack 46
#define m_flNextSecondaryAttack 47
#define m_flTimeWeaponIdle 48
#define m_iPrimaryAmmoType 49
#define m_iClip 51
#define m_fInReload 54
#define m_iWeaponState 74

// CBaseMonster
#define m_Activity 73
#define m_IdealActivity 74
#define m_LastHitGroup 75
#define m_flNextAttack 83

// CBasePlayer
#define m_flPainShock 108
#define m_iPlayerTeam 114
#define m_flLastAttackTime 220
#define m_rpgPlayerItems 367
#define m_pActiveItem 373
#define m_rgAmmo 376

new g_iszAllocString_Entity,
    
g_iszAllocString_ModelView
    
g_iszAllocString_ModelPlayer

    
g_iszModelIndexBloodSpray,
    
g_iszModelIndexBloodDrop,

    
HamHookg_HamHook_TraceAttack[4],

    
g_iMsgID_Weaponlist,
    
g_iItemID;

public 
plugin_init()
{
    
register_plugin("[ZP] Weapon: AK47 Beast""1.0 | 2018""xUnicorn (t3rkecorejz) / Batcoh: Code base");

    

    
register_forward(FM_UpdateClientData,    "FM_Hook_UpdateClientData_Post"true);
    
register_forward(FM_SetModel,             "FM_Hook_SetModel_Pre"false);

    
RegisterHam(Ham_Item_Deploy,            WEAPON_REFERENCE,    "CWeapon__Deploy_Post"true);
    
RegisterHam(Ham_Item_PostFrame,            WEAPON_REFERENCE,    "CWeapon__PostFrame_Pre"false);
    
RegisterHam(Ham_Item_AddToPlayer,        WEAPON_REFERENCE,    "CWeapon__AddToPlayer_Post"true);
    
RegisterHam(Ham_Weapon_Reload,            WEAPON_REFERENCE,    "CWeapon__Reload_Pre"false);
    
RegisterHam(Ham_Weapon_WeaponIdle,        WEAPON_REFERENCE,    "CWeapon__WeaponIdle_Pre"false);
    
RegisterHam(Ham_Weapon_PrimaryAttack,    WEAPON_REFERENCE,    "CWeapon__PrimaryAttack_Pre"false);
    
    
g_HamHook_TraceAttack[0] = RegisterHam(Ham_TraceAttack,        "func_breakable",    "CEntity__TraceAttack_Pre"false);
    
g_HamHook_TraceAttack[1] = RegisterHam(Ham_TraceAttack,        "info_target",        "CEntity__TraceAttack_Pre"false);
    
g_HamHook_TraceAttack[2] = RegisterHam(Ham_TraceAttack,        "player",            "CEntity__TraceAttack_Pre"false);
    
g_HamHook_TraceAttack[3] = RegisterHam(Ham_TraceAttack,        "hostage_entity",    "CEntity__TraceAttack_Pre"false);
    
    
fm_ham_hook(false);

    
g_iMsgID_Weaponlist get_user_msgid("WeaponList");
    
register_clcmd("say /ak47","Command_GiveWeapon")
}

public 
plugin_precache()
{
    
// Hook weapon
    
register_clcmd(WEAPON_NEW_NAME"Command_HookWeapon");

    
// Precache models
    
engfunc(EngFunc_PrecacheModelWEAPON_MODEL_VIEW);
    
engfunc(EngFunc_PrecacheModelWEAPON_MODEL_PLAYER);
    
engfunc(EngFunc_PrecacheModelWEAPON_MODEL_WORLD);

    
// Precache generic
    
new szBuffer[64]; formatex(szBuffercharsmax(szBuffer), "sprites/%s.txt"WEAPON_NEW_NAME);

    
engfunc(EngFunc_PrecacheGenericszBuffer);
    
engfunc(EngFunc_PrecacheGenericWEAPON_HUD);
    
engfunc(EngFunc_PrecacheGenericWEAPON_HUD_AMMO);
    
    
// Precache sounds
    
engfunc(EngFunc_PrecacheSoundWEAPON_SOUND_SHOOT);
    
engfunc(EngFunc_PrecacheSoundWEAPON_SOUND_STAB_KNIFE);

    
UTIL_PrecacheSoundsFromModel(WEAPON_MODEL_VIEW);

    
// Other
    
g_iszAllocString_Entity engfunc(EngFunc_AllocStringWEAPON_REFERENCE);
    
g_iszAllocString_ModelView engfunc(EngFunc_AllocStringWEAPON_MODEL_VIEW);
    
g_iszAllocString_ModelPlayer engfunc(EngFunc_AllocStringWEAPON_MODEL_PLAYER);

    
g_iszModelIndexBloodSpray engfunc(EngFunc_PrecacheModel"sprites/bloodspray.spr");
    
g_iszModelIndexBloodDrop engfunc(EngFunc_PrecacheModel"sprites/blood.spr");
}



// [ Amxx ]
//public zp_extra_item_selected(iPlayer, iItemID)
//{
//    if(iItemID == g_iItemID)
//        Command_GiveWeapon(iPlayer);
//}

public Command_HookWeapon(iPlayer)
{
    
engclient_cmd(iPlayerWEAPON_REFERENCE);
    return 
PLUGIN_HANDLED;
}

public 
Command_GiveWeapon(iPlayer)
{
    static 
iEntityiEntity engfunc(EngFunc_CreateNamedEntityg_iszAllocString_Entity);
    if(
iEntity <= 0) return 0;

    
set_pev(iEntitypev_impulseWEAPON_SPECIAL_CODE);
    
ExecuteHam(Ham_SpawniEntity);
    
UTIL_DropWeapon(iPlayer1);

    if(!
ExecuteHamB(Ham_AddPlayerItemiPlayeriEntity))
    {
        
set_pev(iEntitypev_flagspev(iEntitypev_flags) | FL_KILLME);
        return 
0;
    }

    
ExecuteHamB(Ham_Item_AttachToPlayeriEntityiPlayer);
    
set_pdata_int(iEntitym_iClipWEAPON_MAX_CLIPlinux_diff_weapon);

    new 
iAmmoType m_rgAmmo get_pdata_int(iEntitym_iPrimaryAmmoTypelinux_diff_weapon);
    if(
get_pdata_int(iPlayerm_rgAmmolinux_diff_player) < WEAPON_DEFAULT_AMMO)
        
set_pdata_int(iPlayeriAmmoTypeWEAPON_DEFAULT_AMMOlinux_diff_player);

    
emit_sound(iPlayerCHAN_ITEM"items/gunpickup2.wav"VOL_NORMATTN_NORM0PITCH_NORM);
    return 
1;
}

// [ Fakemeta ]
public FM_Hook_UpdateClientData_Post(iPlayerSendWeaponsCD_Handle)
{
    if(!
is_user_alive(iPlayer)) return;

    static 
iItemiItem get_pdata_cbase(iPlayerm_pActiveItemlinux_diff_player);
    if(
pev_valid(iItem) != PDATA_SAFE || !CustomItem(iItem)) return;

    
set_cd(CD_HandleCD_flNextAttackget_gametime() + 0.001);
}

public 
FM_Hook_SetModel_Pre(iEntity)
{
    static 
iszClassName[32], iItem;
    
pev(iEntitypev_classnameszClassNamecharsmax(szClassName));

    if(!
equal(szClassName"weaponbox")) return FMRES_IGNORED;

    for(
06i++)
    {
        
iItem get_pdata_cbase(iEntitym_rgpPlayerItems_CWeaponBox ilinux_diff_weapon);

        if(
iItem && CustomItem(iItem))
        {
            
engfunc(EngFunc_SetModeliEntityWEAPON_MODEL_WORLD);
            
set_pev(iEntitypev_bodyWEAPON_BODY);
            
            return 
FMRES_SUPERCEDE;
        }
    }

    return 
FMRES_IGNORED;
}

public 
FM_Hook_PlaybackEvent_Pre() return FMRES_SUPERCEDE;

public 
FM_Hook_TraceLine_Post(const Float:flOrigin1[3], const Float:flOrigin2[3], iFragiAttackeriTrace)
{
    if(
iFrag IGNORE_MONSTERS) return FMRES_IGNORED;

    static 
pHitpHit get_tr2(iTraceTR_pHit);
    static 
Float:flvecEndPos[3]; get_tr2(iTraceTR_vecEndPosflvecEndPos);

    if(
pHit 0) if(pev(pHitpev_solid) != SOLID_BSP) return FMRES_IGNORED;

    
engfunc(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYflvecEndPos0);
    
write_byte(TE_GUNSHOTDECAL);
    
engfunc(EngFunc_WriteCoordflvecEndPos[0]);
    
engfunc(EngFunc_WriteCoordflvecEndPos[1]);
    
engfunc(EngFunc_WriteCoordflvecEndPos[2]);
    
write_short(pHit pHit 0);
    
write_byte(random_num(4145));
    
message_end();

    return 
FMRES_IGNORED;
}

// [ HamSandwich ]
public CWeapon__Deploy_Post(iItem)
{
    if(!
CustomItem(iItem)) return;
    
    static 
iPlayeriPlayer get_pdata_cbase(iItemm_pPlayerlinux_diff_weapon);

    
set_pev_string(iPlayerpev_viewmodel2g_iszAllocString_ModelView);
    
set_pev_string(iPlayerpev_weaponmodel2g_iszAllocString_ModelPlayer);

    
UTIL_SendWeaponAnim(iPlayerWEAPON_ANIM_DRAW);

    
set_pdata_int(iItemm_iWeaponState0linux_diff_weapon);
    
set_pdata_float(iPlayerm_flNextAttackWEAPON_ANIM_DRAW_TIMElinux_diff_player);
    
set_pdata_float(iItemm_flTimeWeaponIdleWEAPON_ANIM_DRAW_TIMElinux_diff_weapon);
}

public 
CWeapon__PostFrame_Pre(iItem)
{
    if(!
CustomItem(iItem)) return HAM_IGNORED;

    static 
iPlayeriPlayer get_pdata_cbase(iItemm_pPlayerlinux_diff_weapon);

    if(
get_pdata_int(iItemm_iWeaponStatelinux_diff_weapon) == 0)
    {
        static 
iButtoniButton pev(iPlayerpev_button);
        
        if(
iButton IN_ATTACK2 && !get_pdata_int(iItemm_fInReloadlinux_diff_weapon) && get_pdata_float(iItemm_flNextSecondaryAttacklinux_diff_weapon) <= 0.0)
        {
            new 
szAnimation[64];

            
formatex(szAnimationcharsmax(szAnimation), pev(iPlayerpev_flags) & FL_DUCKING "crouch_shoot_%s" "ref_shoot_%s"WEAPON_ANIM_EXTENSION_STAB_KNIFE);
            
UTIL_PlayerAnimation(iPlayerszAnimation);

            
UTIL_SendWeaponAnim(iPlayerWEAPON_ANIM_STAB_KNIFE);
            
emit_sound(iPlayerCHAN_WEAPONWEAPON_SOUND_STAB_KNIFEVOL_NORMATTN_NORM0PITCH_NORM);

            
set_pdata_int(iItemm_iWeaponState1linux_diff_weapon);
            
set_pdata_float(iItemm_flNextPrimaryAttackWEAPON_ANIM_STAB_KNIFE_TIMElinux_diff_weapon);
            
set_pdata_float(iItemm_flNextSecondaryAttackWEAPON_ANIM_STAB_KNIFE_TIMElinux_diff_weapon);
            
set_pdata_float(iItemm_flTimeWeaponIdleWEAPON_ANIM_STAB_KNIFE_TIMElinux_diff_weapon);
            
set_pdata_float(iPlayerm_flNextAttack22/45.0linux_diff_player);

            
iButton &= ~IN_ATTACK2;
            
set_pev(iPlayerpev_buttoniButton);
        }
    }
    else
    {
        new 
FloatflOrigin[3], FloatflAngle[3], FloatflEnd[3], FloatflViewOfs[3];
        new 
FloatflForw[3], FloatflUp[3], FloatflRight[3];

        
pev(iPlayerpev_originflOrigin);
        
pev(iPlayerpev_view_ofsflViewOfs);

        
flOrigin[0] += flViewOfs[0];
        
flOrigin[1] += flViewOfs[1];
        
flOrigin[2] += flViewOfs[2];
            
        
pev(iPlayerpev_v_angleflAngle);
        
engfunc(EngFunc_AngleVectorsflAngleflForwflRightflUp);
            
        new 
iTrace create_tr2();

        new 
FloatflSendAngles[] = { 0.0, -10.010.0, -5.05.0, -5.05.00.00.0 }
        new 
FloatflSendAnglesUp[] = { 0.00.00.07.57.5, -7.5, -7.5, -15.015.0 }
        new 
FloatflTan;
        new 
FloatflMul;

        new 
FloatflFraction;
        new 
pHitpHitEntity = -1;

        for(new 
isizeof flSendAnglesi++)
        {
            
flTan floattan(flSendAngles[i], degrees);

            
flEnd[0] = (flForw[0] * WEAPON_STAB_KNIFE_DISTANCE) + (flRight[0] * flTan WEAPON_STAB_KNIFE_DISTANCE) + flUp[0] * flSendAnglesUp[i];
            
flEnd[1] = (flForw[1] * WEAPON_STAB_KNIFE_DISTANCE) + (flRight[1] * flTan WEAPON_STAB_KNIFE_DISTANCE) + flUp[1] * flSendAnglesUp[i];
            
flEnd[2] = (flForw[2] * WEAPON_STAB_KNIFE_DISTANCE) + (flRight[2] * flTan WEAPON_STAB_KNIFE_DISTANCE) + flUp[2] * flSendAnglesUp[i];
                
            
flMul = (WEAPON_STAB_KNIFE_DISTANCE/vector_length(flEnd));
            
flEnd[0] *= flMul;
            
flEnd[1] *= flMul;
            
flEnd[2] *= flMul;

            
flEnd[0] = flEnd[0] + flOrigin[0];
            
flEnd[1] = flEnd[1] + flOrigin[1];
            
flEnd[2] = flEnd[2] + flOrigin[2];

            
engfunc(EngFunc_TraceLineflOriginflEndDONT_IGNORE_MONSTERSiPlayeriTrace);
            
get_tr2(iTraceTR_flFractionflFraction);

            if(
flFraction == 1.0)
            {
                
engfunc(EngFunc_TraceHullflOriginflEndHULL_HEADiPlayeriTrace);
                
get_tr2(iTraceTR_flFractionflFraction);
            
                
engfunc(EngFunc_TraceLineflOriginflEndDONT_IGNORE_MONSTERSiPlayeriTrace);
                
pHit get_tr2(iTraceTR_pHit);
            }
            else
            {
                
pHit get_tr2(iTraceTR_pHit);
            }
                
            if(
pHit && pHitEntity != pHit)
            {
                if(
pev(pHitpev_solid) == SOLID_BSP && !(pev(pHitpev_spawnflags) & SF_BREAK_TRIGGER_ONLY))
                {
                    
ExecuteHamB(Ham_TakeDamagepHitiPlayeriPlayerWEAPON_STAB_KNIFE_DAMAGEDMG_NEVERGIB DMG_CLUB);
                }
                else
                {
                    
FakeTraceAttack(pHitiPlayerWEAPON_STAB_KNIFE_DAMAGEflForwiTraceDMG_NEVERGIB DMG_CLUB);
                    
FakeKnockBack(pHitflForwWEAPON_STAB_KNIFE_KNOCKBACK);
                }

                
pHitEntity pHit;
            }
        }

        
free_tr2(iTrace);

        
set_pdata_int(iItemm_iWeaponState0linux_diff_weapon);
    }

    if(
get_pdata_int(iItemm_fInReloadlinux_diff_weapon) == 1)
    {
        static 
iClipiClip get_pdata_int(iItemm_iCliplinux_diff_weapon);
        static 
iAmmoTypeiAmmoType m_rgAmmo get_pdata_int(iItemm_iPrimaryAmmoTypelinux_diff_weapon);
        static 
iAmmoiAmmo get_pdata_int(iPlayeriAmmoTypelinux_diff_player);
        static 
jmin(WEAPON_MAX_CLIP iClipiAmmo);

        
set_pdata_int(iItemm_iClipiClip jlinux_diff_weapon);
        
set_pdata_int(iPlayeriAmmoTypeiAmmo jlinux_diff_player);
        
set_pdata_int(iItemm_fInReload0linux_diff_weapon);
    }

    return 
HAM_IGNORED;
}

public 
CWeapon__AddToPlayer_Post(iItemiPlayer)
{
    switch(
pev(iItempev_impulse))
    {
        case 
WEAPON_SPECIAL_CODEUTIL_WeaponList(iPlayertrue);
        case 
0UTIL_WeaponList(iPlayerfalse);
    }
}

public 
CWeapon__Reload_Pre(iItem)
{
    if(!
CustomItem(iItem)) return HAM_IGNORED;
    static 
iPlayeriPlayer get_pdata_cbase(iItemm_pPlayerlinux_diff_weapon);

    static 
iClipiClip get_pdata_int(iItemm_iCliplinux_diff_weapon);
    if(
iClip >= WEAPON_MAX_CLIP) return HAM_SUPERCEDE;

    static 
iAmmoTypeiAmmoType m_rgAmmo get_pdata_int(iItemm_iPrimaryAmmoTypelinux_diff_weapon);
    if(
get_pdata_int(iPlayeriAmmoTypelinux_diff_player) <= 0) return HAM_SUPERCEDE

    set_pdata_int
(iItemm_iClip0linux_diff_weapon);
    
ExecuteHam(Ham_Weapon_ReloadiItem);
    
set_pdata_int(iItemm_iClipiCliplinux_diff_weapon);
    
set_pdata_int(iItemm_fInReload1linux_diff_weapon);

    
UTIL_SendWeaponAnim(iPlayerWEAPON_ANIM_RELOAD);

    
set_pdata_float(iItemm_flNextPrimaryAttackWEAPON_ANIM_RELOAD_TIMElinux_diff_weapon);
    
set_pdata_float(iItemm_flNextSecondaryAttackWEAPON_ANIM_RELOAD_TIMElinux_diff_weapon);
    
set_pdata_float(iItemm_flTimeWeaponIdleWEAPON_ANIM_RELOAD_TIMElinux_diff_weapon);
    
set_pdata_float(iPlayerm_flNextAttackWEAPON_ANIM_RELOAD_TIMElinux_diff_player);

    return 
HAM_SUPERCEDE;
}

public 
CWeapon__WeaponIdle_Pre(iItem)
{
    if(!
CustomItem(iItem) || get_pdata_float(iItemm_flTimeWeaponIdlelinux_diff_weapon) > 0.0) return HAM_IGNORED;
    static 
iPlayeriPlayer get_pdata_cbase(iItemm_pPlayerlinux_diff_weapon);

    
UTIL_SendWeaponAnim(iPlayerWEAPON_ANIM_IDLE);
    
set_pdata_float(iItemm_flTimeWeaponIdleWEAPON_ANIM_IDLE_TIMElinux_diff_weapon);

    return 
HAM_SUPERCEDE;
}

public 
CWeapon__PrimaryAttack_Pre(iItem)
{
    if(!
CustomItem(iItem)) return HAM_IGNORED;
    static 
iPlayeriPlayer get_pdata_cbase(iItemm_pPlayerlinux_diff_weapon);

    if(
get_pdata_int(iItemm_iCliplinux_diff_weapon) == 0)
    {
        
ExecuteHam(Ham_Weapon_PlayEmptySoundiItem);
        
set_pdata_float(iItemm_flNextPrimaryAttack0.2linux_diff_weapon);

        return 
HAM_SUPERCEDE;
    }

    static 
fw_TraceLinefw_TraceLine register_forward(FM_TraceLine"FM_Hook_TraceLine_Post"true);
    static 
fw_PlayBackEventfw_PlayBackEvent register_forward(FM_PlaybackEvent"FM_Hook_PlaybackEvent_Pre"false);
    
fm_ham_hook(true);

    
ExecuteHam(Ham_Weapon_PrimaryAttackiItem);

    
unregister_forward(FM_TraceLinefw_TraceLinetrue);
    
unregister_forward(FM_PlaybackEventfw_PlayBackEvent);
    
fm_ham_hook(false);

    static 
Float:vecPunchangle[3];
    
pev(iPlayerpev_punchanglevecPunchangle);
    
vecPunchangle[0] *= WEAPON_PUNCHAGNLE;
    
vecPunchangle[1] *= WEAPON_PUNCHAGNLE;
    
vecPunchangle[2] *= WEAPON_PUNCHAGNLE;
    
set_pev(iPlayerpev_punchanglevecPunchangle);

    
UTIL_SendWeaponAnim(iPlayerWEAPON_ANIM_SHOOT);
    
emit_sound(iPlayerCHAN_WEAPONWEAPON_SOUND_SHOOTVOL_NORMATTN_NORM0PITCH_NORM);

    
set_pdata_float(iItemm_flNextPrimaryAttackWEAPON_RATElinux_diff_weapon);
    
set_pdata_float(iItemm_flTimeWeaponIdleWEAPON_ANIM_SHOOT_TIMElinux_diff_weapon);

    return 
HAM_SUPERCEDE;
}

public 
CEntity__TraceAttack_Pre(iVictimiAttackerFloat:flDamage)
{
    if(!
is_user_connected(iAttacker)) return;

    static 
iItemiItem get_pdata_cbase(iAttackerm_pActiveItemlinux_diff_player);
    if(
iItem <= || !CustomItem(iItem)) return;

    
SetHamParamFloat(3flDamage WEAPON_DAMAGE);
}

// [ Other ]
public fm_ham_hook(boolbEnabled)
{
    if(
bEnabled)
    {
        
EnableHamForward(g_HamHook_TraceAttack[0]);
        
EnableHamForward(g_HamHook_TraceAttack[1]);
        
EnableHamForward(g_HamHook_TraceAttack[2]);
        
EnableHamForward(g_HamHook_TraceAttack[3]);
    }
    else 
    {
        
DisableHamForward(g_HamHook_TraceAttack[0]);
        
DisableHamForward(g_HamHook_TraceAttack[1]);
        
DisableHamForward(g_HamHook_TraceAttack[2]);
        
DisableHamForward(g_HamHook_TraceAttack[3]);
    }
}

public 
FakeTraceAttack(iVictimiAttackerFloatflDamageFloatvecDirection[3], iTraceibitsDamageBits)
{
    static 
FloatflTakeDamagepev(iVictimpev_takedamageflTakeDamage);

    if(
flTakeDamage == DAMAGE_NO) return 0
    

    if(
is_user_connected(iVictim)) 
    {
        if(
get_pdata_int(iVictimm_iPlayerTeamlinux_diff_player) == get_pdata_int(iAttackerm_iPlayerTeamlinux_diff_player)) 
            return 
0;
    }

    static 
iHitgroupiHitgroup get_tr2(iTraceTR_iHitgroup);
    static 
FloatvecEndPos[3]; get_tr2(iTraceTR_vecEndPosvecEndPos);
    static 
iBloodColoriBloodColor ExecuteHamB(Ham_BloodColoriVictim);
    
    
set_pdata_int(iVictimm_LastHitGroupiHitgrouplinux_diff_player);

    switch(
iHitgroup
    {
        case 
HIT_HEAD:                  flDamage *= 3.0;
        case 
HIT_LEFTARMHIT_RIGHTARMflDamage *= 0.75;
        case 
HIT_LEFTLEGHIT_RIGHTLEGflDamage *= 0.75;
        case 
HIT_STOMACH:               flDamage *= 1.5;
    }
    
    
ExecuteHamB(Ham_TakeDamageiVictimiAttackeriAttackerflDamageibitsDamageBits);
    
    
    {
        if(
iBloodColor != DONT_BLEED
        {
            
ExecuteHamB(Ham_TraceBleediVictimflDamagevecDirectioniTraceibitsDamageBits);
            
UTIL_BloodDrips(vecEndPosiBloodColorfloatround(flDamage));
        }
    }

    return 
1;
}

public 
FakeKnockBack(iVictimFloatvecDirection[3], FloatflKnockBack
{
    

    
set_pdata_float(iVictimm_flPainShock1.0linux_diff_player);

    static 
Float:vecVelocity[3]; pev(iVictimpev_velocityvecVelocity);

    if(
pev(iVictimpev_flags) & FL_DUCKING
        
flKnockBack *= 0.7;

    
vecVelocity[0] = vecDirection[0] * flKnockBack;
    
vecVelocity[1] = vecDirection[1] * flKnockBack;
    
vecVelocity[2] = 200.0;

    
set_pev(iVictimpev_velocityvecVelocity);
    
    return 
1;
}

// [ Stocks ]
public UTIL_BloodDrips(Float:vecOrigin[3], iColoriAmount) {
    if(
iAmount 255iAmount 255;
    
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvecOrigin0);
    
write_byte(TE_BLOODSPRITE);
    
engfunc(EngFunc_WriteCoordvecOrigin[0]);
    
engfunc(EngFunc_WriteCoordvecOrigin[1]);
    
engfunc(EngFunc_WriteCoordvecOrigin[2]);
    
write_short(g_iszModelIndexBloodSpray);
    
write_short(g_iszModelIndexBloodDrop);
    
write_byte(iColor);
    
write_byte(min(max(3,iAmount/10),16));
    
message_end();
}

stock UTIL_SendWeaponAnim(iPlayeriAnim)
{
    
set_pev(iPlayerpev_weaponanimiAnim);

    
message_begin(MSG_ONESVC_WEAPONANIM_iPlayer);
    
write_byte(iAnim);
    
write_byte(0);
    
message_end();
}

stock UTIL_DropWeapon(iPlayeriSlot)
{
    static 
iEntityiNextszWeaponName[32];
    
iEntity get_pdata_cbase(iPlayerm_rpgPlayerItems iSlotlinux_diff_player);

    if(
iEntity 0)
    {       
        do 
        {
            
iNext get_pdata_cbase(iEntitym_pNextlinux_diff_weapon);

            if(
get_weaponname(get_pdata_int(iEntitym_iIdlinux_diff_weapon), szWeaponNamecharsmax(szWeaponName)))
                
engclient_cmd(iPlayer"drop"szWeaponName);
        } 
        
        while((
iEntity iNext) > 0);
    }
}

stock UTIL_PrecacheSoundsFromModel(const szModelPath[])
{
    new 
iFile;
    
    if((
iFile fopen(szModelPath"rt")))
    {
        new 
szSoundPath[64];
        
        new 
iNumSeqiSeqIndex;
        new 
iEventiNumEventsiEventIndex;
        
        
fseek(iFile164SEEK_SET);
        
fread(iFileiNumSeqBLOCK_INT);
        
fread(iFileiSeqIndexBLOCK_INT);
        
        for(new 
k0iNumSeqi++)
        {
            
fseek(iFileiSeqIndex 48 176 iSEEK_SET);
            
fread(iFileiNumEventsBLOCK_INT);
            
fread(iFileiEventIndexBLOCK_INT);
            
fseek(iFileiEventIndex 176 iSEEK_SET);
            
            for(
0iNumEventsk++)
            {
                
fseek(iFileiEventIndex 76 kSEEK_SET);
                
fread(iFileiEventBLOCK_INT);
                
fseek(iFile4SEEK_CUR);
                
                if(
iEvent != 5004)
                    continue;
                
                
fread_blocks(iFileszSoundPath64BLOCK_CHAR);
                
                if(
strlen(szSoundPath))
                {
                    
strtolower(szSoundPath);
                    
engfunc(EngFunc_PrecacheSoundszSoundPath);
                }
            }
        }
    }
    
    
fclose(iFile);
}

stock UTIL_WeaponList(iPlayerboolbEnabled)
{
    
message_begin(MSG_ONEg_iMsgID_Weaponlist_iPlayer);
    
write_string(bEnabled WEAPON_NEW_NAME WEAPON_REFERENCE);
    
write_byte(iWeaponList[0]);
    
write_byte(bEnabled WEAPON_DEFAULT_AMMO iWeaponList[1]);
    
write_byte(iWeaponList[2]);
    
write_byte(iWeaponList[3]);
    
write_byte(iWeaponList[4]);
    
write_byte(iWeaponList[5]);
    
write_byte(iWeaponList[6]);
    
write_byte(iWeaponList[7]);
    
message_end();
}

stock UTIL_PlayerAnimation(const iPlayer, const szAnim[]) 
{
    new 
iAnimDesiredFloatflFrameRateFloatflGroundSpeedboolbLoops;
        
    if ((
iAnimDesired lookup_sequence(iPlayerszAnimflFrameRatebLoopsflGroundSpeed)) == -1
    {
        
iAnimDesired 0;
    }
    
    new 
FloatflGametime get_gametime();

    
set_pev(iPlayerpev_frame0.0);
    
set_pev(iPlayerpev_framerate1.0);
    
set_pev(iPlayerpev_animtimeflGametime);
    
set_pev(iPlayerpev_sequenceiAnimDesired);
    
    
set_pdata_int(iPlayerm_fSequenceLoopsbLoopslinux_diff_animation);
    
set_pdata_int(iPlayerm_fSequenceFinished0linux_diff_animation);
    
    
set_pdata_float(iPlayerm_flFrameRateflFrameRatelinux_diff_animation);
    
set_pdata_float(iPlayerm_flGroundSpeedflGroundSpeedlinux_diff_animation);
    
set_pdata_float(iPlayerm_flLastEventCheckflGametime linux_diff_animation);
    
    
set_pdata_int(iPlayerm_ActivityACT_RANGE_ATTACK1linux_diff_player);
    
set_pdata_int(iPlayerm_IdealActivityACT_RANGE_ATTACK1linux_diff_player);
    
set_pdata_float(iPlayerm_flLastAttackTimeflGametime linux_diff_player);

Responder
#2
https://amxmodx-es.com/Thread-Tienda-por-Natives-1-0
Responder
#3
(10/04/2021, 12:15 AM)[N]drs escribió: https://amxmodx-es.com/Thread-Tienda-por-Natives-1-0

si bien ya tengo un especie de "menu" mediante "say o consola"la onda era ir poniendo valor a cada plug, que tan complejo es ?
Responder
#4
(10/04/2021, 12:42 AM)Gstrigl escribió: si bien ya tengo un especie de "menu" mediante "say o consola"la onda era ir poniendo valor a cada plug, que tan complejo es ?

El ejemplo está ahí
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)