Raised This Month: $32 Target: $400
 8% 

Help Me I ask for a plugin


Post New Thread Reply   
 
Thread Tools Display Modes
Supremache
Veteran Member
Join Date: Sep 2019
Location: Egypt
Old 06-16-2020 , 23:03   Re: Help Me I ask for a plugin
Reply With Quote #21

Quote:
Originally Posted by mikaelnatan13 View Post
leave a purple color but a used gun and ump45 I tried to change to m4a1 it worked but there are some mistakes when you shoot you can take a look

PHP Code:
#pragma compress 1

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <xs>
#include <cstrike>
#include <zombieplague>

new g_Flame_Spr

#define ENG_NULLENT            -1
#define EV_INT_WEAPONKEY    EV_INT_impulse
#define tho4mpson_WEAPONKEY     0005
#define MAX_PLAYERS          32
#define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)

const USE_STOPPED 0
const OFFSET_ACTIVE_ITEM 373
const OFFSET_WEAPONOWNER 41
const OFFSET_LINUX 5
const OFFSET_LINUX_WEAPONS 4

#define WEAP_LINUX_XTRA_OFF        4
#define m_fKnown                    44
#define m_flNextPrimaryAttack         46
#define m_flTimeWeaponIdle            48
#define m_iClip                    51
#define m_fInReload                54
#define PLAYER_LINUX_XTRA_OFF    5
#define m_flNextAttack                83

#define tho4mpson_RELOAD_TIME 3.24
#define tho4mpson_SHOOT1        3
#define tho4mpson_SHOOT2        5
#define tho4mpson_RELOAD        1
#define tho4mpson_DRAW        2

#define write_coord_f(%1)    engfunc(EngFunc_WriteCoord,%1)

new const Fire_Sounds[][] = { "Mkod_Md/Buff_Sg552/-1.wav" }

new 
tho4mpson_V_MODEL[64] = "models/zombie_plague/v_m4a1_fire.mdl"
new tho4mpson_P_MODEL[64] = "models/zombie_plague/p_m4a1_fire.mdl"
new tho4mpson_W_MODEL[64] = "models/zombie_plague/w_m4a1_fire.mdl"

new const GUNSHOT_DECALS[] = { 4142434445 }

new 
cvar_dmg_tho4mpsoncvar_recoil_tho4mpsong_itemid_tho4mpsoncvar_clip_tho4mpsoncvar_spd_tho4mpsoncvar_tho4mpson_ammo
new g_MaxPlayersg_orig_event_tho4mpsong_IsInPrimaryAttack
new Float:cl_pushangle[MAX_PLAYERS 1][3], m_iBlood[2]
new 
g_has_tho4mpson[33], g_clip_ammo[33], g_tho4mpson_TmpClip[33], oldweap[33]

const 
PRIMARY_WEAPONS_BIT_SUM 
(
1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
new const 
WEAPONENTNAMES[][] = { """weapon_p228""""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4""weapon_mac10",
            
"weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550",
            
"weapon_galil""weapon_famas""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
            
"weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle""weapon_sg552",
            
"weapon_ak47""weapon_knife""weapon_p90" }

public 
plugin_init()
{
    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
RegisterHam(Ham_Item_AddToPlayer"weapon_m4a1""fw_tho4mpson_AddToPlayer")
    
RegisterHam(Ham_Use"func_tank""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tankmortar""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tankrocket""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tanklaser""fw_UseStationary_Post"1)
    for (new 
1sizeof WEAPONENTNAMESi++)
    if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_m4a1""fw_tho4mpson_PrimaryAttack")
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_m4a1""fw_tho4mpson_PrimaryAttack_Post"1)
    
RegisterHam(Ham_Item_PostFrame"weapon_m4a1""tho4mpson_ItemPostFrame")
    
RegisterHam(Ham_Weapon_Reload"weapon_m4a1""tho4mpson_Reload")
    
RegisterHam(Ham_Weapon_Reload"weapon_m4a1""tho4mpson_Reload_Post"1)
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
register_forward(FM_SetModel"fw_SetModel")
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
register_forward(FM_PlaybackEvent"fwPlaybackEvent")
    
    
RegisterHam(Ham_TraceAttack"worldspawn""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_breakable""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_wall""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_door""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_door_rotating""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_plat""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_rotating""fw_TraceAttack"1)

    
cvar_dmg_tho4mpson register_cvar("zp_tho4mpson_dmg""2.0")
    
cvar_recoil_tho4mpson register_cvar("zp_tho4mpson_recoil""1.0")
    
cvar_clip_tho4mpson register_cvar("zp_tho4mpson_clip""50")
    
cvar_spd_tho4mpson register_cvar("zp_tho4mpson_spd""0.93")
    
cvar_tho4mpson_ammo register_cvar("zp_tho4mpson_ammo""200")
    
    
g_itemid_tho4mpson zp_register_extra_item(" Fire M4a1 "45ZP_TEAM_HUMAN)
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_precache()
{
    
precache_model(tho4mpson_V_MODEL)
    
precache_model(tho4mpson_P_MODEL)
    
precache_model(tho4mpson_W_MODEL)
    for(new 
0sizeof Fire_Soundsi++)
    
precache_sound(Fire_Sounds[i])    
    
m_iBlood[0] = precache_model("sprites/blood.spr")
    
m_iBlood[1] = precache_model("sprites/bloodspray.spr")

    
g_Flame_Spr precache_model("sprites/Mkod_Md/Scar_Born_Beast/Flame.spr")

    
register_forward(FM_PrecacheEvent"fwPrecacheEvent_Post"1)
}

public 
fw_TraceAttack(iEntiAttackerFloat:flDamageFloat:fDir[3], ptriDamageType)
{
    if(!
is_user_alive(iAttacker))
        return

    new 
g_currentweapon get_user_weapon(iAttacker)

    if(
g_currentweapon != CSW_M4A1) return
    
    if(!
g_has_tho4mpson[iAttacker]) return

    static 
Float:flEnd[3]
    
get_tr2(ptrTR_vecEndPosflEnd)
    
    if(
iEnt)
    {
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_DECAL)
        
write_coord_f(flEnd[0])
        
write_coord_f(flEnd[1])
        
write_coord_f(flEnd[2])
        
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
        
write_short(iEnt)
        
message_end()
    }
    else
    {
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_WORLDDECAL)
        
write_coord_f(flEnd[0])
        
write_coord_f(flEnd[1])
        
write_coord_f(flEnd[2])
        
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
        
message_end()
    }
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_GUNSHOTDECAL)
    
write_coord_f(flEnd[0])
    
write_coord_f(flEnd[1])
    
write_coord_f(flEnd[2])
    
write_short(iAttacker)
    
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
    
message_end()
}

public 
zp_user_humanized_post(id)
{
    
g_has_tho4mpson[id] = false
}

public 
plugin_natives ()
{
    
register_native("Scar_Born_Beast""native_give_weapon_add"1)
}
public 
native_give_weapon_add(id)
{
    
give_tho4mpson(id)
}

public 
fwPrecacheEvent_Post(type, const name[])
{
    if (
equal("events/m4a1.sc"name))
    {
        
g_orig_event_tho4mpson get_orig_retval()
        return 
FMRES_HANDLED
    
}
    return 
FMRES_IGNORED
}

public 
client_connect(id)
{
    
g_has_tho4mpson[id] = false
}

public 
client_disconnect(id)
{
    
g_has_tho4mpson[id] = false
}

public 
zp_user_infected_post(id)
{
    if (
zp_get_user_zombie(id))
    {
        
g_has_tho4mpson[id] = false
    
}
}

public 
fw_SetModel(entitymodel[])
{
    if(!
is_valid_ent(entity))
        return 
FMRES_IGNORED
    
    
static szClassName[33]
    
entity_get_string(entityEV_SZ_classnameszClassNamecharsmax(szClassName))
        
    if(!
equal(szClassName"weaponbox"))
        return 
FMRES_IGNORED
    
    
static iOwner
    
    iOwner 
entity_get_edict(entityEV_ENT_owner)
    
    if(
equal(model"models/w_m4a1.mdl"))
    {
        static 
iStoredAugID
        
        iStoredAugID 
find_ent_by_owner(ENG_NULLENT"weapon_m4a1"entity)
    
        if(!
is_valid_ent(iStoredAugID))
            return 
FMRES_IGNORED
    
        
if(g_has_tho4mpson[iOwner])
        {
            
entity_set_int(iStoredAugIDEV_INT_WEAPONKEYtho4mpson_WEAPONKEY)
            
            
g_has_tho4mpson[iOwner] = false
            
            entity_set_model
(entitytho4mpson_W_MODEL)
            
            return 
FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED
}

public 
give_tho4mpson(id)
{
    
drop_weapons(id1)
    new 
iWep2 give_item(id,"weapon_m4a1")
    if( 
iWep2 )
    {
        
cs_set_weapon_ammo(iWep2get_pcvar_num(cvar_clip_tho4mpson))
        
cs_set_user_bpammo (idCSW_M4A1get_pcvar_num(cvar_tho4mpson_ammo))    
        
UTIL_PlayWeaponAnimation(idtho4mpson_DRAW)
        
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)
    }
    
g_has_tho4mpson[id] = true
}

public 
zp_extra_item_selected(iditemid)
{
    if(
itemid != g_itemid_tho4mpson)
        return

    
give_tho4mpson(id)
}

public 
fw_tho4mpson_AddToPlayer(tho4mpsonid)
{
    if(!
is_valid_ent(tho4mpson) || !is_user_connected(id))
        return 
HAM_IGNORED
    
    
if(entity_get_int(tho4mpsonEV_INT_WEAPONKEY) == tho4mpson_WEAPONKEY)
    {
        
g_has_tho4mpson[id] = true
        
        entity_set_int
(tho4mpsonEV_INT_WEAPONKEY0)
    }
    return 
HAM_IGNORED
}

public 
fw_UseStationary_Post(entitycalleractivatoruse_type)
{
    if (
use_type == USE_STOPPED && is_user_connected(caller))
        
replace_weapon_models(callerget_user_weapon(caller))
}

public 
fw_Item_Deploy_Post(weapon_ent)
{
    static 
owner
    owner 
fm_cs_get_weapon_ent_owner(weapon_ent)
    
    static 
weaponid
    weaponid 
cs_get_weapon_id(weapon_ent)
    
    
replace_weapon_models(ownerweaponid)
}

public 
CurrentWeapon(id)
{
     
replace_weapon_models(idread_data(2))

     if(
read_data(2) != CSW_M4A1 || !g_has_tho4mpson[id])
          return
     
     static 
Float:iSpeed
     
if(g_has_tho4mpson[id])
          
iSpeed get_pcvar_float(cvar_spd_tho4mpson)
     
     static 
weapon[32],Ent
     get_weaponname
(read_data(2),weapon,31)
     
Ent find_ent_by_owner(-1,weapon,id)
     if(
Ent)
     {
          static 
Float:Delay
          Delay 
get_pdata_floatEnt464) * iSpeed
          
if (Delay 0.0)
          {
               
set_pdata_float(Ent46Delay4)
          }
     }
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_M4A1:
        {
            if (
zp_get_user_zombie(id) || zp_get_user_survivor(id))
                return
            
            if(
g_has_tho4mpson[id])
            {
                
set_pev(idpev_viewmodel2tho4mpson_V_MODEL)
                
set_pev(idpev_weaponmodel2tho4mpson_P_MODEL)
                if(
oldweap[id] != CSW_M4A1
                {
                    
UTIL_PlayWeaponAnimation(idtho4mpson_DRAW)
                    
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)
                }
            }
        }
    }
    
