Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

[MySQL] komanda /direktoriai su Online ir Offline informacija


ViVix

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3540 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki, taigi paaiškinsiu kaip sukurti komanda /direktoriai, kuri parodys visus direktorius ir kuris žaidėjas yra online ir kuris offline. Tikslai:

  • Įsisavinti mysql žinias.
  • Komandos analizavimas, panaudojimas kitose komandose, sistemose ir pnš.

Pradėkime. 1 punktas:

 Taigi, jūsų pagrindinėje žaidėjo informacijos lentelėje turi būti direktoriaus lentelė į kurį saugo direktorio ID.

Pas manęs pagrindinė žaidėjo lentelė yra "players", o direktorio lentelė yra "Direktorius". Tai aš rašysiu pagal savo pavadinimus, o jūs - pagal savo. Perspėsiu kur jas reikia keisti.

Jeigu šių kriterijų neatitinkate, susikurkite savo žaidėjo lentelelės struktūroje lentelę "Direktorius".

 

2 punktas:

Aš naudoju ZCMD, tad jei jūs jos neturite, gausite komandą išsiversti iš ZMCD į scrmp. Taigi kuriame komandą.

CMD:direktoriai(playerid,params[])
{
new query[200], result[50], dstatus[15], dpavadinimas[40],vardas[24],dyrid; // sukuriame kintamuosiu :
// query naudosime query funkcijos formatavimui
// result kintamajį naudosime resultatų paimimui iš mysql
// dstatus - į šį kintamąjį rašysime ar direktorius online ar offline
// dpavadinimas - į šį kintąmąjį surašysime darbų pavadinimus pagal jų ID
// kintamąjį "vardas" naudosime direktorio vardui išsaugoti
// kintamaji "dyrid" į jį rašysime gautą direktoriaus ID

mysql_query("SELECT Vardas,Direktorius FROM players WHERE Direktorius > 0"); // Renkame visą informaciją iš lentelės players kur direktorius yra daugiau už 0. Žodžius players ir Direktorius pasikeiskite į savo lentelių pavadinimus. 
mysql_store_result(); // surenkam informaciją
while(mysql_retrieve_row())
{
mysql_fetch_field_row(result,"Vardas"); // na štai, gauname direktoriaus vardą
// šis pavadinimas gali neatitikti jūsų lentelėje esamo pavadinimo, tad jį pasikeiskite
format(vardas,24,"%s",result); // padarom kintamajį "vardas" į tokį kurį gavome iš Mysql data bazės

mysql_fetch_field_row(result,"Direktorius"); // gauname direktoriaus id, jis taip pat gali neatiktikti jūsų lentelės struktūroje esančio pavadinimo, pasikeiskite jį.
dyrid = strval(result); // įrašome gautą direktoriaus ID į kintamajį

if(dyrid == 2) dpavadinimas = "PD Direktorius"; // irašykite darbo id vietoj skaičiaus 2 ir taip pat kas yra skliausteliuose pasikeiskite, nes mano 2 ID atitinka policijos darbą
// taip pat šitų galite prisirašyti daugiau pvž:
if(dyrid == 3 ) dpavadinimas = "Medikų Direktorius";

// toliau išgaukime statusą
// reikės funkcijos GetPlayeridMid(vardas) ją rasite gale pamokos
new id = GetPlayeridMid(vardas); // gauname žaidėjo ID pagal vardą
  if (IsPlayerConnected(id)) dstatus = "Online"; // jei žaidėjas online tada kintamasis bus "Online"
   if (!IsPlayerConnected(id)) dstatus = "Offline"; // jei žaidėjas offline tada kintamasis bus "offline"

// na ir toliau reikia formatuoti žinutę ir siųsti komandą parašiusiam žaidėjui.
format(query,sizeof(query),"%s %s, statusas : %s",dpavadinimas,vardas,dstatus); // suformatuojam žinutę
SendClientMessage(playerid,-1,query); // siunčiam žaidėjui žinutę
}
return true;
}


3 punktas ( tiems kurie neturi funkcijos GetPlayeridMid )

stock GetPlayeridMid(name[]) //Boylett
{
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
        if (IsPlayerConnected(i))
        {
            new gPlayerName[MAX_PLAYER_NAME];
            GetPlayerName(i, gPlayerName, MAX_PLAYER_NAME);
            if(strfind(gPlayerName, name, true) != -1)
            {
                return i;
            }
}
    }
    return INVALID_PLAYER_ID;
}

Tikiuosi, jog pamoka buvo aiški. Ačiū už dėmėsį :)

Redaguota , nario Blacky
Nuoroda į komentarą
Dalintis per kitą puslapį

 

Aš tik nepagaunu kam naudoti šitą š...

 

GetPlayeridMid

Nes vardą parsineša iš duomenų bazės, ir nežino ar žaidėjas yra serveryje. 

Ta funkcija pereina per visus žaidėjų vardus, jeigu jis sutampa su tuo iš duomenų bazės, gražina jo ID,kas reiškia jog žaidėjas online.

Nuoroda į komentarą
Dalintis per kitą puslapį

  • Parašė po 4 mėnesių...

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3540 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...