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

[MySQL] komanda /direktoriai su Online ir Offline informacija


Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3909 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

(redaguota)

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
  • Parašė po 4 mėnesių...

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3909 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ą...