oldweap[id] = weaponid
}

public 
fw_UpdateClientData_Post(PlayerSendWeaponsCD_Handle)
{
    if(!
is_user_alive(Player) || (get_user_weapon(Player) != CSW_M4A1 || !g_has_tho4mpson[Player]))
        return 
FMRES_IGNORED
    
    set_cd
(CD_HandleCD_flNextAttackhalflife_time () + 0.001)
    return 
FMRES_HANDLED
}

public 
fw_tho4mpson_PrimaryAttack(Weapon)
{
    new 
Player get_pdata_cbase(Weapon414)
    
    if (!
g_has_tho4mpson[Player])
        return
    
    
g_IsInPrimaryAttack 1
    pev
(Player,pev_punchangle,cl_pushangle[Player])
    
    
g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
}

public 
fwPlaybackEvent(flagsinvokereventidFloat:delayFloat:origin[3], Float:angles[3], Float:fparam1Float:fparam2iParam1iParam2bParam1bParam2)
{
    if ((
eventid != g_orig_event_tho4mpson) || !g_IsInPrimaryAttack)
        return 
FMRES_IGNORED
    
if (!(<= invoker <= g_MaxPlayers))
    return 
FMRES_IGNORED

    playback_event
(flags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
    return 
FMRES_SUPERCEDE
}

public 
fw_tho4mpson_PrimaryAttack_Post(Weapon)
{
    
g_IsInPrimaryAttack 0
    
new Player get_pdata_cbase(Weapon414)
    
    new 
szClipszAmmo
    get_user_weapon
(PlayerszClipszAmmo)
    
    if(!
is_user_alive(Player))
        return

    if(
g_has_tho4mpson[Player])
    {
        if (!
g_clip_ammo[Player])
            return

        new 
Float:push[3]
        
pev(Player,pev_punchangle,push)
        
xs_vec_sub(push,cl_pushangle[Player],push)
        
        
xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_tho4mpson),push)
        
xs_vec_add(push,cl_pushangle[Player],push)
        
set_pev(Player,pev_punchangle,push)
        
        
emit_sound(PlayerCHAN_WEAPONFire_Sounds[0], VOL_NORMATTN_NORM0PITCH_NORM)
        
UTIL_PlayWeaponAnimation(Playerrandom_num(tho4mpson_SHOOT1,tho4mpson_SHOOT2))
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if(
get_user_weapon(attacker) == CSW_M4A1)
        {
            if(
g_has_tho4mpson[attacker])
            {
                
SetHamParamFloat(4damage get_pcvar_float(cvar_dmg_tho4mpson))
                
Flame(victim)
            }
        }
    }
}

public 
Flame(id)
{
    new 
origin[3]
    
get_user_origin(idorigin)
    
    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_SPRITE)
    
write_coord(origin[0] + random_num(-55))
    
write_coord(origin[1] + random_num(-55))
    
write_coord(origin[2] + random_num(-1010))
    
write_short(g_Flame_Spr)
    
write_byte(random_num(510))
    
write_byte(200)
    
message_end()
}

public 
message_DeathMsg(msg_idmsg_destid)
{
    static 
szTruncatedWeapon[33], iAttackeriVictim
    
    get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
    
    
iAttacker get_msg_arg_int(1)
    
iVictim get_msg_arg_int(2)
    
    if(!
is_user_connected(iAttacker) || iAttacker == iVictim)
        return 
PLUGIN_CONTINUE
    
    
if(equal(szTruncatedWeapon"m4a1") && get_user_weapon(iAttacker) == CSW_M4A1)
    {
        if(
g_has_tho4mpson[iAttacker])
            
set_msg_arg_string(4"m4a1")
    }
    return 
PLUGIN_CONTINUE
}

stock fm_cs_get_current_weapon_ent(id)
{
    return 
get_pdata_cbase(idOFFSET_ACTIVE_ITEMOFFSET_LINUX)
}

stock fm_cs_get_weapon_ent_owner(ent)
{
    return 
get_pdata_cbase(entOFFSET_WEAPONOWNEROFFSET_LINUX_WEAPONS)
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
    
set_pev(Playerpev_weaponanimSequence)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, .player Player)
    
write_byte(Sequence)
    
write_byte(pev(Playerpev_body))
    
message_end()
}

public 
tho4mpson_ItemPostFrame(weapon_entity
{
     new 
id pev(weapon_entitypev_owner)
     if (!
is_user_connected(id))
          return 
HAM_IGNORED

     
if (!g_has_tho4mpson[id])
          return 
HAM_IGNORED

     
static iClipExtra
     
     iClipExtra 
get_pcvar_num(cvar_clip_tho4mpson)
     new 
Float:flNextAttack get_pdata_float(idm_flNextAttackPLAYER_LINUX_XTRA_OFF)

     new 
iBpAmmo cs_get_user_bpammo(idCSW_M4A1)
     new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF)

     new 
fInReload get_pdata_int(weapon_entitym_fInReloadWEAP_LINUX_XTRA_OFF

     if( 
fInReload && flNextAttack <= 0.0 )
     {
         new 
min(iClipExtra iClipiBpAmmo)
    
         
set_pdata_int(weapon_entitym_iClipiClip jWEAP_LINUX_XTRA_OFF)
         
cs_set_user_bpammo(idCSW_M4A1iBpAmmo-j)
        
         
set_pdata_int(weapon_entitym_fInReload0WEAP_LINUX_XTRA_OFF)
         
fInReload 0
     
}
     return 
HAM_IGNORED
}

public 
tho4mpson_Reload(weapon_entity
{
     new 
id pev(weapon_entitypev_owner)
     if (!
is_user_connected(id))
          return 
HAM_IGNORED

     
if (!g_has_tho4mpson[id])
          return 
HAM_IGNORED

     
static iClipExtra

     
if(g_has_tho4mpson[id])
          
iClipExtra get_pcvar_num(cvar_clip_tho4mpson)

     
g_tho4mpson_TmpClip[id] = -1

     
new iBpAmmo cs_get_user_bpammo(idCSW_M4A1)
     new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF)

     if (
iBpAmmo <= 0)
          return 
HAM_SUPERCEDE

     
if (iClip >= iClipExtra)
          return 
HAM_SUPERCEDE

     g_tho4mpson_TmpClip
[id] = iClip

     
return HAM_IGNORED
}

public 
tho4mpson_Reload_Post(weapon_entity
{
    new 
id pev(weapon_entitypev_owner)
    if (!
is_user_connected(id))
        return 
HAM_IGNORED

    
if (!g_has_tho4mpson[id])
        return 
HAM_IGNORED

    
if (g_tho4mpson_TmpClip[id] == -1)
        return 
HAM_IGNORED

    set_pdata_int
(weapon_entitym_iClipg_tho4mpson_TmpClip[id], WEAP_LINUX_XTRA_OFF)

    
set_pdata_float(weapon_entitym_flTimeWeaponIdletho4mpson_RELOAD_TIMEWEAP_LINUX_XTRA_OFF)

    
set_pdata_float(idm_flNextAttacktho4mpson_RELOAD_TIMEPLAYER_LINUX_XTRA_OFF)

    
set_pdata_int(weapon_entitym_fInReload1WEAP_LINUX_XTRA_OFF)

    
UTIL_PlayWeaponAnimation(idtho4mpson_RELOAD)

    return 
HAM_IGNORED
}

stock drop_weapons(iddropwhat)
{
     static 
weapons[32], numiweaponid
     num 
0
     get_user_weapons
(idweaponsnum)
     
     for (
0numi++)
     {
          
weaponid weapons[i]
          
          if (
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
          {
               static 
wname[32]
               
get_weaponname(weaponidwnamesizeof wname 1)
               
engclient_cmd(id"drop"wname)
          }
     }

I will edit it but you will wait me because i have work when i finsh i will do it
Supremache is offline
mikaelnatan13
Member
Join Date: Apr 2020
Old 06-16-2020 , 23:36   Re: Help Me I ask for a plugin
Reply With Quote #22

Quote:
Originally Posted by Supremache View Post
I will edit it but you will wait me because i have work when i finsh i will do it
ok I managed to replace it with m4a1 but there are some bugs when fireingg so if you can add a sprinter q shows the bullet equal to that of m4a1 frost so q purple

Last edited by mikaelnatan13; 06-16-2020 at 23:39.
mikaelnatan13 is offline
Old 06-16-2020, 23:37
mikaelnatan13
This message has been deleted by mikaelnatan13.
mikaelnatan13
Member
Join Date: Apr 2020
Old 06-19-2020 , 20:22   Re: Help Me I ask for a plugin
Reply With Quote #23

Quote:
Originally Posted by Supremache View Post
I will edit it but you will wait me because i have work when i finsh i will do it

edited the plugin?
mikaelnatan13 is offline
Supremache
Veteran Member
Join Date: Sep 2019
Location: Egypt
Old 06-19-2020 , 22:18   Re: Help Me I ask for a plugin
Reply With Quote #24

Quote:
Originally Posted by mikaelnatan13 View Post
edited the plugin?
I did it
PHP Code:
#pragma compress 1

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <xs>
#include <cstrike>
#include <zombieplague>

new g_Flame_Spr

#define ENG_NULLENT            -1
#define EV_INT_WEAPONKEY    EV_INT_impulse
#define tho4mpson_WEAPONKEY     0005
#define MAX_PLAYERS          32
#define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)

const USE_STOPPED 0
const OFFSET_ACTIVE_ITEM 373
const OFFSET_WEAPONOWNER 41
const OFFSET_LINUX 5
const OFFSET_LINUX_WEAPONS 4

#define WEAP_LINUX_XTRA_OFF        4
#define m_fKnown                    44
#define m_flNextPrimaryAttack         46
#define m_flTimeWeaponIdle            48
#define m_iClip                    51
#define m_fInReload                54
#define PLAYER_LINUX_XTRA_OFF    5
#define m_flNextAttack                83

#define tho4mpson_RELOAD_TIME 3.24
#define tho4mpson_SHOOT1        3
#define tho4mpson_SHOOT2        5
#define tho4mpson_RELOAD        1
#define tho4mpson_DRAW        2

#define write_coord_f(%1)    engfunc(EngFunc_WriteCoord,%1)

new const Fire_Sounds[][] = { "Mkod_Md/Buff_Sg552/-1.wav" }

new 
tho4mpson_V_MODEL[64] = "models/Mkod_Md/Scar_Born_Beast/V.mdl"
new tho4mpson_P_MODEL[64] = "models/Mkod_Md/Scar_Born_Beast/Q.mdl"
new tho4mpson_W_MODEL[64] = "models/Mkod_Md/Scar_Born_Beast/Q.mdl"

new const GUNSHOT_DECALS[] = { 4142434445 }

new 
cvar_dmg_tho4mpsoncvar_recoil_tho4mpsong_itemid_tho4mpsoncvar_clip_tho4mpsoncvar_spd_tho4mpsoncvar_tho4mpson_ammo
new g_MaxPlayersg_orig_event_tho4mpsong_IsInPrimaryAttack
new Float:cl_pushangle[MAX_PLAYERS 1][3], m_iBlood[2]
new 
g_has_tho4mpson[33], g_clip_ammo[33], g_tho4mpson_TmpClip[33], oldweap[33]

const 
PRIMARY_WEAPONS_BIT_SUM 
(
1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
new const 
WEAPONENTNAMES[][] = { """weapon_p228""""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4""weapon_mac10",
            
"weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550",
            
"weapon_galil""weapon_famas""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
            
"weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle""weapon_sg552",
            
"weapon_ak47""weapon_knife""weapon_p90" }

public 
plugin_init()
{
    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
RegisterHam(Ham_Item_AddToPlayer"weapon_m4a1""fw_tho4mpson_AddToPlayer")
    
RegisterHam(Ham_Use"func_tank""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tankmortar""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tankrocket""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tanklaser""fw_UseStationary_Post"1)
    for (new 
1sizeof WEAPONENTNAMESi++)
    if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_m4a1""fw_tho4mpson_PrimaryAttack")
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_m4a1""fw_tho4mpson_PrimaryAttack_Post"1)
    
RegisterHam(Ham_Item_PostFrame"weapon_m4a1""tho4mpson_ItemPostFrame")
    
RegisterHam(Ham_Weapon_Reload"weapon_m4a1""tho4mpson_Reload")
    
RegisterHam(Ham_Weapon_Reload"weapon_m4a1""tho4mpson_Reload_Post"1)
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
register_forward(FM_SetModel"fw_SetModel")
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
register_forward(FM_PlaybackEvent"fwPlaybackEvent")
    
    
RegisterHam(Ham_TraceAttack"worldspawn""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_breakable""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_wall""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_door""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_door_rotating""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_plat""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_rotating""fw_TraceAttack"1)

    
cvar_dmg_tho4mpson register_cvar("zp_tho4mpson_dmg""2.30")
    
cvar_recoil_tho4mpson register_cvar("zp_tho4mpson_recoil""1.0")
    
cvar_clip_tho4mpson register_cvar("zp_tho4mpson_clip""50")
    
cvar_spd_tho4mpson register_cvar("zp_tho4mpson_spd""0.93")
    
cvar_tho4mpson_ammo register_cvar("zp_tho4mpson_ammo""200")
    
    
g_itemid_tho4mpson zp_register_extra_item("Scar Born Beast"30ZP_TEAM_HUMAN)
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_precache()
{
    
precache_model(tho4mpson_V_MODEL)
    
precache_model(tho4mpson_P_MODEL)
    
precache_model(tho4mpson_W_MODEL)
    for(new 
0sizeof Fire_Soundsi++)
    
precache_sound(Fire_Sounds[i])    
    
m_iBlood[0] = precache_model("sprites/blood.spr")
    
m_iBlood[1] = precache_model("sprites/bloodspray.spr")

    
g_Flame_Spr precache_model("sprites/Mkod_Md/Scar_Born_Beast/Flame.spr")

    
register_forward(FM_PrecacheEvent"fwPrecacheEvent_Post"1)
}

public 
fw_TraceAttack(iEntiAttackerFloat:flDamageFloat:fDir[3], ptriDamageType)
{
    if(!
is_user_alive(iAttacker))
        return

    new 
g_currentweapon get_user_weapon(iAttacker)

    if(
g_currentweapon != CSW_M4A1) return
    
    if(!
g_has_tho4mpson[iAttacker]) return

    static 
Float:flEnd[3]
    
get_tr2(ptrTR_vecEndPosflEnd)
    
    if(
iEnt)
    {
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_DECAL)
        
write_coord_f(flEnd[0])
        
write_coord_f(flEnd[1])
        
write_coord_f(flEnd[2])
        
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
        
write_short(iEnt)
        
message_end()
    }
    else
    {
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_WORLDDECAL)
        
write_coord_f(flEnd[0])
        
write_coord_f(flEnd[1])
        
write_coord_f(flEnd[2])
        
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
        
message_end()
    }
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_GUNSHOTDECAL)
    
write_coord_f(flEnd[0])
    
write_coord_f(flEnd[1])
    
write_coord_f(flEnd[2])
    
write_short(iAttacker)
    
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
    
message_end()
}

public 
zp_user_humanized_post(id)
{
    
g_has_tho4mpson[id] = false
}

public 
plugin_natives ()
{
    
register_native("Scar_Born_Beast""native_give_weapon_add"1)
}
public 
native_give_weapon_add(id)
{
    
give_tho4mpson(id)
}

public 
fwPrecacheEvent_Post(type, const name[])
{
    if (
equal("events/m4a1.sc"name))
    {
        
g_orig_event_tho4mpson get_orig_retval()
        return 
FMRES_HANDLED
    
}
    return 
FMRES_IGNORED
}

public 
client_connect(id)
{
    
g_has_tho4mpson[id] = false
}

public 
client_disconnect(id)
{
    
g_has_tho4mpson[id] = false
}

public 
zp_user_infected_post(id)
{
    if (
zp_get_user_zombie(id))
    {
        
g_has_tho4mpson[id] = false
    
}
}

public 
fw_SetModel(entitymodel[])
{
    if(!
is_valid_ent(entity))
        return 
FMRES_IGNORED
    
    
static szClassName[33]
    
entity_get_string(entityEV_SZ_classnameszClassNamecharsmax(szClassName))
        
    if(!
equal(szClassName"weaponbox"))
        return 
FMRES_IGNORED
    
    
static iOwner
    
    iOwner 
entity_get_edict(entityEV_ENT_owner)
    
    if(
equal(model"models/w_m4a1.mdl"))
    {
        static 
iStoredAugID
        
        iStoredAugID 
find_ent_by_owner(ENG_NULLENT"weapon_m4a1"entity)
    
        if(!
is_valid_ent(iStoredAugID))
            return 
FMRES_IGNORED
    
        
if(g_has_tho4mpson[iOwner])
        {
            
entity_set_int(iStoredAugIDEV_INT_WEAPONKEYtho4mpson_WEAPONKEY)
            
            
g_has_tho4mpson[iOwner] = false
            
            entity_set_model
(entitytho4mpson_W_MODEL)
            
            return 
FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED
}

public 
give_tho4mpson(id)
{
    
drop_weapons(id1)
    new 
iWep2 give_item(id,"weapon_m4a1")
    if( 
iWep2 )
    {
        
cs_set_weapon_ammo(iWep2get_pcvar_num(cvar_clip_tho4mpson))
        
cs_set_user_bpammo (idCSW_M4A1get_pcvar_num(cvar_tho4mpson_ammo))    
        
UTIL_PlayWeaponAnimation(idtho4mpson_DRAW)
        
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)
    }
    
g_has_tho4mpson[id] = true
}

public 
zp_extra_item_selected(iditemid)
{
    if(
itemid != g_itemid_tho4mpson)
        return

    
give_tho4mpson(id)
}

public 
fw_tho4mpson_AddToPlayer(tho4mpsonid)
{
    if(!
is_valid_ent(tho4mpson) || !is_user_connected(id))
        return 
HAM_IGNORED
    
    
if(entity_get_int(tho4mpsonEV_INT_WEAPONKEY) == tho4mpson_WEAPONKEY)
    {
        
g_has_tho4mpson[id] = true
        
        entity_set_int
(tho4mpsonEV_INT_WEAPONKEY0)
    }
    return 
HAM_IGNORED
}

public 
fw_UseStationary_Post(entitycalleractivatoruse_type)
{
    if (
use_type == USE_STOPPED && is_user_connected(caller))
        
replace_weapon_models(callerget_user_weapon(caller))
}

public 
fw_Item_Deploy_Post(weapon_ent)
{
    static 
owner
    owner 
fm_cs_get_weapon_ent_owner(weapon_ent)
    
    static 
weaponid
    weaponid 
cs_get_weapon_id(weapon_ent)
    
    
replace_weapon_models(ownerweaponid)
}

public 
CurrentWeapon(id)
{
     
replace_weapon_models(idread_data(2))

     if(
read_data(2) != CSW_M4A1 || !g_has_tho4mpson[id])
          return
     
     static 
Float:iSpeed
     
if(g_has_tho4mpson[id])
          
iSpeed get_pcvar_float(cvar_spd_tho4mpson)
     
     static 
weapon[32],Ent
     get_weaponname
(read_data(2),weapon,31)
     
Ent find_ent_by_owner(-1,weapon,id)
     if(
Ent)
     {
          static 
Float:Delay
          Delay 
get_pdata_floatEnt464) * iSpeed
          
if (Delay 0.0)
          {
               
set_pdata_float(Ent46Delay4)
          }
     }
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_M4A1:
        {
            if (
zp_get_user_zombie(id) || zp_get_user_survivor(id))
                return
            
            if(
g_has_tho4mpson[id])
            {
                
set_pev(idpev_viewmodel2tho4mpson_V_MODEL)
                
set_pev(idpev_weaponmodel2tho4mpson_P_MODEL)
                if(
oldweap[id] != CSW_M4A1
                {
                    
UTIL_PlayWeaponAnimation(idtho4mpson_DRAW)
                    
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)
                }
            }
        }
    }
    
oldweap[id] = weaponid
}

public 
fw_UpdateClientData_Post(PlayerSendWeaponsCD_Handle)
{
    if(!
is_user_alive(Player) || (get_user_weapon(Player) != CSW_M4A1 || !g_has_tho4mpson[Player]))
        return 
FMRES_IGNORED
    
    set_cd
(CD_HandleCD_flNextAttackhalflife_time () + 0.001)
    return 
FMRES_HANDLED
}

public 
fw_tho4mpson_PrimaryAttack(Weapon)
{
    new 
Player get_pdata_cbase(Weapon414)
    
    if (!
g_has_tho4mpson[Player])
        return
    
    
g_IsInPrimaryAttack 1
    pev
(Player,pev_punchangle,cl_pushangle[Player])
    
    
g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
}

public 
fwPlaybackEvent(flagsinvokereventidFloat:delayFloat:origin[3], Float:angles[3], Float:fparam1Float:fparam2iParam1iParam2bParam1bParam2)
{
    if ((
eventid != g_orig_event_tho4mpson) || !g_IsInPrimaryAttack)
        return 
FMRES_IGNORED
    
if (!(<= invoker <= g_MaxPlayers))
    return 
FMRES_IGNORED

    playback_event
(flags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
    return 
FMRES_SUPERCEDE
}

public 
fw_tho4mpson_PrimaryAttack_Post(Weapon)
{
    
g_IsInPrimaryAttack 0
    
new Player get_pdata_cbase(Weapon414)
    
    new 
szClipszAmmo
    get_user_weapon
(PlayerszClipszAmmo)
    
    if(!
is_user_alive(Player))
        return

    if(
g_has_tho4mpson[Player])
    {
        if (!
g_clip_ammo[Player])
            return

        new 
Float:push[3]
        
pev(Player,pev_punchangle,push)
        
xs_vec_sub(push,cl_pushangle[Player],push)
        
        
xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_tho4mpson),push)
        
xs_vec_add(push,cl_pushangle[Player],push)
        
set_pev(Player,pev_punchangle,push)
        
        
emit_sound(PlayerCHAN_WEAPONFire_Sounds[0], VOL_NORMATTN_NORM0PITCH_NORM)
        
UTIL_PlayWeaponAnimation(Playerrandom_num(tho4mpson_SHOOT1,tho4mpson_SHOOT2))
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if(
get_user_weapon(attacker) == CSW_M4A1)
        {
            if(
g_has_tho4mpson[attacker])
            {
                
SetHamParamFloat(4damage get_pcvar_float(cvar_dmg_tho4mpson))
                
Flame(victim)
            }
        }
    }
}

public 
Flame(id)
{
    new 
origin[3]
    
get_user_origin(idorigin)
    
    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_SPRITE)
    
write_coord(origin[0] + random_num(-55))
    
write_coord(origin[1] + random_num(-55))
    
write_coord(origin[2] + random_num(-1010))
    
write_short(g_Flame_Spr)
    
write_byte(random_num(510))
    
write_byte(200)
    
message_end()
}

