Иммунитет плагин для игроков
#include < amxmisc >
#include < fakemeta >
#include < hamsandwich >
#define PLUGIN «[All mod] Grab»
#define VERSION «2.1»
#define AUTHOR «Ian Cammarata / Opo4uMapy»
// Options
#define ADMIN ADMIN_LEVEL_F //Флаг админа
#define ADMIN_IMMUN ADMIN_LEVEL_H //Флаг админа с иммунитетом
#define RESON_KICK «Kick by plugin grab» //Причина кика
#define GRAB_MENU //Открывать меню граба или нет. Если нет сделайте так //#define GRAB_MENU (Стандартно открыто)
#define JB_PREFIX «!y[ !gГраб !y]»
enum //Цвет граба
{
r = 0.0, //Red
g = 0.0, //Green
b = 255.0, //Blue
a = 200.0 //Alpha
};
//
new const Menu[][] =
{
«»,
«MENU_1»,
«MENU_2»,
«MENU_3»,
«MENU_4»,
«MENU_5»,
«MENU_6»,
«MENU_7»
};
#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
new speed_off[33]
//Pseudo Constants
new MAXPLAYERS
new SVC_SCREENSHAKE, SVC_SCREENFADE, WTF_DAMAGE
new name[32]
new name2[32]
public plugin_init( )
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event(«CurWeapon», «CurrentWeapon», «be», «1=1»)
RegisterHam(Ham_Spawn, «player», «SpawnPlayer»)
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», «5» )
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 = register_cvar( «gp_glow», «1» )
register_clcmd( «amx_grab», «force_grab», ADMIN, «Grab client & teleport to you.» )
register_clcmd( «+grab», «grab», ADMIN, «bind a key to +bub_grab» )
register_clcmd( «-grab», «unset_grabbed» )
register_clcmd( «+push», «push», ADMIN, «bind a key to +bub_push» )
register_clcmd( «-push», «push» )
register_clcmd( «+pull», «pull», ADMIN, «bind a key to +bub_pull» )
register_clcmd( «-pull», «pull» )
register_clcmd( «push», «push2» )
register_clcmd( «pull», «pull2» )
register_clcmd( «drop» ,»throw» )
register_event( «DeathMsg», «DeathMsg», «a» )
register_forward( FM_PlayerPreThink, «fm_player_prethink» )
register_dictionary( «grab_plus.txt» )
MAXPLAYERS = get_maxplayers()
SVC_SCREENFADE = get_user_msgid( «ScreenFade» )
SVC_SCREENSHAKE = get_user_msgid( «ScreenShake» )
WTF_DAMAGE = get_user_msgid( «Damage» )
register_dictionary(«grab_new.txt»);
}
public plugin_precache( )
precache_sound( «player/PL_PAIN2.WAV» )
public fm_player_prethink( id )
{
new target
get_user_name(target, name, 32)
get_user_name(id, name2, 32)
//Search for a target
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
get_user_name(target, name, 32)
get_user_name(id, name2, 32)
if(get_user_flags(id) & ADMIN_IMMUN)
{
ChatColor(id, «%s !g%s !teamИмеет иммунитет», JB_PREFIX, name)
ChatColor(target, «%s !g%s !teamПытался взять вас !gГрабом», JB_PREFIX, name2)
}
else
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
get_user_name(target, name, 32)
get_user_name(id, name2, 32)
if(get_user_flags(id) & ADMIN_IMMUN)
{
ChatColor(id, «%s !g%s !teamИмеет иммунитет», JB_PREFIX, name)
ChatColor(target, «%s !g%s !teamПытался взять вас !gГрабом», JB_PREFIX, name2)
}
else
set_grabbed( id, target )
}
}
}
target = client_data[id][GRABBED]
//If they’ve grabbed something
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( !cmd_access( id, level, cid, 1 ) || !get_pcvar_num( p_enabled ) ) return PLUGIN_HANDLED
if ( !client_data[id][GRABBED] ) client_data[id][GRABBED] = -1
return PLUGIN_HANDLED
}
public SpawnPlayer(id)
speed_off[id] = false
public CurrentWeapon(id)
{
if(speed_off[id])
set_pev(id, pev_maxspeed, 00000.0)
}
public grab_menu(id)
{
new name[32]
new target = client_data[id][GRABBED]
if(target && is_user_alive(target))
{
get_user_name(target, name, charsmax(name))
}
new Item[512], Str[10], menu;
formatex(Item, charsmax(Item), «%L», id, «MENU_NAME», name);
menu = menu_create(Item, «menu_handler»)
for(new i = 1; i <= charsmax(Menu); i++)
{
num_to_str(i, Str, charsmax(Str));
formatex(Item, charsmax(Item), «%L», id, Menu[i]);
menu_additem(menu, Item, Str, 0);
}
formatex(Item, charsmax(Item), «%L», id, «MENU_EXIT»);
menu_setprop(menu, MPROP_EXITNAME, Item);
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public menu_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6], iName[64], access, callback
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
new key = str_to_num(data)
new target = client_data[id][GRABBED]
switch(key)
{
case 1:
{
if(target && is_user_alive(target))
{
server_cmd(«kick #%d ^»%s^»», get_user_userid(target), RESON_KICK)
}
}
case 2:
{
if(target && is_user_alive(target))
{
user_kill(target)
}
}
case 3:
{
if(target && is_user_alive(target))
{
fm_strip_user_weapons(target)
fm_give_item(target, «weapon_knife»)
}
}
case 4:
{
if(target && is_user_alive(target))
{
set_pev(target, pev_maxspeed, 00000.0)
speed_off[target] = true
}
}
case 5:
{
if(target && is_user_alive(target))
{
set_pev(target, pev_maxspeed, 240.0)
speed_off[target] = false
}
}
case 6:
{
if(target && is_user_alive(target))
{
set_pev(target, pev_health, 1.0)
}
}
case 7:
{
if(target && is_user_alive(target))
{
set_pev(target, pev_punchangle, { 400.0, 999.0, 400.0 })
}
}
}
return PLUGIN_HANDLED
}
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
}
show_menu(id, 0, «^n», 1)
client_data[id][GRABBED] = 0
}
//Grabs onto someone
public set_grabbed( id, target )
{
if( get_pcvar_num( p_glow ) )
{
set_pev( target, pev_renderfx, kRenderFxGlowShell )
set_pev( target, pev_rendercolor, {r, g, b})
set_pev( target, pev_rendermode, kRenderTransColor )
set_pev( target, pev_renderamt, 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)
if(get_user_team(target)==1 || get_user_team(target)==2)
{
ChatColor(target, «%L», target, «CHAT_1», name)
ChatColor(id, «%L», id, «CHAT_2», name2)
#if defined GRAB_MENU
grab_menu(id)
#endif
}
else
{
ChatColor(id, «%L», id, «CHAT_3»)
}
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( 200 ) //r
write_byte( 0 ) //g
write_byte( 0 ) //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, «player/PL_PAIN2.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 ) )
{
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]++
}
}
}
get_user_name(targetid, name, 32)
get_user_name(id, name2, 32)
if( safe )
{
set_pev( targetid, pev_origin, torig )
set_grabbed( id, targetid )
}
return PLUGIN_HANDLED
}
public is_grabbed( target, grabber )
{
for( new i = 1; i <= MAXPLAYERS; i++ )
if( client_data[i][GRABBED] == target )
{
unset_grabbed( grabber )
return true
}
return false
}
public DeathMsg( )
kill_grab( read_data( 2 ) )
public client_disconnect( id )
{
kill_grab( id )
speed_off[id] = false
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
}
stock fm_give_item(index, const item[])
{
if (!equal(item, «weapon_», 7) && !equal(item, «ammo_», 5) && !equal(item, «item_», 5) && !equal(item, «tf_weapon_», 10))
return 0
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
if (!pev_valid(ent))
return 0
new Float:origin[3];
pev(index, pev_origin, origin)
set_pev(ent, pev_origin, origin)
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
dllfunc(DLLFunc_Spawn, ent)
new save = pev(ent, pev_solid)
dllfunc(DLLFunc_Touch, ent, index)
if (pev(ent, pev_solid) != save)
return ent
engfunc(EngFunc_RemoveEntity, ent)
return -1
}
stock fm_strip_user_weapons(id)
{
static ent
ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, «player_weaponstrip»))
if (!pev_valid(ent)) return;
dllfunc(DLLFunc_Spawn, ent)
dllfunc(DLLFunc_Use, ent, id)
engfunc(EngFunc_RemoveEntity, ent)
}
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();
}
}
}
}
Иммунитет для админов
Сообщений: 66
Благодарностей: 3
Полезность:
Сообщений: 2590
Благодарностей: 669
Полезность: 208
Сообщений: 66
Благодарностей: 3
Полезность:
Сообщений: 746
Благодарностей: 373
Полезность: 628
energydance, не нужно людей вводить в заблуждение это не совсем так
а вообще нужно пользоваться поиском
Сообщений: 2590
Благодарностей: 669
Полезность: 208
Сообщений: 746
Благодарностей: 373
Полезность: 628
Сообщений: 66
Благодарностей: 3
Полезность:
Сообщений: 1428
Благодарностей: 416
Полезность: 422
MeJIoMaH, на вопрос «Как сделать» так и нет ответа. Одной лишь установки плагина недостаточно
ЧТД
Сообщений: 746
Благодарностей: 373
Полезность: 628
Сообщений: 1428
Благодарностей: 416
Полезность: 422
Сообщений: 746
Благодарностей: 373
Полезность: 628
Сообщений: 1428
Благодарностей: 416
Полезность: 422
Сообщений: 746
Благодарностей: 373
Полезность: 628
Сообщений: 66
Благодарностей: 3
Полезность:
Сообщений: 746
Благодарностей: 373
Полезность: 628
Сообщений: 358
Благодарностей: 147
Полезность: 579
вынес линк из под спойлера чтоыб читабельным cnfk
источник
[CS:S][CS:GO] [SM] [VIP] Very Important Person 18.10.2019
#1 GoDtm666
Популярное сообщение!
Всем привет!
Разрабатываю VIP плагин для серверов CS:S, и других игр на движке Source.
На данный момент плагин точится под CS:S v.34, CS:S, CS:GO и CS:S Beta
Сам плагин разработан недавно, некоторые функции не доделаны.
Потихоньку плагин буду обновлять.
Внедрять настройки плагина через команды. и тд.
Итак: Думаю нет смысла объяснять, что такое VIP.
Возможности плагина: (Версия 0.0.5)
- VIP Чат
- Модельки игроков, скины.
- Иммунитет от плагинов: антикамп, voteban и тд.
- Выносливость
- Деньги
- Автоматическая установка оружия.
- Показ урона.
- Антифлеш по команде.
- Полный антифлеш.
- Отключить повреждения по команде.
- BunnyHop
- Всегда спавниться с С4.
- Усиление урона.
- Регенерация.
- Медик по команде.
- Блокировать повреждения от своей гранаты.
- Установка HP.
- Установка скорости.
- Установка гравитации.
- Хвост за гранатой.
- Возрождение.
- Пониженный урон.
- Свободное перемещение между командами.
- Звук сердцебиения.
- Клан тег.
- Блок повреждения, если упал с высоты.
- Установка оружия.
- Бесконечные патроны.
- Дроп гранат и ножа.
- Растворять труп, когда убили.
- Автоматическая установка глушителя.
- Возможность кикнуть игрока с сервера.
- Возможность бросить любое оружие у игроков.
- Возможность включить/выключить фонарик у игроков.
- Возможность нарисовать спрей от лица игроков.
- Иммунитет от запрета оружия.
- Цветные оружия в руках игрока.
- Цветной эффект при убийстве в голову, или с ножа или гранаты.
- Измененные world модельки гранат при броске.
- Огненная граната при броске.
- Поджигающая граната при взрыве на расстоянии 1.5 игрового метра.
- Временное ускорение игрока при получении урона.
- Озвучка низкого уровня пaтpoнoв для игры CS:S v.34 и CS:S как в игре CSGO
- Быcтpaя уcтaнoвкa C4.
Маленькое превью
Плагин будет полезен для продажи VIP доступа на сервере
users_advert_vip_access.ini — Реклама для игроков, которые не имеют доступ к команде vip
users_activation_keys.ini — Ключи активации VIP доступа.
users_chat_tags.ini — База чат тегов.
users_clan_tags.ini — База клан тегов.
users_weapon_restrict.ini — Лист запрета оружия на определенных картах, совместно работает с Weapon Restrict.
users_weapon_colors.ini — Лист цветов оружия vip игрока.
На данный момент плагин будет работать с ключами в файлах .ini
Ни в коем случаи конфиги любых и данного плагина не редактировать в Блокноте от Windows ни когда ни в какой прошлой или будущей или настоящей жизни.
vip или vipmenu или vip_menu или vip_settings меню настроек плагина.
vip_say написать сообщение VIP игрокам.
vip_cash выдача денег.
vip_weapon или vip_giveweapon или vip_give выдача оружия.
vip_health или vip_hp установка HP vip_health 100 или vip_hp 100
vip_speed установка скорости. (Максимум 3.0)
vip_users_add Добавление нового VIP игрока.
vip_groups_users Показать группы для VIP игроков.
vip_del_users Удалить VIP игрока из базы.
vip_chat_tag Установка нового VIP тега.
Список серверных команд:
vip_users_damage усилитель урона (Насколько умножить урон) для игроков с флагом ‘n’.
vip_users_max_health Максимальное количество HP для vip игроков.
vip_users_max_speed Максимальная скорость перемещения для vip игроков.
vip_users_clan_tag Clan Tag для vip игроков с флагом ‘d’.
vip_users_max_cash Максимальное количество денег для vip игроков.
0a VIP Чат.
0b Модельки игроков, скины.
0c Иммунитет от плагинов: запрета оружия, антикамп, voteban и тд.
0d Выносливость
0e Деньги
0f Автоматическая установка оружия.
0g Показ урона.
0h Антифлеш по команде.
0i Полный антифлеш.
0j Отключить повреждения по команде.
0k BunnyHop
0l Всегда спавниться с С4.
0m Усиление урона.
0n Регенерация.
0o Медик по команде.
0p Блокировать повреждения от своей гранаты.
0q Установка HP.
0r Установка скорости.
0s Установка гравитации.
0t Хвост за гранатой.
0u Возрождение.
0v Пониженный урон.
0w Свободное перемещение между командами.
0y Звук сердцебиения.
0x Клан тег.
0z Блок повреждения, если упал с высоты.
1a Установка оружия.
1b Бесконечные патроны.
1c Дроп гранат и ножа.
1d Растворять труп, когда убили.
1e Автоматическая установка глушителя.
1f Иммунитет от запрета оружия.
1g Цвета оружия.
1h Цветной эффект при убийстве в голову, или с ножа или гранаты.
1i Измененные world модельки гранат при броске.
1j Огненная граната при броске.
1k Поджигающая граната при взрыве на расстоянии 1.5 игрового метра.
1l Временное ускорение игрока при получении урона.
1m Озвучка низкого уровня пaтpoнoв для игры CS:S v.34 и CS:S как в игре CSGO
1n Быcтpaя уcтaнoвкa C4.
2a Возможность кикнуть игрока с сервера.
2d Возможность бросить любое оружие у игроков.
2e Возможность включить/выключить фонарик у игроков.
2f Возможность нарисовать спрей от лица игроков.
Если у кого-либо есть вопросы, задаем их в этой теме.
И также принимаются всякие идеи, внедрения новых функций в плагин.
Отписываемся об ошибках и работе плагина.
Немножко инфы:
Требование для работы:
SourceMod 1.6.3 и выше.
Socket 3.0.1 и выше.
Тонну мозгов
Для работы плагина требуется: SourceMod 1.5.3 и выше! Для тех, у кого CS:S v.34 и старая версия SourceMod, то просто в панели в Плагины переустановите SourceMod
Плагин имеет автоматическое обновление.
источник
Иммунитет плагин для игроков
VIP [Flags And Immunity] v1.2.6
_wS_ | Дата: Четверг, 09.10.2014, 00:22:17 | Сообщение # 1 |
VIP [Flags And Immunity] v1.2.6 (модуль для VIP) (csgo, css, css v34) flags_and_immunity : флаги : иммунитет Пример: flags_and_immunity : cf : 50 Уверен снова посыпятся сообщения вроде: «ну я дал игроку флаг/иммунитет, но он все равно есть в каком-то меню и тд». Это недочет плуга, который показывает это меню, а именно: он проверяет флаги игрока один раз при входе на сервер и запоминает полученные данные и не учитывает то, что флаги и иммунитет могут меняться в любой момент игры. Единственное (известное мне) решение: это редактировать подобные плуги. Можете прикладывать их в эту тему и просить подправить. Или самих авторов просить. Если sourcebans или какой-то плаг перезаписывает группы/флаги, проблема может решиться если дополнительно выдать игроку флаг b. Прикрепления: 4647761.jpg (27.3 Kb) · playersvotes-re.zip (33.1 Kb) · AdminList.zip (6.5 Kb) | |
_wS_ | Дата: Четверг, 06.04.2017, 08:36:17 | Сообщение # 2 |
n1ber | Дата: Четверг, 06.04.2017, 11:42:09 | Сообщение # 3 |
| |
_wS_ | Дата: Четверг, 06.04.2017, 13:19:14 | Сообщение # 4 |
Ну, если убедишь что от неё есть толк 1. Купил ключ Или даже пусть это владелец получил логин + пароль. | |
n1ber | Дата: Четверг, 06.04.2017, 14:41:59 | Сообщение # 5 | |
| _wS_, ты прав, но обычно, у меня, покупка производится через ВК ???? поэтому отследить проблем нет) По большей части это защита от школьников))) | |
Serjik432 | Дата: Суббота, 08.04.2017, 14:11:14 | Сообщение # 6 | |
| Прикрепления: weapon-restrict.zip (72.6 Kb) | |
chilla_mytku | Дата: Суббота, 08.04.2017, 14:38:00 | Сообщение # 7 |
| |
_wS_ | Дата: Суббота, 08.04.2017, 15:49:41 | Сообщение # 8 |
Это значит, что sm_weapon_restrict_immunity должно быть в любом случае 1. Затем идет проверка доступа к команде sm_restrict_immunity_level, если она существует, то будет проверяться флаг, с которым была создана эта команда, но этот плуг не создаёт эту команду, и если никакой другой её тож не создаёт, то проверяется флаг reservation ( a ). Вывод: | |
chilla_mytku | Дата: Суббота, 08.04.2017, 18:36:35 | Сообщение # 9 |
| |
Serjik432 | Дата: Понедельник, 10.04.2017, 12:51:14 | Сообщение # 10 |
| |
_wS_ | Дата: Воскресенье, 23.04.2017, 18:25:30 | Сообщение # 11 |
n1ber | Дата: Понедельник, 01.05.2017, 08:22:10 | Сообщение # 12 | |
| После обновления, перестал иммунитет работать. с плагином weapon_restrict. Не работает! Покупать авп продолжают все игроки(Вип и админы) | |
ramazan1982 | Дата: Среда, 25.04.2018, 12:22:21 | Сообщение # 13 | |
| После обновления, перестал иммунитет работать. с плагином weapon_restrict. Не работает! Покупать авп продолжают все игроки(Вип и админы) источник |