#include <amxmodx>
#include <amxmisc>
#include <sqlx>
new pont[33]
new Host[] = "HOST"
new User[] = "USER"
new Pass[] = "PASS"
new Db[] = "DB"
new Handle:g_SqlTuple
public plugin_init() {
register_plugin("MysQl Mentés","1.0","anadrol")
register_event("DeathMsg", "Event_DeathMsg", "a")
register_clcmd("say /pont", "pontjaim")
set_task(1.0, "MySql_Init") // MysQl Init-ben felcsatlakozunk a MysQl szerverre!
}
public Event_DeathMsg()
{
if(read_data(1) != read_data(2))
{
pont[read_data(1)] += 10
}
}
public pontjaim(id)
{
client_print(id, print_chat, "Neked %d pontod van!", pont[id])
}
public MySql_Init()
{
g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db)
new ErrorCode
new Error[512]
new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,Error,charsmax(Error))
if(SqlConnection == Empty_Handle)
{
set_fail_state(Error)
}
new szTemp[1024]
formatex(szTemp, charsmax(szTemp), "CREATE TABLE IF NOT EXISTS server \
(nev varchar(32),pont INT(32),cucc1 INT(32),cucc2 INT(32),cucc3 INT(32),cucc4 INT(32),cucc5 INT(32),\
cucc6 INT(32),cucc7 INT(32),cucc8 INT(32),cucc9 INT(32),cucc10 INT(32),cucc11 INT(32),\
cucc12 INT(32),cucc13 INT(32),cucc14 INT(32),cucc15 INT(32),cucc16 INT(32),cuc17 INT(32),cucc18 INT(32),cucc19 INT(32),cucc20 INT(32),cucc21 INT(32),cucc22 INT(32),\
cucc23 INT(32),cucc24 INT(32),cucc25 INT(32),cucc26 INT(32))")
new Handle:Queries = SQL_PrepareQuery(SqlConnection,szTemp) // Létrehozzuk a server táblát és a mentési sorokat!
if(!SQL_Execute(Queries))
{
SQL_QueryError(Queries,Error,charsmax(Error))
set_fail_state(Error)
}
SQL_FreeHandle(Queries)
SQL_FreeHandle(SqlConnection)
}
public plugin_end()
{
SQL_FreeHandle(g_SqlTuple)
}
public betoltes(id)
{
new szNev[32], szTemp[512]
get_user_name(id, szNev, charsmax(szNev))
new Data[1]
Data[0] = id
format(szTemp,charsmax(szTemp),"SELECT * FROM `server` WHERE (`server`.`nev` = '%s')", szNev) // Kiválasztjuk a játékost a globa-_unison táblából a neve alapján!
SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1)
}
public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED)
{
log_amx("Kapcsolodas sikertelen. [%d] %s", Errcode, Error)
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_amx("A QUERY betoltese sikertelen.[%d] %s", Errcode, Error)
}
new id
id = Data[0]
if(SQL_NumResults(Query) < 1)
{
new szNev[32]
get_user_name(id, szNev, charsmax(szNev))
new szTemp[512]
format(szTemp,charsmax(szTemp),"INSERT INTO `server` ( `nev` , `pont`)VALUES ('%s','0');",szNev) // Ha a játékos neve nem található a táblában akkor létrehozunk neki egy új sort a nevével és a pont értékét beállítjük 0-ra!
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
}
else
{
pont[id] = SQL_ReadResult(Query, 1) // Ha van már ilyen név az adatbázisban akkor a pontjait beállítjuk neki a pont sorban található értékre (0 = név, 1= pont)!
}
return PLUGIN_HANDLED
}
public mentes(id)
{
new szNev[32], szTemp[512]
get_user_name(id, szNev, charsmax(szNev))
format(szTemp,charsmax(szTemp),"UPDATE `server` SET `pont` = '%i' WHERE `server`.`nev` = '%s';",pont[id], szNev) // Frissítjük az adatokat tehát a server táblán belüli pont sorba beírjuk a játékos jelenlegi pontját ott ahol a név megegyezik a játékos nevével!
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp)
}
public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
SQL_FreeHandle(Query)
return PLUGIN_HANDLED
}
public client_putinserver(id)
{
betoltes(id)
}
public client_disconnect(id)
{
mentes(id)
}