Neteisingai krauna sql duomenis

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
addinol
Jau po truputį tampa savu
Posts: 144
Joined: 2010 Sep 05 15:20
Skype: kasparas94

Neteisingai krauna sql duomenis

Post by addinol »

Sveiki, taigi kažkodėl neteisingai krauna sql duomenis.

Štai įsaugoju kaip:

Code: Select all

Mute[id] = mute_time + get_systime();        new szTemp[512]        format(szTemp,charsmax(szTemp),"INSERT INTO `bans` ( `auth` , `mute_time`, `mute_reason`, `mute_admin`)VALUES ('%s','%d', '%s', '%s');", szTargetAuth, mute_time + get_systime(), szReason, szAdminName)        SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp) 
ir kraunu štai taip:

Code: Select all

public client_putinserver(id){    Load_MySql(id)}   public Load_MySql(id){    new szAuthID[33], szTemp[512]    get_user_authid(id, szAuthID, 32)        new Data[1]    Data[0] = id        format(szTemp,charsmax(szTemp),"SELECT * FROM `bans` WHERE (`bans`.`auth` = '%s')", szAuthID)    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("Load - Could not connect to SQL database.  [%d] %s", Errcode, Error)    }    else if(FailState == TQUERY_QUERY_FAILED)    {        log_amx("Load Query failed. [%d] %s", Errcode, Error)    }     new id    id = Data[0]        if(SQL_NumResults(Query) >= 1)     {        iMute[id]    = SQL_ReadResult(Query, 1)        SQL_ReadResult( Query, 2, iMuteReason[id], charsmax( iMuteReason[ ] ) )        SQL_ReadResult( Query, 3, iMuteAdmin[id], charsmax( iMuteAdmin[ ] ) )                iBan[id]    = SQL_ReadResult(Query, 4)        SQL_ReadResult( Query, 5, iBanReason[id], charsmax( iBanReason[ ] ) )        SQL_ReadResult( Query, 6, iBanAdmin[id], charsmax( iBanAdmin[ ] ) )    }    return PLUGIN_HANDLED} public client_disconnect(id){    iMute[id] = 0;    iMuteReason[id][0] = '^0'    iMuteAdmin[id][0] = '^0'    iBan[id] = 0;    iBanReason[id][0] = '^0'    iBanAdmin[id][0] = '^0'}  
Ir kai užkrauna kažkodėl iMute[index] nors tūrėtų būti tarkim ten 300 + get_systime(), bet būna mažiau už sys time, nes tikrinu ir matau tai, bet jei nedarau disconnect ir vėl connect tada viskas ok, tas iMute[index] nusistato, bet va krauna blogai rodos.

User avatar
hleV
AMX Mod X ekspertai
Posts: 875
Joined: 2011 Apr 02 11:23
Skype: hlev.lt
Location: Šiauliai

Re: Neteisingai krauna sql duomenis

Post by hleV »

get_systime() grąžina float reikšmę, o tu rašai kaip integer (%d).

Code: Select all

format(szTemp,charsmax(szTemp),"SELECT * FROM `bans` WHERE (`bans`.`auth` = '%s')", szAuthID)
Tarp `bans` ir `auth` taškas? Ne ką SQL užklausose išmanau, bet tokio dalyko nesu matęs.
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

addinol
Jau po truputį tampa savu
Posts: 144
Joined: 2010 Sep 05 15:20
Skype: kasparas94

Re: Neteisingai krauna sql duomenis

Post by addinol »

Na dėl to taško, tai čia viskas ok naudoju jį ir ant kitur ir viskas lyg ir ok,

o tai dėl to get_systime taip kaip tikrinti ?

if(iMute[id] + 0.0 > get_systime()), ar toks tinka ;) ?

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Neteisingai krauna sql duomenis

Post by aaarnas »

Jis turėjo omenyje, kad formatuojant query (mute_time + get_systime()) grąžina float reikšmę, o tu ją pažymi, kaip integer (%d). Tai arba naudok (%f) ir duombazėje naudok lentelės tipą atpažįstantį float reikšmes, arba apvalink ir perduok integer reikšmę.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

addinol
Jau po truputį tampa savu
Posts: 144
Joined: 2010 Sep 05 15:20
Skype: kasparas94

Re: Neteisingai krauna sql duomenis

Post by addinol »

o kaip apvalinti, ar geriau naudoti tą kitą būdą, nes kaip suprantu jei bus po kablelio skaičius jis tikslesnis ?

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Neteisingai krauna sql duomenis

Post by aaarnas »

Palikau CS pasaulį ;/ . Nebepasiekiamas.

addinol
Jau po truputį tampa savu
Posts: 144
Joined: 2010 Sep 05 15:20
Skype: kasparas94

Re: Neteisingai krauna sql duomenis

Post by addinol »

if(iMute[id] > floatround(get_systime(), floatround_round))

Does not work x(

floatround(Float:get_systime()) ?

Bet su šituo suapvalinimu labai blogas reikšmes gauna.

Kaip naudoti format_time su float reikšme ?

User avatar
hleV
AMX Mod X ekspertai
Posts: 875
Joined: 2011 Apr 02 11:23
Skype: hlev.lt
Location: Šiauliai

Re: Neteisingai krauna sql duomenis

Post by hleV »

Vis dėl to get_systime() grąžina integer reikšmę, supainiojau su get_gametime().
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

addinol
Jau po truputį tampa savu
Posts: 144
Joined: 2010 Sep 05 15:20
Skype: kasparas94

Re: Neteisingai krauna sql duomenis

Post by addinol »

Būna, nu žodžiu susitvarkiau, tik dar vieną klausimą turiu, ar žaidėjo duomenis gauti iš mysql, galima naudoti client_connect, nes client_putinserver biškį per velokai gauna visą informaciją.

Ir dar vienas, kaip panaikinti sql įrašus iš mysql lentelės kurių ten 1 parametras yra mažesnis už get_systime() ?

Nes pas mane kai daug įrašų gaunasi, tai nepanaikina senų, tai kažkaip blogai paskui gauna tuos iBan ir iMute parametrus žaidėjui.

User avatar
hleV
AMX Mod X ekspertai
Posts: 875
Joined: 2011 Apr 02 11:23
Skype: hlev.lt
Location: Šiauliai

Re: Neteisingai krauna sql duomenis

Post by hleV »

Jei nenaudoji SteamID, gali viską daryt client_connect()'e, o šiaip dar yra client_authorized(), kuris iššaukiamas tarp client_connect() ir client_putinserver() (dažniausiai beveik tokiu pat metu kaip client_connect()), kuriame jau galima gaut SteamID.
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

Post Reply

Who is online

Users browsing this forum: No registered users and 7 guests