hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.23. 12:14



Jelenlévő felhasználók

Jelenleg 165 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 165 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 11 hozzászólás ]  Oldal 1 2 Következő
Szerző Üzenet
 Hozzászólás témája: Ultimate hang javitás
HozzászólásElküldve: 2015.10.08. 22:24 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.11.12. 16:39
Hozzászólások: 258
Megköszönt másnak: 87 alkalommal
Megköszönték neki: 2 alkalommal
Sziasztok ! Találtam egy plugint, ami sajnos több szempontból nem jó . Pl : már van benne 5 hiba , csak 1 db hs , kör kezdeti hang és kés sound van benne . Az lenne a kérdésem , hogy ebbe hogy kéne belerakni több hangot ?

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <csx>
  3. #include <cstrike>
  4.  
  5. public MultiKill
  6. public MultiKillSound
  7. public BombPlanting
  8. public BombDefusing
  9. public BombPlanted
  10. public BombDefused
  11. public BombFailed
  12. public BombPickUp
  13. public BombDrop
  14. public BombCountVoice
  15. public BombCountDef
  16. public BombReached
  17. public ItalyBonusKill
  18. public EnemyRemaining
  19. public LastMan
  20. public KnifeKill
  21. public KnifeKillSound
  22. public GrenadeKill
  23. public GrenadeSuicide
  24. public HeadShotKill
  25. public HeadShotKillSound
  26. public RoundCounterSound
  27. public RoundCounter
  28. public KillingStreak
  29. public KillingStreakSound
  30. public DoubleKill
  31. public DoubleKillSound
  32. public PlayerName
  33. public FirstBloodSound
  34.  
  35. new g_streakKills[33][2]
  36. new g_multiKills[33][2]
  37. new g_C4Timer
  38. new g_Defusing
  39. new g_Planter
  40. new Float:g_LastOmg
  41. new g_LastAnnounce
  42. new g_roundCount
  43. new Float:g_doubleKill
  44. new g_doubleKillId
  45. new g_friend[33]
  46. new g_firstBlood
  47. new g_center1_sync
  48. new g_announce_sync
  49. new g_status_sync
  50. new g_left_sync
  51. new g_bottom_sync
  52. new g_he_sync
  53.  
  54. new g_MultiKillMsg[7][] =
  55. {
  56. "Multi-Kill! %s^n%L %d %L (%d %L)",
  57. "Ultra-Kill!!! %s^n%L %d %L (%d %L)",
  58. "%s IS ON A KILLING SPREE!!!^n%L %d %L (%d %L)",
  59. "RAMPAGE!!! %s^n%L %d %L (%d hs)",
  60. "%s IS UNSTOPPABLE!!!^n%L %d %L (%d %L)",
  61. "%s IS A MONSTER!^n%L %d %L (%d %L)",
  62. "%s IS GODLIKE!!!!^n%L %d %L (%d %L)"
  63. }
  64.  
  65. new g_Sounds[7][] =
  66. {
  67. "multikill",
  68. "ultrakill",
  69. "killingspree",
  70. "rampage",
  71. "unstoppable",
  72. "monsterkill",
  73. "godlike"
  74. }
  75. new g_KillingMsg[7][] =
  76. {
  77. "%s: Multi-Kill!",
  78. "%s: Ultra-Kill!!!",
  79. "%s IS ON A KILLING SPREE!!!",
  80. "%s: RAMPAGE!!!",
  81. "%s IS UNSTOPPABLE!!!",
  82. "%s IS A MONSTER!",
  83. "%s IS GODLIKE!!!"
  84. }
  85.  
  86. new g_KinfeMsg[4][] =
  87. {
  88. "KNIFE_MSG_1",
  89. "KNIFE_MSG_2",
  90. "KNIFE_MSG_3",
  91. "KNIFE_MSG_4"
  92. }
  93.  
  94. new g_LastMessages[4][] =
  95. {
  96. "LAST_MSG_1",
  97. "LAST_MSG_2",
  98. "LAST_MSG_3",
  99. "LAST_MSG_4"
  100. }
  101.  
  102. new g_HeMessages[4][] =
  103. {
  104. "HE_MSG_1",
  105. "HE_MSG_2",
  106. "HE_MSG_3",
  107. "HE_MSG_4"
  108. }
  109.  
  110. new g_SHeMessages[4][] =
  111. {
  112. "SHE_MSG_1",
  113. "SHE_MSG_2",
  114. "SHE_MSG_3",
  115. "SHE_MSG_4"
  116. }
  117.  
  118. new g_HeadShots[7][] =
  119. {
  120. "HS_MSG_1",
  121. "HS_MSG_2",
  122. "HS_MSG_3",
  123. "HS_MSG_4",
  124. "HS_MSG_5",
  125. "HS_MSG_6",
  126. "HS_MSG_7"
  127. }
  128.  
  129. new g_teamsNames[4][] =
  130. {
  131. "TERRORIST",
  132. "CT",
  133. "TERRORISTS",
  134. "CTS"
  135. }
  136.  
  137. public plugin_init()
  138. {
  139. register_plugin("CS Misc. Stats", AMXX_VERSION_STR, "AMXX Dev Team Erweitert by Schlumpf2005")
  140. register_dictionary("miscstats.txt")
  141. register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w")
  142. register_event("SendAudio", "eEndRound", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw")
  143. register_event("RoundTime", "eNewRound", "bc")
  144. register_event("StatusValue", "setTeam", "be", "1=1")
  145. register_event("StatusValue", "showStatus", "be", "1=2", "2!0")
  146. register_event("StatusValue", "hideStatus", "be", "1=1", "2=0")
  147.  
  148. new mapname[32]
  149. get_mapname(mapname, 31)
  150.  
  151. if (equali(mapname, "de_", 3) || equali(mapname, "csde_", 5))
  152. {
  153. register_event("StatusIcon", "eGotBomb", "be", "1=1", "1=2", "2=c4")
  154. register_event("TextMsg", "eBombPickUp", "bc", "2&#Got_bomb")
  155. register_event("TextMsg", "eBombDrop", "bc", "2&#Game_bomb_d")
  156. }
  157. else if (equali(mapname, "cs_italy"))
  158. {
  159. register_event("23", "chickenKill", "a", "1=108", /*"12=106", */ "15=4")
  160. register_event("23", "radioKill", "a", "1=108", /*"12=294", */ "15=2")
  161. }
  162.  
  163. g_center1_sync = CreateHudSyncObj()
  164. g_announce_sync = CreateHudSyncObj()
  165. g_status_sync = CreateHudSyncObj()
  166. g_left_sync = CreateHudSyncObj()
  167. g_bottom_sync = CreateHudSyncObj()
  168. g_he_sync = CreateHudSyncObj()
  169. }
  170.  
  171. public plugin_cfg()
  172. {
  173. new g_addStast[] = "amx_statscfg add ^"%s^" %s"
  174.  
  175. server_cmd(g_addStast, "MultiKill", "MultiKill")
  176. server_cmd(g_addStast, "MultiKillSound", "MultiKillSound")
  177. server_cmd(g_addStast, "Bomb Planting", "BombPlanting")
  178. server_cmd(g_addStast, "Bomb Defusing", "BombDefusing")
  179. server_cmd(g_addStast, "Bomb Planted", "BombPlanted")
  180. server_cmd(g_addStast, "Bomb Defuse Succ.", "BombDefused")
  181. server_cmd(g_addStast, "Bomb Def. Failure", "BombFailed")
  182. server_cmd(g_addStast, "Bomb PickUp", "BombPickUp")
  183. server_cmd(g_addStast, "Bomb Drop", "BombDrop")
  184. server_cmd(g_addStast, "Bomb Count Down", "BombCountVoice")
  185. server_cmd(g_addStast, "Bomb Count Down (def)", "BombCountDef")
  186. server_cmd(g_addStast, "Bomb Site Reached", "BombReached")
  187. server_cmd(g_addStast, "Italy Bonus Kill", "ItalyBonusKill")
  188. server_cmd(g_addStast, "Last Man", "LastMan")
  189. server_cmd(g_addStast, "Knife Kill", "KnifeKill")
  190. server_cmd(g_addStast, "Knife Kill Sound", "KnifeKillSound")
  191. server_cmd(g_addStast, "Grenade Kill", "GrenadeKill")
  192. server_cmd(g_addStast, "Grenade Suicide", "GrenadeSuicide")
  193. server_cmd(g_addStast, "HeadShot Kill", "HeadShotKill")
  194. server_cmd(g_addStast, "HeadShot Kill Sound", "HeadShotKillSound")
  195. server_cmd(g_addStast, "Round Counter", "RoundCounter")
  196. server_cmd(g_addStast, "Round Counter Sound", "RoundCounterSound")
  197. server_cmd(g_addStast, "Killing Streak", "KillingStreak")
  198. server_cmd(g_addStast, "Killing Streak Sound", "KillingStreakSound")
  199. server_cmd(g_addStast, "Enemy Remaining", "EnemyRemaining")
  200. server_cmd(g_addStast, "Double Kill", "DoubleKill")
  201. server_cmd(g_addStast, "Double Kill Sound", "DoubleKillSound")
  202. server_cmd(g_addStast, "Player Name", "PlayerName")
  203. server_cmd(g_addStast, "First Blood Sound", "FirstBloodSound")
  204. }
  205.  
  206. public client_putinserver(id)
  207. {
  208. g_multiKills[id] = {0, 0}
  209. g_streakKills[id] = {0, 0}
  210. }
  211.  
  212. public client_death(killer, victim, wpnindex, hitplace, TK)
  213. {
  214. if (wpnindex == CSW_C4)
  215. return
  216.  
  217. new headshot = (hitplace == HIT_HEAD) ? 1 : 0
  218. new selfkill = (killer == victim) ? 1 : 0
  219.  
  220. if (g_firstBlood)
  221. {
  222. g_firstBlood = 0
  223. if (FirstBloodSound)
  224. play_sound("Dead-or-Live/firstblood.wav")
  225. }
  226.  
  227. if ((KillingStreak || KillingStreakSound) && !TK)
  228. {
  229. g_streakKills[victim][1]++
  230. g_streakKills[victim][0] = 0
  231.  
  232. if (!selfkill)
  233. {
  234. g_streakKills[killer][0]++
  235. g_streakKills[killer][1] = 0
  236.  
  237. new a = g_streakKills[killer][0] - 3
  238.  
  239. if ((a > -1) && !(a % 2))
  240. {
  241. new name[32]
  242. get_user_name(killer, name, 31)
  243.  
  244. if ((a >>= 1) > 6)
  245. a = 6
  246.  
  247. if (KillingStreak)
  248. {
  249. set_hudmessage(0, 100, 255, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1)
  250. ShowSyncHudMsg(0, g_left_sync, g_KillingMsg[a], name)
  251. }
  252.  
  253. if (KillingStreakSound)
  254. {
  255. new file[32]
  256.  
  257. format(file, 31, "Dead-or-Live/%s.wav", g_Sounds[a])
  258. play_sound(file)
  259. }
  260. }
  261. }
  262. }
  263.  
  264. if (MultiKill || MultiKillSound)
  265. {
  266. if (!selfkill && !TK)
  267. {
  268. g_multiKills[killer][0]++
  269. g_multiKills[killer][1] += headshot
  270.  
  271. new param[2]
  272.  
  273. param[0] = killer
  274. param[1] = g_multiKills[killer][0]
  275. set_task(4.0 + float(param[1]), "checkKills", 0, param, 2)
  276. }
  277. }
  278.  
  279. if (EnemyRemaining && is_user_connected(victim))
  280. {
  281. new ppl[32], pplnum = 0, maxplayers = get_maxplayers()
  282. new epplnum = 0
  283. new CsTeams:team = cs_get_user_team(victim)
  284. new CsTeams:other_team
  285. new CsTeams:enemy_team = (team == CS_TEAM_T) ? CS_TEAM_CT : CS_TEAM_T
  286.  
  287. if (team == CS_TEAM_T || team == CS_TEAM_CT)
  288. {
  289. for (new i=1; i<=maxplayers; i++)
  290. {
  291. if (!is_user_connected(i))
  292. {
  293. continue
  294. }
  295. if (i == victim)
  296. {
  297. continue
  298. }
  299. other_team = cs_get_user_team(i)
  300. if (other_team == team && is_user_alive(i))
  301. {
  302. epplnum++
  303. } else if (other_team == enemy_team) {
  304. ppl[pplnum++] = i
  305. }
  306. }
  307.  
  308. if (pplnum && epplnum)
  309. {
  310. new message[128], team_name[32]
  311.  
  312. set_hudmessage(255, 255, 255, 0.02, 0.85, 2, 0.05, 0.1, 0.02, 3.0, -1)
  313.  
  314. /* This is a pretty stupid thing to translate, but whatever */
  315. new _teamname[32]
  316. if (team == CS_TEAM_T)
  317. {
  318. format(_teamname, 31, "TERRORIST%s", (epplnum == 1) ? "" : "S")
  319. } else if (team == CS_TEAM_CT) {
  320. format(_teamname, 31, "CT%s", (epplnum == 1) ? "" : "S")
  321. }
  322.  
  323. for (new a = 0; a < pplnum; ++a)
  324. {
  325. format(team_name, 31, "%L", ppl[a], _teamname)
  326. format(message, 127, "%L", ppl[a], "REMAINING", epplnum, team_name)
  327. ShowSyncHudMsg(ppl[a], g_bottom_sync, "%s", message)
  328. }
  329. }
  330. }
  331. }
  332.  
  333. if (LastMan)
  334. {
  335. new cts[32], ts[32], ctsnum, tsnum
  336. new maxplayers = get_maxplayers()
  337. new CsTeams:team
  338.  
  339. for (new i=1; i<=maxplayers; i++)
  340. {
  341. if (!is_user_connected(i) || !is_user_alive(i))
  342. {
  343. continue
  344. }
  345. team = cs_get_user_team(i)
  346. if (team == CS_TEAM_T)
  347. {
  348. ts[tsnum++] = i
  349. } else if (team == CS_TEAM_CT) {
  350. cts[ctsnum++] = i
  351. }
  352. }
  353.  
  354. if (ctsnum == 1 && tsnum == 1)
  355. {
  356. new ctname[32], tname[32]
  357.  
  358. get_user_name(cts[0], ctname, 31)
  359. get_user_name(ts[0], tname, 31)
  360.  
  361. set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
  362. ShowSyncHudMsg(0, g_center1_sync, "%s vs. %s", ctname, tname)
  363.  
  364. play_sound("Dead-or-Live/maytheforce.wav")
  365. }
  366. else if (!g_LastAnnounce)
  367. {
  368. new oposite = 0, _team = 0
  369.  
  370. if (ctsnum == 1 && tsnum > 1)
  371. {
  372. g_LastAnnounce = cts[0]
  373. oposite = tsnum
  374. _team = 0
  375. }
  376. else if (tsnum == 1 && ctsnum > 1)
  377. {
  378. g_LastAnnounce = ts[0]
  379. oposite = ctsnum
  380. _team = 1
  381. }
  382.  
  383. if (g_LastAnnounce)
  384. {
  385. new name[32]
  386.  
  387. get_user_name(g_LastAnnounce, name, 31)
  388.  
  389. set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
  390. ShowSyncHudMsg(0, g_center1_sync, "%s (%d HP) vs. %d %s%s: %L", name, get_user_health(g_LastAnnounce), oposite, g_teamsNames[_team], (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages[random_num(0, 3)])
  391.  
  392. if (!is_user_connecting(g_LastAnnounce))
  393. {
  394. client_cmd(g_LastAnnounce, "spk Dead-or-Live/oneandonly.wav")
  395. }
  396. }
  397. }
  398. }
  399.  
  400. if (wpnindex == CSW_KNIFE && (KnifeKill || KnifeKillSound))
  401. {
  402. if (KnifeKill)
  403. {
  404. new killer_name[32], victim_name[32]
  405.  
  406. get_user_name(killer, killer_name, 31)
  407. get_user_name(victim, victim_name, 31)
  408.  
  409. set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
  410. ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_KinfeMsg[random_num(0, 3)], killer_name, victim_name)
  411. }
  412.  
  413. if (KnifeKillSound)
  414. play_sound("Dead-or-Live/chucky.wav")
  415. }
  416.  
  417. if (wpnindex == CSW_HEGRENADE && (GrenadeKill || GrenadeSuicide))
  418. {
  419. client_cmd(0,"spk Dead-or-Live/witch.wav")
  420. new killer_name[32], victim_name[32]
  421.  
  422. client_cmd(0,"spk Dead-or-Live/grenade.wav")
  423. get_user_name(killer, killer_name, 31)
  424. get_user_name(victim, victim_name, 31)
  425.  
  426. set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
  427.  
  428. if (!selfkill)
  429. {
  430. if (GrenadeKill)
  431. ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_HeMessages[random_num(0, 3)], killer_name, victim_name)
  432. }
  433. else if (GrenadeSuicide)
  434. ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_SHeMessages[random_num(0, 3)], victim_name)
  435. }
  436.  
  437. if (headshot && (HeadShotKill || HeadShotKillSound))
  438. {
  439. if (HeadShotKill && wpnindex)
  440. {
  441. new killer_name[32], victim_name[32], weapon_name[32], message[128], players[32], pnum
  442.  
  443. xmod_get_wpnname(wpnindex, weapon_name, 31)
  444. get_user_name(killer, killer_name, 31)
  445. get_user_name(victim, victim_name, 31)
  446. get_players(players, pnum, "c")
  447.  
  448. for (new i = 0; i < pnum; i++)
  449. {
  450. format(message, 127, "%L", players[i], g_HeadShots[random_num(0, 6)])
  451.  
  452. replace(message, 127, "$vn", victim_name)
  453. replace(message, 127, "$wn", weapon_name)
  454. replace(message, 127, "$kn", killer_name)
  455.  
  456. set_hudmessage(100, 100, 255, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
  457. ShowSyncHudMsg(players[i], g_announce_sync, "%s", message)
  458. }
  459. }
  460.  
  461. if (HeadShotKillSound)
  462. {
  463. client_cmd(killer, "spk Dead-or-live/headshot.wav")
  464. client_cmd(victim, "spk Dead-or-live/headshot.wav")
  465. }
  466. }
  467.  
  468. if ((DoubleKill || DoubleKillSound) && !selfkill)
  469. {
  470. new Float:nowtime = get_gametime()
  471.  
  472. if (g_doubleKill == nowtime && g_doubleKillId == killer)
  473. {
  474. if (DoubleKill)
  475. {
  476. new name[32]
  477.  
  478. get_user_name(killer, name, 31)
  479.  
  480. set_hudmessage(255, 0, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
  481. ShowSyncHudMsg(0, g_center1_sync, "%L", LANG_PLAYER, "DOUBLE_KILL", name)
  482. }
  483.  
  484. if (DoubleKillSound)
  485. play_sound("Dead-or-Live/doublekill.wav")
  486. }
  487.  
  488. g_doubleKill = nowtime
  489. g_doubleKillId = killer
  490. }
  491. }
  492.  
  493. public hideStatus(id)
  494. {
  495. if (PlayerName)
  496. {
  497. ClearSyncHud(id, g_status_sync)
  498. }
  499. }
  500.  
  501. public setTeam(id)
  502. g_friend[id] = read_data(2)
  503.  
  504. public showStatus(id)
  505. {
  506. if (PlayerName)
  507. {
  508. new name[32], pid = read_data(2)
  509.  
  510. get_user_name(pid, name, 31)
  511. new color1 = 0, color2 = 0
  512.  
  513. if (get_user_team(pid) == 1)
  514. color1 = 255
  515. else
  516. color2 = 255
  517.  
  518. if (g_friend[id] == 1) // friend
  519. {
  520. new clip, ammo, wpnid = get_user_weapon(pid, clip, ammo)
  521. new wpnname[32]
  522.  
  523. if (wpnid)
  524. xmod_get_wpnname(wpnid, wpnname, 31)
  525.  
  526. set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01)
  527. ShowSyncHudMsg(id, g_status_sync, "%s -- %d HP / %d AP / %s", name, get_user_health(pid), get_user_armor(pid), wpnname)
  528. } else {
  529. set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01)
  530. ShowSyncHudMsg(id, g_status_sync, "%s", name)
  531. }
  532. }
  533. }
  534.  
  535. public eNewRound()
  536. {
  537. if (read_data(1) == floatround(get_cvar_float("mp_roundtime") * 60.0))
  538. {
  539. g_firstBlood = 1
  540. g_C4Timer = 0
  541. ++g_roundCount
  542.  
  543. if (RoundCounter)
  544. {
  545. set_hudmessage(200, 0, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
  546. ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, "PREPARE_FIGHT", g_roundCount)
  547. }
  548.  
  549. if (RoundCounterSound)
  550. play_sound("Dead-or-Live/prepare.wav")
  551.  
  552. if (KillingStreak)
  553. {
  554. new appl[32], ppl, i
  555. get_players(appl, ppl, "ac")
  556.  
  557. for (new a = 0; a < ppl; ++a)
  558. {
  559. i = appl[a]
  560.  
  561. if (g_streakKills[i][0] >= 2)
  562. client_print(i, print_chat, "* %L", i, "KILLED_ROW", g_streakKills[i][0])
  563. else if (g_streakKills[i][1] >= 2)
  564. client_print(i, print_chat, "* %L", i, "DIED_ROUNDS", g_streakKills[i][1])
  565. }
  566. }
  567. }
  568. }
  569.  
  570. public eRestart()
  571. {
  572. eEndRound()
  573. g_roundCount = 0
  574. g_firstBlood = 1
  575. }
  576.  
  577. public eEndRound()
  578. {
  579. g_C4Timer = -2
  580. g_LastOmg = 0.0
  581. remove_task(8038)
  582. g_LastAnnounce = 0
  583. }
  584.  
  585. public checkKills(param[])
  586. {
  587. new id = param[0]
  588. new a = param[1]
  589.  
  590. if (a == g_multiKills[id][0])
  591. {
  592. a -= 3
  593.  
  594. if (a > -1)
  595. {
  596. if (a > 6)
  597. {
  598. a = 6
  599. }
  600.  
  601. if (MultiKill)
  602. {
  603. new name[32]
  604.  
  605. get_user_name(id, name, 31)
  606. set_hudmessage(255, 0, 100, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1)
  607.  
  608. ShowSyncHudMsg(0, g_left_sync, g_MultiKillMsg[a], name, LANG_PLAYER, "WITH", g_multiKills[id][0], LANG_PLAYER, "KILLS", g_multiKills[id][1], LANG_PLAYER, "HS")
  609. }
  610.  
  611. if (MultiKillSound)
  612. {
  613. new sound[24]
  614. format(sound, 23, "Dead-or-Live/%s.wav", g_Sounds[a])
  615. play_sound(sound)
  616. }
  617. }
  618. g_multiKills[id] = {0, 0}
  619. }
  620. }
  621.  
  622. public chickenKill()
  623. if (ItalyBonusKill)
  624. announceEvent(0, "KILLED_CHICKEN")
  625.  
  626. public radioKill()
  627. {
  628. if (ItalyBonusKill)
  629. announceEvent(0, "BLEW_RADIO")
  630. }
  631.  
  632. announceEvent(id, message[])
  633. {
  634. new name[32]
  635.  
  636. get_user_name(id, name, 31)
  637. set_hudmessage(255, 100, 50, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
  638. ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, message, name)
  639. }
  640.  
  641. public eBombPickUp(id)
  642. if (BombPickUp)
  643. announceEvent(id, "PICKED_BOMB")
  644.  
  645. public eBombDrop()
  646. if (BombDrop)
  647. announceEvent(g_Planter, "DROPPED_BOMB")
  648.  
  649. public eGotBomb(id)
  650. {
  651. g_Planter = id
  652.  
  653. if (BombReached && read_data(1) == 2 && g_LastOmg < get_gametime())
  654. {
  655. g_LastOmg = get_gametime() + 15.0
  656. announceEvent(g_Planter, "REACHED_TARGET")
  657. }
  658. }
  659.  
  660. public bombTimer()
  661. {
  662. if (--g_C4Timer > 0)
  663. {
  664. if (BombCountVoice)
  665. {
  666. if (g_C4Timer == 30 || g_C4Timer == 20)
  667. {
  668. new temp[64]
  669.  
  670. num_to_word(g_C4Timer, temp, 63)
  671. format(temp, 63, "^"vox/%s seconds until explosion^"", temp)
  672. play_sound(temp)
  673. }
  674. else if (g_C4Timer < 11)
  675. {
  676. new temp[64]
  677.  
  678. num_to_word(g_C4Timer, temp, 63)
  679. format(temp, 63, "^"vox/%s^"", temp)
  680. play_sound(temp)
  681. }
  682. }
  683. if (BombCountDef && g_Defusing)
  684. client_print(g_Defusing, print_center, "%d", g_C4Timer)
  685. }
  686. else
  687. remove_task(8038)
  688. }
  689.  
  690. public bomb_planted(planter)
  691.  
  692. {
  693. g_Defusing = 0
  694.  
  695. if (BombPlanted)
  696. announceEvent(planter, "SET_UP_BOMB")
  697. client_cmd(0,"spk Dead-or-Live/c4powa.wav")
  698.  
  699. g_C4Timer = get_cvar_num("mp_c4timer")
  700. set_task(1.0, "bombTimer", 8038, "", 0, "b")
  701. }
  702.  
  703. public bomb_planting(planter)
  704. if (BombPlanting)
  705. announceEvent(planter, "PLANT_BOMB")
  706.  
  707.  
  708.  
  709. public bomb_defusing(defuser)
  710. {
  711. if (BombDefusing)
  712. announceEvent(defuser, "DEFUSING_BOMB")
  713. client_cmd(0,"spk Dead-or-Live/laugh.wav")
  714.  
  715. g_Defusing = defuser
  716. }
  717.  
  718. public bomb_defused(defuser)
  719. if (BombDefused)
  720. announceEvent(defuser, "DEFUSED_BOMB")
  721.  
  722.  
  723. public bomb_explode(planter, defuser)
  724. if (BombFailed && defuser)
  725. announceEvent(defuser, "FAILED_DEFU")
  726.  
  727.  
  728. public play_sound(sound[])
  729. {
  730. new players[32], pnum
  731. get_players(players, pnum, "c")
  732. new i
  733.  
  734. for (i = 0; i < pnum; i++)
  735. {
  736. if (is_user_connecting(players[i]))
  737. continue
  738.  
  739. client_cmd(players[i], "spk %s", sound)
  740. }
  741. }
  742.  
  743. public plugin_precache()
  744. {
  745. precache_sound( "Dead-or-Live/c4powa.wav")
  746. precache_sound( "Dead-or-Live/laugh.wav")
  747. precache_sound( "Dead-or-Live/grenade.wav")
  748. precache_sound( "Dead-or-Live/witch.wav")
  749. precache_sound( "Dead-or-Live/monsterkill.wav")
  750. precache_sound( "Dead-or-Live/dominating.wav")
  751. precache_sound( "Dead-or-Live/tripplekill.wav")
  752. precache_sound( "Dead-or-Live/rampage.wav")
  753. precache_sound( "Dead-or-Live/megakill.wav")
  754. precache_sound( "Dead-or-Live/ludicrouskill.wav")
  755. precache_sound( "Dead-or-Live/unstoppable.wav")
  756. precache_sound( "Dead-or-Live/whickedsick.wav")
  757. precache_sound( "Dead-or-Live/holyshit.wav")
  758. precache_sound( "Dead-or-Live/godlike.wav")
  759. precache_sound( "Dead-or-Live/chucky.wav")
  760. precache_sound( "Dead-or-Live/killingspree.wav")
  761. precache_sound( "Dead-or-Live/multikill.wav")
  762. precache_sound( "Dead-or-Live/ultrakill.wav")
  763. precache_sound( "Dead-or-Live/maytheforce.wav")
  764. precache_sound( "Dead-or-Live/oneandonly.wav")
  765. precache_sound( "Dead-or-Live/prepare.wav")
  766. precache_sound( "Dead-or-Live/headshot.wav")
  767. return PLUGIN_CONTINUE
  768. }
  769.  

