#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <engine>
#include <hamsandwich>
#include <mapname_patcher>
#define GDM_Respawn_Time 5.0
#define GDM_Max_Score 800
#define GDM_Hide_Weapon 10.0
#define GDM_Protection_Time 3
new weapon[33]
new level[33]
new frags[33]
new protection_time[33]
new newnewhud[33]
new gre[33]
new top1, top2, top3, SyncHudMsg1, SyncHudMsg2, SyncHudMsg3, gMsgidShowTimer, gMsgID
new ct_score
new tr_score
new pcv_amx_nextmap
new const sounds[][] =
{
"gun_deathmatch/finalattack.wav",
"gun_deathmatch/weaponchange.wav"
}
public plugin_init()
{
register_plugin("[CSO LIKE] Gun Deathmatch", "1.0", "RaZzoR")
gMsgID = get_user_msgid("Scenario")
gMsgidShowTimer = get_user_msgid("ShowTimer")
set_msg_block(get_user_msgid("ClCorpse"), BLOCK_SET)
register_message(get_user_msgid("RoundTime"),"Event_RoundTime")
register_message(get_user_msgid("StatusIcon"), "msgStatusIcon")
register_message(get_user_msgid("HideWeapon"), "msgHideWeapon")
register_forward(FM_SetModel, "SetModel")
RegisterHam(Ham_Spawn, "player", "Spawn", 1)
RegisterHam(Ham_Touch, "armoury_entity", "FwdHamPickupWeapon")
RegisterHam(Ham_Touch, "weaponbox", "FwdHamPickupWeapon")
register_clcmd("drop", "block_drop")
register_event("RoundTime", "no_hostages", "bc")
register_event("BombDrop", "Event_BombDropped", "a", "4=1")
register_event("DeathMsg", "Death", "a", "1>0")
register_event("ResetHUD", "onResetHUD", "b")
SyncHudMsg1 = CreateHudSyncObj()
SyncHudMsg2 = CreateHudSyncObj()
SyncHudMsg3 = CreateHudSyncObj()
pcv_amx_nextmap = get_cvar_pointer("amx_nextmap")
TOP3_Scoreboard()
no_bomb()
no_hostages()
}
public plugin_precache()
{
for(new i = 0; i < sizeof sounds; i++)
precache_sound(sounds[i])
new map[64]
get_mapname(map, 63)
if(equal(map, "cs_camouflage_cso"))
{
Patch_MapName("Camouflage")
precache_generic("cs_camouflage.wad")
precache_generic("cs_common.wad")
precache_generic("grid.wad")
}
if(equal(map, "cs_italy"))
Patch_MapName("Italy")
if(equal(map, "de_dust"))
Patch_MapName("Dust")
if(equal(map, "de_dust2"))
Patch_MapName("Dust2")
if(equal(map, "de_inferno"))
Patch_MapName("Inferno")
if(equal(map, "dm_gallery_cso"))
{
Patch_MapName("Gallery")
precache_generic("awp_greesia.wad")
precache_generic("cs_hk.wad")
precache_generic("de_rex.wad")
precache_generic("dm_bloodstrike.wad")
}
if(equal(map, "dm_industry2"))
{
Patch_MapName("Industry2")
precache_generic("cs_camouflage.wad")
precache_generic("cs_hk.wad")
precache_generic("grid.wad")
precache_generic("hs_desertstorm.wad")
precache_generic("ntdm1.wad")
precache_generic("ntdm2.wad")
precache_generic("tdm01.wad")
precache_generic("zs_anni.wad")
}
if(equal(map, "dm_suzhou"))
{
Patch_MapName("Suzhou")
precache_generic("dm_suzhou.wad")
}
if(equal(map, "fun_checkmate"))
{
Patch_MapName("Checkmate")
precache_generic("cs_hk.wad")
precache_generic("de_rats.wad")
precache_generic("de_rex.wad")
precache_generic("dm_checkmate.wad")
precache_generic("dm_union.wad")
precache_generic("grid.wad")
precache_generic("zm_abyss2.wad")
precache_generic("zs_lostcity.wad")
}
}
public msgStatusIcon(msgid, msgdest, id)
{
static szIcon[8]
get_msg_arg_string(2, szIcon, 7)
if(equal(szIcon, "buyzone") && get_msg_arg_int(1))
{
set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0))
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public block_drop(id)
return PLUGIN_HANDLED
public FwdHamPickupWeapon()
return HAM_SUPERCEDE
public Event_RoundTime(const MsgId, const MsgDest, const MsgEnt)
set_msg_arg_int(1, ARG_SHORT, get_timeleft())
public Event_BombDropped()
{
message_begin(MSG_BROADCAST, gMsgidShowTimer)
message_end()
}
public onResetHUD(id)
{
message_begin(MSG_ONE, get_user_msgid("HideWeapon"), _, id)
write_byte((1<<5))
message_end()
}
public msgHideWeapon()
set_msg_arg_int(1, ARG_BYTE, get_msg_arg_int(1) | (1<<5))
public SetModel(iEnt, szModel[])
{
if(equal(szModel, "models/w_", 9))
{
if(szModel[9] != 'h' && !equal(szModel[9], "sm", 2) && !equal(szModel[9], "fl", 2))
set_pev(iEnt, pev_nextthink, get_gametime() + GDM_Hide_Weapon)
}
}
public no_bomb()
{
new fhosr = find_ent_by_class(-1, "func_hostage_rescue")
while(fhosr > get_maxplayers())
{
entity_set_int(fhosr, EV_INT_flags, FL_KILLME)
fhosr = find_ent_by_class(fhosr, "func_hostage_rescue")
}
new doneonce = 0
new fbombt = find_ent_by_class(-1, "func_bomb_target")
while(fbombt > get_maxplayers())
{
entity_set_int(fbombt, EV_INT_flags, FL_KILLME)
doneonce = 1
fbombt = find_ent_by_class(fbombt, "func_bomb_target")
}
if(doneonce == 1)server_cmd("sv_restartround 1")
new ibombt = find_ent_by_class(-1, "info_bomb_target")
while(ibombt > get_maxplayers())
{
entity_set_int(ibombt, EV_INT_flags, FL_KILLME)
ibombt = find_ent_by_class(ibombt, "info_bomb_target")
}
new fescape = find_ent_by_class(-1, "func_escapezone")
while(fescape > get_maxplayers())
{
entity_set_int(fescape, EV_INT_flags, FL_KILLME)
fescape = find_ent_by_class(fescape, "func_escapezone")
}
new fvips = find_ent_by_class(-1, "func_vip_safteyzone")
while(fvips > get_maxplayers())
{
entity_set_int(fvips, EV_INT_flags, FL_KILLME)
fvips = find_ent_by_class(fvips, "func_vip_safteyzone")
}
new fvipst = find_ent_by_class(-1, "func_vip_start")
while(fvipst > get_maxplayers())
{
entity_set_int(fvipst, EV_INT_flags, FL_KILLME)
fvipst = find_ent_by_class(fvipst, "func_vip_start")
}
return PLUGIN_CONTINUE
}
public no_hostages()
{
new iHos = find_ent_by_class(-1, "hostage_entity")
while(iHos > get_maxplayers())
{
entity_set_int(iHos, EV_INT_flags, FL_KILLME)
iHos = find_ent_by_class(iHos, "hostage_entity")
}
new jHos = find_ent_by_class(-1, "monster_scientist")
while(iHos > get_maxplayers())
{
entity_set_int(jHos, EV_INT_flags, FL_KILLME)
iHos = find_ent_by_class(jHos, "monster_scientist")
}
}
public Death()
{
new killer = read_data(1)
new victim = read_data(2)
if(!(1 <= killer <= get_maxplayers()))
return
if(killer == victim)
{
set_task(GDM_Respawn_Time, "Respawned", killer)
set_user_frags(killer, get_user_frags(killer) + 1)
}
else
{
set_task(GDM_Respawn_Time, "Respawned", victim)
frags[killer]++
}
if(get_user_team(killer) == 1 && (get_user_team(killer) != get_user_team(victim) || killer != victim))
tr_score++
if(get_user_team(killer) == 2 && (get_user_team(killer) != get_user_team(victim) || killer != victim))
ct_score++
if(frags[killer] == 4) //Set 2nd Lv.
{
level[killer] = 2
client_cmd(killer, "spk ^"%s^"", sounds[1])
switch(random(3))
{
case 0:
{
if(callfunc_begin("nothing","gdm_m14.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 4 //SG550
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
give_item(killer, "weapon_sg550")
cs_set_user_bpammo(killer, CSW_SG550, 90)
}
case 1:
{
if(callfunc_begin("nothing","gdm_m14.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 5 //G3SG1
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
give_item(killer, "weapon_g3sg1")
cs_set_user_bpammo(killer, CSW_G3SG1, 90)
}
case 2:
{
if(callfunc_begin("nothing","gdm_m14.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 6 //MG36
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_mg36","gdm_mg36.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
}
}
else if(frags[killer] == 9) //Set 3rd Lv.
{
level[killer] = 3
client_cmd(killer, "spk ^"%s^"", sounds[1])
if(callfunc_begin("nothing","gdm_mg36.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 7 //TAR-21
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_tar21","gdm_tar21.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
else if(frags[killer] == 14) //Set 4th Lv.
{
level[killer] = 4
client_cmd(killer, "spk ^"%s^"", sounds[1])
switch(random(3))
{
case 0:
{
if(callfunc_begin("nothing","gdm_tar21.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 8 //AUG
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
give_item(killer, "weapon_aug")
cs_set_user_bpammo(killer, CSW_AUG, 90)
}
case 1:
{
if(callfunc_begin("nothing","gdm_tar21.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 9 //SG552
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
give_item(killer, "weapon_sg552")
cs_set_user_bpammo(killer, CSW_SG552, 90)
}
case 2:
{
if(callfunc_begin("nothing","gdm_tar21.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 10 //AI AS50
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_as50","gdm_as50.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
}
}
else if(frags[killer] == 19) //Set 5th Lv.
{
level[killer] = 5
client_cmd(killer, "spk ^"%s^"", sounds[1])
switch(random(4))
{
case 0:
{
if(callfunc_begin("nothing","gdm_as50.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 11 //M16A4
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_m16a4","gdm_m16a4.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
case 1:
{
if(callfunc_begin("nothing","gdm_as50.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 12 //AN94
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_an94","gdm_an94.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
case 2:
{
if(callfunc_begin("nothing","gdm_as50.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 13 //M14 EBR
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_m14","gdm_m14.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
case 3:
{
if(callfunc_begin("nothing","gdm_as50.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 14 //StG 44
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_stg44","gdm_stg44.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
}
}
else if(frags[killer] == 24) //Set 6th Lv.
{
level[killer] = 6
client_cmd(killer, "spk ^"%s^"", sounds[1])
switch(random(4))
{
case 0:
{
if(callfunc_begin("nothing","gdm_m16a4.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_an94.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_m14.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_stg44.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 15 //AWP
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
give_item(killer, "weapon_awp")
cs_set_user_bpammo(killer, CSW_AWP, 30)
}
case 1:
{
if(callfunc_begin("nothing","gdm_m16a4.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_an94.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_m14.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_stg44.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 16 //XM2010
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_xm2010","gdm_xm2010.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
case 2:
{
if(callfunc_begin("nothing","gdm_m16a4.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_an94.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_m14.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_stg44.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 17 //SVD
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_svd","gdm_svd.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
case 3:
{
if(callfunc_begin("nothing","gdm_m16a4.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_an94.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_m14.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_stg44.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 18 //M95
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_m95","gdm_m95.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
}
}
else if(frags[killer] == 29) //Set 7th Lv.
{
level[killer] = 7
client_cmd(killer, "spk ^"%s^"", sounds[1])
switch(random(4))
{
case 0:
{
if(callfunc_begin("nothing","gdm_xm2010.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_svd.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_m95.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 19 //Scar
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_scar","gdm_scar.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
case 1:
{
if(callfunc_begin("nothing","gdm_xm2010.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_svd.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_m95.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 20 //XM8
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_xm8","gdm_xm8.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
case 2:
{
if(callfunc_begin("nothing","gdm_svd.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_m95.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 21 //XM2010
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_xm2010","gdm_xm2010.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
case 3:
{
if(callfunc_begin("nothing","gdm_xm2010.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_svd.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_m95.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 22 //M24
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_m24","gdm_m24.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
}
}
else if(frags[killer] == 34) //Set 8th Lv.
{
level[killer] = 8
client_cmd(killer, "spk ^"%s^"", sounds[1])
switch(random(3))
{
case 0:
{
if(callfunc_begin("nothing","gdm_scar.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_xm8.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_xm2010.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_m24.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 23 //Famas
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
give_item(killer, "weapon_famas")
cs_set_user_bpammo(killer, CSW_FAMAS, 90)
}
case 1:
{
if(callfunc_begin("nothing","gdm_scar.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_xm8.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_xm2010.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_m24.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 24 //Galil
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
give_item(killer, "weapon_galil")
cs_set_user_bpammo(killer, CSW_GALIL, 90)
}
case 2:
{
if(callfunc_begin("nothing","gdm_scar.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_xm8.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_xm2010.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
if(callfunc_begin("nothing","gdm_m24.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
weapon[killer] = 25 //Kriss
newnewhud[killer] = 1
set_task(3.0, "remove_newnewhud", killer)
strip_user_weapons(killer)
give_item(killer, "weapon_knife")
if(callfunc_begin("gdm_kriss","gdm_kriss.amxx") == 1)
{
callfunc_push_int(killer)
callfunc_end()
}
}
}
}