HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /*
  2.   BBk
  3.   www.facebook.com/groups/deathoflegend
  4. */
  5.  
  6. #include <amxmodx>
  7. #include <hamsandwich>
  8. #include <cstrike>
  9.  
  10. #define PLUGIN "Trade Money"
  11. #define VERSION "1.3"
  12. #define AUTHOR "GlaDiuS"
  13.  
  14. new gidPlayer[33]
  15. new bool:openmenu[33]
  16. new maxreqmenu[33], maxgivemenu[33]
  17. new g_maxplayers
  18. new g_msgSayText
  19. new Item[900]
  20.  
  21. new Enable, maxreq, maxgive
  22.  
  23. public plugin_init() {
  24. register_plugin(PLUGIN, VERSION, AUTHOR)
  25.  
  26. RegisterHam( Ham_Spawn, "player", "fwSpawn", 1)
  27.  
  28. register_clcmd("say /money", "MainMenu")
  29. register_clcmd("say .money", "MainMenu")
  30. register_clcmd("say !money", "MainMenu")
  31. register_clcmd("playermoney", "player")
  32.  
  33. register_dictionary("penz_utalas.txt")
  34.  
  35. Enable = register_cvar("money_enable", "1")
  36. maxreq = register_cvar("money_maxrequest", "5")
  37. maxgive = register_cvar("money_maxgive", "5")
  38.  
  39. g_maxplayers = get_maxplayers()
  40. g_msgSayText = get_user_msgid("SayText")
  41. }
  42.  
  43. public client_putinserver(id) {
  44. openmenu[id] = false
  45. maxreqmenu[id] = 0
  46. maxgivemenu[id] = 0
  47. }
  48.  
  49. public fwSpawn(id) {
  50. openmenu[id] = false
  51. maxreqmenu[id] = 0
  52. maxgivemenu[id] = 0
  53. ChatColor(id, "%L %L",id, "PREFIX", id, "SPAWNMSG")
  54. }
  55.  
  56. public MainMenu(id) {
  57. if(get_pcvar_num(Enable))
  58. {
  59. if(!openmenu[id] || is_user_alive(id)) {
  60.  
  61. formatex(Item, charsmax(Item), "%L", id, "MAINMENUTITLE")
  62. new Menu = menu_create(Item, "MainHandler")
  63.  
  64. formatex(Item, charsmax(Item), "%L", id, "MAINMENUITEM1")
  65. menu_additem(Menu, Item, "1")
  66. formatex(Item, charsmax(Item), "%L", id, "MAINMENUITEM2")
  67. menu_additem(Menu, Item, "2")
  68.  
  69. formatex(Item, charsmax(Item), "%L", id, "EXIT")
  70. menu_setprop(Menu, MPROP_EXITNAME, Item)
  71. menu_display(id, Menu, 0)
  72.  
  73. openmenu[id] = true
  74. }
  75. }
  76. return PLUGIN_HANDLED
  77. }
  78.  
  79. public MainHandler(id, Menu, item)
  80. {
  81. if (item == MENU_EXIT)
  82. {
  83. menu_destroy(Menu)
  84. openmenu[id] = false
  85. return PLUGIN_HANDLED
  86. }
  87.  
  88. new data[6], iName[64]
  89. new access, callback
  90. menu_item_getinfo(Menu, item, access, data,5, iName, 63, callback)
  91.  
  92.  
  93. new key = str_to_num(data)
  94. switch (key)
  95. {
  96. case 1:
  97. {
  98. GiveMoneyMenu(id)
  99. }
  100. case 2:
  101. {
  102. RequestMoneyMenu(id)
  103. }
  104. }
  105. menu_destroy(Menu)
  106. return PLUGIN_HANDLED
  107. }
  108.  
  109. public GiveMoneyMenu(id)
  110. {
  111. if(maxgivemenu[id] <= get_pcvar_num(maxgive))
  112. {
  113. formatex(Item, charsmax(Item), "%L", id, "GIVEMENUTITLE")
  114. new wMenu = menu_create(Item, "GiveMoneyHandler")
  115. new Pos[3], Name[32]
  116.  
  117. for (new i = 1; i <= g_maxplayers; i++)
  118. {
  119. if (!is_user_connected(i) || !is_user_alive(i) || i == id)
  120. {
  121. openmenu[id] = false
  122. continue
  123. }
  124. num_to_str(i, Pos, sizeof(Pos)-1)
  125. get_user_name(i, Name, sizeof(Name)-1)
  126. formatex(Item, charsmax(Item), "\w%s \r$%d", Name, cs_get_user_money(i))
  127. menu_additem(wMenu, Item, Pos)
  128. }
  129. formatex(Item, charsmax(Item), "%L", id, "EXIT")
  130. menu_setprop(wMenu, MPROP_EXITNAME, Item)
  131. menu_display(id, wMenu, 0)
  132. }
  133. else
  134. {
  135. ChatColor(id, "%L %L",id, "PREFIX", id, "LIMITOPEN", maxgivemenu[id])
  136. }
  137. }
  138.  
  139. public GiveMoneyHandler(id, wMenu, item)
  140. {
  141. if (item == MENU_EXIT)
  142. {
  143. menu_destroy(wMenu)
  144. openmenu[id] = false
  145. return PLUGIN_HANDLED
  146. }
  147.  
  148. new Data[6], Name[64]
  149. new Access, Callback
  150. menu_item_getinfo(wMenu, item, Access, Data, sizeof(Data)-1, Name, sizeof(Name)-1, Callback)
  151.  
  152. new key = str_to_num(Data)
  153. gidPlayer[key] = id
  154. client_cmd(id, "messagemode playermoney")
  155. maxgivemenu[id]++
  156.  
  157. menu_destroy(wMenu)
  158. return PLUGIN_HANDLED
  159. }
  160.  
  161. public RequestMoneyMenu(id)
  162. {
  163. if(maxreqmenu[id] <= get_pcvar_num(maxreq))
  164. {
  165. formatex(Item, charsmax(Item), "%L", id, "REQMENUTITLE")
  166. new wMenu = menu_create(Item, "RequestMoneyHandler")
  167. new Pos[3], Name[32]
  168.  
  169. for (new i = 1; i <= g_maxplayers; i++)
  170. {
  171. if (!is_user_connected(i) || !is_user_alive(i) || i == id)
  172. {
  173. openmenu[id] = false
  174. continue
  175. }
  176. num_to_str(i, Pos, sizeof(Pos)-1)
  177. get_user_name(i, Name, sizeof(Name)-1)
  178. formatex(Item, charsmax(Item), "\w%s \r$%d", Name, cs_get_user_money(i))
  179. menu_additem(wMenu, Item, Pos)
  180. }
  181. formatex(Item, charsmax(Item), "%L", id, "EXIT")
  182. menu_setprop(wMenu, MPROP_EXITNAME, Item)
  183. menu_display(id, wMenu, 0)
  184. }
  185. else
  186. {
  187. ChatColor(id, "%L %L",id, "PREFIX", id, "LIMITOPEN", maxreqmenu[id])
  188. }
  189. }
  190.  
  191. public RequestMoneyHandler(id, wMenu, item)
  192. {
  193. if (item == MENU_EXIT)
  194. {
  195. menu_destroy(wMenu)
  196. openmenu[id] = false
  197. return PLUGIN_HANDLED
  198. }
  199.  
  200. new Data[6], Name[64]
  201. new Access, Callback
  202. menu_item_getinfo(wMenu, item, Access, Data, sizeof(Data)-1, Name, sizeof(Name)-1, Callback)
  203.  
  204. new key = str_to_num(Data)
  205. gidPlayer[key] = id
  206. ConfirmationMenu(key)
  207.  
  208. menu_destroy(wMenu)
  209. return PLUGIN_HANDLED
  210. }
  211.  
  212. public ConfirmationMenu(id) {
  213. new Name[32];get_user_name(gidPlayer[id], Name, 31)
  214. formatex(Item, charsmax(Item), "%L", id, "CONFMENUTITLE", Name)
  215. new Menu = menu_create(Item, "ConfirmationHandler")
  216.  
  217. formatex(Item, charsmax(Item), "%L", id, "CONFMENUITEM1")
  218. menu_additem(Menu, Item, "1")
  219. formatex(Item, charsmax(Item), "%L", id, "CONFMENUITEM2")
  220. menu_additem(Menu, Item, "2")
  221.  
  222. formatex(Item, charsmax(Item), "%L", id, "EXIT")
  223. menu_setprop(Menu, MPROP_EXITNAME, Item)
  224. menu_display(id, Menu, 0)
  225.  
  226. return PLUGIN_HANDLED
  227. }
  228.  
  229. public ConfirmationHandler(id, Menu, item)
  230. {
  231. if (item == MENU_EXIT)
  232. {
  233. ConfirmationMenu(id)
  234. return PLUGIN_HANDLED
  235. }
  236.  
  237. new data[6], iName[33]
  238. new access, callback
  239. menu_item_getinfo(Menu, item, access, data,5, iName, 63, callback)
  240.  
  241. new Name[32]
  242. get_user_name(id,Name,31)
  243. get_user_name(gidPlayer[id], iName, 31)
  244.  
  245. new key = str_to_num(data)
  246. switch (key)
  247. {
  248. case 1:
  249. {
  250. ChatColor(id, "%L %L",id, "PREFIX",id, "PLAYERACCEPT", iName)
  251. ChatColor(gidPlayer[id], "%L %L",id, "PREFIX", id, "TARGETACCEPT", Name)
  252. client_cmd(id, "messagemode playermoney")
  253. maxreqmenu[id]++
  254. }
  255. case 2:
  256. {
  257. ChatColor(id, "%L %L",id, "PREFIX",id, "PLAYERREFUSE")
  258. ChatColor(gidPlayer[id], "%L %L",id, "PREFIX",id, "TARGETREFUSE", Name)
  259. openmenu[id] = false
  260. }
  261. }
  262. menu_destroy(Menu)
  263. return PLUGIN_HANDLED
  264. }
  265.  
  266. public player(id)
  267. {
  268. if(get_pcvar_num(Enable))
  269. {
  270. new say[300]
  271. read_args(say, charsmax(say))
  272.  
  273. remove_quotes(say)
  274.  
  275. if(!is_str_num(say) || equal(say, ""))
  276. return PLUGIN_HANDLED
  277.  
  278. money(id, say)
  279. }
  280. return PLUGIN_CONTINUE
  281. }
  282.  
  283. money(id, say[]) {
  284. new amount = str_to_num(say)
  285. new victim = gidPlayer[id]
  286.  
  287. if( victim > 0 ) {
  288. new name[32], vname[32]
  289. new idMoney = cs_get_user_money(id)
  290. new vMoney = cs_get_user_money(victim)
  291.  
  292. get_user_name(id, name, charsmax(name))
  293. get_user_name(victim, vname, 31)
  294.  
  295. if(amount > idMoney)
  296. {
  297. ChatColor(id, "%L %L",id, "PREFIX",id, "ENOUGHMONEY")
  298. client_cmd(id, "messagemode playermoney")
  299. return PLUGIN_HANDLED
  300. }
  301.  
  302. else {
  303. cs_set_user_money(id, cs_get_user_money(id) - amount)
  304. cs_set_user_money(victim, cs_get_user_money(victim) + amount)
  305.  
  306. if(vMoney > 16000)
  307. {
  308. cs_set_user_money(victim, 16000)
  309. }
  310.  
  311. ChatColor(id, "%L %L",id, "PREFIX", id, "AMOUNTGIVE", amount, vname)
  312. ChatColor(victim, "%L %L",id, "PREFIX", id, "AMOUNTRECEIVE", name, amount)
  313. }
  314. openmenu[id] = false
  315. }
  316. else {
  317. return PLUGIN_HANDLED
  318. }
  319. return PLUGIN_HANDLED
  320. }
  321.  
  322. stock ChatColor(const id, const input[], any:...)
  323. {
  324. new count = 1, players[32]
  325. static msg[191]
  326. vformat(msg, 190, input, 3)
  327.  
  328. replace_all(msg, 190, "!g", "^4")
  329. replace_all(msg, 190, "!y", "^1")
  330. replace_all(msg, 190, "!t", "^3")
  331.  
  332. if (id) players[0] = id
  333. else get_players(players, count, "ch")
  334. for (new i = 0; i < count; i++)
  335. {
  336. if (is_user_connected(players[i]))
  337. {
  338. message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, players[i])
  339. write_byte(players[i])
  340. write_string(msg)
  341. message_end()
  342. }
  343. }
  344. }