Hi! I want to add custom model for the player who became guardian:
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;
}
//---------------------------------------------------------------------