#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <engine>
#include <csx>
#include <cstrike>
#include <fun>
#define PLUGIN "BDD_GameBag_Main"
#define AUTHOR "Bui Duc Duy"
#define VERSION "1.0"
new bool:in_protect[33]
new bool:G_check_wpn_ok[33]
new bdd_cvar_maxkill, maxkill , GR_score, BL_score , G_mode , bdd_cvar_mode
new const g_remove_entities[][] =
{
"func_bomb_target",
"info_bomb_target",
"hostage_entity",
"monster_scientist",
"func_hostage_rescue",
"info_hostage_rescue",
"info_vip_start",
"func_vip_safetyzone",
"func_escapezone",
"func_buyzone"
}
enum(+=100)
{
TASK_RESPAWM = 2000,
TASK_REMOVE_PROTECT,
TASK_REGISTER_BOT,
}
#define ID_RESPAWM (taskid - TASK_RESPAWM)
#define ID_REMOVE_PROTECT (taskid - TASK_REMOVE_PROTECT)
#define ID_REGISTER_BOT (taskid - TASK_REGISTER_BOT)
// register natives
public plugin_natives()
{
register_native("bdd_maxkill", "_bdd_maxkill", 1)
register_native("bdd_gr_score", "_gr_score", 1)
register_native("bdd_bl_score", "_bl_score", 1)
}
public _bdd_maxkill()
return maxkill
public _gr_score()
return GR_score
public _bl_score()
return BL_score
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Spawn, "player", "fm_respawm", 1)
RegisterHam(Ham_TakeDamage, "player", "fw_takedamage")
RegisterHam(Ham_TraceAttack, "player", "fw_trace")
register_forward(FM_Spawn, "fwd_spawn")
register_event("DeathMsg", "event_DeathMsg", "a")
register_event("CurWeapon","event_CurWeapon","be","1=1")
register_message(get_user_msgid("SendAudio"), "message_sendaudio")
register_message(get_user_msgid("TextMsg"), "message_textmsg")
register_message(get_user_msgid("Scenario"), "message_scenario")
register_concmd("bdd_respawm_admin","respawm_admin")
}
public plugin_precache()
{
bdd_cvar_maxkill = register_cvar("bdd_cfzero_maxkill", "100")
bdd_cvar_mode = register_cvar("bdd_TDM_cvar_wpn", "0")
G_mode = get_pcvar_num(bdd_cvar_mode)
maxkill = get_pcvar_num(bdd_cvar_maxkill)
server_cmd("sv_noroundend 1")
set_cvar_num("sv_noroundend", 1)
}
// Event check weapon of uses
public event_CurWeapon(id)
{
check_my_weapon(id)
if (!G_check_wpn_ok[id])
{
strip_user_weapons(id)
give_item(id,"weapon_knife")
}
}
// Block all cs defaut
public fwd_spawn(ent)
{
if(!pev_valid(ent))
return FMRES_IGNORED
static classname[32]
pev(ent, pev_classname, classname, 31)
static i
for(i = 0; i < sizeof g_remove_entities; ++i)
{
if(equal(classname, g_remove_entities[i]))
{
engfunc(EngFunc_RemoveEntity, ent)
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
// Block roundend.
public message_textmsg()
{
static textmsg[22]
get_msg_arg_string(2, textmsg, sizeof textmsg - 1);
if (equal(textmsg, "#Hostages_Not_Rescued") || equal(textmsg, "#Round_Draw") || equal(textmsg, "#Terrorists_Win") || equal(textmsg, "#CTs_Win") || equal(textmsg, "#Target_", 8))
set_msg_arg_string(2, "")
return PLUGIN_CONTINUE
}
public message_sendaudio()
{
static audio[17]
get_msg_arg_string(2, audio, sizeof audio - 1)
if(equal(audio[7], "terwin") || equal(audio[7], "ctwin") || equal(audio[7], "rounddraw"))
set_msg_arg_string(2, "")
return PLUGIN_CONTINUE;
}
public message_scenario()
{
if (get_msg_args() > 1)
{
static sprite[8]
get_msg_arg_string(2, sprite, sizeof sprite - 1)
if (equal(sprite, "hostage"))
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
//end
public client_putinserver(id)
{
set_task(0.1, "register_bot_function", id+TASK_REGISTER_BOT)
}
// register for bot
public register_bot_function(taskid)
{
new id = ID_REGISTER_BOT
if (is_user_bot(id) && get_cvar_num("bot_quota"))
{
RegisterHamFromEntity(Ham_Spawn, id, "fm_respawm", 1)
RegisterHamFromEntity(Ham_TakeDamage, id, "fw_takedamage")
RegisterHamFromEntity(Ham_TraceAttack, id, "fw_trace")
if (is_user_alive(id))
fm_respawm(id)
}
}
// event respawm
public fm_respawm(id)
{
in_protect[id] = true
if (!is_user_bot(id)) cs_set_user_money(id,0)
fm_set_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 16)
if (task_exists(id+TASK_RESPAWM)) remove_task(id+TASK_RESPAWM)
set_task(3.0,"Remove_protect",id+TASK_REMOVE_PROTECT)
}
public Remove_protect(taskid)
{
new id = ID_REMOVE_PROTECT
in_protect[id] = false
fm_set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 16)
if (task_exists(id+TASK_REMOVE_PROTECT)) remove_task(id+TASK_REMOVE_PROTECT)
}
// check damge
public fw_takedamage(victim, inflictor, attacker, Float:damage)
{
if (in_protect[victim]) return HAM_SUPERCEDE
return HAM_IGNORED
}
public fw_trace(victim, idattacker, Float:damage, Float:direction[3], traceresult, damagebits)
{
if (in_protect[victim]) return HAM_SUPERCEDE
return HAM_IGNORED
}
// check player
public event_DeathMsg()
{
for (new id = 1 ; id <33 ; id++)
{
if (!is_user_alive(id) && is_user_bot(id)) set_task(7.0,"respawm_player",id+TASK_RESPAWM)
if (!is_user_alive(id) && !is_user_bot(id)) client_cmd(id,"bdd_respawm_admin")
}
new attacker = read_data(1)
if (cs_get_user_team(attacker) == CS_TEAM_T) BL_score++
else GR_score++
}
//respawm
public respawm_player(taskid)
{
new id = ID_RESPAWM
ExecuteHamB(Ham_CS_RoundRespawn, id)
}
// Stock
stock fm_set_rendering(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16)
{
set_pev(index, pev_renderfx, fx)
new Float:RenderColor[3]
RenderColor[0] = float(r)
RenderColor[1] = float(g)
RenderColor[2] = float(b)
set_pev(index, pev_rendercolor, RenderColor)
set_pev(index, pev_rendermode, render)
set_pev(index, pev_renderamt, float(amount))
return 1
}
stock show_bartime(id, total_time)
{
emessage_begin(MSG_ONE,108,{0,0,0},id)
ewrite_short(total_time)
emessage_end()
return
}
//Func
public respawm_admin(id)
{
set_task(7.0,"respawm_player",id+TASK_RESPAWM)
show_bartime(id, 7)
}
check_my_weapon(id)
{
new wpn, clip, ammo
wpn = get_user_weapon(id,clip,ammo)
if (G_mode == 0)
{
G_check_wpn_ok[id] = true
}
if (G_mode == 1)
{
if (wpn != CSW_AWP && wpn != CSW_SCOUT && wpn != CSW_SG550 && wpn != CSW_G3SG1 && wpn != CSW_KNIFE) G_check_wpn_ok[id] = false
else G_check_wpn_ok[id] = true
}
if (G_mode == 2)
{
if (wpn != CSW_P228 && wpn != CSW_DEAGLE && wpn != CSW_ELITE && wpn != CSW_USP && wpn != CSW_KNIFE && wpn != CSW_GLOCK18 && wpn != CSW_FIVESEVEN) G_check_wpn_ok[id] = false
else G_check_wpn_ok[id] = true
}
if (G_mode == 3)
{
if (wpn != CSW_KNIFE) G_check_wpn_ok[id] = false
else G_check_wpn_ok[id] = true
}
}