Szerző Téma: Paraméter lépkedések  (Megtekintve 2560 alkalommal)

Nem elérhető divkn

  • 3259
    • Profil megtekintése
Paraméter lépkedések
« Dátum: 2013. Október 08. - 00:23:36 »
+3
Ezt az egyszerûsítést a properties funkciók leírásában (http://wiki.sa-mp.com/wiki/Function:setproperty) találkoztam, nem tudom hogy nevezik ezt valójában, még a Pawn útmutatójában sem találtam ehhez hasonlót sem, így most \"paramatéter lépkedésnek\" neveztem. Bizonyára vannak rajtam kívül itt olyan szkripterek akik tudnak errõl.
Szóval a \"paraméter lépkedés\" lehetõvé teszi hogy egy értékkel ellátott funkció paramétereket átugorhasd, anélkül hogy ismét megadnád azt az értéket, ami már jelenleg meg van adva. Argomentumok esetén ez a módszer nem mûködik.
Hogyan is néz ki ez a Pawnban?
 

Funkció_neve(.paraméter_neve = szám) // egész számok esetén
Funkció_neve(.paraméter_neve = \"szöveg\") // karakterlánc esetén
Funkció_neve(.paraméter_neve = \'karakter\') // karakter esetén
Funkció_neve(.paraméter_neve = true/false) // logikai esetén

 
Itt egy példa:
 

#include a_samp
public OnPlayerConnect(playerid)
{
    // Mindig megszoktuk adni a szín paraméter értékét mivel ha kihagyjuk, akkor a fordító azt hiszi hogy egy
    // karakterláncot próbálsz rásózni színnek, ezért error 035-ös hibát ír.
    /*Hibás*/ SendPlayerMessage(playerid, \"Üdvözlünk a szerveren!\"); // error 035: argument type mismatch (argument 2)
    /*Helyes*/ SendPlayerMessage(playerid, 0xFFFFFFFF, \"Üdvözlünk a szerveren!\"); // Nincs hiba
    // Ha nem akarjuk a fehér színt (0xFFFFFFFF) módosítani, akkor ezt mi átléphetjük így
    SendPlayerMessage(playerid, .message = \"Üdvözlünk a szerveren!\"); // Nincs hiba
    // Mivel ismerjük a funkció paraméter neveit (playerid, color, message), így akár rendezve vagy rendezetlenül
    // is hagyhatjuk. Ezt a fordító figyelmen kívül hagyja, mivel definiáltad a paraméter nevét, amihez értéket adtál.
    SendPlayerMessage(.message = \"Üdvözlünk a szerveren!\", .playerid = playerid, .color = 0xFF0000FF); // Nincs hiba
    return 1;
}
// Sajnos ez SendClientMessage funkció esetén nem mûködik mivel, a color paraméternek nincs értéke,
// ezért \"warning 202: number of arguments does not match definition\" figyelmeztetést kapunk,
// így mi létrehozunk egy picit a funkciót, vagyis adunk a color paraméternek egy szín értéket.
stock SendPlayerMessage(playerid, color = 0xFFFFFFFF, message[])
{
    SendClientMessage(playerid, color, message);
    // Egyéb funkció
    return 1;
}

 


// Gondolom mindenki ismeri a CreatePlayerObject funkció végén a DrawDistance paramétert, aminek az értéke 0.0.
// Ezt az paramétert szintén elhagyhatod, mivel nincs utána már paraméter, tehát a fordító figyelmen kívül hagyja.
// CreatePlayerObject paraméteri:
//                 playerid, modelid, X,   Y,   Z,   rX,  rY,  rZ,  DrawDistance = 0.0
CreatePlayerObject(playerid, 740,     0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); // Mûködik
// Mivel a DrawDistance paraméternek 0.0 az értéke és nem szeretnén módosítani, akkor elhagyhatjuk.
CreatePlayerObject(playerid, 740,     0.0, 0.0, 0.0, 0.0, 0.0, 0.0); // Mûködik
// \"Paraméter lépkedés\" segítségével a DrawDistance paramétert bárhová helyezhetjük.
// Módosítsuk a DrawDistance paraméter értékét 0.0-ról 300.0-ra.
//                 playerid, modelid, DrawDistance,          X,   Y,   Z,   rX,  rY,  rZ,
CreatePlayerObject(playerid, 740,     .DrawDistance = 300.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); // Helytelen
// Ám, a fordító \"error 044: positional parameters must precede all named parameters\"
// hibát észlel, mert nem tudja mihöz kösse a további funkcióit. Tehát definiálnunk kell a DrawDistance utáni paraméter párjait.
//                 playerid, modelid, DrawDistance,          X,        Y,        Z,         rX,        rY,        rZ,
CreatePlayerObject(playerid, 740,     .DrawDistance = 300.0, .X = 0.0, .Y = 0.0, .Z = 0.0, .rX = 0.0,  .rY = 0.0, .rZ = 0.0); // Helyes
« Utoljára szerkesztve: 2013. Október 09. - 15:47:57 írta divkn »

Nem elérhető Lömpi

  • 1257
    • Profil megtekintése
Paraméter lépkedések
« Válasz #1 Dátum: 2013. Október 08. - 03:49:01 »
0
Én errõl eddig why nem tudtam?! lol. szép + <3

Nem elérhető b1s

  • 2212
  • Faszidegbénulás
    • Profil megtekintése
Paraméter lépkedések
« Válasz #2 Dátum: 2013. Október 09. - 15:38:18 »
+4
SendPlayerMassage [/quote]
Már ilyen is van? Nekem jöhetne egy. :D

Nem elérhető divkn

  • 3259
    • Profil megtekintése
Paraméter lépkedések
« Válasz #3 Dátum: 2013. Október 09. - 15:49:49 »
0
Egy apró elírástól nem dõl össze a világ, de köszi hogy szóltál. :D

Nem elérhető ZoleBB

  • 480
  • ZoleBB
    • Profil megtekintése
Paraméter lépkedések
« Válasz #4 Dátum: 2013. December 08. - 16:01:51 »
0
Kösz hogy kozé tetted!

Paraméter lépkedések
« Válasz #5 Dátum: 2014. Január 04. - 23:52:06 »
0
Én eddig csak arról tudtam, hogy alsó kötõjellel lehet helyettesiteni paramétereket. Köszönöm az információt. :P

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal