Raised This Month: $ Target: $400
 0% 

Help me with tickets


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
DJ Fox
BANNED
Join Date: Jun 2010
Old 04-29-2012 , 22:15   Help me with tickets
Reply With Quote #1

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 }
*/
DJ Fox is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 04-30-2012 , 03:35   Re: Help me with tickets
Reply With Quote #2

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 View Post
All good guys?
That doesn't make any sense.
__________________
fysiks is offline
DJ Fox
BANNED
Join Date: Jun 2010
Old 04-30-2012 , 17:50   Re: Help me with tickets
Reply With Quote #3

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 }
*/

Last edited by DJ Fox; 04-30-2012 at 17:51.
DJ Fox is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 05-01-2012 , 00:19   Re: Help me with tickets
Reply With Quote #4

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.
__________________
fysiks is offline
DJ Fox
BANNED
Join Date: Jun 2010
Old 05-01-2012 , 21:47   Re: Help me with tickets
Reply With Quote #5

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 }
*/

Last edited by DJ Fox; 05-01-2012 at 23:37.
DJ Fox is offline
Old 05-03-2012, 21:40
DJ Fox
This message has been deleted by Exolent[jNr]. Reason: Don't bump until 2 weeks have passed since last post.
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


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


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