#include < amxmodx >
#include < mysql >
#include < zombieplague >
#include <sqlx2>
#define get_ammo(%1) zp_get_user_ammo_packs(%1)
#define set_ammo(%1,%2) zp_set_user_ammo_packs(%1,%2)
#define get_class(%1) zp_get_user_next_class(%1)
#define set_class(%1,%2) zp_set_user_zombie_class(%1,%2)
#define PLUGIN_NAME "Save Ammo & Class zombies"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "Opo4uMapy"
#define LIMIT_AMMO 30000
new const
Host[]= "",
User[]= "",
Pass[]= "",
Db[]= "";
new const
Table[] = "zm_new",
AuthRow[] = "steam",
MoneyRow[]= "user_money",
ClassRow[]= "user_class"
new Handle:SQL_Tuple;
new g_szSteam[33][35]
public plugin_init( )
register_plugin ( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR );
public client_putinserver( id )
set_task(5.0, "LoadData", id+73718)
public plugin_cfg()
set_task(1.0, "Load_Debug")
public Load_Debug()
{
new g_Error[512]
SQL_Tuple = SQL_MakeDbTuple(Host, User, Pass, Db);
new ErrorCode,Handle:SqlConnection = SQL_Connect(SQL_Tuple,ErrorCode,g_Error,charsmax(g_Error))
if(SqlConnection == Empty_Handle)
set_fail_state(g_Error)
if(!SQL_TableExists(SqlConnection, Table))
{
new Handle:Queries;
new Query[256]
format( Query, 255, "CREATE TABLE `%s`.`%s` (`%s` VARCHAR(40) CHARACTER SET cp1250 COLLATE cp1250_general_ci NOT NULL, `%s` INT NOT NULL, `%s` INT NOT NULL, PRIMARY KEY (`%s`))", Db, Table, AuthRow, MoneyRow, ClassRow, AuthRow);
Queries = SQL_PrepareQuery( SqlConnection, Query )
if(!SQL_Execute(Queries))
{
SQL_QueryError(Queries,g_Error,charsmax(g_Error))
set_fail_state(g_Error);
}
SQL_FreeHandle(Queries)
}
SQL_FreeHandle(SqlConnection)
}
public QueryHandler(FailState, Handle:Query, Error[], ErrCode, data[], size, Float:querytime)
{
if(!CheckQuery(FailState, ErrCode, Error))
{
SQL_FreeHandle(Query);
return PLUGIN_HANDLED;
}
static id; id = data[0];
if(SQL_NumResults(Query) < 1)
{
new Query[270]
format( Query, 255, "INSERT INTO `%s` ( `%s` , `%s`, `%s`) VALUES ('%s', '5', '0');", Table, AuthRow, MoneyRow, ClassRow, g_szSteam[id] );
SQL_ThreadQueryFormatNoData(SQL_Tuple, "IgnoreHandle", Query )
set_class(id, 0)
set_ammo(id, 5)
}
else
{
set_ammo(id, SQL_ReadResult(Query, 0))
set_class(id, SQL_ReadResult(Query, 1))
}
SQL_FreeHandle(Query);
return PLUGIN_CONTINUE;
}
public LoadData(task)
{
new id=task-73718
if(!is_user_connected(id))
return;
g_szSteam[id][0] = '^0'
get_user_authid(id, g_szSteam[id] ,charsmax(g_szSteam))
new Query[256]
static data[1]; data[0]=id
format( Query, 255, "SELECT `%s`, `%s` FROM `%s` WHERE `%s` = '%s'", MoneyRow, ClassRow, Table, AuthRow, g_szSteam[id] );
SQL_ThreadQueryFormat(SQL_Tuple,"QueryHandler", Query, data, 1 )
}
public Save_Data(id)
{
SQL_ThreadQueryFormatNoData(SQL_Tuple, "IgnoreHandle", "UPDATE `%s` SET `%s` = '%i', `%s` = '%i' WHERE `%s`.`%s` = '%s'", Table, MoneyRow, get_ammo(id), ClassRow, get_class(id), Table, AuthRow, g_szSteam[id] );
}
public client_disconnect(id)
{
if(!equal(g_szSteam[id], "STEAM_ID_LAN") && !equal(g_szSteam[id], "BOT") && !equal(g_szSteam[id], "VALVE_ID_LAN"))
Save_Data(id)
}
public IgnoreHandle(FailState,Handle:Query,Error[],ErrCode,Data[],DataSize)
{
CheckQuery(FailState, ErrCode, Error)
SQL_FreeHandle(Query)
return PLUGIN_HANDLED
}
public plugin_end()
{
if(SQL_Tuple)
SQL_FreeHandle(SQL_Tuple);
}