GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Tanuljunk PAWN nyelvet => A témát indította: divkn - 2013. Október 08. - 00:23:36

Cím: Paraméter lépkedések
Írta: divkn - 2013. Október 08. - 00:23:36
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
Cím: Paraméter lépkedések
Írta: Lömpi - 2013. Október 08. - 03:49:01
Én errõl eddig why nem tudtam?! lol. szép + <3
Cím: Paraméter lépkedések
Írta: b1s - 2013. Október 09. - 15:38:18
SendPlayerMassage [/quote]
Már ilyen is van? Nekem jöhetne egy. :D
Cím: Paraméter lépkedések
Írta: divkn - 2013. Október 09. - 15:49:49
Egy apró elírástól nem dõl össze a világ, de köszi hogy szóltál. :D
Cím: Paraméter lépkedések
Írta: ZoleBB - 2013. December 08. - 16:01:51
Kösz hogy kozé tetted!
Cím: Paraméter lépkedések
Írta: Hun_Norberto - 2014. Január 04. - 23:52:06
Én eddig csak arról tudtam, hogy alsó kötõjellel lehet helyettesiteni paramétereket. Köszönöm az információt. :P