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