Grenades Are Heavy

A Config Script for Counter-Strike 1.6

Yo, buddy. We are one of the oldest mod sites on the Interwebs. Sign up and maximize your browsing experience.

  • Subscribe: Get notified of new submissions like this.
  • Say Thanks: Show your appreciation by sending rj. points.
  • Post: Give rj. your thoughts on this Script.
  • Vote: Help rj. win the Monthly Awards.
  • Rate: Give this Script a rating out of 10.
  • Flag: Alert moderators and warn members of a problem with this Script.
  • Watch: Get notified when this Script is updated.
Mascot

Resistance is futile...

Sign up

Already a Bananite? Login

241 lines | 7 kb | Raw Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
#define USING_AMX 0 // 1 = Using AMX \ 0 = Using AMXX

#if USING_AMX
        #include <amxmod>
        #include <VexdUM>
#else
        #include <amxmodx>
        #include <engine>
        #include <cstrike>
        #include <fun>
#endif


new gMsgDeathMsg
new gCurrentNade

public plugin_init()
{
        // Plugin Info
        register_plugin("Grenades Are Heavy", "1.0", "AssKicR")
        register_event("RoundTime", "newRound", "bc")
        register_cvar("amx_heimpactdmg","5")
        register_cvar("amx_fbimpactdmg","5")
        register_cvar("amx_sgimpactdmg","5")
        register_cvar("amx_obeyff", "1")
        gMsgDeathMsg = get_user_msgid("DeathMsg")
}
public newRound() {
        new Float:roundtime = get_cvar_float("mp_roundtime") * 60.0
        new rtime = read_data(1)
        if(roundtime == rtime) {
                        gCurrentNade=0
        }
}

public pfn_touch(ptr, ptd)
{
        if (ptd!=0 && ptr!=0) {
                new ptrname[32], ptdname[32], ptrModel[32]
                entity_get_string(ptr, EV_SZ_classname, ptrname, 31)
                entity_get_string(ptd, EV_SZ_classname, ptdname, 31)
                if(equal(ptrname, "grenade") && equal(ptdname, "player")) {
                        if (gCurrentNade==ptr) return
                        gCurrentNade=ptr
                        new ptrOwner = entity_get_edict(ptr, EV_ENT_owner)
                       
                        new bool:HitFriend=false
                        new ObeyFF = get_cvar_num("amx_obeyff") ? 1:0
                        new FFOn = get_cvar_num("mp_friendlyfire") ? 1:0
                        if(!FFOn && ObeyFF) {
                                        if(get_user_team(ptd) == get_user_team(ptrOwner)) {
                                                        HitFriend=true
                                        }
                        }

                        if(!HitFriend) {
                                entity_get_string(ptr, EV_SZ_model, ptrModel, 31)
                                //client_print(0, 3, "Grenade with model ^"%s^" has hit a player",ptrModel) //This is for debugging
                                if (equali(ptrModel,"models/w_hegrenade.mdl")) {
                                emit_sound(ptr, CHAN_ITEM, "weapons/ric_metal-1.wav", 0.7, ATTN_NORM, 0, PITCH_NORM)
                                emit_sound(ptd, CHAN_BODY, "player/bhit_flesh-1.wav", 0.7, ATTN_NORM, 0, PITCH_NORM)
                                ImpactDamage(ptd,ptr)
                                ScreenShake(ptd,
                                14, 14, 14 )
                                ScreenFlash(ptd, 255, 0, 0, 1, 200 )
                                HazedView(ptd, 120 )
                                ExtraDamage(ptd, ptrOwner, get_cvar_num("amx_heimpactdmg"), "grenade" )
                                }else if (equali(ptrModel,"models/w_flashbang.mdl")) {
                                emit_sound(ptr, CHAN_ITEM, "weapons/ric_metal-1.wav", 0.7, ATTN_NORM, 0, PITCH_NORM)
                                emit_sound(ptd, CHAN_BODY, "player/bhit_flesh-1.wav", 0.7, ATTN_NORM, 0, PITCH_NORM)
                                ImpactDamage(ptd,ptr)
                                ScreenShake(ptd, 14, 14, 14 )
                                ScreenFlash(ptd, 255, 0, 0, 1, 200 )
                                HazedView(ptd, 120 )
                                ExtraDamage(ptd, ptrOwner, get_cvar_num("amx_fbimpactdmg"), "flashbang" )
                                }else if (equali(ptrModel,"models/w_smokegrenade.mdl")) {
                                emit_sound(ptr, CHAN_ITEM, "weapons/ric_metal-1.wav", 0.7, ATTN_NORM, 0, PITCH_NORM)
                                emit_sound(ptd, CHAN_BODY, "player/bhit_flesh-1.wav", 0.7, ATTN_NORM, 0, PITCH_NORM)
                                ImpactDamage(ptd,ptr)
                                ScreenShake(ptd, 14, 14, 14 )
                                ScreenFlash(ptd, 255, 0, 0, 1, 200 )
                                HazedView(ptd, 120 )
                                ExtraDamage(ptd, ptrOwner, get_cvar_num("amx_sgimpactdmg"), "smokegrenade" )
                                }
                        }
                }
        }
}

