Advertisement
Sugisaki

[AMXX] Tienda por puntos

Mar 9th, 2017
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.77 KB | None | 0 0
  1. /*
  2.  
  3. INCLUDE shop.inc
  4.  
  5. enum _:TEAMS
  6. {
  7.     TEAM_TT = 1,
  8.     TEAM_CT,
  9.     TEAM_ALL
  10. }
  11.  
  12. native shop_add_item(const name[], cost, team, const function[])
  13. native get_user_points(id)
  14. native set_user_points(id, puntos)
  15.  
  16. */
  17.  
  18.  
  19. #include <amxmodx>
  20.  
  21. #define PLUGIN "SHOP"
  22. #define VERSION "1.0 FIX 1"
  23. #define AUTHOR "Sugisaki"
  24.  
  25. #define MAX_ITEM    20
  26.  
  27.  
  28. enum _:ITEMS
  29. {
  30.     ITEM_NAME[32],
  31.     ITEM_COST,
  32.     ITEM_TEAM,
  33.     ITEM_FORWARD[32],
  34.     ITEM_FUNC_ID,
  35.     ITEM_PLUGIN_ID
  36. }
  37. enum _:TEAMS
  38. {
  39.     TEAM_TT = 1,
  40.     TEAM_CT,
  41.     TEAM_ALL
  42. }
  43.  
  44. new points[33]
  45.  
  46. new const AVAILABLE[] = "y"
  47. new const UNAVAILABLE[] = "r"
  48.  
  49. new g_szItem[MAX_ITEM][ITEMS], g_TotalItems, g_Item_Team_count[TEAMS]
  50.  
  51. public plugin_init()
  52. {
  53.     register_plugin(PLUGIN, VERSION, AUTHOR)
  54.     register_clcmd("chooseteam", "open_shop")
  55. }
  56. public client_connect(id)
  57. {
  58.     points[id] = 0
  59. }
  60. public client_disconnect(id)
  61. {
  62.     points[id] = 0
  63. }
  64. public plugin_natives()
  65. {
  66.     register_native("shop_add_item", "_native_add_item")
  67.     register_native("get_user_points", "_native_get_user_points")
  68.     register_native("set_user_points", "_native_set_user_points")
  69. }
  70. public _native_add_item(pid, par)
  71. {
  72.     // shop_add_item(const name[], cost, team, const function[])
  73.     if(g_TotalItems >= MAX_ITEM)
  74.     {
  75.         log_amx("[SHOP] Maximo de items ( %i ) alcanzado, Modifica el plugin %s",  MAX_ITEM, PLUGIN)
  76.         return PLUGIN_HANDLED
  77.     }
  78.     get_string(1, g_szItem[g_TotalItems][ITEM_NAME], 31)
  79.     get_string(4, g_szItem[g_TotalItems][ITEM_FORWARD], 31)
  80.     g_szItem[g_TotalItems][ITEM_COST] = get_param(2)
  81.     g_szItem[g_TotalItems][ITEM_TEAM] = get_param(3)
  82.     g_szItem[g_TotalItems][ITEM_PLUGIN_ID] = pid
  83.     g_szItem[g_TotalItems][ITEM_FUNC_ID] = get_func_id(g_szItem[g_TotalItems][ITEM_FORWARD], pid)
  84.     g_TotalItems++
  85.     g_Item_Team_count[get_param(3)] ++
  86.     return PLUGIN_CONTINUE
  87. }
  88. public open_shop(id)
  89. {
  90.  
  91.     new team = get_user_team(id)
  92.     if(!(g_Item_Team_count[team]) && !(g_Item_Team_count[TEAM_ALL]))
  93.     {
  94.         client_print(id, print_chat, "No hay Items para tu equipo")
  95.         return PLUGIN_HANDLED
  96.     }
  97.     static item[128], num[3]
  98.     formatex(item, charsmax(item), "\yTienda^n\wPuntos disponibles \r%i", points[id])
  99.     new menu = menu_create(item, "buymenu_handle")
  100.    
  101.     for(new i = 0; i < g_TotalItems; i++)
  102.     {
  103.        
  104.         if(team == g_szItem[i][ITEM_TEAM] || g_szItem[i][ITEM_TEAM] == TEAM_ALL)
  105.         {
  106.             formatex(item, charsmax(item), "\w%s  [\%s%i Pts\w]", g_szItem[i][ITEM_NAME], (points[id] < g_szItem[i][ITEM_COST] ? UNAVAILABLE : AVAILABLE), g_szItem[i][ITEM_COST]);
  107.             num_to_str(i, num, charsmax(num));
  108.             menu_additem(menu, item, num);
  109.         }
  110.     }
  111.     menu_display(id, menu)
  112.     return PLUGIN_HANDLED
  113. }
  114. public buymenu_handle(id, menu, item)
  115. {
  116.     if(item == MENU_EXIT || !is_user_alive(id) || !is_user_connected(id))
  117.     {
  118.         menu_destroy(menu)
  119.         return PLUGIN_HANDLED
  120.     }
  121.     new access, callback, num[3];
  122.     menu_item_getinfo(menu, item, access, num, charsmax(num), _, _, callback);
  123.     menu_destroy(menu);
  124.  
  125.     new itemid = str_to_num(num);
  126.    
  127.     //new money = cs_get_user_money(id)
  128.  
  129.     if(g_szItem[itemid][ITEM_COST] > points[id])
  130.     {
  131.         client_print(id, print_chat, "[TIENDA] Puntos insuficientes")
  132.         return PLUGIN_HANDLED
  133.     }
  134.     points[id] -= g_szItem[itemid][ITEM_COST]
  135.     /*
  136.     new ret, g_forward
  137.     g_forward = CreateMultiForward(g_szItem[itemid][ITEM_FORWARD], ET_STOP, FP_CELL, FP_STRING)
  138.     ExecuteForward(g_forward, ret, id, g_szItem[itemid][ITEM_NAME])
  139.     DestroyForward(g_forward)
  140.     if(ret == PLUGIN_HANDLED) return PLUGIN_HANDLED
  141.     cs_set_user_money(id, money- g_szItem[itemid][ITEM_COST])*/
  142.  
  143.     callfunc_begin_i(g_szItem[itemid][ITEM_FUNC_ID], g_szItem[itemid][ITEM_PLUGIN_ID])
  144.     callfunc_push_int(id)
  145.     callfunc_end()
  146.  
  147.  
  148.  
  149.  
  150.     return PLUGIN_HANDLED
  151. }
  152.  
  153. public _native_get_user_points(pid, pr)
  154. {
  155.     return points[get_param(1)]
  156. }
  157.  
  158. public _native_set_user_points(pid, pr)
  159. {
  160.     points[get_param(1)] = get_param(2)
  161.     return
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement