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: ChuckNorris - 2010. november 03. - 15:26:47

Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: ChuckNorris - 2010. november 03. - 15:26:47
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élvonal
Float: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.
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: KDDomi - 2010. november 03. - 15:31:07
Jo leirás Grat!
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: nyE - 2010. november 03. - 15:32:34
Gyönyörûûûû :D :D
Minyá írok egy verseny scriptet xD
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: ChuckNorris - 2010. november 03. - 16:33:54
Kösz mindenkinek.
Nem tudom ez a leírás önmagában elég-e verseny script készítéséhez. :D
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: [SWAT]Messi - 2010. november 03. - 18:46:04
Szép leírás ,ahogy a nagy könyvben meg van írva. :D Sokat segítettél,köszi.
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: hpeter94 - 2010. november 03. - 20:37:56
szép leírás
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: Epsilon - 2010. november 03. - 21:52:19
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: nyE - 2010. november 03. - 22:25:50
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
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: sivi151 - 2010. november 13. - 14:14:32

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.
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: jana4 - 2010. november 13. - 16:40:13
Szép leírás.  ;)
 
Idézetet írta: Antonyo date=1288819550\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"4018\" data-ipsquote-contentclass=\"forums_Topic
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
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: Popec16 - 2010. november 13. - 23:31:44
Szép tut! :P
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: Coole - 2010. december 24. - 10:17:41
Ez most nekem épp jól jön Rendõrös szeromnál bankrob-hoz :) köszi
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: Iceaac - 2010. december 24. - 10:46:59
Szép tutorial! Itt egy kis hiba:
 
GivePlayerMoney(playerid, 10000);//Fegyvert adunk neki[/quote]
Biztos vagy benne, hogy az fegyver?  ;D
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: ChuckNorris - 2010. december 24. - 10:51:10
Idézetet írta: Iceaac date=1293184019\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"4018\" data-ipsquote-contentclass=\"forums_Topic
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
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: Bazsi - 2011. július 30. - 11:00:58
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
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: Norby - 2011. július 30. - 11:50:15
Használj CPloader.inc et avval végtelen sokat letudsz rakni :D
http://gtaforum.hu/index.php?topic=5934.msg55331#msg55331
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: Bazsi - 2011. július 30. - 18:51:52
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?
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: ChuckNorris - 2011. augusztus 01. - 17:22:42
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.
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: IPhoneman96 - 2011. december 15. - 09:47:55
Ü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?
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: instant - 2011. december 15. - 22:26:24
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
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: IPhoneman96 - 2011. december 17. - 10:25:32
sikerült de nem ez volt a probléma azért kösz
Cím: [ Leírás ]A Checkpointokról és a Race Checkpointokról
Írta: GameßoyJack - 2011. december 18. - 14:28:37
Köszi,ez a leírás sokat segített,most tanulmányozom a Pawno-t :P