public ExtraDamage(id, attacker, damage, weaponDescription[] )
{
        if ( is_user_alive(id) )
        {
                new userHealth=get_user_health(id)
                set_msg_block(gMsgDeathMsg, BLOCK_SET)
                set_user_health(id, userHealth - damage )
                set_msg_block(gMsgDeathMsg, BLOCK_NOT)
                if ( userHealth - damage <= 0 )
                {
                        logKill(attacker,id, weaponDescription)
                        if ( get_user_team(id) != get_user_team(attacker) )
                        {
                                // The person dying shouldn't get negative credit for this kill (so add it back)
                                set_user_frags( id, get_user_frags(id) + 1 )
                                               
                                // The killing should get credit for the frag
                                set_user_frags( attacker, get_user_frags(attacker)+ 1 )
                               
                                MoneyEvent(attacker,300,1)
                        }
                        else
                        {
                                // The person dying shouldn't get negative credit for this kill (so add it back)
                                set_user_frags( id, get_user_frags(id)+ 1 )    
                                               
                                // The killer killed a teammember or self
                                // Engine gives credit for the kill so let's take away that + 1
                                set_user_frags( attacker, get_user_frags(attacker) - 2)

                                MoneyEvent(attacker,150,0)
                        }
                                                               
                        message_begin( MSG_BROADCAST, get_user_msgid("DeathMsg"),{0,0,0},0)
                        write_byte(attacker)
                        write_byte(id)
                        write_byte(0)
                        write_string(weaponDescription)
                        message_end()
                }
        }
}

#if USING_AMX
        stock cs_get_user_money(index) return get_user_money(index)
        stock cs_set_user_money(index, money, flash = 1) set_user_money(index, money, flash)
#endif

public MoneyEvent(id,money,plus) {
        new HasMoney
       
        HasMoney = cs_get_user_money(id)
       
        if (plus)
        {
                if (HasMoney < 16000)
                {
                        if (HasMoney+money > 16000)
                        {
                                cs_set_user_money(id,16000)    
                        }else{
                                cs_set_user_money(id,HasMoney+money)   
                        }
                }      
        }else{
                if (HasMoney > 0 )
                {
                        if (HasMoney-money < 0)
                        {
                                cs_set_user_money(id,0)
                        }else{
                                cs_set_user_money(id,HasMoney-money)   
                        }
                }      
        }
}


public logKill(id, victim, weaponDescription[] )
        {
                //Save Hummiliation
                new namea[24],namev[24],authida[20],authidv[20],teama[8],teamv[8]
               
                //Info On Attacker
                get_user_name(id,namea,23)
                get_user_team(id,teama,7)
                get_user_authid(id,authida,19)
                //Info On Victim
                get_user_name(victim,namev,23)
                get_user_team(victim,teamv,7)
                get_user_authid(victim,authidv,19)
                //Log This Kill
                log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"",
                namea,get_user_userid(id),authida,teama,namev,get_user_userid(victim),authidv,teamv, weaponDescription )
        }

