Thread: [Solved] Model for player
View Single Post
Author Message
HundredEyes
Member
Join Date: Sep 2022
Old 11-25-2022 , 10:28   Model for player
Reply With Quote #1

Hi! I want to add custom model for the player who became guardian:


Source:

Code:
#pragma semicolon 1

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>

#define PLUGIN_NAME		"Guardian"
#define PLUGIN_VERSION		"1.43"
#define PLUGIN_AUTHOR		"XzaR"
#define PLUGIN_PREFIX		"[GN]:"

#define MAXPLAYERS		32
#define ADMIN_FLAG 		ADMIN_CVAR

#define SPAWN_TIME		"5.0"
#define SPAWN_WEAPON		"weapon_mp5navy"
#define SPAWN_AMMO		"ammo_9mm"

#define TASK_RESPAWNING		333
#define TASK_LEADER		666

new g_msg_status_icon;
new g_msg_say_text;

new cvar_guardian;
new cvar_spawntime;
new cvar_weapon;
new cvar_ammo;

new g_ts_leader;
new g_ct_leader;

new bool:g_ts_leader_alive;
new bool:g_ct_leader_alive;

//---------------------------------------------------------------------

stock create_status_icon(id,status,sprite[],red,green,blue)
{
	message_begin(MSG_ONE,g_msg_status_icon,{0,0,0},id);
	write_byte(status);
	write_string(sprite);
	write_byte(red);
	write_byte(green);
	write_byte(blue);
	message_end();
}

stock client_cprint(id,type,text[],...)
{ 
	new text_buffer[255];
	vformat(text_buffer,254,text,4);
	
	replace_all(text_buffer,254,"\y","^1");
	replace_all(text_buffer,254,"\t","^3");
	replace_all(text_buffer,254,"\g","^4");
	
	message_begin(type,g_msg_say_text,{0,0,0},id);
	write_byte(id);
	write_string(text_buffer);
	message_end();
}

//---------------------------------------------------------------------

public plugin_init()
{
	//Plugin
	register_plugin(PLUGIN_NAME,PLUGIN_VERSION,PLUGIN_AUTHOR);
	
	//Dictionaries
	register_dictionary("guardian.txt");
	
	//Cvars
	cvar_guardian = register_cvar("sv_guardian","1");
	cvar_spawntime = register_cvar("sv_ga_spawntime",SPAWN_TIME);
	cvar_weapon = register_cvar("sv_ga_weapon",SPAWN_WEAPON);
	cvar_ammo = register_cvar("sv_ga_ammo",SPAWN_AMMO);
	
	//Console Commands
	register_concmd("amx_guardian","handler_cmd",ADMIN_FLAG);
	register_concmd("amx_ga_spawntime","handler_cmd",ADMIN_FLAG);
	register_concmd("amx_ga_weapon","handler_cmd",ADMIN_FLAG);
	register_concmd("amx_ga_ammo","handler_cmd",ADMIN_FLAG);
	
	//Server Commands
	register_srvcmd("sv_guardian","handler_cmd",-1);
	register_srvcmd("sv_ga_spawntime","handler_cmd",-1);
	register_srvcmd("sv_ga_weapon","handler_cmd",-1);
	register_srvcmd("sv_ga_ammo","handler_cmd",-1);
	
	//Client Commands
	register_clcmd("say","handler_say",-1);
	register_clcmd("say_team","handler_say",-1);
	
	//Events
	register_event("HLTV","event_new_round","a", "1=0", "2=0");
	
	//Ham Events
	RegisterHam(Ham_Spawn,"player","event_player_spawn",1);
	RegisterHam(Ham_Killed,"player","event_player_killed",1);
	
	//User Messages
	g_msg_status_icon = get_user_msgid("StatusIcon");
	g_msg_say_text = get_user_msgid("SayText");
}

//---------------------------------------------------------------------

public random_leader_ts()
{
	new players[MAXPLAYERS],id;
	static num;
	new name_leader[32];
	new bool:found;
	
	get_players(players,num,"eh","TERRORIST");
	for(new i; i < num; i++)
	{
		if(!is_user_connected(players[i]) || players[i] == 0) continue;
		
		id = players[i];
		if((random_num(1,num) == num) && (id != g_ts_leader))
		{
			g_ts_leader = id;
			found = true;
			break;
		}
	}
	
	if(!found)
	{
		g_ts_leader = id;
	}
	
	if(g_ts_leader > 0)
	{
		g_ts_leader_alive = true;
		get_user_name(g_ts_leader,name_leader,31);
		//client_print(0,print_chat,"%s %L",PLUGIN_PREFIX,LANG_PLAYER,"HAS_BEEN_CHOSEN_TS",name_leader);
		client_cprint(g_ts_leader,MSG_ALL,"\y%s %L",PLUGIN_PREFIX,LANG_PLAYER,"HAS_BEEN_CHOSEN_TS",name_leader);
	}
}

public random_leader_ct()
{
	new players[MAXPLAYERS],id;
	static num;
	new name_leader[32];
	new bool:found;
	
	get_players(players,num,"eh","CT");
	for(new i; i < num; i++)
	{
		if(!is_user_connected(players[i]) || players[i] == 0) continue;
		
		id = players[i];
		if((random_num(1,num) == num) && (id != g_ct_leader))
		{
			g_ct_leader = id;
			found = true;
			break;
		}
	}
	
	if(!found)
	{
		g_ct_leader = id;
	}
	
	if(g_ct_leader > 0)
	{
		g_ct_leader_alive = true;
		get_user_name(g_ct_leader,name_leader,31);
		//client_print(0,print_chat,"%s %L",PLUGIN_PREFIX,LANG_PLAYER,"HAS_BEEN_CHOSEN_CT",name_leader);
		client_cprint(g_ct_leader,MSG_ALL,"\y%s %L",PLUGIN_PREFIX,LANG_PLAYER,"HAS_BEEN_CHOSEN_CT",name_leader);
	}
}

public delay_leader_ts(parm[1])
{
	create_status_icon(parm[0],1,"suit_full",255,0,0);
	set_user_rendering(parm[0],kRenderFxGlowShell,255,0,0,kRenderNormal,10);
	leader_bonus(parm[0]);
}

public delay_leader_ct(parm[1])
{
	create_status_icon(parm[0],1,"suit_full",0,0,255);
	set_user_rendering(parm[0],kRenderFxGlowShell,0,0,255,kRenderNormal,10);
	leader_bonus(parm[0]);
}

public leader_bonus(id)
{
	set_user_health(id,150); 
	cs_set_user_armor (id,200,CsArmorType:2);
}

public respawn_player(parm[1])
{
	new bool:respawn = false;
	static weapon[32],ammo[16];
	get_pcvar_string(cvar_weapon,weapon,31);
	get_pcvar_string(cvar_ammo,ammo,15);
	
	if((g_ts_leader_alive) && (get_user_team(parm[0]) == 1))
	{
		respawn = true;
	}
	
	if((g_ct_leader_alive) && (get_user_team(parm[0]) == 2))
	{
		respawn = true;
	}
	
	if(respawn == true)
	{
		ExecuteHamB(Ham_CS_RoundRespawn,parm[0]);
		
		give_item(parm[0],weapon);
		give_item(parm[0],ammo);
		give_item(parm[0],ammo);
	}
	
	return PLUGIN_CONTINUE;
}

//---------------------------------------------------------------------

public client_disconnect(id)
{
	if(id == g_ts_leader) g_ts_leader_alive = false;
	if(id == g_ct_leader) g_ct_leader_alive = false;
}

public client_changeteam(id,newteam,oldteam) 
{
	if((!is_user_alive(id)) || (oldteam != newteam))
	{
		if(id == g_ts_leader) g_ts_leader_alive = false;
		if(id == g_ct_leader) g_ct_leader_alive = false;
	}
}

//---------------------------------------------------------------------

public event_new_round()
{
	if((get_pcvar_num(cvar_guardian) != 1) || (get_playersnum() < 2)) return PLUGIN_CONTINUE;
	
	random_leader_ts();
	random_leader_ct();
	
	return PLUGIN_CONTINUE;
}

public event_player_spawn(id)
{
	if((get_pcvar_num(cvar_guardian) != 1) || (!is_user_alive(id))) return HAM_IGNORED;
	
	new bool:leader = false;
	if(g_ts_leader == id)
	{
		leader = true;
		static parm[1];
		parm[0] = id;
		
		set_task(0.5,"delay_leader_ts",TASK_LEADER + id,parm,1);
	}
	
	if(g_ct_leader == id)
	{
		leader = true;
		static parm[1];
		parm[0] = id;
		
		set_task(0.5,"delay_leader_ct",TASK_LEADER + id,parm,1);
	}
	
	if(!leader)
	{
		new CsArmorType:armortype;
		new armor = cs_get_user_armor(id,armortype);
		if(armor > 100)
		{
			if(cs_get_user_vip(id))
			{
				cs_set_user_armor(id,150,armortype);
			}
			else cs_set_user_armor(id,100,armortype);
		}
		
		set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,10);
	}
	
	if(task_exists(TASK_RESPAWNING + id,0))
	{
		remove_task(TASK_RESPAWNING + id,0);
	}
	
	return HAM_HANDLED;
}

//---------------------------------------------------------------------

public event_player_killed(id,killer,shouldgib)
{
	if((get_pcvar_num(cvar_guardian) != 1)) return HAM_IGNORED;
	
	new name[32];
	get_user_name(id,name,31);
	if(g_ts_leader == id)
	{
		g_ts_leader_alive = false;
		create_status_icon(id,0,"suit_full",255,0,0);
		
		set_hudmessage(255,0,0,-1.0,0.45,0,1.0,4.0,0.1,0.2,3);
		show_hudmessage (0,"%L",LANG_PLAYER,"TS_DEAD",name);
		
		//client_print(0,print_chat,"%s %L",PLUGIN_PREFIX,LANG_PLAYER,"TS_DEAD",name);
		client_cprint(g_ts_leader,MSG_ALL,"\y%s %L",PLUGIN_PREFIX,LANG_PLAYER,"COLOR_TS_DEAD",name);
		
		return HAM_HANDLED;
	}
	else if(g_ct_leader == id)
	{
		g_ct_leader_alive = false;
		create_status_icon(id,0,"suit_full",0,0,255);
		
		set_hudmessage(0,0,255,-1.0,0.45,0,1.0,4.0,0.1,0.2,3);
		show_hudmessage (0,"%L", LANG_PLAYER, "CT_DEAD",name);
		
		//client_print(0,print_chat,"%s %L",PLUGIN_PREFIX,LANG_PLAYER,"CT_DEAD",name);
		client_cprint(g_ct_leader,MSG_ALL,"\y%s %L",PLUGIN_PREFIX,LANG_PLAYER,"COLOR_CT_DEAD",name);
		
		return HAM_HANDLED;
	}
	
	static Float:spawntime,parm[1];
	spawntime = get_pcvar_float(cvar_spawntime);
	parm[0] = id;
		
	set_task(spawntime,"respawn_player",TASK_RESPAWNING + id,parm,1);
		
	new bool:respawn = false;
	if((g_ts_leader_alive) && (get_user_team(id) == 1))
	{
		respawn = true;
	}
	else if((g_ct_leader_alive) && (get_user_team(id) == 2))
	{
		respawn = true;
	}
		
	if(respawn)
	{
		set_hudmessage(255,255,255,-1.0,-1.0,2,1.0,(spawntime - 0.8),0.1,0.2,-1);
		show_hudmessage(id,"%L",id,"REVIVE");
	}

	return HAM_HANDLED;
}

//---------------------------------------------------------------------

public handler_cmd(id,level,cid)
{
	if (!cmd_access(id,level,cid,1))
	{
		return PLUGIN_HANDLED;
	}
	
	static cmd[32],arg1[32];
	read_argv(0,cmd,31);
	read_argv(1,arg1,31);
	
	if(equal(cmd,"sv_guardian") || equal(cmd,"amx_guardian"))
	{
		if(equal(arg1,"1"))
		{
			set_pcvar_num(cvar_guardian,1);
			set_cvar_num("sv_restartround",1);
		}
		else if(equal(arg1,"0"))
		{
			set_pcvar_num(cvar_guardian,0);
			set_cvar_num("sv_restartround",1);
		}
	}
	else if(equal(cmd,"sv_ga_spawntime") || equal(cmd,"amx_ga_spawntime"))
	{
		set_pcvar_float(cvar_spawntime,str_to_float(arg1));
	}
	else if(equal(cmd,"sv_ga_weapon") || equal(cmd,"amx_ga_weapon"))
	{
		set_pcvar_string(cvar_weapon,arg1);
	}
	else if(equal(cmd,"sv_ga_ammo") || equal(cmd,"amx_ga_ammo"))
	{
		set_pcvar_string(cvar_ammo,arg1);
	}
	
	return PLUGIN_HANDLED;
}

public handler_say(id)
{
	if(get_pcvar_num(cvar_guardian) != 1) return PLUGIN_CONTINUE;
	
	static said[32];
	read_args(said,31);
	remove_quotes(said);

	if(equal(said,"/guardian") || equal(said,"/guardians"))
	{
		static name_ts[32],name_ct[32];
		get_user_name(g_ts_leader,name_ts,31);
		get_user_name(g_ct_leader,name_ct,31);
		
		client_cprint(id,MSG_ONE,"\y%s %L",PLUGIN_PREFIX,id,"IS_GUARDIAN_TS",name_ts);
		client_cprint(id,MSG_ONE,"\y%s %L",PLUGIN_PREFIX,id,"IS_GUARDIAN_CT",name_ct);
	}
	
	return PLUGIN_CONTINUE;
}

//---------------------------------------------------------------------

Last edited by HundredEyes; 11-29-2022 at 15:17.
HundredEyes is offline