Page 1 of 1

Modificare plugin

Posted: 10 Jul 2012, 22:13
by iDark
Salut.De curand am bagat pe sv pluginul DeathRunVIP,dar are o problema.
In user.ini trebuia adaugat modelul "nume" "parola" "abegi" "a".Am adaugat si asta si am incercat sa ii dau cuiva VipMode pe sv,dar nu a mers.
Am observat ca doar adminii cu acces a(imunity)au acces la meniul Vip.
Puteti va rog frumos sa modificati .sma-ul si sa il faceti in asa fel incat doar cei care ii pun eu in user.ini sa aiba VipMode.

Code: Select all

 #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_POPUP[] = "misc/DeathRunVip/vip_menu_popup.wav"
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_POPUP)
	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, "Vip %s se conecteaza pe server!.", 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

	client_cmd(id, "spk %s", MENU_POPUP)
		
    	new gmenu = menu_create("\~::*V.I.P Menu*::~" , "Vip_Handler");
    	menu_additem(gmenu ,"\255 \Viata", "1" , 0);
    	menu_additem(gmenu ,"\255 \Armura", "2" , 0);
    	menu_additem(gmenu ,"\Gravitatie", "3" , 0);
    	menu_additem(gmenu ,"\Viteza", "4" , 0);
    	menu_additem(gmenu ,"\Deagle cu \7 gloante", "5" , 0);
    	menu_additem(gmenu ,"\Grenada HE", "6" , 0);
    	menu_additem(gmenu ,"\ViziuneNocturna (\Pentru mape intunecate\)", "7" , 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
		
	client_cmd(id, "spk %s", MENU_POPUP)

    	new gmenu = menu_create("\~::*V.I.P Menu*::~" , "VipCt_Handler");
    	menu_additem(gmenu ,"\255 \Viata", "1" , 0);
    	menu_additem(gmenu ,"\255 \Armura", "2" , 0);
    	menu_additem(gmenu ,"\Gravitatie", "3" , 0);
    	menu_additem(gmenu ,"\Viteza", "4" , 0);
    	menu_additem(gmenu ,"\Grenada HE", "5" , 0);
    	menu_additem(gmenu ,"\ViziuneNocturna (\Pentru mape intunecate\)", "6" , 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, 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:
      {
	client_cmd(id, "spk %s", MENU_OK)

	new Float: gravity
	gravity	= get_pcvar_float(cvar_gravity) / 800

	set_user_gravity(id, gravity)
	client_printcolor(player, "/g[V.I.P]/y: Ai ales /ggravitatie!")
      }
      
      case 4:
      {
	new Float: speed
	speed	= get_pcvar_float(cvar_speed)

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

	set_user_maxspeed(id, speed)
	client_printcolor(player, "/g[V.I.P]/y: Ai ales /gViteza!")
      }
      
      case 5:
      {
	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, 7);
	}

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

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

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

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

      case 7:
      {
	cs_set_user_nvg(id)

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

	client_printcolor(player, "/g[V.I.P]/y: Ai ales ViziuneNocturna!")
      }
   }
   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:
      {
	client_cmd(id, "spk %s", MENU_OK)

	new Float: gravity
	gravity	= get_pcvar_float(cvar_gravity) / 800

	set_user_gravity(id, gravity)
	client_printcolor(player, "/g[V.I.P]/y: Ai ales /gGravitatie!")
      }
      
      case 4:
      {
	new Float: speed
	speed	= get_pcvar_float(cvar_speed)

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

	set_user_maxspeed(id, speed)
	client_printcolor(player, "/g[V.I.P]/y: Ai ales /gViteza!")
      }
      
      case 5:
      {
	give_item(id, "weapon_hegrenade")

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

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

      case 6:
      {
	cs_set_user_nvg(id)

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

	client_printcolor(player, "/g[V.I.P]/y: Ai ales ViziuneNocturna!")
      }
   }
   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|- Armmura: %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();
		}
}	
Este in limbar romana meniul deoarece l-am compilat eu(doar meniul)
Acest plugin da celor care ii pun eu un skin fain si la inceput de runda le arata un meniu din care isi aleg ei ce vor.

Re: Modificare plugin

Posted: 11 Jul 2012, 00:05
by K1d0x
Modifici linia:
#define FLAG ADMIN_IMMUNITY

Cu ce litera doresti tu, iar in users.ini la flaguri pui litera dorita (de la ceilalti admini scoti acea litera), eu iti recomand sa folosesti -> #define FLAG ADMIN_LEVEL_F adica litera "r"
| Afiseaza codul
#define ADMIN_ALL		0	//Everyone
#define ADMIN_IMMUNITY		1	//Flag "a", immunity
#define ADMIN_RESERVATION	2	//Flag "b", reservation
#define ADMIN_KICK		4	//Flag "c", kick
#define ADMIN_BAN		8	//Flag "d", ban
#define ADMIN_SLAY		16	//Flag "e", slay
#define ADMIN_MAP		32	//Flag "f", map change
#define ADMIN_CVAR		64	//Flag "g", cvar change
#define ADMIN_CFG		128	//Flag "h", config execution
#define ADMIN_CHAT		256	//Flag "i", chat
#define ADMIN_VOTE		512	//Flag "j", vote
#define ADMIN_PASSWORD		1024	//Flag "k", sv_password
#define ADMIN_RCON		2048	//Flag "l", rcon access
#define ADMIN_LEVEL_A		4096	//Flag "m", custom
#define ADMIN_LEVEL_B		8192	//Flag "n", custom
#define ADMIN_LEVEL_C		16384	//Flag "o", custom
#define ADMIN_LEVEL_D		32768	//Flag "p", custom
#define ADMIN_LEVEL_E		65536	//Flag "q", custom
#define ADMIN_LEVEL_F		131072	//Flag "r", custom
#define ADMIN_LEVEL_G		262144	//Flag "s", custom
#define ADMIN_LEVEL_H		524288	//Flag "t", custom
#define ADMIN_MENU		1048576	//Flag "u", menus

Re: Modificare plugin

Posted: 12 Jul 2012, 20:34
by iDark
A mers.Ai un Multumesc.
Puteti da T/C