public ScreenShake(id, amplitude, duration, frequency )
        {
                if ( !is_user_alive(id) ) return
                message_begin(MSG_ONE, get_user_msgid("ScreenShake"),{0,0,0},id)
                write_short( 1<<amplitude )// amplitude
                write_short( 1<<duration )// duration
                write_short( 1<<frequency )// frequency
                message_end()
        }

public ScreenFlash(id, red, green, blue, decisecs, alpha)
        {
                if ( !is_user_alive(id) ) return
                message_begin(MSG_ONE,get_user_msgid("ScreenFade"),{0,0,0},id)
                write_short( decisecs<<12 ) // fade lasts this long duration
                write_short( 1<<16 ) // fade lasts this long hold time
                write_short( 1<<1 ) // fade type (in / out)
                write_byte( red ) // fade red
                write_byte( green ) // fade green
                write_byte( blue ) // fade blue
                write_byte( alpha ) // fade alpha
                message_end()
        }

public HazedView(id, frequency )
        {
                if ( !is_user_alive(id) ) return
                message_begin(MSG_ONE, get_user_msgid("SetFOV"), {0,0,0}, id)
                write_byte( frequency ) // FOV Distance
                message_end()
                set_task(2.0,"RestoreVision",id)
        }

public RestoreVision(id)
        {
                message_begin(MSG_ONE, get_user_msgid("SetFOV"), {0,0,0}, id)
                write_byte( 90 ) // FOV Default
                message_end()
        }

public ImpactDamage(id,grenadeid) {
                new Float:gorigin[3], origin[3]
                entity_get_vector(grenadeid, EV_VEC_origin, gorigin)
                origin[0]=floatround(gorigin[0])
                origin[1]=floatround(gorigin[1])
                origin[2]=floatround(gorigin[2])
                if ( !is_user_alive(id) ) return
                message_begin(MSG_ONE, get_user_msgid("Damage"), {0,0,0}, id)  
                write_byte(30) // dmg_save     
                write_byte(30) // dmg_take     
                write_long(0) // visibleDamageBits     
                write_coord(origin[0]) // damageOrigin.x       
                write_coord(origin[1]) // damageOrigin.y       
                write_coord(origin[2]) // damageOrigin.z
                message_end()
}
This is "Grenades Are Heavy"

when someone throw a grenade into someone the person they hit will be damaged with the ammount of HP defined in the Cvars

the cvars are
He Impact damage = amx_heimpactdmg
Flashbang Impact damage = amx_fbimpactdmg
Smokegrenade Impact damage = amx_sgimpactdmg
Obeying Friendlyfire = amx_obeyff

Default for all values is 5hp
Also note that HE & Flashbang has a nice icon in the corner deathmessage while smokegrenade doesn't

Posts

None found

Share

Shareable Image:
Share banner
HTML embed code:
BB embed code:
Markdown embed code:

More embeddable images

Bookmark and Share

Credits

Original Authors
AssKicR
AMXX Script/Codess

Submitter

rj. avatar
rj. PAUSE
Member Joined 1y
291 points Ranked 14387th
38 medals 4 legendary 10 rare
  • Submitted 15 Tools Medal icon
  • Submitted 50 Gamefiles Medal icon
  • 15+ Entries! GameBanana’s Christmas Giveaway 2016 Medal icon
  • Thanked 500 submitters Medal icon
  • 2nd Place - Game Poetry Contest Medal icon
  • Submitted 5 Tools Medal icon

rj.
Redistributor
Are you the owner? Request Ownership
Sign up to access this!
Sign up to access this!
Sign up to access this!
Sign up to access this!

Category

Stats

Posts
0
Views
691
Date Added
5mo
bcp.crwdcntrl.net tracking pixel