Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <amxmisc>
- #include <cstrike>
- #include <fakemeta>
- #include <hamsandwich>
- #include <fun>
- #include <engine>
- #include <cs_player_models_api>
- #include <cs_maxspeed_api>
- #include <cs_teams_api>
- #define PLUGIN "The Hidden"
- #define VERSION "1.0"
- #define AUTHOR "RaN"
- #define task_random 123413
- #define task_hud 12341
- new bool:b_prepare,bool:b_hidden[33],bool:b_killedbyhidden[33],v_countdown
- new const map_skybox[] = "space"
- new const map_light[] = "c"
- new const human_model_player[][]= {"arctic","terror","guerilla","gign","leet","vip"}
- new const hidden_model_player[] = "qt20"
- new const hidden_model_hand[] = "models/gr/thehidden/v_hdn.mdl"
- new const hidden_sound_pain[][]={"gr/thehidden/pain0.wav","gr/thehidden/pain1.wav","gr/thehidden/pain2.wav"}
- new const hidden_sound_die[][]={"gr/thehidden/die0.wav","gr/thehidden/die1.wav","gr/thehidden/die2.wav"}
- new const hidden_sound_taunt[][]={"gr/thehidden/taunt0.wav","gr/thehidden/taunt1.wav","gr/thehidden/taunt2.wav"}
- new const hidden_bgm[][] = {"sound/gr/thehidden/HDN_Docks.mp3","sound/gr/thehidden/HDN_Origin.mp3","sound/gr/thehidden/HDN_Traindepot.mp3","sound/gr/thehidden/HEX_Cooler.mp3"}
- new const object_ent[][]={"func_bomb_target","info_bomb_target","info_vip_start","info_vip_safetyzone","func_escapezone","hostage_entity","monster_entity","func_monster_rescue","info_hostage_rescue"}
- public plugin_precache()
- {
- new j,text[128]
- for(j = 0; j < sizeof human_model_player; j++)
- {
- formatex(text,charsmax(text),"models/player/%s/%s.mdl",human_model_player[j],human_model_player[j])
- precache_model(text)
- }
- formatex(text,charsmax(text),"models/player/%s/%s.mdl",hidden_model_player,hidden_model_player)
- precache_model(text)
- precache_model(hidden_model_hand)
- for(j = 0; j < sizeof hidden_sound_pain; j++) precache_sound(hidden_sound_pain[j])
- for(j = 0; j < sizeof hidden_sound_die; j++) precache_sound(hidden_sound_pain[j])
- for(j = 0; j < sizeof hidden_sound_taunt; j++) precache_sound(hidden_sound_taunt[j])
- for(j = 0; j < sizeof hidden_bgm; j++) precache_generic(hidden_bgm[j])
- for(j = 1; j < 11; j++)
- {
- formatex(text,charsmax(text),"gr/thehidden/%d.wav",j)
- precache_sound(text)
- }
- register_forward(FM_Spawn,"fm_spawn")
- }
- public plugin_init()
- {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- // event
- register_event("HLTV","event_newround","a","1=0","2=0")
- register_event("CurWeapon","event_curweapon","b","1=1")
- // ham
- RegisterHam(Ham_Spawn,"player","hm_spawn",1)
- RegisterHam(Ham_Killed,"player","hm_killed",0)
- RegisterHam(Ham_TakeDamage,"player","hm_takedmg")
- RegisterHam(Ham_Use,"func_tank","hm_use")
- RegisterHam(Ham_Use,"func_tankmortar","hm_use")
- RegisterHam(Ham_Use,"func_tanklaser","hm_use")
- RegisterHam(Ham_Use,"func_tankrocket","hm_use")
- RegisterHam(Ham_Use,"func_pushable","hm_use")
- RegisterHam(Ham_Touch,"weaponbox","hm_touch")
- RegisterHam(Ham_Spawn,"weaponbox","hm_weapon_spawn",1)
- // msg
- register_message(get_user_msgid("StatusIcon"),"msg_status_icn")
- register_message(get_user_msgid("TextMsg"),"msg_text")
- register_message(get_user_msgid("SendAudio"),"msg_sendaudio")
- set_msg_block(get_user_msgid("ShadowIdx"), BLOCK_SET)
- // fm
- register_forward(FM_ClientDisconnect,"fm_client_disconnect_pre")
- register_forward(FM_ClientDisconnect,"fm_client_disconnect_post")
- register_forward(FM_EmitSound,"fm_emitsound")
- register_forward(FM_ClientKill,"fm_kill")
- unregister_forward(FM_Spawn,register_forward(FM_Spawn,"fm_spawn"))
- // misc
- set_cvar_string("sv_skyname",map_skybox)
- set_cvar_num("sv_skycolor_r",0)
- set_cvar_num("sv_skycolor_g",0)
- set_cvar_num("sv_skycolor_b",0)
- set_lights(map_light)
- }
- public event_newround()
- {
- client_cmd(0,"mp3 stop")
- b_prepare = true
- if(!task_exists(task_random))
- {
- v_countdown = 20
- set_task(1.0,"task_random_hidden",task_random,_,_,"b")
- }
- }
- public event_curweapon(id)
- {
- if(!is_user_alive(id) || !is_user_connected(id))
- return PLUGIN_HANDLED
- if(get_user_weapon(id) == CSW_KNIFE && b_hidden[id])
- {
- set_pev(id,pev_viewmodel2,hidden_model_hand)
- set_pev(id,pev_weaponmodel2,"")
- set_pev(id,pev_gravity,0.6)
- }
- if(get_user_weapon(id) != CSW_KNIFE && b_hidden[id])
- {
- strip_user_weapons(id)
- give_item(id,"weapon_knife")
- }
- return PLUGIN_CONTINUE
- }
- public hm_spawn(id)
- {
- if(!is_user_alive(id) || !is_user_connected(id))
- return PLUGIN_HANDLED
- b_hidden[id] = false
- remove_task(id+task_hud)
- set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,254)
- strip_user_weapons(id)
- give_item(id,"weapon_knife")
- set_task(0.6,"menu_wpn",id);
- cs_set_player_maxspeed(id,250.0)
- cs_set_player_model(id,human_model_player[random(sizeof(human_model_player))])
- return PLUGIN_CONTINUE
- }
- public hm_killed(vic,atk,gib)
- {
- if(b_killedbyhidden[vic])
- {
- b_killedbyhidden[vic] = false
- set_msg_block(get_user_msgid("ClCorpse"), BLOCK_ONCE)
- SetHamParamInteger(3,2)
- set_msg_block(get_user_msgid("ClCorpse"), BLOCK_SET)
- }
- if(b_hidden[vic])
- {
- b_hidden[vic] = false
- }
- }
- public hm_takedmg(vic,ift,atk,Float:dmg,bit)
- {
- if(b_prepare)
- return HAM_SUPERCEDE
- if(b_hidden[atk])
- {
- SetHamParamFloat(4,dmg*9999)
- b_killedbyhidden[vic] = true
- set_user_health(atk,get_user_health(atk) + get_user_health(vic))
- emit_sound(atk,CHAN_STATIC,hidden_sound_taunt[random(sizeof(hidden_sound_taunt))],VOL_NORM,ATTN_NORM,0,PITCH_NORM)
- return HAM_IGNORED
- }
- return HAM_IGNORED
- }
- public hm_use(ent,caller,act,use)
- {
- if((use == 2) && is_user_connected(caller) && b_hidden[caller]) return HAM_SUPERCEDE
- return HAM_IGNORED
- }
- public hm_touch(wpn,id)
- {
- if(!is_user_connected(id)) return HAM_IGNORED
- if(b_hidden[id]) return HAM_SUPERCEDE
- return HAM_IGNORED
- }
- public hm_weapon_spawn(ent)
- {
- set_pev(ent,pev_flags,FL_KILLME)
- dllfunc(DLLFunc_Think,ent)
- return HAM_IGNORED
- }
- public msg_status_icn(msgid,msgdest,id)
- {
- static icon[8]
- get_msg_arg_string(2,icon,7)
- if(equal(icon,"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 msg_text(msgid,msgdest,id)
- {
- static msg[32]
- get_msg_arg_string(2,msg,charsmax(msg))
- if(equal(msg,"#Terrorists_Win"))
- {
- set_msg_arg_string(2,"Hidden win!")
- }
- if(equal(msg,"#CTs_Win"))
- {
- set_msg_arg_string(2,"Human win!")
- }
- }
- public msg_sendaudio()
- {
- static msg[10]
- get_msg_arg_string(2,msg,charsmax(msg))
- switch(msg[7])
- {
- case 'c','t','r' : return PLUGIN_HANDLED
- }
- return PLUGIN_CONTINUE
- }
- public fm_client_disconnect_pre(id)
- {
- b_hidden[id] = false
- b_killedbyhidden[id] = false
- remove_task(id+task_hud)
- }
- public fm_client_disconnect_post(id)
- {
- if(!get_hidden_count() && !task_exists(task_random))
- {
- v_countdown = 20
- set_task(1.0,"task_random_hidden",task_random,_,_,"b")
- }
- }
- public fm_emitsound(id,channel,const sample[],Float:volume,Float:attn,flags,pitch)
- {
- if(!is_user_connected(id)) return FMRES_IGNORED
- if(!b_hidden[id]) return FMRES_IGNORED
- if(sample[0] == 'h' && sample[3] == 't' && sample[6] == 'e')
- return FMRES_SUPERCEDE
- if(sample[7] == 'b' && sample[10] == 't')
- {
- emit_sound(id,channel,hidden_sound_pain[random(sizeof(hidden_sound_pain))],volume,attn,flags,pitch)
- return FMRES_SUPERCEDE
- }
- if(sample[7] == 'd' && ((sample[8] == 'i' && sample[9] == 'e') || (sample[8] == 'e' && sample[9] == 'a')))
- {
- emit_sound(id,channel,hidden_sound_die[random(sizeof(hidden_sound_die))],volume,attn,flags,pitch)
- return FMRES_SUPERCEDE
- }
- return FMRES_IGNORED
- }
- public fm_kill()
- {
- return FMRES_SUPERCEDE
- }
- public fm_spawn(ent)
- {
- if(!pev_valid(ent)) return FMRES_IGNORED
- new class[32],j
- pev(ent,pev_classname,class,charsmax(class))
- for(j = 0; j < sizeof object_ent; j++)
- {
- if(equal(class,object_ent[j]))
- {
- engfunc(EngFunc_RemoveEntity,ent)
- return FMRES_SUPERCEDE
- }
- }
- return FMRES_IGNORED
- }
- /////////////////////////////////// HANDLER
- public task_random_hidden()
- {
- v_countdown--
- if(!v_countdown)
- {
- remove_task(task_random)
- new player[32],num
- get_players(player,num,"ah")
- if(!num) return
- set_user_hidden(player[random(num)])
- return
- }
- client_print(0,print_center,"Random hidden will appear in %d second(s)",v_countdown)
- if(v_countdown < 11) client_cmd(0,"spk gr/thehidden/%d.wav",v_countdown)
- }
- public menu_wpn(id)
- {
- if(!is_user_connected(id) || !is_user_alive(id))
- return PLUGIN_HANDLED
- new menu = menu_create("Class Menu", "mh_MenuClass");
- menu_additem(menu, "ASSAULT A1", "", 0); // case 0
- menu_additem(menu, "ASSAULT A2", "", 0); // case 1
- menu_additem(menu, "ASSAULT A3", "", 0); // case 2
- menu_additem(menu, "SUPPORT S1", "", 0); // case 3
- menu_additem(menu, "SUPPORT S2", "", 0); // case 4
- menu_additem(menu, "SUPPORT S3", "", 0); // case 5
- menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
- menu_display(id, menu, 0);
- return PLUGIN_HANDLED;
- }
- public mh_MenuClass(id, menu, item)
- {
- if(!is_user_connected(id)) return PLUGIN_HANDLED;
- if(item == MENU_EXIT)
- {
- menu_cancel(id);
- return PLUGIN_HANDLED;
- }
- new command[6], name[64], access, callback;
- menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
- switch(item)
- {
- case 0:
- {
- give_item(id, "weapon_deagle")
- give_item(id, "weapon_m3")
- cs_set_user_bpammo(id, CSW_DEAGLE, 14)
- cs_set_user_bpammo(id, CSW_M3, 28)
- }
- case 1:
- {
- give_item(id, "weapon_p228")
- give_item(id, "weapon_m4a1")
- cs_set_user_bpammo(id, CSW_P228, 26)
- cs_set_user_bpammo(id, CSW_M4A1, 30)
- }
- case 2:
- {
- give_item(id, "weapon_fiveseven")
- give_item(id, "weapon_ak47")
- cs_set_user_bpammo(id, CSW_FIVESEVEN, 20)
- cs_set_user_bpammo(id, CSW_AK47, 30)
- }
- case 3:
- {
- give_item(id, "weapon_smokegrenade")
- give_item(id, "weapon_fiveseven")
- give_item(id, "weapon_xm1014")
- cs_set_user_bpammo(id, CSW_FIVESEVEN, 20)
- cs_set_user_bpammo(id, CSW_XM1014, 28)
- }
- case 4:
- {
- give_item(id, "weapon_smokegrenade")
- give_item(id, "weapon_p228")
- give_item(id, "weapon_p90")
- cs_set_user_bpammo(id, CSW_P228, 26)
- cs_set_user_bpammo(id, CSW_P90, 50)
- }
- case 5:
- {
- give_item(id, "weapon_smokegrenade")
- give_item(id, "weapon_fiveseven")
- give_item(id, "weapon_m249")
- cs_set_user_bpammo(id, CSW_FIVESEVEN, 20)
- cs_set_user_bpammo(id, CSW_M249, 120)
- }
- }
- menu_destroy(menu);
- return PLUGIN_HANDLED;
- }
- public task_show_hud(id)
- {
- id-=task_hud
- if(!is_user_connected(id)) return
- set_hudmessage(0, 64, 0, 0.02, 0.9, 0, 6.0, 1.1, 0.5, 0.6, -1)
- ShowSyncHudMsg(id, CreateHudSyncObj(), "HEALTH: %d", pev(id, pev_health))
- }
- get_hidden_count()
- {
- new y,j
- y=0
- for(j=1;j<=get_maxplayers();j++)
- {
- if(!is_user_connected(j)) continue
- if(b_hidden[j]) y++
- }
- return y
- }
- set_user_hidden(id)
- {
- b_prepare = false
- b_hidden[id] = true
- strip_user_weapons(id)
- give_item(id,"weapon_knife")
- team_transfer()
- cs_set_player_team(id,CsTeams:CS_TEAM_T)
- cs_set_user_team(id,CS_TEAM_T)
- cs_set_player_model(id,hidden_model_player)
- cs_set_player_maxspeed(id,600.0)
- set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,14)
- set_user_health(id,600)
- remove_task(id+task_hud)
- set_task(1.0, "task_show_hud", id+task_hud, _, _, "b")
- new name[32]; get_user_name(id,name,charsmax(name))
- client_print(0,print_center,"'%s' has become the hidden...",name)
- client_cmd(0,"mp3 loop %s",hidden_bgm[random(sizeof(hidden_bgm))])
- }
- public team_transfer()
- {
- for(new i = 1; i < get_maxplayers(); i++)
- {
- if(is_user_alive(i) && is_user_connected(i) && !b_hidden[i])
- {
- cs_set_player_team(i,CS_TEAM_CT,1)
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement