- | Afiseaza codul
/* [DeathRun] Duel (CT Choose ONLY) Plugin by Shidla [SGC] Idea & Pay (xD): DarkNill | ICQ: 555-995-004 (zombie-mod.ru) Credits: xPaw DJ_WEST Shidla [SGC] | 2010 | ICQ: 312-298-513 1.3 [Final Version] | 23/11/2010 http://Shidla.Gm-Project.NET/ */ #include <amxmodx> #include <fakemeta> #include <hamsandwich> #include <cstrike> #define OFFSET_RELOAD 54 #define LINUX_DIFF 4 #define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1)) /*======================================================================================================== ===========================================[ Customizations ]============================================= ========================================================================================================*/ new const BOT_NAME[] = "DRM Fake Player" // InGame Bot Name (in DeathrunManager!) new const g_ChatPrefix[] = "[DeathRun Duel]" new const CT_Aura[] = { 0, 0, 250 } new const T_Aura[] = { 250, 0, 0 } new const s_StartDuel[][] = { "vox/bizwarn.wav" } // Duel starting sounds /*======================================================================================================== =========================================[ Customizations End ]=========================================== ========================================================================================================*/ new SayText, g_Maxplayers, g_Num_CT, g_MsgCurWeapon, g_DuelStarted, g_Weapon[33], g_WeaponClip[33], g_OneShot, g_ScoutBPAmmo, g_DeagleBPAmmo, g_AWPBPAmmo, g_Round_Ended, g_New_Round, RingSprite, CT_Player, T_Player, g_PlayerHP, g_DuelTimeOut, g_MsgSync, CountDown_Timer, g_ButtonsDisable new const TASK_CONT = 1352 // CountDown task public plugin_init() { register_plugin("DeathRun Duel (CT Choose ONLY)", "1.3", "Shidla") register_cvar("Shidla", "DeathRun Duel 1.3 (CT Choose ONLY)", FCVAR_SERVER|FCVAR_SPONLY) register_clcmd("say /duel", "StartDuel") register_clcmd("say_team /duel", "StartDuel") register_clcmd("drop", "Drop_Cmd") g_ScoutBPAmmo = register_cvar("dr_duel_scout_bpammo", "200") g_DeagleBPAmmo = register_cvar("dr_duel_deagle_bpammo", "50") g_AWPBPAmmo = register_cvar("dr_duel_awp_bpammo", "100") g_PlayerHP = register_cvar("dr_duel_player_hp", "100") g_DuelTimeOut = register_cvar("dr_duel_timeout", "5") g_OneShot = register_cvar("dr_duel_one_shot", "1") // 1 - one clip bullet (ONLY!); 0 - disable g_ButtonsDisable = register_cvar("dr_duel_buttons_disable", "1") register_event("DeathMsg", "Event_Death", "a") register_event("HLTV", "Event_Round_Start", "a", "1=0", "2=0" ) register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_terwin") register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_ctwin") register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_rounddraw") register_event("CurWeapon","Event_CurWeapon","b") register_forward(FM_CmdStart, "fw_CmdStart",1) RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon") RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon") RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon") RegisterHam(Ham_Weapon_Reload, "weapon_scout", "fw_Reload_Post", 1) RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "fw_Reload_Post", 1) RegisterHam(Ham_Weapon_Reload, "weapon_awp", "fw_Reload_Post", 1) RegisterHam(Ham_Use, "func_button", "fw_Use") SayText = get_user_msgid("SayText") g_MsgCurWeapon = get_user_msgid("CurWeapon") g_MsgSync = CreateHudSyncObj() g_Maxplayers = get_maxplayers() register_dictionary("dr_duel.txt") } public plugin_precache() { RingSprite = precache_model("sprites/zbeam5.spr") static i for(i = 0; i < sizeof s_StartDuel; i++) precache_sound(s_StartDuel) } public client_putinserver(id) { g_Weapon[id] = 0 g_WeaponClip[id] = 0 } public StartDuel(id) { if(!is_user_alive(id)) { new t_Cant_Dead[600 char] formatex(t_Cant_Dead, charsmax(t_Cant_Dead), "%L", id, "DR_CANT_DEAD") print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Dead) return PLUGIN_CONTINUE } if(g_Round_Ended) { new t_Cant_Round_End[600 char] formatex(t_Cant_Round_End, charsmax(t_Cant_Round_End), "%L", id, "DR_CANT_ROUND_END") print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Round_End) return PLUGIN_CONTINUE } if(cs_get_user_team(id) == CS_TEAM_T) { new t_Cant_Ter[600 char] formatex(t_Cant_Ter, charsmax(t_Cant_Ter), "%L", id, "DR_CANT_TER") print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Ter) return PLUGIN_CONTINUE } if(g_DuelStarted) { new t_Cant_Started[600 char] formatex(t_Cant_Started, charsmax(t_Cant_Started), "%L", id, "DR_CANT_STARTED") print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Started) return PLUGIN_CONTINUE } for(new i = 1; i <= g_Maxplayers; i++) { new Name[32] get_user_name(i, Name, 31) if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT) { g_Num_CT++ if(g_Num_CT == 1) CT_Player = i else CT_Player = 0 } if(is_user_alive(i) && (cs_get_user_team(i) == CS_TEAM_T) && !equal(Name, BOT_NAME)) T_Player = i } if(g_Num_CT == 1) { new TextTitle[ 200 char ] formatex(TextTitle, charsmax(TextTitle), "\rВыберите оружие для дуэли:") new WeapScout[ 200 char ] formatex(WeapScout, charsmax(WeapScout), "\yМуха [Scout]") new WeapDeagle[ 200 char ] formatex(WeapDeagle, charsmax(WeapDeagle), "\yДигл [Deagle]") new WeapAWP[ 200 char ] formatex(WeapAWP, charsmax(WeapAWP), "\yСлон [AWP]") new WeapKNife[ 200 char ] formatex(WeapKNife, charsmax(WeapKNife), "\yНож [KNife]") new i_Menu = menu_create(TextTitle, "WeaponMenu") menu_additem(i_Menu, WeapScout, "1", 0) menu_additem(i_Menu, WeapDeagle, "2", 0) menu_additem(i_Menu, WeapAWP, "3", 0) menu_additem(i_Menu, WeapKNife, "4", 0) g_DuelStarted = true g_New_Round = false fm_strip_user_weapons(CT_Player) fm_strip_user_weapons(T_Player) set_pev(CT_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set CT HP set_pev(T_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set T HP if(is_user_alive(CT_Player) && is_user_connected(CT_Player)) { fm_set_user_godmode(CT_Player, 1) set_task(0.5, "Show_Ring", CT_Player) } if(is_user_alive(T_Player) && is_user_connected(T_Player)) { fm_set_user_godmode(T_Player, 1) set_task(0.5, "Show_Ring", T_Player) } menu_display(CT_Player, i_Menu, 0) } else { new t_Cant_Too_Many[600 char] formatex(t_Cant_Too_Many, charsmax(t_Cant_Too_Many), "%L", id, "DR_CANT_TOO_MANY", g_Num_CT) print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Too_Many) } g_Num_CT = 0 return PLUGIN_CONTINUE } public WeaponMenu(id, menu, item) { new s_Data[4], s_Name[64], i_Access, i_Callback menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback) new i_Key = str_to_num(s_Data) switch(i_Key) { case 1: { Give_Scout(CT_Player) Give_Scout(T_Player) } case 2: { Give_Deagle(CT_Player) Give_Deagle(T_Player) } case 3: { Give_AWP(CT_Player) Give_AWP(T_Player) } case 4: { fm_give_item(CT_Player, "weapon_knife") fm_give_item(T_Player, "weapon_knife") } } menu_destroy(menu) if(is_user_alive(CT_Player) && is_user_connected(CT_Player)) fm_set_rendering(CT_Player, kRenderFxGlowShell, CT_Aura[0], CT_Aura[1], CT_Aura[2], kRenderNormal, 20) if(is_user_alive(T_Player) && is_user_connected(T_Player)) fm_set_rendering(T_Player, kRenderFxGlowShell, T_Aura[0], T_Aura[1], T_Aura[2], kRenderNormal, 20) CountDown_Timer = get_pcvar_num(g_DuelTimeOut) set_task(float(get_pcvar_num(g_DuelTimeOut)), "Duel_Informer", TASK_CONT) return PLUGIN_HANDLED } public Event_Death() { new CT_Count, CT_Last_Player for(new i = 1; i <= g_Maxplayers; i++) { new Name[32] get_user_name(i, Name, 31) if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT) { CT_Count++ if(CT_Count == 1) CT_Last_Player = i else CT_Last_Player = 0 } } if(CT_Count == 1 && !g_Round_Ended && is_user_alive(CT_Last_Player) && is_user_connected(CT_Last_Player) && is_user_alive(T_Player)) { new t_Can_Start[600 char] formatex(t_Can_Start, charsmax(t_Can_Start), "%L", CT_Last_Player, "DR_CAN_START") print_col_chat(CT_Last_Player, "^4%s^1 %s",g_ChatPrefix, t_Can_Start) } CT_Count = 0 } public Event_Round_Start() { g_DuelStarted = false g_Round_Ended = false g_New_Round = true g_Num_CT = 0 CT_Player = 0 T_Player = 0 remove_task(TASK_CONT) for(new id = 1; id <= g_Maxplayers; id++) fm_set_rendering(id) } public Event_Round_End() { g_Round_Ended = true CT_Player = 0 T_Player = 0 } public Event_CurWeapon(id) { g_Weapon[id] = read_data(2) g_WeaponClip[id] = read_data(3) if(g_DuelStarted) { if(g_WeaponClip[id] > 1) { if(g_Weapon[id] == CSW_SCOUT) Weapon_ReChek(id, CSW_SCOUT) else if(g_Weapon[id] == CSW_DEAGLE) Weapon_ReChek(id, CSW_DEAGLE) else if(g_Weapon[id] == CSW_AWP) Weapon_ReChek(id, CSW_AWP) } } } public fw_CmdStart(id, handle, seed) { if(!is_user_alive(id) || !g_DuelStarted) return FMRES_IGNORED if((g_Weapon[id] == CSW_SCOUT || g_Weapon[id] == CSW_DEAGLE || g_Weapon[id] == CSW_AWP) && get_pcvar_num(g_OneShot)) { //if(pev(id, pev_button) & IN_RELOAD) if(get_uc(handle, UC_Buttons) & IN_RELOAD) { set_uc(handle, UC_Buttons, get_uc(handle, UC_Buttons) & ~IN_RELOAD) return FMRES_HANDLED } } return FMRES_IGNORED } public Drop_Cmd(id) { if(g_DuelStarted) { new t_Cant_Drop[600 char] formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", id, "DR_CANT_DROP") print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop) return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public fw_TouchWeapon(weapon, id) { if(!is_user_connected(id)) return HAM_IGNORED if(g_DuelStarted) return HAM_SUPERCEDE return HAM_IGNORED } public fw_Reload_Post(Weap) { if(!g_DuelStarted && !get_pcvar_num(g_OneShot)) return FMRES_IGNORED if(is_user_alive(CT_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF)) { if(g_Weapon[CT_Player] == CSW_SCOUT) cs_set_user_bpammo(CT_Player, CSW_SCOUT, cs_get_user_bpammo(CT_Player, CSW_SCOUT) + 9) else if(g_Weapon[CT_Player] == CSW_DEAGLE) cs_set_user_bpammo(CT_Player, CSW_DEAGLE, cs_get_user_bpammo(CT_Player, CSW_DEAGLE) + 6) else if(g_Weapon[CT_Player] == CSW_AWP) cs_set_user_bpammo(CT_Player, CSW_AWP, cs_get_user_bpammo(CT_Player, CSW_AWP) + 9) } if(is_user_alive(T_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF)) { if(g_Weapon[T_Player] == CSW_SCOUT) cs_set_user_bpammo(T_Player, CSW_SCOUT, cs_get_user_bpammo(T_Player, CSW_SCOUT) + 9) else if(g_Weapon[T_Player] == CSW_DEAGLE) cs_set_user_bpammo(T_Player, CSW_DEAGLE, cs_get_user_bpammo(T_Player, CSW_DEAGLE) + 6) else if(g_Weapon[T_Player] == CSW_AWP) cs_set_user_bpammo(T_Player, CSW_AWP, cs_get_user_bpammo(T_Player, CSW_AWP) + 9) } return FMRES_IGNORED } public fw_Use(ent, idcaller, idactivator, use_type, Float:value) { if(g_ButtonsDisable && g_DuelStarted && is_user_alive(idactivator) && cs_get_user_team(idactivator) == CS_TEAM_T) { new t_Cant_Drop[600 char] formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", idactivator, "DR_CANT_USE") print_col_chat(idactivator, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop) return HAM_SUPERCEDE } return HAM_IGNORED } public Duel_Informer() { if(CountDown_Timer > 1) { set_hudmessage(255, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, -1) if(CountDown_Timer != 1) { for(new id = 1; id <= g_Maxplayers; id++) { new t_Time_Delay[600 char] formatex(t_Time_Delay, charsmax(t_Time_Delay), "%L", id, "DR_TIME_DELAY", CountDown_Timer - 1) ShowSyncHudMsg(id, g_MsgSync, "%s", t_Time_Delay) } } } --CountDown_Timer if(CountDown_Timer >= 1) set_task(1.0, "Duel_Informer", TASK_CONT) else { client_cmd(0, "spk %s", s_StartDuel[random_num(0, sizeof s_StartDuel - 1)]) if(is_user_alive(CT_Player) && is_user_connected(CT_Player)) fm_set_user_godmode(CT_Player, 0) if(is_user_alive(T_Player) && is_user_connected(T_Player)) fm_set_user_godmode(T_Player, 0) remove_task(TASK_CONT) } } public Show_Ring(id) { if(g_DuelStarted && is_user_alive(id) && is_user_connected(id) && !g_New_Round) { static Float:origin[3] pev(id, pev_origin, origin) if(id == CT_Player) Ring(origin, CT_Aura[0], CT_Aura[1], CT_Aura[2]) else if(id == T_Player) Ring(origin, T_Aura[0], T_Aura[1], T_Aura[2]) set_task(0.5, "Show_Ring", id) } else remove_task(id) } /*======================================================================================================== ===============================================[ Stocks ]================================================= ========================================================================================================*/ stock fm_give_item(index, const item[]) { if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10)) return 0 new ent = fm_create_entity(item) if (!pev_valid(ent)) return 0 new Float:origin[3] pev(index, pev_origin, origin) set_pev(ent, pev_origin, origin) set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN) dllfunc(DLLFunc_Spawn, ent) new save = pev(ent, pev_solid) dllfunc(DLLFunc_Touch, ent, index) if (pev(ent, pev_solid) != save) return ent engfunc(EngFunc_RemoveEntity, ent) return -1 } stock fm_strip_user_weapons(index) { new ent = fm_create_entity("player_weaponstrip") if (!pev_valid(ent)) return 0 dllfunc(DLLFunc_Spawn, ent) dllfunc(DLLFunc_Use, ent, index) engfunc(EngFunc_RemoveEntity, ent) return 1 } stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) { new Float:RenderColor[3] RenderColor[0] = float(r) RenderColor[1] = float(g) RenderColor[2] = float(b) set_pev(entity, pev_renderfx, fx) set_pev(entity, pev_rendercolor, RenderColor) set_pev(entity, pev_rendermode, render) set_pev(entity, pev_renderamt, float(amount)) return 1 } stock get_weapon_ent(id,wpnid=0,wpnName[]="") { // who knows what wpnName will be static newName[32] // need to find the name if(wpnid) get_weaponname(wpnid,newName,31) // go with what we were told else formatex(newName,31,"%s",wpnName) // prefix it if we need to if(!equal(newName,"weapon_",7)) format(newName,31,"weapon_%s",newName) new ent while((ent = engfunc(EngFunc_FindEntityByString,ent,"classname",newName)) && pev(ent,pev_owner) != id) {} return ent } stock fm_set_user_godmode(index, godmode = 0) { set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM) return 1 } stock print_col_chat(const id, const input[], any:...) { new count = 1, players[32] static msg[191] vformat(msg, 190, input, 3) replace_all(msg, 190, "!g", "^4") // Green Color replace_all(msg, 190, "!y", "^1") // Default Color (Yellow) replace_all(msg, 190, "!t", "^3") // Team Color if (id) players[0] = id; else get_players(players, count, "ch") { for ( new i = 0; i < count; i++ ) { if ( is_user_connected(players) ) { message_begin(MSG_ONE_UNRELIABLE, SayText, _, players) write_byte(players) write_string(msg) message_end() } } } } UpDate_HUD(id, csw_weapon) { message_begin(MSG_ONE, g_MsgCurWeapon, _, id) write_byte(1) write_byte(csw_weapon) //CSW_weapon write_byte(1) // MaxClip message_end() } Give_Scout(id) { if(is_user_alive(id) && is_user_connected(id)) { fm_give_item(id, "weapon_scout") new wEnt = get_weapon_ent(id, CSW_SCOUT) if(pev_valid(wEnt) && get_pcvar_num(g_OneShot)) cs_set_weapon_ammo(wEnt, 1) cs_set_user_bpammo(id, CSW_SCOUT, get_pcvar_num(g_ScoutBPAmmo)) UpDate_HUD(id, wEnt) } } Give_Deagle(id) { if(is_user_alive(id) && is_user_connected(id)) { fm_give_item(id, "weapon_deagle") new wEnt = get_weapon_ent(id, CSW_DEAGLE) if(pev_valid(wEnt) && get_pcvar_num(g_OneShot)) cs_set_weapon_ammo(wEnt, 1) cs_set_user_bpammo(id, CSW_DEAGLE, get_pcvar_num(g_DeagleBPAmmo)) UpDate_HUD(id, wEnt) } } Give_AWP(id) { if(is_user_alive(id) && is_user_connected(id)) { fm_give_item(id, "weapon_awp") new wEnt = get_weapon_ent(id, CSW_AWP) if(pev_valid(wEnt) && get_pcvar_num(g_OneShot)) cs_set_weapon_ammo(wEnt, 1) cs_set_user_bpammo(id, CSW_AWP, get_pcvar_num(g_AWPBPAmmo)) UpDate_HUD(id, wEnt) } } Weapon_ReChek(id, Weap) { if(get_pcvar_num(g_OneShot) && is_user_alive(id) && is_user_connected(id)) { new wEnt = get_weapon_ent(id, Weap) if(pev_valid(wEnt)) { cs_set_weapon_ammo(wEnt, 1) UpDate_HUD(id, wEnt) } } } Ring(const Float:origin[3], R, G, B) { engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0) write_byte(TE_BEAMCYLINDER) // TE id engfunc(EngFunc_WriteCoord, origin[0]) // x 10 engfunc(EngFunc_WriteCoord, origin[1]) // y engfunc(EngFunc_WriteCoord, origin[2]) // z engfunc(EngFunc_WriteCoord, origin[0]-50.0) // x axis engfunc(EngFunc_WriteCoord, origin[1]) // y axis engfunc(EngFunc_WriteCoord, origin[2]+100.0) // z axis write_short(RingSprite) // sprite write_byte(0) // startframe write_byte(0) // framerate write_byte(5) // life write_byte(5) // width write_byte(0) // noise write_byte(R) // red write_byte(G) // green write_byte(B) // blue write_byte(200) // brightness write_byte(0) // speed message_end() }
Modificare plugin /duel
Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com
- kidd0x
- Utilizator neserios (tepar)
- Posts: 1054
- Joined: 06 Oct 2018, 14:41
- Detinator Steam: Da
- SteamID: /id/kidd0x/
- Reputatie: Utilizator neserios (tepar!)
- Fond eXtream: 0
- Location: Constangeles
- Discord: kidd0x
- Has thanked: 172 times
- Been thanked: 81 times
Ai un dictionar la el , tradu-l pe google translate , ce e asa greu ?
- DeViLllll
- Membru, skill 0
- Posts: 40
- Joined: 13 Sep 2020, 12:30
- Detinator Steam: Nu
- CS Status: Hlewllel
- Fond eXtream: 0
- Has thanked: 4 times
- Been thanked: 1 time
Eu vreau sa - mi modificati sma-ul sa nu mai fie scut si scrisu ca txt il am el apare in rusa de la sma nu de la txt ca dupa ce dau duel si aleg arma imi scrie in engleza meniul din sma e problema
- kidd0x
- Utilizator neserios (tepar)
- Posts: 1054
- Joined: 06 Oct 2018, 14:41
- Detinator Steam: Da
- SteamID: /id/kidd0x/
- Reputatie: Utilizator neserios (tepar!)
- Fond eXtream: 0
- Location: Constangeles
- Discord: kidd0x
- Has thanked: 172 times
- Been thanked: 81 times
Code: Select all
/*
[DeathRun] Duel (CT Choose ONLY)
Plugin by Shidla [SGC]
Idea & Pay (xD):
DarkNill | ICQ: 555-995-004 (zombie-mod.ru)
Credits:
xPaw
DJ_WEST
Shidla [SGC] | 2010 | ICQ: 312-298-513
1.3 [Final Version] | 23/11/2010
http://Shidla.Gm-Project.NET/
*/
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#define OFFSET_RELOAD 54
#define LINUX_DIFF 4
#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))
/*========================================================================================================
===========================================[ Customizations ]=============================================
========================================================================================================*/
new const BOT_NAME[] = "DRM Fake Player" // InGame Bot Name (in DeathrunManager!)
new const g_ChatPrefix[] = "[DeathRun Duel]"
new const CT_Aura[] = { 0, 0, 250 }
new const T_Aura[] = { 250, 0, 0 }
new const s_StartDuel[][] = { "vox/bizwarn.wav" } // Duel starting sounds
/*========================================================================================================
=========================================[ Customizations End ]===========================================
========================================================================================================*/
new SayText, g_Maxplayers, g_Num_CT, g_MsgCurWeapon, g_DuelStarted, g_Weapon[33], g_WeaponClip[33],
g_OneShot, g_ScoutBPAmmo, g_DeagleBPAmmo, g_AWPBPAmmo, g_Round_Ended, g_New_Round, RingSprite,
CT_Player, T_Player, g_PlayerHP, g_DuelTimeOut, g_MsgSync, CountDown_Timer, g_ButtonsDisable
new const TASK_CONT = 1352 // CountDown task
public plugin_init()
{
register_plugin("DeathRun Duel (CT Choose ONLY)", "1.3", "Shidla")
register_cvar("Shidla", "DeathRun Duel 1.3 (CT Choose ONLY)", FCVAR_SERVER|FCVAR_SPONLY)
register_clcmd("say /duel", "StartDuel")
register_clcmd("say_team /duel", "StartDuel")
register_clcmd("drop", "Drop_Cmd")
g_ScoutBPAmmo = register_cvar("dr_duel_scout_bpammo", "200")
g_DeagleBPAmmo = register_cvar("dr_duel_deagle_bpammo", "50")
g_AWPBPAmmo = register_cvar("dr_duel_awp_bpammo", "100")
g_PlayerHP = register_cvar("dr_duel_player_hp", "100")
g_DuelTimeOut = register_cvar("dr_duel_timeout", "5")
g_OneShot = register_cvar("dr_duel_one_shot", "1") // 1 - one clip bullet (ONLY!); 0 - disable
g_ButtonsDisable = register_cvar("dr_duel_buttons_disable", "1")
register_event("DeathMsg", "Event_Death", "a")
register_event("HLTV", "Event_Round_Start", "a", "1=0", "2=0" )
register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_terwin")
register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_ctwin")
register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_rounddraw")
register_event("CurWeapon","Event_CurWeapon","b")
register_forward(FM_CmdStart, "fw_CmdStart",1)
RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon")
RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon")
RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon")
RegisterHam(Ham_Weapon_Reload, "weapon_scout", "fw_Reload_Post", 1)
RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "fw_Reload_Post", 1)
RegisterHam(Ham_Weapon_Reload, "weapon_awp", "fw_Reload_Post", 1)
RegisterHam(Ham_Use, "func_button", "fw_Use")
SayText = get_user_msgid("SayText")
g_MsgCurWeapon = get_user_msgid("CurWeapon")
g_MsgSync = CreateHudSyncObj()
g_Maxplayers = get_maxplayers()
register_dictionary("dr_duel.txt")
}
public plugin_precache()
{
RingSprite = precache_model("sprites/zbeam5.spr")
static i
for(i = 0; i < sizeof s_StartDuel; i++)
precache_sound(s_StartDuel)
}
public client_putinserver(id)
{
g_Weapon[id] = 0
g_WeaponClip[id] = 0
}
public StartDuel(id)
{
if(!is_user_alive(id))
{
new t_Cant_Dead[600 char]
formatex(t_Cant_Dead, charsmax(t_Cant_Dead), "%L", id, "DR_CANT_DEAD")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Dead)
return PLUGIN_CONTINUE
}
if(g_Round_Ended)
{
new t_Cant_Round_End[600 char]
formatex(t_Cant_Round_End, charsmax(t_Cant_Round_End), "%L", id, "DR_CANT_ROUND_END")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Round_End)
return PLUGIN_CONTINUE
}
if(cs_get_user_team(id) == CS_TEAM_T)
{
new t_Cant_Ter[600 char]
formatex(t_Cant_Ter, charsmax(t_Cant_Ter), "%L", id, "DR_CANT_TER")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Ter)
return PLUGIN_CONTINUE
}
if(g_DuelStarted)
{
new t_Cant_Started[600 char]
formatex(t_Cant_Started, charsmax(t_Cant_Started), "%L", id, "DR_CANT_STARTED")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Started)
return PLUGIN_CONTINUE
}
for(new i = 1; i <= g_Maxplayers; i++)
{
new Name[32]
get_user_name(i, Name, 31)
if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)
{
g_Num_CT++
if(g_Num_CT == 1)
CT_Player = i
else
CT_Player = 0
}
if(is_user_alive(i) && (cs_get_user_team(i) == CS_TEAM_T) && !equal(Name, BOT_NAME))
T_Player = i
}
if(g_Num_CT == 1)
{
new TextTitle[ 200 char ]
formatex(TextTitle, charsmax(TextTitle), "\rAlege o metoda pentru duel:")
new WeapScout[ 200 char ]
formatex(WeapScout, charsmax(WeapScout), "\yScout])
new WeapDeagle[ 200 char ]
formatex(WeapDeagle, charsmax(WeapDeagle), "\yDeagle")
new WeapAWP[ 200 char ]
formatex(WeapAWP, charsmax(WeapAWP), "\yAwp")
new WeapKNife[ 200 char ]
formatex(WeapKNife, charsmax(WeapKNife), "\yDoar cutite")
new i_Menu = menu_create(TextTitle, "WeaponMenu")
menu_additem(i_Menu, WeapScout, "1", 0)
menu_additem(i_Menu, WeapDeagle, "2", 0)
menu_additem(i_Menu, WeapAWP, "3", 0)
menu_additem(i_Menu, WeapKNife, "4", 0)
g_DuelStarted = true
g_New_Round = false
fm_strip_user_weapons(CT_Player)
fm_strip_user_weapons(T_Player)
set_pev(CT_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set CT HP
set_pev(T_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set T HP
if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
{
fm_set_user_godmode(CT_Player, 1)
set_task(0.5, "Show_Ring", CT_Player)
}
if(is_user_alive(T_Player) && is_user_connected(T_Player))
{
fm_set_user_godmode(T_Player, 1)
set_task(0.5, "Show_Ring", T_Player)
}
menu_display(CT_Player, i_Menu, 0)
}
else
{
new t_Cant_Too_Many[600 char]
formatex(t_Cant_Too_Many, charsmax(t_Cant_Too_Many), "%L", id, "DR_CANT_TOO_MANY", g_Num_CT)
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Too_Many)
}
g_Num_CT = 0
return PLUGIN_CONTINUE
}
public WeaponMenu(id, menu, item)
{
new s_Data[4], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)
switch(i_Key)
{
case 1:
{
Give_Scout(CT_Player)
Give_Scout(T_Player)
}
case 2:
{
Give_Deagle(CT_Player)
Give_Deagle(T_Player)
}
case 3:
{
Give_AWP(CT_Player)
Give_AWP(T_Player)
}
case 4:
{
fm_give_item(CT_Player, "weapon_knife")
fm_give_item(T_Player, "weapon_knife")
}
}
menu_destroy(menu)
if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
fm_set_rendering(CT_Player, kRenderFxGlowShell, CT_Aura[0], CT_Aura[1], CT_Aura[2], kRenderNormal, 20)
if(is_user_alive(T_Player) && is_user_connected(T_Player))
fm_set_rendering(T_Player, kRenderFxGlowShell, T_Aura[0], T_Aura[1], T_Aura[2], kRenderNormal, 20)
CountDown_Timer = get_pcvar_num(g_DuelTimeOut)
set_task(float(get_pcvar_num(g_DuelTimeOut)), "Duel_Informer", TASK_CONT)
return PLUGIN_HANDLED
}
public Event_Death()
{
new CT_Count, CT_Last_Player
for(new i = 1; i <= g_Maxplayers; i++)
{
new Name[32]
get_user_name(i, Name, 31)
if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)
{
CT_Count++
if(CT_Count == 1)
CT_Last_Player = i
else
CT_Last_Player = 0
}
}
if(CT_Count == 1 && !g_Round_Ended && is_user_alive(CT_Last_Player) && is_user_connected(CT_Last_Player) && is_user_alive(T_Player))
{
new t_Can_Start[600 char]
formatex(t_Can_Start, charsmax(t_Can_Start), "%L", CT_Last_Player, "DR_CAN_START")
print_col_chat(CT_Last_Player, "^4%s^1 %s",g_ChatPrefix, t_Can_Start)
}
CT_Count = 0
}
public Event_Round_Start()
{
g_DuelStarted = false
g_Round_Ended = false
g_New_Round = true
g_Num_CT = 0
CT_Player = 0
T_Player = 0
remove_task(TASK_CONT)
for(new id = 1; id <= g_Maxplayers; id++)
fm_set_rendering(id)
}
public Event_Round_End()
{
g_Round_Ended = true
CT_Player = 0
T_Player = 0
}
public Event_CurWeapon(id)
{
g_Weapon[id] = read_data(2)
g_WeaponClip[id] = read_data(3)
if(g_DuelStarted)
{
if(g_WeaponClip[id] > 1)
{
if(g_Weapon[id] == CSW_SCOUT)
Weapon_ReChek(id, CSW_SCOUT)
else if(g_Weapon[id] == CSW_DEAGLE)
Weapon_ReChek(id, CSW_DEAGLE)
else if(g_Weapon[id] == CSW_AWP)
Weapon_ReChek(id, CSW_AWP)
}
}
}
public fw_CmdStart(id, handle, seed)
{
if(!is_user_alive(id) || !g_DuelStarted)
return FMRES_IGNORED
if((g_Weapon[id] == CSW_SCOUT || g_Weapon[id] == CSW_DEAGLE || g_Weapon[id] == CSW_AWP) && get_pcvar_num(g_OneShot))
{
//if(pev(id, pev_button) & IN_RELOAD)
if(get_uc(handle, UC_Buttons) & IN_RELOAD)
{
set_uc(handle, UC_Buttons, get_uc(handle, UC_Buttons) & ~IN_RELOAD)
return FMRES_HANDLED
}
}
return FMRES_IGNORED
}
public Drop_Cmd(id)
{
if(g_DuelStarted)
{
new t_Cant_Drop[600 char]
formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", id, "DR_CANT_DROP")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public fw_TouchWeapon(weapon, id)
{
if(!is_user_connected(id))
return HAM_IGNORED
if(g_DuelStarted)
return HAM_SUPERCEDE
return HAM_IGNORED
}
public fw_Reload_Post(Weap)
{
if(!g_DuelStarted && !get_pcvar_num(g_OneShot))
return FMRES_IGNORED
if(is_user_alive(CT_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF))
{
if(g_Weapon[CT_Player] == CSW_SCOUT)
cs_set_user_bpammo(CT_Player, CSW_SCOUT, cs_get_user_bpammo(CT_Player, CSW_SCOUT) + 9)
else if(g_Weapon[CT_Player] == CSW_DEAGLE)
cs_set_user_bpammo(CT_Player, CSW_DEAGLE, cs_get_user_bpammo(CT_Player, CSW_DEAGLE) + 6)
else if(g_Weapon[CT_Player] == CSW_AWP)
cs_set_user_bpammo(CT_Player, CSW_AWP, cs_get_user_bpammo(CT_Player, CSW_AWP) + 9)
}
if(is_user_alive(T_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF))
{
if(g_Weapon[T_Player] == CSW_SCOUT)
cs_set_user_bpammo(T_Player, CSW_SCOUT, cs_get_user_bpammo(T_Player, CSW_SCOUT) + 9)
else if(g_Weapon[T_Player] == CSW_DEAGLE)
cs_set_user_bpammo(T_Player, CSW_DEAGLE, cs_get_user_bpammo(T_Player, CSW_DEAGLE) + 6)
else if(g_Weapon[T_Player] == CSW_AWP)
cs_set_user_bpammo(T_Player, CSW_AWP, cs_get_user_bpammo(T_Player, CSW_AWP) + 9)
}
return FMRES_IGNORED
}
public fw_Use(ent, idcaller, idactivator, use_type, Float:value)
{
if(g_ButtonsDisable && g_DuelStarted && is_user_alive(idactivator) && cs_get_user_team(idactivator) == CS_TEAM_T)
{
new t_Cant_Drop[600 char]
formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", idactivator, "DR_CANT_USE")
print_col_chat(idactivator, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop)
return HAM_SUPERCEDE
}
return HAM_IGNORED
}
public Duel_Informer()
{
if(CountDown_Timer > 1)
{
set_hudmessage(255, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, -1)
if(CountDown_Timer != 1)
{
for(new id = 1; id <= g_Maxplayers; id++)
{
new t_Time_Delay[600 char]
formatex(t_Time_Delay, charsmax(t_Time_Delay), "%L", id, "DR_TIME_DELAY", CountDown_Timer - 1)
ShowSyncHudMsg(id, g_MsgSync, "%s", t_Time_Delay)
}
}
}
--CountDown_Timer
if(CountDown_Timer >= 1)
set_task(1.0, "Duel_Informer", TASK_CONT)
else
{
client_cmd(0, "spk %s", s_StartDuel[random_num(0, sizeof s_StartDuel - 1)])
if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
fm_set_user_godmode(CT_Player, 0)
if(is_user_alive(T_Player) && is_user_connected(T_Player))
fm_set_user_godmode(T_Player, 0)
remove_task(TASK_CONT)
}
}
public Show_Ring(id)
{
if(g_DuelStarted && is_user_alive(id) && is_user_connected(id) && !g_New_Round)
{
static Float:origin[3]
pev(id, pev_origin, origin)
if(id == CT_Player)
Ring(origin, CT_Aura[0], CT_Aura[1], CT_Aura[2])
else if(id == T_Player)
Ring(origin, T_Aura[0], T_Aura[1], T_Aura[2])
set_task(0.5, "Show_Ring", id)
}
else
remove_task(id)
}
/*========================================================================================================
===============================================[ Stocks ]=================================================
========================================================================================================*/
stock fm_give_item(index, const item[])
{
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0
new ent = fm_create_entity(item)
if (!pev_valid(ent))
return 0
new Float:origin[3]
pev(index, pev_origin, origin)
set_pev(ent, pev_origin, origin)
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
dllfunc(DLLFunc_Spawn, ent)
new save = pev(ent, pev_solid)
dllfunc(DLLFunc_Touch, ent, index)
if (pev(ent, pev_solid) != save)
return ent
engfunc(EngFunc_RemoveEntity, ent)
return -1
}
stock fm_strip_user_weapons(index)
{
new ent = fm_create_entity("player_weaponstrip")
if (!pev_valid(ent))
return 0
dllfunc(DLLFunc_Spawn, ent)
dllfunc(DLLFunc_Use, ent, index)
engfunc(EngFunc_RemoveEntity, ent)
return 1
}
stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
new Float:RenderColor[3]
RenderColor[0] = float(r)
RenderColor[1] = float(g)
RenderColor[2] = float(b)
set_pev(entity, pev_renderfx, fx)
set_pev(entity, pev_rendercolor, RenderColor)
set_pev(entity, pev_rendermode, render)
set_pev(entity, pev_renderamt, float(amount))
return 1
}
stock get_weapon_ent(id,wpnid=0,wpnName[]="")
{
// who knows what wpnName will be
static newName[32]
// need to find the name
if(wpnid) get_weaponname(wpnid,newName,31)
// go with what we were told
else formatex(newName,31,"%s",wpnName)
// prefix it if we need to
if(!equal(newName,"weapon_",7))
format(newName,31,"weapon_%s",newName)
new ent
while((ent = engfunc(EngFunc_FindEntityByString,ent,"classname",newName)) && pev(ent,pev_owner) != id) {}
return ent
}
stock fm_set_user_godmode(index, godmode = 0)
{
set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM)
return 1
}
stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color (Yellow)
replace_all(msg, 190, "!t", "^3") // Team Color
if (id) players[0] = id; else get_players(players, count, "ch")
{
for ( new i = 0; i < count; i++ )
{
if ( is_user_connected(players) )
{
message_begin(MSG_ONE_UNRELIABLE, SayText, _, players)
write_byte(players)
write_string(msg)
message_end()
}
}
}
}
UpDate_HUD(id, csw_weapon)
{
message_begin(MSG_ONE, g_MsgCurWeapon, _, id)
write_byte(1)
write_byte(csw_weapon) //CSW_weapon
write_byte(1) // MaxClip
message_end()
}
Give_Scout(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
fm_give_item(id, "weapon_scout")
new wEnt = get_weapon_ent(id, CSW_SCOUT)
if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
cs_set_weapon_ammo(wEnt, 1)
cs_set_user_bpammo(id, CSW_SCOUT, get_pcvar_num(g_ScoutBPAmmo))
UpDate_HUD(id, wEnt)
}
}
Give_Deagle(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
fm_give_item(id, "weapon_deagle")
new wEnt = get_weapon_ent(id, CSW_DEAGLE)
if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
cs_set_weapon_ammo(wEnt, 1)
cs_set_user_bpammo(id, CSW_DEAGLE, get_pcvar_num(g_DeagleBPAmmo))
UpDate_HUD(id, wEnt)
}
}
Give_AWP(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
fm_give_item(id, "weapon_awp")
new wEnt = get_weapon_ent(id, CSW_AWP)
if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
cs_set_weapon_ammo(wEnt, 1)
cs_set_user_bpammo(id, CSW_AWP, get_pcvar_num(g_AWPBPAmmo))
UpDate_HUD(id, wEnt)
}
}
Weapon_ReChek(id, Weap)
{
if(get_pcvar_num(g_OneShot) && is_user_alive(id) && is_user_connected(id))
{
new wEnt = get_weapon_ent(id, Weap)
if(pev_valid(wEnt))
{
cs_set_weapon_ammo(wEnt, 1)
UpDate_HUD(id, wEnt)
}
}
}
Ring(const Float:origin[3], R, G, B)
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, origin[0]) // x 10
engfunc(EngFunc_WriteCoord, origin[1]) // y
engfunc(EngFunc_WriteCoord, origin[2]) // z
engfunc(EngFunc_WriteCoord, origin[0]-50.0) // x axis
engfunc(EngFunc_WriteCoord, origin[1]) // y axis
engfunc(EngFunc_WriteCoord, origin[2]+100.0) // z axis
write_short(RingSprite) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(5) // life
write_byte(5) // width
write_byte(0) // noise
write_byte(R) // red
write_byte(G) // green
write_byte(B) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
}[/code[
-
- Scripter eXtreamCS
- Posts: 917
- Joined: 02 Nov 2020, 01:57
- Detinator Steam: Da
- Fond eXtream: 0
- Discord: lexzor#0630
- Has thanked: 71 times
- Been thanked: 136 times
Code: Select all
/*
[DeathRun] Duel (CT Choose ONLY)
Plugin by Shidla [SGC]
Idea & Pay (xD):
DarkNill | ICQ: 555-995-004 (zombie-mod.ru)
Credits:
xPaw
DJ_WEST
Shidla [SGC] | 2010 | ICQ: 312-298-513
1.3 [Final Version] | 23/11/2010
http://Shidla.Gm-Project.NET/
*/
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#define OFFSET_RELOAD 54
#define LINUX_DIFF 4
#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))
/*========================================================================================================
===========================================[ Customizations ]=============================================
========================================================================================================*/
new const BOT_NAME[] = "DRM Fake Player" // InGame Bot Name (in DeathrunManager!)
new const g_ChatPrefix[] = "[DeathRun Duel]"
new const CT_Aura[] = { 0, 0, 250 }
new const T_Aura[] = { 250, 0, 0 }
new const s_StartDuel[][] = { "vox/bizwarn.wav" } // Duel starting sounds
/*========================================================================================================
=========================================[ Customizations End ]===========================================
========================================================================================================*/
new SayText, g_Maxplayers, g_Num_CT, g_MsgCurWeapon, g_DuelStarted, g_Weapon[33], g_WeaponClip[33],
g_OneShot, g_DeagleBPAmmo, g_AWPBPAmmo, g_Round_Ended, g_New_Round, RingSprite,
CT_Player, T_Player, g_PlayerHP, g_DuelTimeOut, g_MsgSync, CountDown_Timer, g_ButtonsDisable
new const TASK_CONT = 1352 // CountDown task
public plugin_init()
{
register_plugin("DeathRun Duel (CT Choose ONLY)", "1.3", "Shidla")
register_cvar("Shidla", "DeathRun Duel 1.3 (CT Choose ONLY)", FCVAR_SERVER|FCVAR_SPONLY)
register_clcmd("say /duel", "StartDuel")
register_clcmd("say_team /duel", "StartDuel")
register_clcmd("drop", "Drop_Cmd")
g_DeagleBPAmmo = register_cvar("dr_duel_deagle_bpammo", "50")
g_AWPBPAmmo = register_cvar("dr_duel_awp_bpammo", "100")
g_PlayerHP = register_cvar("dr_duel_player_hp", "100")
g_DuelTimeOut = register_cvar("dr_duel_timeout", "5")
g_OneShot = register_cvar("dr_duel_one_shot", "1") // 1 - one clip bullet (ONLY!); 0 - disable
g_ButtonsDisable = register_cvar("dr_duel_buttons_disable", "1")
register_event("DeathMsg", "Event_Death", "a")
register_event("HLTV", "Event_Round_Start", "a", "1=0", "2=0" )
register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_terwin")
register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_ctwin")
register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_rounddraw")
register_event("CurWeapon","Event_CurWeapon","b")
register_forward(FM_CmdStart, "fw_CmdStart",1)
RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon")
RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon")
RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon")
RegisterHam(Ham_Weapon_Reload, "weapon_scout", "fw_Reload_Post", 1)
RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "fw_Reload_Post", 1)
RegisterHam(Ham_Weapon_Reload, "weapon_awp", "fw_Reload_Post", 1)
RegisterHam(Ham_Use, "func_button", "fw_Use")
SayText = get_user_msgid("SayText")
g_MsgCurWeapon = get_user_msgid("CurWeapon")
g_MsgSync = CreateHudSyncObj()
g_Maxplayers = get_maxplayers()
register_dictionary("dr_duel.txt")
}
public plugin_precache()
{
RingSprite = precache_model("sprites/zbeam5.spr")
static i
for(i = 0; i < sizeof s_StartDuel; i++)
{
precache_sound(s_StartDuel[i])
}
}
public client_putinserver(id)
{
g_Weapon[id] = 0
g_WeaponClip[id] = 0
}
public StartDuel(id)
{
if(!is_user_alive(id))
{
new t_Cant_Dead[600 char]
formatex(t_Cant_Dead, charsmax(t_Cant_Dead), "%L", id, "DR_CANT_DEAD")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Dead)
return PLUGIN_CONTINUE
}
if(g_Round_Ended)
{
new t_Cant_Round_End[600 char]
formatex(t_Cant_Round_End, charsmax(t_Cant_Round_End), "%L", id, "DR_CANT_ROUND_END")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Round_End)
return PLUGIN_CONTINUE
}
if(cs_get_user_team(id) == CS_TEAM_T)
{
new t_Cant_Ter[600 char]
formatex(t_Cant_Ter, charsmax(t_Cant_Ter), "%L", id, "DR_CANT_TER")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Ter)
return PLUGIN_CONTINUE
}
if(g_DuelStarted)
{
new t_Cant_Started[600 char]
formatex(t_Cant_Started, charsmax(t_Cant_Started), "%L", id, "DR_CANT_STARTED")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Started)
return PLUGIN_CONTINUE
}
for(new i = 1; i <= g_Maxplayers; i++)
{
new Name[32]
get_user_name(i, Name, 31)
if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)
{
g_Num_CT++
if(g_Num_CT == 1)
CT_Player = i
else
CT_Player = 0
}
if(is_user_alive(i) && (cs_get_user_team(i) == CS_TEAM_T) && !equal(Name, BOT_NAME))
T_Player = i
}
if(g_Num_CT == 1)
{
new TextTitle[ 200 char ]
formatex(TextTitle, charsmax(TextTitle), "\rAlege o metoda pentru duel:")
new WeapDeagle[ 200 char ]
formatex(WeapDeagle, charsmax(WeapDeagle), "\yDeagle")
new WeapAWP[ 200 char ]
formatex(WeapAWP, charsmax(WeapAWP), "\yAwp")
new WeapKNife[ 200 char ]
formatex(WeapKNife, charsmax(WeapKNife), "\yDoar cutite")
new i_Menu = menu_create(TextTitle, "WeaponMenu")
menu_additem(i_Menu, WeapDeagle, "2", 0)
menu_additem(i_Menu, WeapAWP, "3", 0)
menu_additem(i_Menu, WeapKNife, "4", 0)
g_DuelStarted = true
g_New_Round = false
fm_strip_user_weapons(CT_Player)
fm_strip_user_weapons(T_Player)
set_pev(CT_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set CT HP
set_pev(T_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set T HP
if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
{
fm_set_user_godmode(CT_Player, 1)
set_task(0.5, "Show_Ring", CT_Player)
}
if(is_user_alive(T_Player) && is_user_connected(T_Player))
{
fm_set_user_godmode(T_Player, 1)
set_task(0.5, "Show_Ring", T_Player)
}
menu_display(CT_Player, i_Menu, 0)
}
else
{
new t_Cant_Too_Many[600 char]
formatex(t_Cant_Too_Many, charsmax(t_Cant_Too_Many), "%L", id, "DR_CANT_TOO_MANY", g_Num_CT)
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Too_Many)
}
g_Num_CT = 0
return PLUGIN_CONTINUE
}
public WeaponMenu(id, menu, item)
{
new s_Data[4], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)
switch(i_Key)
{
case 1:
{
Give_Deagle(CT_Player)
Give_Deagle(T_Player)
}
case 2:
{
Give_AWP(CT_Player)
Give_AWP(T_Player)
}
case 3:
{
fm_give_item(CT_Player, "weapon_knife")
fm_give_item(T_Player, "weapon_knife")
}
}
menu_destroy(menu)
if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
fm_set_rendering(CT_Player, kRenderFxGlowShell, CT_Aura[0], CT_Aura[1], CT_Aura[2], kRenderNormal, 20)
if(is_user_alive(T_Player) && is_user_connected(T_Player))
fm_set_rendering(T_Player, kRenderFxGlowShell, T_Aura[0], T_Aura[1], T_Aura[2], kRenderNormal, 20)
CountDown_Timer = get_pcvar_num(g_DuelTimeOut)
set_task(float(get_pcvar_num(g_DuelTimeOut)), "Duel_Informer", TASK_CONT)
return PLUGIN_HANDLED
}
public Event_Death()
{
new CT_Count, CT_Last_Player
for(new i = 1; i <= g_Maxplayers; i++)
{
new Name[32]
get_user_name(i, Name, 31)
if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)
{
CT_Count++
if(CT_Count == 1)
CT_Last_Player = i
else
CT_Last_Player = 0
}
}
if(CT_Count == 1 && !g_Round_Ended && is_user_alive(CT_Last_Player) && is_user_connected(CT_Last_Player) && is_user_alive(T_Player))
{
new t_Can_Start[600 char]
formatex(t_Can_Start, charsmax(t_Can_Start), "%L", CT_Last_Player, "DR_CAN_START")
print_col_chat(CT_Last_Player, "^4%s^1 %s",g_ChatPrefix, t_Can_Start)
}
CT_Count = 0
}
public Event_Round_Start()
{
g_DuelStarted = false
g_Round_Ended = false
g_New_Round = true
g_Num_CT = 0
CT_Player = 0
T_Player = 0
remove_task(TASK_CONT)
for(new id = 1; id <= g_Maxplayers; id++)
fm_set_rendering(id)
}
public Event_Round_End()
{
g_Round_Ended = true
CT_Player = 0
T_Player = 0
}
public Event_CurWeapon(id)
{
g_Weapon[id] = read_data(2)
g_WeaponClip[id] = read_data(3)
if(g_DuelStarted)
{
if(g_WeaponClip[id] > 1)
{
if(g_Weapon[id] == CSW_DEAGLE)
Weapon_ReChek(id, CSW_DEAGLE)
else if(g_Weapon[id] == CSW_AWP)
Weapon_ReChek(id, CSW_AWP)
}
}
}
public fw_CmdStart(id, handle, seed)
{
if(!is_user_alive(id) || !g_DuelStarted)
return FMRES_IGNORED
if((g_Weapon[id] == CSW_DEAGLE || g_Weapon[id] == CSW_AWP) && get_pcvar_num(g_OneShot))
{
//if(pev(id, pev_button) & IN_RELOAD)
if(get_uc(handle, UC_Buttons) & IN_RELOAD)
{
set_uc(handle, UC_Buttons, get_uc(handle, UC_Buttons) & ~IN_RELOAD)
return FMRES_HANDLED
}
}
return FMRES_IGNORED
}
public Drop_Cmd(id)
{
if(g_DuelStarted)
{
new t_Cant_Drop[600 char]
formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", id, "DR_CANT_DROP")
print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public fw_TouchWeapon(weapon, id)
{
if(!is_user_connected(id))
return HAM_IGNORED
if(g_DuelStarted)
return HAM_SUPERCEDE
return HAM_IGNORED
}
public fw_Reload_Post(Weap)
{
if(!g_DuelStarted && !get_pcvar_num(g_OneShot))
return FMRES_IGNORED
if(is_user_alive(CT_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF))
{
if(g_Weapon[CT_Player] == CSW_DEAGLE)
cs_set_user_bpammo(CT_Player, CSW_DEAGLE, cs_get_user_bpammo(CT_Player, CSW_DEAGLE) + 6)
else if(g_Weapon[CT_Player] == CSW_AWP)
cs_set_user_bpammo(CT_Player, CSW_AWP, cs_get_user_bpammo(CT_Player, CSW_AWP) + 9)
}
if(is_user_alive(T_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF))
{
if(g_Weapon[T_Player] == CSW_DEAGLE)
cs_set_user_bpammo(T_Player, CSW_DEAGLE, cs_get_user_bpammo(T_Player, CSW_DEAGLE) + 6)
else if(g_Weapon[T_Player] == CSW_AWP)
cs_set_user_bpammo(T_Player, CSW_AWP, cs_get_user_bpammo(T_Player, CSW_AWP) + 9)
}
return FMRES_IGNORED
}
public fw_Use(ent, idcaller, idactivator, use_type, Float:value)
{
if(g_ButtonsDisable && g_DuelStarted && is_user_alive(idactivator) && cs_get_user_team(idactivator) == CS_TEAM_T)
{
new t_Cant_Drop[600 char]
formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", idactivator, "DR_CANT_USE")
print_col_chat(idactivator, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop)
return HAM_SUPERCEDE
}
return HAM_IGNORED
}
public Duel_Informer()
{
if(CountDown_Timer > 1)
{
set_hudmessage(255, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, -1)
if(CountDown_Timer != 1)
{
for(new id = 1; id <= g_Maxplayers; id++)
{
new t_Time_Delay[600 char]
formatex(t_Time_Delay, charsmax(t_Time_Delay), "%L", id, "DR_TIME_DELAY", CountDown_Timer - 1)
ShowSyncHudMsg(id, g_MsgSync, "%s", t_Time_Delay)
}
}
}
--CountDown_Timer
if(CountDown_Timer >= 1)
set_task(1.0, "Duel_Informer", TASK_CONT)
else
{
client_cmd(0, "spk %s", s_StartDuel[random_num(0, sizeof s_StartDuel - 1)])
if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
fm_set_user_godmode(CT_Player, 0)
if(is_user_alive(T_Player) && is_user_connected(T_Player))
fm_set_user_godmode(T_Player, 0)
remove_task(TASK_CONT)
}
}
public Show_Ring(id)
{
if(g_DuelStarted && is_user_alive(id) && is_user_connected(id) && !g_New_Round)
{
static Float:origin[3]
pev(id, pev_origin, origin)
if(id == CT_Player)
Ring(origin, CT_Aura[0], CT_Aura[1], CT_Aura[2])
else if(id == T_Player)
Ring(origin, T_Aura[0], T_Aura[1], T_Aura[2])
set_task(0.5, "Show_Ring", id)
}
else
remove_task(id)
}
/*========================================================================================================
===============================================[ Stocks ]=================================================
========================================================================================================*/
stock fm_give_item(index, const item[])
{
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0
new ent = fm_create_entity(item)
if (!pev_valid(ent))
return 0
new Float:origin[3]
pev(index, pev_origin, origin)
set_pev(ent, pev_origin, origin)
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
dllfunc(DLLFunc_Spawn, ent)
new save = pev(ent, pev_solid)
dllfunc(DLLFunc_Touch, ent, index)
if (pev(ent, pev_solid) != save)
return ent
engfunc(EngFunc_RemoveEntity, ent)
return -1
}
stock fm_strip_user_weapons(index)
{
new ent = fm_create_entity("player_weaponstrip")
if (!pev_valid(ent))
return 0
dllfunc(DLLFunc_Spawn, ent)
dllfunc(DLLFunc_Use, ent, index)
engfunc(EngFunc_RemoveEntity, ent)
return 1
}
stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
new Float:RenderColor[3]
RenderColor[0] = float(r)
RenderColor[1] = float(g)
RenderColor[2] = float(b)
set_pev(entity, pev_renderfx, fx)
set_pev(entity, pev_rendercolor, RenderColor)
set_pev(entity, pev_rendermode, render)
set_pev(entity, pev_renderamt, float(amount))
return 1
}
stock get_weapon_ent(id,wpnid=0,wpnName[]="")
{
// who knows what wpnName will be
static newName[32]
// need to find the name
if(wpnid) get_weaponname(wpnid,newName,31)
// go with what we were told
else formatex(newName,31,"%s",wpnName)
// prefix it if we need to
if(!equal(newName,"weapon_",7))
format(newName,31,"weapon_%s",newName)
new ent
while((ent = engfunc(EngFunc_FindEntityByString,ent,"classname",newName)) && pev(ent,pev_owner) != id) {}
return ent
}
stock fm_set_user_godmode(index, godmode = 0)
{
set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM)
return 1
}
stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color (Yellow)
replace_all(msg, 190, "!t", "^3") // Team Color
if (id) players[0] = id; else get_players(players, count, "ch")
{
for ( new i = 0; i < count; i++ )
{
if ( is_user_connected(players[i]) )
{
message_begin(MSG_ONE_UNRELIABLE, SayText, _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}
UpDate_HUD(id, csw_weapon)
{
message_begin(MSG_ONE, g_MsgCurWeapon, _, id)
write_byte(1)
write_byte(csw_weapon) //CSW_weapon
write_byte(1) // MaxClip
message_end()
}
Give_Deagle(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
fm_give_item(id, "weapon_deagle")
new wEnt = get_weapon_ent(id, CSW_DEAGLE)
if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
cs_set_weapon_ammo(wEnt, 1)
cs_set_user_bpammo(id, CSW_DEAGLE, get_pcvar_num(g_DeagleBPAmmo))
UpDate_HUD(id, wEnt)
}
}
Give_AWP(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
fm_give_item(id, "weapon_awp")
new wEnt = get_weapon_ent(id, CSW_AWP)
if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
cs_set_weapon_ammo(wEnt, 1)
cs_set_user_bpammo(id, CSW_AWP, get_pcvar_num(g_AWPBPAmmo))
UpDate_HUD(id, wEnt)
}
}
Weapon_ReChek(id, Weap)
{
if(get_pcvar_num(g_OneShot) && is_user_alive(id) && is_user_connected(id))
{
new wEnt = get_weapon_ent(id, Weap)
if(pev_valid(wEnt))
{
cs_set_weapon_ammo(wEnt, 1)
UpDate_HUD(id, wEnt)
}
}
}
Ring(const Float:origin[3], R, G, B)
{
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, origin[0]) // x 10
engfunc(EngFunc_WriteCoord, origin[1]) // y
engfunc(EngFunc_WriteCoord, origin[2]) // z
engfunc(EngFunc_WriteCoord, origin[0]-50.0) // x axis
engfunc(EngFunc_WriteCoord, origin[1]) // y axis
engfunc(EngFunc_WriteCoord, origin[2]+100.0) // z axis
write_short(RingSprite) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(5) // life
write_byte(5) // width
write_byte(0) // noise
write_byte(R) // red
write_byte(G) // green
write_byte(B) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
}