Raised This Month: $51 Target: $400
 12% 

Add radius for screen shake


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Krtola
Veteran Member
Join Date: Oct 2013
Location: Serbia
Old 04-13-2017 , 03:43   Add radius for screen shake
Reply With Quote #1

I need help on this:

When the rocket explodes,around the blast area make a radius and if a players is in that radius make screen shake for that players?

PHP Code:
#include <amxmodx>
#include <engine>
#include <fun>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <bhextra5>

const OFFSET_LINUX_WEAPONS 4
const OFFSET_WEAPONOWNER 41

#define OFFSET_PRIMARYWEAPON 116

#define PLUGIN "Bazooka"
#define VERSION "1.0"
#define AUTHOR "Dias"

#define weapon_at4cs "weapon_m249"
#define CSW_AT4CS CSW_M249

#define TASK_CHECKRELOAD 111112
#define TASK_RELOAD 111113

new g_at4cs
new g_had_at4cs[33], Float:g_lastfire[33], Float:g_lastaim[33], g_aiming[33],
g_smoke_idg_spr_expg_spr_trailis_reloading[33],
cvar_radiuscvar_maxdamage

new g_msgSayText

new const v_model[] = "models/v_bazooka_for_boost.mdl"
new const p_model[] = "models/p_bazooka_for_boost.mdl"
new const w_model[] = "models/w_bazooka_for_boost.mdl"

new const s_model[] = "models/bazooka_projektil_for_boost.mdl"

new const at4cs_sound[5][] = {
    
"weapons/for_boostrocketfire1.wav"
    
"weapons/at4_clipin1.wav"
    
"weapons/at4_clipin2.wav"
    
"weapons/at4_clipin3.wav"
    
"weapons/at4_draw.wav"  
}

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)

#define VipFlag ADMIN_LEVEL_G

public plugin_precache()
{  
    
engfunc(EngFunc_PrecacheModelv_model)
    
engfunc(EngFunc_PrecacheModelp_model)
    
engfunc(EngFunc_PrecacheModels_model)
        
engfunc(EngFunc_PrecacheModelw_model)

    
engfunc(EngFunc_PrecacheGeneric"sprites/weapon_at4cs.txt")
    
engfunc(EngFunc_PrecacheGeneric"sprites/at4cs.spr")    
    
g_smoke_id engfunc(EngFunc_PrecacheModel"sprites/for_boost_rainsplash.spr")
    
g_spr_trail engfunc(EngFunc_PrecacheModel,"sprites/for_boost_xbeam3.spr")
    
g_spr_exp engfunc(EngFunc_PrecacheModel,"sprites/for_boost_zerogxplode.spr")
    for(new 
0sizeof(at4cs_sound); i++)
        
engfunc(EngFunc_PrecacheSoundat4cs_sound[i])
}

public 
plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
RegisterHam(Ham_Item_Deploy"weapon_m249""Ham_OnKnifeDeploy"1)
    
register_event("HLTV""event_newround""a""1=0""2=0")
        
register_logevent("round_end"2"1=Round_End")

        
RegisterHam(Ham_Spawn"player""OnPlayerSpawnPost"1)
        
RegisterHam(Ham_Killed"player""fw_PlayerKilled")
    
    
register_forward(FM_UpdateClientData"fw_UpdateClientData_Post"1)
    
register_forward(FM_CmdStart"fw_CmdStart")

        
register_forward(FM_SetModel"fw_SetModel")
    
    
register_touch("at4ex_rocketbio""*""fw_rocket_touch")
    
    
RegisterHam(Ham_Weapon_Reloadweapon_at4cs"fw_WeaponReload")
    
RegisterHam(Ham_Item_AddToPlayerweapon_at4cs"fw_AddToPlayer"1)
    
    
cvar_radius register_cvar("bazooka_radius_vip""125.0")
    
cvar_maxdamage register_cvar("bazooka_maxdamage_vip""300.0")

        
register_think("at4ex_rocketbio""fw_rocket_think")
    
        
g_at4cs bh_register_extra_item("Bazooka"""15000ITEM)
    
    
register_clcmd("weapon_at4cs""hook_weapon")

        
g_msgSayText get_user_msgid("SayText")
}

public 
OnPlayerSpawnPost(id)
{
    if(
g_had_at4cs[id])
    { 
    
is_reloading[id] = 0
    g_aiming
[id] = 0
    
    remove_task
(id+TASK_CHECKRELOAD)
    
remove_task(id+TASK_RELOAD)
    }
}

public 
hook_weapon(id)
{
    
engclient_cmd(idweapon_at4cs)
    return 
PLUGIN_HANDLED
}

public 
bh_extra_item_selected(iditemid)
{
        if(
itemid == g_at4cs)
        {
           
             if(!(
get_user_flags(id) & VipFlag))
             {
                 

                 return 
PLUGIN_HANDLED
             
}

             
drop_weapons(id1)

             
set_pev(idpev_viewmodel2v_model)
         
set_pev(idpev_weaponmodel2p_model)
        
         
g_had_at4cs[id] = true
         is_reloading
[id] = 0
         g_aiming
[id] = 0
    
         fm_give_item
(idweapon_at4cs)
    
         static 
at4cs
         at4cs 
fm_get_user_weapon_entity(idCSW_AT4CS)
     
         
cs_set_weapon_ammo(at4cs1)
         
cs_set_user_bpammo(idCSW_AT4CS99)

        }        
        return 
PLUGIN_CONTINUE   
}

public 
fw_PlayerKilled(victimkillershouldgib)
{
    if(
g_had_at4cs[victim])
    {
    
g_had_at4cs[victim] = false
        
        remove_task
(victim+TASK_CHECKRELOAD)
    
remove_task(victim+TASK_RELOAD)

        
is_reloading[victim] = 0
    g_aiming
[victim] = 0
    
}
}

public 
client_disconnect(id)
{
   if(
g_had_at4cs[id])
   {
    
g_had_at4cs[id] = false
        
        remove_task
(id+TASK_CHECKRELOAD)
    
remove_task(id+TASK_RELOAD)

        
is_reloading[id] = 0
    g_aiming
[id] = 0
   
}
}
    
public 
event_newround(id)
{
    
remove_entity_name("at4ex_rocketbio")
}

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

public 
Ham_OnKnifeDeploy(ent)
{
    static 
idid fm_cs_get_weapon_ent_owner(ent)

    if (!
pev_valid(id))
    return

    if(!
g_had_at4cs[id])
    return

    
set_pev(idpev_viewmodel2v_model)
    
set_pev(idpev_weaponmodel2p_model)
}

public 
fw_UpdateClientData_Post(idsendweaponscd_handle)
{
    if(!
is_user_alive(id) || !is_user_connected(id))
        return 
FMRES_IGNORED
        
    
if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
        return 
FMRES_IGNORED
        
    set_cd
(cd_handleCD_flNextAttackhalflife_time() + 0.001)  

    return 
FMRES_HANDLED
}

public 
fw_AddToPlayer(entid)
{
    if(!
is_valid_ent(ent) || !is_user_alive(id))
        return 
HAM_IGNORED
        
        
    
if(entity_get_int(entEV_INT_impulse) == 61296)
    {
        
g_had_at4cs[id] = true
        entity_set_int
(idEV_INT_impulse0)
        
        return 
HAM_HANDLED
    
}        

    if(
g_had_at4cs[id])
    {
        
message_begin(MSG_ONEget_user_msgid("WeaponList"), _id)
        
write_string("weapon_at4cs");    // WeaponName
        
write_byte(3)                  // PrimaryAmmoID
        
write_byte(1)                  // PrimaryAmmoMaxAmount
        
write_byte(-1)                   // SecondaryAmmoID
        
write_byte(-1)                   // SecondaryAmmoMaxAmount
        
write_byte(0)                    // SlotID (0...N)
        
write_byte(4)                    // NumberInSlot (1...N)
        
write_byte(CSW_AT4CS)            // WeaponID
        
write_byte(0)                   // Flags
        
message_end()
    }
    
    return 
HAM_HANDLED    
}

public 
fw_CmdStart(iduc_handleseed)
{
    if(!
is_user_alive(id) || !is_user_connected(id))
        return 
FMRES_IGNORED

    
if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
        return 
FMRES_IGNORED
        
    
static CurButton
    CurButton 
get_uc(uc_handleUC_Buttons)
    
    if(
CurButton IN_ATTACK)
    {
        static 
Float:CurTime
        CurTime 
get_gametime()
        
        static 
at4cs
        at4cs 
fm_find_ent_by_owner(-1weapon_at4csid)        
        
        if(
cs_get_weapon_ammo(at4cs) > && !is_reloading[id])
        {
            if(
CurTime 4.5 g_lastfire[id])
            {
                
set_weapon_anim(id1)                            
                
                
create_rocket(id)
                                                
                static 
Float:Punch_Angles[3]
                
                
Punch_Angles[0] =-5.0
                Punch_Angles
[1] = 0.0
                Punch_Angles
[2] = 0.0
                
                set_pev
(idpev_punchanglePunch_Angles)
                
cs_set_weapon_ammo(at4cscs_get_weapon_ammo(at4cs) - 1)
                
                if(
cs_get_weapon_ammo(at4cs) <= && !is_reloading[id])
                {
                    if(
cs_get_user_bpammo(idCSW_AT4CS) > 0)
                    {
                        
set_task(0.5"at4cs_reload"id)
                    }
                }
                
                
                
                
g_lastfire[id] = CurTime
            
}
        } else {
            if(!
is_reloading[id])
            {
                if(
cs_get_user_bpammo(idCSW_AT4CS) > 0)
                {
                    if(
CurTime 1.0 g_lastfire[id])
                    {
                        
at4cs_reload(id)
                        
g_lastfire[id] = CurTime
                    
}
                }
            }
        }
    }
    
    if(
CurButton IN_ATTACK2)
    {
        static 
Float:CurTime
        CurTime 
get_gametime()
        
        if((
CurTime 0.5 g_lastaim[id]) && !is_reloading[id])
        {
            if(!
g_aiming[id])
            {
                
g_aiming[id] = 1
            
} else {
                
g_aiming[id] = 0
            
}
            
            
g_lastaim[id] = CurTime
        
}
    }
    
    
CurButton &= ~IN_ATTACK
    set_uc
(uc_handleUC_ButtonsCurButton)
    
    
CurButton &= ~IN_RELOAD
    set_uc
(uc_handleUC_ButtonsCurButton)

    return 
FMRES_HANDLED
}

public 
fw_SetModel(ent, const model[])
{
    if(!
is_valid_ent(ent))
        return 
FMRES_IGNORED
    
    
static szClassName[33]
    
entity_get_string(entEV_SZ_classnameszClassNamecharsmax(szClassName))
    
    if(!
equal(szClassName"weaponbox"))
        return 
FMRES_IGNORED
    
    
static iOwner
    iOwner 
entity_get_edict(entEV_ENT_owner)
    
    if(
equal(model"models/w_m249.mdl"))
    {
        static 
at4cs
        at4cs 
find_ent_by_owner(-1"weapon_m249"ent)
        
        if(!
is_valid_ent(at4cs))
            return 
FMRES_IGNORED;
        
        if(
g_had_at4cs[iOwner])
        {
            
entity_set_int(at4csEV_INT_impulse61296)
            
g_had_at4cs[iOwner] = false
            entity_set_model
(entw_model)
            
            return 
FMRES_SUPERCEDE
        
}
    }
    
    return 
FMRES_IGNORED
}

public 
at4cs_reload(id)
{
    if(
is_reloading[id])
        return
    
    
is_reloading[id] = 1
    set_weapon_anim
(id3)
    
    
set_task(0.1"checking_reload"id+TASK_CHECKRELOAD__"b")
    
set_task(3.0"reload_complete"id+TASK_RELOAD)
}

public 
checking_reload(id)
{
    
id -= TASK_CHECKRELOAD
    
    
if(!is_user_connected(id))
        
remove_task(id TASK_CHECKRELOAD);    
    
    if(
get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
    {
        
remove_task(id+TASK_CHECKRELOAD)
        
remove_task(id+TASK_RELOAD)
        
        
is_reloading[id] = 0
    
}
}

public 
reload_complete(id)
{
    
id -= TASK_RELOAD
    
    
if(!is_reloading[id])
        return
        
    
remove_task(id+TASK_CHECKRELOAD)    
        
    static 
at4cs
    at4cs 
fm_find_ent_by_owner(-1weapon_at4csid)    
    
    if(
pev_valid(at4cs))
        
cs_set_weapon_ammo(at4cs1)
        
    
cs_set_user_bpammo(idCSW_AT4CScs_get_user_bpammo(idCSW_AT4CS) - 1)
    
is_reloading[id] = 0
}

public 
fw_WeaponReload(ent)
{
    static 
id
    id 
pev(entpev_owner)
    
    if(!
is_user_alive(id) || !is_user_connected(id))
        return 
HAM_IGNORED
        
    
if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
        return 
HAM_IGNORED    
        
    
static Float:CurTime
    CurTime 
get_gametime()        
        
    if(!
is_reloading[id])
    {
        if(
cs_get_user_bpammo(idCSW_AT4CS) > 0)
        {
            if(
CurTime 1.0 g_lastfire[id])
            {
                
at4cs_reload(id)
                
g_lastfire[id] = CurTime
            
}
        }
    }    
        
    return 
HAM_SUPERCEDE
}

public 
create_rocket(id)
{
    new 
entFloat:Origin[3], Float:Angles[3], Float:Velocity[3]
    
    
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
engfunc(EngFunc_GetAttachmentid0OriginAngles)
    
pev(idpev_anglesAngles)
    
    
set_pev(entpev_originOrigin)
    
set_pev(entpev_anglesAngles)
    
set_pev(entpev_solid2)
    
set_pev(entpev_movetype5)
    
set_pev(entpev_classname"at4ex_rocketbio")
    
set_pev(entpev_ownerid)
    
engfunc(EngFunc_SetModelents_model)
    
    
set_pev(entpev_mins, {-1.0, -1.0, -1.0})
    
set_pev(entpev_maxs, {1.01.01.0})
    
    
velocity_by_aim(id1600Velocity)
    
set_pev(entpev_velocityVelocity)

        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMFOLLOW// TE id
    
write_short(ent// entity:attachment to follow
    
write_short(g_spr_trail// sprite index
    
write_byte(10// life in 0.1's
    
write_byte(2// line width in 0.1's
    
write_byte(255// r
    
write_byte(255// g
    
write_byte(255// b
    
write_byte(200// brightness
    
message_end()

        
emit_sound(idCHAN_WEAPONat4cs_sound[0], 1.0ATTN_NORM0PITCH_NORM)    
    
    
set_pev(entpev_iuser40)
    
set_pev(entpev_nextthinkhalflife_time() + 0.1)
}

public 
fw_rocket_think(ent)
{
    if(!
pev_valid(ent))
        return

    static 
Float:Origin[3]
    
pev(entpev_originOrigin)
        
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_SPRITE)
    
engfunc(EngFunc_WriteCoordOrigin[0])
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2])
    
write_short(g_smoke_id
    
write_byte(8
    
write_byte(100)
    
message_end()
}

public 
fw_rocket_touch(rockettouch)
{
    if(!
pev_valid(rocket))
        return    
        
    if(
is_user_alive(touch) && pev(rocketpev_owner) == touch)
        return
        
    static 
Float:Origin[3]
    
pev(rocketpev_originOrigin)    

        
message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordOrigin[0])
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2])
    
write_short(g_spr_exp)    // sprite index
    
write_byte(40)    // scale in 0.1's
    
write_byte(15)    // framerate
    
write_byte(0)    // flags
    
message_end()

    static 
owneriVictim
    
    iVictim 
= -1
    owner 
pev(rocketpev_owner)    

        new 
iOwnerTeam get_user_team(owner)

    while((
iVictim find_ent_in_sphere(iVictimOriginget_pcvar_float(cvar_radius))) != 0)
    {
        if((
iVictim 32) && is_user_alive(iVictim)
        && 
iVictim != owner && iOwnerTeam != get_user_team(iVictim))
        {
            new 
Float:MaxDamageFloat:Damage
            
            MaxDamage 
get_pcvar_float(cvar_maxdamage)
            
Damage random_float(MaxDamage random_float(0.025.0), MaxDamage random_float(0.025.0))
            
            
ExecuteHam(Ham_TakeDamageiVictim0owner0DMG_BULLET)
            
            static 
health
            health 
get_user_health(iVictim)
                
            if(
health Damage >= 1)
            {
                
set_user_health(iVictimhealth floatround(Damage))
            }
            else
            {
                
death_message(owneriVictim1)
            }            
        }
    }    
    
    
engfunc(EngFunc_RemoveEntityrocket)
}

stock set_weapon_anim(idanim)
{
    
set_pev(idpev_weaponanimanim)

    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM_id)
    
write_byte(anim)
    
write_byte(pev(id,pev_body))
    
message_end()
}

stock death_message(KillerVictimScoreBoard)
{
    
// Block death msg
    
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
    
ExecuteHamB(Ham_KilledVictimKiller2)
    
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
    
    
// Death
    
make_deathmsg(KillerVictim0"")

    
// Update score board
    
if (ScoreBoard)
    {
        
message_begin(MSG_BROADCASTget_user_msgid("ScoreInfo"))
        
write_byte(Killer// id
        
write_short(pev(Killerpev_frags)) // frags
        
write_short(cs_get_user_deaths(Killer)) // deaths
        
write_short(0// class?
        
write_short(get_user_team(Killer)) // team
        
message_end()
        
        
message_begin(MSG_BROADCASTget_user_msgid("ScoreInfo"))
        
write_byte(Victim// id
        
write_short(pev(Victimpev_frags)) // frags
        
write_short(cs_get_user_deaths(Victim)) // deaths
        
write_short(0// class?
        
write_short(get_user_team(Victim)) // team
        
message_end()
    }
}

public 
round_end()
{
    static 
id;
    for(
id id <= get_maxplayers() ; id++)
    {
        if(!
is_user_connected(id))
            continue

        if(
g_had_at4cs[id])
        { 
        
is_reloading[id] = 0
        g_aiming
[id] = 0
    
        remove_task
(id+TASK_CHECKRELOAD)
        
remove_task(id+TASK_RELOAD)   
        }
    }
}

colored_print(target, const message[], any:...)
{
    static 
buffer[512]
    
    
vformat(buffercharsmax(buffer), message3)
    
    
message_begin(MSG_ONE_UNRELIABLEg_msgSayText_target)
    
write_byte(target)
    
write_string(buffer)
    
message_end()
}

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)
          }
     }

Krtola is offline
Send a message via Skype™ to Krtola
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 06:34.


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