Szerző Téma: [piszk.] Alap Checkpointok készítése, és használata.  (Megtekintve 657 alkalommal)

Nem elérhető Olie

  • 892
  • Roleplay Õrült
    • Profil megtekintése
[piszk.] Alap Checkpointok készítése, és használata.
« Dátum: 2012. Szeptember 27. - 12:56:35 »
0
Lecke Tartalma: Alap Checkpointok készítése, és használata, valamint bepillantás az InRangeOfPoint függvény használatába.


Sziasztok!
Ebben a Leckében megmutatom, hogyan lehet egyszerûen, és gyorsan Checkpointokat (CP-ket) létrehozni.
A Checkpointokat felhasználhatod például a roleplay szerverekben az úgynevezett \"CP-s\" munkákhoz, mint az úttisztító, utcaseprõ, stb. De a Race, Drift, Stunt játékmódokban is sokszor fordulnak elõ.
Két fajtájuk van: Versenycp (\"Race Checkpoint\") illetve, a sima Normál Checkpoint.
A VersenyCP sokkal nagyobb. Race szervereken szokták használni.
Függvényileg csupán ennyi különbség van közöttük:
 

SetPlayerCheckpoint // Normál CP létrehozása
DisablePlayerCheckpoint //Normál CP eltávolítása
SetPlayerRaceCheckpoint // VersenyCP létrehozása
DisablePlayerRaceCheckpoint // VersenyCP eltávolítása

 
Szóval.
Azzal kezdünk mint mindig, a függvénykönyvtárunkkal.
Tehát:
 

#include     <a_samp>   //Függvénykönyvtár

 
Most, hogy bent van a függvénykönyvtár, és ismerjük a checkpoint-fajták létrehozását, és eltávolítását,  választhatunk, hogy melyiket csináljuk meg. Én most egy Normál Checkpointot csinálok, de ti természetesen csinálhatjátok a másikat.
Szóval, keressük meg az OnPlayerSpawn funkciót.
 

public OnPlayerSpawn(playerid)
{
}

 
Szóval, akkor hozzunk létre benne egy Normál Checkpointot.
 

public OnPlayerSpawn(playerid)
{
    SetPlayerCheckpoint(playerid, 0, 0, 0, 7);
    return 1;
}

 
Akkor nézzük, hogy ez mit is jelentett:
Elõször is, OnPlayerSpawn alatt van. Bárki aki spawnol (bármilyen indokkal, pl. Login, Halál, Teleport) annak megjelenik ez a CheckPoint.
Öt Paraméter van benne.
Az elsõ a játékos ID-je. Értelemszerû.
A Következõ három, az X, Y, és Z, koordináta, és végül a Checkpoint mérete.
Tehát:
 

SetPlayerCheckpoint(playerid, X, Y, Z, Méret);

 
Egyszóval a fentebb lévõ függvény a 0;0;0-ra dobta a CP-t, ami Blueberry farm közepe.
Szuper, elkészítettünk egy Checkpointot.
A Checkpointokat általában nem azért készítjük, hogy nézegessük õket, hanem van valami funkciójuk is.
Funkció.
 

public OnPlayerEnterCheckpoint(playerid)

 
Oké, tehát valaminek történnie kell, ha a játékos belép a checkpointba.
De honnan tudja a szerver, hogy melyik checkpointról beszélünk?
Itt jön képbe a fent leírt IsPlayerInRangeOfPoint függvény. Ne ijedjetek meg, egyszerûbb használni, mint azt hiszitek.
A Függvény segítségével egy adott koordináta köré gömb alakban sugarat vonhatunk, és megnézhetjük, hogy a játékos belépett-e a sugárba
A Sugár mértéke mindig legyen egyenlõ a Checkpoint méretével.
Én a Checkpoint méretét 7-re állítottam, ezért a sugarat is 7-re állítom.
Mondjuk adjunk neki egy sok szerver által használt \"Adminskint\"
Ennek 217 az id-je.
 

public OnPlayerEnterCheckpoint(playerid) //Funkció
{
    if(IsPlayerInRangeOfPoint(playerid, 7, 0, 0, 0)) //Megnézzük, hogy a checkpointban van-e. (Sugár)
    {
        SetPlayerSkin(playerid, 217); //217-es skint adunk neki
        DisablePlayerCheckpoint(playerid); //Eltûntetjük a Checkpointot
    }
    return 1;
}

 
Természetesen pénzt is kaphat.
Illetve elõtte megadhatjuk azt is, hogy csak akkor vegye fel a checkpointot, ha autóban ül, és sofõr.
De ezt majd egy késõbbi leckében. Elõször ezt emésszétek meg :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal