its best if you either get rid of the sprite that hovers over you if you have the flag
Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
new togglecvar, capreward
new flag1
new flag2
new Float:flag1loc[3]
new Float:flag2loc[3]
new Float:original1[3]
new Float:original2[3]
new Twins
new CTwins
new draw_flag_id, draw_flag_plugin
new new_p_model_t[64]
new new_v_model_t[64]
new new_p_model_ct[64]
new new_v_model_ct[64]
public plugin_init()
{
register_plugin("GHW CTF Cap Monitor","1.0","GHW_Chronic")
togglecvar = get_cvar_pointer("ctf_enabled")
capreward = register_cvar("ctf_reward","500")
register_forward(FM_PlayerPreThink,"FM_PreThink")
set_task(2.0,"get_locs")
set_task(0.5,"show_cap_hud",0,"",0,"b")
register_event("DeathMsg","DeathMsg","a")
register_event("CurWeapon","Changeweapon_Hook","be","1=1")
}
public plugin_precache()
{
register_cvar("ctf_v_model_t","models/LTDTHalo/v_flag_blue.mdl")
register_cvar("ctf_p_model_t","models/LTDTHalo/p_flag_blue.mdl")
register_cvar("ctf_v_model_ct","models/LTDTHalo/v_flag_red.mdl")
register_cvar("ctf_p_model_ct","models/LTDTHalo/p_flag_red.mdl")
get_cvar_string("ctf_v_model_t",new_v_model_t,63)
get_cvar_string("ctf_p_model_t",new_p_model_t,63)
get_cvar_string("ctf_v_model_ct",new_v_model_ct,63)
get_cvar_string("ctf_p_model_ct",new_p_model_ct,63)
precache_model(new_p_model_t)
precache_model(new_v_model_t)
precache_model(new_p_model_ct)
precache_model(new_v_model_ct)
}
public Changeweapon_Hook(id)
{
if(!get_pcvar_num(togglecvar) || !is_user_alive(id))
{
return PLUGIN_CONTINUE
}
static model[32], team
team = get_user_team(id)
if(flag2==id || flag1==id)
{
pev(id,pev_viewmodel2,model,31)
if(containi(model,"knife")!=-1)
{
switch(team)
{
case 1:
{
set_pev(id,pev_viewmodel2,new_v_model_t)
set_pev(id,pev_weaponmodel2,new_p_model_t)
}
case 2:
{
set_pev(id,pev_viewmodel2,new_v_model_ct)
set_pev(id,pev_weaponmodel2,new_p_model_ct)
}
}
}
else if(get_user_weapon(id)!=CSW_KNIFE)
{
client_cmd(id,"weapon_knife")
}
}
return PLUGIN_CONTINUE
}
public reset_vars()
{
flag1=0
flag2=0
flag1loc[0]=original1[0]
flag1loc[1]=original1[1]
flag1loc[2]=original1[2]
flag2loc[0]=original2[0]
flag2loc[1]=original2[1]
flag2loc[2]=original2[2]
}
public client_disconnect(id)
{
if(get_pcvar_num(togglecvar))
{
if(id==flag1)
{
client_print(0,print_chat,"[CTF] UNKNOWN dropped the T flag.")
flag1=0
}
else if(id==flag2)
{
client_print(0,print_chat,"[CTF] UNKNOWN dropped the CT flag.")
flag2=0
}
}
}
public DeathMsg()
{
if(get_pcvar_num(togglecvar))
{
if(read_data(2)==flag1)
{
new name[32]
get_user_name(read_data(2),name,31)
client_print(0,print_chat,"[CTF] %s dropped the T flag.",name)
flag1=0
}
else if(read_data(2)==flag2)
{
new name[32]
get_user_name(read_data(2),name,31)
client_print(0,print_chat,"[CTF] %s dropped the CT flag.",name)
flag2=0
}
}
}
public get_locs()
{
draw_flag_plugin = find_plugin_byfile("GHW_CTF_flag.amxx")
draw_flag_id = get_func_id("draw_flag",draw_flag_plugin)
callfunc_begin("tlocation","GHW_CTF_flagspawn_finder.amxx")
callfunc_push_floatrf(flag1loc[0])
callfunc_push_floatrf(flag1loc[1])
callfunc_push_floatrf(flag1loc[2])
callfunc_end()
callfunc_begin("ctlocation","GHW_CTF_flagspawn_finder.amxx")
callfunc_push_floatrf(flag2loc[0])
callfunc_push_floatrf(flag2loc[1])
callfunc_push_floatrf(flag2loc[2])
callfunc_end()
callfunc_begin("tlocation","GHW_CTF_flagspawn_finder.amxx")
callfunc_push_floatrf(original1[0])
callfunc_push_floatrf(original1[1])
callfunc_push_floatrf(original1[2])
callfunc_end()
callfunc_begin("ctlocation","GHW_CTF_flagspawn_finder.amxx")
callfunc_push_floatrf(original2[0])
callfunc_push_floatrf(original2[1])
callfunc_push_floatrf(original2[2])
callfunc_end()
set_task(0.1,"create_flag",0,"",0,"b")
}
public create_flag()
{
if(get_pcvar_num(togglecvar))
{
callfunc_begin_i(draw_flag_id,draw_flag_plugin)
callfunc_push_int(1)
callfunc_push_float(flag1loc[0])
callfunc_push_float(flag1loc[1])
callfunc_push_float(flag1loc[2])
callfunc_end()
callfunc_begin_i(draw_flag_id,draw_flag_plugin)
callfunc_push_int(2)
callfunc_push_float(flag2loc[0])
callfunc_push_float(flag2loc[1])
callfunc_push_float(flag2loc[2])
callfunc_end()
}
}
public show_cap_hud()
{
if(get_pcvar_num(togglecvar))
{
static flagger[32]
if(!flag1)
{
if(flag1loc[0]!=original1[0] || flag1loc[1]!=original1[1] || flag1loc[2]!=original1[2]) format(flagger,31,"Dropped")
else format(flagger,31,"Base")
}
else get_user_name(flag1,flagger,31)
static HudMessage[200]
format(HudMessage,199,"T | %d | %s",Twins,flagger)
static players[32], num
get_players(players,num,"c")
for(new i=0;i<num;i++)
{
set_hudmessage(255,0,0,-1.0,0.02,0,6.0,1.0,0.1,0.2,3)
show_hudmessage(players[i],HudMessage)
}
if(!flag2)
{
if(flag2loc[0]!=original2[0] || flag2loc[1]!=original2[1] || flag2loc[2]!=original2[2]) format(flagger,31,"Dropped")
else format(flagger,31,"Base")
}
else get_user_name(flag2,flagger,31)
format(HudMessage,199,"^nCT | %d | %s",CTwins,flagger)
for(new i=0;i<num;i++)
{
set_hudmessage(0,0,255,-1.0,0.02,0,6.0,1.0,0.1,0.2,4)
show_hudmessage(players[i],HudMessage)
}
}
}
public FM_PreThink(id)
{
if(get_pcvar_num(togglecvar) && is_user_alive(id))
{
if(!flag1 && cs_get_user_team(id)==CS_TEAM_CT)
{
static Float:origin[3]
pev(id,pev_origin,origin)
if(get_distance_f(origin,flag1loc)<=30.0)
{
flag1=id
new name[32]
get_user_name(id,name,31)
client_print(0,print_chat,"[CTF] %s Picked up the T Flag.",name)
Changeweapon_Hook(id)
}
}
else if(!flag2 && cs_get_user_team(id)==CS_TEAM_T)
{
static Float:origin[3]
pev(id,pev_origin,origin)
if(get_distance_f(origin,flag2loc)<=30.0)
{
flag2=id
new name[32]
get_user_name(id,name,31)
client_print(0,print_chat,"[CTF] %s Picked up the CT Flag.",name)
Changeweapon_Hook(id)
}
}
else if(flag1==id && cs_get_user_team(id)==CS_TEAM_CT)
{
pev(id,pev_origin,flag1loc)
if(flag2loc[0]==original2[0] && flag2loc[1]==original2[1] && flag2loc[2]==original2[2] && get_distance_f(flag1loc,original2)<=30.0)
{
flag1=0
flag1loc[0] = original1[0]
flag1loc[1] = original1[1]
flag1loc[2] = original1[2]
new name[32]
get_user_name(id,name,31)
client_print(0,print_chat,"[CTF] %s Capped the T Flag.",name)
cs_set_user_money(id,cs_get_user_money(id) + get_pcvar_num(capreward))
CTwins++
}
}
else if(flag2==id && cs_get_user_team(id)==CS_TEAM_T)
{
pev(id,pev_origin,flag2loc)
if(flag1loc[0]==original1[0] && flag1loc[1]==original1[1] && flag1loc[2]==original1[2] && get_distance_f(flag2loc,original1)<=30.0)
{
flag2=0
flag2loc[0] = original2[0]
flag2loc[1] = original2[1]
flag2loc[2] = original2[2]
new name[32]
get_user_name(id,name,31)
client_print(0,print_chat,"[CTF] %s Capped the CT Flag.",name)
cs_set_user_money(id,cs_get_user_money(id) + get_pcvar_num(capreward))
Twins++
}
}
static Float:origin[3]
pev(id,pev_origin,origin)
if((flag1loc[0]!=original1[0] || flag1loc[1]!=original1[1] || flag1loc[2]!=original1[2]) && !flag1 && cs_get_user_team(id)==CS_TEAM_T && get_distance_f(flag1loc,origin)<=30.0)
{
flag1loc[0] = original1[0]
flag1loc[1] = original1[1]
flag1loc[2] = original1[2]
new name[32]
get_user_name(id,name,31)
client_print(0,print_chat,"[CTF] T Flag returned to it's base by %s.",name)
}
if((flag2loc[0]!=original2[0] || flag2loc[1]!=original2[1] || flag2loc[2]!=original2[2]) && !flag2 && cs_get_user_team(id)==CS_TEAM_CT && get_distance_f(flag2loc,origin)<=30.0)
{
flag2loc[0] = original2[0]
flag2loc[1] = original2[1]
flag2loc[2] = original2[2]
new name[32]
get_user_name(id,name,31)
client_print(0,print_chat,"[CTF] CT Flag returned to it's base by %s.",name)
}
}
}
they arent that great, i might make them the halo flag model, if i find a good enough picture of the flag ( i forgot what it looks like rofl)