MySQL place

Š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

MySQL place

Post by addinol »

Sveiki, kaip gauti žaidėjo vietą tarkim pagal Kills iš x lentelės. Ir kiek ten išviso įrašų yra.

Lentelė atrodo taip:
SteamID-----Kills


Ir noriu atvaizduoti taip:
Tu esi 5 is 1461.

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

Re: MySQL place

Post by hleV »

Naudojant SQL_ThreadedQuery() atsakymą gausi ne tą pačią akimirką (nieko gero).
Naudojant įprastą query gali užlagint (nerekomenduoju).
Kešuok.

Netestavau, bet turėtų būt į temą:

Code: Select all

new Entries;new Trie:Positions; public plugin_init()    Positions = TrieCreate(); UpdateRank(){    // Gaunam visus irasus pagal Kills (nuo didziausio)    SQL_ThreadQuery(Tuple, "OnUpdateRank", "SELECT SteamID FROM x ORDER BY Kills DESC");} public OnUpdateRank(failState, Handle:query, error[], errorCode){    if (errorCode)        set_fail_state(error);     Entries = 0;    new steamId[32];     while (SQL_MoreResults(query))    {        SQL_ReadResult(query, 0, steamId, charsmax(steamId));        TrieSetCell(Positions, steamId, Entries++);    }} GetPosition(const steamId[]){    new pos;     TrieGetCell(Positions, steamId, pos);     return pos + 1;}

Code: Select all

new steamId[32];get_user_authid(id, steamId, charsmax(steamId));client_print(id, print_chat, "Tu esi %d is %d.", GetPosition(steamId), Entries);
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: MySQL place

Post by addinol »

O updatinti visad, kai pasikeičia žaidėjo kills, taip ? :) Beje pas mane virš 10 000 įrašų, tai ar tas trie atlaikys? ;D

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

Re: MySQL place

Post by hleV »

Trie atlaikys, o update daryk kas raundą ar pnš.
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

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

Re: MySQL place

Post by aaarnas »

Poziciją galima gauti ir su mysql užklausa (nekraunant visų žaidėjų), tik nelabai pamenu kaip ją užrašyti.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

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

Re: MySQL place

Post by addinol »

Update darau, kas kill. Manau atlaikys, nes nedaug kitų sql užklausų yra išviso. Tuo pačiu metu beveik neivienas neveikia, tik nebent keli žmonės padaro kill tuo pačiu laiku.

-- 2011 Spa 15 22:16 --

Beje gaunu errorą:

Function is not present (function "UpdateRank")

Kurį naudoju plugin_init()

EDIT: ir dar nesupratau šito esmės: new steamId[32]; kurį naudojai OnUpdateRank funkcijoj, jis sukuriamas, bet tušcias juk.

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

Re: MySQL place

Post by hleV »

addinol wrote:Beje gaunu errorą:

Function is not present (function "UpdateRank")

Kurį naudoju plugin_init()
Pridėk public prie UpdateRank().
EDIT: ir dar nesupratau šito esmės: new steamId[32]; kurį naudojai OnUpdateRank funkcijoj, jis sukuriamas, bet tušcias juk.
Taigi žiūrėk kur vėliau jis naudojamas funkcijoj.
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: MySQL place

Post by addinol »

o dabar serveris kimba, be jokių error be nieko, tiesiog rodo offline ir neleidžia prisijungti. Nors loguose nieko nėra ir paleidimo lange atrodo viskas normalei, o kai atjungiu pluginą - normaliai.

User avatar
psychical
Viršininkas
Posts: 2094
Joined: 2011 Mar 12 22:19
Skype: tautvydas11
Location: Linksmakalnis
Contact:

Re: MySQL place

Post by psychical »

Code: Select all

SET @rownum := 0; SELECT * FROM (SELECT @rownum := @rownum+1 AS POSITION, player_time FROM played_time_table ORDER BY player_time DESC) AS played_time_table WHERE POSITION = 1;
P.S. player_time - pagal ka ieskos tavo norimos vietos
Last edited by psychical on 2011 Oct 15 22:30, edited 1 time in total.

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

Re: MySQL place

Post by addinol »

SELECT * FROM (SELECT @rownum := @rownum+1 AS POSITION, player_time FROM played_time_table ORDER BY player_time DESC) AS played_time_table WHERE POSITION = 1;

O kaip šitą į pawn kalbą paversti nes kiek iš čia matau tai tų @ nesuprantu ;D ir POSITION ;D

Post Reply

Who is online

Users browsing this forum: Semrush [Bot] and 7 guests