Advertisement
Biel-oGrande

zp_reg_pontos_de_lealdade

Nov 20th, 2016
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.90 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <amxmisc>
  5. #include <fvault>
  6. #include <fakemeta>
  7. #include <cstrike>
  8. #include <zombieplague>
  9. #include <registration_system>
  10.  
  11. #define PLUGIN "[ZP][REG] Pontos de lealdade"
  12. #define VERSION "1.1"
  13. #define AUTHOR "Biel-oGrande"
  14.  
  15. #define TASK_AWAY 3000
  16.  
  17. #define Prefix "AddonsZm"
  18.  
  19. new const g_fvault[] = "accounts_loyalty_points"
  20.  
  21. new cvar_receive, cvar_receive_extra_vip, cvar_time, cvar_away_time
  22.  
  23. new away[33]
  24.  
  25. public plugin_init() {
  26.    
  27.     register_plugin(PLUGIN, VERSION, AUTHOR)
  28.    
  29.     register_clcmd("say /pontos","menu_points")
  30.     register_clcmd("say_team /pontos","menu_points")   
  31.    
  32.     cvar_time = register_cvar("zp_pontos_receber_tempo", "60.0")
  33.    
  34.     cvar_away_time = register_cvar("zp_pontos_parado_tempo", "40.0")
  35.    
  36.     cvar_receive = register_cvar("zp_pontos_receber_quantia", "1")
  37.     cvar_receive_extra_vip = register_cvar("zp_pontos_extra_vip", "1")
  38.    
  39.     register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
  40.     register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged")
  41. }
  42.  
  43. public client_disconnect(id) {
  44.    
  45.     remove_task(id)
  46. }
  47.  
  48. public reg_user_logged(id) {
  49.    
  50.     static szName[32], szData[64]
  51.     get_user_name(id, szName, charsmax(szName))
  52.    
  53.     if(!fvault_get_data(g_fvault, szName, szData, charsmax(szData))) {
  54.        
  55.         fvault_set_data(g_fvault, szName, "0")
  56.     }
  57.    
  58.     away[id] = false
  59.    
  60.     set_task(get_pcvar_float(cvar_time), "receive_points", id, _, _, "b")
  61.     return PLUGIN_HANDLED
  62. }
  63.  
  64. public receive_points(id) {
  65.    
  66.     if(!reg_is_user_logged(id)) return PLUGIN_HANDLED
  67.     if(cs_get_user_team(id) == CS_TEAM_SPECTATOR) return PLUGIN_HANDLED
  68.    
  69.     new szName[32], szData[32], iPoints, iReceive
  70.     get_user_name(id, szName, 31)
  71.    
  72.     fvault_get_data(g_fvault, szName, szData, 31)
  73.    
  74.     iPoints = str_to_num(szData)
  75.     iReceive = get_pcvar_num(cvar_receive)
  76.    
  77.     if(away[id]) {
  78.        
  79.         client_print_color(id, "!g[%s] !tVoce esta parado por mais de !y%.f.0 !tsegundos.",Prefix, get_pcvar_float(cvar_away_time))
  80.         client_print_color(id, "!g[%s] !tVoce nao vai receber pontos de lealdade.",Prefix)
  81.         return PLUGIN_HANDLED
  82.     }
  83.     if(!access(id, ADMIN_RESERVATION)) {
  84.        
  85.         iPoints += iReceive
  86.        
  87.         num_to_str(iPoints, szData, 31)
  88.         fvault_set_data(g_fvault, szName, szData)
  89.        
  90.         client_print_color(id, "!g[%s] !tVoce recebeu !y%i !tponto de lealdade. !gDigite: !y/pontos.",Prefix, iReceive)
  91.         client_print_color(id, "!g[%s] !tJogadores VIP recebem !y%i !tponto extra.",Prefix, get_pcvar_num(cvar_receive_extra_vip))
  92.     }
  93.     else {
  94.        
  95.         iReceive += get_pcvar_num(cvar_receive_extra_vip)
  96.         iPoints += iReceive
  97.        
  98.         num_to_str(iPoints, szData, 31)
  99.         fvault_set_data(g_fvault, szName, szData)
  100.        
  101.         client_print_color(id, "!g[%s] !tVoce recebeu !y%i !tpontos de lealdade. !gDigite: !y/pontos.",Prefix, iReceive)
  102.         client_print_color(id, "!g[%s] !tVoce eh um jogador VIP recebe !y%i !tponto extra.",Prefix, get_pcvar_num(cvar_receive_extra_vip)) 
  103.     }
  104.     return PLUGIN_HANDLED
  105. }
  106.  
  107. public menu_points(id) {
  108.    
  109.     if(cs_get_user_team(id) == CS_TEAM_SPECTATOR) return PLUGIN_HANDLED
  110.    
  111.     new szMenu[128],szName[32], szData[32]
  112.     get_user_name(id,szName,31)
  113.    
  114.     fvault_get_data(g_fvault, szName, szData, 31)
  115.    
  116.     formatex(szMenu,127,"\rPontos de Lealdade^n\yPontos acumulados: \d[ \w%s \d]",szData)
  117.    
  118.     new Menu = menu_create(szMenu,"handler_menu_points")
  119.    
  120.     formatex(szMenu,63,"Informacoes")
  121.     menu_additem(Menu,szMenu,"1",0)
  122.    
  123.     formatex(szMenu,63,"Trocar pontos")
  124.     menu_additem(Menu,szMenu,"2",0)
  125.    
  126.     menu_setprop(Menu,MPROP_EXITNAME,"Sair")
  127.     menu_display(id,Menu,0)
  128.    
  129.     return PLUGIN_HANDLED
  130. }
  131.  
  132. public handler_menu_points(id,menu,item) {
  133.    
  134.     if(item == MENU_EXIT) {
  135.        
  136.         menu_destroy(menu)
  137.         return PLUGIN_HANDLED
  138.     }
  139.     switch(item) {
  140.        
  141.         case 0: {
  142.            
  143.             menu_points(id)
  144.             show_motd(id, "loyalty_points.txt", "Pontos de Lealdade")
  145.         }
  146.         case 1: {
  147.            
  148.             menu_exchange(id)
  149.         }
  150.     }
  151.     return PLUGIN_HANDLED
  152. }
  153.  
  154. public menu_exchange(id) {
  155.    
  156.     new szMenu[128],szName[32], szData[32], iPoints
  157.     get_user_name(id,szName,31)
  158.    
  159.     fvault_get_data(g_fvault, szName, szData, 31)
  160.    
  161.     iPoints = str_to_num(szData)
  162.    
  163.     formatex(szMenu, 127, "\rPontos de Lealdade^n\yPontos acumulados: \d[ \w%s \d]",szData)
  164.    
  165.     new Menu = menu_create(szMenu,"handler_menu_exchange")
  166.    
  167.     formatex(szMenu, 63,"10 ammopacks   = %s30    Pontos", iPoints < 30 ? "\d" : "\y" )
  168.     menu_additem(Menu, szMenu, "1", 0)
  169.    
  170.     formatex(szMenu, 63,"30 ammopacks   = %s60    Pontos", iPoints < 60 ? "\d" : "\y" )
  171.     menu_additem(Menu, szMenu, "2", 0)
  172.    
  173.     formatex(szMenu, 63,"60 ammopacks   = %s90    Pontos", iPoints < 90 ? "\d" : "\y" )
  174.     menu_additem(Menu, szMenu, "3", 0)
  175.    
  176.     formatex(szMenu, 63,"90 ammopacks   = %s120  Pontos", iPoints < 120 ? "\d" : "\y" )
  177.     menu_additem(Menu, szMenu, "4", 0)
  178.    
  179.     formatex(szMenu, 63,"250 ammopacks = %s300  Pontos", iPoints < 300 ? "\d" : "\y" )
  180.     menu_additem(Menu, szMenu, "5", 0)
  181.    
  182.     menu_setprop(Menu, MPROP_EXITNAME, "Sair")
  183.     menu_display(id, Menu, 0)
  184.    
  185.     return PLUGIN_HANDLED
  186. }
  187.  
  188. public handler_menu_exchange(id,menu,item) {
  189.    
  190.     new szName[32], szData[32], iAmount, iAP, iPoints
  191.     get_user_name(id,szName,31)
  192.    
  193.     fvault_get_data(g_fvault, szName, szData, 31)
  194.    
  195.     if(item == MENU_EXIT) {
  196.        
  197.         menu_destroy(menu)
  198.         return PLUGIN_HANDLED
  199.     }
  200.     switch(item) {
  201.        
  202.         case 0: {
  203.            
  204.             if(str_to_num(szData) < 30) {
  205.                
  206.                 has_not(id) ; return PLUGIN_HANDLED
  207.             }
  208.             else {
  209.                
  210.                 iAmount = 30 ; iAP = 10
  211.             }
  212.         }
  213.         case 1: {
  214.            
  215.             if(str_to_num(szData) < 60) {
  216.                
  217.                 has_not(id) ; return PLUGIN_HANDLED
  218.             }
  219.             else {
  220.                
  221.                 iAmount = 60 ; iAP = 30
  222.             }
  223.         }
  224.         case 2: {
  225.            
  226.             if(str_to_num(szData) < 90) {
  227.                
  228.                 has_not(id) ; return PLUGIN_HANDLED
  229.             }
  230.             else {
  231.                
  232.                 iAmount = 90 ; iAP = 60
  233.             }
  234.         }
  235.         case 3: {
  236.            
  237.             if(str_to_num(szData) < 120) {
  238.                
  239.                 has_not(id) ; return PLUGIN_HANDLED
  240.             }
  241.             else {
  242.                
  243.                 iAmount = 120 ; iAP = 90
  244.             }
  245.         }
  246.         case 4: {
  247.            
  248.             if(str_to_num(szData) < 300) {
  249.                
  250.                 has_not(id) ; return PLUGIN_HANDLED
  251.             }
  252.             else {
  253.                
  254.                 iAmount = 300 ; iAP = 250
  255.             }
  256.         }
  257.     }
  258.     client_print_color(id, "!g[%s] !tVoce trocou !y%i !tpontos por !y%i !tammopacks.",Prefix, iAmount, iAP)
  259.    
  260.     zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + iAP)
  261.    
  262.     iPoints = str_to_num(szData) - iAmount
  263.  
  264.     num_to_str(iPoints, szData, 31)
  265.     fvault_set_data(g_fvault, szName, szData)
  266.    
  267.     menu_exchange(id)
  268.    
  269.     return PLUGIN_HANDLED
  270. }
  271.  
  272. public has_not(id)  {
  273.    
  274.     menu_exchange(id)
  275.     client_print_color(id, "!g[%s] !tVoce nao tem pontos suficiente.",Prefix)
  276.    
  277. }
  278.  
  279. public fw_PlayerPreThink(id) {
  280.    
  281.     if(!is_user_alive(id) && !reg_user_logged(id)) return PLUGIN_HANDLED
  282.    
  283.     new button = pev(id, pev_button)
  284.    
  285.     if(button&IN_ATTACK || button&IN_ATTACK2 || button&IN_BACK || button&IN_FORWARD || button&IN_RUN || button&IN_JUMP || button&IN_MOVELEFT || button&IN_MOVERIGHT || button&IN_LEFT || button&IN_RIGHT) {
  286.        
  287.         remove_task( id + TASK_AWAY )
  288.        
  289.         if(away[id]) {
  290.            
  291.             client_print_color(id, "!g[%s] !tVoce nao esta mais parado.",Prefix)
  292.             client_print_color(id, "!g[%s] !tVoce esta recebendo pontos de leadade normalmente.",Prefix)
  293.             away[id] = false
  294.         }
  295.     }
  296.     else {
  297.        
  298.         if(!task_exists( id + TASK_AWAY )) {
  299.            
  300.             set_task(get_pcvar_float(cvar_away_time), "away_player", id + TASK_AWAY)
  301.         }
  302.     }
  303.     return PLUGIN_HANDLED
  304. }
  305.  
  306. public away_player(id) {
  307.    
  308.     id -= TASK_AWAY
  309.     away[id] = true
  310. }
  311.  
  312. stock client_print_color(const id, const input[], any:...) {
  313.    
  314.     new count = 1, players[32]
  315.     static msg[191]
  316.     vformat(msg, 190, input, 3)
  317.    
  318.     replace_all(msg, 190, "!g", "^4")
  319.     replace_all(msg, 190, "!y", "^1")
  320.     replace_all(msg, 190, "!t", "^3")
  321.     replace_all(msg, 190, "!team2", "^0")
  322.    
  323.     if (id)
  324.         players[0] = id;
  325.     else
  326.         get_players(players, count, "ch")
  327.    
  328.     for (new i = 0; i < count; i++) {
  329.        
  330.         if (is_user_connected(players[i])) {
  331.            
  332.             message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
  333.             write_byte(players[i]);
  334.             write_string(msg);
  335.             message_end();
  336.         }
  337.     }
  338. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement