Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Plugin generated by AMXX-Studio */
- #include <amxmodx>
- #include <amxmisc>
- #include <fvault>
- #include <fakemeta>
- #include <cstrike>
- #include <zombieplague>
- #include <registration_system>
- #define PLUGIN "[ZP][REG] Pontos de lealdade"
- #define VERSION "1.1"
- #define AUTHOR "Biel-oGrande"
- #define TASK_AWAY 3000
- #define Prefix "AddonsZm"
- new const g_fvault[] = "accounts_loyalty_points"
- new cvar_receive, cvar_receive_extra_vip, cvar_time, cvar_away_time
- new away[33]
- public plugin_init() {
- register_plugin(PLUGIN, VERSION, AUTHOR)
- register_clcmd("say /pontos","menu_points")
- register_clcmd("say_team /pontos","menu_points")
- cvar_time = register_cvar("zp_pontos_receber_tempo", "60.0")
- cvar_away_time = register_cvar("zp_pontos_parado_tempo", "40.0")
- cvar_receive = register_cvar("zp_pontos_receber_quantia", "1")
- cvar_receive_extra_vip = register_cvar("zp_pontos_extra_vip", "1")
- register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
- register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged")
- }
- public client_disconnect(id) {
- remove_task(id)
- }
- public reg_user_logged(id) {
- static szName[32], szData[64]
- get_user_name(id, szName, charsmax(szName))
- if(!fvault_get_data(g_fvault, szName, szData, charsmax(szData))) {
- fvault_set_data(g_fvault, szName, "0")
- }
- away[id] = false
- set_task(get_pcvar_float(cvar_time), "receive_points", id, _, _, "b")
- return PLUGIN_HANDLED
- }
- public receive_points(id) {
- if(!reg_is_user_logged(id)) return PLUGIN_HANDLED
- if(cs_get_user_team(id) == CS_TEAM_SPECTATOR) return PLUGIN_HANDLED
- new szName[32], szData[32], iPoints, iReceive
- get_user_name(id, szName, 31)
- fvault_get_data(g_fvault, szName, szData, 31)
- iPoints = str_to_num(szData)
- iReceive = get_pcvar_num(cvar_receive)
- if(away[id]) {
- client_print_color(id, "!g[%s] !tVoce esta parado por mais de !y%.f.0 !tsegundos.",Prefix, get_pcvar_float(cvar_away_time))
- client_print_color(id, "!g[%s] !tVoce nao vai receber pontos de lealdade.",Prefix)
- return PLUGIN_HANDLED
- }
- if(!access(id, ADMIN_RESERVATION)) {
- iPoints += iReceive
- num_to_str(iPoints, szData, 31)
- fvault_set_data(g_fvault, szName, szData)
- client_print_color(id, "!g[%s] !tVoce recebeu !y%i !tponto de lealdade. !gDigite: !y/pontos.",Prefix, iReceive)
- client_print_color(id, "!g[%s] !tJogadores VIP recebem !y%i !tponto extra.",Prefix, get_pcvar_num(cvar_receive_extra_vip))
- }
- else {
- iReceive += get_pcvar_num(cvar_receive_extra_vip)
- iPoints += iReceive
- num_to_str(iPoints, szData, 31)
- fvault_set_data(g_fvault, szName, szData)
- client_print_color(id, "!g[%s] !tVoce recebeu !y%i !tpontos de lealdade. !gDigite: !y/pontos.",Prefix, iReceive)
- client_print_color(id, "!g[%s] !tVoce eh um jogador VIP recebe !y%i !tponto extra.",Prefix, get_pcvar_num(cvar_receive_extra_vip))
- }
- return PLUGIN_HANDLED
- }
- public menu_points(id) {
- if(cs_get_user_team(id) == CS_TEAM_SPECTATOR) return PLUGIN_HANDLED
- new szMenu[128],szName[32], szData[32]
- get_user_name(id,szName,31)
- fvault_get_data(g_fvault, szName, szData, 31)
- formatex(szMenu,127,"\rPontos de Lealdade^n\yPontos acumulados: \d[ \w%s \d]",szData)
- new Menu = menu_create(szMenu,"handler_menu_points")
- formatex(szMenu,63,"Informacoes")
- menu_additem(Menu,szMenu,"1",0)
- formatex(szMenu,63,"Trocar pontos")
- menu_additem(Menu,szMenu,"2",0)
- menu_setprop(Menu,MPROP_EXITNAME,"Sair")
- menu_display(id,Menu,0)
- return PLUGIN_HANDLED
- }
- public handler_menu_points(id,menu,item) {
- if(item == MENU_EXIT) {
- menu_destroy(menu)
- return PLUGIN_HANDLED
- }
- switch(item) {
- case 0: {
- menu_points(id)
- show_motd(id, "loyalty_points.txt", "Pontos de Lealdade")
- }
- case 1: {
- menu_exchange(id)
- }
- }
- return PLUGIN_HANDLED
- }
- public menu_exchange(id) {
- new szMenu[128],szName[32], szData[32], iPoints
- get_user_name(id,szName,31)
- fvault_get_data(g_fvault, szName, szData, 31)
- iPoints = str_to_num(szData)
- formatex(szMenu, 127, "\rPontos de Lealdade^n\yPontos acumulados: \d[ \w%s \d]",szData)
- new Menu = menu_create(szMenu,"handler_menu_exchange")
- formatex(szMenu, 63,"10 ammopacks = %s30 Pontos", iPoints < 30 ? "\d" : "\y" )
- menu_additem(Menu, szMenu, "1", 0)
- formatex(szMenu, 63,"30 ammopacks = %s60 Pontos", iPoints < 60 ? "\d" : "\y" )
- menu_additem(Menu, szMenu, "2", 0)
- formatex(szMenu, 63,"60 ammopacks = %s90 Pontos", iPoints < 90 ? "\d" : "\y" )
- menu_additem(Menu, szMenu, "3", 0)
- formatex(szMenu, 63,"90 ammopacks = %s120 Pontos", iPoints < 120 ? "\d" : "\y" )
- menu_additem(Menu, szMenu, "4", 0)
- formatex(szMenu, 63,"250 ammopacks = %s300 Pontos", iPoints < 300 ? "\d" : "\y" )
- menu_additem(Menu, szMenu, "5", 0)
- menu_setprop(Menu, MPROP_EXITNAME, "Sair")
- menu_display(id, Menu, 0)
- return PLUGIN_HANDLED
- }
- public handler_menu_exchange(id,menu,item) {
- new szName[32], szData[32], iAmount, iAP, iPoints
- get_user_name(id,szName,31)
- fvault_get_data(g_fvault, szName, szData, 31)
- if(item == MENU_EXIT) {
- menu_destroy(menu)
- return PLUGIN_HANDLED
- }
- switch(item) {
- case 0: {
- if(str_to_num(szData) < 30) {
- has_not(id) ; return PLUGIN_HANDLED
- }
- else {
- iAmount = 30 ; iAP = 10
- }
- }
- case 1: {
- if(str_to_num(szData) < 60) {
- has_not(id) ; return PLUGIN_HANDLED
- }
- else {
- iAmount = 60 ; iAP = 30
- }
- }
- case 2: {
- if(str_to_num(szData) < 90) {
- has_not(id) ; return PLUGIN_HANDLED
- }
- else {
- iAmount = 90 ; iAP = 60
- }
- }
- case 3: {
- if(str_to_num(szData) < 120) {
- has_not(id) ; return PLUGIN_HANDLED
- }
- else {
- iAmount = 120 ; iAP = 90
- }
- }
- case 4: {
- if(str_to_num(szData) < 300) {
- has_not(id) ; return PLUGIN_HANDLED
- }
- else {
- iAmount = 300 ; iAP = 250
- }
- }
- }
- client_print_color(id, "!g[%s] !tVoce trocou !y%i !tpontos por !y%i !tammopacks.",Prefix, iAmount, iAP)
- zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + iAP)
- iPoints = str_to_num(szData) - iAmount
- num_to_str(iPoints, szData, 31)
- fvault_set_data(g_fvault, szName, szData)
- menu_exchange(id)
- return PLUGIN_HANDLED
- }
- public has_not(id) {
- menu_exchange(id)
- client_print_color(id, "!g[%s] !tVoce nao tem pontos suficiente.",Prefix)
- }
- public fw_PlayerPreThink(id) {
- if(!is_user_alive(id) && !reg_user_logged(id)) return PLUGIN_HANDLED
- new button = pev(id, pev_button)
- 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) {
- remove_task( id + TASK_AWAY )
- if(away[id]) {
- client_print_color(id, "!g[%s] !tVoce nao esta mais parado.",Prefix)
- client_print_color(id, "!g[%s] !tVoce esta recebendo pontos de leadade normalmente.",Prefix)
- away[id] = false
- }
- }
- else {
- if(!task_exists( id + TASK_AWAY )) {
- set_task(get_pcvar_float(cvar_away_time), "away_player", id + TASK_AWAY)
- }
- }
- return PLUGIN_HANDLED
- }
- public away_player(id) {
- id -= TASK_AWAY
- away[id] = true
- }
- stock client_print_color(const id, const input[], any:...) {
- new count = 1, players[32]
- static msg[191]
- vformat(msg, 190, input, 3)
- replace_all(msg, 190, "!g", "^4")
- replace_all(msg, 190, "!y", "^1")
- replace_all(msg, 190, "!t", "^3")
- replace_all(msg, 190, "!team2", "^0")
- if (id)
- players[0] = id;
- else
- get_players(players, count, "ch")
- for (new i = 0; i < count; i++) {
- if (is_user_connected(players[i])) {
- message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
- write_byte(players[i]);
- write_string(msg);
- message_end();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement