Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2017
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.74 KB | None | 0 0
  1. /*
  2. [DeathRun] Duel (CT Choose ONLY)
  3.  
  4. Plugin by Shidla [SGC]
  5.  
  6. Idea & Pay (xD):
  7. DarkNill | ICQ: 555-995-004 (zombie-mod.ru)
  8.  
  9. Credits:
  10. xPaw
  11. DJ_WEST
  12.  
  13.  
  14. Shidla [SGC] | 2010 | ICQ: 312-298-513
  15.  
  16. 1.3 [Final Version] | 23/11/2010
  17.  
  18. http://Shidla.Gm-Project.NET/
  19. */
  20.  
  21. #include <amxmodx>
  22. #include <fakemeta>
  23. #include <hamsandwich>
  24. #include <cstrike>
  25.  
  26. #define OFFSET_RELOAD 54
  27. #define LINUX_DIFF 4
  28.  
  29. #define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))
  30.  
  31.  
  32. /*========================================================================================================
  33. ===========================================[ Customizations ]=============================================
  34. ========================================================================================================*/
  35.  
  36. new const BOT_NAME[] = "DRM Fake Player" // InGame Bot Name (in DeathrunManager!)
  37.  
  38. new const g_ChatPrefix[] = "[DeathRun Duel]"
  39.  
  40. new const CT_Aura[] = { 0, 0, 250 }
  41. new const T_Aura[] = { 250, 0, 0 }
  42.  
  43. new const s_StartDuel[][] = { "vox/bizwarn.wav" } // Duel starting sounds
  44.  
  45. /*========================================================================================================
  46. =========================================[ Customizations End ]===========================================
  47. ========================================================================================================*/
  48.  
  49.  
  50. new SayText, g_Maxplayers, g_Num_CT, g_MsgCurWeapon, g_DuelStarted, g_Weapon[33], g_WeaponClip[33],
  51. g_OneShot, g_ScoutBPAmmo, g_DeagleBPAmmo, g_AWPBPAmmo, g_Round_Ended, g_New_Round, RingSprite,
  52. CT_Player, T_Player, g_PlayerHP, g_DuelTimeOut, g_MsgSync, CountDown_Timer, g_ButtonsDisable
  53.  
  54. new const TASK_CONT = 1352 // CountDown task
  55.  
  56. public plugin_init()
  57. {
  58. register_plugin("DeathRun Duel (CT Choose ONLY)", "1.3", "Shidla")
  59. register_cvar("Shidla", "DeathRun Duel 1.3 (CT Choose ONLY)", FCVAR_SERVER|FCVAR_SPONLY)
  60.  
  61. register_clcmd("say /duel", "StartDuel")
  62. register_clcmd("say_team /duel", "StartDuel")
  63. register_clcmd("drop", "Drop_Cmd")
  64.  
  65. g_ScoutBPAmmo = register_cvar("dr_duel_scout_bpammo", "200")
  66. g_DeagleBPAmmo = register_cvar("dr_duel_deagle_bpammo", "50")
  67. g_AWPBPAmmo = register_cvar("dr_duel_awp_bpammo", "100")
  68. g_PlayerHP = register_cvar("dr_duel_player_hp", "100")
  69. g_DuelTimeOut = register_cvar("dr_duel_timeout", "5")
  70. g_OneShot = register_cvar("dr_duel_one_shot", "1") // 1 - one clip bullet (ONLY!); 0 - disable
  71. g_ButtonsDisable = register_cvar("dr_duel_buttons_disable", "1")
  72.  
  73. register_event("DeathMsg", "Event_Death", "a")
  74. register_event("HLTV", "Event_Round_Start", "a", "1=0", "2=0" )
  75. register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_terwin")
  76. register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_ctwin")
  77. register_event("SendAudio", "Event_Round_End", "a", "2&%!MRAD_rounddraw")
  78. register_event("CurWeapon","Event_CurWeapon","b")
  79.  
  80. register_forward(FM_CmdStart, "fw_CmdStart",1)
  81.  
  82. RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon")
  83. RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon")
  84. RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon")
  85. RegisterHam(Ham_Weapon_Reload, "weapon_scout", "fw_Reload_Post", 1)
  86. RegisterHam(Ham_Weapon_Reload, "weapon_deagle", "fw_Reload_Post", 1)
  87. RegisterHam(Ham_Weapon_Reload, "weapon_awp", "fw_Reload_Post", 1)
  88. RegisterHam(Ham_Use, "func_button", "fw_Use")
  89.  
  90. SayText = get_user_msgid("SayText")
  91. g_MsgCurWeapon = get_user_msgid("CurWeapon")
  92. g_MsgSync = CreateHudSyncObj()
  93. g_Maxplayers = get_maxplayers()
  94.  
  95. register_dictionary("dr_duel.txt")
  96. }
  97.  
  98. public plugin_precache()
  99. {
  100. RingSprite = precache_model("sprites/zbeam5.spr")
  101.  
  102. static i
  103. for(i = 0; i < sizeof s_StartDuel; i++)
  104. precache_sound(s_StartDuel[i])
  105. }
  106.  
  107.  
  108. public client_putinserver(id)
  109. {
  110. g_Weapon[id] = 0
  111. g_WeaponClip[id] = 0
  112. }
  113.  
  114. public StartDuel(id)
  115. {
  116. if(!is_user_alive(id))
  117. {
  118. new t_Cant_Dead[600 char]
  119. formatex(t_Cant_Dead, charsmax(t_Cant_Dead), "%L", id, "DR_CANT_DEAD")
  120. print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Dead)
  121. return PLUGIN_CONTINUE
  122. }
  123.  
  124. if(g_Round_Ended)
  125. {
  126. new t_Cant_Round_End[600 char]
  127. formatex(t_Cant_Round_End, charsmax(t_Cant_Round_End), "%L", id, "DR_CANT_ROUND_END")
  128. print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Round_End)
  129. return PLUGIN_CONTINUE
  130. }
  131.  
  132. if(cs_get_user_team(id) == CS_TEAM_T)
  133. {
  134. new t_Cant_Ter[600 char]
  135. formatex(t_Cant_Ter, charsmax(t_Cant_Ter), "%L", id, "DR_CANT_TER")
  136. print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Ter)
  137. return PLUGIN_CONTINUE
  138. }
  139.  
  140. if(g_DuelStarted)
  141. {
  142. new t_Cant_Started[600 char]
  143. formatex(t_Cant_Started, charsmax(t_Cant_Started), "%L", id, "DR_CANT_STARTED")
  144. print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Started)
  145. return PLUGIN_CONTINUE
  146. }
  147.  
  148. for(new i = 1; i <= g_Maxplayers; i++)
  149. {
  150. new Name[32]
  151. get_user_name(i, Name, 31)
  152.  
  153. if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)
  154. {
  155. g_Num_CT++
  156. if(g_Num_CT == 1)
  157. CT_Player = i
  158. else
  159. CT_Player = 0
  160. }
  161.  
  162. if(is_user_alive(i) && (cs_get_user_team(i) == CS_TEAM_T) && !equal(Name, BOT_NAME))
  163. T_Player = i
  164. }
  165.  
  166. if(g_Num_CT == 1)
  167. {
  168. new TextTitle[ 200 char ]
  169. formatex(TextTitle, charsmax(TextTitle), "\rВыберите оружие для дуэли:")
  170. new WeapScout[ 200 char ]
  171. formatex(WeapScout, charsmax(WeapScout), "\yМуха [Scout]")
  172. new WeapDeagle[ 200 char ]
  173. formatex(WeapDeagle, charsmax(WeapDeagle), "\yДигл [Deagle]")
  174. new WeapAWP[ 200 char ]
  175. formatex(WeapAWP, charsmax(WeapAWP), "\yСлон [AWP]")
  176. new WeapKNife[ 200 char ]
  177. formatex(WeapKNife, charsmax(WeapKNife), "\yНож [KNife]")
  178.  
  179. new i_Menu = menu_create(TextTitle, "WeaponMenu")
  180. menu_additem(i_Menu, WeapScout, "1", 0)
  181. menu_additem(i_Menu, WeapDeagle, "2", 0)
  182. menu_additem(i_Menu, WeapAWP, "3", 0)
  183. menu_additem(i_Menu, WeapKNife, "4", 0)
  184.  
  185. g_DuelStarted = true
  186. g_New_Round = false
  187.  
  188. fm_strip_user_weapons(CT_Player)
  189. fm_strip_user_weapons(T_Player)
  190.  
  191. set_pev(CT_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set CT HP
  192. set_pev(T_Player, pev_health, float(get_pcvar_num(g_PlayerHP))) // Set T HP
  193.  
  194. if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
  195. {
  196. fm_set_user_godmode(CT_Player, 1)
  197. set_task(0.5, "Show_Ring", CT_Player)
  198. }
  199.  
  200. if(is_user_alive(T_Player) && is_user_connected(T_Player))
  201. {
  202. fm_set_user_godmode(T_Player, 1)
  203. set_task(0.5, "Show_Ring", T_Player)
  204. }
  205.  
  206. menu_display(CT_Player, i_Menu, 0)
  207. }
  208. else
  209. {
  210. new t_Cant_Too_Many[600 char]
  211. formatex(t_Cant_Too_Many, charsmax(t_Cant_Too_Many), "%L", id, "DR_CANT_TOO_MANY", g_Num_CT)
  212. print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Too_Many)
  213. }
  214.  
  215. g_Num_CT = 0
  216.  
  217. return PLUGIN_CONTINUE
  218. }
  219.  
  220. public WeaponMenu(id, menu, item)
  221. {
  222. new s_Data[4], s_Name[64], i_Access, i_Callback
  223.  
  224. menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
  225. new i_Key = str_to_num(s_Data)
  226.  
  227. switch(i_Key)
  228. {
  229. case 1:
  230. {
  231. Give_Scout(CT_Player)
  232. Give_Scout(T_Player)
  233. }
  234.  
  235. case 2:
  236. {
  237. Give_Deagle(CT_Player)
  238. Give_Deagle(T_Player)
  239. }
  240.  
  241. case 3:
  242. {
  243. Give_AWP(CT_Player)
  244. Give_AWP(T_Player)
  245. }
  246.  
  247. case 4:
  248. {
  249. fm_give_item(CT_Player, "weapon_knife")
  250. fm_give_item(T_Player, "weapon_knife")
  251. }
  252. }
  253.  
  254. menu_destroy(menu)
  255.  
  256. if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
  257. fm_set_rendering(CT_Player, kRenderFxGlowShell, CT_Aura[0], CT_Aura[1], CT_Aura[2], kRenderNormal, 20)
  258.  
  259. if(is_user_alive(T_Player) && is_user_connected(T_Player))
  260. fm_set_rendering(T_Player, kRenderFxGlowShell, T_Aura[0], T_Aura[1], T_Aura[2], kRenderNormal, 20)
  261.  
  262. CountDown_Timer = get_pcvar_num(g_DuelTimeOut)
  263. set_task(float(get_pcvar_num(g_DuelTimeOut)), "Duel_Informer", TASK_CONT)
  264.  
  265. return PLUGIN_HANDLED
  266. }
  267.  
  268. public Event_Death()
  269. {
  270. new CT_Count, CT_Last_Player
  271.  
  272. for(new i = 1; i <= g_Maxplayers; i++)
  273. {
  274. new Name[32]
  275. get_user_name(i, Name, 31)
  276.  
  277. if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT)
  278. {
  279. CT_Count++
  280. if(CT_Count == 1)
  281. CT_Last_Player = i
  282. else
  283. CT_Last_Player = 0
  284. }
  285. }
  286.  
  287. if(CT_Count == 1 && !g_Round_Ended && is_user_alive(CT_Last_Player) && is_user_connected(CT_Last_Player) && is_user_alive(T_Player))
  288. {
  289. new t_Can_Start[600 char]
  290. formatex(t_Can_Start, charsmax(t_Can_Start), "%L", CT_Last_Player, "DR_CAN_START")
  291. print_col_chat(CT_Last_Player, "^4%s^1 %s",g_ChatPrefix, t_Can_Start)
  292. }
  293.  
  294. CT_Count = 0
  295. }
  296.  
  297. public Event_Round_Start()
  298. {
  299. g_DuelStarted = false
  300. g_Round_Ended = false
  301. g_New_Round = true
  302.  
  303. g_Num_CT = 0
  304. CT_Player = 0
  305. T_Player = 0
  306.  
  307. remove_task(TASK_CONT)
  308.  
  309. for(new id = 1; id <= g_Maxplayers; id++)
  310. fm_set_rendering(id)
  311. }
  312.  
  313. public Event_Round_End()
  314. {
  315. g_Round_Ended = true
  316.  
  317. CT_Player = 0
  318. T_Player = 0
  319. }
  320.  
  321. public Event_CurWeapon(id)
  322. {
  323. g_Weapon[id] = read_data(2)
  324. g_WeaponClip[id] = read_data(3)
  325.  
  326. if(g_DuelStarted)
  327. {
  328. if(g_WeaponClip[id] > 1)
  329. {
  330. if(g_Weapon[id] == CSW_SCOUT)
  331. Weapon_ReChek(id, CSW_SCOUT)
  332.  
  333. else if(g_Weapon[id] == CSW_DEAGLE)
  334. Weapon_ReChek(id, CSW_DEAGLE)
  335.  
  336. else if(g_Weapon[id] == CSW_AWP)
  337. Weapon_ReChek(id, CSW_AWP)
  338. }
  339. }
  340. }
  341.  
  342. public fw_CmdStart(id, handle, seed)
  343. {
  344. if(!is_user_alive(id) || !g_DuelStarted)
  345. return FMRES_IGNORED
  346.  
  347. if((g_Weapon[id] == CSW_SCOUT || g_Weapon[id] == CSW_DEAGLE || g_Weapon[id] == CSW_AWP) && get_pcvar_num(g_OneShot))
  348. {
  349. //if(pev(id, pev_button) & IN_RELOAD)
  350. if(get_uc(handle, UC_Buttons) & IN_RELOAD)
  351. {
  352. set_uc(handle, UC_Buttons, get_uc(handle, UC_Buttons) & ~IN_RELOAD)
  353. return FMRES_HANDLED
  354. }
  355. }
  356.  
  357. return FMRES_IGNORED
  358. }
  359.  
  360. public Drop_Cmd(id)
  361. {
  362. if(g_DuelStarted)
  363. {
  364. new t_Cant_Drop[600 char]
  365. formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", id, "DR_CANT_DROP")
  366. print_col_chat(id, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop)
  367. return PLUGIN_HANDLED
  368. }
  369.  
  370. return PLUGIN_CONTINUE
  371. }
  372.  
  373. public fw_TouchWeapon(weapon, id)
  374. {
  375. if(!is_user_connected(id))
  376. return HAM_IGNORED
  377.  
  378. if(g_DuelStarted)
  379. return HAM_SUPERCEDE
  380.  
  381. return HAM_IGNORED
  382. }
  383.  
  384. public fw_Reload_Post(Weap)
  385. {
  386. if(!g_DuelStarted && !get_pcvar_num(g_OneShot))
  387. return FMRES_IGNORED
  388.  
  389. if(is_user_alive(CT_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF))
  390. {
  391. if(g_Weapon[CT_Player] == CSW_SCOUT)
  392. cs_set_user_bpammo(CT_Player, CSW_SCOUT, cs_get_user_bpammo(CT_Player, CSW_SCOUT) + 9)
  393. else if(g_Weapon[CT_Player] == CSW_DEAGLE)
  394. cs_set_user_bpammo(CT_Player, CSW_DEAGLE, cs_get_user_bpammo(CT_Player, CSW_DEAGLE) + 6)
  395. else if(g_Weapon[CT_Player] == CSW_AWP)
  396. cs_set_user_bpammo(CT_Player, CSW_AWP, cs_get_user_bpammo(CT_Player, CSW_AWP) + 9)
  397. }
  398.  
  399. if(is_user_alive(T_Player) && get_pdata_int(Weap, OFFSET_RELOAD, LINUX_DIFF))
  400. {
  401. if(g_Weapon[T_Player] == CSW_SCOUT)
  402. cs_set_user_bpammo(T_Player, CSW_SCOUT, cs_get_user_bpammo(T_Player, CSW_SCOUT) + 9)
  403. else if(g_Weapon[T_Player] == CSW_DEAGLE)
  404. cs_set_user_bpammo(T_Player, CSW_DEAGLE, cs_get_user_bpammo(T_Player, CSW_DEAGLE) + 6)
  405. else if(g_Weapon[T_Player] == CSW_AWP)
  406. cs_set_user_bpammo(T_Player, CSW_AWP, cs_get_user_bpammo(T_Player, CSW_AWP) + 9)
  407. }
  408.  
  409. return FMRES_IGNORED
  410. }
  411.  
  412. public fw_Use(ent, idcaller, idactivator, use_type, Float:value)
  413. {
  414. if(g_ButtonsDisable && g_DuelStarted && is_user_alive(idactivator) && cs_get_user_team(idactivator) == CS_TEAM_T)
  415. {
  416. new t_Cant_Drop[600 char]
  417. formatex(t_Cant_Drop, charsmax(t_Cant_Drop), "%L", idactivator, "DR_CANT_USE")
  418. print_col_chat(idactivator, "^4%s^1 %s",g_ChatPrefix, t_Cant_Drop)
  419. return HAM_SUPERCEDE
  420. }
  421.  
  422. return HAM_IGNORED
  423. }
  424.  
  425. public Duel_Informer()
  426. {
  427. if(CountDown_Timer > 1)
  428. {
  429. set_hudmessage(255, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, -1)
  430.  
  431. if(CountDown_Timer != 1)
  432. {
  433. for(new id = 1; id <= g_Maxplayers; id++)
  434. {
  435. new t_Time_Delay[600 char]
  436. formatex(t_Time_Delay, charsmax(t_Time_Delay), "%L", id, "DR_TIME_DELAY", CountDown_Timer - 1)
  437. ShowSyncHudMsg(id, g_MsgSync, "%s", t_Time_Delay)
  438. }
  439. }
  440. }
  441. --CountDown_Timer
  442.  
  443. if(CountDown_Timer >= 1)
  444. set_task(1.0, "Duel_Informer", TASK_CONT)
  445. else
  446. {
  447. client_cmd(0, "spk %s", s_StartDuel[random_num(0, sizeof s_StartDuel - 1)])
  448.  
  449. if(is_user_alive(CT_Player) && is_user_connected(CT_Player))
  450. fm_set_user_godmode(CT_Player, 0)
  451.  
  452. if(is_user_alive(T_Player) && is_user_connected(T_Player))
  453. fm_set_user_godmode(T_Player, 0)
  454.  
  455. remove_task(TASK_CONT)
  456. }
  457. }
  458.  
  459. public Show_Ring(id)
  460. {
  461. if(g_DuelStarted && is_user_alive(id) && is_user_connected(id) && !g_New_Round)
  462. {
  463. static Float:origin[3]
  464. pev(id, pev_origin, origin)
  465.  
  466. if(id == CT_Player)
  467. Ring(origin, CT_Aura[0], CT_Aura[1], CT_Aura[2])
  468. else if(id == T_Player)
  469. Ring(origin, T_Aura[0], T_Aura[1], T_Aura[2])
  470.  
  471. set_task(0.5, "Show_Ring", id)
  472. }
  473. else
  474. remove_task(id)
  475. }
  476.  
  477.  
  478. /*========================================================================================================
  479. ===============================================[ Stocks ]=================================================
  480. ========================================================================================================*/
  481. stock fm_give_item(index, const item[])
  482. {
  483. if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
  484. return 0
  485.  
  486. new ent = fm_create_entity(item)
  487. if (!pev_valid(ent))
  488. return 0
  489.  
  490. new Float:origin[3]
  491. pev(index, pev_origin, origin)
  492. set_pev(ent, pev_origin, origin)
  493. set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
  494. dllfunc(DLLFunc_Spawn, ent)
  495.  
  496. new save = pev(ent, pev_solid)
  497. dllfunc(DLLFunc_Touch, ent, index)
  498. if (pev(ent, pev_solid) != save)
  499. return ent
  500.  
  501. engfunc(EngFunc_RemoveEntity, ent)
  502.  
  503. return -1
  504. }
  505.  
  506. stock fm_strip_user_weapons(index)
  507. {
  508. new ent = fm_create_entity("player_weaponstrip")
  509. if (!pev_valid(ent))
  510. return 0
  511.  
  512. dllfunc(DLLFunc_Spawn, ent)
  513. dllfunc(DLLFunc_Use, ent, index)
  514. engfunc(EngFunc_RemoveEntity, ent)
  515.  
  516. return 1
  517. }
  518.  
  519. stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
  520. {
  521. new Float:RenderColor[3]
  522. RenderColor[0] = float(r)
  523. RenderColor[1] = float(g)
  524. RenderColor[2] = float(b)
  525.  
  526. set_pev(entity, pev_renderfx, fx)
  527. set_pev(entity, pev_rendercolor, RenderColor)
  528. set_pev(entity, pev_rendermode, render)
  529. set_pev(entity, pev_renderamt, float(amount))
  530.  
  531. return 1
  532. }
  533.  
  534. stock get_weapon_ent(id,wpnid=0,wpnName[]="")
  535. {
  536. // who knows what wpnName will be
  537. static newName[32]
  538.  
  539. // need to find the name
  540. if(wpnid) get_weaponname(wpnid,newName,31)
  541.  
  542. // go with what we were told
  543. else formatex(newName,31,"%s",wpnName)
  544.  
  545. // prefix it if we need to
  546. if(!equal(newName,"weapon_",7))
  547. format(newName,31,"weapon_%s",newName)
  548.  
  549. new ent
  550. while((ent = engfunc(EngFunc_FindEntityByString,ent,"classname",newName)) && pev(ent,pev_owner) != id) {}
  551.  
  552. return ent
  553. }
  554.  
  555. stock fm_set_user_godmode(index, godmode = 0)
  556. {
  557. set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM)
  558.  
  559. return 1
  560. }
  561.  
  562. stock print_col_chat(const id, const input[], any:...)
  563. {
  564. new count = 1, players[32]
  565. static msg[191]
  566. vformat(msg, 190, input, 3)
  567.  
  568. replace_all(msg, 190, "!g", "^4") // Green Color
  569. replace_all(msg, 190, "!y", "^1") // Default Color (Yellow)
  570. replace_all(msg, 190, "!t", "^3") // Team Color
  571.  
  572. if (id) players[0] = id; else get_players(players, count, "ch")
  573. {
  574. for ( new i = 0; i < count; i++ )
  575. {
  576. if ( is_user_connected(players[i]) )
  577. {
  578. message_begin(MSG_ONE_UNRELIABLE, SayText, _, players[i])
  579. write_byte(players[i])
  580. write_string(msg)
  581. message_end()
  582. }
  583. }
  584. }
  585. }
  586.  
  587. UpDate_HUD(id, csw_weapon)
  588. {
  589. message_begin(MSG_ONE, g_MsgCurWeapon, _, id)
  590. write_byte(1)
  591. write_byte(csw_weapon) //CSW_weapon
  592. write_byte(1) // MaxClip
  593. message_end()
  594. }
  595.  
  596. Give_Scout(id)
  597. {
  598. if(is_user_alive(id) && is_user_connected(id))
  599. {
  600. fm_give_item(id, "weapon_scout")
  601.  
  602. new wEnt = get_weapon_ent(id, CSW_SCOUT)
  603.  
  604. if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
  605. cs_set_weapon_ammo(wEnt, 1)
  606.  
  607. cs_set_user_bpammo(id, CSW_SCOUT, get_pcvar_num(g_ScoutBPAmmo))
  608. UpDate_HUD(id, wEnt)
  609. }
  610.  
  611. }
  612.  
  613. Give_Deagle(id)
  614. {
  615. if(is_user_alive(id) && is_user_connected(id))
  616. {
  617. fm_give_item(id, "weapon_deagle")
  618.  
  619. new wEnt = get_weapon_ent(id, CSW_DEAGLE)
  620.  
  621. if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
  622. cs_set_weapon_ammo(wEnt, 1)
  623.  
  624. cs_set_user_bpammo(id, CSW_DEAGLE, get_pcvar_num(g_DeagleBPAmmo))
  625. UpDate_HUD(id, wEnt)
  626. }
  627. }
  628.  
  629. Give_AWP(id)
  630. {
  631. if(is_user_alive(id) && is_user_connected(id))
  632. {
  633. fm_give_item(id, "weapon_awp")
  634.  
  635. new wEnt = get_weapon_ent(id, CSW_AWP)
  636.  
  637. if(pev_valid(wEnt) && get_pcvar_num(g_OneShot))
  638. cs_set_weapon_ammo(wEnt, 1)
  639.  
  640. cs_set_user_bpammo(id, CSW_AWP, get_pcvar_num(g_AWPBPAmmo))
  641. UpDate_HUD(id, wEnt)
  642. }
  643. }
  644.  
  645. Weapon_ReChek(id, Weap)
  646. {
  647. if(get_pcvar_num(g_OneShot) && is_user_alive(id) && is_user_connected(id))
  648. {
  649. new wEnt = get_weapon_ent(id, Weap)
  650. if(pev_valid(wEnt))
  651. {
  652. cs_set_weapon_ammo(wEnt, 1)
  653. UpDate_HUD(id, wEnt)
  654. }
  655. }
  656. }
  657.  
  658. Ring(const Float:origin[3], R, G, B)
  659. {
  660. engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
  661. write_byte(TE_BEAMCYLINDER) // TE id
  662. engfunc(EngFunc_WriteCoord, origin[0]) // x 10
  663. engfunc(EngFunc_WriteCoord, origin[1]) // y
  664. engfunc(EngFunc_WriteCoord, origin[2]) // z
  665. engfunc(EngFunc_WriteCoord, origin[0]-50.0) // x axis
  666. engfunc(EngFunc_WriteCoord, origin[1]) // y axis
  667. engfunc(EngFunc_WriteCoord, origin[2]+100.0) // z axis
  668. write_short(RingSprite) // sprite
  669. write_byte(0) // startframe
  670. write_byte(0) // framerate
  671. write_byte(5) // life
  672. write_byte(5) // width
  673. write_byte(0) // noise
  674. write_byte(R) // red
  675. write_byte(G) // green
  676. write_byte(B) // blue
  677. write_byte(200) // brightness
  678. write_byte(0) // speed
  679. message_end()
  680. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement