Mam pytanie jak zapisać czas gracza do zmiennej a potem jak go odczytać z tej zmiennej ?
Zrobiłem taki kod od razu z zapisem mysql
Do bazy zapisuje ,tworzy tabelke itp ale jak wbijam na serwer zeruje mi się zmienna Czas_Gracza[id]
Oto moje wypociny
Spoiler
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <cstrike>
#include <colorchat>
#include <sqlx>
#define PLUGIN "Czas_Online"
#define VERSION "1.0"
#define AUTHOR "speedkill"
#define prefix "Online_Time"
new chce[33]
new Czas_Gracza[33]
//sql
new name[64];
new Handle:g_SqlTuple;
new bool:WczytaneDane[33] = {false};
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /on_time","on")
register_clcmd("say /off_time","off")
set_task(90.0,"info",_,_,_,"b")
register_clcmd("say /zmienna","test")
register_cvar("amx_time_host", "localhost")
register_cvar("amx_time_user", "root")
register_cvar("amx_time_pass", "root")
register_cvar("amx_time_db", "db")
set_task(1.0, "polacz")
}
public polacz()
{
new Host[32], User[32], Pass[32], DB[32]
get_cvar_string("amx_time_host", Host, 31)
get_cvar_string("amx_time_user", User, 31)
get_cvar_string("amx_time_pass", Pass, 31)
get_cvar_string("amx_time_db", DB, 31)
g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,DB)
new error, szError[128]
new Handle:hConn = SQL_Connect(g_SqlTuple,error,szError, 127)
if(error){
log_amx("Error: %s", szError)
return;
}
new Handle:Queries = SQL_PrepareQuery(hConn,"CREATE TABLE IF NOT EXISTS `Times` (name VARCHAR(64) NOT NULL, czas INT(10) NOT NULL DEFAULT 0, PRIMARY KEY(name))")
SQL_Execute(Queries)
SQL_FreeHandle(Queries)
SQL_FreeHandle(hConn)
}
public client_connect(id)
{
Czas_Gracza[id] = 0
WczytaneDane[id] = false
load(id)
}
public client_disconnect( id )
{
save(id)
}
public plugin_end()
{
SQL_FreeHandle(g_SqlTuple);
}
public client_putinserver(id) {
set_task(1.0,"Czas",id,_,_,"b");
}
public Czas(id)
{
if(chce[id])
{
if(cs_get_user_team(id) == CS_TEAM_CT || cs_get_user_team(id) == CS_TEAM_T)
{
new x
new sekundy
new minuty
new godziny
x = getPlayedTime(id)
sekundy = x%60
minuty = x/60
godziny = x/(60*60)
set_hudmessage(127, 255, 127, 0.5, 0.1, 0, 6.0, 1.0)
show_hudmessage(id, "%d:%d:%d",godziny,minuty,sekundy)
}
}
}
public on(id)
{
ColorChat(id,NORMAL,"^x03[^x04%s^x03]^x04 Wlaczyles Pokazywanie Czasu.",prefix)
chce[id] = true
}
public off(id)
{
ColorChat(id,NORMAL,"^x03[^x04%s^x03]^x04 Wylaczyles Pokazywanie Czasu.",prefix)
chce[id] = false
}
public info()
{
switch(random_num(1, 2))
{
case 1:
{
ColorChat(0,GREEN,"^x04[^x03%s^x04]^x04 Cos Cos Cos <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.png' class='bbc_emoticon' alt=':D' />",prefix)
}
case 2:
{
ColorChat(0,GREEN,"^x04[^x03%s^x04]^x03 say /off_time - Wylaczenie Pokazywania sie czasu ^x04||^x03 say /on_time Wlaczenie Pokazywania sie czasu",prefix)
}
}
}
public test(id)
{
ColorChat(id,NORMAL,"^x03[^x04%s^x03]^x04 Zmienna wynosi %d.",prefix,getPlayedTime(id))
}
//Z deathrun_stats <img src='https://amxx.pl/public/style_emoticons/<#EMO_DIR#>/tongue.png' class='bbc_emoticon' alt=':P' />
getPlayedTime(id){
return Czas_Gracza[id] + get_user_time(id, 1);
}
//Koniec z deargrun_stats
public load(id)
{
new name[64], szTemp[512];
get_user_name(id, name, 63);
replace_all(name, 63, "'", "\'");
replace_all(name, 63, "`", "\`");
new data[1];
data[0] = id;
formatex(szTemp,charsmax(szTemp),"SELECT * FROM `Times` WHERE `name` = '%s'", name);
SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp, data, sizeof(data));
}
public register_client(failstate, Handle:query, error[],errcode, data[], datasize)
{
if(failstate != TQUERY_SUCCESS){
log_amx("<Query> Error: %s", error);
return;
}
new id = data[0];
if(!is_user_connected(id) && !is_user_connecting(id))
return;
if(SQL_NumRows(query))
{
SQL_ReadResult(query,SQL_FieldNameToNum(query,"name"), name, 63);
Czas_Gracza[id] = SQL_ReadResult(query, SQL_FieldNameToNum(query,"czas"));
WczytaneDane[id] = true;
}
else
{
new name[64];
get_user_name(id, name, 63);
replace_all(name, 63, "'", "\'");
replace_all(name, 63, "`", "\`");
new szTemp[512], data[1];
data[0] = id;
formatex(szTemp,charsmax(szTemp),"INSERT INTO `Times` (`name`, `czas`) VALUES ('%s','%d')", name, getPlayedTime(id));
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandleInsert",szTemp,data, 1);
}
}
public save(id)
{
if(!WczytaneDane[id])
{
load(id);
return PLUGIN_HANDLED;
}
new szTemp[512];
new name[64];
get_user_name(id, name, 63);
replace_all(name, 63, "'", "\'");
replace_all(name, 63, "`", "\`");
formatex(szTemp,charsmax(szTemp),"UPDATE `Times` SET `czas` = '%d' WHERE `name` = '%s'",getPlayedTime(id), name);
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandleSave",szTemp);
return PLUGIN_CONTINUE;
}
public IgnoreHandleInsert(failstate, Handle:query, error[], errnum, data[], size){
if(failstate != TQUERY_SUCCESS){
log_amx("<Query> Error: %s", error);
return;
}
WczytaneDane[data[0]] = true;
}
public IgnoreHandleSave(failstate, Handle:query, error[], errnum, data[], size){
if(failstate != TQUERY_SUCCESS){
log_amx("<Query> Error: %s", error);
return;
}
}
Jakby ktoś mógł napisać gdzie jest błąd
Z góry dziękuje
Użytkownik speedkill123 edytował ten post 19.11.2011 10:09


Dodatki SourceMod