_________________
Nem szégyen megköszönni :)

'The dictator is coming' :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ultimate hang javitás
HozzászólásElküldve: 2015.10.08. 22:40 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Nem tudom milyen verzió amit linkeltél, de 100%, hogy régebbi, mint az eredeti. amxx 1.8.3-mashoz githubon connormcleod egy csomó dolgot hozzáadott meg javított elvileg.
Én ha használnék valamit, akkor ez lenne az.

https://forums.alliedmods.net/showthread.php?t=222180


Csatolmányok:
miscstats_sounds (1).zip [657.92 KiB]
Letöltve 64 alkalommal.
miscstats.sma [28.88 KiB]
Letöltve 68 alkalommal.

_________________
GitHub - mforce
Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ultimate hang javitás
HozzászólásElküldve: 2015.10.09. 06:48 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.11.12. 16:39
Hozzászólások: 258
Megköszönt másnak: 87 alkalommal
Megköszönték neki: 2 alkalommal
mforce írta:
Nem tudom milyen verzió amit linkeltél, de 100%, hogy régebbi, mint az eredeti. amxx 1.8.3-mashoz githubon connormcleod egy csomó dolgot hozzáadott meg javított elvileg.
Én ha használnék valamit, akkor ez lenne az.

https://forums.alliedmods.net/showthread.php?t=222180


Nem bbirom lefordítani amit küldtél. Ahol MAX_PLAYERS van az valamiért nem jó az a sor . Kitudnád javítani ? És hogyan kellene ebbe több köreleji hang , hs és kés hang ?

