Sesija

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
alfre
Gana aktyvus vartotojas
Posts: 259
Joined: 2011 May 13 14:01
Skype: alfredasxl996
Contact:

Sesija

Post by alfre »

Kaip padaryti,kad sesija butu issaugota,jeigu mapas keiciasi?
Pvz : As prisijungiau,session = 1,mapas keiciasi,session = 1,o kai disconnect,session = 0.
bandziau mysql daryt bet neisejo.
gal galima butu mysql pavyzdziu?

Code: Select all

public client_putinserver(client){       if(is_user_bot(client))     return;    new Data[1]    Data[0] = client     set_task(60.0, "Check" , client, _, _, "b")    get_user_authid(client,iddd,31)    new ip[16], query[256], data[1];    get_user_ip(client, ip, charsmax(ip), 1);    static szQuery[ 128 ], iData[ 1 ];     formatex( szQuery, 127, "SELECT `Session` FROM `%s` WHERE ( `STEAMID` = '%s' );", TABLE, iddd[client]);     iData[ 0 ] = client;    SQL_ThreadQuery(Tuple, "QuerySelectData", szQuery, iData, 1 ); }public QuerySelectData( iFailState, Handle:query, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) {     if(iFailState == TQUERY_CONNECT_FAILED)    else if(iFailState == TQUERY_QUERY_FAILED)    new client = iData[0];    new ColPts = SQL_FieldNameToNum(query, "Session");            while(SQL_MoreResults(query))         {            session[client] = SQL_ReadResult(query, ColPts);            client_print(0,print_chat,"%d",session[client])            SQL_NextRow(query)        }    if(session[client] == 0)    {    new data[1];    get_user_authid(client,iddd,31)    session[client] = 1;    data[0] = client;    formatex(query, charsmax(query), "SELECT * FROM %s WHERE STEAMID = '%s'", TABLE, iddd[client]);    SQL_ThreadQuery(Tuple, "OnCheckInfo", query, data, sizeof data);    }}

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

Re: Sesija

Post by aaarnas »

Visų pirma:

Code: Select all

get_user_authid(client,iddd,31)
Čia iddd naudojamas kaip paprastas masyvas.

Code: Select all

formatex( szQuery, 127, "SELECT `Session` FROM `%s` WHERE ( `STEAMID` = '%s' );", TABLE, iddd[client]);
Čia jau kaip 2 dimensijų masyvas.

O tau būtent į mysql reikia rašyti, ar galima ir serveryje laikyti sesijos duomenis?
Esmė tada tokia:
client_putinserver - padarom session 1
client_disconnect - padarom session 0

Jei aptinkamas žemėlapio keitimas, tai client_disconnect turi būti neiškviečiamas (blokuojamas su kintamuoju).

Dabar klausimas, kodėl tau būtent reikia duomenų bazėje išlaikyti, kad session yra 1 tam žaidėjui žemėlapio keitimo metu?
Gali būti toks dalykas, kad keisis žamėlapis, pradės siųsti žemėlapį žaidėjui ir jis atsijungs. Nesi garantuotas, kad žaidėjas bus serveryje po žemėlapio keitimo.

Todėl nesuprantu kuo yra blogas paprastas metodas, kad visada per putinserver pažymim, kad jis yra, o per disconnect išvalom?
Palikau CS pasaulį ;/ . Nebepasiekiamas.

alfre
Gana aktyvus vartotojas
Posts: 259
Joined: 2011 May 13 14:01
Skype: alfredasxl996
Contact:

Re: Sesija

Post by alfre »

Jei aptinkamas žemėlapio keitimas, tai client_disconnect turi būti neiškviečiamas (blokuojamas su kintamuoju).
man reikia,kad client_putinserver neiskvieciamas,jeigu session == 1 ir jeigu mapas keiciasi.
kaip padaryti?nes mapas keiciasi,o plugina is naujo krauna,ir nustato 1 is naujo.del to manau reikia issaugoti

Tetusis

Re: Sesija

Post by Tetusis »

Code: Select all

public client_putinserver(id) {     // fix for the invalid tuple error at mapchange, only a fast fix now    if (sql_connection == Empty_Handle) {        set_task(2.0, "client_putinserver", id)        return 1    }        //kazkas vyksta     return 0} 
cia is amx bans

alfre
Gana aktyvus vartotojas
Posts: 259
Joined: 2011 May 13 14:01
Skype: alfredasxl996
Contact:

Re: Sesija

Post by alfre »

man ne del erroru reikia.bet sitas pravers

Tetusis

Re: Sesija

Post by Tetusis »

tai uztektu paprasciausio bool tada jei gerai supratau tema.

alfre
Gana aktyvus vartotojas
Posts: 259
Joined: 2011 May 13 14:01
Skype: alfredasxl996
Contact:

Re: Sesija

Post by alfre »

-.-.taigi,jeigu rr mapas,viskas dingsta....

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

Re: Sesija

Post by aaarnas »

Gerai, žiūrėk, dabar ką nori padaryti ir kodėl tau reikia tos sesijos? Nes kažkas man čia ne taip. Nes arba kažką bandai padaryti sudėtingai arba nepagavau esmės ką norima padaryti.

Kai bus aišku, tada galėsiu pasiūlyti geriausią variantą.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

alfre
Gana aktyvus vartotojas
Posts: 259
Joined: 2011 May 13 14:01
Skype: alfredasxl996
Contact:

Re: Sesija

Post by alfre »

as noriu taip padaryti :
Prisijungimu istorija.Pvz prisijungiau pirma karta,tai i mysql lentele irasys pirma prisijungima 2013-05-28 20:20,o kai atsijungiu,tarkim 2013-05-28 20:22.Bet kai pakeiti mapa,neuzskaito kaip atsijungimo.Ir kartojasi
Pvz prisijungiau pirma karta,tai i mysql lentele irasys pirma prisijungima 2013-05-28 20:20
.
noriu kad taip butu : kol is serverio neatsijungi,nesvarbu ar mapas pakeistas ar ne,neirasytu i mysql lentele pirmo prisijungimo.

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

Re: Sesija

Post by aaarnas »

Supratau, bet ką darysi, jei keičiasi žemėlapis ir žaidėjas atsijungia tuo momentu?
Kai pasikrauna žemėlapis, tai kažkokį laiko tarpą palauki ir jei jis neprisijungę, tai užskaitai atjungimą ? Logiškiausia manau būtų.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

Post Reply

Who is online

Users browsing this forum: No registered users and 31 guests