Mam plugin, który będzie zapisywać dane od gracza. Wszystko jest ładnie pięknie i cacy tylko, że jak tworzy mi nowe tabele w sql, to są one puste, a chcę aby zawierały dane "Brak" oraz jak mam pobrać dane z messagemode'a i przekazać je do tablic.
Spoiler
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#define PLUGIN "Polaczenie z MySQL"
#define VERSION "0.1a"
#define AUTHOR "Daniosik"
#define SQL_TABLE "dane_alpha_01"
new Handle:gTuple
new bool:gConnected;
new iPlayerDane1[64];
new iPlayerDane2[64];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd( "say /p", "PokazDane");
register_clcmd( "say /n", "NadpiszDane");
register_clcmd( "messagemode dane1", "Cmd_CreateDane1" );
register_clcmd( "messagemode dane2", "Cmd_CreateDane2" );
}
public plugin_cfg(){
sqlStart();
}
public client_putinserver(id){
CheckData(id)
}
public sqlStart(){
gTuple = SQL_MakeDbTuple("xxx", "xxx", "xxx", "xxx");
new szCommand[1024],iLen = 0;
iLen += formatex(szCommand,charsmax( szCommand ),"CREATE TABLE IF NOT EXISTS %s (`nick` VARCHAR ( 64 ) , `dane1` VARCHAR (64) , `dane2` VARCHAR( 64 )",SQL_TABLE)
iLen += formatex(szCommand[ iLen ],charsmax( szCommand ) - iLen,")" );
SQL_ThreadQuery(gTuple,"sqlStartHandle",szCommand)
}
public sqlStartHandle(FailState,Handle:Query,Error[],Errorcode,Data[],DataSize)
{
if(Errorcode)
log_amx("Blad w zapytaniu: %s [SaveData]", Error)
if(FailState == TQUERY_CONNECT_FAILED)
{
log_amx("Nie mozna podlaczyc sie do bazy danych.")
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_amx("Zapytanie anulowane [SaveData]")
return PLUGIN_CONTINUE
}
gConnected = true;
return PLUGIN_CONTINUE
}
public SaveData(id)
{
if(!gConnected) return
new Data[1]
Data[0] = id
new qCommand[512], szName[32]
get_user_name(id, szName, charsmax(szName))
format(qCommand, sizeof qCommand-1, "INSERT INTO %s (`nick`, `dane1`, `dane2`) VALUES ('%s', '%s', '%s');",SQL_TABLE, szName, iPlayerDane1[id], iPlayerDane2[id])
SQL_ThreadQuery(gTuple, "SaveHandler", qCommand, Data, 1)
}
public SaveHandler(FailState, Handle:Query, Error[], Errorcode, Data[], DataSize)
{
if(Errorcode)
log_amx("Blad w zapytaniu: %s [SaveData]", Error)
if(FailState == TQUERY_CONNECT_FAILED)
{
log_amx("Nie mozna podlaczyc sie do bazy danych.")
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_amx("Zapytanie anulowane [SaveData]")
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public CheckData(id)
{
if(!gConnected) return
new Data[1]
Data[0] = id
new qCommand[512], szName[32]
get_user_name(id, szName, charsmax(szName))
format(qCommand, sizeof qCommand-1, "SELECT * FROM %s WHERE `nick` = '%s'",SQL_TABLE, szName)
SQL_ThreadQuery(gTuple, "CheckHandler", qCommand, Data, 1)
}
public CheckHandler(FailState, Handle:Query, Error[], Errorcode, Data[], DataSize)
{
new id = Data[0]
if(Errorcode)
log_amx("Blad w zapytaniu: %s [CheckData]", Error)
if(FailState == TQUERY_CONNECT_FAILED)
{
log_amx("Nie mozna podlaczyc sie do bazy danych.")
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_amx("Zapytanie anulowane [CheckData]")
return PLUGIN_CONTINUE
}
if(!SQL_MoreResults(Query))
{
SaveData(id)
client_cmd(id, "echo Zapisywanie")
}
else
{
client_cmd(id, "echo Wczytywanie")
iPlayerDane1[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"dane1"))
iPlayerDane2[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"dane2"))
}
return PLUGIN_CONTINUE
}
public NadpiszDane(id)
{
if(!gConnected) return
new Data[1]
Data[0] = id
new qCommand[512], szName[32]
get_user_name(id, szName, charsmax(szName))
format(qCommand, sizeof qCommand-1, "UPDATE %s SET `dane1` = '%s' , `dane2` = '%s' WHERE `nick` = '%s'",SQL_TABLE, iPlayerDane1[id], iPlayerDane2[id], szName)
SQL_ThreadQuery(gTuple, "SaveHandler", qCommand, Data, 1)
client_cmd(id, "echo Nadpisywanie")
}
public PokazDane(id)
{
client_print(id, print_chat, "Dane1: %s | Dane2: %s", iPlayerDane1[id], iPlayerDane2[id])
}
public Cmd_CreateDane1(id)
{
new szArgs[ 60 ];
read_args( szArgs, charsmax( szArgs ) );
remove_quotes( szArgs );
iPlayerDane1[id] = szArgs;
}
public Cmd_CreateDane2(id)
{
new szArgs[ 60 ];
read_args( szArgs, charsmax( szArgs ) );
remove_quotes( szArgs );
iPlayerDane2[id] = szArgs;
}Dla moda, kod ma mniej niz 200 linijek


Dodatki SourceMod




Moja zawartość
Mężczyzna