#include < amxmodx >
#include < hamsandwich >
#include < engine >
#include < cstrike >
#include < fun >
#include < csx >
#include < nvault>
#include < fakemeta >
#include < fakemeta_util >
#define PLUGIN "Deathrun"
#define VERSION "1.0"
#define AUTHOR "spRyTe"
#define prefix "HEKER"
#define IMMUNITY_ACCESS_LEVEL ADMIN_IMMUNITY
#define AUTO_TEAM_JOIN_DELAY 0.1
#define TEAM_SELECT_VGUI_MENU_ID 2
new g_szName[ 33 ][ 32 ];
new g_Knife[ 33 ];
new iVault;
//MULTIJUMP
new jumpnum[33] = 0
new bool:dojump[33] = false
new bool:multijump[33]
new const g_szMoneyAccesFlag[ ] = "y";
new bool: superdmg[33],bool: knife1[33],bool: knife2[33],bool: knife3[33],bool:knife4[33],bool: knife6[33],bool: knife7[33],bool: knife8[33];
native get_user_points(id)
native set_user_points(id,money)
new g_pcvar_team
new g_pcvar_class
new g_pcvar_imm
//MODELE
new v_dmgknife[] = "models/knife-mod/v_dmgknife.mdl";
new v_silentknife[] = "models/knife-mod/v_silentknife.mdl";
new v_speedknife[] = "models/knife-mod/v_speedknife.mdl";
new v_jumpknife[] = "models/knife-mod/v_jumpknife.mdl";
new v_healthknife[] = "models/knife-mod/v_healthknife.mdl";
new v_defaultknife[] = "models/knife-mod/v_defaultknife.mdl";
new v_allknife[] ="models/knife-mod/v_allknife.mdl";
/////////////////////////////////
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("CurWeapon","CurWeapon","be","1=1")
register_clcmd("say /knife","knifemenu")
register_clcmd("say_team /knife","knifemenu")
register_clcmd("say knife","knifemenu")
register_clcmd("say_team knife","knifemenu")
register_concmd("knife","knifemenu")
RegisterHam(Ham_TakeDamage, "player", "vip_damage")
register_message(get_user_msgid("ShowMenu"), "message_show_menu")
register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")
g_pcvar_team = register_cvar("ajc_team", "2")
g_pcvar_class = register_cvar("ajc_class", "5")
g_pcvar_imm = register_cvar("ajc_imm", "0")
RegisterHam(Ham_Killed, "player", "fwdPlayerKilledPost", 1);
iVault = nvault_open( "deathrun_knifetype" );
if( iVault == INVALID_HANDLE )
{
set_fail_state( "nValut returned invalid handle!" );
}
}
public client_authorized( id )
{
if( is_user_bot( id ) )
return 0;
get_user_name( id, g_szName[ id ], sizeof ( g_szName[] ) -1 );
LoadMoney( id );
return 0;
}
public client_putinserver(id)
{
jumpnum[id] = 0
dojump[id] = false
}
public client_disconnect( id )
{
if( is_user_bot( id ) )
return 0;
SaveMoney( id );
jumpnum[id] = 0
dojump[id] = false
return 0;
}
public LoadMoney( id )
{
static szData[ 256 ], iTimestamp;
if( nvault_lookup( iVault, g_szName[ id ], szData, sizeof ( szData ) -1, iTimestamp ))
{
static szMoney[ 15 ];
parse( szData, szMoney, sizeof ( szMoney ) -1 );
g_Knife[ id ] = str_to_num( szMoney );
return;
}
else
{
g_Knife[ id ] = 0;
}
}
public SaveMoney( id )
{
static szData[ 256 ];
formatex( szData, sizeof ( szData ) -1, "%i", g_Knife[ id ] );
nvault_set( iVault, g_szName[ id ], szData );
}
public plugin_end( )
{
nvault_close( iVault );
}
public knifemenu(id){
new menu = menu_create( "[Magic KNIFE]", "menu_knife" )
menu_additem(menu, "\wDMG \yKNIFE\r(2xDMG)", "1", 0)
menu_additem(menu, "\wSILET\yKNIFE\r(No FootSteps)", "2", 0 )
menu_additem(menu, "\wSPEED \yKNIFE \r(MORE SPEED)", "3", 0 )
menu_additem(menu, "\wJUMP \y KNIFE \r(LOW GRAVITY)", "4", 0 )
if(g_Knife[id] == 0)
{
menu_additem(menu, "\wHEALTH \y KNIFE\r(REGENERATION HP) \y 200 points", "5",0)
}
if(g_Knife[id] >= 2)
{
menu_additem(menu, "\wHEALTH \y KNIFE\r(REGENERATION HP)", "5",0)
}
if(g_Knife[id] <= 2)
{
menu_additem(menu, "\wMULTI \y JUMP KNIFE \r (2x JUMP) \y 500 points", "6",0)
}
if(g_Knife[id] >= 4)
{
menu_additem(menu, "\wMULTI \y JUMP KNIFE \r (2x JUMP)", "6",0)
}
if(g_Knife[id] <= 4)
{
menu_additem(menu, "\wALL\y KNIFE \r(ALL IN ONE)\y 1000 points", "7", 0 )
}
if(g_Knife[id] >= 6)
{
menu_additem(menu, "\wALL\y KNIFE \r(ALL IN ONE)", "7", 0 )
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
public menu_knife(id,menu,item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
if( !( get_user_flags( id ) & read_flags( g_szMoneyAccesFlag ) ) )
{
Color(id,"^4[%s]^3 Trebuie sa ai numele inregistrat pentru a folosi acest cutit",prefix)
Color(id,"^4[%s]^3 Foloseste ^3 /inregistrare parola",prefix)
return PLUGIN_HANDLED;
}
new data[6], szName[64], access, callback
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
knife1[id] = true;
knife2[id] = false;
knife3[id] = false;
knife4[id] = false;
knife6[id] = false;
knife7[id] = false;
superdmg[id] = true;
knife8[id] = false;
multijump[id] = false;
set_user_footsteps(id,0)
set_user_maxspeed(id,170.0)
set_user_gravity(id,1.0)
iSetKnife(id)
Color(id,"^4[%s]^3 Ai ales ^4 [DMG KNIFE]^3,vei avea DMG dublu asupra victimei!",prefix)
return PLUGIN_HANDLED;
}
case 2:
{
knife1[id] = false;
knife2[id] = true;
knife3[id] = false;
knife4[id] = false;
knife6[id] = false;
knife7[id] = false;
knife8[id] = false;
multijump[id] = false;
set_user_footsteps(id,1)
set_user_maxspeed(id,250.0)
set_user_gravity(id,1.0)
iSetKnife(id)
Color(id,"^4[%s]^3 Ai ales ^4 [Silent KNIFE]^3,pasii tai nu se vor auzi!",prefix)
return PLUGIN_HANDLED;
}
case 3:
{
knife1[id] = false;
knife2[id] = false;
knife3[id] = true;
knife4[id] = false;
knife6[id] = false;
knife7[id] = false;
knife8[id] = false;
multijump[id] = false;
Color(id,"^4[%s]^3 Ai ales ^4 [SPEED KNIFE]^3,vei avea mai multa viteza!",prefix)
set_user_footsteps(id,0)
set_user_gravity(id,1.0)
iSetKnife(id)
set_user_maxspeed(id,400.0)
return PLUGIN_HANDLED;
}
case 4:
{
knife1[id] = false;
knife2[id] = false;
knife3[id] = false;
knife4[id] = true;
knife6[id] = false;
knife7[id] = false;
knife8[id] = false;
multijump[id] = false;
Color(id,"^4[%s]^3 Ai ales ^4 [JUMP KNIFE]^3,vei avea mai putine gravitatie!",prefix)
set_user_footsteps(id,0)
set_user_maxspeed(id,250.0)
set_user_gravity(id,0.5)
iSetKnife(id)
return PLUGIN_HANDLED;
}
case 5:
{
if(get_user_points(id) < 300 && g_Knife[id] == 0)
{
Color(id,"^4[%s]^3 Nu ai destul points! Ai doar %i points ",prefix,get_user_points(id))
return PLUGIN_HANDLED;
}
if(get_user_points(id) >= 300 && g_Knife[id] == 0)
{
set_user_points(id,get_user_points(id) - 300)
g_Knife[id] = 2;
SaveMoney(id);
knife1[id] = false;
knife2[id] = false;
knife3[id] = false;
knife4[id] = false;
knife6[id] = true;
knife7[id] = false;
knife8[id] = false;
multijump[id] = false;
set_user_footsteps(id,0)
set_user_maxspeed(id,250.0)
set_user_gravity(id,1.0)
set_task(10.0,"regenerare",id)
iSetKnife(id)
Color(id,"^4[%s]^3 Ai ales ^4 [HEALTH KNIFE]^3,viata ta se va regenera odata la 10 sec cu inca 20 HP!",prefix)
SaveMoney(id)
return PLUGIN_HANDLED;
}
if(g_Knife[id] >= 2)
{
knife1[id] = false;
knife2[id] = false;
knife3[id] = false;
knife4[id] = false;
knife6[id] = true;
knife7[id] = false;
knife8[id] = false;
multijump[id] = false;
superdmg[id] = true;
set_user_footsteps(id,0)
set_user_maxspeed(id,250.0)
set_user_gravity(id,1.0)
set_task(10.0,"regenerare",id)
iSetKnife(id)
Color(id,"^4[%s]^3 Ai ales ^4 [HEALTH KNIFE]^3,viata ta se va regenera odata la 10 sec cu inca 20 HP!",prefix)
SaveMoney(id)
return PLUGIN_HANDLED;
}
}
case 6:
{
if(get_user_points(id) < 500 && g_Knife[id] < 2)
{
Color(id,"^4[%s]^3 Trebuie sa ai achizitionat si ^3[HEALTH KNIFE]",prefix)
return PLUGIN_HANDLED;
}
if(get_user_points(id) < 500 && (g_Knife[id] == 2))
{
Color(id,"^4[%s]^3 Nu ai destul points! Ai doar %i points ",prefix,get_user_points(id))
return PLUGIN_HANDLED;
}
if(get_user_points(id) >= 500 && g_Knife[id] == 2)
{
set_user_points(id,get_user_points(id) - 500)
g_Knife[id] = 4;
SaveMoney(id)
knife1[id] = false;
knife2[id] = false;
knife3[id] = false;
knife4[id] = false;
knife6[id] = true;
knife7[id] = false;
knife8[id] = true;
multijump[id] = true;
set_user_footsteps(id,0)
set_user_maxspeed(id,250.0)
set_user_gravity(id,1.0)
set_task(10.0,"regenerare",id)
iSetKnife(id)
Color(id,"^4[%s]^3 Ai ales ^4 [MULTI JUMP KNIFE]^3,2x Jump + Regenerare HP!",prefix)
SaveMoney(id)
return PLUGIN_HANDLED;
}
if(g_Knife[id] >= 4)
{
knife1[id] = false;
knife2[id] = false;
knife3[id] = false;
knife4[id] = false;
knife6[id] = false;
knife7[id] = false;
knife8[id] = true;
multijump[id] = true;
superdmg[id] = true;
set_user_footsteps(id,0)
set_user_maxspeed(id,250.0)
set_user_gravity(id,1.0)
set_task(10.0,"regenerare",id)
iSetKnife(id)
Color(id,"^4[%s]^3 Ai ales ^4 [MULTI JUMP KNIFE]^3,2x Jump + Regenerare HP!",prefix)
return PLUGIN_HANDLED;
}
}
case 7:
{
if(get_user_points(id) < 1000 && g_Knife[id] < 5)
{
Color(id,"^4[%s]^3 Trebuie sa ai achizitionat si ^3KNIFES anterioare",prefix)
return PLUGIN_HANDLED;
}
if(get_user_points(id) < 1000 && g_Knife[id] == 4)
{
Color(id,"^4[%s]^3 Nu ai destul points! Ai doar %i points ",prefix,get_user_points(id))
return PLUGIN_HANDLED;
}
if(get_user_points(id) >= 1000 && g_Knife[id] >=4)
{
set_user_points(id,get_user_points(id) - 1000)
g_Knife[id] = 6;
SaveMoney(id)
knife1[id] = false;
knife2[id] = false;
knife3[id] = false;
knife4[id] = false;
knife6[id] = false;
knife7[id] = true;
knife8[id] = false;
multijump[id] = true;
superdmg[id] = true;
set_user_footsteps(id,0)
set_user_maxspeed(id,250.0)
set_user_gravity(id,1.0)
set_task(10.0,"regenerare",id)
iSetKnife(id)
Color(id,"^4[%s]^3 Ai ales ^4 [ALL KNIFE]^3,ai toate beneficiile!",prefix)
SaveMoney(id)
return PLUGIN_HANDLED;
}
if(g_Knife[id] >= 6)
{
knife1[id] = false;
knife2[id] = false;
knife3[id] = false;
knife4[id] = false;
knife6[id] = false;
knife7[id] = true;
knife8[id] = false;
multijump[id] = true;
superdmg[id] = true;
set_user_footsteps(id,1)
set_user_maxspeed(id,340.0)
set_user_gravity(id,0.5)
set_task(10.0,"regenerare",id)
iSetKnife(id)
Color(id,"^4[%s]^3 Ai ales ^4 [ALL KNIFE]^3,vei avea toate beneficiile!",prefix)
return PLUGIN_HANDLED;
}
}
}
menu_destroy(menu)
return 1;
}
public regenerare(id)
{
if(knife4[id] == true || knife7[id] == true)
{
set_user_health(id,get_user_health(id) + 30)
set_task(20.0,"regenerare2",id)
Color(id,"^4[%s]^3 Ai primit ^4 +30 HP ^3 de la cutit!In 10 secunde viata ti se va regenera!",prefix)
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public regenerare2(id)
{
if(knife4[id] == true || knife7[id] == true)
{
set_user_health(id,get_user_health(id) + 30)
set_task(20.0,"regenerare",id)
Color(id,"^4[%s]^3 Ai primit ^4 +30 HP ^3 de la cutit!In 10 secunde viata ti se va regenera!",prefix)
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public CurWeapon(id)
{
if(get_user_weapon(id) == CSW_KNIFE && knife1[id] == true)
{
set_pev(id, pev_viewmodel2, v_dmgknife)
}
if(get_user_weapon(id) == CSW_KNIFE && knife2[id] == true)
{
set_pev(id, pev_viewmodel2, v_silentknife)
}
if(get_user_weapon(id) == CSW_KNIFE && knife3[id] == true)
{
set_pev(id, pev_viewmodel2, v_speedknife)
}
if(get_user_weapon(id) == CSW_KNIFE && knife4[id] == true)
{
set_pev(id, pev_viewmodel2, v_jumpknife)
}
if(get_user_weapon(id) == CSW_KNIFE && knife8[id] == true)
{
set_pev(id, pev_viewmodel2, v_defaultknife)
}
if(get_user_weapon(id) == CSW_KNIFE && knife6[id] == true)
{
set_pev(id, pev_viewmodel2, v_healthknife)
}
if( get_user_weapon(id) == CSW_KNIFE && knife7[id] == true)
{
set_pev(id, pev_viewmodel2, v_allknife)
}
//PUTERI
if(get_user_weapon(id) == CSW_KNIFE && knife1[id] == true)
{
set_user_footsteps(id,0)
set_user_maxspeed(id,250.0)
set_user_gravity(id,1.0)
}
if(get_user_weapon(id) == CSW_KNIFE && knife2[id] == true)
{
set_user_footsteps(id,1)
set_user_maxspeed(id,250.0)
set_user_gravity(id,1.0)
}
if(get_user_weapon(id) == CSW_KNIFE && knife3[id] == true)
{
set_user_footsteps(id,0)
set_user_maxspeed(id,400.0)
set_user_gravity(id,1.0)
}
if(get_user_weapon(id) == CSW_KNIFE && knife4[id] == true)
{
set_user_footsteps(id,0)
set_user_maxspeed(id,250.0)
set_user_gravity(id,0.5)
}
if(get_user_weapon(id) == CSW_KNIFE&& knife8[id] == true)
{
set_user_footsteps(id,0)
set_user_maxspeed(id,250.0)
set_user_gravity(id,1.0)
}
if(get_user_weapon(id) == CSW_KNIFE && knife6[id] == true)
{
set_user_footsteps(id,0)
set_user_maxspeed(id,250.0)
set_user_gravity(id,1.0)
}
if(get_user_weapon(id) == CSW_KNIFE && knife7[id] == true)
{
set_user_footsteps(id,1)
set_user_maxspeed(id,400.0)
set_user_gravity(id,0.5)
}
new wID = get_user_weapon(id, _, _);
if(wID != CSW_KNIFE)
{
set_user_footsteps(id,0)
set_user_maxspeed(id,250.0)
set_user_gravity(id,1.0)
}
return PLUGIN_HANDLED
}
public vip_damage(victima, inflictor, atacator, Float:dmg)
{
if(is_user_alive(atacator) && get_user_weapon(atacator) == CSW_KNIFE && superdmg[atacator] == true)
{
SetHamParamFloat(4, dmg * 2.0)
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public plugin_precache()
{
precache_model("models/knife-mod/v_dmgknife.mdl")
precache_model("models/knife-mod/v_silentknife.mdl")
precache_model("models/knife-mod/v_speedknife.mdl")
precache_model("models/knife-mod/v_jumpknife.mdl")
precache_model("models/knife-mod/v_defaultknife.mdl")
precache_model("models/knife-mod/v_healthknife.mdl")
precache_model("models/knife-mod/v_allknife.mdl")
}
stock Color(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
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();
}
}
}
}
public iSetKnife(id) {
new wID = get_user_weapon(id, _, _);
if(wID != CSW_KNIFE)
return 0;
if(knife1[id] == true) {
entity_set_string(id, EV_SZ_viewmodel, "models/knife-mod/v_dmgknife.mdl");
}
if(knife2[id] == true) {
entity_set_string(id, EV_SZ_viewmodel, "models/knife-mod/v_silentknife.mdl");
}
if(knife3[id] == true) {
entity_set_string(id, EV_SZ_viewmodel, "models/knife-mod/v_speedknife.mdl");
}
if(knife4[id] == true) {
entity_set_string(id, EV_SZ_viewmodel, "models/knife-mod/v_jumpknife.mdl");
}
if(knife8[id] == true) {
entity_set_string(id, EV_SZ_viewmodel, "models/knife-mod/v_defaultknife.mdl");
}
if(knife6[id] == true) {
entity_set_string(id, EV_SZ_viewmodel, "models/knife-mod/v_healthknife.mdl");
}
if(knife7[id] == true) {
entity_set_string(id, EV_SZ_viewmodel, "models/knife-mod/v_allknife.mdl");
}
return 0;
}
public fwdPlayerKilledPost(iVictim, iKiller, iShoudlGib)
{
if(get_user_team(iVictim) == 2)
{
set_task(2.0,"respawn",iVictim)
}
return HAM_IGNORED;
}
public respawn(id)
{
ExecuteHamB(Ham_CS_RoundRespawn, id)
return PLUGIN_HANDLED;
}
/* =================================== AUTO TEAM JOIN ==========================*/
public client_PreThink(id)
{
if(!is_user_alive(id)) return PLUGIN_CONTINUE
new nbut = get_user_button(id)
new obut = get_user_oldbutton(id)
if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
{
if(jumpnum[id] < 1 && multijump[id] == true)
{
dojump[id] = true
jumpnum[id]++
return PLUGIN_CONTINUE
}
}
if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
{
jumpnum[id] = 0
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public client_PostThink(id)
{
if(!is_user_alive(id)) return PLUGIN_CONTINUE
if(dojump[id] == true && multijump[id] == true)
{
new Float:velocity[3]
entity_get_vector(id,EV_VEC_velocity,velocity)
velocity[2] = random_float(265.0,285.0)
entity_set_vector(id,EV_VEC_velocity,velocity)
dojump[id] = false
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public message_show_menu(msgid, dest, id) {
if (!should_autojoin(id))
return PLUGIN_CONTINUE
static team_select[] = "#Team_Select"
static menu_text_code[sizeof team_select]
get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
if (!equal(menu_text_code, team_select))
return PLUGIN_CONTINUE
set_force_team_join_task(id, msgid)
return PLUGIN_HANDLED
}
public message_vgui_menu(msgid, dest, id) {
if (get_msg_arg_int(1) != TEAM_SELECT_VGUI_MENU_ID || !should_autojoin(id))
return PLUGIN_CONTINUE
set_force_team_join_task(id, msgid)
return PLUGIN_HANDLED
}
bool:should_autojoin(id) {
return (get_pcvar_num(g_pcvar_team) && !get_user_team(id) && !task_exists(id) && (!get_pcvar_num(g_pcvar_imm) || !(get_user_flags(id) & IMMUNITY_ACCESS_LEVEL)))
}
set_force_team_join_task(id, menu_msgid) {
static param_menu_msgid[2]
param_menu_msgid[0] = menu_msgid
set_task(AUTO_TEAM_JOIN_DELAY, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid)
}
public task_force_team_join(menu_msgid[], id) {
if (get_user_team(id))
return
static team[2], class[2]
get_pcvar_string(g_pcvar_team, team, sizeof team - 1)
get_pcvar_string(g_pcvar_class, class, sizeof class - 1)
force_team_join(id, menu_msgid[0], team, class)
}
stock force_team_join(id, menu_msgid, /* const */ team[] = "5", /* const */ class[] = "0") {
static jointeam[] = "jointeam"
if (class[0] == '0') {
engclient_cmd(id, jointeam, team)
return
}
static msg_block, joinclass[] = "joinclass"
msg_block = get_msg_block(menu_msgid)
set_msg_block(menu_msgid, BLOCK_SET)
engclient_cmd(id, jointeam, team)
engclient_cmd(id, joinclass, class)
set_msg_block(menu_msgid, msg_block)
}