17 |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
18 |
|
|
19 |
http://ian.cammarata.us/projects/grab_plus |
http://ian.cammarata.us/projects/grab_plus |
20 |
Nov 16 08:08 |
Nov 21 11:03 |
21 |
|
|
22 |
|
|
23 |
Description: |
Description: |
102 |
Change Log: |
Change Log: |
103 |
Key (+ added | - removed | c changed | f fixed) |
Key (+ added | - removed | c changed | f fixed) |
104 |
|
|
105 |
v1.2.3 (Nov ??, 2007) |
v1.2.3 (Nov 21, 2007) |
106 |
c: A few more small optimizations. |
c: A few more small optimizations. |
107 |
f: Fixed bad message disconnect error when players get choked. ( stupid SVC_DAMAGE define ) |
f: Bloodstream for choke wasn't aligned with player. |
108 |
|
f: Bad message disconnect error when players were choked. ( stupid SVC_DAMAGE define ) |
109 |
|
|
110 |
v1.2.2 (Nov 16, 2007) |
v1.2.2 (Nov 16, 2007) |
111 |
c: A few small code optimizations. |
c: A few small code optimizations. |
134 |
#include <amxmisc> |
#include <amxmisc> |
135 |
#include <fakemeta> |
#include <fakemeta> |
136 |
|
|
137 |
new const VERSION[ ] = "1.2.3RC" |
new const VERSION[ ] = "1.2.3" |
138 |
new const TRKCVAR[ ] = "grab_plus_version" |
new const TRKCVAR[ ] = "grab_plus_version" |
139 |
#define ADMIN ADMIN_LEVEL_A |
#define ADMIN ADMIN_LEVEL_A |
140 |
|
|
502 |
public do_choke( id ) |
public do_choke( id ) |
503 |
{ |
{ |
504 |
new target = client_data[id][GRABBED] |
new target = client_data[id][GRABBED] |
505 |
if( client_data[id][FLAGS] & CDF_NO_CHOKE /*|| id == target*/ || target > MAXPLAYERS) return |
if( client_data[id][FLAGS] & CDF_NO_CHOKE || id == target || target > MAXPLAYERS) return |
506 |
|
|
507 |
new dmg = get_pcvar_num( p_choke_dmg ) |
new dmg = get_pcvar_num( p_choke_dmg ) |
508 |
new Float:vec[3] |
new vec[3] |
509 |
get_target_origin_f( target ) |
FVecIVec( get_target_origin_f( target ), vec ) |
510 |
|
|
511 |
message_begin( MSG_ONE, SVC_SCREENSHAKE, _, target ) |
message_begin( MSG_ONE, SVC_SCREENSHAKE, _, target ) |
512 |
write_short( 999999 ) //amount |
write_short( 999999 ) //amount |
528 |
write_byte( 0 ) //damage armor |
write_byte( 0 ) //damage armor |
529 |
write_byte( dmg ) //damage health |
write_byte( dmg ) //damage health |
530 |
write_long( DMG_CRUSH ) //damage type |
write_long( DMG_CRUSH ) //damage type |
531 |
write_coord( floatround( vec[0] ) ) //origin[x] |
write_coord( vec[0] ) //origin[x] |
532 |
write_coord( floatround( vec[1] ) ) //origin[y] |
write_coord( vec[1] ) //origin[y] |
533 |
write_coord( floatround( vec[2] ) ) //origin[z] |
write_coord( vec[2] ) //origin[z] |
534 |
message_end( ) |
message_end( ) |
535 |
|
|
536 |
message_begin( MSG_BROADCAST, SVC_TEMPENTITY ) |
message_begin( MSG_BROADCAST, SVC_TEMPENTITY ) |
537 |
write_byte( TE_BLOODSTREAM ) |
write_byte( TE_BLOODSTREAM ) |
538 |
write_coord( floatround( vec[0] ) ) //pos.x |
write_coord( vec[0] ) //pos.x |
539 |
write_coord( floatround( vec[1] ) ) //pos.y |
write_coord( vec[1] ) //pos.y |
540 |
write_coord( floatround( vec[2] ) + 15 ) //pos.z |
write_coord( vec[2] + 15 ) //pos.z |
541 |
write_coord( random_num( 0, 255 ) ) //vec.x |
write_coord( random_num( 0, 255 ) ) //vec.x |
542 |
write_coord( random_num( 0, 255 ) ) //vec.y |
write_coord( random_num( 0, 255 ) ) //vec.y |
543 |
write_coord( random_num( 0, 255 ) ) //vec.z |
write_coord( random_num( 0, 255 ) ) //vec.z |