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.
Jo leirás Grat!
Gyönyörûûûû :D :D
Minyá írok egy verseny scriptet xD
Kösz mindenkinek.
Nem tudom ez a leírás önmagában elég-e verseny script készítéséhez. :D
Szép leírás ,ahogy a nagy könyvben meg van írva. :D Sokat segítettél,köszi.
szép leírás
- függvény*
egy kis piros kör[/quote] nem feltétlen pici.
new gPlayerCPStatus[MAX_PLAYERS];[/quote]
Manapság már nem igazán kéne ilyen hatalmas tömböket létrehozni (PVar)
Akkor valaki írhatna errõl a pvar-ról meg ezekrõl valami leírást mert nemnagyon vágom. (de lehet h nemcsak én)
sry az offért
public OnPlayerEnterCheckpoint(playerid) //Amikor a játékos belép az ellenörzõpontba,
{
GivePlayerMoney(playerid, 10000);//Fegyvert adunk neki
DisablePlayerCheckpoint(playerid);//És eltüntetjük az ellenörzõpontot.
return 1;
}
[/quote]
Nézdcsak meg a fegyvert adunk neki t.
az véletlen nem pénz???:D
Ezen kivül minden kira:D
Szép tut.
Szép leírás. ;)
Akkor valaki írhatna errõl a pvar-ról meg ezekrõl valami leírást mert nemnagyon vágom. (de lehet h nemcsak én)
sry az offért
http://sampforum.hu/index.php?topic=7895.0
Szép tut! :P
Ez most nekem épp jól jön Rendõrös szeromnál bankrob-hoz :) köszi
Szép tutorial! Itt egy kis hiba:
GivePlayerMoney(playerid, 10000);//Fegyvert adunk neki[/quote]
Biztos vagy benne, hogy az fegyver? ;D
Szép tutorial! Itt egy kis hiba:
GivePlayerMoney(playerid, 10000);//Fegyvert adunk neki
Biztos vagy benne, hogy az fegyver? ;D
[/quote]
Oh nemár azthittem azt már javítottam. :D
Egy pill.
És kösz mindenkinek.
E:
Javítva,ez az átka ha a fórumban írod meg a kódot,átláthatatlan. :D
Hello
Bocs, hogy csak most írok ide, de most jutottam odáig, ahol kell. XD
Na szóval csinálnék egy sorompót, aminél ha beállsz a cp-be, akkor levon pénzt, és kinyitja a sorompót. Ez idáig jó is, csak azt nem tudom, hogy lehet-e olyat csinálni, hogy négy különálló cp legyen és ha valamelyikbe belemész, akkor csak annál vonjon le pénzt és nyissa ki a sorompót. A pénzlevonás és a sorompó kinyitását meg tudom oldani, csak ezzel a cp-vel van problémám :DD
Használj CPloader.inc et avval végtelen sokat letudsz rakni :D
http://gtaforum.hu/index.php?topic=5934.msg55331#msg55331
Köszönöm, csak annyi lenne a kérdésem, hogy ezt hogyan tudom használni?
#include <a_samp>
#include <Cploader>
public OnPlayerCommandText(playerid, cmdtext[])
{IsPlayerInCheckpoint() //Ezt itt nem nagyon tudom, hogy különböztetem meg a cp-ket? :S
{IsPlayerInAnyVehicle() //de közben rájöttem, hogy ezt sem tudom pontosan, hogy hogy lehet XDD, bocs
SendClientMessage(playerid,0x33AA33AA, \"Kérlek várj!\");
}
}
Tudnál segíteni?
Egyszerre csak egy CP-t láthat a játékos,szóval ha arra gondolsz hogy 4 CP-t lát egyszerre az nem megoldható.
A megkülönböztetést leírtam:
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:
{
//Pénz levonás,egyes kapu kinyitása
}
case 2:
{
//Pénz levonás,2es kapu kinyitása
}
case 3:
{
//Pénz levonás,3as kapu kinyitása
}
case 4:
{
//Pénz levonás,4es kapu kinyitása
}
}
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;
}
A CP megjelenítést pedig valahogyan így lehet megoldani:
public OnPlayerUpdate(playerid)
{
if(IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z)) //CP1
{
gPlayerCPStatus[playerid] = 1;
SetPlayerCheckpoint(playerid, x, y, z, 5.0);
}
if(IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z))//CP2
{
gPlayerCPStatus[playerid] = 2;
SetPlayerCheckpoint(playerid, x, y, z, 5.0);
}
if(IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z))//CP3
{
gPlayerCPStatus[playerid] = 3;
SetPlayerCheckpoint(playerid, x, y, z, 5.0);
}
if(IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z))//CP4
{
gPlayerCPStatus[playerid] = 4;
SetPlayerCheckpoint(playerid, x, y, z, 5.0);
}
return 1;
}
X Y Z koordinátákat helyettesítsd be.
Üdv
Azt szeretném kérdezni hogy nekem olyan checkpointok kellenek hogy bemegy a fegyverboltba és tud venni fegyvert meg bemegy valami kajáldába tudjon venni kaját de ha ezt csinálom ahogy e mutattad akkor ha 0 változóra van beállítva az étterem és 1re a fegyverbolt és a fegyverboltba megy elöbb a kajamenüt hozza fel mit tudok tenni?
ameiket akarod az elsõnek
ShowPlayerDialog(playerid,1,DIALOG_STYLE_LIST,\"Kaja étlap\",\" Ide az étel nevek!\",\"Elfogyaszt\",\"\"); dialog responsénél tod mit kell nem ?
és ugyan igy a t9bbinél
sikerült de nem ez volt a probléma azért kösz
Köszi,ez a leírás sokat segített,most tanulmányozom a Pawno-t :P