AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Tickets ZP (https://forums.alliedmods.net/showthread.php?t=209545)

DJ Fox 02-26-2013 19:11

Tickets ZP
 
Hello !

I was trying to make a plugin, actually a modification
there is a plugin for tickets to super hero mod and you swap minutes for xp!
now the plan was to turn zm minutes per ammo packs
only it did not work!
take a look

[IMG]http://img10.**************/img10/3079/imagemmaw.png[/IMG]

Plugin:
Code:

#include <amxmodx>
#include <amxmisc>
#include <zombieplague>
#include <sqlx>

#define PLUGIN "SuperHero Tickets"
#define VERSION "1.0"
#define AUTHOR "TheWalker"
#define LOGFILE        "superhero_tickets.log"

new TotalPlayedTime[33]

new Handle:tuple

new host[] = "host", user[] = "user", pass[] = "password", db[] = "database"

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR )
       
        // Menus
        register_clcmd("SuperHero Tickets", "Menu1")
        register_clcmd("SuperHero Trade", "Menu2")
       
        // Comandos
        register_clcmd("say /tickets", "cmd_tickets")
        register_clcmd("say /pts15", "show_top15")
        register_clcmd("say /pts", "cmd_time")
       
        tuple = SQL_MakeDbTuple(host, user, pass, db)
        if(tuple == Handle:Empty_Handle) set_fail_state("Error in SQL Tuple creation.")
       
        new code, error[80], Handle:con
        con = SQL_Connect(tuple, code, error, charsmax(error))
        if(con == Handle:Empty_Handle){
                server_print("Error #%d connecting in database: %s", code, error)
                set_fail_state("Database error. Please check it before running the plugin.")
        }
       
        new Handle:query
        query = SQL_PrepareQuery(con, "CREATE TABLE IF NOT EXISTS `tickets`(id VARCHAR(33) NOT NULL UNIQUE, tickets INT(6) NOT NULL)")
        if(query == Handle:Empty_Handle){
                SQL_FreeHandle(con)
                set_fail_state("Error creating SQL' table.")
        }
       
        if(!SQL_Execute(query)){
                SQL_FreeHandle(con)
                SQL_FreeHandle(query)
                set_fail_state("Error with table's query.")
        }
       
        SQL_FreeHandle(query)
        SQL_FreeHandle(con)
}

public plugin_precache()
{
        precache_sound("misc/woohoo.wav")
}

public get_tickets(id){
        new tickets = TotalPlayedTime[id] + (get_user_time(id, 1) / 60)
        return tickets
}

public cmd_tickets(id)
{
        if ( zp_set_user_ammo_packs(id) <= 0 ) {
                client_print(id, print_chat, "[3D] Seus tickets estao sendo carregados.")
                return
        }
       
        Menu1(id)
}

public cmd_time(id)
{
        new tickets = get_tickets(id)
        if(tickets >= 0){ // por segurança, caso seja admin mais nao tenha flags b, m ou n
                client_print(id, print_chat, "[3D] Voce tem: %d ZP Tickets.", tickets);
       
                if ( tickets >= 120 ) {
                        client_print(id, print_chat, "[3D] Servidor usando tickets desenvolvidos pela Equipe3D")
                        client_print(id, print_chat, "[3D] Digite: /tickets no chat.")
                }
        }
       
        return PLUGIN_CONTINUE
}

public client_disconnect(id)
{
        if(!is_user_admin(id)) return PLUGIN_HANDLED
        new tickets = get_tickets(id)
        if(tickets >= 0) SaveTime(id, tickets)
        return PLUGIN_HANDLED
}

public client_putinserver(id)
{
        if(!is_user_admin(id)) return PLUGIN_HANDLED
        if(is_user_connected(id)) {
                TotalPlayedTime[id] = LoadTime(id)
        }
       
        return PLUGIN_HANDLED
}

/*======================================
[Menu1]
======================================*/

public Menu1(id)
{
        new tickets = get_tickets(id)
       
        //first we need to make a variable that will hold the menu
        new menu = menu_create("\r[\w3D\r] \wZombie \rPlague \wTickets", "menu_handler1")
       
        new Form[50]
        format(Form,49,"%s: \r%d \wTickets!^n","Voce tem",tickets)
        menu_additem(menu ,Form, "3" , 0)
       
        menu_additem(menu, "\wTrocar Tickets por AP ->", "1", 0)
        menu_additem(menu, "\rInfo/Ajuda", "2", 0) 
       
        menu_setprop(menu, MPROP_EXITNAME, "Sair")
       
        menu_display(id, menu, 0)
        return PLUGIN_CONTINUE
}

public menu_handler1(id, menu, item)
{
        if (item == MENU_EXIT)
        {
                menu_destroy(menu)
                return PLUGIN_HANDLED
        }
       
        new data[6], iName[64]
        new access, callback
        menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
       
        new key = str_to_num(data)
        switch(key)
        {
                case 1:
                {
                        Menu2(id)
                        menu_destroy(menu)
                        return PLUGIN_HANDLED                               
                }
                case 2:
                {
                        client_print(id, print_chat, "[3D] Cada 1 Minuto voce recebe 1 ticket.")
                        client_print(id, print_chat, "[3D] Voce pode trocar alguns tickets por Ammo Packs neste Servidor.")
                        Menu1(id)
                        menu_destroy(menu)
                        return PLUGIN_HANDLED                       
                }
                case 3:
                {
                        Menu1(id)
                        menu_destroy(menu)
                        return PLUGIN_HANDLED
                }               
        }
       
        menu_destroy(menu)
        return PLUGIN_HANDLED
}

/*======================================
[Menu2]
======================================*/

public Menu2(id)
{
        //first we need to make a variable that will hold the menu
        new menu = menu_create("\ySuperHero Tickets^n\dTrade tickets for XP:", "menu_handler2")
        // Voce tem X tickets!
       
        new tickets = get_tickets(id)
       
        new Form[50]
        format(Form,49,"%s: \r%d \wtickets!^n","You have",tickets)
        menu_additem(menu ,Form, "7" , 0)
       
        if ( tickets >= 120 ) {
                menu_additem(menu, "\wTrade \r120 pts \wfor \r1000 XP", "1", 0)
        }
        else menu_additem(menu, "\dTrade 120 pts for 1000 XP", "1", 0)
       
        if ( tickets >= 240 ) {
                menu_additem(menu, "\wTrade \r240 pts \wfor \r2500 XP", "2", 0)
        }
        else menu_additem(menu, "\dTrade 240 pts for 2500 XP", "2", 0)
       
        if ( tickets >= 360 ) {
                menu_additem(menu, "\wTrade \r360 pts \wfor \r4500 XP", "3", 0)
        }
        else menu_additem(menu, "\dTrade 360 pts for 4500 XP", "3", 0)       
       
        if ( tickets >= 600 ) {
                menu_additem(menu, "\wTrade \r600 pts \wfor \r9500 XP", "4", 0)
        }
        else menu_additem(menu, "\dTrade 600 pts for 9500 XP", "4", 0)       
       
        if ( tickets >= 900 ) {
                menu_additem(menu, "\wTrade \r900 pts \wfor \r16000 XP", "5", 0)
        }
        else menu_additem(menu, "\dTrade 900 pts for 16000 XP", "5", 0)       
       
        if ( tickets >= 1500 ) {
                menu_additem(menu, "\wTrade \r1500 pts \wfor \r26000 XP", "6", 0)
        }
        else menu_additem(menu, "\dTrade 1500 pts for 26000 XP", "6", 0)               
       
        menu_setprop(menu, MPROP_EXITNAME, "Exit")
       
        menu_display(id, menu, 0)
        return PLUGIN_CONTINUE
}

public menu_handler2(id, menu, item)
{
        if (item == MENU_EXIT)
        {
                menu_destroy(menu)
                return PLUGIN_HANDLED
        }
       
        new data[6], iName[64]
        new access, callback
        menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
       
        new key = str_to_num(data)
        new tickets = get_tickets(id)
        switch(key)
        {               
                case 1:
                {                       
                        if ( tickets >= 120 )
                        {
                                new XP = zp_set_user_ammo_packs(id)
                                new name[33]
                                get_user_name(id, name, charsmax(name))                               
                               
                                log_to_file(LOGFILE, "PLAYER: %s traded 120 tickets! XP after: %i || XP before: %i", name, XP, XP + 1000)                               
                               
                                TotalPlayedTime[id] -= 120
                                zp_set_user_ammo_packs(id, 1000, true)
                                client_print(id, print_chat, "[ST] You traded 120 superhero tickets for 1000 XP!")
                               
                                client_print(0, print_chat, "[ST] Player %s traded 120 superhero tickets for 1000 XP!", name)
                               
                                TotalPlayedTime[id] += 1
                        }
                        else client_print(id, print_chat, "[ST] You do not have superhero tickets enough to make this trade.")
                }
                case 2:
                {                       
                        if ( tickets >= 240 )
                        {
                                new XP = zp_set_user_ammo_packs(id)
                                new name[33]
                                get_user_name(id, name, charsmax(name))                               
                               
                                log_to_file(LOGFILE, "PLAYER: %s traded 240 tickets! XP after: %i || XP before: %i", name, XP, XP + 2500)
                               
                                TotalPlayedTime[id] -= 240
                                zp_set_user_ammo_packs(id, 2500, true)
                                client_print(id, print_chat, "[ST] You traded 240 superhero tickets for 2500 XP!")
                                client_cmd(id, "speak misc/woohoo")
                               
                                client_print(0, print_chat, "[ST] Player %s traded 240 superhero tickets for 2500 XP!", name)
                               
                                TotalPlayedTime[id] += 1
                        }
                        else client_print(id, print_chat, "[ST] You do not have superhero tickets enough to make this trade.")
                }
                case 3:
                {
                        if ( tickets >= 360 )
                        {
                                new XP = zp_set_user_ammo_packs(id)
                                new name[33]
                                get_user_name(id, name, charsmax(name))                               
                               
                                log_to_file(LOGFILE, "PLAYER: %s traded 360 tickets! XP after: %i || XP before: %i", name, XP, XP + 4500)                               
                               
                                TotalPlayedTime[id] -= 360
                                zp_set_user_ammo_packs(id, 4500, true)
                                client_print(id, print_chat, "[ST] You traded 360 superhero tickets for 4500 XP!")
                                client_cmd(id, "speak misc/woohoo")

                                client_print(0, print_chat, "[ST] Player %s traded 360 superhero tickets for 4500 XP!", name)
                               
                                TotalPlayedTime[id] += 1
                        }
                        else client_print(id, print_chat, "[ST] You do not have superhero tickets enough to make this trade.")       
                }
                case 4:
                {
                        if ( tickets >= 600 )
                        {
                                new XP = zp_set_user_ammo_packs(id)
                                new name[33]
                                get_user_name(id, name, charsmax(name))                               
                               
                                log_to_file(LOGFILE, "PLAYER: %s traded 600 tickets! XP after: %i || XP before: %i", name, XP, XP + 9500)               
                               
                                TotalPlayedTime[id] -= 600
                                      zp_set_user_ammo_packs(id, 9500, true)
                                client_print(id, print_chat, "[ST] You traded 600 superhero tickets for 9500 XP!")
                                client_cmd(id, "speak misc/woohoo")
                               
                                client_print(0, print_chat, "[ST] Player %s traded 600 superhero tickets for 9500 XP!", name)
                               
                                TotalPlayedTime[id] += 1
                        }
                        else client_print(id, print_chat, "[ST] You do not have superhero tickets enough to make this trade.")       
                }
                case 5:
                {
                        if ( tickets >= 900 )
                        {
                                new XP = zp_set_user_ammo_packs(id)
                                new name[33]
                                get_user_name(id, name, charsmax(name))                               
                               
                                log_to_file(LOGFILE, "PLAYER: %s traded 900 tickets! XP after: %i || XP before: %i", name, XP, XP + 16000)                               
                               
                                TotalPlayedTime[id] -= 900
                                zp_set_user_ammo_packs(id, 16000, true)
                                client_print(id, print_chat, "[ST] You traded 900 superhero tickets for 16000 XP!")
                                client_cmd(id, "speak misc/woohoo")
                               
                                client_print(0, print_chat, "[ST] Player %s traded 900 superhero tickets for 16000 XP!", name)
                               
                                TotalPlayedTime[id] += 1
                        }
                        else client_print(id, print_chat, "[ST] You do not have superhero tickets enough to make this trade.")
                }
                case 6:
                {
                        if ( tickets >= 1500 )
                        {
                                new XP = zp_set_user_ammo_packs(id)
                                new name[33]
                                get_user_name(id, name, charsmax(name))                               
                               
                                log_to_file(LOGFILE, "PLAYER: %s traded 1500 tickets! XP after: %i || XP before: %i", name, XP, XP + 26000)                               
                               
                                TotalPlayedTime[id] -= 1500
                                zp_set_user_ammo_packs(id, 26000, true)
                                client_print(id, print_chat, "[PT] [ST] You traded 1500 superhero tickets for 26000 XP!")
                                client_cmd(id, "speak misc/woohoo")
                               
                                client_print(0, print_chat, "[ST] Player %s traded 900 superhero tickets for 26000 XP!", name)
                               
                                TotalPlayedTime[id] += 1
                        }
                        else client_print(id, print_chat, "[ST] You do not have superhero tickets enough to make this trade.")
                }               
                case 7:
                {
                        Menu1(id)
                }               
        }
       
        menu_destroy(menu)
        return PLUGIN_HANDLED
}

public LoadTime(id)
{
        new authid[34]
        get_user_authid(id, authid, charsmax(authid))
       
        if(containi(authid, "lan") || containi(authid, "pending")) {
                get_user_name(id, authid, charsmax(authid))
        }
       
        new Handle:con, code, error[80]
        con = SQL_Connect(tuple, code, error, charsmax(error))
        if(con == Handle:Empty_Handle){
                server_print("Error #%d to connect in database: %s", code, error)
                set_fail_state("Database Error")
        }
       
        new s[250]
        formatex(s, charsmax(s), "SELECT `tickets` FROM `tickets` WHERE `id` = ^"%s^"", authid)
        new Handle:query = SQL_PrepareQuery(con, s)
        if(query == Handle:Empty_Handle){
                SQL_FreeHandle(con)
                set_fail_state("Error creating sql table")
        }
       
        if(!SQL_Execute(query)){
                new error[500]
                SQL_QueryError(query, error, charsmax(error))
                log_amx("Error in load query: %s", error)
                SQL_FreeHandle(con)
                SQL_FreeHandle(query)
                set_fail_state("Error creating sql load")
        }
       
        new tickets = 0
        if(SQL_NumResults(query) > 0){
                new col = SQL_FieldNameToNum(query, "tickets")
                tickets = SQL_ReadResult(query, col)
        }
       
        SQL_FreeHandle(query)
        SQL_FreeHandle(con)
               
        return tickets
}

public SaveTime(id,PlayedTime)
{
        if (PlayedTime <= 0)  {
                return PLUGIN_CONTINUE
        }
       
        new authid[34]
        get_user_authid(id, authid, charsmax(authid))
       
        if(containi(authid, "lan") || containi(authid, "pending")) {
                get_user_name(id, authid, charsmax(authid))
        }
       
        new Handle:con, code, error[80]
        con = SQL_Connect(tuple, code, error, charsmax(error))
        if(con == Handle:Empty_Handle){
                server_print("Error #%d to connect in database: %s", code, error)
                set_fail_state("Database Error")
        }
       
        new rows, s[250]
        if(!SQL_SimpleQueryFmt(con, error, charsmax(error), rows, "SELECT * FROM `tickets` WHERE `id` = ^"%s^"", authid)){
                SQL_FreeHandle(con)
                log_amx("Error, query SELECT: %s", error)
                set_fail_state("Erro")
        }
        if(rows > 0){
                formatex(s, charsmax(s), "UPDATE `tickets` SET `tickets` = ^"%d^" WHERE `id` = ^"%s^"", PlayedTime, authid)
                new Handle:query = SQL_PrepareQuery(con, s)
                if(query == Handle:Empty_Handle){
                        SQL_FreeHandle(con)
                        set_fail_state("Error creating first save query.")
                }
       
                if(!SQL_Execute(query)){
                        new error[500]
                        SQL_QueryError(query, error, charsmax(error))
                        log_amx("Error creating first save query: %s", error)
                        SQL_FreeHandle(con)
                        SQL_FreeHandle(query)
                        set_fail_state("Error creating first save query")
                }
                SQL_FreeHandle(query)
        }
        else
        {
                formatex(s, charsmax(s), "INSERT INTO `tickets` VALUES(^"%s^",^"%d^")", authid, PlayedTime)
                new Handle:query = SQL_PrepareQuery(con, s)
                if(query == Handle:Empty_Handle){
                        SQL_FreeHandle(con)
                        set_fail_state("Error creating second save query")
                }
               
                if(!SQL_Execute(query)){
                        new error[500]
                        SQL_QueryError(query, error, charsmax(error))
                        log_amx("Error creating second save query: %s", error)
                        SQL_FreeHandle(con)
                        SQL_FreeHandle(query)
                        set_fail_state("Error creating second save query")
                }
                SQL_FreeHandle(query)
        }
       
        SQL_FreeHandle(con)
        return PLUGIN_HANDLED
}

public show_top15(id)
{
        new i = 0, count, pls[32], playerCount, tickets
        static sort[33][2]
       
        get_players(pls, playerCount, "ch")
       
        for(;i<playerCount;i++)
        {
                tickets = get_tickets(pls[i])
                if(tickets <= 0) continue
               
                sort[count][0] = pls[i]
                sort[count][1] = tickets
                count++;
        }
       
        SortCustom2D(sort,count,"stats_custom_compare");
       
        new motd[1024], len       
       
        len = format(motd, 1023,"<body bgcolor=#000000><font color=#FFB000><pre>")
        len += format(motd[len], 1023-len,"%s %-22.22s %3s^n", "#", "Nick", "Number of Tickets")
       
        new players[32], num
        get_players(players, num)
       
        new b = clamp(count,0,15)
       
        new name[32], player
       
        for(new a = 0; a < b; a++)
        {
                player = sort[a][0]
               
                get_user_name(player, name, 31)               
                len += format(motd[len], 1023-len,"%d %-22.22s %d^n", a+1, name, sort[a][1])
        }
       
        len += format(motd[len], 1023-len,"</body></font></pre>")
        show_motd(id, motd, "TOP 15 TICKETS ONLINE")
       
        return PLUGIN_CONTINUE
}

public stats_custom_compare(elem1[],elem2[])
{
        if(elem1[1] > elem2[1]) return -1
        else if(elem1[1] < elem2[1]) return 1
               
        return 0
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1046\\ f0\\ fs16 \n\\ par }
*/


EDUTz 02-27-2013 02:36

Re: Tickets ZP
 
zp_set_user_ammo_packs(id, 4500, true) is wrong, look at the natives.

Code:

#include <amxmodx>
#include <amxmisc>
#include <zombieplague>
#include <sqlx>

#define PLUGIN "SuperHero Tickets"
#define VERSION "1.0"
#define AUTHOR "TheWalker"
#define LOGFILE        "superhero_tickets.log"

new TotalPlayedTime[33]

new Handle:tuple

new host[] = "host", user[] = "user", pass[] = "password", db[] = "database"

public plugin_init()
{
        register_plugin(PLUGIN, VERSION, AUTHOR )
       
        // Menus
        register_clcmd("SuperHero Tickets", "Menu1")
        register_clcmd("SuperHero Trade", "Menu2")
       
        // Comandos
        register_clcmd("say /tickets", "cmd_tickets")
        register_clcmd("say /pts15", "show_top15")
        register_clcmd("say /pts", "cmd_time")
       
        tuple = SQL_MakeDbTuple(host, user, pass, db)
        if(tuple == Handle:Empty_Handle) set_fail_state("Error in SQL Tuple creation.")
       
        new code, error[80], Handle:con
        con = SQL_Connect(tuple, code, error, charsmax(error))
        if(con == Handle:Empty_Handle){
                server_print("Error #%d connecting in database: %s", code, error)
                set_fail_state("Database error. Please check it before running the plugin.")
        }
       
        new Handle:query
        query = SQL_PrepareQuery(con, "CREATE TABLE IF NOT EXISTS `tickets`(id VARCHAR(33) NOT NULL UNIQUE, tickets INT(6) NOT NULL)")
        if(query == Handle:Empty_Handle){
                SQL_FreeHandle(con)
                set_fail_state("Error creating SQL' table.")
        }
       
        if(!SQL_Execute(query)){
                SQL_FreeHandle(con)
                SQL_FreeHandle(query)
                set_fail_state("Error with table's query.")
        }
       
        SQL_FreeHandle(query)
        SQL_FreeHandle(con)
}

public plugin_precache()
{
        precache_sound("misc/woohoo.wav")
}

public get_tickets(id){
        new tickets = TotalPlayedTime[id] + (get_user_time(id, 1) / 60)
        return tickets
}

public cmd_tickets(id)
{
        if ( zp_get_user_ammo_packs(id) <= 0 ) {
                client_print(id, print_chat, "[3D] Seus tickets estao sendo carregados.")
                return
        }
       
        Menu1(id)
}

public cmd_time(id)
{
        new tickets = get_tickets(id)
        if(tickets >= 0){ // por segurança, caso seja admin mais nao tenha flags b, m ou n
                client_print(id, print_chat, "[3D] Voce tem: %d ZP Tickets.", tickets);
       
                if ( tickets >= 120 ) {
                        client_print(id, print_chat, "[3D] Servidor usando tickets desenvolvidos pela Equipe3D")
                        client_print(id, print_chat, "[3D] Digite: /tickets no chat.")
                }
        }
       
        return PLUGIN_CONTINUE
}

public client_disconnect(id)
{
        if(!is_user_admin(id)) return PLUGIN_HANDLED
        new tickets = get_tickets(id)
        if(tickets >= 0) SaveTime(id, tickets)
        return PLUGIN_HANDLED
}

public client_putinserver(id)
{
        if(!is_user_admin(id)) return PLUGIN_HANDLED
        if(is_user_connected(id)) {
                TotalPlayedTime[id] = LoadTime(id)
        }
       
        return PLUGIN_HANDLED
}

/*======================================
[Menu1]
======================================*/

public Menu1(id)
{
        new tickets = get_tickets(id)
       
        //first we need to make a variable that will hold the menu
        new menu = menu_create("\r[\w3D\r] \wZombie \rPlague \wTickets", "menu_handler1")
       
        new Form[50]
        format(Form,49,"%s: \r%d \wTickets!^n","Voce tem",tickets)
        menu_additem(menu ,Form, "3" , 0)
       
        menu_additem(menu, "\wTrocar Tickets por AP ->", "1", 0)
        menu_additem(menu, "\rInfo/Ajuda", "2", 0) 
       
        menu_setprop(menu, MPROP_EXITNAME, "Sair")
       
        menu_display(id, menu, 0)
        return PLUGIN_CONTINUE
}

public menu_handler1(id, menu, item)
{
        if (item == MENU_EXIT)
        {
                menu_destroy(menu)
                return PLUGIN_HANDLED
        }
       
        new data[6], iName[64]
        new access, callback
        menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
       
        new key = str_to_num(data)
        switch(key)
        {
                case 1:
                {
                        Menu2(id)
                        menu_destroy(menu)
                        return PLUGIN_HANDLED                               
                }
                case 2:
                {
                        client_print(id, print_chat, "[3D] Cada 1 Minuto voce recebe 1 ticket.")
                        client_print(id, print_chat, "[3D] Voce pode trocar alguns tickets por Ammo Packs neste Servidor.")
                        Menu1(id)
                        menu_destroy(menu)
                        return PLUGIN_HANDLED                       
                }
                case 3:
                {
                        Menu1(id)
                        menu_destroy(menu)
                        return PLUGIN_HANDLED
                }               
        }
       
        menu_destroy(menu)
        return PLUGIN_HANDLED
}

/*======================================
[Menu2]
======================================*/

public Menu2(id)
{
        //first we need to make a variable that will hold the menu
        new menu = menu_create("\ySuperHero Tickets^n\dTrade tickets for XP:", "menu_handler2")
        // Voce tem X tickets!
       
        new tickets = get_tickets(id)
       
        new Form[50]
        format(Form,49,"%s: \r%d \wtickets!^n","You have",tickets)
        menu_additem(menu ,Form, "7" , 0)
       
        if ( tickets >= 120 ) {
                menu_additem(menu, "\wTrade \r120 pts \wfor \r1000 XP", "1", 0)
        }
        else menu_additem(menu, "\dTrade 120 pts for 1000 XP", "1", 0)
       
        if ( tickets >= 240 ) {
                menu_additem(menu, "\wTrade \r240 pts \wfor \r2500 XP", "2", 0)
        }
        else menu_additem(menu, "\dTrade 240 pts for 2500 XP", "2", 0)
       
        if ( tickets >= 360 ) {
                menu_additem(menu, "\wTrade \r360 pts \wfor \r4500 XP", "3", 0)
        }
        else menu_additem(menu, "\dTrade 360 pts for 4500 XP", "3", 0)       
       
        if ( tickets >= 600 ) {
                menu_additem(menu, "\wTrade \r600 pts \wfor \r9500 XP", "4", 0)
        }
        else menu_additem(menu, "\dTrade 600 pts for 9500 XP", "4", 0)       
       
        if ( tickets >= 900 ) {
                menu_additem(menu, "\wTrade \r900 pts \wfor \r16000 XP", "5", 0)
        }
        else menu_additem(menu, "\dTrade 900 pts for 16000 XP", "5", 0)       
       
        if ( tickets >= 1500 ) {
                menu_additem(menu, "\wTrade \r1500 pts \wfor \r26000 XP", "6", 0)
        }
        else menu_additem(menu, "\dTrade 1500 pts for 26000 XP", "6", 0)               
       
        menu_setprop(menu, MPROP_EXITNAME, "Exit")
       
        menu_display(id, menu, 0)
        return PLUGIN_CONTINUE
}

public menu_handler2(id, menu, item)
{
        if (item == MENU_EXIT)
        {
                menu_destroy(menu)
                return PLUGIN_HANDLED
        }
       
        new data[6], iName[64]
        new access, callback
        menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
       
        new key = str_to_num(data)
        new tickets = get_tickets(id)
        switch(key)
        {               
                case 1:
                {                       
                        if ( tickets >= 120 )
                        {
                                new XP = zp_get_user_ammo_packs(id)
                                new name[33]
                                get_user_name(id, name, charsmax(name))                               
                               
                                log_to_file(LOGFILE, "PLAYER: %s traded 120 tickets! XP after: %i || XP before: %i", name, XP, XP + 1000)                               
                               
                                TotalPlayedTime[id] -= 120
                                zp_set_user_ammo_packs(id, XP + 1000)
                                client_print(id, print_chat, "[ST] You traded 120 superhero tickets for 1000 XP!")
                               
                                client_print(0, print_chat, "[ST] Player %s traded 120 superhero tickets for 1000 XP!", name)
                               
                                TotalPlayedTime[id] += 1
                        }
                        else client_print(id, print_chat, "[ST] You do not have superhero tickets enough to make this trade.")
                }
                case 2:
                {                       
                        if ( tickets >= 240 )
                        {
                                new XP = zp_get_user_ammo_packs(id)
                                new name[33]
                                get_user_name(id, name, charsmax(name))                               
                               
                                log_to_file(LOGFILE, "PLAYER: %s traded 240 tickets! XP after: %i || XP before: %i", name, XP, XP + 2500)
                               
                                TotalPlayedTime[id] -= 240
                                zp_set_user_ammo_packs(id, XP + 2500)
                                client_print(id, print_chat, "[ST] You traded 240 superhero tickets for 2500 XP!")
                                client_cmd(id, "speak misc/woohoo")
                               
                                client_print(0, print_chat, "[ST] Player %s traded 240 superhero tickets for 2500 XP!", name)
                               
                                TotalPlayedTime[id] += 1
                        }
                        else client_print(id, print_chat, "[ST] You do not have superhero tickets enough to make this trade.")
                }
                case 3:
                {
                        if ( tickets >= 360 )
                        {
                                new XP = zp_get_user_ammo_packs(id)
                                new name[33]
                                get_user_name(id, name, charsmax(name))                               
                               
                                log_to_file(LOGFILE, "PLAYER: %s traded 360 tickets! XP after: %i || XP before: %i", name, XP, XP + 4500)                               
                               
                                TotalPlayedTime[id] -= 360
                                zp_set_user_ammo_packs(id, XP + 4500)
                                client_print(id, print_chat, "[ST] You traded 360 superhero tickets for 4500 XP!")
                                client_cmd(id, "speak misc/woohoo")

                                client_print(0, print_chat, "[ST] Player %s traded 360 superhero tickets for 4500 XP!", name)
                               
                                TotalPlayedTime[id] += 1
                        }
                        else client_print(id, print_chat, "[ST] You do not have superhero tickets enough to make this trade.")       
                }
                case 4:
                {
                        if ( tickets >= 600 )
                        {
                                new XP = zp_get_user_ammo_packs(id)
                                new name[33]
                                get_user_name(id, name, charsmax(name))                               
                               
                                log_to_file(LOGFILE, "PLAYER: %s traded 600 tickets! XP after: %i || XP before: %i", name, XP, XP + 9500)               
                               
                                TotalPlayedTime[id] -= 600
                                zp_set_user_ammo_packs(id, XP + 9500)
                                client_print(id, print_chat, "[ST] You traded 600 superhero tickets for 9500 XP!")
                                client_cmd(id, "speak misc/woohoo")
                               
                                client_print(0, print_chat, "[ST] Player %s traded 600 superhero tickets for 9500 XP!", name)
                               
                                TotalPlayedTime[id] += 1
                        }
                        else client_print(id, print_chat, "[ST] You do not have superhero tickets enough to make this trade.")       
                }
                case 5:
                {
                        if ( tickets >= 900 )
                        {
                                new XP = zp_get_user_ammo_packs(id)
                                new name[33]
                                get_user_name(id, name, charsmax(name))                               
                               
                                log_to_file(LOGFILE, "PLAYER: %s traded 900 tickets! XP after: %i || XP before: %i", name, XP, XP + 16000)                               
                               
                                TotalPlayedTime[id] -= 900
                                zp_set_user_ammo_packs(id, XP + 16000)
                                client_print(id, print_chat, "[ST] You traded 900 superhero tickets for 16000 XP!")
                                client_cmd(id, "speak misc/woohoo")
                               
                                client_print(0, print_chat, "[ST] Player %s traded 900 superhero tickets for 16000 XP!", name)
                               
                                TotalPlayedTime[id] += 1
                        }
                        else client_print(id, print_chat, "[ST] You do not have superhero tickets enough to make this trade.")
                }
                case 6:
                {
                        if ( tickets >= 1500 )
                        {
                                new XP = zp_get_user_ammo_packs(id)
                                new name[33]
                                get_user_name(id, name, charsmax(name))                               
                               
                                log_to_file(LOGFILE, "PLAYER: %s traded 1500 tickets! XP after: %i || XP before: %i", name, XP, XP + 26000)                               
                               
                                TotalPlayedTime[id] -= 1500
                                zp_set_user_ammo_packs(id, XP + 26000)
                                client_print(id, print_chat, "[PT] [ST] You traded 1500 superhero tickets for 26000 XP!")
                                client_cmd(id, "speak misc/woohoo")
                               
                                client_print(0, print_chat, "[ST] Player %s traded 900 superhero tickets for 26000 XP!", name)
                               
                                TotalPlayedTime[id] += 1
                        }
                        else client_print(id, print_chat, "[ST] You do not have superhero tickets enough to make this trade.")
                }               
                case 7:
                {
                        Menu1(id)
                }               
        }
       
        menu_destroy(menu)
        return PLUGIN_HANDLED
}

public LoadTime(id)
{
        new authid[34]
        get_user_authid(id, authid, charsmax(authid))
       
        if(containi(authid, "lan") || containi(authid, "pending")) {
                get_user_name(id, authid, charsmax(authid))
        }
       
        new Handle:con, code, error[80]
        con = SQL_Connect(tuple, code, error, charsmax(error))
        if(con == Handle:Empty_Handle){
                server_print("Error #%d to connect in database: %s", code, error)
                set_fail_state("Database Error")
        }
       
        new s[250]
        formatex(s, charsmax(s), "SELECT `tickets` FROM `tickets` WHERE `id` = ^"%s^"", authid)
        new Handle:query = SQL_PrepareQuery(con, s)
        if(query == Handle:Empty_Handle){
                SQL_FreeHandle(con)
                set_fail_state("Error creating sql table")
        }
       
        if(!SQL_Execute(query)){
                new error[500]
                SQL_QueryError(query, error, charsmax(error))
                log_amx("Error in load query: %s", error)
                SQL_FreeHandle(con)
                SQL_FreeHandle(query)
                set_fail_state("Error creating sql load")
        }
       
        new tickets = 0
        if(SQL_NumResults(query) > 0){
                new col = SQL_FieldNameToNum(query, "tickets")
                tickets = SQL_ReadResult(query, col)
        }
       
        SQL_FreeHandle(query)
        SQL_FreeHandle(con)
               
        return tickets
}

public SaveTime(id,PlayedTime)
{
        if (PlayedTime <= 0)  {
                return PLUGIN_CONTINUE
        }
       
        new authid[34]
        get_user_authid(id, authid, charsmax(authid))
       
        if(containi(authid, "lan") || containi(authid, "pending")) {
                get_user_name(id, authid, charsmax(authid))
        }
       
        new Handle:con, code, error[80]
        con = SQL_Connect(tuple, code, error, charsmax(error))
        if(con == Handle:Empty_Handle){
                server_print("Error #%d to connect in database: %s", code, error)
                set_fail_state("Database Error")
        }
       
        new rows, s[250]
        if(!SQL_SimpleQueryFmt(con, error, charsmax(error), rows, "SELECT * FROM `tickets` WHERE `id` = ^"%s^"", authid)){
                SQL_FreeHandle(con)
                log_amx("Error, query SELECT: %s", error)
                set_fail_state("Erro")
        }
        if(rows > 0){
                formatex(s, charsmax(s), "UPDATE `tickets` SET `tickets` = ^"%d^" WHERE `id` = ^"%s^"", PlayedTime, authid)
                new Handle:query = SQL_PrepareQuery(con, s)
                if(query == Handle:Empty_Handle){
                        SQL_FreeHandle(con)
                        set_fail_state("Error creating first save query.")
                }
       
                if(!SQL_Execute(query)){
                        new error[500]
                        SQL_QueryError(query, error, charsmax(error))
                        log_amx("Error creating first save query: %s", error)
                        SQL_FreeHandle(con)
                        SQL_FreeHandle(query)
                        set_fail_state("Error creating first save query")
                }
                SQL_FreeHandle(query)
        }
        else
        {
                formatex(s, charsmax(s), "INSERT INTO `tickets` VALUES(^"%s^",^"%d^")", authid, PlayedTime)
                new Handle:query = SQL_PrepareQuery(con, s)
                if(query == Handle:Empty_Handle){
                        SQL_FreeHandle(con)
                        set_fail_state("Error creating second save query")
                }
               
                if(!SQL_Execute(query)){
                        new error[500]
                        SQL_QueryError(query, error, charsmax(error))
                        log_amx("Error creating second save query: %s", error)
                        SQL_FreeHandle(con)
                        SQL_FreeHandle(query)
                        set_fail_state("Error creating second save query")
                }
                SQL_FreeHandle(query)
        }
       
        SQL_FreeHandle(con)
        return PLUGIN_HANDLED
}

public show_top15(id)
{
        new i = 0, count, pls[32], playerCount, tickets
        static sort[33][2]
       
        get_players(pls, playerCount, "ch")
       
        for(;i<playerCount;i++)
        {
                tickets = get_tickets(pls[i])
                if(tickets <= 0) continue
               
                sort[count][0] = pls[i]
                sort[count][1] = tickets
                count++;
        }
       
        SortCustom2D(sort,count,"stats_custom_compare");
       
        new motd[1024], len       
       
        len = format(motd, 1023,"<body bgcolor=#000000><font color=#FFB000><pre>")
        len += format(motd[len], 1023-len,"%s %-22.22s %3s^n", "#", "Nick", "Number of Tickets")
       
        new players[32], num
        get_players(players, num)
       
        new b = clamp(count,0,15)
       
        new name[32], player
       
        for(new a = 0; a < b; a++)
        {
                player = sort[a][0]
               
                get_user_name(player, name, 31)               
                len += format(motd[len], 1023-len,"%d %-22.22s %d^n", a+1, name, sort[a][1])
        }
       
        len += format(motd[len], 1023-len,"</body></font></pre>")
        show_motd(id, motd, "TOP 15 TICKETS ONLINE")
       
        return PLUGIN_CONTINUE
}

public stats_custom_compare(elem1[],elem2[])
{
        if(elem1[1] > elem2[1]) return -1
        else if(elem1[1] < elem2[1]) return 1
               
        return 0
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1046\\ f0\\ fs16 \n\\ par }
*/


DJ Fox 02-27-2013 12:43

Re: Tickets ZP
 
closing the plugin in a good plus it does not work on my addons, you are the modules?

Look what appears in the logs amxmodx

Code:

L 02/27/2013 - 14:18:28: Start of error session.
L 02/27/2013 - 14:18:28: Info (map "zm_alpha") (file "addons/amxmodx/logs/error_20130227.log")
L 02/27/2013 - 14:18:28: [AMXX] Plugin ("superhero_tickets.amxx") is setting itself as failed.
L 02/27/2013 - 14:18:28: [AMXX] Plugin says: Database error. Please check it before running the plugin.
L 02/27/2013 - 14:18:28: [AMXX] Run time error 1 (plugin "superhero_tickets.amxx") - forced exit


EDUTz 02-27-2013 15:55

Re: Tickets ZP
 
make sure you comment out the mysql module (in modules.ini) and it's working by typing amx_plugins.

DJ Fox 02-27-2013 16:15

Re: Tickets ZP
 
already made ​​sure that the modules are released are:

mysql
sqlite
fun
engine
fakemeta
geoip
sockets
regex
nvault
hamsandwich
cstrike
csx

and these are the modules that I have in amxmodx:
[IMG]http://img805.**************/img805/9190/99854469.png[/IMG]

naven 02-27-2013 17:48

Re: Tickets ZP
 
Quote:

L 02/27/2013 - 14:18:28: [AMXX] Plugin says: Database error. Please check it before running the plugin.
It looks more like db connection problem.

P.S. That is no-steam. Get steam in order to get support here.

DJ Fox 02-27-2013 19:20

Re: Tickets ZP
 
but this plugin is used in many non-steam servers

YamiKaitou 02-27-2013 19:30

Re: Tickets ZP
 
Quote:

Originally Posted by DJ Fox (Post 1903342)
but this plugin is used in many non-steam servers

Do you use No-Steam?

DJ Fox 02-27-2013 19:33

Re: Tickets ZP
 
I use non-steam!


All times are GMT -4. The time now is 21:50.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.