MySQL place
Re: MySQL place
Galimas ir toks variantas
SELECT COUNT(*) FROM kzkas WHERE SteamID = STEAM:0.0.1 ORDER BY Kills ASC LIMIT 1
SELECT COUNT(*) FROM kzkas WHERE SteamID = STEAM:0.0.1 ORDER BY Kills ASC LIMIT 1
Re: MySQL place
Bet čia su šita sintakse būtų uždelsimas kažkoks vistiek ?
Re: MySQL place
Tavo atveju šito tikrai nereikia, nes kintamasis Entries reikalingas nustatyti kiekvieno SteamID poziciją, o tada jį panaudoji dar ir visų įrašų skaičiui gauti.addinol wrote:Bet čia su šita sintakse būtų uždelsimas kažkoks vistiek ?
Aš apskritai nesu mėgėjas kažką dažnai užkraut iš MySQL duombazės, verčiau užkraut viską žemėlapio pradžioj, viską sudėt į dinaminę atmintį (Array, Trie, nes jie yra nuostabūs ^^), galbūt kas kažkiek laiko išsaugot dabartinius duomenis į MySQL (apsisaugojant nuo duomenų neišsisaugojimo serveriui nulūžus) ir viską išsaugot žemėlapio pabaigoje. Nors nežinau kaip ten būtų su tuo kelių tūkstančių įrašų išsaugojimu į MySQL per vieną užklausą. Reiks pabandyt.
ArraySort() dirba žiauriai greitai, nežinau ar MySQL variantas geresnis, bet abu variantai ganėtinai geri, kadangi viskas thread'inama.
Re: MySQL place
hleV, o kaip dabar padaryti, jog tarkim jei noriu atvaizduoti kas yra 1, ..., 5 vietoj, jo nicką ir skill reiktų atvaizduoti, Skill yra paimtas iš vienos lentelės nick yra iš kitos lentelės, abi lentelės turi žaidėjo IP.
Re: MySQL place
Top 5 (ar kiek tau reikia) gali gaut per tą pačią UpdateRank užklausą, sudėdamas pirmų 5 (ar belekiek) žaidėjų duomenis (nick ir skill) į Array. Tik aišku SQL užklausoj reikia ten dadėt kad select'intų nick ir skill.
Re: MySQL place
Štai taip turėtų atrodyti SQL užklausa.
O kaip toliau daryti ?
tarkim OnUpdateTop:
Išvis nesuprantu kaip tie Trie veikia, kaip į juos įsaugot dvi reikšmes į vieną, t.y. ir szName ir szSkill.
Code: Select all
SQL_ThreadQuery(g_SqlTuple, "OnUpdateTop", "SELECT pName, pSkill FROM pMain JOIN pStats ON pMain.pIp=pStats.pIp ORDER BY pStats.pSkill DESC");
tarkim OnUpdateTop:
Code: Select all
public OnUpdateTop(failState, Handle:query, error[], errorCode){ if (errorCode) set_fail_state(error); new szName[33], szSkill; while (SQL_MoreResults(query)) { SQL_ReadResult(query, 0, szName, charsmax(szName)); szSkill = SQL_ReadResult(query, 1) TrieSetCell(Tops, szName); SQL_NextRow(query); }}
Re: MySQL place
Code: Select all
#define MAX_TOP 5 enum _:TOP{ TOP_NAME[32], TOP_SKILL}; new Array:Top; public plugin_init() Top = ArrayCreate(TOP);
Code: Select all
ArrayClear(Top); new top[TOP]; while (SQL_MoreResults(query)){ SQL_ReadResult(query, 0, steamId, charsmax(steamId)); TrieSetCell(Positions, steamId, Entries++); if (Entries <= MAX_TOP) { // Cia su salyga kad select'ini tokiu principu: SteamID, Nick, Skill SQL_ReadResult(query, 1, top[TOP_NAME], charsmax(top[TOP_NAME])); top[TOP_SKILL] = SQL_ReadResult(query, 2); ArrayPushArray(Top, top); } SQL_NextRow(query);}
Code: Select all
new top[TOP];ArrayGetArray(Top, 0, top); // 0 - tai pirmas top'eclient_print(0, print_chat, "* Pirmas tope yra %s su %d skill'u.", top[TOP_NAME], top[TOP_SKILL]);
Re: MySQL place
Plugin says: Column 'pIp' in field list is ambiguous
Code: Select all
SQL_ThreadQuery(g_SqlTuple, "OnUpdateRank", "SELECT pIp, pName, pSkill FROM pMain LEFT JOIN pStats ON pMain.pIp=pStats.pIp ORDER BY pStats.pSkill DESC");
Who is online
Users browsing this forum: Ahrefs [Bot] and 8 guests