AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Help me with tickets (https://forums.alliedmods.net/showthread.php?t=184025)

DJ Fox 04-29-2012 22:15

Help me with tickets
 
All good guys?
I was doing a ticket system, like the super hero of the tickets, but I was trying to turn it to zombie plague,
I was trying to do this but to exchange for Ammo Packs
but this was not successful give a look at the script and try to compile, will not succeed, what is the predicament?

Code:

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

#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", ADMIN_LEVEL_H)
        register_clcmd("say /pts15", "show_top15", ADMIN_LEVEL_H)
        register_clcmd("say /pts", "cmd_time", ADMIN_LEVEL_H)
       
        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, "[ST] Wait for you XP to load.")
                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, "[Gp'Ex] Voce tem: %d ZP Tickets.", tickets);
       
                if ( tickets >= 120 ) {
                        client_print(id, print_chat, "[Gp'Ex] Voce ja tem tickets suficientes para trocar por AP,!")
                        client_print(id, print_chat, "[Gp'Ex] 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("\w[\rGp\w'\rEx\w] \yMenu de Tickets", "menu_handler1")
       
        new Form[50]
        format(Form,49,"%s: \r%d \wTickets!^n","You have",tickets)
        menu_additem(menu ,Form, "3" , 0)
       
        menu_additem(menu, "\wTrocar tickets por AP ->", "1", 0)
        menu_additem(menu, "\rAjuda", "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, "[Gp'Ex] Voce ganha 1 ticket a cada 1 minuto jogado.")
                        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("\w[\rGp\w'\rEx\w]^n\dTrocar Tickets por AP's:", "menu_handler2")
        // Voce tem X tickets!
       
        new tickets = get_tickets(id)
       
        new Form[50]
        format(Form,49,"%s: \r%d \wTickets!^n","Voce tem",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 AP = 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, 100, 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 AP = 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, 45, 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 AP = 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, 20, 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 AP = 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, 10, 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 AP = 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, 10, 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 AP = 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, 10, 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 }
*/


fysiks 04-30-2012 03:35

Re: Help me with tickets
 
Read the errors when you compile it. It tells you what is wrong. The first error tells you that you don't have enough arguments. Go to line 69 and see what is going on. There is only one function on line 69 so that makes your job here very easy. That function is expecting more than one argument. From the looks of the context you are actually using the wrong function.


Quote:

Originally Posted by DJ Fox (Post 1699064)
All good guys?

That doesn't make any sense.

DJ Fox 04-30-2012 17:50

Re: Help me with tickets
 
I tried to fix the mistakes but are now on one but they are 6 errors
Here is the script, please help me I'm inexperienced.

Error: error 088 number arguments does not match definition

Code:

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

#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, "[ST] Wait for you XP to load.")
                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, "[ST] You have: %d SuperHero Tickets.", tickets);
       
                if ( tickets >= 120 ) {
                        client_print(id, print_chat, "[ST] You have got enough tickets to trade for a prize! Check the menu!")
                        client_print(id, print_chat, "[ST] Use: /tickets in 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("\ySuperHero Tickets", "menu_handler1")
       
        new Form[50]
        format(Form,49,"%s: \r%d \wtickets!^n","You have",tickets)
        menu_additem(menu ,Form, "3" , 0)
       
        menu_additem(menu, "\wTrade Tickets for XP ->", "1", 0)
        menu_additem(menu, "\rHelp", "2", 0) 
       
        menu_setprop(menu, MPROP_EXITNAME, "Exit")
       
        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, "[ST] Every 1 minute online you receive 1 SuperHero Ticket.")
                        client_print(id, print_chat, "[ST] You can trade some tickets for XP in this server.")
                        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 AP = 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, AP, AP + 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 AP = 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, AP, AP + 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 AP = 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, AP, AP + 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 AP = 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, AP, AP + 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 AP = 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, AP, AP + 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 AP = 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, AP, AP + 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 }
*/


fysiks 05-01-2012 00:19

Re: Help me with tickets
 
That means you need to find out how many arguments that function actually requires. It tells you exactly what you need to look at in the error. Start reading the error.

DJ Fox 05-01-2012 21:47

Re: Help me with tickets
 
looks expensive everything worked perfect but the plugin type this in time to add ammo packs it detracts from the value that you already have, EXAMPLE: I have 200 AP, I'll replace 120 by 60AP tickets, he takes the 200 that already have and AP I get 60 ap, the predicament now is this, the rest is perfect, the script here it is below!

Code:

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

#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, "[ST] Wait for you XP to load.")
                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, "[ST] You have: %d SuperHero Tickets.", tickets);
       
                if ( tickets >= 120 ) {
                        client_print(id, print_chat, "[ST] You have got enough tickets to trade for a prize! Check the menu!")
                        client_print(id, print_chat, "[ST] Use: /tickets in 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("\ySuperHero Tickets", "menu_handler1")
       
        new Form[50]
        format(Form,49,"%s: \r%d \wtickets!^n","You have",tickets)
        menu_additem(menu ,Form, "3" , 0)
       
        menu_additem(menu, "\wTrade Tickets for XP ->", "1", 0)
        menu_additem(menu, "\rHelp", "2", 0) 
       
        menu_setprop(menu, MPROP_EXITNAME, "Exit")
       
        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, "[ST] Every 1 minute online you receive 1 SuperHero Ticket.")
                        client_print(id, print_chat, "[ST] You can trade some tickets for XP in this server.")
                        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 AP = 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, AP, AP + 1000)                               
                               
                                TotalPlayedTime[id] -= 120
                                zp_set_user_ammo_packs(id, 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 AP = 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, AP, AP + 2500)
                               
                                TotalPlayedTime[id] -= 240
                                zp_set_user_ammo_packs(id, 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 AP = 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, AP, AP + 4500)                               
                               
                                TotalPlayedTime[id] -= 360
                                zp_set_user_ammo_packs(id, 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 AP = 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, AP, AP + 9500)               
                               
                                TotalPlayedTime[id] -= 600
                                zp_set_user_ammo_packs(id, 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 AP = 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, AP, AP + 16000)                               
                               
                                TotalPlayedTime[id] -= 900
                                zp_set_user_ammo_packs(id, 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 AP = 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, AP, AP + 26000)                               
                               
                                TotalPlayedTime[id] -= 1500
                                zp_set_user_ammo_packs(id, 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 }
*/



All times are GMT -4. The time now is 07:51.

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