Arxero

TradeMoney(Edited)

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