public 
message_DeathMsg(msg_idmsg_destid)
{
    static 
szTruncatedWeapon[33], iAttackeriVictim
    
    get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
    
    
iAttacker get_msg_arg_int(1)
    
iVictim get_msg_arg_int(2)
    
    if(!
is_user_connected(iAttacker) || iAttacker == iVictim)
        return 
PLUGIN_CONTINUE
    
    
if(equal(szTruncatedWeapon"m4a1") && get_user_weapon(iAttacker) == CSW_M4A1)
    {
        if(
g_has_tho4mpson[iAttacker])
            
set_msg_arg_string(4"m4a1")
    }
    return 
PLUGIN_CONTINUE
}

stock fm_cs_get_current_weapon_ent(id)
{
    return 
get_pdata_cbase(idOFFSET_ACTIVE_ITEMOFFSET_LINUX)
}

stock fm_cs_get_weapon_ent_owner(ent)
{
    return 
get_pdata_cbase(entOFFSET_WEAPONOWNEROFFSET_LINUX_WEAPONS)
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
    
set_pev(Playerpev_weaponanimSequence)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, .player Player)
    
write_byte(Sequence)
    
write_byte(pev(Playerpev_body))
    
message_end()
}

public 
tho4mpson_ItemPostFrame(weapon_entity
{
     new 
id pev(weapon_entitypev_owner)
     if (!
is_user_connected(id))
          return 
HAM_IGNORED

     
if (!g_has_tho4mpson[id])
          return 
HAM_IGNORED

     
static iClipExtra
     
     iClipExtra 
get_pcvar_num(cvar_clip_tho4mpson)
     new 
Float:flNextAttack get_pdata_float(idm_flNextAttackPLAYER_LINUX_XTRA_OFF)

     new 
iBpAmmo cs_get_user_bpammo(idCSW_M4A1)
     new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF)

     new 
fInReload get_pdata_int(weapon_entitym_fInReloadWEAP_LINUX_XTRA_OFF

     if( 
fInReload && flNextAttack <= 0.0 )
     {
         new 
min(iClipExtra iClipiBpAmmo)
    
         
set_pdata_int(weapon_entitym_iClipiClip jWEAP_LINUX_XTRA_OFF)
         
cs_set_user_bpammo(idCSW_M4A1iBpAmmo-j)
        
         
set_pdata_int(weapon_entitym_fInReload0WEAP_LINUX_XTRA_OFF)
         
fInReload 0
     
}
     return 
HAM_IGNORED
}

public 
tho4mpson_Reload(weapon_entity
{
     new 
id pev(weapon_entitypev_owner)
     if (!
is_user_connected(id))
          return 
HAM_IGNORED

     
if (!g_has_tho4mpson[id])
          return 
HAM_IGNORED

     
static iClipExtra

     
if(g_has_tho4mpson[id])
          
iClipExtra get_pcvar_num(cvar_clip_tho4mpson)

     
g_tho4mpson_TmpClip[id] = -1

     
new iBpAmmo cs_get_user_bpammo(idCSW_M4A1)
     new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF)

     if (
iBpAmmo <= 0)
          return 
HAM_SUPERCEDE

     
if (iClip >= iClipExtra)
          return 
HAM_SUPERCEDE

     g_tho4mpson_TmpClip
[id] = iClip

     
return HAM_IGNORED
}

public 
tho4mpson_Reload_Post(weapon_entity
{
    new 
id pev(weapon_entitypev_owner)
    if (!
is_user_connected(id))
        return 
HAM_IGNORED

    
if (!g_has_tho4mpson[id])
        return 
HAM_IGNORED

    
if (g_tho4mpson_TmpClip[id] == -1)
        return 
HAM_IGNORED

    set_pdata_int
(weapon_entitym_iClipg_tho4mpson_TmpClip[id], WEAP_LINUX_XTRA_OFF)

    
set_pdata_float(weapon_entitym_flTimeWeaponIdletho4mpson_RELOAD_TIMEWEAP_LINUX_XTRA_OFF)

    
set_pdata_float(idm_flNextAttacktho4mpson_RELOAD_TIMEPLAYER_LINUX_XTRA_OFF)

    
set_pdata_int(weapon_entitym_fInReload1WEAP_LINUX_XTRA_OFF)

    
UTIL_PlayWeaponAnimation(idtho4mpson_RELOAD)

    return 
HAM_IGNORED
}

stock drop_weapons(iddropwhat)
{
     static 
weapons[32], numiweaponid
     num 
0
     get_user_weapons
(idweaponsnum)
     
     for (
0numi++)
     {
          
weaponid weapons[i]
          
          if (
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
          {
               static 
wname[32]
               
get_weaponname(weaponidwnamesizeof wname 1)
               
engclient_cmd(id"drop"wname)
          }
     }

If you want to change the color of flame then go to this seaction "public Flame"
PHP Code:
public Flame(id)
{
    new 
origin[3]
    
get_user_origin(idorigin)
    
    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_SPRITE)
    
write_coord(origin[0] + random_num(-55))
    
write_coord(origin[1] + random_num(-55))
    
write_coord(origin[2] + random_num(-1010))
    
write_short(g_Flame_Spr)
    
write_byte(random_num(510))
    
write_byte(200)
    
message_end()

Edit the nembers in those two lines.
Ps: random_num = RGB COLOR
PHP Code:
write_byte(random_num(510))
write_byte(200

Last edited by Supremache; 06-19-2020 at 22:23.
Supremache is offline
mikaelnatan13
Member
Join Date: Apr 2020
Old 06-19-2020 , 23:09   Re: Help Me I ask for a plugin
Reply With Quote #25

Quote:
Originally Posted by Supremache View Post
I did it
PHP Code:
#pragma compress 1

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <xs>
#include <cstrike>
#include <zombieplague>

new g_Flame_Spr

#define ENG_NULLENT            -1
#define EV_INT_WEAPONKEY    EV_INT_impulse
#define tho4mpson_WEAPONKEY     0005
#define MAX_PLAYERS          32
#define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)

const USE_STOPPED 0
const OFFSET_ACTIVE_ITEM 373
const OFFSET_WEAPONOWNER 41
const OFFSET_LINUX 5
const OFFSET_LINUX_WEAPONS 4

#define WEAP_LINUX_XTRA_OFF        4
#define m_fKnown                    44
#define m_flNextPrimaryAttack         46
#define m_flTimeWeaponIdle            48
#define m_iClip                    51
#define m_fInReload                54
#define PLAYER_LINUX_XTRA_OFF    5
#define m_flNextAttack                83

#define tho4mpson_RELOAD_TIME 3.24
#define tho4mpson_SHOOT1        3
#define tho4mpson_SHOOT2        5
#define tho4mpson_RELOAD        1
#define tho4mpson_DRAW        2

#define write_coord_f(%1)    engfunc(EngFunc_WriteCoord,%1)

new const Fire_Sounds[][] = { "Mkod_Md/Buff_Sg552/-1.wav" }

new 
tho4mpson_V_MODEL[64] = "models/Mkod_Md/Scar_Born_Beast/V.mdl"
new tho4mpson_P_MODEL[64] = "models/Mkod_Md/Scar_Born_Beast/Q.mdl"
new tho4mpson_W_MODEL[64] = "models/Mkod_Md/Scar_Born_Beast/Q.mdl"

new const GUNSHOT_DECALS[] = { 4142434445 }

new 
cvar_dmg_tho4mpsoncvar_recoil_tho4mpsong_itemid_tho4mpsoncvar_clip_tho4mpsoncvar_spd_tho4mpsoncvar_tho4mpson_ammo
new g_MaxPlayersg_orig_event_tho4mpsong_IsInPrimaryAttack
new Float:cl_pushangle[MAX_PLAYERS 1][3], m_iBlood[2]
new 
g_has_tho4mpson[33], g_clip_ammo[33], g_tho4mpson_TmpClip[33], oldweap[33]

const 
PRIMARY_WEAPONS_BIT_SUM 
(
1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<
CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
new const 
WEAPONENTNAMES[][] = { """weapon_p228""""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4""weapon_mac10",
            
"weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550",
            
"weapon_galil""weapon_famas""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
            
"weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle""weapon_sg552",
            
"weapon_ak47""weapon_knife""weapon_p90" }

public 
plugin_init()
{
    
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
RegisterHam(Ham_Item_AddToPlayer"weapon_m4a1""fw_tho4mpson_AddToPlayer")
    
RegisterHam(Ham_Use"func_tank""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tankmortar""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tankrocket""fw_UseStationary_Post"1)
    
RegisterHam(Ham_Use"func_tanklaser""fw_UseStationary_Post"1)
    for (new 
1sizeof WEAPONENTNAMESi++)
    if (
WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_m4a1""fw_tho4mpson_PrimaryAttack")
    
RegisterHam(Ham_Weapon_PrimaryAttack"weapon_m4a1""fw_tho4mpson_PrimaryAttack_Post"1)
    
RegisterHam(Ham_Item_PostFrame"weapon_m4a1""tho4mpson_ItemPostFrame")
    
RegisterHam(Ham_Weapon_Reload"weapon_m4a1""tho4mpson_Reload")
    
RegisterHam(Ham_Weapon_Reload"weapon_m4a1""tho4mpson_Reload_Post"1)
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
register_forward(FM_SetModel"fw_SetModel")
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
register_forward(FM_PlaybackEvent"fwPlaybackEvent")
    
    
RegisterHam(Ham_TraceAttack"worldspawn""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_breakable""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_wall""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_door""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_door_rotating""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_plat""fw_TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"func_rotating""fw_TraceAttack"1)

    
cvar_dmg_tho4mpson register_cvar("zp_tho4mpson_dmg""2.30")
    
cvar_recoil_tho4mpson register_cvar("zp_tho4mpson_recoil""1.0")
    
cvar_clip_tho4mpson register_cvar("zp_tho4mpson_clip""50")
    
cvar_spd_tho4mpson register_cvar("zp_tho4mpson_spd""0.93")
    
cvar_tho4mpson_ammo register_cvar("zp_tho4mpson_ammo""200")
    
    
g_itemid_tho4mpson zp_register_extra_item("Scar Born Beast"30ZP_TEAM_HUMAN)
    
g_MaxPlayers get_maxplayers()
}

public 
plugin_precache()
{
    
precache_model(tho4mpson_V_MODEL)
    
precache_model(tho4mpson_P_MODEL)
    
precache_model(tho4mpson_W_MODEL)
    for(new 
0sizeof Fire_Soundsi++)
    
precache_sound(Fire_Sounds[i])    
    
m_iBlood[0] = precache_model("sprites/blood.spr")
    
m_iBlood[1] = precache_model("sprites/bloodspray.spr")

    
g_Flame_Spr precache_model("sprites/Mkod_Md/Scar_Born_Beast/Flame.spr")

    
register_forward(FM_PrecacheEvent"fwPrecacheEvent_Post"1)
}

public 
fw_TraceAttack(iEntiAttackerFloat:flDamageFloat:fDir[3], ptriDamageType)
{
    if(!
is_user_alive(iAttacker))
        return

    new 
g_currentweapon get_user_weapon(iAttacker)

    if(
g_currentweapon != CSW_M4A1) return
    
    if(!
g_has_tho4mpson[iAttacker]) return

    static 
Float:flEnd[3]
    
get_tr2(ptrTR_vecEndPosflEnd)
    
    if(
iEnt)
    {
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_DECAL)
        
write_coord_f(flEnd[0])
        
write_coord_f(flEnd[1])
        
write_coord_f(flEnd[2])
        
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
        
write_short(iEnt)
        
message_end()
    }
    else
    {
        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
write_byte(TE_WORLDDECAL)
        
write_coord_f(flEnd[0])
        
write_coord_f(flEnd[1])
        
write_coord_f(flEnd[2])
        
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
        
message_end()
    }
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_GUNSHOTDECAL)
    
write_coord_f(flEnd[0])
    
write_coord_f(flEnd[1])
    
write_coord_f(flEnd[2])
    
write_short(iAttacker)
    
write_byte(GUNSHOT_DECALS[random_num (0sizeof GUNSHOT_DECALS -1)])
    
message_end()
}

public 
zp_user_humanized_post(id)
{
    
g_has_tho4mpson[id] = false
}

public 
plugin_natives ()
{
    
register_native("Scar_Born_Beast""native_give_weapon_add"1)
}
public 
native_give_weapon_add(id)
{
    
give_tho4mpson(id)
}

public 
fwPrecacheEvent_Post(type, const name[])
{
    if (
equal("events/m4a1.sc"name))
    {
        
g_orig_event_tho4mpson get_orig_retval()
        return 
FMRES_HANDLED
    
}
    return 
FMRES_IGNORED
}

public 
client_connect(id)
{
    
g_has_tho4mpson[id] = false
}

public 
client_disconnect(id)
{
    
g_has_tho4mpson[id] = false
}

public 
zp_user_infected_post(id)
{
    if (
zp_get_user_zombie(id))
    {
        
g_has_tho4mpson[id] = false
    
}
}

public 
fw_SetModel(entitymodel[])
{
    if(!
is_valid_ent(entity))
        return 
FMRES_IGNORED
    
    
static szClassName[33]
    
entity_get_string(entityEV_SZ_classnameszClassNamecharsmax(szClassName))
        
    if(!
equal(szClassName"weaponbox"))
        return 
FMRES_IGNORED
    
    
static iOwner
    
    iOwner 
entity_get_edict(entityEV_ENT_owner)
    
    if(
equal(model"models/w_m4a1.mdl"))
    {
        static 
iStoredAugID
        
        iStoredAugID 
find_ent_by_owner(ENG_NULLENT"weapon_m4a1"entity)
    
        if(!
is_valid_ent(iStoredAugID))
            return 
FMRES_IGNORED
    
        
if(g_has_tho4mpson[iOwner])
        {
            
entity_set_int(iStoredAugIDEV_INT_WEAPONKEYtho4mpson_WEAPONKEY)
            
            
g_has_tho4mpson[iOwner] = false
            
            entity_set_model
(entitytho4mpson_W_MODEL)
            
            return 
FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED
}

public 
give_tho4mpson(id)
{
    
drop_weapons(id1)
    new 
iWep2 give_item(id,"weapon_m4a1")
    if( 
iWep2 )
    {
        
cs_set_weapon_ammo(iWep2get_pcvar_num(cvar_clip_tho4mpson))
        
cs_set_user_bpammo (idCSW_M4A1get_pcvar_num(cvar_tho4mpson_ammo))    
        
UTIL_PlayWeaponAnimation(idtho4mpson_DRAW)
        
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)
    }
    
g_has_tho4mpson[id] = true
}

public 
zp_extra_item_selected(iditemid)
{
    if(
itemid != g_itemid_tho4mpson)
        return

    
give_tho4mpson(id)
}

public 
fw_tho4mpson_AddToPlayer(tho4mpsonid)
{
    if(!
is_valid_ent(tho4mpson) || !is_user_connected(id))
        return 
HAM_IGNORED
    
    
if(entity_get_int(tho4mpsonEV_INT_WEAPONKEY) == tho4mpson_WEAPONKEY)
    {
        
g_has_tho4mpson[id] = true
        
        entity_set_int
(tho4mpsonEV_INT_WEAPONKEY0)
    }
    return 
HAM_IGNORED
}

public 
fw_UseStationary_Post(entitycalleractivatoruse_type)
{
    if (
use_type == USE_STOPPED && is_user_connected(caller))
        
replace_weapon_models(callerget_user_weapon(caller))
}

public 
fw_Item_Deploy_Post(weapon_ent)
{
    static 
owner
    owner 
fm_cs_get_weapon_ent_owner(weapon_ent)
    
    static 
weaponid
    weaponid 
cs_get_weapon_id(weapon_ent)
    
    
replace_weapon_models(ownerweaponid)
}

public 
CurrentWeapon(id)
{
     
replace_weapon_models(idread_data(2))

     if(
read_data(2) != CSW_M4A1 || !g_has_tho4mpson[id])
          return
     
     static 
Float:iSpeed
     
if(g_has_tho4mpson[id])
          
iSpeed get_pcvar_float(cvar_spd_tho4mpson)
     
     static 
weapon[32],Ent
     get_weaponname
(read_data(2),weapon,31)
     
Ent find_ent_by_owner(-1,weapon,id)
     if(
Ent)
     {
          static 
Float:Delay
          Delay 
get_pdata_floatEnt464) * iSpeed
          
if (Delay 0.0)
          {
               
set_pdata_float(Ent46Delay4)
          }
     }
}

replace_weapon_models(idweaponid)
{
    switch (
weaponid)
    {
        case 
CSW_M4A1:
        {
            if (
zp_get_user_zombie(id) || zp_get_user_survivor(id))
                return
            
            if(
g_has_tho4mpson[id])
            {
                
set_pev(idpev_viewmodel2tho4mpson_V_MODEL)
                
set_pev(idpev_weaponmodel2tho4mpson_P_MODEL)
                if(
oldweap[id] != CSW_M4A1
                {
                    
UTIL_PlayWeaponAnimation(idtho4mpson_DRAW)
                    
set_pdata_float(idm_flNextAttack1.0PLAYER_LINUX_XTRA_OFF)
                }
            }
        }
    }
    
oldweap[id] = weaponid
}

public 
fw_UpdateClientData_Post(PlayerSendWeaponsCD_Handle)
{
    if(!
is_user_alive(Player) || (get_user_weapon(Player) != CSW_M4A1 || !g_has_tho4mpson[Player]))
        return 
FMRES_IGNORED
    
    set_cd
(CD_HandleCD_flNextAttackhalflife_time () + 0.001)
    return 
FMRES_HANDLED
}

public 
fw_tho4mpson_PrimaryAttack(Weapon)
{
    new 
Player get_pdata_cbase(Weapon414)
    
    if (!
g_has_tho4mpson[Player])
        return
    
    
g_IsInPrimaryAttack 1
    pev
(Player,pev_punchangle,cl_pushangle[Player])
    
    
g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon)
}

public 
fwPlaybackEvent(flagsinvokereventidFloat:delayFloat:origin[3], Float:angles[3], Float:fparam1Float:fparam2iParam1iParam2bParam1bParam2)
{
    if ((
eventid != g_orig_event_tho4mpson) || !g_IsInPrimaryAttack)
        return 
FMRES_IGNORED
    
if (!(<= invoker <= g_MaxPlayers))
    return 
FMRES_IGNORED

    playback_event
(flags FEV_HOSTONLYinvokereventiddelayoriginanglesfparam1fparam2iParam1iParam2bParam1bParam2)
    return 
FMRES_SUPERCEDE
}

public 
fw_tho4mpson_PrimaryAttack_Post(Weapon)
{
    
g_IsInPrimaryAttack 0
    
new Player get_pdata_cbase(Weapon414)
    
    new 
szClipszAmmo
    get_user_weapon
(PlayerszClipszAmmo)
    
    if(!
is_user_alive(Player))
        return

    if(
g_has_tho4mpson[Player])
    {
        if (!
g_clip_ammo[Player])
            return

        new 
Float:push[3]
        
pev(Player,pev_punchangle,push)
        
xs_vec_sub(push,cl_pushangle[Player],push)
        
        
xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_tho4mpson),push)
        
xs_vec_add(push,cl_pushangle[Player],push)
        
set_pev(Player,pev_punchangle,push)
        
        
emit_sound(PlayerCHAN_WEAPONFire_Sounds[0], VOL_NORMATTN_NORM0PITCH_NORM)
        
UTIL_PlayWeaponAnimation(Playerrandom_num(tho4mpson_SHOOT1,tho4mpson_SHOOT2))
    }
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if(
get_user_weapon(attacker) == CSW_M4A1)
        {
            if(
g_has_tho4mpson[attacker])
            {
                
SetHamParamFloat(4damage get_pcvar_float(cvar_dmg_tho4mpson))
                
Flame(victim)
            }
        }
    }
}

public 
Flame(id)
{
    new 
origin[3]
    
get_user_origin(idorigin)
    
    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_SPRITE)
    
write_coord(origin[0] + random_num(-55))
    
write_coord(origin[1] + random_num(-55))
    
write_coord(origin[2] + random_num(-1010))
    
write_short(g_Flame_Spr)
    
write_byte(random_num(510))
    
write_byte(200)
    
message_end()
}

public 
message_DeathMsg(msg_idmsg_destid)
{
    static 
szTruncatedWeapon[33], iAttackeriVictim
    
    get_msg_arg_string
(4szTruncatedWeaponcharsmax(szTruncatedWeapon))
    
    
iAttacker get_msg_arg_int(1)
    
iVictim get_msg_arg_int(2)
    
    if(!
is_user_connected(iAttacker) || iAttacker == iVictim)
        return 
PLUGIN_CONTINUE
    
    
if(equal(szTruncatedWeapon"m4a1") && get_user_weapon(iAttacker) == CSW_M4A1)
    {
        if(
g_has_tho4mpson[iAttacker])
            
set_msg_arg_string(4"m4a1")
    }
    return 
PLUGIN_CONTINUE
}

stock fm_cs_get_current_weapon_ent(id)
{
    return 
get_pdata_cbase(idOFFSET_ACTIVE_ITEMOFFSET_LINUX)
}

stock fm_cs_get_weapon_ent_owner(ent)
{
    return 
get_pdata_cbase(entOFFSET_WEAPONOWNEROFFSET_LINUX_WEAPONS)
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
    
set_pev(Playerpev_weaponanimSequence)
    
    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM, .player Player)
    
write_byte(Sequence)
    
write_byte(pev(Playerpev_body))
    
message_end()
}

public 
tho4mpson_ItemPostFrame(weapon_entity
{
     new 
id pev(weapon_entitypev_owner)
     if (!
is_user_connected(id))
          return 
HAM_IGNORED

     
if (!g_has_tho4mpson[id])
          return 
HAM_IGNORED

     
static iClipExtra
     
     iClipExtra 
get_pcvar_num(cvar_clip_tho4mpson)
     new 
Float:flNextAttack get_pdata_float(idm_flNextAttackPLAYER_LINUX_XTRA_OFF)

     new 
iBpAmmo cs_get_user_bpammo(idCSW_M4A1)
     new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF)

     new 
fInReload get_pdata_int(weapon_entitym_fInReloadWEAP_LINUX_XTRA_OFF

     if( 
fInReload && flNextAttack <= 0.0 )
     {
         new 
min(iClipExtra iClipiBpAmmo)
    
         
set_pdata_int(weapon_entitym_iClipiClip jWEAP_LINUX_XTRA_OFF)
         
cs_set_user_bpammo(idCSW_M4A1iBpAmmo-j)
        
         
set_pdata_int(weapon_entitym_fInReload0WEAP_LINUX_XTRA_OFF)
         
fInReload 0
     
}
     return 
HAM_IGNORED
}

public 
tho4mpson_Reload(weapon_entity
{
     new 
id pev(weapon_entitypev_owner)
     if (!
is_user_connected(id))
          return 
HAM_IGNORED

     
if (!g_has_tho4mpson[id])
          return 
HAM_IGNORED

     
static iClipExtra

     
if(g_has_tho4mpson[id])
          
iClipExtra get_pcvar_num(cvar_clip_tho4mpson)

     
g_tho4mpson_TmpClip[id] = -1

     
new iBpAmmo cs_get_user_bpammo(idCSW_M4A1)
     new 
iClip get_pdata_int(weapon_entitym_iClipWEAP_LINUX_XTRA_OFF)

     if (
iBpAmmo <= 0)
          return 
HAM_SUPERCEDE

     
if (iClip >= iClipExtra)
          return 
HAM_SUPERCEDE

     g_tho4mpson_TmpClip
[id] = iClip

     
return HAM_IGNORED
}

public 
tho4mpson_Reload_Post(weapon_entity
{
    new 
id pev(weapon_entitypev_owner)
    if (!
is_user_connected(id))
        return 
HAM_IGNORED

    
if (!g_has_tho4mpson[id])
        return 
HAM_IGNORED

    
if (g_tho4mpson_TmpClip[id] == -1)
        return 
HAM_IGNORED

    set_pdata_int
(weapon_entitym_iClipg_tho4mpson_TmpClip[id], WEAP_LINUX_XTRA_OFF)

    
set_pdata_float(weapon_entitym_flTimeWeaponIdletho4mpson_RELOAD_TIMEWEAP_LINUX_XTRA_OFF)

    
set_pdata_float(idm_flNextAttacktho4mpson_RELOAD_TIMEPLAYER_LINUX_XTRA_OFF)

    
set_pdata_int(weapon_entitym_fInReload1WEAP_LINUX_XTRA_OFF)

    
UTIL_PlayWeaponAnimation(idtho4mpson_RELOAD)

    return 
HAM_IGNORED
}

stock drop_weapons(iddropwhat)
{
     static 
weapons[32], numiweaponid
     num 
0
     get_user_weapons
(idweaponsnum)
     
     for (
0numi++)
     {
          
weaponid weapons[i]
          
          if (
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
          {
               static 
wname[32]
               
get_weaponname(weaponidwnamesizeof wname 1)
               
engclient_cmd(id"drop"wname)
          }
     }

If you want to change the color of flame then go to this seaction "public Flame"
PHP Code:
public Flame(id)
{
    new 
origin[3]
    
get_user_origin(idorigin)
    
    
message_begin(MSG_PVSSVC_TEMPENTITYorigin)
    
write_byte(TE_SPRITE)
    
write_coord(origin[0] + random_num(-55))
    
write_coord(origin[1] + random_num(-55))
    
write_coord(origin[2] + random_num(-1010))
    
write_short(g_Flame_Spr)
    
write_byte(random_num(510))
    
write_byte(200)
    
message_end()

Edit the nembers in those two lines.
Ps: random_num = RGB COLOR
PHP Code:
write_byte(random_num(510))
write_byte(200

is having some bugs
https://youtu.be/Fx99UmEkeTE
mikaelnatan13 is offline
Supremache
Veteran Member
Join Date: Sep 2019
Location: Egypt
Old 06-20-2020 , 03:35   Re: Help Me I ask for a plugin
Reply With Quote #26

Quote:
Originally Posted by mikaelnatan13 View Post
is having some bugs
https://youtu.be/Fx99UmEkeTE
There's no bugs but i think this plugin like "[zp] first m4a1" effects not working idk why but i think those weapon are enabled on some mods, try the orignal plugin and you will get the samething..
Supremache is offline
Old 06-20-2020, 16:26
mikaelnatan13
This message has been deleted by mikaelnatan13.
mikaelnatan13
Member
Join Date: Apr 2020
Old 06-20-2020 , 16:36   Re: Help Me I ask for a plugin
Reply With Quote #27

there would be no way to replace the frost m4a1 script with this weapon, then frost would set fire instead of freezing

PHP Code:
#include <amxmodx>
#include <zombieplague>
#include <dhudmessage>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>
#include <zmvip>
#include <engine>
#include <fun>

#define write_coord_fl(%1) engfunc(EngFunc_WriteCoord, %1)
#define message_begin_fl(%1,%2,%3,%4) engfunc(EngFunc_MessageBegin, %1, %2, %3, %4)

new Ham:Ham_Player_ResetMaxSpeed Ham_Item_PreFrame

new const V_M4A1_MODEL[] = "models/zombie_plague/v_frost_m4a1.mdl"
new const P_M4A1_MODEL[] = "models/zombie_plague/p_frost_m4a1.mdl"
new const W_M4A1_MODEL[]    = "models/zombie_plague/w_frost_m4a1.mdl"
new const W_OLD_M4A1_MODEL[]    = "models/w_m4a1.mdl"
new const ICE_MODEL[] = "models/zombie_plague/icecube_frozen.mdl"
new const MODEL_GLASSGIBS[]    = "models/glassgibs.mdl"
new const SOUND_UNFROZEN[]    = "debris/glass3.wav"

enum _:Sprites
{
    
SPRITE_FROST,
    
SPRITE_FROST2,
    
SPRITE_FLAKE
}

new 
g_iSprites[Sprites]

new 
g_iItemIDg_iM4A1FrostSprg_iMsgScreenFadeg_iMaxPlayersg_iHudSyncg_iSpriteLaserg_iGlassGibsg_iFreezeDmgg_fFrostTimeg_iDmgMultiplierg_iStatusIcon
new bool:g_bHasFrostM4A1[33], g_bIsFrozen[33]
new 
g_iDmg[33]

public 
plugin_init()
{
    
register_plugin("[ZP] Extra Item: Frost M4A1""1.4""Raheem")
    
    
// Cvars
    
g_fFrostTime register_cvar("zp_frost_m4a1_time""7.0"// Freeze Time. It's Float you can make it 0.5
    
g_iFreezeDmg register_cvar("zp_freezing_m4a1_damage""2000"// Damage Requried So Zombie got Frozen
    
g_iDmgMultiplier register_cvar("zp_multiplier_m4a1_damage""2"// Multiplie Weapon Damage

    // Message IDS
    
g_iHudSync CreateHudSyncObj()
    
g_iMsgScreenFade get_user_msgid("ScreenFade")
    
g_iStatusIcon get_user_msgid("StatusIcon")

    
// Server Max Slots
    
g_iMaxPlayers get_maxplayers()
    
    
// ITEM NAME & COST
    
g_iItemID =  zp_register_extra_item("Frost M4A1"30ZV_TEAM_HUMAN// It's cost 30 Ammo Pack
    
    // Events
    
register_event("HLTV""event_round_start""a""1=0""2=0")
    
register_event("WeapPickup","CheckModel","b","1=19")
    
register_event("CurWeapon","CurrentWeapon","be","1=1")
    
register_event("DeathMsg""EventDeathMsg""a")
    
    
// Forwards
    
register_forward(FM_PlayerPreThink"fw_PlayerPreThink")
    
register_forward(FM_SetModel"fw_SetModel")
    
    
// Hams
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
    
RegisterHam(Ham_TraceAttack"player""TraceAttack"1)
    
RegisterHam(Ham_TraceAttack"worldspawn""TraceAttack"1)
    
RegisterHam(Ham_Item_AddToPlayer"weapon_m4a1""fw_FrostM4A1AddToPlayer")
}

public 
plugin_precache() 
{
    
// Models
    
precache_model(V_M4A1_MODEL)
    
precache_model(P_M4A1_MODEL)
    
precache_model(W_M4A1_MODEL)
    
precache_model(ICE_MODEL)
    
g_iGlassGibs precache_model(MODEL_GLASSGIBS)
    
    
// Sounds
    
precache_sound("warcraft3/impalehit.wav")
    
precache_sound(SOUND_UNFROZEN)
    
    
// Sprites
    
g_iM4A1FrostSpr precache_model("sprites/shockwave.spr")
    
g_iSpriteLaser precache_model"sprites/Newlightning.spr")
    
g_iSprites[SPRITE_FROST] = precache_model("sprites/frostexp_1.spr");
    
g_iSprites[SPRITE_FROST2] = precache_model("sprites/frostexp_2.spr");
    
g_iSprites[SPRITE_FLAKE] = precache_model("sprites/snowflake_1.spr");
}

public 
client_putinserver(id)
{
    
g_bHasFrostM4A1[id] = false
    g_bIsFrozen
[id] = false
}

public 
client_disconnect(id)
{
    
g_bHasFrostM4A1[id] = false
    g_bIsFrozen
[id] = false
    RemoveEntity
(id)
}

public 
zv_extra_item_selected(playeritemid)
{
    if (
itemid == g_iItemID
    {
        
g_bHasFrostM4A1[player] = true
        ham_strip_weapon
(player"weapon_m4a1")
        
give_item(player"weapon_m4a1")
        
cs_set_user_bpammo(playerCSW_M4A190)
        new 
sName[32]
        
get_user_name(playersName31)
        
set_hudmessage(random(255), random(255), random(255), -1.00.1710.05.01.01.0, -1)
        
show_hudmessage(0"%s Has bought Frost M4A1!"sName)
        
ColorPrint(player"^1[^4ZP^1] ^3You Have bought Frost M4A1^1!")
    }
}

public 
TraceAttack(iEntiAttackerFloat:flDamageFloat:fDir[3], ptriDamageType)
{
    if(!
is_user_alive(iAttacker))
        return 
    
    if(
get_user_weapon(iAttacker) != CSW_M4A1 || !g_bHasFrostM4A1[iAttacker])
        return
    
    
set_hudmessage(34138255, -1.00.1710.02.01.01.0, -1)
    
ShowSyncHudMsg(iAttackerg_iHudSync"Freeze Damage^n%d/%d"g_iDmg[iAttacker], get_pcvar_num(g_iFreezeDmg))
    
    new 
vec1[3], vec2[3]
    
get_user_origin(iAttackervec11
    
get_user_origin(iAttackervec24)

    
make_beam(vec1vec2g_iSpriteLaser050200200)
}

public 
zp_user_infected_post(infectedinfector)
{
    if (
g_bHasFrostM4A1[infected])
    {
        
g_bHasFrostM4A1[infected] = false
    
}
}

public 
zp_user_humanized_post(id)
{
    
g_bHasFrostM4A1[id] = false
    g_iDmg
[id] = 0
    RemoveEntity
(id)
}

public 
event_round_start()
{
    for (new 
1<= g_iMaxPlayersi++)
    {
        
g_bHasFrostM4A1[i] = false
        g_bIsFrozen
[i] = false
        g_iDmg
[i] = 0
        
        
if(is_user_alive(i))
        {
            
Remove_Rendering(i)
        }
    }
}

public 
EventDeathMsg()
{
    new 
iVictim read_data(2)
    
RemoveEntity(iVictim)
    
Remove_Rendering(iVictim)
    
g_bIsFrozen[iVictim] = false
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
{
    if(!
is_user_connected(victim) || !is_user_connected(attacker) || zp_get_user_nemesis(victim) || attacker == victim || !attacker)
        return 
HAM_IGNORED

    
if(g_bIsFrozen[victim])
        return 
HAM_SUPERCEDE

    
if(g_bHasFrostM4A1[attacker] && (get_user_weapon(attacker) == CSW_M4A1))
        
SetHamParamFloat(4damage get_pcvar_num(g_iDmgMultiplier))
    
    
// For Frost Effect Ring
    
static Float:originF[3]
    
pev(victimpev_originoriginF)
    
    
// For Frost Effect Sound
    
static originF2[3
    
get_user_origin(victimoriginF2)
    
    if((
get_user_weapon(attacker) == CSW_M4A1) && g_bHasFrostM4A1[attacker])
    {
        
g_iDmg[attacker] += (floatround(damage) * get_pcvar_num(g_iDmgMultiplier))
    }
    
    if((
g_iDmg[attacker] >= get_pcvar_num(g_iFreezeDmg)) && (get_user_weapon(attacker) == CSW_M4A1) && g_bHasFrostM4A1[attacker])
    {
        new 
sName[32]
        
get_user_name(victimsNamecharsmax(sName))
        
FrostEffect(victim)
        
FrostEffectRing(originF)
        
FrostEffectSound(originF2)
        
g_iDmg[attacker] = 0
        set_dhudmessage
(34138255, -1.00.2526.03.00.11.5)
        
show_dhudmessage(attacker"%s Has been Freezed!"sName)
    }
    return 
HAM_IGNORED
}

public 
CheckModel(id)
{
    if(
zp_get_user_survivor(id))
        return 
PLUGIN_HANDLED
    
    
if (is_user_alive(id))
    {
        
set_pev(idpev_viewmodel2V_M4A1_MODEL)
        
set_pev(idpev_weaponmodel2P_M4A1_MODEL)
    }
    return 
PLUGIN_HANDLED
}

public 
CurrentWeapon(id)
{
    if ((
get_user_weapon(id) == CSW_M4A1) && g_bHasFrostM4A1[id] == true)
    {
        
CheckModel(id)
    }
    else
    {
        
ClearSyncHud(idg_iHudSync)
    }
    return 
PLUGIN_HANDLED
}

public 
FrostEffect(id)
{
    
// Only effect alive unfrozen zombies
    
if (!is_user_alive(id) || !zp_get_user_zombie(id) || g_bIsFrozen[id])
        return
    
    
message_begin(MSG_ONE_UNRELIABLEg_iMsgScreenFade_id)
    
write_short(4096*1// duration
    
write_short(4096*1// hold time
    
write_short(0x0000// fade type
    
write_byte(0// red
    
write_byte(50// green
    
write_byte(200// blue
    
write_byte(100// alpha
    
message_end()

    
message_begin(MSG_ONEg_iStatusIcon, {0,0,0}, id)
    
write_byte(1// Status [0=Hide, 1=Show, 2=Flash]
    
write_string("dmg_cold"// Sprite Name
    
write_byte(000// Red
    
write_byte(206// Green
    
write_byte(209// Blue
    
message_end()
    
    new 
ent create_entity("info_target")
    
    
UTIL_Explosion(idg_iSprites[SPRITE_FROST], 40304)
    
UTIL_Explosion(idg_iSprites[SPRITE_FROST2], 20304)
    
UTIL_SpriteTrail(idg_iSprites[SPRITE_FLAKE], 3032300)
    
    new 
Float:iOrigin[3]
    
entity_get_vector(idEV_VEC_originiOrigin)
    
set_pev(entpev_body1)
    
entity_set_model(entICE_MODEL)
    
iOrigin[2] -= 35
    entity_set_origin
(entiOrigin)
    
set_pev(entpev_ownerid)
    
set_rendering(entkRenderFxNone255255255kRenderTransAdd255)
    
entity_set_string(entEV_SZ_classname"ent_frozen")
    
entity_set_int(entEV_INT_solid2)
    new 
FloatiOriginNew[3]
    
entity_get_vector(idEV_VEC_originiOriginNew)
    
set_user_rendering(idkRenderFxGlowShell0100200kRenderNormal25)
    
g_bIsFrozen[id] = true
    set_task
(get_pcvar_float(g_fFrostTime), "RemoveFrost"id// Time to Remove Frost Effect 
}

public 
fw_PlayerPreThink(id)
{
    
// Not alive or Not Zombie
    
if (!is_user_alive(id) || !g_bIsFrozen[id])
        return

    
// Stop motion
    
set_pev(idpev_velocityFloat:{0.0,0.0,0.0})
    
set_user_maxspeed(id1.0)
    
    
// Stop Moving Mouse
    
set_pev(id pev_v_angle Float:{0.0,0.0,0.0})
    
set_pev(id pev_fixangle 1)
}

// Frost Effect Sound
public FrostEffectSound(iOrigin[3])
{
    new 
Entity create_entity("info_target")

    new 
Float:flOrigin[3]
    
IVecFVec(iOriginflOrigin)
    
entity_set_origin(EntityflOrigin)
    
emit_sound(EntityCHAN_WEAPON"warcraft3/impalehit.wav"VOL_NORMATTN_NORM0PITCH_NORM)
    
remove_entity(Entity)
}

UTIL_Explosion(iEntiSpriteiScaleiFramerateFlags)
{
    new 
Float:vOrigin[3]
    
pev(iEntpev_originvOrigin)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordvOrigin[0])
    
engfunc(EngFunc_WriteCoordvOrigin[1])
    
engfunc(EngFunc_WriteCoordvOrigin[2])
    
write_short(iSprite)
    
write_byte(iScale)
    
write_byte(iFramerate)
    
write_byte(Flags)
    
message_end()
}

UTIL_SpriteTrail(iEntiSpriteiCountiLifeiScaleiVelocityiVary)
{
    new 
Float:vOrigin[3]
    
pev(iEntpev_originvOrigin)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_SPRITETRAIL)
    
engfunc(EngFunc_WriteCoordvOrigin[0])
    
engfunc(EngFunc_WriteCoordvOrigin[1])
    
engfunc(EngFunc_WriteCoordvOrigin[2] + 100)
    
engfunc(EngFunc_WriteCoordvOrigin[0] + random_float( -200.0200.0 ))
    
engfunc(EngFunc_WriteCoordvOrigin[1] + random_float( -200.0200.0 ))
    
engfunc(EngFunc_WriteCoordvOrigin[2])
    
write_short(iSprite)
    
write_byte(iCount)
    
write_byte(iLife)
    
write_byte(iScale)
    
write_byte(iVelocity)
    
write_byte(iVary)
    
message_end()
}

// Frost Effect Ring
FrostEffectRing(const Float:originF3[3])
{
    
// Largest ring
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF30)
    
write_byte(TE_BEAMCYLINDER// TE id
    
engfunc(EngFunc_WriteCoordoriginF3[0]) // x
    
engfunc(EngFunc_WriteCoordoriginF3[1]) // y
    
engfunc(EngFunc_WriteCoordoriginF3[2]) // z
    
engfunc(EngFunc_WriteCoordoriginF3[0]) // x axis
    
engfunc(EngFunc_WriteCoordoriginF3[1]) // y axis
    
engfunc(EngFunc_WriteCoordoriginF3[2]+100.0// z axis
    
write_short(g_iM4A1FrostSpr// sprite
    
write_byte(0// startframe
    
write_byte(0// framerate
    
write_byte(4// life
    
write_byte(60// width
    
write_byte(0// noise
    
write_byte(41// red
    
write_byte(138// green
    
write_byte(255// blue
    
write_byte(200// brightness
    
write_byte(0// speed
    
message_end()
}

// Remove Frost Effect
public RemoveFrost(id)
{
    
// Not alive or not frozen anymore
    
if (!is_user_alive(id) || !g_bIsFrozen[id])
        return
    
    
// Unfreeze
    
g_bIsFrozen[id] = false;
    
set_task(0.1"remove_jibs"id)

    
// Rest Player Speed
    
ExecuteHamB(Ham_Player_ResetMaxSpeedid)
    
    
Remove_Rendering(id)
    
RemoveStatusIcon(id)
}

public 
remove_jibs(id)
{
    
RemoveEntity(id)
    
    new 
Float:origin[3]
    
pev(id,pev_origin,origin)
    
    
message_begin_fl(MSG_PVS,SVC_TEMPENTITY,origin,0)
    
write_byte(TE_IMPLOSION)
    
write_coord_fl(origin[0]) // x
    
write_coord_fl(origin[1]) // y
    
write_coord_fl(origin[2] + 8.0// z
    
write_byte(64// radius
    
write_byte(10// count
    
write_byte(3// duration
    
message_end()
    
    
message_begin_fl(MSG_PVS,SVC_TEMPENTITY,origin,0)
    
write_byte(TE_SPARKS)
    
write_coord_fl(origin[0]) // x
    
write_coord_fl(origin[1]) // y
    
write_coord_fl(origin[2]) // z
    
message_end()
    
    
message_begin_fl(MSG_PAS,SVC_TEMPENTITY,origin,0)
    
write_byte(TE_BREAKMODEL)
    
write_coord_fl(origin[0]) // x
    
write_coord_fl(origin[1]) // y
    
write_coord_fl(origin[2] + 24.0// z
    
write_coord_fl(16.0// size x
    
write_coord_fl(16.0// size y
    
write_coord_fl(16.0// size z
    
write_coord(random_num(-50,50)) // velocity x
    
write_coord(random_num(-50,50)) // velocity y
    
write_coord_fl(25.0// velocity z
    
write_byte(10// random velocity
    
write_short(g_iGlassGibs// model
    
write_byte(10// count
    
write_byte(25// life
    
write_byte(0x01// flags
    
message_end()
    
    
emit_sound(0,CHAN_ITEM,SOUND_UNFROZEN,VOL_NORM,ATTN_NORM,0,PITCH_LOW)
}

stock ColorPrint(const id, const input[], any: ...)
{
    new 
count 1players[32]
    static 
msg[192]
    
vformat(msg191input3)
    
    
replace_all(msg191"!g""^4")
    
replace_all(msg191"!y""^1")
    
replace_all(msg191"!t""^3")
    
replace_all(msg191"!t2""^0")
    
    if (
idplayers[0] = id;else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connectedplayers[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                
write_byte(players[i])
                
write_string(msg)
                
message_end()
            }
        }
    }
}

stock ham_strip_weapon(id,weapon[])
{
    if(!
equal(weapon,"weapon_",7)) return 0

    
new wId get_weaponid(weapon)
    if(!
wId) return 0

    
new wEnt
    
while((wEnt engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
    if(!
wEnt) return 0

    
if(get_user_weapon(id) == wIdExecuteHamB(Ham_Weapon_RetireWeapon,wEnt)

    if(!
ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0
    ExecuteHamB
(Ham_Item_Kill,wEnt)

    
set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId))

    return 
1
}

make_beam(const origin2[3], const origin[3], spriteredgreenbluealpha)
{
    
//BEAMENTPOINTS
    
message_beginMSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte (0//TE_BEAMENTPOINTS 0
    
write_coord(origin2[0])
    
write_coord(origin2[1])
    
write_coord(origin2[2])
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2])
    
write_short(sprite// sprite
    
write_byte(1// framestart
    
write_byte(5// framerate
    
write_byte(2// life
    
write_byte(20// width
    
write_byte(0// noise 
    
write_byte(red// r, g, b
    
write_byte(green// r, g, b 
    
write_byte(blue// r, g, b 
    
write_byte(alpha// brightness
    
write_byte(150// speed
    
message_end()
}

public 
RemoveStatusIcon(id)
{
    
// Remove Status Icon
    
message_begin(MSG_ONEg_iStatusIcon, {0,0,0}, id)
    
write_byte(0// Status [0=Hide, 1=Show, 2=Flash]
    
write_string("dmg_cold"// Sprite Name
    
message_end()
}

public 
fw_SetModel(entitymodel[])
{
    
    if(!
is_valid_ent(entity)) 
        return 
FMRES_IGNORED

    
if(!equali(modelW_OLD_M4A1_MODEL)) 
        return 
FMRES_IGNORED

    
new className[33]
    
entity_get_string(entityEV_SZ_classnameclassName32)

    static 
iOwneriStoredM4A1ID

    
// Frost M4A1 Owner
    
iOwner entity_get_edict(entityEV_ENT_owner)

    
// Get drop weapon index (Frost M4A1) to use in fw_FrostM4A1AddToPlayer forward
    
iStoredM4A1ID find_ent_by_owner(-1"weapon_m4a1"entity)

    
// If Player Has Frost M4A1 and It's weapon_m4a1
    
if(g_bHasFrostM4A1[iOwner] && is_valid_ent(iStoredM4A1ID))
    {
        
// Setting weapon options
        
entity_set_int(iStoredM4A1IDEV_INT_impulse1997)

        
// Rest Var
        
g_bHasFrostM4A1[iOwner] = false
        
        
// Set weaponbox new model
        
entity_set_model(entityW_M4A1_MODEL)
        return 
FMRES_SUPERCEDE
    
}
    return 
FMRES_IGNORED
}

public 
fw_FrostM4A1AddToPlayer(FrostM4A1id)
{
    
// Make sure that this is M4A1
    
if(is_valid_ent(FrostM4A1) && is_user_connected(id) && entity_get_int(FrostM4A1EV_INT_impulse) == 1997)
    {
        
// Update Var
        
g_bHasFrostM4A1[id] = true

        
// Reset weapon options
        
entity_set_int(FrostM4A1EV_INT_impulse0)
        return 
HAM_HANDLED
    
}
    return 
HAM_IGNORED
}

stock Remove_Rendering(id)
{
    
set_user_rendering(idkRenderFxNone255255255kRenderNormal16)
}

public 
RemoveEntity(id)
{
    if(!
is_user_connected(id))
        return
        
    new 
iEnt find_ent_by_owner(-1"ent_frozen"id);
    
    if(
pev_valid(iEnt))
        
remove_entity(iEnt)


Last edited by mikaelnatan13; 06-20-2020 at 16:48.
mikaelnatan13 is offline
mikaelnatan13
Member
Join Date: Apr 2020
Old 06-21-2020 , 21:19   Re: Help Me I ask for a plugin
Reply With Quote #28

you could?
mikaelnatan13 is offline
mikaelnatan13
Member
Join Date: Apr 2020
Old 06-23-2020 , 16:22   Re: Help Me I ask for a plugin
Reply With Quote #29

Quote:
Originally Posted by mikaelnatan13 View Post
you could?
will you edit or not
mikaelnatan13 is offline
tarsisd2
Veteran Member
Join Date: Feb 2016
Location: brazil
Old 06-23-2020 , 16:31   Re: Help Me I ask for a plugin
Reply With Quote #30

Quote:
Originally Posted by mikaelnatan13 View Post
will you edit or not
stop bumping and wait for replies, read the rules
tarsisd2 is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 00:34.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode