Likęs laikas

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
pausil
Naujokas apylinkėse
Posts: 3
Joined: 2010 Nov 16 23:35
Skype: pausil100

Likęs laikas

Post by pausil »

Sveiki dar esu žalias programavime, todėl nesigauna niekaip gauti dienų iš duombazių. Bandau gauti datą kada užsiregistravo ir iki kada galioja. Tada bandau surasti skirtumą ir taip gauti dienų likutį, bet kažkodėl nelabai gaunasi...

Code: Select all

public time_left(id){    new error[128],  errno    new Handle:info = SQL_MakeDbTuple("host","dbuser","dbpass","dbname")    new Handle:sql = SQL_Connect(info, errno, error, 127)    new Handle:query    new ip_port[42], ip_tmp[32], ip[32] , port[10]    get_user_ip(0, ip_port, 41)    strtok(ip_port, ip_tmp, 31, port, 9, ':')    get_cvar_string("ip",ip,32)    new userip[32], userauthid[32], password[32], username[32]      get_user_ip(id, userip, 31, 1)    query = SQL_PrepareQuery(sql,"SELECT amx_amxadmins.regtime, amx_amxadmins.timeleft, amx_amxadmins.username FROM amx_amxadmins")            if (!SQL_Execute(query))    {        client_print(id, print_chat, "Nepavyko prisijungti prie duomenu bazes")    } else if (!SQL_NumResults(query)) {        client_print(id, print_chat, "Klaida:")    } else {                AdminCount = 0                /** do this incase people change the query order and forget to modify below */        new qcolRegtime = SQL_FieldNameToNum(query, "regtime")        new qcolTimeleft = SQL_FieldNameToNum(query, "timeleft")        new qcolIp = SQL_FieldNameToNum(query, "username")                new Regtime[44];        new Timeleft[44];        new Ip[44];         new check = getAccess(id, username, userauthid, userip, password)        while (SQL_MoreResults(query))        {            SQL_ReadResult(query, qcolIp, Ip, sizeof(username)-1);            SQL_ReadResult(query, qcolRegtime, Regtime, sizeof(Regtime)-1);            SQL_ReadResult(query, qcolTimeleft, Timeleft, sizeof(Timeleft)-1);                get_user_ip(id, userip, 31, 1)             ++AdminCount;            SQL_NextRow(query)        }         if (equal(userip, username))            {                    new LefttimeTotal[9];    new Lefttime[9];         new CurrentTime[9]     get_time("%m%d%Y",CurrentTime,8)     //format_time(Timeleft,8,"%m%d%Y")    //get_time("%d",LefttimeTotal,8)    //format_time(Regtime,8,"%m%d%Y")    format_time(LefttimeTotal,3,"%d")    format_time(Lefttime,3,"%d")    LefttimeTotal[id] = Timeleft[id] - Regtime[id];    Lefttime[id] = Timeleft[id] - CurrentTime[id];      client_print(0,3, "Jums dar liko [%s/%s] dienu.",Lefttime,LefttimeTotal)                             } else {                client_print(0,3, "Jus nerastas musu duomenu bazeje")            }           }    SQL_FreeHandle(query)    SQL_FreeHandle(sql)     return PLUGIN_HANDLED }

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

Re: Likęs laikas

Post by aaarnas »

Patikrink kuriame kintamajame prasideda problemos. Ar negaunama iš duombazės, ar kažkas negerai sukoduota.

Beje tokia ( client_print(0,3,) client_print sintaksė neteisinga.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

pausil
Naujokas apylinkėse
Posts: 3
Joined: 2010 Nov 16 23:35
Skype: pausil100

Re: Likęs laikas

Post by pausil »

Gauna iš duombazės duomenis. Tik parenka ne tą eilutę kurią reikia ir šios eilutės blogai viską apskaičiuoja:

Code: Select all

format_time(LefttimeTotal,3,"%d")    format_time(Lefttime,3,"%d")    LefttimeTotal[id] = Timeleft[id] - Regtime[id];    Lefttime[id] = Timeleft[id] - CurrentTime[id];
Kažkodėl neapskaičiuoja. Pabandžiau išvesti ir pažiūrėti kokios nusistato reikšmės Timeleft ir Regtime, tai parenka iš duombazės paskutinės eilutės datas. Tai šitame kode vadinasi veikia tik prisijungimas prie duombazių ir šios dienos laiko gavimas.

newb
Pluginų patvirtintojas
Posts: 1047
Joined: 2010 Sep 23 21:43
Location: Wonderland
Contact:

Re: Likęs laikas

Post by newb »

Tu gauni data

Code: Select all

get_time("%m%d%Y",CurrentTime,8)

Kuri nera skaicius ir bandai atimt kazka...

Code: Select all

Lefttime[id] = Timeleft[id] - CurrentTime[id]
Reikia i db irasinet data pagal ta unix time stampa (manau taip ir yra), tada plugine gauni laika pagal get_systime() ir atimi ir iseina skirtumas sekundemis, tada padalini is 60/60/24 ir iseina dienos.

Kazkada buvau padares toki dalyka, bet dabar neturiu to plugino ^^

Post Reply

Who is online

Users browsing this forum: No registered users and 12 guests