#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>
#include <fun>
#define PLUGIN "VipDR"
#define VERSION "1.0"
#define AUTHOR "D3luxe"
//customization
#define VIP_ACCESS ADMIN_LEVEL_H
#define IP_SERVER_LICENTIAT ""
#define TASKID 13314
#define TICK 0.1
#define MAX_DISTANCE 300
#define DEF_TRAIL_LIFE 2
new const Tag[] = "[]";
new const id_owner[] = "@yahoo.com";
new gl_player_colors[33][3];
new gl_player_position[33][3]
new gl_timer_count[33]
new gl_timer_limit
//don't modify nothing under this line
new bool:g_inv[33],bool:g_grv[33],bool:g_speed[33],bool:g_dgl[33],bool:g_m4a1[33],bool:g_he[33],bool:g_sp[33],bool:HasJet[33],bool:HasNoClip[33];
new g_cjet[33],bool:has_trail[33];
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame;
new gJetSprite,gJetTime,flare_type,gl_trail_life;
public plugin_init() {
new ServerIp[ 22 ];
get_user_ip( 0, ServerIp, sizeof ( ServerIp ) -1, 1 );
if( !equal( ServerIp, IP_SERVER_LICENTIAT ) )
{
register_plugin(PLUGIN, VERSION, AUTHOR);
set_fail_state( "Nu detii o licenta valabila ! Plugin-ul nu va functiona corespunzator !");
pause( "ade" );
}
register_clcmd("say /vm","meniu_vip");
RegisterHam(Ham_Spawn,"player","spawn_resets",1);
RegisterHam(Ham_Player_ResetMaxSpeed,"player","viteza_fix",1);
RegisterHam( Ham_Player_Jump, "player", "bacon_playerJumping" );
gJetTime = register_cvar( "deathrun_jetpack_duration", "5" );
gl_trail_life = DEF_TRAIL_LIFE
gl_timer_limit = floatround(float(gl_trail_life)/TICK)
}
public plugin_precache()
{
gJetSprite = precache_model( "sprites/explode1.spr" );
flare_type = precache_model( "sprites/zbeam2.spr" );
}
public client_disconnect(id) {
if (task_exists(TASKID+id)) remove_task(TASKID+id)
gl_player_colors[id][0] = gl_player_colors[id][1] = gl_player_colors[id][2] = 0
}
public viteza_fix(id)
{
if(g_speed[id] && is_user_alive(id) && (get_user_flags(id) & VIP_ACCESS))
set_user_maxspeed(id,600.0);
}
public client_putinserver(id)
{
if(get_user_flags(id) & VIP_ACCESS)
{
new name[33];
get_user_name(id,name,charsmax(name));
ChatColor(id,"!g%s!yJucatorul cu acces vip s-a conectat pe server!",Tag,name);
}else if(get_user_flags(id) == read_flags("abcdefghijklmnopqrstu"))
{
new name[33];
get_user_name(id,name,charsmax(name));
ChatColor(id,"!g%s!yAtentie ! Fondatorul %s s-a conectat pe server !",Tag,name);
}
}
public spawn_resets(id)
{
if(get_user_flags(id) & VIP_ACCESS)
{
g_inv[id] = false;
g_grv[id] = false;
g_speed[id] = false;
g_dgl[id] = false;
g_m4a1[id] = false;
g_he[id] = false;
g_sp[id] = false;
if(g_cjet[id])
g_cjet[id] = 0;
HasJet[id] = false;
has_trail[id] = true;
HasNoClip[id] = false;
if(is_user_alive(id))
{
set_user_health(id,150);
set_user_armor(id,150);
do_trail(id);
}
}else if(get_user_flags(id) == read_flags("abcdefghijklmnopqrstu"))
{
g_inv[id] = false;
g_grv[id] = false;
g_speed[id] = false;
g_dgl[id] = false;
g_m4a1[id] = false;
g_he[id] = false;
g_sp[id] = false;
if(g_cjet[id])
g_cjet[id] = 0;
HasJet[id] = false;
has_trail[id] = true;
HasNoClip[id] = false;
if(is_user_alive(id))
{
set_user_health(id,200);
set_user_armor(id,200);
do_trail(id);
}
}
}
public meniu_vip(id)
{
if( !(get_user_flags(id) & VIP_ACCESS) )
{
ChatColor(id,"!g%s!yNu ai VIP daca vrei vip contacteaza-l pe owner la id-ul %s.",Tag,id_owner);
return PLUGIN_HANDLED;
}
if(!is_user_alive(id))
{
ChatColor(id,"!g%s!yNu poti folosi meniul cand esti mort.",Tag);
return PLUGIN_HANDLED;
}
static szText[ 555 char ];
formatex( szText, charsmax( szText ), "Trail [%s]",has_trail[id]? "ON":"OFF");
new menu = menu_create("Vip Menu", "vip_handler" );
menu_additem(menu, szText, "1", 0);
menu_additem(menu, "Invizibilitate ---> 90%", "2", 0);
menu_additem(menu, "Gravitatie ---> 500", "3", 0);
menu_additem(menu, "Viteza ---> 600", "4", 0);
menu_additem(menu, "Deagle ---> 7/7", "5", 0);
menu_additem(menu, "He Grenade ---> 20", "6", 0);
menu_additem(menu, "M4a1 ----> 30/0 Gloante", "7", 0);
menu_additem(menu, "Ak47 30/30 + 1 HE", "8", 0);
menu_additem(menu, "JetPack", "9", 0);
menu_additem(menu, "NoClip [5 secunde]", "10", 0);
menu_setprop( menu, MPROP_EXITNAME, "Exit")
menu_display( id, menu, 0);
return PLUGIN_HANDLED;
}
public vip_handler(id, menu, item )
{
if(item == MENU_EXIT || !is_user_alive(id) || !(get_user_flags(id) & VIP_ACCESS) )
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
static data[6], name[64], acs, cllbck, key;
menu_item_getinfo(menu, item, acs, data, 5, name, 63, cllbck)
key = str_to_num(data)
switch(key)
{
case 1 :
{
switch(has_trail[id])
{
case true:
{
has_trail[id] = false;
kill_trail_task(id);
}
case false:
{
has_trail[id] = true;
do_trail(id);
}
}
meniu_vip(id);
}
case 2 :
{
if(g_inv[id])
{
ChatColor(id,"!g%s!yAi ales deja Invizibilitate runda asta.",Tag);
return PLUGIN_HANDLED;
}
g_inv[id] = true;
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha,10);/*100 e vizibil la 10 e 90% vizibil*/
ChatColor(id,"!g%s!yAi ales Invizibilitate.",Tag);
}
case 3 :
{
if(g_grv[id])
{
ChatColor(id,"!g%s!yAi ales deja Gravity runda asta.",Tag);
return PLUGIN_HANDLED;
}
g_grv[id] = true;
set_user_gravity(id,500.0);
ChatColor(id,"!g%s!yAi ales Gravitatie.",Tag);
}
case 4 :
{
if(g_speed[id])
{
ChatColor(id,"!g%s!yAi ales deja Speed runda asta.",Tag);
return PLUGIN_HANDLED;
}
g_speed[id] = true;
set_user_maxspeed(id,600.0);
ChatColor(id,"!g%s!yAi ales Speed.",Tag);
}
case 5 :
{
if(g_dgl[id])
{
ChatColor(id,"!g%s!yAi ales deja Deagle runda asta.",Tag);
return PLUGIN_HANDLED;
}
g_dgl[id] = true;
give_item(id,"weapon_deagle");
cs_set_user_bpammo(id,CSW_DEAGLE,7);
ChatColor(id,"!g%s!yAi ales Deagle.",Tag);
}
case 6 :
{
if(g_he[id])
{
ChatColor(id,"!g%s!yAi ales deja 20 He runda asta.",Tag);
return PLUGIN_HANDLED;
}
g_he[id] = true;
give_item(id,"weapon_hegrenade");
cs_set_user_bpammo(id,CSW_HEGRENADE,20);
ChatColor(id,"!g%s!yAi ales 20 He-uri.",Tag);
}
case 7 :
{
if(g_m4a1[id])
{
ChatColor(id,"!g%s!yAi ales deja M4A1 runda asta.",Tag);
return PLUGIN_HANDLED;
}
g_m4a1[id] = true;
give_item(id,"weapon_m4a1");
ChatColor(id,"!g%s!yAi ales M4a1.",Tag);
}
case 8 :
{
if(g_sp[id])
{
ChatColor(id,"!g%s!yAi ales deja Mai Multe Lucruri runda asta.",Tag);
return PLUGIN_HANDLED;
}
g_sp[id] = true;
give_item(id,"weapon_ak47");
cs_set_user_bpammo(id,CSW_AK47,30);
give_item(id,"weapon_hegrenade");
ChatColor(id,"!g%s!yAi ales Mai Multe Lucruri.",Tag);
}
case 9 :
{
if(HasJet[id])
{
ChatColor(id,"!g%s!yAi ales deja Mai Multe Lucruri runda asta.",Tag);
return PLUGIN_HANDLED;
}
if(g_cjet[id] == 3)
{
ChatColor(id,"!g%s!yAi folosit deja jetpack-ul de 3 ori.",Tag);
return PLUGIN_HANDLED;
}
set_task( float( get_pcvar_num( gJetTime ) ), "remove_jetpack", id );
g_cjet[id]++;
meniu_vip(id);
HasJet[ id ] = true;
}
case 10 :
{
if(HasNoClip[ id ])
{
ChatColor(id,"!g%s!yAi folosit deja NoClip.",Tag);
return PLUGIN_HANDLED;
}
set_task( 5.0, "remove_noclip", id );
set_user_noclip( id, 1 );
HasNoClip[ id ] = true;
meniu_vip(id);
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public remove_noclip(id)
{
set_user_noclip( id, 0 );
ChatColor(id,"!g%s!yNoclip-ul de 5 secunde a expirat.",Tag);
}
public remove_jetpack( id )
{
HasJet[ id ] = false;
ChatColor(id,"!g%s!yAu trecut cele %d secunde de jetpack.",Tag,get_pcvar_num(gJetTime));
}
public bacon_playerJumping( id )
{
/* --| If plugin is on, and user has jetpack item */
if(HasJet[ id ] && get_user_flags(id) & VIP_ACCESS)
{
new iOrigin[ 3 ];
get_user_origin( id, iOrigin, 0 );
iOrigin[ 2 ] -= 20;
new Float:fVelocity[ 3 ];
pev( id, pev_velocity, fVelocity );
fVelocity[ 2 ] += 93;
set_pev( id, pev_velocity, fVelocity );
create_flame( iOrigin );
}
}
stock create_flame( origin[ 3 ] )
{
message_begin( MSG_PVS, SVC_TEMPENTITY, origin );
write_byte( TE_SPRITE );
write_coord( origin[ 0 ] );
write_coord( origin[ 1 ] );
write_coord( origin[ 2 ] );
write_short( gJetSprite );
write_byte( 3 );
write_byte( 99 );
message_end();
}
do_trail(id)
{
if(!has_trail[id])
return;
kill_trail_task(id)
gl_player_colors[id][0] = random(256)
gl_player_colors[id][1] = random(256)
gl_player_colors[id][2] = random(256)
get_user_origin(id, gl_player_position[id])
set_task(TICK, "check_position", TASKID+id, "", 0, "b")
trail_msg(id)
return
}
/*****************************************************************************************
*****************************************************************************************/
public check_position(taskid) {
new origin[3], id = taskid-TASKID
if (!get_user_team(id)) {
kill_trail_msg(id)
return
}
get_user_origin(id, origin)
if (origin[0]!=gl_player_position[id][0] || origin[1]!=gl_player_position[id][1] || origin[2]!=gl_player_position[id][2]) {
if (get_distance(origin, gl_player_position[id])>MAX_DISTANCE || gl_timer_count[id] >= gl_timer_limit/2) {
kill_trail_msg(id)
trail_msg(id)
}
gl_player_position[id][0] = origin[0]
gl_player_position[id][1] = origin[1]
gl_player_position[id][2] = origin[2]
gl_timer_count[id] = 0
} else {
if (gl_timer_count[id] < gl_timer_limit) gl_timer_count[id]++
}
}
/*****************************************************************************************
*****************************************************************************************/
kill_trail_task(id) {
if (task_exists(TASKID+id)) remove_task(TASKID+id)
kill_trail_msg(id)
gl_player_colors[id][0] = gl_player_colors[id][1] = gl_player_colors[id][2] = 0
}
/*****************************************************************************************
*****************************************************************************************/
kill_trail_msg(id) {
gl_timer_count[id] = 0
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(99) // TE_KILLBEAM
write_short(id)
message_end()
}
/*****************************************************************************************
*****************************************************************************************/
trail_msg(id) {
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(22) // TE_BEAMFOLLOW
write_short(id)
write_short(flare_type)
write_byte(gl_trail_life*10)
write_byte(15)
write_byte(gl_player_colors[id][0])
write_byte(gl_player_colors[id][1])
write_byte(gl_player_colors[id][2])
write_byte(200)
message_end()
}
//stock message
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();
}
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/