Raised This Month: $51 Target: $400
 12% 

Vip Menu Deathrun Respawn


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Deliric
Junior Member
Join Date: Nov 2013
Old 01-03-2014 , 11:23   Vip Menu Deathrun Respawn
Reply With Quote #1

I have a Deathrun Respawn server, as well as a VIP Menu plugin. I want to implement an option in the menu which would memorize your choice, so that you dont have to select your choice everytime you spawn.

Code:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <xs>
#include <engine>

#define FLAG ADMIN_IMMUNITY

new const VIP[] = "DeathRunVip"
new const VIP_MODEL[] = "models/player/DeathRunVip/DeathRunVip.mdl"

new const MENU_OK[] = "misc/DeathRunVip/vip_menu_ok.wav"
new const VIP_CONNECT[] = "misc/DeathRunVip/vip_connect.wav"

#define TASKID_SHOWHUD	2931
#define TASKID_MODEL		3810 

new player_model[33][32]
new Float: g_counter
new bool: g_model[33]
new g_hudsync
new cvar_gravity
new cvar_speed
new SayTxT

new gCylinderSprite;

public plugin_precache()
{
	precache_model(VIP_MODEL)
        precache_sound(VIP_CONNECT)

	precache_sound(MENU_OK)

	gCylinderSprite = precache_model( "sprites/shockwave.spr" );
}

public plugin_init()
{
	register_plugin("Deathrun V.I.P", "1.0", "DoviuX")

	cvar_gravity = register_cvar("dr_vip_gravity", "500")
	cvar_speed = register_cvar("dr_vip_speed", "500")

	RegisterHam(Ham_Spawn, "player", "bacon_spawn", 1)
	register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
	register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")

	g_hudsync = CreateHudSyncObj()
	SayTxT = get_user_msgid("SayText");
}

public client_connect(client)
{
	if(get_user_flags(client) & FLAG)
	{
		client_cmd(client, "spk %s", VIP_CONNECT)

    		new name[32];
    		get_user_name(client, name, 31);
        	set_hudmessage( 0, 255, 0, -1.0, 0.29, 0, 6.0, 12.0 );
        	show_hudmessage( 0, "V.I.P-ul %s se conecteaza.", name);
	}
}

public bacon_spawn(id)
{
    if (!is_user_alive(id))
        return
    
    static CsTeams: team ; team = cs_get_user_team(id)
    
    if (team == CS_TEAM_T && (get_user_flags(id) & FLAG))
    {   
	set_task(2.0, "T_menu", id)

    	new iOrigin[ 3 ];
    	get_user_origin( id, iOrigin );

    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );

	copy(player_model[id], 31, VIP)
		
	new currentmodel[32];
	fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
		
	if(!equal(currentmodel, player_model[id]))
	{
		Task_Model(id + TASKID_MODEL)
		g_counter += 0.1;
	}

	if(!task_exists(TASKID_SHOWHUD + id))
	   set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)

	set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25) 
    }
    else if (team == CS_TEAM_CT && (get_user_flags(id) & FLAG))
    {
	set_task(2.0, "CT_menu", id)

    	new iOrigin[ 3 ];
    	get_user_origin( id, iOrigin );

    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );
    	Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, random( 0 ), random( 255 ), random( 0 ), 255, 0 );

	copy(player_model[id], 31, VIP)

	strip_user_weapons(id)
	give_item(id, "weapon_knife")
		
	new currentmodel[32];
	fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
		
	if(!equal(currentmodel, player_model[id]))
	{
		Task_Model(id + TASKID_MODEL)
		g_counter += 0.1;
	}

	if(!task_exists(TASKID_SHOWHUD + id))
	   set_task(0.2, "Task_ShowHUD", TASKID_SHOWHUD + id)

	set_user_rendering(id,kRenderFxGlowShell,255,0,0,kRenderNormal,25) 
    }
}

public T_menu(id)
{
	if(!is_user_alive(id))
	   return PLUGIN_HANDLED
		
    	new gmenu = menu_create("\yV.I.P Menu" , "Vip_Handler");
    	menu_additem(gmenu ,"\r255 \wHealth", "1" , 0);
    	menu_additem(gmenu ,"\r255 \wArmor", "2" , 0);
        menu_additem(gmenu ,"\wDeagle cu \r2 gloante", "3" , 0);
    	menu_additem(gmenu ,"\wGrenada HE", "4" , 0);
    	menu_additem(gmenu ,"\wGravitatie", "5" , 0);
 
    	menu_setprop(gmenu , MPROP_EXIT , MEXIT_ALL);
 
    	menu_display(id , gmenu , 0);

	return PLUGIN_CONTINUE
}

public CT_menu(id)
{
	if(!is_user_alive(id))
	   return PLUGIN_HANDLED
		
	new gmenu = menu_create("\yV.I.P Menu" , "VipCt_Handler");
    	menu_additem(gmenu ,"\r255 \wHealth", "1" , 0);
    	menu_additem(gmenu ,"\r255 \wArmor", "2" , 0);
	menu_additem(gmenu ,"\wGrenada HE", "3" , 0);
    	menu_additem(gmenu ,"\wGravitatie", "4" , 0);
 
    	menu_setprop(gmenu , MPROP_EXIT , MEXIT_ALL);
 
    	menu_display(id , gmenu , 0);

	return PLUGIN_CONTINUE
}

public Vip_Handler(id, gmenu, item, player)
{
   if (item == MENU_EXIT)
   {
      menu_destroy(gmenu)
      return PLUGIN_HANDLED
   }

   new data[6], iName[64]
   new access, callback
   menu_item_getinfo(gmenu, item, access, data, 5, iName, 63, callback)
   
   new key = str_to_num(data)
   
   switch(key)
   {
      case 1:
      {
	client_cmd(id, "spk %s", MENU_OK)

	set_user_health(id, 200)
	client_printcolor(player, "/g[V.I.P]/y: Ai ales /w100 /gviata in plus!")
      }

      case 2:
      {
	client_cmd(id, "spk %s", MENU_OK)

	set_user_armor(id, 200)
	client_printcolor(player, "/g[V.I.P]/y: Ai ales /w200 /garmura!")
      }

	case 3:
      {
	give_item(id, "weapon_deagle")

	new weapon_id = find_ent_by_owner(-1, "weapon_deagle", id);
	if(weapon_id)
	{
		cs_set_weapon_ammo(weapon_id, 2);
	}

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: Ai ales un deagle cu /g2 /ygloante!")
      }
      
      case 4:
      {
	give_item(id, "weapon_hegrenade")

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: Ai ales /gHe /yGrenade!")
      }

      case 5:
      {
	set_user_gravity(id, 500)

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: Ai ales gravitatie!")
      }
   }
   menu_destroy(gmenu)
   return PLUGIN_HANDLED;
}

public VipCt_Handler(id, gmenu, item, player)
{
   if (item == MENU_EXIT)
   {
      menu_destroy(gmenu)
      return PLUGIN_HANDLED
   }

   new data[6], iName[64]
   new access, callback
   menu_item_getinfo(gmenu, item, access, data, 5, iName, 63, callback)
   
   new key = str_to_num(data)
   
   switch(key)
   {
      case 1:
      {
	client_cmd(id, "spk %s", MENU_OK)

	set_user_health(id, 255)
	client_printcolor(player, "/g[V.I.P]/y: Ai ales /w255 /gviata!")
      }

      case 2:
      {
	client_cmd(id, "spk %s", MENU_OK)

	set_user_armor(id, 255)
	client_printcolor(player, "/g[V.I.P]/y: Ai ales /w255 /garmura!")
      }

      case 3:
    
      {
	give_item(id, "weapon_hegrenade")

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: Ai ales /gHe /yGrenade!")
      }

      case 6:
      {
	set_user_gravity(id, 450)

	client_cmd(id, "spk %s", MENU_OK)

	client_printcolor(player, "/g[V.I.P]/y: Ai ales gravitatie!")
      }
   }
   menu_destroy(gmenu)
   return PLUGIN_HANDLED;
}

