A Checkpointokról és a Race Checkpointokról Üdv!Nos errõl még nem láttam leírást,ezért gondoltam készítek egyet,mint a címbõl kiderül,a checkpointokról lesz szó,vagyis az ellenörzõpontokról.A függvényekrõl forrásként a
SA:MP wikit használtam fel,a fügvény és eljárásnevekhez linkeket kötöttem,mind a wikire mutatnak.
1,Mi is az a checkpoint?
A checkpoint magyarul ellenörzõpont,egy kis piros kör,egyszemélyes játékmódban ez jelöli a küldetések helyét,a verseny (race) ellenörzõpontokkal meg versenyeken találkozhatunk.
Mi is létrehozhatunk ilyet,ez egy hasznos dolog.
2,Korlátozások
Természetesen vannak.Egyszerre csak 1 ellenörzõpontot és 1 verseny ellenörzõpontot hozhatsz létre.
3,Függvények és eljárások
Függvények:DisablePlayerCheckpoint: Eltünteti az ellenörzõpontot egy játékosnak.
Paraméterek:
(playerid)
playerid A játékos azonosítõ akinek eltüntetjük az ellenörzõpontot.
Visszatérés Ez a funkció nem ad vissza értéket.
IsPlayerInCheckpoint: Megnézzük, hogy a játékos az ellenörzõpontban van-e.
Paraméterek:
(playerid)
playerid A játékos azonosítõ akit vizsgálunk.
Visszatérés Igaz (true) ha benne áll,hamis (false) ha nem.
SetPlayerRaceCheckpoint: Létrehozunk egy verseny ellenörzõpontot egy játékosnak.(Az elõzõ eltünik)
Paraméterek:
(playerid, type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size)
playerid A játékos azonosítõ akinek megjelenítjük az ellenörzõpontot.
type Ellenörzõpont típusa.
0-Normális, 1-Célvonal, 2-Semmi(Csak ellenörzõpont,semmi jel sincs rajta), 3-Légi normális, 4-Légi célvonalFloat:x X-Koordináta
Float:y Y-Koordináta
Float:z Y-Koordináta
Float:nextx X-Koordinátája a következõ ellenörzõpontnak,a nyíl erre fog mutatni.
Float:nexty Y-Koordinátája a következõ ellenörzõpontnak,a nyíl erre fog mutatni.
Float:nextz Y-Koordinátája a következõ ellenörzõpontnak,a nyíl erre fog mutatni.
Float:size A mérete az ellenörzõpontnak.
Visszatérés Ez a funkció nem ad vissza értéket.
SetPlayerCheckpoint: Létrehozunk egy ellenörzõpontot egy játékosnak.(Az elõzõ eltünik)
Paraméterek:
(playerid,Float:x,Float:y,Float:z,Float:size)
playerid A játékos azonosítõ akinek megjelenítjük az ellenörzõpontot.
Float:x X-Koordináta
Float:y Y-Koordináta
Float:z Y-Koordináta
Float:size A mérete az ellenörzõpontnak.
Visszatérés Ez a funkció nem ad vissza értéket.
DisablePlayerRaceCheckpoint: Eltüntetjük a verseny ellenörzõpontot a játékosnak.
Paraméterek:
(playerid)
playerid A játékos azonosító akinek eltüntetjük a verseny ellenörzõpontot.
Visszatérés Ez a funkció nem ad vissza értéket.
IsPlayerInRaceCheckpoint: Megnézzük, hogy a játékos a verseny ellenörzõpontban van-e.
Paraméterek:
(playerid)
playerid A játékos azonosító akit vizsgálunk.
Visszatérés Igaz (true) ha benne áll,hamis (false) ha nem.
Eljárások:OnPlayerEnterCheckpoint: Meghívódik amikor a játékos belép az ellenörzõpontba.
Paraméterek:
(playerid)
playerid A játékos azonosító aki belép az ellenörzõpontba.
Visszatérés Ez a funkció nem kezeli a visszatérési értékeket.
OnPlayerLeaveCheckpoint: Meghívódik amikor a játékos elhaggya az ellenörzõpontot.
Paraméterek:
(playerid)
playerid A játékos azonosító aki elhaggya az ellenörzõpontot.
Visszatérés Ez a funkció nem kezeli a visszatérési értékeket.
OnPlayerEnterRaceCheckpoint: Meghívódik amikor a játékos belép a verseny ellenörzõpontba.
Paraméterek:
(playerid)
playerid A játékos azonosító aki belép a verseny ellenörzõpontba.
Visszatérés Ez a funkció nem kezeli a visszatérési értékeket.
OnPlayerLeaveRaceCheckpoint: Meghívódik amikor a játékos elhaggya a verseny ellenörzõpontot.
Paraméterek:
(playerid)
playerid A játékos azonosító aki elhaggya a verseny ellenörzõpontot.
Visszatérés Ez a funkció nem kezeli a visszatérési értékeket.
4,Felhasználás
Nos,ezeket a fügvényeket nyugottan használhatjuk pl. parancsban,vagy eljárásokban feltételekhez kötve,könnyedén versenyeket készíthetünk.
Akár fegyvert vagy jármûvet adhatunk a játékosnak aki belép a checkpointba,vagy esetleg amíg a checkpointban van addig használhat egy fegyvert.Ezek nagyon hasznos dolgok.
Írok pár mintapéldát a wikirõl,de megmagyarázom õket:
public OnPlayerSpawn(playerid)//Amikor a játékos spawnol,
{
SetPlayerCheckpoint(playerid, 1982.6150, -220.6680, -0.2432, 3.0);//Megjelenítünk neki egy ellenörzõpontot.
return 1;
}
public OnPlayerEnterCheckpoint(playerid) //Amikor a játékos belép az ellenörzõpontba,
{
GivePlayerMoney(playerid, 10000);//Pénzt adunk neki
DisablePlayerCheckpoint(playerid);//És eltüntetjük az ellenörzõpontot.
return 1;
}
Hogyan hozzunk létre más tulajdonsággal rendelkezõ ellenörzõpontokat?Mi sem egyszerübb!
Elõször is hozzunk létre egy új változót,
new gPlayerCPStatus[MAX_PLAYERS];
amikor egy játékos csatlakozik lenullázuk neki a változót,
public OnPlayerConnect(playerid)
{
gPlayerCPStatus[playerid] = 0;
return 1;
}
parancsokban megszabjuk a változó értékét,s így az ellenörzõpont tulajdonságait,
if(!strcmp(cmdtext, \"/fegyocp\", true))
{
SendClientMessage(playerid, 0xFFFFFFFF, \"Fegyvert fogsz kapni!\");
SetPlayerCheckpoint(playerid, 1982.6150, -220.6680, -0.2432, 3.0);
gPlayerCPStatus[playerid] = 1;
return 1;
}
if(!strcmp(cmdtext, \"/mocicp\", true))
{
SendClientMessage(playerid, 0xFFFFFFFF, \"Motort fogsz kapni!\");
SetPlayerCheckpoint(playerid, 1982.6150, -220.6680, -0.2432, 3.0);
gPlayerCPStatus[playerid] = 2;
return 1;
}
aztán amikor a játékos belép az ellenörzõpontba,
public OnPlayerEnterCheckpoint(playerid)
{
switch(gPlayerCPStatus[playerid]) //Létrehozunk egy elágazást,
{
case 0: return 1; //Ha nem írt be parancsot,nem csinálunk semmit.
case 1: GivePlayerWeapon(playerid, 26, 500); //Ha a változó értéke 1,akkor fegyvert kap a játékos,
case 2: CreateVehicle(586, 1982.6150, -221.0145, -0.2432, 82.2873, -1, -1, 60000); //Ha a változó értéke 2,akkor mocit adunk neki.
}
DisablePlayerCheckpoint(playerid);//Eltüntetjük neki az ellenörzõpontot.
gPlayerCPStatus[playerid] = 0;//Nullára állítjuk a változó értékét.
return 1;
}
5,Utószó
Nos,remélem mindent jól írtam le,valamelyik példát itt írtam a fórumban,nem tudom nem néztem-e el valamit.
Ha észrevesztek valamit írjatok,különben várom az észrevételeket,kritikákat,esetleg ha kihagytam valamit szóljatok.