Üzenetek megjelenítése

Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van.


Üzenetek - M1A1

Oldalak: 1 2 [3]
31
Segítségkérés / bool mentése játékosnak?
« Dátum: 2014. augusztus 25. - 22:11:59 »
Idézetet írta: rayle date=1408971984\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"50337\" data-ipsquote-contentclass=\"forums_Topic
Betöltésnél:
 
Tulaj[playerid] = dini_Bool(fájl, \"Tulaj\");

 

Helyett:
 
Tulaj[playerid] = !!dini_Bool(fájl, \"Tulaj\");

 
Azért, mert valami miatt a dini_Bool() nem boolean, hanem integer típusú értéket ad vissza. Mivel fordításkor tag mismatch hibát írhat a fordító, át kell konvertálni boolean-re a visszatérési értéket.

32
Segítségkérés / /sveh parancs
« Dátum: 2014. augusztus 23. - 01:14:02 »
Írok egy gyors példaszerûséget, ne pont így írd, csak ilyesmit:
Mondjuk létrehozol egy integer tömböt a jármûveknek, amiben megadod, hogy hova tartoznak. A jármûvek betöltésénél kiolvasod, a mentési résznél kíírod az értékét. A kód elején definálod, hogy hova tartozhatnak a jármûvek, pl.:
 
#define FK_CIVIL 0
#define FK_VALAMI 1
#define FK_VALAMICSODA 2

 
stb..
Vagy ha már definálva vannak frakció ID-k, akkor azokat használod.
Létrehozol egy új parancsot, mondjuk CMD:setvehfk. Itt megadhatod a jármû frakció ID-jét, miután létrehoztad.
Aztán a motorbeindítás parancsnál ellenõrzöd, hogy a játékos ugyan abba a frakcióba tartozik-e, mint a jármû, vagy a jármû civil-e. Ha egyik sem, akkor nem tudja beindítani a jármûvet.

33
Segítségkérés / ShowNameTags - /anevek?[kezdõ]
« Dátum: 2014. augusztus 22. - 19:22:27 »
//Ez arra jó, hogy megállítja a ciklust, hogyha az összes Offline játékoson végigment..[/quote]
Nem inkább arra jó, hogy az offline játékosokat kihagyja? Mert a continue nem lép ki a ciklusból, csak egyel továbblép...

34
Segítségkérés / /sveh parancs
« Dátum: 2014. augusztus 22. - 19:03:05 »
Ezt a részt cseréld le:



                                format(svehmentes,sizeof(svehmentes),\"/Cars1/%d.ini\",vehid); // Formázzuk a file változót a mappának megfelelõen
                                if(!fexist(svehmentes)) // Ha létezik a file
                                {
                               
                                        dini_Create(svehmentes); // Létrehozzuk a fájlt
                                        dini_FloatSet(svehmentes,\"PosX\",posx); // Lementjük az -X koordinátát
                                        dini_FloatSet(svehmentes,\"PosY\",posy); // -Y koordinátát
                                        dini_FloatSet(svehmentes,\"PosZ\",posz); // -Z koordinátát
                                        dini_FloatSet(svehmentes,\"Angle\",angle); // -Forgásirányát
                                        dini_IntSet(svehmentes,\"Model\",model); // -A model id-jét
                                        dini_IntSet(svehmentes,\"Color1\",color1);
                                        dini_IntSet(svehmentes,\"Color2\",color2);
                                        SendClientMessage(playerid,COLOR_BLUE,\"Játmû lementve!\");
                                }
                                else // Ha nem létezik a file
                                {
                                        dini_FloatSet(svehmentes,\"PosX\",posx); // Lementjük az -X koordinátát
                                        dini_FloatSet(svehmentes,\"PosY\",posy); // -Y koordinátát
                                        dini_FloatSet(svehmentes,\"PosZ\",posz); // -Z koordinátát
                                        dini_FloatSet(svehmentes,\"Angle\",angle); // -Forgásirányát
                                        dini_IntSet(svehmentes,\"Model\",model);  // -A model id-jét
                                        dini_IntSet(svehmentes,\"Color1\",color1);
                                        dini_IntSet(svehmentes,\"Color2\",color2);
                                }

 
 
Ilyesmire:
 
for(new i = vehid; i < MAX_VEHICLES; i++) // \"i\" kezdeti értéke a jármû jelenlegi  ID-je. Minden lefutásnál \"i\" értékét növelje, míg az kisebb, mint MAX_VEHICLES.
{
      format(svehmentes, sizeof(svehmentes), \"/Cars1/%d.ini\", i); //formázzuk az \"svehmentes\"-t fájlnévnek \"i\" értékével.
      if(!fexist(svehmentes)) dini_Create(svehmentes), break; //Ha a fájl nem létezik, létrehozzuk és kilépünk a ciklusból.
      else continue; // Ellenkezõ esetben továbblépünk, mert ilyen ID-jû jármû már van. (Ez a sor igazából felesleges, de a könnyebb megértés érdekében ideírom.)
}
//Mentünk
dini_FloatSet(svehmentes, \"PosX\", posx); // Lementjük az - X koordinátát
dini_FloatSet(svehmentes, \"PosY\", posy); // - Y koordinátát
dini_FloatSet(svehmentes, \"PosZ\", posz); // - Z koordinátát
dini_FloatSet(svehmentes, \"Angle\", angle); // - forgásirányát
dini_IntSet(svehmentes, \"Model\", model); // - a model id-jét
dini_IntSet(svehmentes, \"Color1\", color1); // - az 1-es színét
dini_IntSet(svehmentes, \"Color2\", color2);// - a 2-es színét
SendClientMessage(playerid, COLOR_BLUE, \"Jármû lementve!\");

 
Ha valamit elírtam, akkor elnézést!

Dupla hozzászólás automatikusan összefûzve. ( [time]2014. augusztus 22. 19:37:29[/time] )

Illetve talán jobb, ha 0-tól nézed a fájlokat, nem a jármû ID-jétõl..
 
for(new i = 0; i < MAX_VEHICLES; i++)

 
De amúgy ezzel a mentési móddal a jármû ID-k sokszor változni fognak.. Szóval nem biztos hogy ez a legjobb megoldás, persze csak ha ez nem gond.

35
Archívum / [HUN/ENG] ~ Cigányok VS Skinheadek DM ~ | v0.1 | Megnyílt!
« Dátum: 2014. augusztus 19. - 22:41:36 »
Tetszik a szerver öltet.. :D Ti aztán tudtok, hallod-e.. :thumbsup:
Biztos felmegyek majd  :yes:

36
Segítségkérés / Pozíció mentés
« Dátum: 2014. augusztus 19. - 22:15:53 »
Azt elfelejtettem írni, hogy általában azt is le szokták menteni, hogy a játékos merre néz kilépéskor (facing angle).
Elõször is módosítod az enumodat:



enum JatekosAdatok
{
        Szint,
        Penz,
        AdminSzint,
        Tulaj,
        AdminSzolgalat,
        Skin,
        Poz
       
}

 
Hozzáírod:
 
enum JatekosAdatok
{
        Szint,
        Penz,
        AdminSzint,
        Tulaj,
        AdminSzolgalat,
        Skin,
        Float:SpawnPozX,
        Float:SpawnPozY,
        Float:SpawnPozZ,
        Float:SpawnFacingAngle
}

 
 
Majd módosítod az OnPlayerDisconnect (ez a callback automatikusan lefut, mikor a játékos lecsatlakozik) callback-et:



public OnPlayerDisconnect(playerid, reason)
{
        new file[128];
        GetPlayerName(playerid,nev,sizeof(nev));
        format(file,sizeof(file),\"/Karakterek/%s.ini\",nev);//ha van olyan fájl, ami az õ nevét viseli
        if(fexist(file) && Belepve[playerid]== 1)//és a játékos be volt lépve
        {
            dini_IntSet(file,\"Szint\",JatekosInfo[playerid][szint]);
            dini_IntSet(file,\"Penz\",JatekosInfo[playerid][Penz]);
            dini_IntSet(file,\"AdminSzint\",JatekosInfo[playerid][AdminSzint]); //elmentjük neki ezt az értéket, a \"file\" fájlba, az \"AdminSzint\" sort, alakítsa át(dini_IntSet), és az értéke legyen \"AdminSzint\"
            dini_IntSet(file,\"Tulaj\",JatekosInfo[playerid][Tulaj]);
            dini_IntSet(file,\"AdminSzolgalat\",JatekosInfo[playerid][AdminSzolgalat]);
            dini_IntSet(file,\"Skin\",JatekosInfo[playerid][skin]);
            dini_IntSet(file,\"Poz\",JatekosInfo[playerid][Poz]);
        }
...

 
Valami ilyesmire:
 
public OnPlayerDisconnect(playerid, reason)
{
        new file[128];
        GetPlayerName(playerid,nev,sizeof(nev));
        format(file,sizeof(file),\"/Karakterek/%s.ini\",nev);//ha van olyan fájl, ami az õ nevét viseli
        if(fexist(file) && Belepve[playerid]== 1)//és a játékos be volt lépve
        {
            dini_IntSet(file,\"Szint\",JatekosInfo[playerid][szint]);
            dini_IntSet(file,\"Penz\",JatekosInfo[playerid][Penz]);
            dini_IntSet(file,\"AdminSzint\",JatekosInfo[playerid][AdminSzint]); //elmentjük neki ezt az értéket, a \"file\" fájlba, az \"AdminSzint\" sort, alakítsa át(dini_IntSet), és az értéke legyen \"AdminSzint\"
            dini_IntSet(file,\"Tulaj\",JatekosInfo[playerid][Tulaj]);
            dini_IntSet(file,\"AdminSzolgalat\",JatekosInfo[playerid][AdminSzolgalat]);
            dini_IntSet(file,\"Skin\",JatekosInfo[playerid][skin]);
           
            //Lekérjük a játékos jelenlegi pozícióját
            new Float:x, Float:y, Float:z, Float:facingAngle;
            GetPlayerPos(playerid, x, y, z);
            GetPlayerFacingAngle(playerid, facingAngle);
            //Kiírjuk a pozíciót
            dini_FloatSet(file, \"PozX\", x);
            dini_FloatSet(file, \"PozY\", y);
            dini_FloatSet(file, \"PozZ\", z);
            dini_FloatSet(file, \"FacingAngle\", facingAngle);
        }
...

 
 
Módosítod az OnPlayerSpawn (ez a callback akkor fut le, ha a játékos spawnol) callback-et:



public OnPlayerSpawn(playerid)
{
        SetPlayerPos(playerid,1482.8942,-1740.5924,13.5469);
        SetPlayerFacingAngle(playerid,359.3687);
        ObjectBetoltese(playerid,5000);
        return 1;
}

 
Kb. ilyenre:
 
public OnPlayerSpawn(playerid)
{
        SetPlayerPos(playerid, JatekosInfo[playerid][spawnPozX], JatekosInfo[playerid][spawnPozY], JatekosInfo[playerid][spawnPozZ]);
        SetPlayerFacingAngle(playerid, JatekosInfo[playerid][spawnFacingAngle]);
        ObjectBetoltese(playerid,5000);
        return 1;
}

 
 
Módosítod a regisztráció utáni elsõ adat-megadást:



public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
        if (dialogid == regisztracio)
        {
         if(response)
         {
            new file[128];
            new string[128];
            GetPlayerName(playerid, nev, sizeof(nev));
            if(strlen(inputtext) == 0)
                {
                                format(string, sizeof string, \"Üdv %s! \\nKérjük regisztrálj! \\n\\nAdd meg a kívánt jelszavadat!\", nev);
                                ShowPlayerDialog(playerid, regisztracio, DIALOG_STYLE_INPUT, \"Regisztráció\", string, \"Regisztráció\", \"Kilépés\");
                                return 0;
                }
                format(file,sizeof(file),\"/Karakterek/%s.ini\",nev);
                if(!fexist(file))
                        {
                                dini_Create(file);
                                dini_IntSet(file, \"Antibug\",0);
                                dini_IntSet(file, \"Jelszo\",udb_hash(inputtext));
                                dini_IntSet(file,\"Szint\", 0);
                                dini_IntSet(file,\"Penz\", 0);
                                dini_IntSet(file,\"AdminSzint\", 0);
                                dini_IntSet(file,\"Tulaj\", 0);
                                dini_IntSet(file,\"AdminSzolgalat\", 0);
                                dini_IntSet(file,\"Skin\", 230);
...

 
Ilyesmire:
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
        if (dialogid == regisztracio)
        {
         if(response)
         {
            new file[128];
            new string[128];
            GetPlayerName(playerid, nev, sizeof(nev));
            if(strlen(inputtext) == 0)
                {
                                format(string, sizeof string, \"Üdv %s! \\nKérjük regisztrálj! \\n\\nAdd meg a kívánt jelszavadat!\", nev);
                                ShowPlayerDialog(playerid, regisztracio, DIALOG_STYLE_INPUT, \"Regisztráció\", string, \"Regisztráció\", \"Kilépés\");
                                return 0;
                }
                format(file,sizeof(file),\"/Karakterek/%s.ini\",nev);
                if(!fexist(file))
                        {
                                dini_Create(file);
                                dini_IntSet(file, \"Antibug\",0);
                                dini_IntSet(file, \"Jelszo\",udb_hash(inputtext));
                                dini_IntSet(file,\"Szint\", 0);
                                dini_IntSet(file,\"Penz\", 0);
                                dini_IntSet(file,\"AdminSzint\", 0);
                                dini_IntSet(file,\"Tulaj\", 0);
                                dini_IntSet(file,\"AdminSzolgalat\", 0);
                                dini_IntSet(file,\"Skin\", 230);
                                //Alap pozíció
                                dini_FloatSet(file, \"PosX\",  1482.8942);
                                dini_FloatSet(file, \"PosY\", -1740.5924);
                                dini_FloatSet(file, \"PosZ\", 13.5469);
                                dini_FloatSet(file, \"FacingAngle\", 359.3687);
...

 
 
Ezután módosítod az adatok betöltését:



        if(dialogid == bejelentkezes)
        {
                if(response)
                {
                        ...
                        if(udb_hash(inputtext) == jelszo)
                                {
                                        Belepve[playerid] = 1;
                                        ResetPlayerMoney(playerid);
                                       
                                        ...
                                        JatekosInfo[playerid][Poz] = dini_Int(file,\"Poz\");

 
Ilyesmire:
 
        if(dialogid == bejelentkezes)
        {
                if(response)
                {
                        ...
                        if(udb_hash(inputtext) == jelszo)
                                {
                                        Belepve[playerid] = 1;
                                        ResetPlayerMoney(playerid);
                                       
                                        ...
                                        JatekosInfo[playerid][spawnPozX] = dini_Float(file, \"PozX\");
                                        JatekosInfo[playerid][spawnPozY] = dini_Float(file, \"PozY\");
                                        JatekosInfo[playerid][spawnPozZ] = dini_Float(file, \"PozZ\");
                                        JatekosInfo[playerid][spawnFacingAngle] = dini_Float(file, \"FacingAngle\");
                                        ...

 
 
Nem teszteltem, lehet hogy valamit elírtam, ezért elnézést! Remélem sikerülni fog :)

37
Segítségkérés / Változónak nem egész szám megadás[kezdõ]
« Dátum: 2014. augusztus 18. - 23:42:58 »
Szia!
Egy változónak csak 1 darab értéke lehet, de te 3-at is próbáltál megadni neki. :)
Ugye 1 játékos pozíció 3 koordinátából áll: X, Y, és Z.
A koordináták úgynevezett \"lebegõpontos értékek\" (angolul \"float\"), ezért a változót Float típusúként kell létrehoznod.
Kiíráskor pedig dini_IntSet helyett dini_FloatSet, mivel float-ot akarsz kiírni.
Így kell kinéznie:
 
new változótípusa:változóneve = kezdetiérték;

 
Szóval 3 koordinátát kell eltárolnod:
 
new Float:posX = 1482.8942;
new Float:posY = -1740.5924;
new Float:posZ = 13.5469;

 
Majd kiírni fájlba:
 
dini_FloatSet(file, \"PosX\", posX);
dini_FloatSet(file, \"PosY\", posY);
dini_FloatSet(file, \"PosZ\", posZ);

38
Segítségkérés / Mért nem ad random számot
« Dátum: 2014. augusztus 17. - 11:42:44 »
Szerintem túl nagy értéket adtál meg..

39
Segítségkérés / Hibát ír ki
« Dátum: 2014. augusztus 16. - 22:13:54 »
new id[MAX_PLAYER_NAME];

 
Helyett:
 
new id;

 

sscanf(params,\"ii\",id,armormennyiseg)

 
Helyett:
 
sscanf(params,\"ui\",id,armormennyiseg)

 

Dupla hozzászólás automatikusan összefûzve. ( [time]2014. Augusztus 16. 22:35:30[/time] )

Mert ugye a felhasználók ID-je integer típusú, de te string-nek defináltad. Nem csoda, hogy nem fogadta el :)
 
sscanf(params,\"ui\",id,armormennyiseg)

 
sscanf-nél pedig mikor felhasználót kell megadni egy parancs paraméteréül, a formátumnál a \"u\" specifikátort kell megadnod. Így a sscanf a felhasználó ID-jét adja vissza a változónak, akkor is, ha a játékos nevét írták a parancs paraméterében. Pl.: tegyük fel, hogy az \"X_Y\" nevû játékos ID-je 21.
Beírod:
/setarmor X_Y 100
vagy
/setarmor 21 100
Mindkét esetben a sscanf az \"id\" nevû változóba 21-et fog visszaadni.
Ha valaki elírta a játékos nevét, vagy ID-jét, vagy a játékos éppen nincs fent a szerveren, a sscanf függvény visszatérési értéke nem 0 lesz. Így lehet ellenõrizni, hogy a játékos megfelelõen használta-e az utasítást. Ha nem 0, akkor kiírjuk neki az utasítás használatát.

Oldalak: 1 2 [3]
SimplePortal 2.3.7 © 2008-2024, SimplePortal