public Task_ShowHUD(task)
{
	new id = task - TASKID_SHOWHUD
	
	if(!is_user_alive(id))
		return PLUGIN_HANDLED
	
	static health, armour
	health = get_user_health(id)
	armour = get_user_armor(id)
	
	set_hudmessage(150, 150, 150, 0.40, 0.92, 0, 0.0, 0.3, 0.0, 0.0)
	ShowSyncHudMsg(id, g_hudsync , "Viata: %d -|V.I.P - DR.TREISUTE.RO|- Armura: %d", health, armour)
	
	set_task(0.1, "Task_ShowHUD", TASKID_SHOWHUD + id)		
	
	return PLUGIN_CONTINUE
}

public client_PreThink(id)
{
    if(is_user_alive(id))
    {
        if(get_user_flags(id) & FLAG)
        {
            
            new oldbuttons = get_user_oldbutton(id);
        
            
            oldbuttons &= ~IN_JUMP;
            entity_set_int(id, EV_INT_oldbuttons, oldbuttons);
        }
    }
}  

public Task_Model(task)
{
	new id = task - TASKID_MODEL 
	
	fm_set_user_model(id, player_model[id])
}

stock Create_BeamCylinder( origin[ 3 ], addrad, sprite, startfrate, framerate, life, width, amplitude, red, green, blue, brightness, speed )
{
	message_begin( MSG_PVS, SVC_TEMPENTITY, origin ); 
	write_byte( TE_BEAMCYLINDER );
	write_coord( origin[ 0 ] );
	write_coord( origin[ 1 ] );
	write_coord( origin[ 2 ] );
	write_coord( origin[ 0 ] );
	write_coord( origin[ 1 ] );
	write_coord( origin[ 2 ] + addrad );
	write_short( sprite );
	write_byte( startfrate );
	write_byte( framerate );
	write_byte(life );
	write_byte( width );
	write_byte( amplitude );
	write_byte( red );
	write_byte( green );
	write_byte( blue );
	write_byte( brightness );
	write_byte( speed );
	message_end();
}

stock te_sprite(id, Float:origin[3], sprite, scale, brightness)
{
	message_begin(MSG_ONE, SVC_TEMPENTITY, _, id)
	write_byte(TE_SPRITE)
	write_coord(floatround(origin[0]))
	write_coord(floatround(origin[1]))
	write_coord(floatround(origin[2]))
	write_short(sprite)
	write_byte(scale) 
	write_byte(brightness)
	message_end()
}

stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul)
{
	new Float:fLen = xs_vec_len(fIn)
	xs_vec_copy(fIn, fOut)
	
	fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen
	fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul
}

public fw_SetClientKeyValue(id, infobuffer, key[], value[])
{   
	if (g_model[id] && equal(key, "model"))
		return FMRES_SUPERCEDE
	
	return FMRES_IGNORED
}

public fw_ClientUserInfoChanged(id, infobuffer)
{   
	if (!g_model[id])
		return FMRES_IGNORED
	
	new currentmodel[32]; 
	fm_get_user_model(id, currentmodel, sizeof currentmodel - 1);
	
	if(!equal(currentmodel, player_model[id]))
		fm_set_user_model(id, player_model[id]) 
	
	return FMRES_IGNORED
}

stock fm_set_user_model(player, modelname[])
{   
	engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", modelname)
	
	g_model[player] = true
}

stock fm_get_user_model(player, model[], len)
{   
	engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", model, len)
}

stock fm_reset_user_model(player)
{         
	g_model[player] = false
	
	dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player))
}

stock client_printcolor(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 txt
	replace_all(msg,190,"/y","^1");// orange txt
	replace_all(msg,190,"/ctr","^3");// team txt
	replace_all(msg,190,"/w","^0");// team txt
	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, SayTxT, _, players[i]);
			write_byte(players[i]);
			write_string(msg);
			message_end();
		}
}
Thanks!
Deliric is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 10:12.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode