Szerző Téma: Re:Társalgó  (Megtekintve 243 alkalommal)

Nem elérhető Olie

  • 892
  • Roleplay Õrült
    • Profil megtekintése
Re:Társalgó
« Dátum: 2012. Szeptember 26. - 21:10:15 »
0
Logok készítése - elsõ verzió
Sziasztok!
Az alábbi leckében az egyik alap fájlmûvelet az úgynevezett \"log\" készítését fogom bemutatni! :)
Készítsünk egy logot a bannolásról.
A Log tartalmazni fogja a bannolt játékos nevét, az admin nevét, és az indokot.
Elsõ lépésként forwardolnunk kell az adott dolgot.
így:
 

forward Bannok(string[]);

 
Spoiler for megjegyzés:
Ezt érdemes a Mód elejére írni. Én általában ilyen sorrendben szoktam:
- Include
- Változók
- Forwardok.
Most hozzá kell hogy adjuk a funkciót (public) is.
Ez így néz ki:
 

public Bannok(string[])

 
Minden funkciót forwardolni kell.
Ha egy funkció nincs forwardolva, akkor fordításkor (konvertálás) warningokat fogsz kapni.
Szóval, most leírok nektek ide néhány sort, alatta megtaláltok egy magyarázatot is :)
 

public Bannok(string[])
{
    new ujstr[128];
    format(ujstr, sizeof(ujstr), \"%s\\n\",string);
    new File:hFile;
    hFile = fopen(\"/Logok/bannok.log\", io_append);
    fwrite(hFile, ujstr);
    fclose(hFile);
}

 
Na, akkor nézzük:
 

new ujstr[128];
format(ujstr, sizeof(entry), \"%s\\n\",string);

 
Létrehoztunk egy Új Stringet, ami a fájlba fog írni nekünk.
A %s lesz ebben az esetben az adott sor. (Pistikét bannolta Janika. Indok: Juliska)
A \\n egy új sort nyit, így a következõ bejegyzés új sorba kerül.
Nem szeretnénk, ha összemosódna :)
Nézzük tovább:
 

new File:hFile;
    hFile = fopen(\"/Logok/bannok.log\", io_append);
    fwrite(hFile, ujstr);
    fclose(hFile);
   

 
Itt megcsináljuk a Scriptfiles mappába a \"Logok Mappát\" és azon belülre a bannok.log fájlt. :)
Minden létrehozott Mappa és Fájl, legyen az akármilyen log, a SCRIPTFILES mappába kerül!
Egyébként azon belül megváltoztathatod, pl. Pistikeszervere/bannok.log. Bármi.
Amint a fájl megnyílt, a szerver ezzel ír bele:
 

fwrite(hFile, ujstr);

 
Amikor az írásnak vége, lezárja.
 

fclose(hFile);

 
Utolsó simításként az esetleges /ban parancsunk a végére:
 

CMD:ban(playerid, params[])
{
        new aldozat, indok[ 128 ]; //Létrehozzuk a változókat
        if (sscanf(params, \"us[128]\", aldozat, indok))
        {
            SendClientMessage(playerid, 0x00FF, \"Helyes használat: /ban JátékosID Indok \"); // Ha nem megfelelõen adta meg
            return 1;
        }
        if (aldozat == INVALID_PLAYER_ID) // Ha az \"Áldozat\" nem online
        {
            SendClientMessage(playerid, 0xAA3333AA, \"Nem Online\"); // Ha az \"Áldozat\" nem online
            return 1;
        }
          new banstr[128], AdminNeve[24], BannoltNeve[24]; //Létrehozzuk a változókat
        GetPlayerName(playerid, AdminNeve, 24); // Lekérjük az admin nevét
        GetPlayerName(aldozat, BannoltNeve, 24); // Lekérjük a bannolt játékos nevét (Áldozat)
        format(banString, 128, \"%s Játékost bannolta: %s. Indok: %s.\", BannoltNeve, AdminNeve, Indok);
        BanLog(banString);
        Ban(toplayerid);
    }
    return 1;
}

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal