hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.27. 17:45



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Google [Bot] 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  [ 2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: 2 plugin egybe írása.
HozzászólásElküldve: 2015.07.16. 19:53 
Offline
Senior Tag

Csatlakozott: 2013.07.29. 13:15
Hozzászólások: 233
Megköszönt másnak: 125 alkalommal
Sziasztok. 2 plugint kellene nekem egybe írni próbálkoztam vele de nemnagyonakart sikerülni.
Ez a 2 plugint kellene egybe írni.

Késpárbaj!!!
SMA Forráskód: [ Mindet kijelol ]
  1. #define PLUGINNAME "Automatic knife duel"
  2. #define VERSION "0.3"
  3. #define AUTHOR "JGHG"
  4. /*
  5. Copyleft 2005
  6.  
  7.  
  8. AUTOMATIC KNIFE DUEL
  9. ====================
  10. Where I come from, if you cut the wall repeteadly with your knife it means you're challenging your last opponent to a knife duel. <!-- s;-) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";-)\" title=\"kacsintás\" /><!-- s;-) -->
  11.  
  12. I decided to automate this process.
  13.  
  14. If only you and another person on the opposite team remain in the round, you can hit a wall (or another object) with your knife, THREE TIMES in fast succession.
  15. By this action you challenge your opponent to a knife duel. The person you challenge gets a menu where he can accept/decline your
  16. challenge. The challenged person has 10 seconds to decide his mind, else the challenge is automatically declined, and the menu should be closed automatically.
  17.  
  18. Should a knife duel start, it works out pretty much like a round of Knife Arena: you can only use the knife (and the C4!).
  19. As soon as the round ends the Knife Arena mode is turned off.
  20.  
  21. /JGHG
  22.  
  23.  
  24. VERSIONS
  25. ========
  26. 050421 0.3 You must now slash with your knife three times in fast succession to challenge someone.
  27. 050208 0.2 Fixed seconds display.
  28. Bots should now respond correctly and a little human like. They will mostly accept challenges. <!-- s;-) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";-)\" title=\"kacsintás\" /><!-- s;-) -->
  29. Small fixes here and there. <!-- s:-) --><img src=\"{SMILIES_PATH}/icon_e_smile.gif\" alt=\":-)\" title=\"mosoly\" /><!-- s:-) -->
  30. 050208 0.1 First version - largely untested
  31. */
  32.  
  33. #include <amxmodx>
  34. #include <fakemeta>
  35. #include <fun>
  36.  
  37. #define DEBUG
  38.  
  39. #if defined DEBUG
  40. #include <amxmisc>
  41. #endif // defined DEBUG
  42.  
  43. #define MENUSELECT1 0
  44. #define MENUSELECT2 1
  45. #define TASKID_CHALLENGING 2348923
  46. #define TASKID_BOTTHINK 3242321
  47. #define DECIDESECONDS 20
  48. #define ALLOWED_WEAPONS 2
  49. #define KNIFESLASHES 3 // the nr of slashes within a short amount of time until a challenge starts...
  50. // Globals below
  51. new g_allowedWeapons[ALLOWED_WEAPONS] = {CSW_KNIFE, CSW_C4}
  52. new g_MAXPLAYERS
  53. new bool:g_challenging = false
  54. new bool:g_knifeArena = false
  55. new bool:g_noChallengingForAWhile = false
  56. new g_challengemenu
  57. new g_challenger
  58. new g_challenged
  59. new g_challenges[33]
  60. // Globals above
  61.  
  62. public plugin_modules()
  63. {
  64. require_module("fakemeta")
  65. require_module("fun")
  66. }
  67.  
  68. public forward_emitsound(const PIRATE, const Onceuponatimetherewasaverysmall, noise[], const Float:turtlewhoateabiggerturtleand, const Float:afterthatthesmallturtlegot, const veryveryverybig, const theend) {
  69. if (g_noChallengingForAWhile || g_knifeArena || g_challenging || PIRATE < 1 || PIRATE > g_MAXPLAYERS || !is_user_alive(PIRATE) || !equal(noise, "weapons/knife_hitwall1.wav"))
  70. return FMRES_IGNORED
  71.  
  72. new team = get_user_team(PIRATE), otherteam = 0, matchingOpponent = 0
  73. // Make sure exactly one person on each team is alive.
  74. for (new i = 1; i <= g_MAXPLAYERS; i++) {
  75. if (!is_user_connected(i) || !is_user_alive(i) || PIRATE == i)
  76. continue
  77. if (get_user_team(i) == team) {
  78. // No fun.
  79. return FMRES_IGNORED
  80. }
  81. else {
  82. if (++otherteam > 1) {
  83. // No fun.
  84. return FMRES_IGNORED
  85. }
  86. matchingOpponent = i
  87. }
  88. }
  89.  
  90. if (matchingOpponent == 0)
  91. return FMRES_IGNORED
  92.  
  93. if (++g_challenges[PIRATE] >= KNIFESLASHES) {
  94. Challenge(PIRATE, matchingOpponent)
  95. if (is_user_bot(matchingOpponent)) {
  96. new Float:val = float(DECIDESECONDS)
  97. if (val < 2.0)
  98. val = 2.0
  99. remove_task(TASKID_BOTTHINK)
  100. set_task(random_float(1.0, float(DECIDESECONDS) - 1.0), "BotDecides", TASKID_BOTTHINK)
  101. }
  102. g_challenges[PIRATE] = 0
  103. }
  104. else
  105. set_task(1.0, "decreaseChallenges", PIRATE)
  106.  
  107. //client_print(PIRATE, print_chat, "Your challenges: %d", g_challenges[PIRATE])
  108.  
  109. return FMRES_IGNORED
  110. }
  111.  
  112. public decreaseChallenges(id) {
  113. if (--g_challenges[id] < 0)
  114. g_challenges[id] = 0
  115. }
  116.  
  117. public BotDecides() {
  118. if (!g_challenging)
  119. return
  120.  
  121. if (random_num(0,9) > 0)
  122. Accept()
  123. else {
  124. DeclineMsg()
  125. }
  126. g_challenging = false
  127. remove_task(TASKID_CHALLENGING)
  128. }
  129.  
  130. Challenge(challenger, challenged) {
  131. g_challenger = challenger
  132. g_challenged = challenged
  133. g_challenging = true
  134. new challenger_name[32], challenged_name[32]
  135. get_user_name(challenger, challenger_name, 31)
  136. get_user_name(challenged, challenged_name, 31)
  137.  
  138. client_print(challenger, print_chat, "Megakarsz kuzdeni %s -val egy kesparbajban? Varj a valaszara %d masodpercet...", challenged_name, DECIDESECONDS)
  139.  
  140. new menu[1024], keys = MENU_KEY_1 | MENU_KEY_2
  141. format(menu, 1023, "Megakarsz kuzdeni %s egy kesparbajban?^n^nMit teszel? Van %d masodmeprced a valaszra!^n^n\y1\w. Vagjunk bele!^n\y2\w. Nem merek mert gyava kukac vagyok!", challenger_name, DECIDESECONDS)
  142. show_menu(challenged, keys, menu, DECIDESECONDS, "JGHG's automatic knife duel")
  143. set_task(float(DECIDESECONDS), "timed_toolate", TASKID_CHALLENGING)
  144. }
  145.  
  146. public timed_toolate() {
  147. if (g_challenging) {
  148. new challenger_name[32], challenged_name[32]
  149. get_user_name(g_challenger, challenger_name, 31)
  150. get_user_name(g_challenged, challenged_name, 31)
  151. client_print(0, print_chat, "%s Nem v?laszolt %s a kihivasara eleg gyorsan...", challenged_name, challenger_name)
  152. CancelAll()
  153. }
  154. }
  155.  
  156. public client_putinserver(id) {
  157. set_task(25.0, "Announcement", id)
  158.  
  159. return PLUGIN_CONTINUE
  160. }
  161.  
  162. public Announcement(id) {
  163. client_print(id, print_chat, "Amikor mar csak te es egy ellenseged maradt ki tudod hivni ot egy kesparbajra, csak verd a kesed a falhoz! ")
  164. }
  165.  
  166. public challenged_menu(id, key) {
  167. switch (key) {
  168. case MENUSELECT1: {
  169. // Accept
  170. Accept()
  171. }
  172. case MENUSELECT2: {
  173. // Decline
  174. DeclineMsg()
  175. }
  176. }
  177. g_challenging = false
  178. remove_task(TASKID_CHALLENGING)
  179.  
  180. return PLUGIN_HANDLED
  181. }
  182.  
  183. DeclineMsg() {
  184. new challenger_name[32], challenged_name[32]
  185. get_user_name(g_challenger, challenger_name, 31)
  186. get_user_name(g_challenged, challenged_name, 31)
  187. client_print(0, print_chat, "%s Nem fogadta el %s a kihivasat...", challenged_name, challenger_name)
  188. }
  189.  
  190. Accept() {
  191. new challenger_name[32], challenged_name[32]
  192. get_user_name(g_challenger, challenger_name, 31)
  193. get_user_name(g_challenged, challenged_name, 31)
  194.  
  195. client_print(0, print_chat, "%s Elfogadta %s a kihivasat!", challenged_name, challenger_name)
  196. g_knifeArena = true
  197. give_item(g_challenger, "weapon_knife")
  198. give_item(g_challenged, "weapon_knife")
  199. engclient_cmd(g_challenger, "weapon_knife")
  200. engclient_cmd(g_challenged, "weapon_knife")
  201. }
  202.  
  203. public event_holdwpn(id) {
  204. if (!g_knifeArena || !is_user_alive(id))
  205. return PLUGIN_CONTINUE
  206.  
  207. new weaponType = read_data(2)
  208.  
  209. for (new i = 0; i < ALLOWED_WEAPONS; i++) {
  210. if (weaponType == g_allowedWeapons[i])
  211. return PLUGIN_CONTINUE
  212. }
  213.  
  214. engclient_cmd(id, "weapon_knife")
  215.  
  216. return PLUGIN_CONTINUE
  217. }
  218.  
  219. public event_roundend() {
  220. if (g_challenging || g_knifeArena)
  221. CancelAll()
  222. g_noChallengingForAWhile = true
  223. set_task(4.0, "NoChallengingForAWhileToFalse")
  224.  
  225. return PLUGIN_CONTINUE
  226. }
  227.  
  228. public NoChallengingForAWhileToFalse() {
  229. g_noChallengingForAWhile = false
  230. }
  231.  
  232. CancelAll() {
  233. if (g_challenging) {
  234. g_challenging = false
  235. // Close menu of challenged
  236. if (is_user_connected(g_challenged)) {
  237. new usermenu, userkeys
  238. get_user_menu(g_challenged, usermenu, userkeys) // get user menu
  239.  
  240. // Hmm this ain't working :-/
  241. if (usermenu == g_challengemenu) // Close it!
  242. show_menu(g_challenged, 0, "blabla") // show empty menu
  243. }
  244. }
  245. if (g_knifeArena) {
  246. g_knifeArena = false
  247. }
  248. remove_task(TASKID_BOTTHINK)
  249. remove_task(TASKID_CHALLENGING)
  250. }
  251.  
  252. public event_death() {
  253. if (g_challenging || g_knifeArena)
  254. CancelAll()
  255.  
  256. return PLUGIN_CONTINUE
  257. }
  258.  
  259. #if defined DEBUG
  260. public challengefn(id, level, cid) {
  261. if (!cmd_access(id, level, cid, 3))
  262. return PLUGIN_HANDLED
  263.  
  264. new challenger[64], challenged[64]
  265. read_argv(1, challenger, 63)
  266. read_argv(2, challenged, 63)
  267.  
  268. console_print(id, "challenger: %s, challenged: %s", challenger, challenged)
  269.  
  270. new r = str_to_num(challenger)
  271. new d = str_to_num(challenged)
  272. Challenge(r, d)
  273. if (is_user_bot(d))
  274. Accept()
  275.  
  276. return PLUGIN_HANDLED
  277. }
  278. #endif // defined DEBUG
  279.  
  280. public plugin_init() {
  281. register_plugin(PLUGINNAME, VERSION, AUTHOR)
  282. register_event("CurWeapon", "event_holdwpn", "be", "1=1")
  283. register_forward(FM_EmitSound, "forward_emitsound")
  284. g_MAXPLAYERS = get_maxplayers()
  285.  
  286. g_challengemenu = register_menuid("JGHG's automatic knife duel"/*"You are challenged"*/)
  287. register_menucmd(g_challengemenu, MENU_KEY_1 | MENU_KEY_2, "challenged_menu")
  288.  
  289. register_event("DeathMsg", "event_death", "a")
  290. register_event("SendAudio", "event_roundend", "a", "2&%!MRAD_terwin")
  291. register_event("SendAudio", "event_roundend", "a", "2&%!MRAD_ctwin")
  292. register_event("SendAudio", "event_roundend", "a", "2&%!MRAD_rounddraw")
  293.  
  294. #if defined DEBUG
  295. register_clcmd("0challenge", "challengefn", ADMIN_CFG, "<challenger> <challenged> - start knife duel challenge")
  296. #endif // defined DEBUG
  297.  
  298. new Float:maptime = get_cvar_float("mp_timelimit")
  299. if (maptime == 0.0)
  300. maptime = 15.0
  301.  
  302. new Float:anntime = 60.0 * 5.0 // 5 minutes
  303. if (maptime < 5.0)
  304. anntime = maptime / 3.0
  305.  
  306. set_task(anntime, "Announcement", 0, "", 0, "b")
  307. }



Kés Harc [KF] 1.5
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <fun>
  5. #include <hamsandwich>
  6.  
  7. #define VERSION "1.5"
  8.  
  9. new g_enable, knife_fight, g_maxplayers, g_IsBot[33],
  10. g_msgsync, g_PlayerWeapons[33], g_playername[33][32],
  11. g_msgCurWeapon, cvar_showhud, cvar_offnoadm
  12.  
  13. new gBuyCommands[][] =
  14. {
  15. "usp", "glock", "deagle", "p228", "elites", "fn57", "m3", "xm1014", "mp5", "tmp", "p90", "mac10", "ump45", "ak47",
  16. "galil", "famas", "sg552", "m4a1", "aug", "scout", "awp", "g3sg1", "sg550", "m249", "vest", "vesthelm", "flash", "hegren",
  17. "sgren", "defuser", "nvgs", "shield", "primammo", "secammo", "km45", "9x19mm", "nighthawk", "228compact", "12gauge",
  18. "autoshotgun", "smg", "mp", "c90", "cv47", "defender", "clarion", "krieg552", "bullpup", "magnum", "d3au1", "krieg550",
  19. "buyammo1", "buyammo2"
  20. }
  21.  
  22. public plugin_init()
  23. {
  24. register_plugin("Knife Fight", VERSION, "alan_el_more")
  25.  
  26. register_cvar("kf_version", VERSION, FCVAR_SERVER|FCVAR_SPONLY)
  27.  
  28. register_dictionary("Knife_Fight.txt")
  29.  
  30. g_enable = register_cvar("kf_enable", "1")
  31. cvar_showhud = register_cvar("kf_showhud", "1")
  32. cvar_offnoadm = register_cvar("kf_offnoadm", "1")
  33.  
  34. register_clcmd("say /kf", "cmdkf", ADMIN_KICK)
  35.  
  36. register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  37.  
  38. RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
  39. RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon")
  40. RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon")
  41. RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon")
  42.  
  43. g_msgsync = CreateHudSyncObj()
  44. g_maxplayers = get_maxplayers()
  45.  
  46. for (new i; i < sizeof gBuyCommands; i++)
  47. register_clcmd(gBuyCommands[i], "BlockBuyCommands")
  48.  
  49. register_event("CurWeapon", "event_cur_weapon", "b", "1=1")
  50. g_msgCurWeapon = get_user_msgid("CurWeapon")
  51. }
  52.  
  53. public cmdkf(id, level, cid)
  54. {
  55. if(get_pcvar_num(g_enable))
  56. {
  57. if (!cmd_access(id, level, cid, 1))
  58. return PLUGIN_HANDLED
  59.  
  60. if(knife_fight)
  61. {
  62. if(get_pcvar_num(cvar_showhud))
  63. {
  64. set_hudmessage(255, 0, 0, 0.3, 0.0, 1, 0.0, 5.0, 1.0, 1.0, -1)
  65. ShowSyncHudMsg(0, g_msgsync, "[KF] %L", LANG_PLAYER, "HUD_DISABLE_ADM", g_playername[id])
  66. }
  67.  
  68. knife_fight = false
  69.  
  70. for(new id = 1;id <= g_maxplayers;id++)
  71. {
  72. if(is_user_alive(id))
  73. restore_weapons(id)
  74. }
  75. }
  76. else
  77. {
  78. if(get_pcvar_num(cvar_showhud))
  79. {
  80. set_hudmessage(255, 0, 0, 0.3, 0.0, 1, 0.0, 5.0, 1.0, 1.0, -1)
  81. ShowSyncHudMsg(0, g_msgsync, "[KF] %L", LANG_PLAYER, "HUD_ENABLE", g_playername[id])
  82. }
  83.  
  84. knife_fight = true
  85.  
  86. for(new id = 1;id <= g_maxplayers;id++)
  87. {
  88. if(is_user_alive(id))
  89. {
  90. g_PlayerWeapons[id] = pev(id , pev_weapons) &~ ( 1 << 31 )
  91.  
  92. strip_user_weapons(id)
  93. give_item(id, "weapon_knife")
  94. }
  95. }
  96. }
  97. }
  98. else
  99. client_print(id, print_chat, "[KF] %L", id, "KF_DISABLE")
  100.  
  101. return PLUGIN_HANDLED
  102. }
  103.  
  104. public event_round_start()
  105. {
  106. if(get_pcvar_num(cvar_offnoadm) && !fnGetAdms() && knife_fight)
  107. {
  108. knife_fight = false
  109.  
  110. if(get_pcvar_num(cvar_showhud))
  111. {
  112. set_hudmessage(255, 0, 0, 0.4, 0.0, 1, 0.0, 5.0, 1.0, 1.0, -1)
  113. ShowSyncHudMsg(0, g_msgsync, "[KF] %L", LANG_PLAYER, "HUD_DISABLE")
  114. }
  115.  
  116. return PLUGIN_HANDLED
  117. }
  118.  
  119. if(knife_fight)
  120. {
  121. if(get_pcvar_num(cvar_showhud))
  122. {
  123. set_hudmessage(255, 0, 0, 0.4, 0.0, 1, 0.0, 5.0, 1.0, 1.0, -1)
  124. ShowSyncHudMsg(0, g_msgsync, "[KF] %L", LANG_PLAYER, "HUD_KF")
  125. }
  126. }
  127.  
  128. return PLUGIN_CONTINUE
  129. }
  130.  
  131. public fw_PlayerSpawn_Post(id)
  132. {
  133. if (!is_user_alive(id))
  134. return
  135.  
  136. if(get_pcvar_num(g_enable) && knife_fight)
  137. {
  138. strip_user_weapons(id)
  139. give_item(id, "weapon_knife")
  140. }
  141. }
  142.  
  143. public fw_TouchWeapon(weapon, id)
  144. {
  145. if (knife_fight && (1 <= id <= g_maxplayers) && !g_IsBot[id])
  146. return HAM_SUPERCEDE
  147.  
  148. return HAM_IGNORED
  149. }
  150.  
  151. public client_putinserver(id)
  152. {
  153. g_IsBot[id] = is_user_bot(id)
  154.  
  155. get_user_name(id, g_playername[id], charsmax(g_playername[]))
  156. }
  157.  
  158. public client_infochanged(id)
  159. get_user_name(id, g_playername[id], charsmax(g_playername[]))
  160.  
  161. public restore_weapons(id)
  162. {
  163. new iValue = g_PlayerWeapons[id]
  164.  
  165. for(new j = 1 ; j <= 30 ; j++)
  166. {
  167. if ((1 & (iValue >> j)) && (j != 2) && (j != CSW_C4) && (j != CSW_KNIFE))
  168. {
  169. static szWeapon[32]
  170. get_weaponname(j, szWeapon, 31)
  171. give_item(id, szWeapon)
  172. }
  173. }
  174. }
  175.  
  176. fnGetAdms()
  177. {
  178. new adms, id
  179. adms = 0
  180.  
  181. for(id = 1;id <= g_maxplayers;id++)
  182. {
  183. if(get_user_flags(id) & ADMIN_KICK)
  184. adms++
  185. }
  186.  
  187. return adms
  188. }
  189.  
  190. public BlockBuyCommands(id)
  191. return knife_fight ? PLUGIN_HANDLED : PLUGIN_CONTINUE
  192.  
  193. public event_cur_weapon(id)
  194. {
  195. if (!is_user_alive(id))
  196. return;
  197.  
  198. if (knife_fight && !((1<<read_data(2)) & (1<<CSW_KNIFE)))
  199. {
  200. engclient_cmd(id, "weapon_knife")
  201.  
  202. emessage_begin(MSG_ONE, g_msgCurWeapon, _, id)
  203. ewrite_byte(1)
  204. ewrite_byte(CSW_KNIFE)
  205. ewrite_byte(-1)
  206. emessage_end()
  207. }
  208. }
  209.  


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: 2 plugin egybe írása.
HozzászólásElküldve: 2015.07.20. 15:46 
Offline
Beavatott

Csatlakozott: 2014.11.12. 18:02
Hozzászólások: 72
Megköszönt másnak: 1 alkalommal
Megköszönték neki: 5 alkalommal
Tessék, próbáld ki.
SMA Forráskód: [ Mindet kijelol ]
  1. #define PLUGINNAME "Automatic knife duel"
  2. #define VERSION "0.3"
  3. #define AUTHOR "JGHG"
  4. /*
  5. Copyleft 2005
  6.  
  7.  
  8. AUTOMATIC KNIFE DUEL
  9. ====================
  10. Where I come from, if you cut the wall repeteadly with your knife it means you're challenging your last opponent to a knife duel. <!-- s;-) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";-)\" title=\"kacsintás\" /><!-- s;-) -->
  11.  
  12. I decided to automate this process.
  13.  
  14. If only you and another person on the opposite team remain in the round, you can hit a wall (or another object) with your knife, THREE TIMES in fast succession.
  15. By this action you challenge your opponent to a knife duel. The person you challenge gets a menu where he can accept/decline your
  16. challenge. The challenged person has 10 seconds to decide his mind, else the challenge is automatically declined, and the menu should be closed automatically.
  17.  
  18. Should a knife duel start, it works out pretty much like a round of Knife Arena: you can only use the knife (and the C4!).
  19. As soon as the round ends the Knife Arena mode is turned off.
  20.  
  21. /JGHG
  22.  
  23.  
  24. VERSIONS
  25. ========
  26. 050421 0.3 You must now slash with your knife three times in fast succession to challenge someone.
  27. 050208 0.2 Fixed seconds display.
  28. Bots should now respond correctly and a little human like. They will mostly accept challenges. <!-- s;-) --><img src=\"{SMILIES_PATH}/icon_e_wink.gif\" alt=\";-)\" title=\"kacsintás\" /><!-- s;-) -->
  29. Small fixes here and there. <!-- s:-) --><img src=\"{SMILIES_PATH}/icon_e_smile.gif\" alt=\":-)\" title=\"mosoly\" /><!-- s:-) -->
  30. 050208 0.1 First version - largely untested
  31. */
  32.  
  33. #include <amxmodx>
  34. #include <amxmisc>
  35. #include <fakemeta>
  36. #include <fun>
  37. #include <hamsandwich>
  38.  
  39. #define DEBUG
  40.  
  41. #if defined DEBUG
  42. #include <amxmisc>
  43. #endif // defined DEBUG
  44.  
  45. #define MENUSELECT1 0
  46. #define MENUSELECT2 1
  47. #define TASKID_CHALLENGING 2348923
  48. #define TASKID_BOTTHINK 3242321
  49. #define DECIDESECONDS 20
  50. #define ALLOWED_WEAPONS 2
  51. #define KNIFESLASHES 3 // the nr of slashes within a short amount of time until a challenge starts...
  52. // Globals below
  53. new g_allowedWeapons[ALLOWED_WEAPONS] = {CSW_KNIFE, CSW_C4}
  54. new g_MAXPLAYERS
  55. new bool:g_challenging = false
  56. new bool:g_knifeArena = false
  57. new bool:g_noChallengingForAWhile = false
  58. new g_challengemenu
  59. new g_challenger
  60. new g_challenged
  61. new g_challenges[33]
  62. // Globals above
  63.  
  64. new g_enable, knife_fight, g_maxplayers, g_IsBot[33],
  65. g_msgsync, g_PlayerWeapons[33], g_playername[33][32],
  66. g_msgCurWeapon, cvar_showhud, cvar_offnoadm
  67.  
  68. new gBuyCommands[][] =
  69. {
  70. "usp", "glock", "deagle", "p228", "elites", "fn57", "m3", "xm1014", "mp5", "tmp", "p90", "mac10", "ump45", "ak47",
  71. "galil", "famas", "sg552", "m4a1", "aug", "scout", "awp", "g3sg1", "sg550", "m249", "vest", "vesthelm", "flash", "hegren",
  72. "sgren", "defuser", "nvgs", "shield", "primammo", "secammo", "km45", "9x19mm", "nighthawk", "228compact", "12gauge",
  73. "autoshotgun", "smg", "mp", "c90", "cv47", "defender", "clarion", "krieg552", "bullpup", "magnum", "d3au1", "krieg550",
  74. "buyammo1", "buyammo2"
  75. }
  76.  
  77. public plugin_modules()
  78. {
  79. require_module("fakemeta")
  80. require_module("fun")
  81. }
  82.  
  83. public forward_emitsound(const PIRATE, const Onceuponatimetherewasaverysmall, noise[], const Float:turtlewhoateabiggerturtleand, const Float:afterthatthesmallturtlegot, const veryveryverybig, const theend) {
  84. if (g_noChallengingForAWhile || g_knifeArena || g_challenging || PIRATE < 1 || PIRATE > g_MAXPLAYERS || !is_user_alive(PIRATE) || !equal(noise, "weapons/knife_hitwall1.wav"))
  85. return FMRES_IGNORED
  86.  
  87. new team = get_user_team(PIRATE), otherteam = 0, matchingOpponent = 0
  88. // Make sure exactly one person on each team is alive.
  89. for (new i = 1; i <= g_MAXPLAYERS; i++) {
  90. if (!is_user_connected(i) || !is_user_alive(i) || PIRATE == i)
  91. continue
  92. if (get_user_team(i) == team) {
  93. // No fun.
  94. return FMRES_IGNORED
  95. }
  96. else {
  97. if (++otherteam > 1) {
  98. // No fun.
  99. return FMRES_IGNORED
  100. }
  101. matchingOpponent = i
  102. }
  103. }
  104.  
  105. if (matchingOpponent == 0)
  106. return FMRES_IGNORED
  107.  
  108. if (++g_challenges[PIRATE] >= KNIFESLASHES) {
  109. Challenge(PIRATE, matchingOpponent)
  110. if (is_user_bot(matchingOpponent)) {
  111. new Float:val = float(DECIDESECONDS)
  112. if (val < 2.0)
  113. val = 2.0
  114. remove_task(TASKID_BOTTHINK)
  115. set_task(random_float(1.0, float(DECIDESECONDS) - 1.0), "BotDecides", TASKID_BOTTHINK)
  116. }
  117. g_challenges[PIRATE] = 0
  118. }
  119. else
  120. set_task(1.0, "decreaseChallenges", PIRATE)
  121.  
  122. //client_print(PIRATE, print_chat, "Your challenges: %d", g_challenges[PIRATE])
  123.  
  124. return FMRES_IGNORED
  125. }
  126.  
  127. public decreaseChallenges(id) {
  128. if (--g_challenges[id] < 0)
  129. g_challenges[id] = 0
  130. }
  131.  
  132. public BotDecides() {
  133. if (!g_challenging)
  134. return
  135.  
  136. if (random_num(0,9) > 0)
  137. Accept()
  138. else {
  139. DeclineMsg()
  140. }
  141. g_challenging = false
  142. remove_task(TASKID_CHALLENGING)
  143. }
  144.  
  145. Challenge(challenger, challenged) {
  146. g_challenger = challenger
  147. g_challenged = challenged
  148. g_challenging = true
  149. new challenger_name[32], challenged_name[32]
  150. get_user_name(challenger, challenger_name, 31)
  151. get_user_name(challenged, challenged_name, 31)
  152.  
  153. client_print(challenger, print_chat, "Megakarsz kuzdeni %s -val egy kesparbajban? Varj a valaszara %d masodpercet...", challenged_name, DECIDESECONDS)
  154.  
  155. new menu[1024], keys = MENU_KEY_1 | MENU_KEY_2
  156. format(menu, 1023, "Megakarsz kuzdeni %s egy kesparbajban?^n^nMit teszel? Van %d masodmeprced a valaszra!^n^n\y1\w. Vagjunk bele!^n\y2\w. Nem merek mert gyava kukac vagyok!", challenger_name, DECIDESECONDS)
  157. show_menu(challenged, keys, menu, DECIDESECONDS, "JGHG's automatic knife duel")
  158. set_task(float(DECIDESECONDS), "timed_toolate", TASKID_CHALLENGING)
  159. }
  160.  
  161. public timed_toolate() {
  162. if (g_challenging) {
  163. new challenger_name[32], challenged_name[32]
  164. get_user_name(g_challenger, challenger_name, 31)
  165. get_user_name(g_challenged, challenged_name, 31)
  166. client_print(0, print_chat, "%s Nem v?laszolt %s a kihivasara eleg gyorsan...", challenged_name, challenger_name)
  167. CancelAll()
  168. }
  169. }
  170.  
  171. public client_putinserver(id) {
  172. set_task(25.0, "Announcement", id)
  173.  
  174. g_IsBot[id] = is_user_bot(id)
  175.  
  176. get_user_name(id, g_playername[id], charsmax(g_playername[]))
  177.  
  178. return PLUGIN_CONTINUE
  179. }
  180.  
  181. public Announcement(id) {
  182. client_print(id, print_chat, "Amikor mar csak te es egy ellenseged maradt ki tudod hivni ot egy kesparbajra, csak verd a kesed a falhoz! ")
  183. }
  184.  
  185. public challenged_menu(id, key) {
  186. switch (key) {
  187. case MENUSELECT1: {
  188. // Accept
  189. Accept()
  190. }
  191. case MENUSELECT2: {
  192. // Decline
  193. DeclineMsg()
  194. }
  195. }
  196. g_challenging = false
  197. remove_task(TASKID_CHALLENGING)
  198.  
  199. return PLUGIN_HANDLED
  200. }
  201.  
  202. DeclineMsg() {
  203. new challenger_name[32], challenged_name[32]
  204. get_user_name(g_challenger, challenger_name, 31)
  205. get_user_name(g_challenged, challenged_name, 31)
  206. client_print(0, print_chat, "%s Nem fogadta el %s a kihivasat...", challenged_name, challenger_name)
  207. }
  208.  
  209. Accept() {
  210. new challenger_name[32], challenged_name[32]
  211. get_user_name(g_challenger, challenger_name, 31)
  212. get_user_name(g_challenged, challenged_name, 31)
  213.  
  214. client_print(0, print_chat, "%s Elfogadta %s a kihivasat!", challenged_name, challenger_name)
  215. g_knifeArena = true
  216. give_item(g_challenger, "weapon_knife")
  217. give_item(g_challenged, "weapon_knife")
  218. engclient_cmd(g_challenger, "weapon_knife")
  219. engclient_cmd(g_challenged, "weapon_knife")
  220. }
  221.  
  222. public event_holdwpn(id) {
  223. if (!g_knifeArena || !is_user_alive(id))
  224. return PLUGIN_CONTINUE
  225.  
  226. new weaponType = read_data(2)
  227.  
  228. for (new i = 0; i < ALLOWED_WEAPONS; i++) {
  229. if (weaponType == g_allowedWeapons[i])
  230. return PLUGIN_CONTINUE
  231. }
  232.  
  233. engclient_cmd(id, "weapon_knife")
  234.  
  235. return PLUGIN_CONTINUE
  236. }
  237.  
  238. public event_roundend() {
  239. if (g_challenging || g_knifeArena)
  240. CancelAll()
  241. g_noChallengingForAWhile = true
  242. set_task(4.0, "NoChallengingForAWhileToFalse")
  243.  
  244. return PLUGIN_CONTINUE
  245. }
  246.  
  247. public NoChallengingForAWhileToFalse() {
  248. g_noChallengingForAWhile = false
  249. }
  250.  
  251. CancelAll() {
  252. if (g_challenging) {
  253. g_challenging = false
  254. // Close menu of challenged
  255. if (is_user_connected(g_challenged)) {
  256. new usermenu, userkeys
  257. get_user_menu(g_challenged, usermenu, userkeys) // get user menu
  258.  
  259. // Hmm this ain't working :-/
  260. if (usermenu == g_challengemenu) // Close it!
  261. show_menu(g_challenged, 0, "blabla") // show empty menu
  262. }
  263. }
  264. if (g_knifeArena) {
  265. g_knifeArena = false
  266. }
  267. remove_task(TASKID_BOTTHINK)
  268. remove_task(TASKID_CHALLENGING)
  269. }
  270.  
  271. public event_death() {
  272. if (g_challenging || g_knifeArena)
  273. CancelAll()
  274.  
  275. return PLUGIN_CONTINUE
  276. }
  277.  
  278. #if defined DEBUG
  279. public challengefn(id, level, cid) {
  280. if (!cmd_access(id, level, cid, 3))
  281. return PLUGIN_HANDLED
  282.  
  283. new challenger[64], challenged[64]
  284. read_argv(1, challenger, 63)
  285. read_argv(2, challenged, 63)
  286.  
  287. console_print(id, "challenger: %s, challenged: %s", challenger, challenged)
  288.  
  289. new r = str_to_num(challenger)
  290. new d = str_to_num(challenged)
  291. Challenge(r, d)
  292. if (is_user_bot(d))
  293. Accept()
  294.  
  295. return PLUGIN_HANDLED
  296. }
  297. #endif // defined DEBUG
  298.  
  299. public plugin_init() {
  300. register_plugin(PLUGINNAME, VERSION, AUTHOR)
  301. register_event("CurWeapon", "event_holdwpn", "be", "1=1")
  302. register_forward(FM_EmitSound, "forward_emitsound")
  303. g_MAXPLAYERS = get_maxplayers()
  304.  
  305. g_challengemenu = register_menuid("JGHG's automatic knife duel"/*"You are challenged"*/)
  306. register_menucmd(g_challengemenu, MENU_KEY_1 | MENU_KEY_2, "challenged_menu")
  307.  
  308. register_event("DeathMsg", "event_death", "a")
  309. register_event("SendAudio", "event_roundend", "a", "2&%!MRAD_terwin")
  310. register_event("SendAudio", "event_roundend", "a", "2&%!MRAD_ctwin")
  311. register_event("SendAudio", "event_roundend", "a", "2&%!MRAD_rounddraw")
  312.  
  313. register_cvar("kf_version", VERSION, FCVAR_SERVER|FCVAR_SPONLY)
  314.  
  315. register_dictionary("Knife_Fight.txt")
  316.  
  317. g_enable = register_cvar("kf_enable", "1")
  318. cvar_showhud = register_cvar("kf_showhud", "1")
  319. cvar_offnoadm = register_cvar("kf_offnoadm", "1")
  320.  
  321. register_clcmd("say /kf", "cmdkf", ADMIN_KICK)
  322.  
  323. register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
  324.  
  325. RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
  326. RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon")
  327. RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon")
  328. RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon")
  329.  
  330. g_msgsync = CreateHudSyncObj()
  331. g_maxplayers = get_maxplayers()
  332.  
  333. for (new i; i < sizeof gBuyCommands; i++)
  334. register_clcmd(gBuyCommands[i], "BlockBuyCommands")
  335.  
  336. register_event("CurWeapon", "event_cur_weapon", "b", "1=1")
  337. g_msgCurWeapon = get_user_msgid("CurWeapon")
  338.  
  339. #if defined DEBUG
  340. register_clcmd("0challenge", "challengefn", ADMIN_CFG, "<challenger> <challenged> - start knife duel challenge")
  341. #endif // defined DEBUG
  342.  
  343. new Float:maptime = get_cvar_float("mp_timelimit")
  344. if (maptime == 0.0)
  345. maptime = 15.0
  346.  
  347. new Float:anntime = 60.0 * 5.0 // 5 minutes
  348. if (maptime < 5.0)
  349. anntime = maptime / 3.0
  350.  
  351. set_task(anntime, "Announcement", 0, "", 0, "b")
  352. }
  353.  
  354. public cmdkf(id, level, cid)
  355. {
  356. if(get_pcvar_num(g_enable))
  357. {
  358. if (!cmd_access(id, level, cid, 1))
  359. return PLUGIN_HANDLED
  360.  
  361. if(knife_fight)
  362. {
  363. if(get_pcvar_num(cvar_showhud))
  364. {
  365. set_hudmessage(255, 0, 0, 0.3, 0.0, 1, 0.0, 5.0, 1.0, 1.0, -1)
  366. ShowSyncHudMsg(0, g_msgsync, "[KF] %L", LANG_PLAYER, "HUD_DISABLE_ADM", g_playername[id])
  367. }
  368.  
  369. knife_fight = false
  370.  
  371. for(new id = 1;id <= g_maxplayers;id++)
  372. {
  373. if(is_user_alive(id))
  374. restore_weapons(id)
  375. }
  376. }
  377. else
  378. {
  379. if(get_pcvar_num(cvar_showhud))
  380. {
  381. set_hudmessage(255, 0, 0, 0.3, 0.0, 1, 0.0, 5.0, 1.0, 1.0, -1)
  382. ShowSyncHudMsg(0, g_msgsync, "[KF] %L", LANG_PLAYER, "HUD_ENABLE", g_playername[id])
  383. }
  384.  
  385. knife_fight = true
  386.  
  387. for(new id = 1;id <= g_maxplayers;id++)
  388. {
  389. if(is_user_alive(id))
  390. {
  391. g_PlayerWeapons[id] = pev(id , pev_weapons) &~ ( 1 << 31 )
  392.  
  393. strip_user_weapons(id)
  394. give_item(id, "weapon_knife")
  395. }
  396. }
  397. }
  398. }
  399. else
  400. client_print(id, print_chat, "[KF] %L", id, "KF_DISABLE")
  401.  
  402. return PLUGIN_HANDLED
  403. }
  404.  
  405. public event_round_start()
  406. {
  407. if(get_pcvar_num(cvar_offnoadm) && !fnGetAdms() && knife_fight)
  408. {
  409. knife_fight = false
  410.  
  411. if(get_pcvar_num(cvar_showhud))
  412. {
  413. set_hudmessage(255, 0, 0, 0.4, 0.0, 1, 0.0, 5.0, 1.0, 1.0, -1)
  414. ShowSyncHudMsg(0, g_msgsync, "[KF] %L", LANG_PLAYER, "HUD_DISABLE")
  415. }
  416.  
  417. return PLUGIN_HANDLED
  418. }
  419.  
  420. if(knife_fight)
  421. {
  422. if(get_pcvar_num(cvar_showhud))
  423. {
  424. set_hudmessage(255, 0, 0, 0.4, 0.0, 1, 0.0, 5.0, 1.0, 1.0, -1)
  425. ShowSyncHudMsg(0, g_msgsync, "[KF] %L", LANG_PLAYER, "HUD_KF")
  426. }
  427. }
  428.  
  429. return PLUGIN_CONTINUE
  430. }
  431.  
  432. public fw_PlayerSpawn_Post(id)
  433. {
  434. if (!is_user_alive(id))
  435. return
  436.  
  437. if(get_pcvar_num(g_enable) && knife_fight)
  438. {
  439. strip_user_weapons(id)
  440. give_item(id, "weapon_knife")
  441. }
  442. }
  443.  
  444. public fw_TouchWeapon(weapon, id)
  445. {
  446. if (knife_fight && (1 <= id <= g_maxplayers) && !g_IsBot[id])
  447. return HAM_SUPERCEDE
  448.  
  449. return HAM_IGNORED
  450. }
  451.  
  452. public client_infochanged(id)
  453. get_user_name(id, g_playername[id], charsmax(g_playername[]))
  454.  
  455. public restore_weapons(id)
  456. {
  457. new iValue = g_PlayerWeapons[id]
  458.  
  459. for(new j = 1 ; j <= 30 ; j++)
  460. {
  461. if ((1 & (iValue >> j)) && (j != 2) && (j != CSW_C4) && (j != CSW_KNIFE))
  462. {
  463. static szWeapon[32]
  464. get_weaponname(j, szWeapon, 31)
  465. give_item(id, szWeapon)
  466. }
  467. }
  468. }
  469.  
  470. fnGetAdms()
  471. {
  472. new adms, id
  473. adms = 0
  474.  
  475. for(id = 1;id <= g_maxplayers;id++)
  476. {
  477. if(get_user_flags(id) & ADMIN_KICK)
  478. adms++
  479. }
  480.  
  481. return adms
  482. }
  483.  
  484. public BlockBuyCommands(id)
  485. return knife_fight ? PLUGIN_HANDLED : PLUGIN_CONTINUE
  486.  
  487. public event_cur_weapon(id)
  488. {
  489. if (!is_user_alive(id))
  490. return;
  491.  
  492. if (knife_fight && !((1<<read_data(2)) & (1<<CSW_KNIFE)))
  493. {
  494. engclient_cmd(id, "weapon_knife")
  495.  
  496. emessage_begin(MSG_ONE, g_msgCurWeapon, _, id)
  497. ewrite_byte(1)
  498. ewrite_byte(CSW_KNIFE)
  499. ewrite_byte(-1)
  500. emessage_end()
  501. }
  502. }


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  [ 2 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 23 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