Szerző Téma: Ploop - Elérhetõ játékosokra vonatkozó ciklus  (Megtekintve 1131 alkalommal)

Nem elérhető divkn

  • 3259
    • Profil megtekintése
Ploop - Elérhetõ játékosokra vonatkozó ciklus
« Dátum: 2013. november 22. - 17:09:09 »
+6 Show voters
Még VRP (Veronaville Roleplay) idején készítettem ezt a kódot, arra a célra hogy lehetõ leggyorsabban hajtsa végre a ciklusban lévõ feladatokat csakis elérhetõ játékosok számára. Mivel elég sokan használják a MAX_PLAYERS vagy GetMaxPlayers() féle ciklusfeltételt, ezért gondoltam megosztom ezt a kis egyszerû kódot, ami leegyszerûsíti ezt a folyamatot.
 
#include a_samp
// Nincs szükségünk 500 cellás változókra és a szerverünk sem 500 férõhelyes, hanem
// pl.: 30 vagy amilyen slot számú szervert rendeltél.
#undef MAX_PLAYERS
#define MAX_PLAYERS 30
// Hozzünk létre két globális változót
stock
    aktiv_jatekosok[MAX_PLAYERS], // Ez a változó fogja tárolni az elérhetõ playerid számokat.
    szamlalo; // Egy számláló arra hogy mégis mennyien vannak a szerveren.
public OnGameModeInit()
{
    // Biztonság kedvéért ellenõrizzük hogy a MAX_PLAYERS értéke egyezik-e.
    if(GetMaxPlayers() != MAX_PLAYERS)
    {
        printf(\"Kérlek módosítsd a \'maxplayers\' értéket %d-ra/re a server.cfg-ben,\",MAX_PLAYERS);
        printf(\"vagy módosítsd a MAX_PLAYERS definíció értékét %d-ra/re.\",GetMaxPlayers());
        SendRconCommand(\"exit\");
        return 1;
    }
    return 1;
}
public OnPlayerConnect(playerid)
{
    CiklusFrissites(); // Új játékos miatt a ciklus változók frissítése
   
    // Egy kis példa ahogy a használhatjuk a ciklust
    // Hány cellát olvasson ki a változóból, avagy mennyien vannak most a szerveren
    for(new a = 0; a < szamlalo; a++)
    {
        SendClientMessage(aktiv_jatekosok[a], 0xFFFFFFFF, \"Új játékos a szerveren!\");
    }
    return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    CiklusFrissites(); // Kilépett játékos miatt a ciklus változók frissítése ismét.
    return 1;
}
stock CiklusFrissites()
{
    // Lenullázzuk a számlálót, mert egy játékos belépett vagy kilépett a szerverrõl
    // ezért újra kell építeni az aktiv_jatekosok változóban tárolt playerid értékeket.
    szamlalo = 0;
    for(new a = 0; a < MAX_PLAYERS; a++)
    {
        if(IsPlayerConnect(a))
        {
            // Csak az aktív játékosok playerid értéket tároljuk el egy változóba.
            aktiv_jatekosok[szamlalo] = a;
            szamlalo++;
            // Tegyük fel ha a szerveren vannak 5-en a következõ playerid számokkal: 0,2,3,5,11
            // akkor az aktiv_jatekosok-ban tárolt értékek is így fognak felsorakozni a cellékban
            //   cellák: 0 1 2 3  4 5 6 7 8 ... egészen a MAX_PLAYERS-ben megadott cella számig
            // playerid: 0 2 3 5 11 - - - -
        }
    }
    return 1;
}
// It needs to be about 20% cooler...
// Igem, ez egy easter egg és most tünés. :3
« Utoljára szerkesztve: 2013. november 22. - 17:12:23 írta divkn »

Nem elérhető ZoleBB

  • 480
  • ZoleBB
    • Profil megtekintése
Ploop - Elérhetõ játékosokra vonatkozó ciklus
« Válasz #1 Dátum: 2013. november 22. - 22:13:57 »
0 Show voters
Nagyon jo lett, es mindent reszletesen leirtal mindent. Ebbol par jo dolgot is lehetne tanulni.

Nem elérhető Cappsy

  • Adminisztrátor
  • 2754
    • Profil megtekintése
Ploop - Elérhetõ játékosokra vonatkozó ciklus
« Válasz #2 Dátum: 2013. november 27. - 21:34:07 »
0 Show voters
Nekem is tetszik! Adok reá egy +-t :D

Nem elérhető BoOy

  • 3209
  • 2013-as év szkriptere
    • Profil megtekintése
Ploop - Elérhetõ játékosokra vonatkozó ciklus
« Válasz #3 Dátum: 2013. november 27. - 21:45:24 »
+1 Show voters
Szép lett ;)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal