Код:
Код
//
//
//Баг форума
//
//Под pawn выдаёт ошибку bb-кодов
//
//
// Исходник граба ниже:
//
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <dhudmessage>
#include <cstrike>
#include <fun>
native jbe_punish(id);
new const VERSION[ ] = "1.2.3"
new const TRKCVAR[ ] = "grab_plus_version"
#define ADMIN ADMIN_LEVEL_H
#define TSK_CHKE 50
#define SF_FADEOUT 0
new client_data[33][4]
#define GRABBED 0
#define GRABBER 1
#define GRAB_LEN 2
#define FLAGS 3
#define CDF_IN_PUSH (1<<0)
#define CDF_IN_PULL (1<<1)
#define CDF_NO_CHOKE (1<<2)
//Cvar Pointers
new p_enabled, p_players_only
new p_throw_force, p_min_dist, p_speed, p_grab_force
new p_choke_time, p_choke_dmg, p_auto_choke
new p_glow_r, p_glow_b, p_glow_g, p_glow_a
new p_fade, p_glow
//Pseudo Constants
new MAXPLAYERS
new SVC_SCREENFADE, SVC_SCREENSHAKE, WTF_DAMAGE
new g_Cvar[3]
new szPlayerFire[33]
new szPlayerNotGrabMenu[33]
new szPlayerGrabMenu[33]
new szPlayerFreeze[33]
new szPlayerFreezeTime[33]
new smoke,mflash
public plugin_init( )
{
register_plugin( "Grab+", VERSION, "Ian Cammarata" )
register_cvar( TRKCVAR, VERSION, FCVAR_SERVER )
set_cvar_string( TRKCVAR, VERSION )
register_event("HLTV", "RoundStart", "a", "1=0", "2=0")
register_event("CurWeapon", "FixSpeed", "be", "1=1")
p_enabled = register_cvar( "gp_enabled", "1" )
p_players_only = register_cvar( "gp_players_only", "0" )
p_min_dist = register_cvar ( "gp_min_dist", "90" )
p_throw_force = register_cvar( "gp_throw_force", "1500" )
p_grab_force = register_cvar( "gp_grab_force", "8" )
p_speed = register_cvar( "gp_speed", "10" )
p_choke_time = register_cvar( "gp_choke_time", "1.5" )
p_choke_dmg = register_cvar( "gp_choke_dmg", "5" )
p_auto_choke = register_cvar( "gp_auto_choke", "1" )
p_glow_r = register_cvar( "gp_glow_r", "255" )
p_glow_g = register_cvar( "gp_glow_g", "85" )
p_glow_b = register_cvar( "gp_glow_b", "0" )
p_glow_a = register_cvar( "gp_glow_a", "100" )
p_fade = register_cvar( "gp_screen_fade", "1" )
p_glow = register_cvar( "gp_glow", "1" )
g_Cvar[1] = register_cvar( "gp_freezetime", "60" )
g_Cvar[2] = register_cvar( "gp_money", "10" )
register_clcmd( "amx_grab", "force_grab", ADMIN, "Grab client & teleport to you." )
register_clcmd( "+grab", "grab")
register_clcmd( "-grab", "unset_grabbed" )
register_clcmd( "+push", "push", ADMIN, "bind a key to +push" )
register_clcmd( "-push", "push" )
register_clcmd( "+pull", "pull", ADMIN, "bind a key to +pull" )
register_clcmd( "-pull", "pull" )
register_clcmd( "push", "push2" )
register_clcmd( "pull", "pull2" )
register_clcmd( "test123456", "GrabMenu" )
register_clcmd( "drop" ,"throw" )
register_event( "DeathMsg", "DeathMsg", "a" )
register_forward( FM_PlayerPreThink, "fm_player_prethink" )
MAXPLAYERS = get_maxplayers()
SVC_SCREENFADE = get_user_msgid( "ScreenFade" )
SVC_SCREENSHAKE = get_user_msgid( "ScreenShake" )
WTF_DAMAGE = get_user_msgid( "Damage" )
register_dictionary("grab.txt")
}
public RoundStart()
{
new szPlayers[32]
new szNum, szPlayer
get_players(szPlayers, szNum)
for(new i; i < szNum; i++)
{
szPlayer = szPlayers[i]
szPlayerFire[szPlayer] = false
szPlayerGrabMenu[szPlayer] = false
szPlayerFreeze[szPlayer] = false
szPlayerFreezeTime[szPlayer] = false
remove_task(szPlayer)
remove_task(szPlayer + 12345)
remove_task(szPlayer + 123456)
}
}
public FixSpeed(id)
{
if(szPlayerFreeze[id])
{
set_pev(id, pev_maxspeed, 1.0)
}
}
public plugin_precache( )
{
precache_sound( "RuJail_v2_Sound/Jb_Str/grab.WAV" )
mflash = precache_model("sprites/muzzleflash.spr")
smoke = precache_model("sprites/steam1.spr")
precache_sound("ambience/flameburst1.wav")
precache_sound("scientist/scream21.wav")
precache_sound("scientist/scream07.wav")
return PLUGIN_CONTINUE
}
public fm_player_prethink( id )
{
new target
target = client_data[id][GRABBED]
if(target == 0 && szPlayerGrabMenu[id])
{
show_menu(id, 0, "^n", 1)
szPlayerGrabMenu[id] = false
}
if ( client_data[id][GRABBED] == -1 )
{
new Float:orig[3], Float:ret[3]
get_view_pos( id, orig )
ret = vel_by_aim( id, 9999 )
ret[0] += orig[0]
ret[1] += orig[1]
ret[2] += orig[2]
target = traceline( orig, ret, id, ret )
if( 0 < target <= MAXPLAYERS )
{
if( is_grabbed( target, id ) ) return FMRES_IGNORED
set_grabbed( id, target )
}
else if( !get_pcvar_num( p_players_only ) )
{
new movetype
if( target && pev_valid( target ) )
{
movetype = pev( target, pev_movetype )
if( !( movetype == MOVETYPE_WALK || movetype == MOVETYPE_STEP || movetype == MOVETYPE_TOSS ) )
return FMRES_IGNORED
}
else
{
target = 0
new ent = engfunc( EngFunc_FindEntityInSphere, -1, ret, 12.0 )
while( !target && ent > 0 )
{
movetype = pev( ent, pev_movetype )
if( ( movetype == MOVETYPE_WALK || movetype == MOVETYPE_STEP || movetype == MOVETYPE_TOSS )
&& ent != id )
target = ent
ent = engfunc( EngFunc_FindEntityInSphere, ent, ret, 12.0 )
}
}
if( target )
{
if( is_grabbed( target, id ) ) return FMRES_IGNORED
set_grabbed( id, target )
}
}
}
if( target > 0 )
{
if( !pev_valid( target ) || ( pev( target, pev_health ) < 1 && pev( target, pev_max_health ) ) )
{
unset_grabbed( id )
return FMRES_IGNORED
}
//Use key choke
if( pev( id, pev_button ) & IN_USE )
do_choke( id )
//Push and pull
new cdf = client_data[id][FLAGS]
if ( cdf & CDF_IN_PULL )
do_pull( id )
else if ( cdf & CDF_IN_PUSH )
do_push( id )
if( target > MAXPLAYERS ) grab_think( id )
}
//If they're grabbed
target = client_data[id][GRABBER]
if( target > 0 ) grab_think( target )
return FMRES_IGNORED
}
public grab_think( id ) //id of the grabber
{
new target = client_data[id][GRABBED]
//Keep grabbed clients from sticking to ladders
if( pev( target, pev_movetype ) == MOVETYPE_FLY && !(pev( target, pev_button ) & IN_JUMP ) ) client_cmd( target, "+jump;wait;-jump" )
//Move targeted client
new Float:tmpvec[3], Float:tmpvec2[3], Float:torig[3], Float:tvel[3]
get_view_pos( id, tmpvec )
tmpvec2 = vel_by_aim( id, client_data[id][GRAB_LEN] )
torig = get_target_origin_f( target )
new force = get_pcvar_num( p_grab_force )
tvel[0] = ( ( tmpvec[0] + tmpvec2[0] ) - torig[0] ) * force
tvel[1] = ( ( tmpvec[1] + tmpvec2[1] ) - torig[1] ) * force
tvel[2] = ( ( tmpvec[2] + tmpvec2[2] ) - torig[2] ) * force
set_pev( target, pev_velocity, tvel )
}
stock Float:get_target_origin_f( id )
{
new Float:orig[3]
pev( id, pev_origin, orig )
//If grabbed is not a player, move origin to center
if( id > MAXPLAYERS )
{
new Float:mins[3], Float:maxs[3]
pev( id, pev_mins, mins )
pev( id, pev_maxs, maxs )
if( !mins[2] ) orig[2] += maxs[2] / 2
}
return orig
}
public grab( id, level, cid )
{
if(get_user_flags(id) & ADMIN){
if( !cmd_access( id, level, cid, 1 ) || !get_pcvar_num( p_enabled ) ) return PLUGIN_HANDLED
if ( !client_data[id][GRABBED] ) client_data[id][GRABBED] = -1
screenfade_in( id )
}else{
ChatColor(id,"%L", id, "GRAB_ADMIN_OFF")
}
return PLUGIN_HANDLED
}
public screenfade_in( id )
{
if( get_pcvar_num( p_fade ) )
{
message_begin( MSG_ONE, SVC_SCREENFADE, _, id )
write_short( 10000 ) //duration
write_short( 0 ) //hold
write_short( SF_FADE_IN + SF_FADE_ONLYONE ) //flags
write_byte( get_pcvar_num( p_glow_r ) )
write_byte( get_pcvar_num( p_glow_g ) )
write_byte( get_pcvar_num( p_glow_b ) )
write_byte( get_pcvar_num( p_glow_a ) / 2 ) //a
message_end( )
}
}
public throw( id )
{
new target = client_data[id][GRABBED]
if( target > 0 )
{
set_pev( target, pev_velocity, vel_by_aim( id, get_pcvar_num(p_throw_force) ) )
unset_grabbed( id )
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public unset_grabbed( id )
{
new target = client_data[id][GRABBED]
if( target > 0 && pev_valid( target ) )
{
set_pev( target, pev_renderfx, kRenderFxNone )
set_pev( target, pev_rendercolor, {255.0, 255.0, 255.0} )
set_pev( target, pev_rendermode, kRenderNormal )
set_pev( target, pev_renderamt, 16.0 )
if( 0 < target <= MAXPLAYERS )
client_data[target][GRABBER] = 0
}
client_data[id][GRABBED] = 0
if( get_pcvar_num( p_fade ) )
{
message_begin( MSG_ONE, SVC_SCREENFADE, _, id )
write_short( 10000 ) //duration
write_short( 0 ) //hold
write_short( SF_FADEOUT ) //flags
write_byte( get_pcvar_num( p_glow_r ) ) //r
write_byte( get_pcvar_num( p_glow_g ) ) //g
write_byte( get_pcvar_num( p_glow_b ) ) //b
write_byte( get_pcvar_num( p_glow_a ) / 2 ) //a
message_end( )
}
}
public set_grabbed( id, target )
{
if( get_pcvar_num( p_glow ) )
{
new Float:color[3]
color[0] = get_pcvar_float( p_glow_r )
color[1] = get_pcvar_float( p_glow_g )
color[2] = get_pcvar_float( p_glow_b )
set_pev( target, pev_renderfx, kRenderFxGlowShell )
set_pev( target, pev_rendercolor, {42.0, 42.0, 255.0} )
set_pev( target, pev_rendermode, kRenderTransColor )
set_pev( target, pev_renderamt, get_pcvar_float( p_glow_a ) )
}
if( 0 < target <= MAXPLAYERS )
client_data[target][GRABBER] = id
client_data[id][FLAGS] = 0
client_data[id][GRABBED] = target
new name[33], name2[33]
get_user_name(id, name, 32)
get_user_name(target, name2, 32)
for (new iDHUD = 0; iDHUD < 8; iDHUD++)
show_dhudmessage(id," ");
if(get_user_team(target)==1 || get_user_team(target)==2)
{
if(!szPlayerGrabMenu[id])
{
if(!szPlayerNotGrabMenu[target])
{
GrabMenu(id)
}
}
set_dhudmessage(random(255),random(255),random(255), -1.0, 0.71, 1, 6.0, 3.0, 0.1, 1.5 );
show_dhudmessage(target, "%L", id, "GRAB_USER",name);
set_dhudmessage(random(255),random(255),random(255), -1.0, 0.71, 1, 6.0, 3.0, 0.1, 1.5 );
show_dhudmessage(id,"%L", id, "GRAB_USER_ON", name2);
}else{
set_dhudmessage(random(240),random(255),random(200), -1.0, 0.71, 1, 6.0, 3.0, 0.1, 1.5 );
show_dhudmessage(id, "%L", id, "GRAB_WEAPONS");
}
new Float:torig[3], Float:orig[3]
pev( target, pev_origin, torig )
pev( id, pev_origin, orig )
client_data[id][GRAB_LEN] = floatround( get_distance_f( torig, orig ) )
if( client_data[id][GRAB_LEN] < get_pcvar_num( p_min_dist ) ) client_data[id][GRAB_LEN] = get_pcvar_num( p_min_dist )
}
public push( id )
{
client_data[id][FLAGS] ^= CDF_IN_PUSH
return PLUGIN_HANDLED
}
public pull( id )
{
client_data[id][FLAGS] ^= CDF_IN_PULL
return PLUGIN_HANDLED
}
public push2( id )
{
if( client_data[id][GRABBED] > 0 )
{
do_push( id )
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public pull2( id )
{
if( client_data[id][GRABBED] > 0 )
{
do_pull( id )
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public do_push( id )
if( client_data[id][GRAB_LEN] < 9999 )
client_data[id][GRAB_LEN] += get_pcvar_num( p_speed )
public do_pull( id )
{
new mindist = get_pcvar_num( p_min_dist )
new len = client_data[id][GRAB_LEN]
if( len > mindist )
{
len -= get_pcvar_num( p_speed )
if( len < mindist ) len = mindist
client_data[id][GRAB_LEN] = len
}
else if( get_pcvar_num( p_auto_choke ) )
do_choke( id )
}
public do_choke( id )
{
new target = client_data[id][GRABBED]
if( client_data[id][FLAGS] & CDF_NO_CHOKE || id == target || target > MAXPLAYERS) return
new dmg = get_pcvar_num( p_choke_dmg )
new vec[3]
FVecIVec( get_target_origin_f( target ), vec )
message_begin( MSG_ONE, SVC_SCREENSHAKE, _, target )
write_short( 999999 ) //amount
write_short( 9999 ) //duration
write_short( 999 ) //frequency
message_end( )
message_begin( MSG_ONE, SVC_SCREENFADE, _, target )
write_short( 9999 ) //duration
write_short( 100 ) //hold
write_short( SF_FADE_MODULATE ) //flags
write_byte( get_pcvar_num( p_glow_r ) ) //r
write_byte( get_pcvar_num( p_glow_g ) ) //g
write_byte( get_pcvar_num( p_glow_b ) ) //b
write_byte( 200 ) //a
message_end( )
message_begin( MSG_ONE, WTF_DAMAGE, _, target )
write_byte( 0 ) //damage armor
write_byte( dmg ) //damage health
write_long( DMG_CRUSH ) //damage type
write_coord( vec[0] ) //origin[x]
write_coord( vec[1] ) //origin[y]
write_coord( vec[2] ) //origin[z]
message_end( )
message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( TE_BLOODSTREAM )
write_coord( vec[0] ) //pos.x
write_coord( vec[1] ) //pos.y
write_coord( vec[2] + 15 ) //pos.z
write_coord( random_num( 0, 255 ) ) //vec.x
write_coord( random_num( 0, 255 ) ) //vec.y
write_coord( random_num( 0, 255 ) ) //vec.z
write_byte( 70 ) //col index
write_byte( random_num( 50, 250 ) ) //speed
message_end( )
new health = pev( target, pev_health ) - dmg
set_pev( target, pev_health, float( health ) )
if( health < 1 ) dllfunc( DLLFunc_ClientKill, target )
emit_sound( target, CHAN_BODY, "RuJail_v2_Sound/Jb_Str/grab.WAV", VOL_NORM, ATTN_NORM, 0, PITCH_NORM )
client_data[id][FLAGS] ^= CDF_NO_CHOKE
set_task( get_pcvar_float( p_choke_time ), "clear_no_choke", TSK_CHKE + id )
}
public clear_no_choke( tskid )
{
new id = tskid - TSK_CHKE
client_data[id][FLAGS] ^= CDF_NO_CHOKE
}
//Grabs the client and teleports them to the admin
public force_grab(id, level, cid)
{
if( !cmd_access( id, level, cid, 1 ) || !get_pcvar_num( p_enabled ) ) return PLUGIN_HANDLED
new arg[33]
read_argv( 1, arg, 32 )
new targetid = cmd_target( id, arg, 1 )
if( is_grabbed( targetid, id ) ) return PLUGIN_HANDLED
if( !is_user_alive( targetid ) )
{
client_print( id, print_console, "[AMXX] %L", id, "COULDNT" )
return PLUGIN_HANDLED
}
//Safe to tp target to aim spot?
new Float:tmpvec[3], Float:orig[3], Float:torig[3], Float:trace_ret[3]
new bool:safe = false, i
get_view_pos( id, orig )
tmpvec = vel_by_aim( id, get_pcvar_num( p_min_dist ) )
for( new j = 1; j < 11 && !safe; j++ )
{
torig[0] = orig[0] + tmpvec[i] * j
torig[1] = orig[1] + tmpvec[i] * j
torig[2] = orig[2] + tmpvec[i] * j
traceline( tmpvec, torig, id, trace_ret )
if( get_distance_f( trace_ret, torig ) ) break
engfunc( EngFunc_TraceHull, torig, torig, 0, HULL_HUMAN, 0, 0 )
if ( !get_tr2( 0, TR_StartSolid ) && !get_tr2( 0, TR_AllSolid ) && get_tr2( 0, TR_InOpen ) )
safe = true
}
//Still not safe? Then find another safe spot somewhere around the grabber
pev( id, pev_origin, orig )
new try[3]
orig[2] += 2
while( try[2] < 3 && !safe )
{
for( i = 0; i < 3; i++ )
switch( try[i] )
{
case 0 : torig[i] = orig[i] + ( i == 2 ? 80 : 40 )
case 1 : torig[i] = orig[i]
case 2 : torig[i] = orig[i] - ( i == 2 ? 80 : 40 )
}
traceline( tmpvec, torig, id, trace_ret )
engfunc( EngFunc_TraceHull, torig, torig, 0, HULL_HUMAN, 0, 0 )
if ( !get_tr2( 0, TR_StartSolid ) && !get_tr2( 0, TR_AllSolid ) && get_tr2( 0, TR_InOpen )
&& !get_distance_f( trace_ret, torig ) ) safe = true
try[0]++
if( try[0] == 3 )
{
try[0] = 0
try[1]++
if( try[1] == 3 )
{
try[1] = 0
try[2]++
}
}
}
if( safe )
{
set_pev( targetid, pev_origin, torig )
set_grabbed( id, targetid )
screenfade_in( id )
}
else client_print( id, print_chat, "[AMXX] %L", id, "COULDNT" )
return PLUGIN_HANDLED
}
public is_grabbed( target, grabber )
{
for( new i = 1; i <= MAXPLAYERS; i++ )
if( client_data[i][GRABBED] == target )
{
client_print( grabber, print_chat, "[AMXX] %L", grabber, "ALREADY" )
unset_grabbed( grabber )
return true
}
return false
}
public DeathMsg( )
kill_grab( read_data( 2 ) )
public client_disconnect( id )
{
kill_grab( id )
return PLUGIN_CONTINUE
}
public kill_grab( id )
{
//If given client has grabbed, or has a grabber, unset it
if( client_data[id][GRABBED] )
unset_grabbed( id )
else if( client_data[id][GRABBER] )
unset_grabbed( client_data[id][GRABBER] )
}
stock traceline( const Float:vStart[3], const Float:vEnd[3], const pIgnore, Float:vHitPos[3] )
{
engfunc( EngFunc_TraceLine, vStart, vEnd, 0, pIgnore, 0 )
get_tr2( 0, TR_vecEndPos, vHitPos )
return get_tr2( 0, TR_pHit )
}
stock get_view_pos( const id, Float:vViewPos[3] )
{
new Float:vOfs[3]
pev( id, pev_origin, vViewPos )
pev( id, pev_view_ofs, vOfs )
vViewPos[0] += vOfs[0]
vViewPos[1] += vOfs[1]
vViewPos[2] += vOfs[2]
}
stock Float:vel_by_aim( id, speed = 1 )
{
new Float:v1[3], Float:vBlah[3]
pev( id, pev_v_angle, v1 )
engfunc( EngFunc_AngleVectors, v1, v1, vBlah, vBlah )
v1[0] *= speed
v1[1] *= speed
v1[2] *= speed
return v1
}
public GrabMenu(id)
{
new szTitle[512]
new szItem[512]
new szName[32]
new szTarget = client_data[id][GRABBED]
get_user_name(szTarget, szName, charsmax( szName ))
formatex(szTitle, charsmax( szTitle ), "%L", id, "GRAB_GRABMENU_TITLE", szName)
new szMenu = menu_create(szTitle, "GrabMenu_handler" )
formatex(szItem, charsmax( szItem ), "%L", id, "GRAB_GRABMENU_ITEM_1")
menu_additem(szMenu, szItem, "1", 0 )
formatex(szItem, charsmax( szItem ), "%L", id, "GRAB_GRABMENU_ITEM_2")
menu_additem(szMenu, szItem, "2", 0 )
formatex(szItem, charsmax( szItem ), "%L", id, "GRAB_GRABMENU_ITEM_3")
menu_additem(szMenu, szItem, "3", 0 )
formatex(szItem, charsmax( szItem ), "%L", id, "GRAB_GRABMENU_ITEM_4")
menu_additem(szMenu, szItem, "4", 0 )
formatex(szItem, charsmax( szItem ), "%L", id, "GRAB_GRABMENU_ITEM_5")
menu_additem(szMenu, szItem, "5", 0 )
formatex(szItem, charsmax( szItem ), "%L", id, "GRAB_GRABMENU_ITEM_6", get_pcvar_num( g_Cvar[2] ))
menu_additem(szMenu, szItem, "6", 0 )
formatex(szItem, charsmax( szItem ), "%L", id, "GRAB_GRABMENU_ITEM_7")
menu_additem(szMenu, szItem, "7", 0 )
menu_setprop(szMenu, MEXIT_ALL, 0)
menu_display(id, szMenu, 0)
szPlayerGrabMenu[id] = true
}
public GrabMenu_handler(id, szMenu, szItem)
{
if(szItem == MENU_EXIT)
{
szPlayerGrabMenu[id] = false
menu_destroy( szMenu )
return PLUGIN_HANDLED
}
new szData[6], szName[64], szAccess, szCallback
menu_item_getinfo(szMenu, szItem, szAccess, szData, charsmax( szData ), szName, charsmax( szName ), szCallback)
new szKey = str_to_num( szData )
new szTarget = client_data[id][GRABBED]
switch( szKey )
{
case 1:
{
if(szTarget > 0)
{
if(is_user_alive(szTarget) && is_user_connected(szTarget))
{
jbe_punish(szTarget)
}
}
szPlayerGrabMenu[id] = false
}
case 2:
{
if(szTarget > 0)
{
if(is_user_alive(szTarget) && is_user_connected(szTarget))
{
set_user_health(szTarget, 100)
}
}
szPlayerGrabMenu[id] = false
}
case 3:
{
if(szTarget > 0)
{
if(is_user_alive(szTarget) && is_user_connected(szTarget))
{
szPlayerFreeze[szTarget] = true
szPlayerFreezeTime[szTarget] = get_pcvar_num( g_Cvar[1] )
FreezePlayer(szTarget)
}
}
szPlayerGrabMenu[id] = false
}
case 4:
{
if(szTarget > 0)
{
if(is_user_alive(szTarget) && is_user_connected(szTarget))
{
szPlayerFire[szTarget] = true
set_task(0.2, "FireEffect", szTarget + 123456, _, _, "b")
set_task(2.0, "FirePlayer", szTarget + 12345, _, _, "b")
}
}
szPlayerGrabMenu[id] = false
}
case 5:
{
if(szTarget > 0)
{
if(is_user_alive(szTarget) && is_user_connected(szTarget))
{
strip_user_weapons(szTarget)
give_item(szTarget, "weapon_knife")
}
}
szPlayerGrabMenu[id] = false
}
case 6:
{
if(szTarget > 0)
{
if(is_user_connected(szTarget))
{
cs_set_user_money(szTarget, cs_get_user_money(szTarget) + get_pcvar_num( g_Cvar[2] ))
}
}
szPlayerGrabMenu[id] = false
}
case 7:
{
if(szTarget > 0)
{
if(is_user_connected(szTarget))
{
szPlayerNotGrabMenu[szTarget] = true
}
}
szPlayerGrabMenu[id] = false
}
}
menu_destroy( szMenu )
return PLUGIN_HANDLED
}
public FreezePlayer(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED
if(szPlayerFreezeTime[id] >= 1)
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), _, id)
write_short(1 << 0)
write_short(1 << 0)
write_short(1 << 2)
write_byte(0)
write_byte(206)
write_byte(209)
write_byte(70)
message_end()
set_pev(id, pev_maxspeed, 1.0)
}else{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), _, id)
write_short(1 << 12)
write_short(1 << 9)
write_short(1 << 0)
write_byte(0)
write_byte(0)
write_byte(0)
write_byte(0)
message_end()
set_pev(id, pev_maxspeed, 240.0)
szPlayerFreeze[id] = false
remove_task(id)
}
if(szPlayerFreezeTime[id] == get_pcvar_num( g_Cvar[1] ))
{
set_task(1.0, "FreezePlayer", id, _, _, "b")
}
client_print(id, print_center, "%i", szPlayerFreezeTime[id])
--szPlayerFreezeTime[id]
return PLUGIN_HANDLED
}
public FireEffect(id)
{
id = id - 123456
if(is_user_alive(id) && szPlayerFire[id])
{
new szOrigin[3]
get_user_origin(id, szOrigin)
message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
write_byte( 17 )
write_coord(szOrigin[0])
write_coord(szOrigin[1])
write_coord(szOrigin[2])
write_short( mflash )
write_byte( 20 )
write_byte( 200 )
message_end()
message_begin( MSG_BROADCAST,SVC_TEMPENTITY, szOrigin)
write_byte( 5 )
write_coord(szOrigin[0])
write_coord(szOrigin[1])
write_coord(szOrigin[2])
write_short( smoke )
write_byte( 20 )
write_byte( 15 )
message_end()
}else
if(szPlayerFire[id])
{
emit_sound(id,CHAN_AUTO, "scientist/scream21.wav", 0.6, ATTN_NORM, 0, PITCH_HIGH)
szPlayerFire[id] = false
}else{
remove_task(id)
}
return PLUGIN_CONTINUE
}
public FirePlayer(id)
{
id = id - 12345
if(is_user_alive(id) && szPlayerFire[id])
{
new szOrigin[3]
get_user_origin(id, szOrigin)
set_user_health(id, get_user_health(id) - 5)
message_begin(MSG_ONE, get_user_msgid("Damage"), {0,0,0}, id)
write_byte(30)
write_byte(30)
write_long(1<<21)
write_coord(szOrigin[0])
write_coord(szOrigin[1])
write_coord(szOrigin[2])
message_end()
emit_sound(id,CHAN_ITEM, "ambience/flameburst1.wav", 0.6, ATTN_NORM, 0, PITCH_NORM)
}else{
remove_task(id)
}
return PLUGIN_CONTINUE
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!team", "^3")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}