SMA Forráskód: [ Mindet kijelol ]
  1. // vim: set ts=4 sw=4 tw=99 noet:
  2. //
  3. // AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
  4. // Copyright (C) The AMX Mod X Development Team.
  5. //
  6. // This software is licensed under the GNU General Public License, version 3 or higher.
  7. // Additional exceptions apply. For full license details, see LICENSE.txt or visit:
  8.  
  9. //
  10. // Misc. Stats Plugin
  11. //
  12.  
  13. #include <amxmodx>
  14. #include <amxmisc>
  15. #include <csx>
  16.  
  17. public MultiKill
  18. public MultiKillSound
  19. public BombPlanting
  20. public BombDefusing
  21. public BombPlanted
  22. public BombDefused
  23. public BombFailed
  24. public BombPickUp
  25. public BombDrop
  26. public BombCountVoice
  27. public BombCountDef
  28. public BombReached
  29. public ItalyBonusKill
  30. public EnemyRemaining
  31. public LastMan
  32. public LastManHealth
  33. public KnifeKill
  34. public KnifeKillSound
  35. public GrenadeKill
  36. public GrenadeSuicide
  37. public HeadShotKill
  38. public HeadShotKillSound
  39. public RoundCounterSound
  40. public RoundCounter
  41. public KillingStreak
  42. public KillingStreakSound
  43. public DoubleKill
  44. public DoubleKillSound
  45. public PlayerName
  46. public FirstBloodSound
  47.  
  48. public BombPlantedSound
  49. public BombDefusedSound
  50. public BombFailedSound
  51. public BombCountHUD
  52. public LastManSound
  53. public GrenadeKillSound
  54. public GrenadeSuicideSound
  55.  
  56. const SOUNDFILE_PATH_MAXLEN = 64
  57. const SOUND_SHORTPATH_MAXLEN = SOUNDFILE_PATH_MAXLEN - 10 // 64 (sound/ [ 54 ] .wav) critical value for fast dl
  58.  
  59. new g_streakKills[MAX_PLAYERS + 1][2]
  60. new g_multiKills[MAX_PLAYERS + 1][2]
  61. new g_C4Timer
  62. new g_Defusing
  63. new g_Planter
  64. new Float:g_LastOmg
  65. new g_LastAnnounce
  66. new g_roundCount
  67. new Float:g_doubleKill
  68. new g_doubleKillId
  69. new g_friend[MAX_PLAYERS + 1]
  70. new g_firstBlood
  71. new g_center1_sync
  72. new g_announce_sync
  73. new g_status_sync
  74. new g_left_sync
  75. new g_bottom_sync
  76. new g_he_sync
  77.  
  78. new g_pcvar_mp_c4timer, g_c4timer_value
  79.  
  80. const TASK_BOMB_TIMER = 8038
  81. const TASK_DELAYED_NEW_ROUND = 98038
  82.  
  83. const TEAM_T = 1
  84. const TEAM_CT = 2
  85.  
  86. new g_connected[MAX_PLAYERS + 1]
  87. new g_msounds[MAX_PLAYERS + 1]
  88. new const _msound[] = "_msound"
  89.  
  90. new g_MultiKillMsg[7][] =
  91. {
  92. "Multi-Kill! %s^n%L %d %L (%d %L)",
  93. "Ultra-Kill!!! %s^n%L %d %L (%d %L)",
  94. "%s IS ON A KILLING SPREE!!!^n%L %d %L (%d %L)",
  95. "RAMPAGE!!! %s^n%L %d %L (%d hs)",
  96. "%s IS UNSTOPPABLE!!!^n%L %d %L (%d %L)",
  97. "%s IS A MONSTER!^n%L %d %L (%d %L)",
  98. "%s IS GODLIKE!!!!^n%L %d %L (%d %L)"
  99. }
  100.  
  101. new g_Sounds[7][SOUND_SHORTPATH_MAXLEN] =
  102. {
  103. "misc/multikill",
  104. "misc/ultrakill",
  105. "misc/killingspree",
  106. "misc/rampage",
  107. "misc/unstoppable",
  108. "misc/monsterkill",
  109. "misc/godlike"
  110. }
  111.  
  112. new g_firstbloodsound[SOUND_SHORTPATH_MAXLEN] = "misc/firstblood"
  113. new g_lastmansound_1vsothers[SOUND_SHORTPATH_MAXLEN] = "misc/oneandonly"
  114. new g_lastmansound_duel[SOUND_SHORTPATH_MAXLEN] = "misc/maytheforce"
  115. new g_hssound_killer[SOUND_SHORTPATH_MAXLEN] = "misc/headshot"
  116. new g_hssound_victim[SOUND_SHORTPATH_MAXLEN] = "misc/headshot"
  117. new g_knifekillsound[SOUND_SHORTPATH_MAXLEN] = "misc/humiliation"
  118. new g_doublekillsound[SOUND_SHORTPATH_MAXLEN] = "misc/doublekill"
  119. new g_roundcountersound[SOUND_SHORTPATH_MAXLEN] = "misc/prepare"
  120. new g_grenadekillsound[SOUND_SHORTPATH_MAXLEN] = "djeyl/grenade"
  121. new g_grenadesuicidesound[SOUND_SHORTPATH_MAXLEN] = "djeyl/witch"
  122. new g_bombplantedsound[SOUND_SHORTPATH_MAXLEN] = "djeyl/c4powa"
  123. new g_bombdefusedsound[SOUND_SHORTPATH_MAXLEN] = "djeyl/laugh"
  124. new g_bombfailedsound[SOUND_SHORTPATH_MAXLEN] = "djeyl/witch"
  125.  
  126. new g_KillingMsg[7][] =
  127. {
  128. "%s: Multi-Kill!",
  129. "%s: Ultra-Kill!!!",
  130. "%s IS ON A KILLING SPREE!!!",
  131. "%s: RAMPAGE!!!",
  132. "%s IS UNSTOPPABLE!!!",
  133. "%s IS A MONSTER!",
  134. "%s IS GODLIKE!!!"
  135. }
  136.  
  137. new g_KinfeMsg[4][] =
  138. {
  139. "KNIFE_MSG_1",
  140. "KNIFE_MSG_2",
  141. "KNIFE_MSG_3",
  142. "KNIFE_MSG_4"
  143. }
  144.  
  145. new g_LastMessages[4][] =
  146. {
  147. "LAST_MSG_1",
  148. "LAST_MSG_2",
  149. "LAST_MSG_3",
  150. "LAST_MSG_4"
  151. }
  152.  
  153. new g_HeMessages[4][] =
  154. {
  155. "HE_MSG_1",
  156. "HE_MSG_2",
  157. "HE_MSG_3",
  158. "HE_MSG_4"
  159. }
  160.  
  161. new g_SHeMessages[4][] =
  162. {
  163. "SHE_MSG_1",
  164. "SHE_MSG_2",
  165. "SHE_MSG_3",
  166. "SHE_MSG_4"
  167. }
  168.  
  169. new g_HeadShots[7][] =
  170. {
  171. "HS_MSG_1",
  172. "HS_MSG_2",
  173. "HS_MSG_3",
  174. "HS_MSG_4",
  175. "HS_MSG_5",
  176. "HS_MSG_6",
  177. "HS_MSG_7"
  178. }
  179.  
  180. new g_teamsNames[4][] =
  181. {
  182. "TERRORIST",
  183. "CT",
  184. "TERRORISTS",
  185. "CTS"
  186. }
  187.  
  188. public plugin_init()
  189. {
  190. register_plugin("CS Misc. Stats", AMXX_VERSION_STR, "AMXX Dev Team")
  191. register_dictionary("miscstats.txt")
  192. register_dictionary("statsx.txt")
  193. register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w")
  194. register_event("SendAudio", "eEndRound", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw")
  195.  
  196. register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0") // cache c4 timer value
  197. register_logevent("LogEvent_Round_Start", 2, "1=Round_Start") // replaces ugly register_event("RoundTime", "eNewRound", "bc")
  198. register_event("StatusValue", "setTeam", "bef", "1=1")
  199. register_event("StatusValue", "showStatus", "bef", "1=2", "2!0")
  200. register_event("StatusValue", "hideStatus", "bef", "1=1", "2=0")
  201.  
  202. new mapname[32], n = get_mapname(mapname, charsmax(mapname))
  203. if ((get_map_objectives() & MapObjective_Bomb) || (equali(mapname, "de_", 3) || equali(mapname, "csde_", 5)))
  204. {
  205. register_event("StatusIcon", "eGotBomb", "be", "1=1", "1=2", "2=c4")
  206. register_event("TextMsg", "eBombPickUp", "bc", "2&#Got_bomb")
  207. register_event("TextMsg", "eBombDrop", "bc", "2&#Game_bomb_d")
  208. register_event("BarTime", "eStopDefuse", "b", "1=0")
  209. }
  210. else if (equali(mapname, "cs_italy") || equali(mapname, "cs_italy_cz"))
  211. {
  212. register_event("23", "chickenKill", "a", "1=108", "15=4")
  213. register_event("23", "radioKill", "a", "1=108", n == 8 ? "15=2" : "15=8") // cz radio is wood
  214.  
  215. }
  216.  
  217. g_center1_sync = CreateHudSyncObj()
  218. g_announce_sync = CreateHudSyncObj()
  219. g_status_sync = CreateHudSyncObj()
  220. g_left_sync = CreateHudSyncObj()
  221. g_bottom_sync = CreateHudSyncObj()
  222. g_he_sync = CreateHudSyncObj()
  223.  
  224. g_pcvar_mp_c4timer = get_cvar_pointer("mp_c4timer")
  225. g_c4timer_value = get_pcvar_num( g_pcvar_mp_c4timer )
  226.  
  227. register_clcmd("say /msounds", "cmdSwitchSounds", _, " - switches sounds on and off")
  228. register_clcmd("say_team /msounds", "cmdSwitchSounds", _, " - switches sounds on and off")
  229. }
  230.  
  231. public plugin_precache()
  232. {
  233. // parse sounds and precache them
  234. new szConfigsDir[64], szCfgFile[64]
  235. get_configsdir(szConfigsDir, charsmax(szConfigsDir))
  236. formatex(szCfgFile, charsmax(szCfgFile), "%s/stats.ini", szConfigsDir)
  237.  
  238. new buffer[256]
  239.  
  240. // initialize xvars so we can know later if sounds have to be precached or not.
  241. // xvars gonna be initialized again in statscfg.amxx plugin_init, this is ok.
  242. new fp = fopen(szCfgFile, "rt")
  243. if( fp )
  244. {
  245. new xvarname[32], xvarid
  246. while( !feof(fp) )
  247. {
  248. fgets(fp, buffer, charsmax(buffer))
  249. trim(buffer)
  250. if( buffer[0] != ';' )
  251. {
  252. parse(buffer, xvarname, charsmax(xvarname))
  253. if ((xvarid = get_xvar_id(xvarname)) != -1)
  254. {
  255. set_xvar_num(xvarid, 1)
  256. }
  257. }
  258. }
  259. fclose(fp)
  260. }
  261.  
  262. formatex(szCfgFile, charsmax(szCfgFile), "%s/miscstats.ini", szConfigsDir)
  263. fp = fopen(szCfgFile, "rt")
  264. if( fp )
  265. {
  266. new szSoundKey[32], szSoundFile[SOUNDFILE_PATH_MAXLEN]
  267. while( !feof(fp) )
  268. {
  269. fgets(fp, buffer, charsmax(buffer))
  270. trim(buffer)
  271. if( buffer[0] != ';' && parse(buffer, szSoundKey, charsmax(szSoundKey), szSoundFile, charsmax(szSoundFile)) == 2 )
  272. {
  273. if( equal(szSoundKey, "FirstBloodSound") )
  274. {
  275. copy_sound(g_firstbloodsound, charsmax(g_firstbloodsound), szSoundFile)
  276. if( FirstBloodSound ) precache_sound_custom(g_firstbloodsound)
  277. }
  278. else if( equal(szSoundKey, "LastManVsOthersSound") )
  279. {
  280. copy_sound(g_lastmansound_1vsothers, charsmax(g_lastmansound_1vsothers), szSoundFile)
  281. if( LastManSound ) precache_sound_custom(g_lastmansound_1vsothers)
  282. }
  283. else if( equal(szSoundKey, "LastManDuelSound") )
  284. {
  285. copy_sound(g_lastmansound_duel, charsmax(g_lastmansound_duel), szSoundFile)
  286. if( LastManSound ) precache_sound_custom(g_lastmansound_duel)
  287. }
  288. else if( equal(szSoundKey, "HeadShotKillSoundKiller") )
  289. {
  290. copy_sound(g_hssound_killer, charsmax(g_hssound_killer), szSoundFile)
  291. if( HeadShotKillSound ) precache_sound_custom(g_hssound_killer)
  292. }
  293. else if( equal(szSoundKey, "HeadShotKillSoundVictim") )
  294. {
  295. copy_sound(g_hssound_victim, charsmax(g_hssound_victim), szSoundFile)
  296. if( HeadShotKillSound ) precache_sound_custom(g_hssound_victim)
  297. }
  298. else if( equal(szSoundKey, "KnifeKillSound") )
  299. {
  300. copy_sound(g_knifekillsound, charsmax(g_knifekillsound), szSoundFile)
  301. if( KnifeKillSound ) precache_sound_custom(g_knifekillsound)
  302. }
  303. else if( equal(szSoundKey, "DoubleKillSound") )
  304. {
  305. copy_sound(g_doublekillsound, charsmax(g_doublekillsound), szSoundFile)
  306. if( DoubleKillSound ) precache_sound_custom(g_doublekillsound)
  307. }
  308. else if( equal(szSoundKey, "RoundCounterSound") )
  309. {
  310. copy_sound(g_roundcountersound, charsmax(g_roundcountersound), szSoundFile)
  311. if( RoundCounterSound ) precache_sound_custom(g_roundcountersound)
  312. }
  313. else if( equal(szSoundKey, "GrenadeKillSound") )
  314. {
  315. copy_sound(g_grenadekillsound, charsmax(g_grenadekillsound), szSoundFile)
  316. if( GrenadeKillSound ) precache_sound_custom(g_grenadekillsound)
  317. }
  318. else if( equal(szSoundKey, "GrenadeSuicideSound") )
  319. {
  320. copy_sound(g_grenadesuicidesound, charsmax(g_grenadesuicidesound), szSoundFile)
  321. if( GrenadeSuicideSound ) precache_sound_custom(g_grenadesuicidesound)
  322. }
  323. else if( equal(szSoundKey, "BombPlantedSound") )
  324. {
  325. copy_sound(g_bombplantedsound, charsmax(g_bombplantedsound), szSoundFile)
  326. if( BombPlantedSound ) precache_sound_custom(g_bombplantedsound)
  327. }
  328. else if( equal(szSoundKey, "BombDefusedSound") )
  329. {
  330. copy_sound(g_bombdefusedsound, charsmax(g_bombdefusedsound), szSoundFile)
  331. if( BombDefusedSound ) precache_sound_custom(g_bombdefusedsound)
  332. }
  333. else if( equal(szSoundKey, "BombFailedSound") )
  334. {
  335. copy_sound(g_bombfailedsound, charsmax(g_bombfailedsound), szSoundFile)
  336. if( BombFailedSound ) precache_sound_custom(g_bombfailedsound)
  337. }
  338. else
  339. {
  340. // KillingStreakSound and MultiKillSound
  341. if( equal(szSoundKey, "MultiKillSound") )
  342. {
  343. copy_sound(g_Sounds[0], charsmax(g_Sounds[]), szSoundFile)
  344. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[0])
  345. }
  346. else if( equal(szSoundKey, "UltraKillSound") )
  347. {
  348. copy_sound(g_Sounds[1], charsmax(g_Sounds[]), szSoundFile)
  349. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[1])
  350. }
  351. else if( equal(szSoundKey, "KillingSpreeSound") )
  352. {
  353. copy_sound(g_Sounds[2], charsmax(g_Sounds[]), szSoundFile)
  354. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[2])
  355. }
  356. else if( equal(szSoundKey, "RampageSound") )
  357. {
  358. copy_sound(g_Sounds[3], charsmax(g_Sounds[]), szSoundFile)
  359. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[3])
  360. }
  361. else if( equal(szSoundKey, "UnstopableSound") )
  362. {
  363. copy_sound(g_Sounds[4], charsmax(g_Sounds[]), szSoundFile)
  364. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[4])
  365. }
  366. else if( equal(szSoundKey, "MonsterKillSound") )
  367. {
  368. copy_sound(g_Sounds[5], charsmax(g_Sounds[]), szSoundFile)
  369. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[5])
  370. }
  371. else if( equal(szSoundKey, "GodLike") )
  372. {
  373. copy_sound(g_Sounds[6], charsmax(g_Sounds[]), szSoundFile)
  374. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[6])
  375. }
  376. }
  377. }
  378. }
  379. fclose(fp)
  380. }
  381. }
  382.  
  383. precache_sound_custom( const sound[] )
  384. {
  385. new fullpathsound[SOUNDFILE_PATH_MAXLEN]
  386. formatex(fullpathsound, charsmax(fullpathsound), "sound/%s.wav", sound)
  387. if( file_exists(fullpathsound) )
  388. {
  389. precache_sound(fullpathsound[6])
  390. }
  391. else
  392. {
  393. log_amx("Could not locate <%s> file", fullpathsound)
  394. }
  395. }
  396.  
  397. copy_sound(dest[], len, src[])
  398. {
  399. new n = copy(dest, len, src[ 6 * equali(src, "sound/", 6) ])
  400. if( n > 4 && equal(dest[n-4], ".wav") )
  401. {
  402. dest[n-4] = EOS
  403. }
  404. }
  405.  
  406. public plugin_cfg()
  407. {
  408. new g_addStast[] = "amx_statscfg add ^"%s^" %s"
  409.  
  410. server_cmd(g_addStast, "ST_MULTI_KILL", "MultiKill")
  411. server_cmd(g_addStast, "ST_MULTI_KILL_SOUND", "MultiKillSound")
  412. server_cmd(g_addStast, "ST_BOMB_PLANTING", "BombPlanting")
  413. server_cmd(g_addStast, "ST_BOMB_DEFUSING", "BombDefusing")
  414. server_cmd(g_addStast, "ST_BOMB_PLANTED", "BombPlanted")
  415. server_cmd(g_addStast, "ST_BOMB_PLANTED_SOUND", "BombPlantedSound")
  416. server_cmd(g_addStast, "ST_BOMB_DEF_SUCC", "BombDefused")
  417. server_cmd(g_addStast, "ST_BOMB_DEF_SUCC_SOUND", "BombDefusedSound")
  418. server_cmd(g_addStast, "ST_BOMB_DEF_FAIL", "BombFailed")
  419. server_cmd(g_addStast, "ST_BOMB_DEF_FAIL_SOUND", "BombFailedSound")
  420. server_cmd(g_addStast, "ST_BOMB_PICKUP", "BombPickUp")
  421. server_cmd(g_addStast, "ST_BOMB_DROP", "BombDrop")
  422. server_cmd(g_addStast, "ST_BOMB_CD_HUD", "BombCountHUD")
  423. server_cmd(g_addStast, "ST_BOMB_CD_VOICE", "BombCountVoice")
  424. server_cmd(g_addStast, "ST_BOMB_CD_DEF", "BombCountDef")
  425. server_cmd(g_addStast, "ST_BOMB_SITE", "BombReached")
  426. server_cmd(g_addStast, "ST_ITALY_BONUS", "ItalyBonusKill")
  427. server_cmd(g_addStast, "ST_LAST_MAN", "LastMan")
  428. server_cmd(g_addStast, "ST_LAST_MAN_HEALTH", "LastManHealth")
  429. server_cmd(g_addStast, "ST_LAST_MAN_SOUND", "LastManSound")
  430. server_cmd(g_addStast, "ST_KNIFE_KILL", "KnifeKill")
  431. server_cmd(g_addStast, "ST_KNIFE_KILL_SOUND", "KnifeKillSound")
  432. server_cmd(g_addStast, "ST_HE_KILL", "GrenadeKill")
  433. server_cmd(g_addStast, "ST_HE_KILL_SOUND", "GrenadeKillSound")
  434. server_cmd(g_addStast, "ST_HE_SUICIDE", "GrenadeSuicide")
  435. server_cmd(g_addStast, "ST_HE_SUICIDE_SOUND", "GrenadeSuicideSound")
  436. server_cmd(g_addStast, "ST_HS_KILL", "HeadShotKill")
  437. server_cmd(g_addStast, "ST_HS_KILL_SOUND", "HeadShotKillSound")
  438. server_cmd(g_addStast, "ST_ROUND_CNT", "RoundCounter")
  439. server_cmd(g_addStast, "ST_ROUND_CNT_SOUND", "RoundCounterSound")
  440. server_cmd(g_addStast, "ST_KILL_STR", "KillingStreak")
  441. server_cmd(g_addStast, "ST_KILL_STR_SOUND", "KillingStreakSound")
  442. server_cmd(g_addStast, "ST_ENEMY_REM", "EnemyRemaining")
  443. server_cmd(g_addStast, "ST_DOUBLE_KILL", "DoubleKill")
  444. server_cmd(g_addStast, "ST_DOUBLE_KILL_SOUND", "DoubleKillSound")
  445. server_cmd(g_addStast, "ST_PLAYER_NAME", "PlayerName")
  446. server_cmd(g_addStast, "ST_FIRST_BLOOD_SOUND", "FirstBloodSound")
  447. }
  448.  
  449. public client_connect(id)
  450. {
  451. if( is_user_bot(id) )
  452. {
  453. g_msounds[id] = 0
  454. return;
  455. }
  456. new info[2]
  457. if( !get_user_info(id, _msound, info, charsmax(info)) || info[0] != '0' )
  458. {
  459. g_msounds[id] = 1
  460. }
  461. else
  462. {
  463. g_msounds[id] = 0
  464. }
  465. }
  466.  
  467. public client_putinserver(id)
  468. {
  469. g_multiKills[id] = {0, 0}
  470. g_streakKills[id] = {0, 0}
  471. g_connected[id] = true
  472. }
  473.  
  474. public client_disconnected(id)
  475. {
  476. g_connected[id] = false
  477. }
  478.  
  479. public client_death(killer, victim, wpnindex, hitplace, TK)
  480. {
  481. if (wpnindex == CSW_C4)
  482. return
  483.  
  484. new headshot = (hitplace == HIT_HEAD) ? 1 : 0
  485. new selfkill = (killer == victim) ? 1 : 0
  486.  
  487. new victim_alive = is_user_alive(victim) // happens on ClientKill
  488.  
  489. if (g_firstBlood)
  490. {
  491. g_firstBlood = 0
  492. if (FirstBloodSound)
  493. play_sound(0, g_firstbloodsound)
  494. }
  495.  
  496. if ((KillingStreak || KillingStreakSound) && !TK)
  497. {
  498. g_streakKills[victim][1]++
  499. g_streakKills[victim][0] = 0
  500.  
  501. if (!selfkill)
  502. {
  503. g_streakKills[killer][0]++
  504. g_streakKills[killer][1] = 0
  505.  
  506. new a = g_streakKills[killer][0] - 3
  507.  
  508. if ((a > -1) && !(a % 2))
  509. {
  510. new name[MAX_NAME_LENGTH]
  511. get_user_name(killer, name, charsmax(name))
  512.  
  513. if ((a >>= 1) > 6)
  514. a = 6
  515.  
  516. if (KillingStreak)
  517. {
  518. set_hudmessage(0, 100, 255, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1)
  519. ShowSyncHudMsg(0, g_left_sync, g_KillingMsg[a], name)
  520. }
  521.  
  522. if (KillingStreakSound)
  523. {
  524. play_sound(0, g_Sounds[a])
  525. }
  526. }
  527. }
  528. }
  529.  
  530. if (MultiKill || MultiKillSound)
  531. {
  532. if (!selfkill && !TK && killer)
  533. {
  534. g_multiKills[killer][0]++
  535. g_multiKills[killer][1] += headshot
  536.  
  537. new param[2]
  538.  
  539. param[0] = killer
  540. param[1] = g_multiKills[killer][0]
  541. set_task(4.0 + float(param[1]), "checkKills", killer, param, sizeof(param))
  542. }
  543. }
  544.  
  545. new team = get_user_team(victim)
  546. if (EnemyRemaining && is_user_connected(victim))
  547. {
  548. if( TEAM_T <= team <= TEAM_CT )
  549. {
  550. new ppl[MAX_PLAYERS], pplnum, epplnum, a
  551. get_players(ppl, epplnum, "ae", team == TEAM_T ? "CT" : "TERRORIST")
  552. get_players(ppl, pplnum, "ae", team == TEAM_T ? "TERRORIST" : "CT")
  553. if( victim_alive )
  554. {
  555. for(a=0; a<pplnum; a++)
  556. {
  557. if( ppl[a] == victim )
  558. {
  559. ppl[a] = ppl[--pplnum]
  560. break
  561. }
  562. }
  563. }
  564.  
  565. if (pplnum && epplnum)
  566. {
  567. new message[128], team_name[32]
  568.  
  569. set_hudmessage(255, 255, 255, 0.02, 0.85, 2, 0.05, 0.1, 0.02, 3.0, -1)
  570.  
  571. /* This is a pretty stupid thing to translate, but whatever */
  572. new _teamname[32]
  573. if (team == TEAM_T)
  574. {
  575. formatex(_teamname, charsmax(_teamname), "TERRORIST%s", (epplnum == 1) ? "" : "S")
  576. } else {
  577. formatex(_teamname, charsmax(_teamname), "CT%s", (epplnum == 1) ? "" : "S")
  578. }
  579.  
  580. new id
  581. for (a = 0; a < pplnum; ++a)
  582. {
  583. id = ppl[a]
  584. formatex(team_name, charsmax(team_name), "%L", id, _teamname)
  585. formatex(message, charsmax(message), "%L", id, "REMAINING", epplnum, team_name)
  586. ShowSyncHudMsg(id, g_bottom_sync, "%s", message)
  587. }
  588. }
  589. }
  590. }
  591.  
  592. if (LastMan || LastManSound)
  593. {
  594. new cts[MAX_PLAYERS], ts[MAX_PLAYERS], ctsnum, tsnum, b
  595. get_players(cts, ctsnum, "ae", "CT")
  596. get_players(ts, tsnum, "ae", "TERRORIST")
  597.  
  598. if( victim_alive )
  599. {
  600. switch( team )
  601. {
  602. case TEAM_T:
  603. {
  604. for(b=0; b<tsnum; b++)
  605. {
  606. if( ts[b] == victim )
  607. {
  608. ts[b] = ts[--tsnum]
  609. break
  610. }
  611. }
  612. }
  613. case TEAM_CT:
  614. {
  615. for(b=0; b<ctsnum; b++)
  616. {
  617. if( cts[b] == victim )
  618. {
  619. cts[b] = cts[--ctsnum]
  620. break
  621. }
  622. }
  623. }
  624. }
  625. }
  626.  
  627. if (ctsnum == 1 && tsnum == 1)
  628. {
  629. if( LastMan )
  630. {
  631. new ctname[MAX_NAME_LENGTH], tname[MAX_NAME_LENGTH]
  632.  
  633. get_user_name(cts[0], ctname, charsmax(ctname))
  634. get_user_name(ts[0], tname, charsmax(tname))
  635.  
  636. set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
  637.  
  638. if( LastManHealth )
  639. {
  640. ShowSyncHudMsg(0, g_center1_sync, "%s (%d HP) vs. %s (%d HP)", ctname, get_user_health(cts[0]), tname, get_user_health(ts[0]))
  641. }
  642. else
  643. {
  644. ShowSyncHudMsg(0, g_center1_sync, "%s vs. %s", ctname, tname)
  645. }
  646. }
  647.  
  648. if( LastManSound )
  649. {
  650. play_sound(0, g_lastmansound_duel)
  651. }
  652. }
  653. else if (!g_LastAnnounce)
  654. {
  655. new oposite = 0, _team = 0
  656.  
  657. if (ctsnum == 1 && tsnum > 1)
  658. {
  659. g_LastAnnounce = cts[0]
  660. oposite = tsnum
  661. _team = 0
  662. }
  663. else if (tsnum == 1 && ctsnum > 1)
  664. {
  665. g_LastAnnounce = ts[0]
  666. oposite = ctsnum
  667. _team = 1
  668. }
  669.  
  670. if (g_LastAnnounce)
  671. {
  672. if( LastMan )
  673. {
  674. new name[MAX_NAME_LENGTH]
  675.  
  676. get_user_name(g_LastAnnounce, name, charsmax(name))
  677.  
  678. set_hudmessage(0, 255, 255, -1.0, 0.38, 0, 6.0, 6.0, 0.5, 0.15, -1)
  679.  
  680. if( LastManHealth )
  681. {
  682. ShowSyncHudMsg(0, g_center1_sync, "%s (%d HP) vs. %d %s%s: %L", name, get_user_health(g_LastAnnounce), oposite, g_teamsNames[_team], (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages[random_num(0, 3)])
  683. }
  684. else
  685. {
  686. ShowSyncHudMsg(0, g_center1_sync, "%s vs. %d %s%s: %L", name, oposite, g_teamsNames[_team], (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages[random_num(0, 3)])
  687. }
  688. }
  689.  
  690. if ( LastManSound && g_connected[g_LastAnnounce] )
  691. {
  692. play_sound(g_LastAnnounce, g_lastmansound_1vsothers)
  693. }
  694. }
  695. }
  696. }
  697.  
  698. if (wpnindex == CSW_KNIFE && (KnifeKill || KnifeKillSound))
  699. {
  700. if (KnifeKill)
  701. {
  702. new killer_name[MAX_NAME_LENGTH], victim_name[MAX_NAME_LENGTH]
  703.  
  704. get_user_name(killer, killer_name, charsmax(killer_name))
  705. get_user_name(victim, victim_name, charsmax(victim_name))
  706.  
  707. set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
  708. ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_KinfeMsg[random_num(0, 3)], killer_name, victim_name)
  709. }
  710.  
  711. if (KnifeKillSound)
  712. play_sound(0, g_knifekillsound)
  713. }
  714.  
  715. if (wpnindex == CSW_HEGRENADE)
  716. {
  717. new killer_name[MAX_NAME_LENGTH], victim_name[MAX_NAME_LENGTH]
  718. if( GrenadeKill || GrenadeSuicide )
  719. {
  720. get_user_name(killer, killer_name, charsmax(killer_name))
  721. get_user_name(victim, victim_name, charsmax(victim_name))
  722.  
  723. set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
  724. }
  725.  
  726. if (!selfkill)
  727. {
  728. if (GrenadeKill)
  729. ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_HeMessages[random_num(0, 3)], killer_name, victim_name)
  730. if (GrenadeKillSound)
  731. play_sound(0, g_grenadekillsound)
  732. }
  733. else
  734. {
  735. if (GrenadeSuicide)
  736. ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_SHeMessages[random_num(0, 3)], victim_name)
  737. if (GrenadeSuicideSound)
  738. play_sound(0, g_grenadesuicidesound)
  739. }
  740. }
  741.  
  742. if (headshot && (HeadShotKill || HeadShotKillSound))
  743. {
  744. if (HeadShotKill && wpnindex)
  745. {
  746. new killer_name[MAX_NAME_LENGTH], victim_name[MAX_NAME_LENGTH], weapon_name[32], message[256], players[MAX_PLAYERS], pnum, plr
  747.  
  748. xmod_get_wpnname(wpnindex, weapon_name, charsmax(weapon_name))
  749. get_user_name(killer, killer_name, charsmax(killer_name))
  750. get_user_name(victim, victim_name, charsmax(victim_name))
  751. get_players(players, pnum, "ch")
  752.  
  753. for (new i = 0; i < pnum; i++)
  754. {
  755. plr = players[i]
  756. formatex(message, charsmax(message), "%L", plr, g_HeadShots[random_num(0, 6)])
  757.  
  758. replace(message, charsmax(message), "$vn", victim_name)
  759. replace(message, charsmax(message), "$wn", weapon_name)
  760. replace(message, charsmax(message), "$kn", killer_name)
  761.  
  762. set_hudmessage(100, 100, 255, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
  763. ShowSyncHudMsg(plr, g_announce_sync, "%s", message)
  764. }
  765. }
  766.  
  767. if (HeadShotKillSound)
  768. {
  769. play_sound(victim, g_hssound_victim)
  770. if( victim != killer )
  771. play_sound(killer, g_hssound_killer)
  772. }
  773. }
  774.  
  775. if ((DoubleKill || DoubleKillSound) && !selfkill)
  776. {
  777. new Float:nowtime = get_gametime()
  778.  
  779. if (g_doubleKill == nowtime && g_doubleKillId == killer)
  780. {
  781. if (DoubleKill)
  782. {
  783. new name[MAX_NAME_LENGTH]
  784.  
  785. get_user_name(killer, name, charsmax(name))
  786.  
  787. set_hudmessage(255, 0, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
  788. ShowSyncHudMsg(0, g_center1_sync, "%L", LANG_PLAYER, "DOUBLE_KILL", name)
  789. }
  790.  
  791. if (DoubleKillSound)
  792. play_sound(0, g_doublekillsound)
  793. }
  794.  
  795. g_doubleKill = nowtime
  796. g_doubleKillId = killer
  797. }
  798. }
  799.  
  800. public hideStatus(id)
  801. {
  802. if (PlayerName)
  803. {
  804. ClearSyncHud(id, g_status_sync)
  805. }
  806. }
  807.  
  808. public setTeam(id)
  809. g_friend[id] = read_data(2)
  810.  
  811. public showStatus(id)
  812. {
  813. if( PlayerName)
  814. {
  815. new name[MAX_NAME_LENGTH], pid = read_data(2)
  816.  
  817. get_user_name(pid, name, charsmax(name))
  818. new color1 = 0, color2 = 0
  819.  
  820. if (get_user_team(pid) == TEAM_T)
  821. color1 = 255
  822. else
  823. color2 = 255
  824.  
  825. if (g_friend[id] == 1) // friend
  826. {
  827. new wpnid = get_user_weapon(pid)
  828. new wpnname[32]
  829.  
  830. if (wpnid)
  831. xmod_get_wpnname(wpnid, wpnname, charsmax(wpnname))
  832.  
  833. set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
  834. ShowSyncHudMsg(id, g_status_sync, "%s -- %d HP / %d AP / %s", name, get_user_health(pid), get_user_armor(pid), wpnname)
  835. } else {
  836. set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
  837. ShowSyncHudMsg(id, g_status_sync, "%s", name)
  838. }
  839. }
  840. }
  841.  
  842. public Event_HLTV_New_Round()
  843. {
  844. g_c4timer_value = get_pcvar_num( g_pcvar_mp_c4timer )
  845. ++g_roundCount
  846. g_firstBlood = 1
  847. g_C4Timer = 0
  848.  
  849. if (RoundCounterSound)
  850. play_sound(0, g_roundcountersound)
  851.  
  852. if (RoundCounter)
  853. {
  854. set_task(0.2, "Delayed_New_Round", TASK_DELAYED_NEW_ROUND)
  855. }
  856. }
  857.  
  858. public Delayed_New_Round()
  859. {
  860. set_hudmessage(200, 0, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
  861. ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, "PREPARE_FIGHT", g_roundCount)
  862. }
  863.  
  864. public LogEvent_Round_Start()
  865. {
  866. if (KillingStreak)
  867. {
  868. new appl[MAX_PLAYERS], ppl, i
  869. get_players(appl, ppl, "ac")
  870.  
  871. for (new a = 0; a < ppl; ++a)
  872. {
  873. i = appl[a]
  874.  
  875. if (g_streakKills[i][0] >= 2)
  876. client_print(i, print_chat, "* %L", i, "KILLED_ROW", g_streakKills[i][0])
  877. else if (g_streakKills[i][1] >= 2)
  878. client_print(i, print_chat, "* %L", i, "DIED_ROUNDS", g_streakKills[i][1])
  879. }
  880. }
  881. }
  882.  
  883. public eRestart()
  884. {
  885. eEndRound()
  886. g_roundCount = 0
  887. g_firstBlood = 1
  888. }
  889.  
  890. public eEndRound()
  891. {
  892. g_C4Timer = -2
  893. g_LastOmg = 0.0
  894. remove_task(TASK_BOMB_TIMER)
  895. g_LastAnnounce = 0
  896. }
  897.  
  898. public checkKills(param[])
  899. {
  900. new id = param[0]
  901. new a = param[1]
  902.  
  903. if (a == g_multiKills[id][0])
  904. {
  905. a -= 3
  906.  
  907. if (a > -1)
  908. {
  909. if (a > 6)
  910. {
  911. a = 6
  912. }
  913.  
  914. if (MultiKill)
  915. {
  916. new name[MAX_NAME_LENGTH]
  917.  
  918. get_user_name(id, name, charsmax(name))
  919. set_hudmessage(255, 0, 100, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1)
  920.  
  921. ShowSyncHudMsg(0, g_left_sync, g_MultiKillMsg[a], name, LANG_PLAYER, "WITH", g_multiKills[id][0], LANG_PLAYER, "KILLS", g_multiKills[id][1], LANG_PLAYER, "HS")
  922. }
  923.  
  924. if (MultiKillSound)
  925. {
  926. play_sound(0, g_Sounds[a])
  927. }
  928. }
  929. g_multiKills[id] = {0, 0}
  930. }
  931. }
  932.  
  933. public chickenKill()
  934. {
  935. if (ItalyBonusKill)
  936. announceEvent(0, "KILLED_CHICKEN")
  937. }
  938.  
  939. public radioKill()
  940. {
  941. if (ItalyBonusKill)
  942. announceEvent(0, "BLEW_RADIO")
  943. }
  944.  
  945. announceEvent(id, message[])
  946. {
  947. new name[MAX_NAME_LENGTH]
  948.  
  949. get_user_name(id, name, charsmax(name))
  950. set_hudmessage(255, 100, 50, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
  951. ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, message, name)
  952. }
  953.  
  954. public eBombPickUp(id)
  955. {
  956. if (BombPickUp)
  957. announceEvent(id, "PICKED_BOMB")
  958. }
  959.  
  960. public eBombDrop()
  961. {
  962. if (BombDrop)
  963. announceEvent(g_Planter, "DROPPED_BOMB")
  964. }
  965.  
  966. public eGotBomb(id)
  967. {
  968. g_Planter = id
  969.  
  970. if (BombReached && read_data(1) == 2 && g_LastOmg < get_gametime())
  971. {
  972. g_LastOmg = get_gametime() + 15.0
  973. announceEvent(g_Planter, "REACHED_TARGET")
  974. }
  975. }
  976.  
  977. public bombTimer()
  978. {
  979. if (--g_C4Timer > 0)
  980. {
  981. if( BombCountHUD )
  982. {
  983. new r, g
  984. if( g_C4Timer < 10 )
  985. {
  986. r = 255, g = 0
  987. }
  988. else
  989. {
  990. r = (((max(g_c4timer_value - g_C4Timer - 10,0)) * 255000) / (g_c4timer_value - 10)) / 1000
  991. g = 255 - r
  992. }
  993.  
  994. set_hudmessage(r, g, 0, -1.0, 0.75, g_C4Timer <= 10 ? 1 : 0, 0.01, 1.1, 0.001, 0.001, .channel = -1)
  995. show_hudmessage(0, "C4: %ds", g_C4Timer)
  996. }
  997. if (BombCountVoice)
  998. {
  999. if (g_C4Timer == 30 || g_C4Timer == 20)
  1000. {
  1001. new temp[64]
  1002.  
  1003. num_to_word(g_C4Timer, temp, charsmax(temp))
  1004. format(temp, charsmax(temp), "^"vox/%s seconds until explosion^"", temp)
  1005. play_sound(0, temp)
  1006. }
  1007. else if (g_C4Timer < 11)
  1008. {
  1009. new temp[64]
  1010.  
  1011. num_to_word(g_C4Timer, temp, charsmax(temp))
  1012. format(temp, charsmax(temp), "^"vox/%s^"", temp)
  1013. play_sound(0, temp)
  1014. }
  1015. }
  1016. if (BombCountDef && g_Defusing && is_user_alive(g_Defusing))
  1017. client_print(g_Defusing, print_center, "%d", g_C4Timer)
  1018. }
  1019. else
  1020. remove_task(TASK_BOMB_TIMER)
  1021. }
  1022.  
  1023. public eStopDefuse(id)
  1024. {
  1025. if( id == g_Defusing )
  1026. {
  1027. g_Defusing = 0
  1028. }
  1029. }
  1030.  
  1031. public bomb_planted(planter)
  1032. {
  1033. g_Defusing = 0
  1034.  
  1035. if (BombPlanted)
  1036. announceEvent(planter, "SET_UP_BOMB")
  1037.  
  1038. if (BombPlantedSound)
  1039. play_sound(0, g_bombplantedsound)
  1040.  
  1041. g_C4Timer = g_c4timer_value + 1
  1042. bombTimer()
  1043. set_task(1.0, "bombTimer", TASK_BOMB_TIMER, "", 0, "b")
  1044. }
  1045.  
  1046. public bomb_planting(planter)
  1047. {
  1048. if (BombPlanting)
  1049. announceEvent(planter, "PLANT_BOMB")
  1050. }
  1051.  
  1052. public bomb_defusing(defuser)
  1053. {
  1054. if (BombDefusing)
  1055. announceEvent(defuser, "DEFUSING_BOMB")
  1056.  
  1057. g_Defusing = defuser
  1058. }
  1059.  
  1060. public bomb_defused(defuser)
  1061. {
  1062. if (BombDefused)
  1063. announceEvent(defuser, "DEFUSED_BOMB")
  1064. if (BombDefusedSound)
  1065. play_sound(0, g_bombdefusedsound)
  1066. }
  1067.  
  1068. public bomb_explode(planter, defuser)
  1069. {
  1070. if( defuser )
  1071. {
  1072. if (BombFailed)
  1073. announceEvent(defuser, "FAILED_DEFU")
  1074. if (BombFailedSound)
  1075. play_sound(0, g_bombfailedsound)
  1076. }
  1077. }
  1078.  
  1079. play_sound(id, sound[])
  1080. {
  1081. if( id )
  1082. {
  1083. if( g_msounds[id] )
  1084. {
  1085. client_cmd(id, "spk %s", sound)
  1086. }
  1087. }
  1088. else
  1089. {
  1090. new players[MAX_PLAYERS], pnum, id
  1091. get_players(players, pnum, "ch")
  1092.  
  1093. for(--pnum; pnum>=0; pnum--)
  1094. {
  1095. id = players[pnum]
  1096. if ( g_connected[id] && g_msounds[id] )
  1097. client_cmd(id, "spk %s", sound)
  1098. }
  1099. }
  1100. }
  1101.  
  1102. public cmdSwitchSounds( id )
  1103. {
  1104. g_msounds[id] = !g_msounds[id]
  1105. client_print(id, print_chat, "MSounds %L", id, g_msounds[id] ? "ENABLED" : "DISABLED")
  1106. set_user_info(id, _msound, g_msounds[id] ? "1" : "0") // will this save setting for next map is player has cl_filterstuffcmd 0 ???
  1107. client_cmd(id, "setinfo %s %s", _msound, g_msounds[id] ? "1" : "0")
  1108. }
  1109.  

_________________
Nem szégyen megköszönni :)

'The dictator is coming' :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ultimate hang javitás
HozzászólásElküldve: 2015.10.09. 11:35 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
A hiba amit mondtál az javítva.
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <csx>
  4.  
  5. #define MAX_PLAYERS 32
  6.  
  7. public MultiKill
  8. public MultiKillSound
  9. public BombPlanting
  10. public BombDefusing
  11. public BombPlanted
  12. public BombDefused
  13. public BombFailed
  14. public BombPickUp
  15. public BombDrop
  16. public BombCountVoice
  17. public BombCountDef
  18. public BombReached
  19. public ItalyBonusKill
  20. public EnemyRemaining
  21. public LastMan
  22. public LastManHealth
  23. public KnifeKill
  24. public KnifeKillSound
  25. public GrenadeKill
  26. public GrenadeSuicide
  27. public HeadShotKill
  28. public HeadShotKillSound
  29. public RoundCounterSound
  30. public RoundCounter
  31. public KillingStreak
  32. public KillingStreakSound
  33. public DoubleKill
  34. public DoubleKillSound
  35. public PlayerName
  36. public FirstBloodSound
  37.  
  38. public BombPlantedSound
  39. public BombDefusedSound
  40. public BombFailedSound
  41. public BombCountHUD
  42. public LastManSound
  43. public GrenadeKillSound
  44. public GrenadeSuicideSound
  45.  
  46. const SOUNDFILE_PATH_MAXLEN = 64
  47. const SOUND_SHORTPATH_MAXLEN = SOUNDFILE_PATH_MAXLEN - 10 // 64 (sound/ [ 54 ] .wav) critical value for fast dl
  48.  
  49. new g_streakKills[MAX_PLAYERS + 1][2]
  50. new g_multiKills[MAX_PLAYERS + 1][2]
  51. new g_C4Timer
  52. new g_Defusing
  53. new g_Planter
  54. new Float:g_LastOmg
  55. new g_LastAnnounce
  56. new g_roundCount
  57. new Float:g_doubleKill
  58. new g_doubleKillId
  59. new g_friend[MAX_PLAYERS + 1]
  60. new g_firstBlood
  61. new g_center1_sync
  62. new g_announce_sync
  63. new g_status_sync
  64. new g_left_sync
  65. new g_bottom_sync
  66. new g_he_sync
  67.  
  68. new g_pcvar_mp_c4timer, g_c4timer_value
  69.  
  70. const TASK_BOMB_TIMER = 8038
  71. const TASK_DELAYED_NEW_ROUND = 98038
  72.  
  73. const TEAM_T = 1
  74. const TEAM_CT = 2
  75.  
  76. new g_connected[MAX_PLAYERS + 1]
  77. new g_msounds[MAX_PLAYERS + 1]
  78. new const _msound[] = "_msound"
  79.  
  80. new g_MultiKillMsg[7][] =
  81. {
  82. "Multi-Kill! %s^n%L %d %L (%d %L)",
  83. "Ultra-Kill!!! %s^n%L %d %L (%d %L)",
  84. "%s IS ON A KILLING SPREE!!!^n%L %d %L (%d %L)",
  85. "RAMPAGE!!! %s^n%L %d %L (%d hs)",
  86. "%s IS UNSTOPPABLE!!!^n%L %d %L (%d %L)",
  87. "%s IS A MONSTER!^n%L %d %L (%d %L)",
  88. "%s IS GODLIKE!!!!^n%L %d %L (%d %L)"
  89. }
  90.  
  91. new g_Sounds[7][SOUND_SHORTPATH_MAXLEN] =
  92. {
  93. "misc/multikill",
  94. "misc/ultrakill",
  95. "misc/killingspree",
  96. "misc/rampage",
  97. "misc/unstoppable",
  98. "misc/monsterkill",
  99. "misc/godlike"
  100. }
  101.  
  102. new g_firstbloodsound[SOUND_SHORTPATH_MAXLEN] = "misc/firstblood"
  103. new g_lastmansound_1vsothers[SOUND_SHORTPATH_MAXLEN] = "misc/oneandonly"
  104. new g_lastmansound_duel[SOUND_SHORTPATH_MAXLEN] = "misc/maytheforce"
  105. new g_hssound_killer[SOUND_SHORTPATH_MAXLEN] = "misc/headshot"
  106. new g_hssound_victim[SOUND_SHORTPATH_MAXLEN] = "misc/headshot"
  107. new g_knifekillsound[SOUND_SHORTPATH_MAXLEN] = "misc/humiliation"
  108. new g_doublekillsound[SOUND_SHORTPATH_MAXLEN] = "misc/doublekill"
  109. new g_roundcountersound[SOUND_SHORTPATH_MAXLEN] = "misc/prepare"
  110. new g_grenadekillsound[SOUND_SHORTPATH_MAXLEN] = "djeyl/grenade"
  111. new g_grenadesuicidesound[SOUND_SHORTPATH_MAXLEN] = "djeyl/witch"
  112. new g_bombplantedsound[SOUND_SHORTPATH_MAXLEN] = "djeyl/c4powa"
  113. new g_bombdefusedsound[SOUND_SHORTPATH_MAXLEN] = "djeyl/laugh"
  114. new g_bombfailedsound[SOUND_SHORTPATH_MAXLEN] = "djeyl/witch"
  115.  
  116. new g_KillingMsg[7][] =
  117. {
  118. "%s: Multi-Kill!",
  119. "%s: Ultra-Kill!!!",
  120. "%s IS ON A KILLING SPREE!!!",
  121. "%s: RAMPAGE!!!",
  122. "%s IS UNSTOPPABLE!!!",
  123. "%s IS A MONSTER!",
  124. "%s IS GODLIKE!!!"
  125. }
  126.  
  127. new g_KinfeMsg[4][] =
  128. {
  129. "KNIFE_MSG_1",
  130. "KNIFE_MSG_2",
  131. "KNIFE_MSG_3",
  132. "KNIFE_MSG_4"
  133. }
  134.  
  135. new g_LastMessages[4][] =
  136. {
  137. "LAST_MSG_1",
  138. "LAST_MSG_2",
  139. "LAST_MSG_3",
  140. "LAST_MSG_4"
  141. }
  142.  
  143. new g_HeMessages[4][] =
  144. {
  145. "HE_MSG_1",
  146. "HE_MSG_2",
  147. "HE_MSG_3",
  148. "HE_MSG_4"
  149. }
  150.  
  151. new g_SHeMessages[4][] =
  152. {
  153. "SHE_MSG_1",
  154. "SHE_MSG_2",
  155. "SHE_MSG_3",
  156. "SHE_MSG_4"
  157. }
  158.  
  159. new g_HeadShots[7][] =
  160. {
  161. "HS_MSG_1",
  162. "HS_MSG_2",
  163. "HS_MSG_3",
  164. "HS_MSG_4",
  165. "HS_MSG_5",
  166. "HS_MSG_6",
  167. "HS_MSG_7"
  168. }
  169.  
  170. new g_teamsNames[4][] =
  171. {
  172. "TERRORIST",
  173. "CT",
  174. "TERRORISTS",
  175. "CTS"
  176. }
  177.  
  178. public plugin_init()
  179. {
  180. register_plugin("CS Misc. Stats", AMXX_VERSION_STR, "AMXX Dev Team")
  181. register_dictionary("miscstats.txt")
  182. register_dictionary("statsx.txt")
  183. register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w")
  184. register_event("SendAudio", "eEndRound", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw")
  185.  
  186. register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0") // cache c4 timer value
  187. register_logevent("LogEvent_Round_Start", 2, "1=Round_Start") // replaces ugly register_event("RoundTime", "eNewRound", "bc")
  188. register_event("StatusValue", "setTeam", "bef", "1=1")
  189. register_event("StatusValue", "showStatus", "bef", "1=2", "2!0")
  190. register_event("StatusValue", "hideStatus", "bef", "1=1", "2=0")
  191.  
  192. new mapname[32], n = get_mapname(mapname, charsmax(mapname))
  193. if ((get_map_objectives() & MapObjective_Bomb) || (equali(mapname, "de_", 3) || equali(mapname, "csde_", 5)))
  194. {
  195. register_event("StatusIcon", "eGotBomb", "be", "1=1", "1=2", "2=c4")
  196. register_event("TextMsg", "eBombPickUp", "bc", "2&#Got_bomb")
  197. register_event("TextMsg", "eBombDrop", "bc", "2&#Game_bomb_d")
  198. register_event("BarTime", "eStopDefuse", "b", "1=0")
  199. }
  200. else if (equali(mapname, "cs_italy") || equali(mapname, "cs_italy_cz"))
  201. {
  202. register_event("23", "chickenKill", "a", "1=108", "15=4")
  203. register_event("23", "radioKill", "a", "1=108", n == 8 ? "15=2" : "15=8") // cz radio is wood
  204.  
  205. }
  206.  
  207. g_center1_sync = CreateHudSyncObj()
  208. g_announce_sync = CreateHudSyncObj()
  209. g_status_sync = CreateHudSyncObj()
  210. g_left_sync = CreateHudSyncObj()
  211. g_bottom_sync = CreateHudSyncObj()
  212. g_he_sync = CreateHudSyncObj()
  213.  
  214. g_pcvar_mp_c4timer = get_cvar_pointer("mp_c4timer")
  215. g_c4timer_value = get_pcvar_num( g_pcvar_mp_c4timer )
  216.  
  217. register_clcmd("say /msounds", "cmdSwitchSounds", _, " - switches sounds on and off")
  218. register_clcmd("say_team /msounds", "cmdSwitchSounds", _, " - switches sounds on and off")
  219. }
  220.  
  221. public plugin_precache()
  222. {
  223. // parse sounds and precache them
  224. new szConfigsDir[64], szCfgFile[64]
  225. get_configsdir(szConfigsDir, charsmax(szConfigsDir))
  226. formatex(szCfgFile, charsmax(szCfgFile), "%s/stats.ini", szConfigsDir)
  227.  
  228. new buffer[256]
  229.  
  230. // initialize xvars so we can know later if sounds have to be precached or not.
  231. // xvars gonna be initialized again in statscfg.amxx plugin_init, this is ok.
  232. new fp = fopen(szCfgFile, "rt")
  233. if( fp )
  234. {
  235. new xvarname[32], xvarid
  236. while( !feof(fp) )
  237. {
  238. fgets(fp, buffer, charsmax(buffer))
  239. trim(buffer)
  240. if( buffer[0] != ';' )
  241. {
  242. parse(buffer, xvarname, charsmax(xvarname))
  243. if ((xvarid = get_xvar_id(xvarname)) != -1)
  244. {
  245. set_xvar_num(xvarid, 1)
  246. }
  247. }
  248. }
  249. fclose(fp)
  250. }
  251.  
  252. formatex(szCfgFile, charsmax(szCfgFile), "%s/miscstats.ini", szConfigsDir)
  253. fp = fopen(szCfgFile, "rt")
  254. if( fp )
  255. {
  256. new szSoundKey[32], szSoundFile[SOUNDFILE_PATH_MAXLEN]
  257. while( !feof(fp) )
  258. {
  259. fgets(fp, buffer, charsmax(buffer))
  260. trim(buffer)
  261. if( buffer[0] != ';' && parse(buffer, szSoundKey, charsmax(szSoundKey), szSoundFile, charsmax(szSoundFile)) == 2 )
  262. {
  263. if( equal(szSoundKey, "FirstBloodSound") )
  264. {
  265. copy_sound(g_firstbloodsound, charsmax(g_firstbloodsound), szSoundFile)
  266. if( FirstBloodSound ) precache_sound_custom(g_firstbloodsound)
  267. }
  268. else if( equal(szSoundKey, "LastManVsOthersSound") )
  269. {
  270. copy_sound(g_lastmansound_1vsothers, charsmax(g_lastmansound_1vsothers), szSoundFile)
  271. if( LastManSound ) precache_sound_custom(g_lastmansound_1vsothers)
  272. }
  273. else if( equal(szSoundKey, "LastManDuelSound") )
  274. {
  275. copy_sound(g_lastmansound_duel, charsmax(g_lastmansound_duel), szSoundFile)
  276. if( LastManSound ) precache_sound_custom(g_lastmansound_duel)
  277. }
  278. else if( equal(szSoundKey, "HeadShotKillSoundKiller") )
  279. {
  280. copy_sound(g_hssound_killer, charsmax(g_hssound_killer), szSoundFile)
  281. if( HeadShotKillSound ) precache_sound_custom(g_hssound_killer)
  282. }
  283. else if( equal(szSoundKey, "HeadShotKillSoundVictim") )
  284. {
  285. copy_sound(g_hssound_victim, charsmax(g_hssound_victim), szSoundFile)
  286. if( HeadShotKillSound ) precache_sound_custom(g_hssound_victim)
  287. }
  288. else if( equal(szSoundKey, "KnifeKillSound") )
  289. {
  290. copy_sound(g_knifekillsound, charsmax(g_knifekillsound), szSoundFile)
  291. if( KnifeKillSound ) precache_sound_custom(g_knifekillsound)
  292. }
  293. else if( equal(szSoundKey, "DoubleKillSound") )
  294. {
  295. copy_sound(g_doublekillsound, charsmax(g_doublekillsound), szSoundFile)
  296. if( DoubleKillSound ) precache_sound_custom(g_doublekillsound)
  297. }
  298. else if( equal(szSoundKey, "RoundCounterSound") )
  299. {
  300. copy_sound(g_roundcountersound, charsmax(g_roundcountersound), szSoundFile)
  301. if( RoundCounterSound ) precache_sound_custom(g_roundcountersound)
  302. }
  303. else if( equal(szSoundKey, "GrenadeKillSound") )
  304. {
  305. copy_sound(g_grenadekillsound, charsmax(g_grenadekillsound), szSoundFile)
  306. if( GrenadeKillSound ) precache_sound_custom(g_grenadekillsound)
  307. }
  308. else if( equal(szSoundKey, "GrenadeSuicideSound") )
  309. {
  310. copy_sound(g_grenadesuicidesound, charsmax(g_grenadesuicidesound), szSoundFile)
  311. if( GrenadeSuicideSound ) precache_sound_custom(g_grenadesuicidesound)
  312. }
  313. else if( equal(szSoundKey, "BombPlantedSound") )
  314. {
  315. copy_sound(g_bombplantedsound, charsmax(g_bombplantedsound), szSoundFile)
  316. if( BombPlantedSound ) precache_sound_custom(g_bombplantedsound)
  317. }
  318. else if( equal(szSoundKey, "BombDefusedSound") )
  319. {
  320. copy_sound(g_bombdefusedsound, charsmax(g_bombdefusedsound), szSoundFile)
  321. if( BombDefusedSound ) precache_sound_custom(g_bombdefusedsound)
  322. }
  323. else if( equal(szSoundKey, "BombFailedSound") )
  324. {
  325. copy_sound(g_bombfailedsound, charsmax(g_bombfailedsound), szSoundFile)
  326. if( BombFailedSound ) precache_sound_custom(g_bombfailedsound)
  327. }
  328. else
  329. {
  330. // KillingStreakSound and MultiKillSound
  331. if( equal(szSoundKey, "MultiKillSound") )
  332. {
  333. copy_sound(g_Sounds[0], charsmax(g_Sounds[]), szSoundFile)
  334. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[0])
  335. }
  336. else if( equal(szSoundKey, "UltraKillSound") )
  337. {
  338. copy_sound(g_Sounds[1], charsmax(g_Sounds[]), szSoundFile)
  339. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[1])
  340. }
  341. else if( equal(szSoundKey, "KillingSpreeSound") )
  342. {
  343. copy_sound(g_Sounds[2], charsmax(g_Sounds[]), szSoundFile)
  344. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[2])
  345. }
  346. else if( equal(szSoundKey, "RampageSound") )
  347. {
  348. copy_sound(g_Sounds[3], charsmax(g_Sounds[]), szSoundFile)
  349. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[3])
  350. }
  351. else if( equal(szSoundKey, "UnstopableSound") )
  352. {
  353. copy_sound(g_Sounds[4], charsmax(g_Sounds[]), szSoundFile)
  354. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[4])
  355. }
  356. else if( equal(szSoundKey, "MonsterKillSound") )
  357. {
  358. copy_sound(g_Sounds[5], charsmax(g_Sounds[]), szSoundFile)
  359. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[5])
  360. }
  361. else if( equal(szSoundKey, "GodLike") )
  362. {
  363. copy_sound(g_Sounds[6], charsmax(g_Sounds[]), szSoundFile)
  364. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[6])
  365. }
  366. }
  367. }
  368. }
  369. fclose(fp)
  370. }
  371. }
  372.  
  373. precache_sound_custom( const sound[] )
  374. {
  375. new fullpathsound[SOUNDFILE_PATH_MAXLEN]
  376. formatex(fullpathsound, charsmax(fullpathsound), "sound/%s.wav", sound)
  377. if( file_exists(fullpathsound) )
  378. {
  379. precache_sound(fullpathsound[6])
  380. }
  381. else
  382. {
  383. log_amx("Could not locate <%s> file", fullpathsound)
  384. }
  385. }
  386.  
  387. copy_sound(dest[], len, src[])
  388. {
  389. new n = copy(dest, len, src[ 6 * equali(src, "sound/", 6) ])
  390. if( n > 4 && equal(dest[n-4], ".wav") )
  391. {
  392. dest[n-4] = EOS
  393. }
  394. }
  395.  
  396. public plugin_cfg()
  397. {
  398. new g_addStast[] = "amx_statscfg add ^"%s^" %s"
  399.  
  400. server_cmd(g_addStast, "ST_MULTI_KILL", "MultiKill")
  401. server_cmd(g_addStast, "ST_MULTI_KILL_SOUND", "MultiKillSound")
  402. server_cmd(g_addStast, "ST_BOMB_PLANTING", "BombPlanting")
  403. server_cmd(g_addStast, "ST_BOMB_DEFUSING", "BombDefusing")
  404. server_cmd(g_addStast, "ST_BOMB_PLANTED", "BombPlanted")
  405. server_cmd(g_addStast, "ST_BOMB_PLANTED_SOUND", "BombPlantedSound")
  406. server_cmd(g_addStast, "ST_BOMB_DEF_SUCC", "BombDefused")
  407. server_cmd(g_addStast, "ST_BOMB_DEF_SUCC_SOUND", "BombDefusedSound")
  408. server_cmd(g_addStast, "ST_BOMB_DEF_FAIL", "BombFailed")
  409. server_cmd(g_addStast, "ST_BOMB_DEF_FAIL_SOUND", "BombFailedSound")
  410. server_cmd(g_addStast, "ST_BOMB_PICKUP", "BombPickUp")
  411. server_cmd(g_addStast, "ST_BOMB_DROP", "BombDrop")
  412. server_cmd(g_addStast, "ST_BOMB_CD_HUD", "BombCountHUD")
  413. server_cmd(g_addStast, "ST_BOMB_CD_VOICE", "BombCountVoice")
  414. server_cmd(g_addStast, "ST_BOMB_CD_DEF", "BombCountDef")
  415. server_cmd(g_addStast, "ST_BOMB_SITE", "BombReached")
  416. server_cmd(g_addStast, "ST_ITALY_BONUS", "ItalyBonusKill")
  417. server_cmd(g_addStast, "ST_LAST_MAN", "LastMan")
  418. server_cmd(g_addStast, "ST_LAST_MAN_HEALTH", "LastManHealth")
  419. server_cmd(g_addStast, "ST_LAST_MAN_SOUND", "LastManSound")
  420. server_cmd(g_addStast, "ST_KNIFE_KILL", "KnifeKill")
  421. server_cmd(g_addStast, "ST_KNIFE_KILL_SOUND", "KnifeKillSound")
  422. server_cmd(g_addStast, "ST_HE_KILL", "GrenadeKill")
  423. server_cmd(g_addStast, "ST_HE_KILL_SOUND", "GrenadeKillSound")
  424. server_cmd(g_addStast, "ST_HE_SUICIDE", "GrenadeSuicide")
  425. server_cmd(g_addStast, "ST_HE_SUICIDE_SOUND", "GrenadeSuicideSound")
  426. server_cmd(g_addStast, "ST_HS_KILL", "HeadShotKill")
  427. server_cmd(g_addStast, "ST_HS_KILL_SOUND", "HeadShotKillSound")
  428. server_cmd(g_addStast, "ST_ROUND_CNT", "RoundCounter")
  429. server_cmd(g_addStast, "ST_ROUND_CNT_SOUND", "RoundCounterSound")
  430. server_cmd(g_addStast, "ST_KILL_STR", "KillingStreak")
  431. server_cmd(g_addStast, "ST_KILL_STR_SOUND", "KillingStreakSound")
  432. server_cmd(g_addStast, "ST_ENEMY_REM", "EnemyRemaining")
  433. server_cmd(g_addStast, "ST_DOUBLE_KILL", "DoubleKill")
  434. server_cmd(g_addStast, "ST_DOUBLE_KILL_SOUND", "DoubleKillSound")
  435. server_cmd(g_addStast, "ST_PLAYER_NAME", "PlayerName")
  436. server_cmd(g_addStast, "ST_FIRST_BLOOD_SOUND", "FirstBloodSound")
  437. }
  438.  
  439. public client_connect(id)
  440. {
  441. if( is_user_bot(id) )
  442. {
  443. g_msounds[id] = 0
  444. return;
  445. }
  446. new info[2]
  447. if( !get_user_info(id, _msound, info, charsmax(info)) || info[0] != '0' )
  448. {
  449. g_msounds[id] = 1
  450. }
  451. else
  452. {
  453. g_msounds[id] = 0
  454. }
  455. }
  456.  
  457. public client_putinserver(id)
  458. {
  459. g_multiKills[id] = {0, 0}
  460. g_streakKills[id] = {0, 0}
  461. g_connected[id] = true
  462. }
  463.  
  464. public client_disconnected(id)
  465. {
  466. g_connected[id] = false
  467. }
  468.  
  469. public client_death(killer, victim, wpnindex, hitplace, TK)
  470. {
  471. if (wpnindex == CSW_C4)
  472. return
  473.  
  474. new headshot = (hitplace == HIT_HEAD) ? 1 : 0
  475. new selfkill = (killer == victim) ? 1 : 0
  476.  
  477. new victim_alive = is_user_alive(victim) // happens on ClientKill
  478.  
  479. if (g_firstBlood)
  480. {
  481. g_firstBlood = 0
  482. if (FirstBloodSound)
  483. play_sound(0, g_firstbloodsound)
  484. }
  485.  
  486. if ((KillingStreak || KillingStreakSound) && !TK)
  487. {
  488. g_streakKills[victim][1]++
  489. g_streakKills[victim][0] = 0
  490.  
  491. if (!selfkill)
  492. {
  493. g_streakKills[killer][0]++
  494. g_streakKills[killer][1] = 0
  495.  
  496. new a = g_streakKills[killer][0] - 3
  497.  
  498. if ((a > -1) && !(a % 2))
  499. {
  500. new name[MAX_NAME_LENGTH]
  501. get_user_name(killer, name, charsmax(name))
  502.  
  503. if ((a >>= 1) > 6)
  504. a = 6
  505.  
  506. if (KillingStreak)
  507. {
  508. set_hudmessage(0, 100, 255, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1)
  509. ShowSyncHudMsg(0, g_left_sync, g_KillingMsg[a], name)
  510. }
  511.  
  512. if (KillingStreakSound)
  513. {
  514. play_sound(0, g_Sounds[a])
  515. }
  516. }
  517. }
  518. }
  519.  
  520. if (MultiKill || MultiKillSound)
  521. {
  522. if (!selfkill && !TK && killer)
  523. {
  524. g_multiKills[killer][0]++
  525. g_multiKills[killer][1] += headshot
  526.  
  527. new param[2]
  528.  
  529. param[0] = killer
  530. param[1] = g_multiKills[killer][0]
  531. set_task(4.0 + float(param[1]), "checkKills", killer, param, sizeof(param))
  532. }
  533. }
  534.  
  535. new team = get_user_team(victim)
  536. if (EnemyRemaining && is_user_connected(victim))
  537. {
  538. if( TEAM_T <= team <= TEAM_CT )
  539. {
  540. new ppl[MAX_PLAYERS], pplnum, epplnum, a
  541. get_players(ppl, epplnum, "ae", team == TEAM_T ? "CT" : "TERRORIST")
  542. get_players(ppl, pplnum, "ae", team == TEAM_T ? "TERRORIST" : "CT")
  543. if( victim_alive )
  544. {
  545. for(a=0; a<pplnum; a++)
  546. {
  547. if( ppl[a] == victim )
  548. {
  549. ppl[a] = ppl[--pplnum]
  550. break
  551. }
  552. }
  553. }
  554.  
  555. if (pplnum && epplnum)
  556. {
  557. new message[128], team_name[32]
  558.  
  559. set_hudmessage(255, 255, 255, 0.02, 0.85, 2, 0.05, 0.1, 0.02, 3.0, -1)
  560.  
  561. /* This is a pretty stupid thing to translate, but whatever */
  562. new _teamname[32]
  563. if (team == TEAM_T)
  564. {
  565. formatex(_teamname, charsmax(_teamname), "TERRORIST%s", (epplnum == 1) ? "" : "S")
  566. } else {
  567. formatex(_teamname, charsmax(_teamname), "CT%s", (epplnum == 1) ? "" : "S")
  568. }
  569.  
  570. new id
  571. for (a = 0; a < pplnum; ++a)
  572. {
  573. id = ppl[a]
  574. formatex(team_name, charsmax(team_name), "%L", id, _teamname)
  575. formatex(message, charsmax(message), "%L", id, "REMAINING", epplnum, team_name)
  576. ShowSyncHudMsg(id, g_bottom_sync, "%s", message)
  577. }
  578. }
  579. }
  580. }
  581.  
  582. if (LastMan || LastManSound)
  583. {
  584. new cts[MAX_PLAYERS], ts[MAX_PLAYERS], ctsnum, tsnum, b
  585. get_players(cts, ctsnum, "ae", "CT")
  586. get_players(ts, tsnum, "ae", "TERRORIST")
  587.  
  588. if( victim_alive )
  589. {
  590. switch( team )
  591. {
  592. case TEAM_T:
  593. {
  594. for(b=0; b<tsnum; b++)
  595. {
  596. if( ts[b] == victim )
  597. {
  598. ts[b] = ts[--tsnum]
  599. break
  600. }
  601. }
  602. }
  603. case TEAM_CT:
  604. {
  605. for(b=0; b<ctsnum; b++)
  606. {
  607. if( cts[b] == victim )
  608. {
  609. cts[b] = cts[--ctsnum]
  610. break
  611. }
  612. }
  613. }
  614. }
  615. }
  616.  
  617. if (ctsnum == 1 && tsnum == 1)
  618. {
  619. if( LastMan )
  620. {
  621. new ctname[MAX_NAME_LENGTH], tname[MAX_NAME_LENGTH]
  622.  
  623. get_user_name(cts[0], ctname, charsmax(ctname))
  624. get_user_name(ts[0], tname, charsmax(tname))
  625.  
  626. set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
  627.  
  628. if( LastManHealth )
  629. {
  630. ShowSyncHudMsg(0, g_center1_sync, "%s (%d HP) vs. %s (%d HP)", ctname, get_user_health(cts[0]), tname, get_user_health(ts[0]))
  631. }
  632. else
  633. {
  634. ShowSyncHudMsg(0, g_center1_sync, "%s vs. %s", ctname, tname)
  635. }
  636. }
  637.  
  638. if( LastManSound )
  639. {
  640. play_sound(0, g_lastmansound_duel)
  641. }
  642. }
  643. else if (!g_LastAnnounce)
  644. {
  645. new oposite = 0, _team = 0
  646.  
  647. if (ctsnum == 1 && tsnum > 1)
  648. {
  649. g_LastAnnounce = cts[0]
  650. oposite = tsnum
  651. _team = 0
  652. }
  653. else if (tsnum == 1 && ctsnum > 1)
  654. {
  655. g_LastAnnounce = ts[0]
  656. oposite = ctsnum
  657. _team = 1
  658. }
  659.  
  660. if (g_LastAnnounce)
  661. {
  662. if( LastMan )
  663. {
  664. new name[MAX_NAME_LENGTH]
  665.  
  666. get_user_name(g_LastAnnounce, name, charsmax(name))
  667.  
  668. set_hudmessage(0, 255, 255, -1.0, 0.38, 0, 6.0, 6.0, 0.5, 0.15, -1)
  669.  
  670. if( LastManHealth )
  671. {
  672. ShowSyncHudMsg(0, g_center1_sync, "%s (%d HP) vs. %d %s%s: %L", name, get_user_health(g_LastAnnounce), oposite, g_teamsNames[_team], (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages[random_num(0, 3)])
  673. }
  674. else
  675. {
  676. ShowSyncHudMsg(0, g_center1_sync, "%s vs. %d %s%s: %L", name, oposite, g_teamsNames[_team], (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages[random_num(0, 3)])
  677. }
  678. }
  679.  
  680. if ( LastManSound && g_connected[g_LastAnnounce] )
  681. {
  682. play_sound(g_LastAnnounce, g_lastmansound_1vsothers)
  683. }
  684. }
  685. }
  686. }
  687.  
  688. if (wpnindex == CSW_KNIFE && (KnifeKill || KnifeKillSound))
  689. {
  690. if (KnifeKill)
  691. {
  692. new killer_name[MAX_NAME_LENGTH], victim_name[MAX_NAME_LENGTH]
  693.  
  694. get_user_name(killer, killer_name, charsmax(killer_name))
  695. get_user_name(victim, victim_name, charsmax(victim_name))
  696.  
  697. set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
  698. ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_KinfeMsg[random_num(0, 3)], killer_name, victim_name)
  699. }
  700.  
  701. if (KnifeKillSound)
  702. play_sound(0, g_knifekillsound)
  703. }
  704.  
  705. if (wpnindex == CSW_HEGRENADE)
  706. {
  707. new killer_name[MAX_NAME_LENGTH], victim_name[MAX_NAME_LENGTH]
  708. if( GrenadeKill || GrenadeSuicide )
  709. {
  710. get_user_name(killer, killer_name, charsmax(killer_name))
  711. get_user_name(victim, victim_name, charsmax(victim_name))
  712.  
  713. set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
  714. }
  715.  
  716. if (!selfkill)
  717. {
  718. if (GrenadeKill)
  719. ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_HeMessages[random_num(0, 3)], killer_name, victim_name)
  720. if (GrenadeKillSound)
  721. play_sound(0, g_grenadekillsound)
  722. }
  723. else
  724. {
  725. if (GrenadeSuicide)
  726. ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_SHeMessages[random_num(0, 3)], victim_name)
  727. if (GrenadeSuicideSound)
  728. play_sound(0, g_grenadesuicidesound)
  729. }
  730. }
  731.  
  732. if (headshot && (HeadShotKill || HeadShotKillSound))
  733. {
  734. if (HeadShotKill && wpnindex)
  735. {
  736. new killer_name[MAX_NAME_LENGTH], victim_name[MAX_NAME_LENGTH], weapon_name[32], message[256], players[MAX_PLAYERS], pnum, plr
  737.  
  738. xmod_get_wpnname(wpnindex, weapon_name, charsmax(weapon_name))
  739. get_user_name(killer, killer_name, charsmax(killer_name))
  740. get_user_name(victim, victim_name, charsmax(victim_name))
  741. get_players(players, pnum, "ch")
  742.  
  743. for (new i = 0; i < pnum; i++)
  744. {
  745. plr = players[i]
  746. formatex(message, charsmax(message), "%L", plr, g_HeadShots[random_num(0, 6)])
  747.  
  748. replace(message, charsmax(message), "$vn", victim_name)
  749. replace(message, charsmax(message), "$wn", weapon_name)
  750. replace(message, charsmax(message), "$kn", killer_name)
  751.  
  752. set_hudmessage(100, 100, 255, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
  753. ShowSyncHudMsg(plr, g_announce_sync, "%s", message)
  754. }
  755. }
  756.  
  757. if (HeadShotKillSound)
  758. {
  759. play_sound(victim, g_hssound_victim)
  760. if( victim != killer )
  761. play_sound(killer, g_hssound_killer)
  762. }
  763. }
  764.  
  765. if ((DoubleKill || DoubleKillSound) && !selfkill)
  766. {
  767. new Float:nowtime = get_gametime()
  768.  
  769. if (g_doubleKill == nowtime && g_doubleKillId == killer)
  770. {
  771. if (DoubleKill)
  772. {
  773. new name[MAX_NAME_LENGTH]
  774.  
  775. get_user_name(killer, name, charsmax(name))
  776.  
  777. set_hudmessage(255, 0, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
  778. ShowSyncHudMsg(0, g_center1_sync, "%L", LANG_PLAYER, "DOUBLE_KILL", name)
  779. }
  780.  
  781. if (DoubleKillSound)
  782. play_sound(0, g_doublekillsound)
  783. }
  784.  
  785. g_doubleKill = nowtime
  786. g_doubleKillId = killer
  787. }
  788. }
  789.  
  790. public hideStatus(id)
  791. {
  792. if (PlayerName)
  793. {
  794. ClearSyncHud(id, g_status_sync)
  795. }
  796. }
  797.  
  798. public setTeam(id)
  799. g_friend[id] = read_data(2)
  800.  
  801. public showStatus(id)
  802. {
  803. if( PlayerName)
  804. {
  805. new name[MAX_NAME_LENGTH], pid = read_data(2)
  806.  
  807. get_user_name(pid, name, charsmax(name))
  808. new color1 = 0, color2 = 0
  809.  
  810. if (get_user_team(pid) == TEAM_T)
  811. color1 = 255
  812. else
  813. color2 = 255
  814.  
  815. if (g_friend[id] == 1) // friend
  816. {
  817. new wpnid = get_user_weapon(pid)
  818. new wpnname[32]
  819.  
  820. if (wpnid)
  821. xmod_get_wpnname(wpnid, wpnname, charsmax(wpnname))
  822.  
  823. set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
  824. ShowSyncHudMsg(id, g_status_sync, "%s -- %d HP / %d AP / %s", name, get_user_health(pid), get_user_armor(pid), wpnname)
  825. } else {
  826. set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
  827. ShowSyncHudMsg(id, g_status_sync, "%s", name)
  828. }
  829. }
  830. }
  831.  
  832. public Event_HLTV_New_Round()
  833. {
  834. g_c4timer_value = get_pcvar_num( g_pcvar_mp_c4timer )
  835. ++g_roundCount
  836. g_firstBlood = 1
  837. g_C4Timer = 0
  838.  
  839. if (RoundCounterSound)
  840. play_sound(0, g_roundcountersound)
  841.  
  842. if (RoundCounter)
  843. {
  844. set_task(0.2, "Delayed_New_Round", TASK_DELAYED_NEW_ROUND)
  845. }
  846. }
  847.  
  848. public Delayed_New_Round()
  849. {
  850. set_hudmessage(200, 0, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
  851. ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, "PREPARE_FIGHT", g_roundCount)
  852. }
  853.  
  854. public LogEvent_Round_Start()
  855. {
  856. if (KillingStreak)
  857. {
  858. new appl[MAX_PLAYERS], ppl, i
  859. get_players(appl, ppl, "ac")
  860.  
  861. for (new a = 0; a < ppl; ++a)
  862. {
  863. i = appl[a]
  864.  
  865. if (g_streakKills[i][0] >= 2)
  866. client_print(i, print_chat, "* %L", i, "KILLED_ROW", g_streakKills[i][0])
  867. else if (g_streakKills[i][1] >= 2)
  868. client_print(i, print_chat, "* %L", i, "DIED_ROUNDS", g_streakKills[i][1])
  869. }
  870. }
  871. }
  872.  
  873. public eRestart()
  874. {
  875. eEndRound()
  876. g_roundCount = 0
  877. g_firstBlood = 1
  878. }
  879.  
  880. public eEndRound()
  881. {
  882. g_C4Timer = -2
  883. g_LastOmg = 0.0
  884. remove_task(TASK_BOMB_TIMER)
  885. g_LastAnnounce = 0
  886. }
  887.  
  888. public checkKills(param[])
  889. {
  890. new id = param[0]
  891. new a = param[1]
  892.  
  893. if (a == g_multiKills[id][0])
  894. {
  895. a -= 3
  896.  
  897. if (a > -1)
  898. {
  899. if (a > 6)
  900. {
  901. a = 6
  902. }
  903.  
  904. if (MultiKill)
  905. {
  906. new name[MAX_NAME_LENGTH]
  907.  
  908. get_user_name(id, name, charsmax(name))
  909. set_hudmessage(255, 0, 100, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1)
  910.  
  911. ShowSyncHudMsg(0, g_left_sync, g_MultiKillMsg[a], name, LANG_PLAYER, "WITH", g_multiKills[id][0], LANG_PLAYER, "KILLS", g_multiKills[id][1], LANG_PLAYER, "HS")
  912. }
  913.  
  914. if (MultiKillSound)
  915. {
  916. play_sound(0, g_Sounds[a])
  917. }
  918. }
  919. g_multiKills[id] = {0, 0}
  920. }
  921. }
  922.  
  923. public chickenKill()
  924. {
  925. if (ItalyBonusKill)
  926. announceEvent(0, "KILLED_CHICKEN")
  927. }
  928.  
  929. public radioKill()
  930. {
  931. if (ItalyBonusKill)
  932. announceEvent(0, "BLEW_RADIO")
  933. }
  934.  
  935. announceEvent(id, message[])
  936. {
  937. new name[MAX_NAME_LENGTH]
  938.  
  939. get_user_name(id, name, charsmax(name))
  940. set_hudmessage(255, 100, 50, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
  941. ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, message, name)
  942. }
  943.  
  944. public eBombPickUp(id)
  945. {
  946. if (BombPickUp)
  947. announceEvent(id, "PICKED_BOMB")
  948. }
  949.  
  950. public eBombDrop()
  951. {
  952. if (BombDrop)
  953. announceEvent(g_Planter, "DROPPED_BOMB")
  954. }
  955.  
  956. public eGotBomb(id)
  957. {
  958. g_Planter = id
  959.  
  960. if (BombReached && read_data(1) == 2 && g_LastOmg < get_gametime())
  961. {
  962. g_LastOmg = get_gametime() + 15.0
  963. announceEvent(g_Planter, "REACHED_TARGET")
  964. }
  965. }
  966.  
  967. public bombTimer()
  968. {
  969. if (--g_C4Timer > 0)
  970. {
  971. if( BombCountHUD )
  972. {
  973. new r, g
  974. if( g_C4Timer < 10 )
  975. {
  976. r = 255, g = 0
  977. }
  978. else
  979. {
  980. r = (((max(g_c4timer_value - g_C4Timer - 10,0)) * 255000) / (g_c4timer_value - 10)) / 1000
  981. g = 255 - r
  982. }
  983.  
  984. set_hudmessage(r, g, 0, -1.0, 0.75, g_C4Timer <= 10 ? 1 : 0, 0.01, 1.1, 0.001, 0.001, .channel = -1)
  985. show_hudmessage(0, "C4: %ds", g_C4Timer)
  986. }
  987. if (BombCountVoice)
  988. {
  989. if (g_C4Timer == 30 || g_C4Timer == 20)
  990. {
  991. new temp[64]
  992.  
  993. num_to_word(g_C4Timer, temp, charsmax(temp))
  994. format(temp, charsmax(temp), "^"vox/%s seconds until explosion^"", temp)
  995. play_sound(0, temp)
  996. }
  997. else if (g_C4Timer < 11)
  998. {
  999. new temp[64]
  1000.  
  1001. num_to_word(g_C4Timer, temp, charsmax(temp))
  1002. format(temp, charsmax(temp), "^"vox/%s^"", temp)
  1003. play_sound(0, temp)
  1004. }
  1005. }
  1006. if (BombCountDef && g_Defusing && is_user_alive(g_Defusing))
  1007. client_print(g_Defusing, print_center, "%d", g_C4Timer)
  1008. }
  1009. else
  1010. remove_task(TASK_BOMB_TIMER)
  1011. }
  1012.  
  1013. public eStopDefuse(id)
  1014. {
  1015. if( id == g_Defusing )
  1016. {
  1017. g_Defusing = 0
  1018. }
  1019. }
  1020.  
  1021. public bomb_planted(planter)
  1022. {
  1023. g_Defusing = 0
  1024.  
  1025. if (BombPlanted)
  1026. announceEvent(planter, "SET_UP_BOMB")
  1027.  
  1028. if (BombPlantedSound)
  1029. play_sound(0, g_bombplantedsound)
  1030.  
  1031. g_C4Timer = g_c4timer_value + 1
  1032. bombTimer()
  1033. set_task(1.0, "bombTimer", TASK_BOMB_TIMER, "", 0, "b")
  1034. }
  1035.  
  1036. public bomb_planting(planter)
  1037. {
  1038. if (BombPlanting)
  1039. announceEvent(planter, "PLANT_BOMB")
  1040. }
  1041.  
  1042. public bomb_defusing(defuser)
  1043. {
  1044. if (BombDefusing)
  1045. announceEvent(defuser, "DEFUSING_BOMB")
  1046.  
  1047. g_Defusing = defuser
  1048. }
  1049.  
  1050. public bomb_defused(defuser)
  1051. {
  1052. if (BombDefused)
  1053. announceEvent(defuser, "DEFUSED_BOMB")
  1054. if (BombDefusedSound)
  1055. play_sound(0, g_bombdefusedsound)
  1056. }
  1057.  
  1058. public bomb_explode(planter, defuser)
  1059. {
  1060. if( defuser )
  1061. {
  1062. if (BombFailed)
  1063. announceEvent(defuser, "FAILED_DEFU")
  1064. if (BombFailedSound)
  1065. play_sound(0, g_bombfailedsound)
  1066. }
  1067. }
  1068.  
  1069. play_sound(id, sound[])
  1070. {
  1071. if( id )
  1072. {
  1073. if( g_msounds[id] )
  1074. {
  1075. client_cmd(id, "spk %s", sound)
  1076. }
  1077. }
  1078. else
  1079. {
  1080. new players[MAX_PLAYERS], pnum, id
  1081. get_players(players, pnum, "ch")
  1082.  
  1083. for(--pnum; pnum>=0; pnum--)
  1084. {
  1085. id = players[pnum]
  1086. if ( g_connected[id] && g_msounds[id] )
  1087. client_cmd(id, "spk %s", sound)
  1088. }
  1089. }
  1090. }
  1091.  
  1092. public cmdSwitchSounds( id )
  1093. {
  1094. g_msounds[id] = !g_msounds[id]
  1095. client_print(id, print_chat, "MSounds %L", id, g_msounds[id] ? "ENABLED" : "DISABLED")
  1096. set_user_info(id, _msound, g_msounds[id] ? "1" : "0") // will this save setting for next map is player has cl_filterstuffcmd 0 ???
  1097. client_cmd(id, "setinfo %s %s", _msound, g_msounds[id] ? "1" : "0")
  1098. }
  1099.  

_________________
GitHub - mforce


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ultimate hang javitás
HozzászólásElküldve: 2015.10.09. 12:51 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.11.12. 16:39
Hozzászólások: 258
Megköszönt másnak: 87 alkalommal
Megköszönték neki: 2 alkalommal
Nem jó . 193. sorba hiba van

_________________
Nem szégyen megköszönni :)

'The dictator is coming' :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ultimate hang javitás
HozzászólásElküldve: 2015.10.09. 13:20 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Mert 1.8.3-mashoz való.
Kiszedegetve, beleírva includekből a funkciók,hogy menjen 1.8.2-n. :)
Remélem xD

Visszajelzést várnék majd, hogy jó-e :)

Full pack langgal meg hangokkal:


Csatolmányok:
miscstats.zip [690.95 KiB]
Letöltve 47 alkalommal.

_________________
GitHub - mforce
Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ultimate hang javitás
HozzászólásElküldve: 2015.10.09. 16:03 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.11.12. 16:39
Hozzászólások: 258
Megköszönt másnak: 87 alkalommal
Megköszönték neki: 2 alkalommal
mforce írta:
Mert 1.8.3-mashoz való.
Kiszedegetve, beleírva includekből a funkciók,hogy menjen 1.8.2-n. :)
Remélem xD

Visszajelzést várnék majd, hogy jó-e :)

Full pack langgal meg hangokkal:


imádlak :) Köszi :D

Eltudnmég azt magyrázni , hogy hogyan kell például több hs hangokat beleírni ? És hol lehetne bekapcsolni őket , mert a szerveren nem ad ki hangot és a statisztikai pluginok közöt se lehet beálítani

_________________
Nem szégyen megköszönni :)

'The dictator is coming' :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ultimate hang javitás
HozzászólásElküldve: 2015.10.10. 09:12 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Nem futott, mert kellett neki egy 1.8.3-mas modul. Így nem kell. Most teszteld.

SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <csx>
  4.  
  5. #define MAX_PLAYERS 32
  6. #define MAX_NAME_LENGTH 32
  7.  
  8. public MultiKill
  9. public MultiKillSound
  10. public BombPlanting
  11. public BombDefusing
  12. public BombPlanted
  13. public BombDefused
  14. public BombFailed
  15. public BombPickUp
  16. public BombDrop
  17. public BombCountVoice
  18. public BombCountDef
  19. public BombReached
  20. public ItalyBonusKill
  21. public EnemyRemaining
  22. public LastMan
  23. public LastManHealth
  24. public KnifeKill
  25. public KnifeKillSound
  26. public GrenadeKill
  27. public GrenadeSuicide
  28. public HeadShotKill
  29. public HeadShotKillSound
  30. public RoundCounterSound
  31. public RoundCounter
  32. public KillingStreak
  33. public KillingStreakSound
  34. public DoubleKill
  35. public DoubleKillSound
  36. public PlayerName
  37. public FirstBloodSound
  38.  
  39. public BombPlantedSound
  40. public BombDefusedSound
  41. public BombFailedSound
  42. public BombCountHUD
  43. public LastManSound
  44. public GrenadeKillSound
  45. public GrenadeSuicideSound
  46.  
  47. const SOUNDFILE_PATH_MAXLEN = 64
  48. const SOUND_SHORTPATH_MAXLEN = SOUNDFILE_PATH_MAXLEN - 10 // 64 (sound/ [ 54 ] .wav) critical value for fast dl
  49.  
  50. new g_streakKills[MAX_PLAYERS + 1][2]
  51. new g_multiKills[MAX_PLAYERS + 1][2]
  52. new g_C4Timer
  53. new g_Defusing
  54. new g_Planter
  55. new Float:g_LastOmg
  56. new g_LastAnnounce
  57. new g_roundCount
  58. new Float:g_doubleKill
  59. new g_doubleKillId
  60. new g_friend[MAX_PLAYERS + 1]
  61. new g_firstBlood
  62. new g_center1_sync
  63. new g_announce_sync
  64. new g_status_sync
  65. new g_left_sync
  66. new g_bottom_sync
  67. new g_he_sync
  68.  
  69. new g_pcvar_mp_c4timer, g_c4timer_value
  70.  
  71. const TASK_BOMB_TIMER = 8038
  72. const TASK_DELAYED_NEW_ROUND = 98038
  73.  
  74. const TEAM_T = 1
  75. const TEAM_CT = 2
  76.  
  77. new g_connected[MAX_PLAYERS + 1]
  78. new g_msounds[MAX_PLAYERS + 1]
  79. new const _msound[] = "_msound"
  80.  
  81. new g_MultiKillMsg[7][] =
  82. {
  83. "Multi-Kill! %s^n%L %d %L (%d %L)",
  84. "Ultra-Kill!!! %s^n%L %d %L (%d %L)",
  85. "%s IS ON A KILLING SPREE!!!^n%L %d %L (%d %L)",
  86. "RAMPAGE!!! %s^n%L %d %L (%d hs)",
  87. "%s IS UNSTOPPABLE!!!^n%L %d %L (%d %L)",
  88. "%s IS A MONSTER!^n%L %d %L (%d %L)",
  89. "%s IS GODLIKE!!!!^n%L %d %L (%d %L)"
  90. }
  91.  
  92. new g_Sounds[7][SOUND_SHORTPATH_MAXLEN] =
  93. {
  94. "misc/multikill",
  95. "misc/ultrakill",
  96. "misc/killingspree",
  97. "misc/rampage",
  98. "misc/unstoppable",
  99. "misc/monsterkill",
  100. "misc/godlike"
  101. }
  102.  
  103. new g_firstbloodsound[SOUND_SHORTPATH_MAXLEN] = "misc/firstblood"
  104. new g_lastmansound_1vsothers[SOUND_SHORTPATH_MAXLEN] = "misc/oneandonly"
  105. new g_lastmansound_duel[SOUND_SHORTPATH_MAXLEN] = "misc/maytheforce"
  106. new g_hssound_killer[SOUND_SHORTPATH_MAXLEN] = "misc/headshot"
  107. new g_hssound_victim[SOUND_SHORTPATH_MAXLEN] = "misc/headshot"
  108. new g_knifekillsound[SOUND_SHORTPATH_MAXLEN] = "misc/humiliation"
  109. new g_doublekillsound[SOUND_SHORTPATH_MAXLEN] = "misc/doublekill"
  110. new g_roundcountersound[SOUND_SHORTPATH_MAXLEN] = "misc/prepare"
  111. new g_grenadekillsound[SOUND_SHORTPATH_MAXLEN] = "djeyl/grenade"
  112. new g_grenadesuicidesound[SOUND_SHORTPATH_MAXLEN] = "djeyl/witch"
  113. new g_bombplantedsound[SOUND_SHORTPATH_MAXLEN] = "djeyl/c4powa"
  114. new g_bombdefusedsound[SOUND_SHORTPATH_MAXLEN] = "djeyl/laugh"
  115. new g_bombfailedsound[SOUND_SHORTPATH_MAXLEN] = "djeyl/witch"
  116.  
  117. new g_KillingMsg[7][] =
  118. {
  119. "%s: Multi-Kill!",
  120. "%s: Ultra-Kill!!!",
  121. "%s IS ON A KILLING SPREE!!!",
  122. "%s: RAMPAGE!!!",
  123. "%s IS UNSTOPPABLE!!!",
  124. "%s IS A MONSTER!",
  125. "%s IS GODLIKE!!!"
  126. }
  127.  
  128. new g_KinfeMsg[4][] =
  129. {
  130. "KNIFE_MSG_1",
  131. "KNIFE_MSG_2",
  132. "KNIFE_MSG_3",
  133. "KNIFE_MSG_4"
  134. }
  135.  
  136. new g_LastMessages[4][] =
  137. {
  138. "LAST_MSG_1",
  139. "LAST_MSG_2",
  140. "LAST_MSG_3",
  141. "LAST_MSG_4"
  142. }
  143.  
  144. new g_HeMessages[4][] =
  145. {
  146. "HE_MSG_1",
  147. "HE_MSG_2",
  148. "HE_MSG_3",
  149. "HE_MSG_4"
  150. }
  151.  
  152. new g_SHeMessages[4][] =
  153. {
  154. "SHE_MSG_1",
  155. "SHE_MSG_2",
  156. "SHE_MSG_3",
  157. "SHE_MSG_4"
  158. }
  159.  
  160. new g_HeadShots[7][] =
  161. {
  162. "HS_MSG_1",
  163. "HS_MSG_2",
  164. "HS_MSG_3",
  165. "HS_MSG_4",
  166. "HS_MSG_5",
  167. "HS_MSG_6",
  168. "HS_MSG_7"
  169. }
  170.  
  171. new g_teamsNames[4][] =
  172. {
  173. "TERRORIST",
  174. "CT",
  175. "TERRORISTS",
  176. "CTS"
  177. }
  178.  
  179. public plugin_init()
  180. {
  181. register_plugin("CS Misc. Stats", AMXX_VERSION_STR, "AMXX Dev Team")
  182. register_dictionary("miscstats.txt")
  183. register_dictionary("statsx.txt")
  184. register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w")
  185. register_event("SendAudio", "eEndRound", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw")
  186.  
  187. register_event("HLTV", "Event_HLTV_New_Round", "a", "1=0", "2=0") // cache c4 timer value
  188. register_logevent("LogEvent_Round_Start", 2, "1=Round_Start") // replaces ugly register_event("RoundTime", "eNewRound", "bc")
  189. register_event("StatusValue", "setTeam", "bef", "1=1")
  190. register_event("StatusValue", "showStatus", "bef", "1=2", "2!0")
  191. register_event("StatusValue", "hideStatus", "bef", "1=1", "2=0")
  192.  
  193. new mapname[32], n = get_mapname(mapname, charsmax(mapname))
  194. if (equali(mapname, "de_", 3) || equali(mapname, "csde_", 5))
  195. {
  196. register_event("StatusIcon", "eGotBomb", "be", "1=1", "1=2", "2=c4")
  197. register_event("TextMsg", "eBombPickUp", "bc", "2&#Got_bomb")
  198. register_event("TextMsg", "eBombDrop", "bc", "2&#Game_bomb_d")
  199. register_event("BarTime", "eStopDefuse", "b", "1=0")
  200. }
  201. else if (equali(mapname, "cs_italy") || equali(mapname, "cs_italy_cz"))
  202. {
  203. register_event("23", "chickenKill", "a", "1=108", "15=4")
  204. register_event("23", "radioKill", "a", "1=108", n == 8 ? "15=2" : "15=8") // cz radio is wood
  205.  
  206. }
  207.  
  208. g_center1_sync = CreateHudSyncObj()
  209. g_announce_sync = CreateHudSyncObj()
  210. g_status_sync = CreateHudSyncObj()
  211. g_left_sync = CreateHudSyncObj()
  212. g_bottom_sync = CreateHudSyncObj()
  213. g_he_sync = CreateHudSyncObj()
  214.  
  215. g_pcvar_mp_c4timer = get_cvar_pointer("mp_c4timer")
  216. g_c4timer_value = get_pcvar_num( g_pcvar_mp_c4timer )
  217.  
  218. register_clcmd("say /msounds", "cmdSwitchSounds", _, " - switches sounds on and off")
  219. register_clcmd("say_team /msounds", "cmdSwitchSounds", _, " - switches sounds on and off")
  220. }
  221.  
  222. public plugin_precache()
  223. {
  224. // parse sounds and precache them
  225. new szConfigsDir[64], szCfgFile[64]
  226. get_configsdir(szConfigsDir, charsmax(szConfigsDir))
  227. formatex(szCfgFile, charsmax(szCfgFile), "%s/stats.ini", szConfigsDir)
  228.  
  229. new buffer[256]
  230.  
  231. // initialize xvars so we can know later if sounds have to be precached or not.
  232. // xvars gonna be initialized again in statscfg.amxx plugin_init, this is ok.
  233. new fp = fopen(szCfgFile, "rt")
  234. if( fp )
  235. {
  236. new xvarname[32], xvarid
  237. while( !feof(fp) )
  238. {
  239. fgets(fp, buffer, charsmax(buffer))
  240. trim(buffer)
  241. if( buffer[0] != ';' )
  242. {
  243. parse(buffer, xvarname, charsmax(xvarname))
  244. if ((xvarid = get_xvar_id(xvarname)) != -1)
  245. {
  246. set_xvar_num(xvarid, 1)
  247. }
  248. }
  249. }
  250. fclose(fp)
  251. }
  252.  
  253. formatex(szCfgFile, charsmax(szCfgFile), "%s/miscstats.ini", szConfigsDir)
  254. fp = fopen(szCfgFile, "rt")
  255. if( fp )
  256. {
  257. new szSoundKey[32], szSoundFile[SOUNDFILE_PATH_MAXLEN]
  258. while( !feof(fp) )
  259. {
  260. fgets(fp, buffer, charsmax(buffer))
  261. trim(buffer)
  262. if( buffer[0] != ';' && parse(buffer, szSoundKey, charsmax(szSoundKey), szSoundFile, charsmax(szSoundFile)) == 2 )
  263. {
  264. if( equal(szSoundKey, "FirstBloodSound") )
  265. {
  266. copy_sound(g_firstbloodsound, charsmax(g_firstbloodsound), szSoundFile)
  267. if( FirstBloodSound ) precache_sound_custom(g_firstbloodsound)
  268. }
  269. else if( equal(szSoundKey, "LastManVsOthersSound") )
  270. {
  271. copy_sound(g_lastmansound_1vsothers, charsmax(g_lastmansound_1vsothers), szSoundFile)
  272. if( LastManSound ) precache_sound_custom(g_lastmansound_1vsothers)
  273. }
  274. else if( equal(szSoundKey, "LastManDuelSound") )
  275. {
  276. copy_sound(g_lastmansound_duel, charsmax(g_lastmansound_duel), szSoundFile)
  277. if( LastManSound ) precache_sound_custom(g_lastmansound_duel)
  278. }
  279. else if( equal(szSoundKey, "HeadShotKillSoundKiller") )
  280. {
  281. copy_sound(g_hssound_killer, charsmax(g_hssound_killer), szSoundFile)
  282. if( HeadShotKillSound ) precache_sound_custom(g_hssound_killer)
  283. }
  284. else if( equal(szSoundKey, "HeadShotKillSoundVictim") )
  285. {
  286. copy_sound(g_hssound_victim, charsmax(g_hssound_victim), szSoundFile)
  287. if( HeadShotKillSound ) precache_sound_custom(g_hssound_victim)
  288. }
  289. else if( equal(szSoundKey, "KnifeKillSound") )
  290. {
  291. copy_sound(g_knifekillsound, charsmax(g_knifekillsound), szSoundFile)
  292. if( KnifeKillSound ) precache_sound_custom(g_knifekillsound)
  293. }
  294. else if( equal(szSoundKey, "DoubleKillSound") )
  295. {
  296. copy_sound(g_doublekillsound, charsmax(g_doublekillsound), szSoundFile)
  297. if( DoubleKillSound ) precache_sound_custom(g_doublekillsound)
  298. }
  299. else if( equal(szSoundKey, "RoundCounterSound") )
  300. {
  301. copy_sound(g_roundcountersound, charsmax(g_roundcountersound), szSoundFile)
  302. if( RoundCounterSound ) precache_sound_custom(g_roundcountersound)
  303. }
  304. else if( equal(szSoundKey, "GrenadeKillSound") )
  305. {
  306. copy_sound(g_grenadekillsound, charsmax(g_grenadekillsound), szSoundFile)
  307. if( GrenadeKillSound ) precache_sound_custom(g_grenadekillsound)
  308. }
  309. else if( equal(szSoundKey, "GrenadeSuicideSound") )
  310. {
  311. copy_sound(g_grenadesuicidesound, charsmax(g_grenadesuicidesound), szSoundFile)
  312. if( GrenadeSuicideSound ) precache_sound_custom(g_grenadesuicidesound)
  313. }
  314. else if( equal(szSoundKey, "BombPlantedSound") )
  315. {
  316. copy_sound(g_bombplantedsound, charsmax(g_bombplantedsound), szSoundFile)
  317. if( BombPlantedSound ) precache_sound_custom(g_bombplantedsound)
  318. }
  319. else if( equal(szSoundKey, "BombDefusedSound") )
  320. {
  321. copy_sound(g_bombdefusedsound, charsmax(g_bombdefusedsound), szSoundFile)
  322. if( BombDefusedSound ) precache_sound_custom(g_bombdefusedsound)
  323. }
  324. else if( equal(szSoundKey, "BombFailedSound") )
  325. {
  326. copy_sound(g_bombfailedsound, charsmax(g_bombfailedsound), szSoundFile)
  327. if( BombFailedSound ) precache_sound_custom(g_bombfailedsound)
  328. }
  329. else
  330. {
  331. // KillingStreakSound and MultiKillSound
  332. if( equal(szSoundKey, "MultiKillSound") )
  333. {
  334. copy_sound(g_Sounds[0], charsmax(g_Sounds[]), szSoundFile)
  335. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[0])
  336. }
  337. else if( equal(szSoundKey, "UltraKillSound") )
  338. {
  339. copy_sound(g_Sounds[1], charsmax(g_Sounds[]), szSoundFile)
  340. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[1])
  341. }
  342. else if( equal(szSoundKey, "KillingSpreeSound") )
  343. {
  344. copy_sound(g_Sounds[2], charsmax(g_Sounds[]), szSoundFile)
  345. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[2])
  346. }
  347. else if( equal(szSoundKey, "RampageSound") )
  348. {
  349. copy_sound(g_Sounds[3], charsmax(g_Sounds[]), szSoundFile)
  350. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[3])
  351. }
  352. else if( equal(szSoundKey, "UnstopableSound") )
  353. {
  354. copy_sound(g_Sounds[4], charsmax(g_Sounds[]), szSoundFile)
  355. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[4])
  356. }
  357. else if( equal(szSoundKey, "MonsterKillSound") )
  358. {
  359. copy_sound(g_Sounds[5], charsmax(g_Sounds[]), szSoundFile)
  360. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[5])
  361. }
  362. else if( equal(szSoundKey, "GodLike") )
  363. {
  364. copy_sound(g_Sounds[6], charsmax(g_Sounds[]), szSoundFile)
  365. if( KillingStreakSound || MultiKillSound ) precache_sound_custom(g_Sounds[6])
  366. }
  367. }
  368. }
  369. }
  370. fclose(fp)
  371. }
  372. }
  373.  
  374. precache_sound_custom( const sound[] )
  375. {
  376. new fullpathsound[SOUNDFILE_PATH_MAXLEN]
  377. formatex(fullpathsound, charsmax(fullpathsound), "sound/%s.wav", sound)
  378. if( file_exists(fullpathsound) )
  379. {
  380. precache_sound(fullpathsound[6])
  381. }
  382. else
  383. {
  384. log_amx("Could not locate <%s> file", fullpathsound)
  385. }
  386. }
  387.  
  388. copy_sound(dest[], len, src[])
  389. {
  390. new n = copy(dest, len, src[ 6 * equali(src, "sound/", 6) ])
  391. if( n > 4 && equal(dest[n-4], ".wav") )
  392. {
  393. dest[n-4] = EOS
  394. }
  395. }
  396.  
  397. public plugin_cfg()
  398. {
  399. new g_addStast[] = "amx_statscfg add ^"%s^" %s"
  400.  
  401. server_cmd(g_addStast, "ST_MULTI_KILL", "MultiKill")
  402. server_cmd(g_addStast, "ST_MULTI_KILL_SOUND", "MultiKillSound")
  403. server_cmd(g_addStast, "ST_BOMB_PLANTING", "BombPlanting")
  404. server_cmd(g_addStast, "ST_BOMB_DEFUSING", "BombDefusing")
  405. server_cmd(g_addStast, "ST_BOMB_PLANTED", "BombPlanted")
  406. server_cmd(g_addStast, "ST_BOMB_PLANTED_SOUND", "BombPlantedSound")
  407. server_cmd(g_addStast, "ST_BOMB_DEF_SUCC", "BombDefused")
  408. server_cmd(g_addStast, "ST_BOMB_DEF_SUCC_SOUND", "BombDefusedSound")
  409. server_cmd(g_addStast, "ST_BOMB_DEF_FAIL", "BombFailed")
  410. server_cmd(g_addStast, "ST_BOMB_DEF_FAIL_SOUND", "BombFailedSound")
  411. server_cmd(g_addStast, "ST_BOMB_PICKUP", "BombPickUp")
  412. server_cmd(g_addStast, "ST_BOMB_DROP", "BombDrop")
  413. server_cmd(g_addStast, "ST_BOMB_CD_HUD", "BombCountHUD")
  414. server_cmd(g_addStast, "ST_BOMB_CD_VOICE", "BombCountVoice")
  415. server_cmd(g_addStast, "ST_BOMB_CD_DEF", "BombCountDef")
  416. server_cmd(g_addStast, "ST_BOMB_SITE", "BombReached")
  417. server_cmd(g_addStast, "ST_ITALY_BONUS", "ItalyBonusKill")
  418. server_cmd(g_addStast, "ST_LAST_MAN", "LastMan")
  419. server_cmd(g_addStast, "ST_LAST_MAN_HEALTH", "LastManHealth")
  420. server_cmd(g_addStast, "ST_LAST_MAN_SOUND", "LastManSound")
  421. server_cmd(g_addStast, "ST_KNIFE_KILL", "KnifeKill")
  422. server_cmd(g_addStast, "ST_KNIFE_KILL_SOUND", "KnifeKillSound")
  423. server_cmd(g_addStast, "ST_HE_KILL", "GrenadeKill")
  424. server_cmd(g_addStast, "ST_HE_KILL_SOUND", "GrenadeKillSound")
  425. server_cmd(g_addStast, "ST_HE_SUICIDE", "GrenadeSuicide")
  426. server_cmd(g_addStast, "ST_HE_SUICIDE_SOUND", "GrenadeSuicideSound")
  427. server_cmd(g_addStast, "ST_HS_KILL", "HeadShotKill")
  428. server_cmd(g_addStast, "ST_HS_KILL_SOUND", "HeadShotKillSound")
  429. server_cmd(g_addStast, "ST_ROUND_CNT", "RoundCounter")
  430. server_cmd(g_addStast, "ST_ROUND_CNT_SOUND", "RoundCounterSound")
  431. server_cmd(g_addStast, "ST_KILL_STR", "KillingStreak")
  432. server_cmd(g_addStast, "ST_KILL_STR_SOUND", "KillingStreakSound")
  433. server_cmd(g_addStast, "ST_ENEMY_REM", "EnemyRemaining")
  434. server_cmd(g_addStast, "ST_DOUBLE_KILL", "DoubleKill")
  435. server_cmd(g_addStast, "ST_DOUBLE_KILL_SOUND", "DoubleKillSound")
  436. server_cmd(g_addStast, "ST_PLAYER_NAME", "PlayerName")
  437. server_cmd(g_addStast, "ST_FIRST_BLOOD_SOUND", "FirstBloodSound")
  438. }
  439.  
  440. public client_connect(id)
  441. {
  442. if( is_user_bot(id) )
  443. {
  444. g_msounds[id] = 0
  445. return;
  446. }
  447. new info[2]
  448. if( !get_user_info(id, _msound, info, charsmax(info)) || info[0] != '0' )
  449. {
  450. g_msounds[id] = 1
  451. }
  452. else
  453. {
  454. g_msounds[id] = 0
  455. }
  456. }
  457.  
  458. public client_putinserver(id)
  459. {
  460. g_multiKills[id] = {0, 0}
  461. g_streakKills[id] = {0, 0}
  462. g_connected[id] = true
  463. }
  464.  
  465. public client_disconnected(id)
  466. {
  467. g_connected[id] = false
  468. }
  469.  
  470. public client_death(killer, victim, wpnindex, hitplace, TK)
  471. {
  472. if (wpnindex == CSW_C4)
  473. return
  474.  
  475. new headshot = (hitplace == HIT_HEAD) ? 1 : 0
  476. new selfkill = (killer == victim) ? 1 : 0
  477.  
  478. new victim_alive = is_user_alive(victim) // happens on ClientKill
  479.  
  480. if (g_firstBlood)
  481. {
  482. g_firstBlood = 0
  483. if (FirstBloodSound)
  484. play_sound(0, g_firstbloodsound)
  485. }
  486.  
  487. if ((KillingStreak || KillingStreakSound) && !TK)
  488. {
  489. g_streakKills[victim][1]++
  490. g_streakKills[victim][0] = 0
  491.  
  492. if (!selfkill)
  493. {
  494. g_streakKills[killer][0]++
  495. g_streakKills[killer][1] = 0
  496.  
  497. new a = g_streakKills[killer][0] - 3
  498.  
  499. if ((a > -1) && !(a % 2))
  500. {
  501. new name[MAX_NAME_LENGTH]
  502. get_user_name(killer, name, charsmax(name))
  503.  
  504. if ((a >>= 1) > 6)
  505. a = 6
  506.  
  507. if (KillingStreak)
  508. {
  509. set_hudmessage(0, 100, 255, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1)
  510. ShowSyncHudMsg(0, g_left_sync, g_KillingMsg[a], name)
  511. }
  512.  
  513. if (KillingStreakSound)
  514. {
  515. play_sound(0, g_Sounds[a])
  516. }
  517. }
  518. }
  519. }
  520.  
  521. if (MultiKill || MultiKillSound)
  522. {
  523. if (!selfkill && !TK && killer)
  524. {
  525. g_multiKills[killer][0]++
  526. g_multiKills[killer][1] += headshot
  527.  
  528. new param[2]
  529.  
  530. param[0] = killer
  531. param[1] = g_multiKills[killer][0]
  532. set_task(4.0 + float(param[1]), "checkKills", killer, param, sizeof(param))
  533. }
  534. }
  535.  
  536. new team = get_user_team(victim)
  537. if (EnemyRemaining && is_user_connected(victim))
  538. {
  539. if( TEAM_T <= team <= TEAM_CT )
  540. {
  541. new ppl[MAX_PLAYERS], pplnum, epplnum, a
  542. get_players(ppl, epplnum, "ae", team == TEAM_T ? "CT" : "TERRORIST")
  543. get_players(ppl, pplnum, "ae", team == TEAM_T ? "TERRORIST" : "CT")
  544. if( victim_alive )
  545. {
  546. for(a=0; a<pplnum; a++)
  547. {
  548. if( ppl[a] == victim )
  549. {
  550. ppl[a] = ppl[--pplnum]
  551. break
  552. }
  553. }
  554. }
  555.  
  556. if (pplnum && epplnum)
  557. {
  558. new message[128], team_name[32]
  559.  
  560. set_hudmessage(255, 255, 255, 0.02, 0.85, 2, 0.05, 0.1, 0.02, 3.0, -1)
  561.  
  562. /* This is a pretty stupid thing to translate, but whatever */
  563. new _teamname[32]
  564. if (team == TEAM_T)
  565. {
  566. formatex(_teamname, charsmax(_teamname), "TERRORIST%s", (epplnum == 1) ? "" : "S")
  567. } else {
  568. formatex(_teamname, charsmax(_teamname), "CT%s", (epplnum == 1) ? "" : "S")
  569. }
  570.  
  571. new id
  572. for (a = 0; a < pplnum; ++a)
  573. {
  574. id = ppl[a]
  575. formatex(team_name, charsmax(team_name), "%L", id, _teamname)
  576. formatex(message, charsmax(message), "%L", id, "REMAINING", epplnum, team_name)
  577. ShowSyncHudMsg(id, g_bottom_sync, "%s", message)
  578. }
  579. }
  580. }
  581. }
  582.  
  583. if (LastMan || LastManSound)
  584. {
  585. new cts[MAX_PLAYERS], ts[MAX_PLAYERS], ctsnum, tsnum, b
  586. get_players(cts, ctsnum, "ae", "CT")
  587. get_players(ts, tsnum, "ae", "TERRORIST")
  588.  
  589. if( victim_alive )
  590. {
  591. switch( team )
  592. {
  593. case TEAM_T:
  594. {
  595. for(b=0; b<tsnum; b++)
  596. {
  597. if( ts[b] == victim )
  598. {
  599. ts[b] = ts[--tsnum]
  600. break
  601. }
  602. }
  603. }
  604. case TEAM_CT:
  605. {
  606. for(b=0; b<ctsnum; b++)
  607. {
  608. if( cts[b] == victim )
  609. {
  610. cts[b] = cts[--ctsnum]
  611. break
  612. }
  613. }
  614. }
  615. }
  616. }
  617.  
  618. if (ctsnum == 1 && tsnum == 1)
  619. {
  620. if( LastMan )
  621. {
  622. new ctname[MAX_NAME_LENGTH], tname[MAX_NAME_LENGTH]
  623.  
  624. get_user_name(cts[0], ctname, charsmax(ctname))
  625. get_user_name(ts[0], tname, charsmax(tname))
  626.  
  627. set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
  628.  
  629. if( LastManHealth )
  630. {
  631. ShowSyncHudMsg(0, g_center1_sync, "%s (%d HP) vs. %s (%d HP)", ctname, get_user_health(cts[0]), tname, get_user_health(ts[0]))
  632. }
  633. else
  634. {
  635. ShowSyncHudMsg(0, g_center1_sync, "%s vs. %s", ctname, tname)
  636. }
  637. }
  638.  
  639. if( LastManSound )
  640. {
  641. play_sound(0, g_lastmansound_duel)
  642. }
  643. }
  644. else if (!g_LastAnnounce)
  645. {
  646. new oposite = 0, _team = 0
  647.  
  648. if (ctsnum == 1 && tsnum > 1)
  649. {
  650. g_LastAnnounce = cts[0]
  651. oposite = tsnum
  652. _team = 0
  653. }
  654. else if (tsnum == 1 && ctsnum > 1)
  655. {
  656. g_LastAnnounce = ts[0]
  657. oposite = ctsnum
  658. _team = 1
  659. }
  660.  
  661. if (g_LastAnnounce)
  662. {
  663. if( LastMan )
  664. {
  665. new name[MAX_NAME_LENGTH]
  666.  
  667. get_user_name(g_LastAnnounce, name, charsmax(name))
  668.  
  669. set_hudmessage(0, 255, 255, -1.0, 0.38, 0, 6.0, 6.0, 0.5, 0.15, -1)
  670.  
  671. if( LastManHealth )
  672. {
  673. ShowSyncHudMsg(0, g_center1_sync, "%s (%d HP) vs. %d %s%s: %L", name, get_user_health(g_LastAnnounce), oposite, g_teamsNames[_team], (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages[random_num(0, 3)])
  674. }
  675. else
  676. {
  677. ShowSyncHudMsg(0, g_center1_sync, "%s vs. %d %s%s: %L", name, oposite, g_teamsNames[_team], (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages[random_num(0, 3)])
  678. }
  679. }
  680.  
  681. if ( LastManSound && g_connected[g_LastAnnounce] )
  682. {
  683. play_sound(g_LastAnnounce, g_lastmansound_1vsothers)
  684. }
  685. }
  686. }
  687. }
  688.  
  689. if (wpnindex == CSW_KNIFE && (KnifeKill || KnifeKillSound))
  690. {
  691. if (KnifeKill)
  692. {
  693. new killer_name[MAX_NAME_LENGTH], victim_name[MAX_NAME_LENGTH]
  694.  
  695. get_user_name(killer, killer_name, charsmax(killer_name))
  696. get_user_name(victim, victim_name, charsmax(victim_name))
  697.  
  698. set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
  699. ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_KinfeMsg[random_num(0, 3)], killer_name, victim_name)
  700. }
  701.  
  702. if (KnifeKillSound)
  703. play_sound(0, g_knifekillsound)
  704. }
  705.  
  706. if (wpnindex == CSW_HEGRENADE)
  707. {
  708. new killer_name[MAX_NAME_LENGTH], victim_name[MAX_NAME_LENGTH]
  709. if( GrenadeKill || GrenadeSuicide )
  710. {
  711. get_user_name(killer, killer_name, charsmax(killer_name))
  712. get_user_name(victim, victim_name, charsmax(victim_name))
  713.  
  714. set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1)
  715. }
  716.  
  717. if (!selfkill)
  718. {
  719. if (GrenadeKill)
  720. ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_HeMessages[random_num(0, 3)], killer_name, victim_name)
  721. if (GrenadeKillSound)
  722. play_sound(0, g_grenadekillsound)
  723. }
  724. else
  725. {
  726. if (GrenadeSuicide)
  727. ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_SHeMessages[random_num(0, 3)], victim_name)
  728. if (GrenadeSuicideSound)
  729. play_sound(0, g_grenadesuicidesound)
  730. }
  731. }
  732.  
  733. if (headshot && (HeadShotKill || HeadShotKillSound))
  734. {
  735. if (HeadShotKill && wpnindex)
  736. {
  737. new killer_name[MAX_NAME_LENGTH], victim_name[MAX_NAME_LENGTH], weapon_name[32], message[256], players[MAX_PLAYERS], pnum, plr
  738.  
  739. xmod_get_wpnname(wpnindex, weapon_name, charsmax(weapon_name))
  740. get_user_name(killer, killer_name, charsmax(killer_name))
  741. get_user_name(victim, victim_name, charsmax(victim_name))
  742. get_players(players, pnum, "ch")
  743.  
  744. for (new i = 0; i < pnum; i++)
  745. {
  746. plr = players[i]
  747. formatex(message, charsmax(message), "%L", plr, g_HeadShots[random_num(0, 6)])
  748.  
  749. replace(message, charsmax(message), "$vn", victim_name)
  750. replace(message, charsmax(message), "$wn", weapon_name)
  751. replace(message, charsmax(message), "$kn", killer_name)
  752.  
  753. set_hudmessage(100, 100, 255, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
  754. ShowSyncHudMsg(plr, g_announce_sync, "%s", message)
  755. }
  756. }
  757.  
  758. if (HeadShotKillSound)
  759. {
  760. play_sound(victim, g_hssound_victim)
  761. if( victim != killer )
  762. play_sound(killer, g_hssound_killer)
  763. }
  764. }
  765.  
  766. if ((DoubleKill || DoubleKillSound) && !selfkill)
  767. {
  768. new Float:nowtime = get_gametime()
  769.  
  770. if (g_doubleKill == nowtime && g_doubleKillId == killer)
  771. {
  772. if (DoubleKill)
  773. {
  774. new name[MAX_NAME_LENGTH]
  775.  
  776. get_user_name(killer, name, charsmax(name))
  777.  
  778. set_hudmessage(255, 0, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1)
  779. ShowSyncHudMsg(0, g_center1_sync, "%L", LANG_PLAYER, "DOUBLE_KILL", name)
  780. }
  781.  
  782. if (DoubleKillSound)
  783. play_sound(0, g_doublekillsound)
  784. }
  785.  
  786. g_doubleKill = nowtime
  787. g_doubleKillId = killer
  788. }
  789. }
  790.  
  791. public hideStatus(id)
  792. {
  793. if (PlayerName)
  794. {
  795. ClearSyncHud(id, g_status_sync)
  796. }
  797. }
  798.  
  799. public setTeam(id)
  800. g_friend[id] = read_data(2)
  801.  
  802. public showStatus(id)
  803. {
  804. if( PlayerName)
  805. {
  806. new name[MAX_NAME_LENGTH], pid = read_data(2)
  807.  
  808. get_user_name(pid, name, charsmax(name))
  809. new color1 = 0, color2 = 0
  810.  
  811. if (get_user_team(pid) == TEAM_T)
  812. color1 = 255
  813. else
  814. color2 = 255
  815.  
  816. if (g_friend[id] == 1) // friend
  817. {
  818. new wpnid = get_user_weapon(pid)
  819. new wpnname[32]
  820.  
  821. if (wpnid)
  822. xmod_get_wpnname(wpnid, wpnname, charsmax(wpnname))
  823.  
  824. set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
  825. ShowSyncHudMsg(id, g_status_sync, "%s -- %d HP / %d AP / %s", name, get_user_health(pid), get_user_armor(pid), wpnname)
  826. } else {
  827. set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1)
  828. ShowSyncHudMsg(id, g_status_sync, "%s", name)
  829. }
  830. }
  831. }
  832.  
  833. public Event_HLTV_New_Round()
  834. {
  835. g_c4timer_value = get_pcvar_num( g_pcvar_mp_c4timer )
  836. ++g_roundCount
  837. g_firstBlood = 1
  838. g_C4Timer = 0
  839.  
  840. if (RoundCounterSound)
  841. play_sound(0, g_roundcountersound)
  842.  
  843. if (RoundCounter)
  844. {
  845. set_task(0.2, "Delayed_New_Round", TASK_DELAYED_NEW_ROUND)
  846. }
  847. }
  848.  
  849. public Delayed_New_Round()
  850. {
  851. set_hudmessage(200, 0, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
  852. ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, "PREPARE_FIGHT", g_roundCount)
  853. }
  854.  
  855. public LogEvent_Round_Start()
  856. {
  857. if (KillingStreak)
  858. {
  859. new appl[MAX_PLAYERS], ppl, i
  860. get_players(appl, ppl, "ac")
  861.  
  862. for (new a = 0; a < ppl; ++a)
  863. {
  864. i = appl[a]
  865.  
  866. if (g_streakKills[i][0] >= 2)
  867. client_print(i, print_chat, "* %L", i, "KILLED_ROW", g_streakKills[i][0])
  868. else if (g_streakKills[i][1] >= 2)
  869. client_print(i, print_chat, "* %L", i, "DIED_ROUNDS", g_streakKills[i][1])
  870. }
  871. }
  872. }
  873.  
  874. public eRestart()
  875. {
  876. eEndRound()
  877. g_roundCount = 0
  878. g_firstBlood = 1
  879. }
  880.  
  881. public eEndRound()
  882. {
  883. g_C4Timer = -2
  884. g_LastOmg = 0.0
  885. remove_task(TASK_BOMB_TIMER)
  886. g_LastAnnounce = 0
  887. }
  888.  
  889. public checkKills(param[])
  890. {
  891. new id = param[0]
  892. new a = param[1]
  893.  
  894. if (a == g_multiKills[id][0])
  895. {
  896. a -= 3
  897.  
  898. if (a > -1)
  899. {
  900. if (a > 6)
  901. {
  902. a = 6
  903. }
  904.  
  905. if (MultiKill)
  906. {
  907. new name[MAX_NAME_LENGTH]
  908.  
  909. get_user_name(id, name, charsmax(name))
  910. set_hudmessage(255, 0, 100, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1)
  911.  
  912. ShowSyncHudMsg(0, g_left_sync, g_MultiKillMsg[a], name, LANG_PLAYER, "WITH", g_multiKills[id][0], LANG_PLAYER, "KILLS", g_multiKills[id][1], LANG_PLAYER, "HS")
  913. }
  914.  
  915. if (MultiKillSound)
  916. {
  917. play_sound(0, g_Sounds[a])
  918. }
  919. }
  920. g_multiKills[id] = {0, 0}
  921. }
  922. }
  923.  
  924. public chickenKill()
  925. {
  926. if (ItalyBonusKill)
  927. announceEvent(0, "KILLED_CHICKEN")
  928. }
  929.  
  930. public radioKill()
  931. {
  932. if (ItalyBonusKill)
  933. announceEvent(0, "BLEW_RADIO")
  934. }
  935.  
  936. announceEvent(id, message[])
  937. {
  938. new name[MAX_NAME_LENGTH]
  939.  
  940. get_user_name(id, name, charsmax(name))
  941. set_hudmessage(255, 100, 50, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1)
  942. ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, message, name)
  943. }
  944.  
  945. public eBombPickUp(id)
  946. {
  947. if (BombPickUp)
  948. announceEvent(id, "PICKED_BOMB")
  949. }
  950.  
  951. public eBombDrop()
  952. {
  953. if (BombDrop)
  954. announceEvent(g_Planter, "DROPPED_BOMB")
  955. }
  956.  
  957. public eGotBomb(id)
  958. {
  959. g_Planter = id
  960.  
  961. if (BombReached && read_data(1) == 2 && g_LastOmg < get_gametime())
  962. {
  963. g_LastOmg = get_gametime() + 15.0
  964. announceEvent(g_Planter, "REACHED_TARGET")
  965. }
  966. }
  967.  
  968. public bombTimer()
  969. {
  970. if (--g_C4Timer > 0)
  971. {
  972. if( BombCountHUD )
  973. {
  974. new r, g
  975. if( g_C4Timer < 10 )
  976. {
  977. r = 255, g = 0
  978. }
  979. else
  980. {
  981. r = (((max(g_c4timer_value - g_C4Timer - 10,0)) * 255000) / (g_c4timer_value - 10)) / 1000
  982. g = 255 - r
  983. }
  984.  
  985. set_hudmessage(r, g, 0, -1.0, 0.75, g_C4Timer <= 10 ? 1 : 0, 0.01, 1.1, 0.001, 0.001, .channel = -1)
  986. show_hudmessage(0, "C4: %ds", g_C4Timer)
  987. }
  988. if (BombCountVoice)
  989. {
  990. if (g_C4Timer == 30 || g_C4Timer == 20)
  991. {
  992. new temp[64]
  993.  
  994. num_to_word(g_C4Timer, temp, charsmax(temp))
  995. format(temp, charsmax(temp), "^"vox/%s seconds until explosion^"", temp)
  996. play_sound(0, temp)
  997. }
  998. else if (g_C4Timer < 11)
  999. {
  1000. new temp[64]
  1001.  
  1002. num_to_word(g_C4Timer, temp, charsmax(temp))
  1003. format(temp, charsmax(temp), "^"vox/%s^"", temp)
  1004. play_sound(0, temp)
  1005. }
  1006. }
  1007. if (BombCountDef && g_Defusing && is_user_alive(g_Defusing))
  1008. client_print(g_Defusing, print_center, "%d", g_C4Timer)
  1009. }
  1010. else
  1011. remove_task(TASK_BOMB_TIMER)
  1012. }
  1013.  
  1014. public eStopDefuse(id)
  1015. {
  1016. if( id == g_Defusing )
  1017. {
  1018. g_Defusing = 0
  1019. }
  1020. }
  1021.  
  1022. public bomb_planted(planter)
  1023. {
  1024. g_Defusing = 0
  1025.  
  1026. if (BombPlanted)
  1027. announceEvent(planter, "SET_UP_BOMB")
  1028.  
  1029. if (BombPlantedSound)
  1030. play_sound(0, g_bombplantedsound)
  1031.  
  1032. g_C4Timer = g_c4timer_value + 1
  1033. bombTimer()
  1034. set_task(1.0, "bombTimer", TASK_BOMB_TIMER, "", 0, "b")
  1035. }
  1036.  
  1037. public bomb_planting(planter)
  1038. {
  1039. if (BombPlanting)
  1040. announceEvent(planter, "PLANT_BOMB")
  1041. }
  1042.  
  1043. public bomb_defusing(defuser)
  1044. {
  1045. if (BombDefusing)
  1046. announceEvent(defuser, "DEFUSING_BOMB")
  1047.  
  1048. g_Defusing = defuser
  1049. }
  1050.  
  1051. public bomb_defused(defuser)
  1052. {
  1053. if (BombDefused)
  1054. announceEvent(defuser, "DEFUSED_BOMB")
  1055. if (BombDefusedSound)
  1056. play_sound(0, g_bombdefusedsound)
  1057. }
  1058.  
  1059. public bomb_explode(planter, defuser)
  1060. {
  1061. if( defuser )
  1062. {
  1063. if (BombFailed)
  1064. announceEvent(defuser, "FAILED_DEFU")
  1065. if (BombFailedSound)
  1066. play_sound(0, g_bombfailedsound)
  1067. }
  1068. }
  1069.  
  1070. play_sound(id, sound[])
  1071. {
  1072. if( id )
  1073. {
  1074. if( g_msounds[id] )
  1075. {
  1076. client_cmd(id, "spk %s", sound)
  1077. }
  1078. }
  1079. else
  1080. {
  1081. new players[MAX_PLAYERS], pnum, id
  1082. get_players(players, pnum, "ch")
  1083.  
  1084. for(--pnum; pnum>=0; pnum--)
  1085. {
  1086. id = players[pnum]
  1087. if ( g_connected[id] && g_msounds[id] )
  1088. client_cmd(id, "spk %s", sound)
  1089. }
  1090. }
  1091. }
  1092.  
  1093. public cmdSwitchSounds( id )
  1094. {
  1095. g_msounds[id] = !g_msounds[id]
  1096. client_print(id, print_chat, "MSounds %L", id, g_msounds[id] ? "ENABLED" : "DISABLED")
  1097. set_user_info(id, _msound, g_msounds[id] ? "1" : "0") // will this save setting for next map is player has cl_filterstuffcmd 0 ???
  1098. client_cmd(id, "setinfo %s %s", _msound, g_msounds[id] ? "1" : "0")
  1099. }
  1100.  

_________________
GitHub - mforce


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ultimate hang javitás
HozzászólásElküldve: 2015.10.10. 12:15 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.11.12. 16:39
Hozzászólások: 258
Megköszönt másnak: 87 alkalommal
Megköszönték neki: 2 alkalommal
Köszi :) Mostmár jó :) ezerköszönet

_________________
Nem szégyen megköszönni :)

'The dictator is coming' :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ultimate hang javitás
HozzászólásElküldve: 2015.10.10. 13:28 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Hát nem tudom,hogy hogy jó nálad,mert most olvasom miscstats.ini is kell az 1.8.3-ból meg ilyenek xD
Összedobva: Most nézd meg. Én csak botokkal néztem úgy semmi nem történik xD


Csatolmányok:
miscstats.zip [691.84 KiB]
Letöltve 54 alkalommal.

_________________
GitHub - mforce
Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 11 hozzászólás ]  Oldal 1 2 Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 7 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole