Jump to content

Checkpointy


Guest Justin Bieber

Recommended Posts

Zdravím, v tomhle tutoriálu si ukážeme jak pracovat s Checkpointy (Dále jen CP).

Existují ješte RaceCheckpointy, ale o nich někdy jindy, ted se zamerime na ty "obycejne" x)

 

!!!! PAMATUJTE SI !!!!


  • [*:lddzfok8]
CP může být vytvořen VŽDY jen JEDEN !!

 

 

1. Část - vysvětlení funkce

SetPlayerCheckpoint - Vytvoří CP

SetPlayerCheckpoint(playerid,Float:x,Float:y,Float:z,Float:size);

 

playerid - To znáte, určuje komu se funkce vyvolá.

Float:x, y, z - Určuje souřadnice, kde se CP vytvoří.

Float:size - Určuje velikost CP.

 


 

DisablePlayerCheckpoint - Zruší hráči CP

 

DisablePlayerCheckpoint(playerid);

playerid - To znáte, určuje komu se funkce vyvolá.

 


 

2. Část - Vyvolání funkcí, když hráč použije CP

Vstupování

 

K tomu nám slouží public OnPlayerEnterCheckpoint - Když Hráč Vstoupí do CP.

 


 

Vystupování

 

K tomu nám slouží public OnPlayerLeaveCheckpoint - Když Hráč vystoupí z CP.

 


 

3. Část - kombinace více CP

Pokud chceme kombinovat více CP, třeba při závodě nebo při misi, musíme použít proměnu.

 

Vytvoříme si tedy proměnu pro hráče (dáme nahoru pod definice/includy)

new cp[MAX_PLAYERS];

MAX_PLAYERS určuje pro kolik hráčů se tato definice vytvoří, můžete použít vlastní definici (MAX_PLAYERS_EX atd.)

 


 

Máme tedy proměnou a můžeme začít kombinovat x)

 

Do příkazu, nebo tam kde chceme aby se spustil první CP vložíme tento kod:

SetPlayerCheckpoint(playerid, 1982.6150, -220.6680, -0.2432, 3.0);
cp[playerid] = 0;

SetPlayerCheckpoint - Vytvoří CP (viz. 1 část)

cp[playerid] = 0; - Nastaví proměnu na 0 aby jsme s ní mohli pracovat později.

 

A přejdeme do našeho publicu OnPlayerEnterCheckpoint

 


 

public OnPlayerEnterCheckpoint(playerid)
{
   return 1;
}

 

Takto nějak ted vypadá náš public, ale my ho upravíme ! x)

 

public OnPlayerEnterCheckpoint(playerid)
{
   switch(cp[playerid]) // "přehazuje" hodnotu proměny, nevím jak nazvat.
   {
       case 0: // Když je hodnota cp[playerid] 0 vyvolá se case 0
       {
           DisablePlayerCheckpoint(playerid); // zruší CP
           cp[playerid]++; // přidáme hodnotu aby se nám furt neopakovalo case 0
           SetPlayerCheckpoint(playerid, 1982.6150, -220.6680, -0.2432, 3.0);
           // vytvoříme druhý checkpoint
       }

       case 1: // a pokracujeme 
       {
           DisablePlayerCheckpoint(playerid);
           cp[playerid]++; 
           SetPlayerCheckpoint(playerid, 1982.6150, -220.6680, -0.2432, 3.0);
       }
       case 2: // az se dostaneme na konec závodu a tam vložíme 
       {
           cp[playerid] = 0; // aby hráč mohl znova absolvovat závod
           DisablePlayerCheckpoint(playerid); // zruší CP
           SendClientMessage(playerid, BARVA, "Vyhrál si huaaa xD");
       }
   }
   return 1;
}

 


 

4. Část - Podmínka

 

Pokud je hráč v Checkpointu - IsPlayerInCheckpoint

 

if(IsPlayerInCheckpoint(playerid))
{
}

 


 

5. Část - Závěr

 

Wikipedie:

http://wiki.sa-mp.com/wiki/SetPlayerCheckpoint

http://wiki.sa-mp.com/wiki/DisablePlayerCheckpoint

http://wiki.sa-mp.com/wiki/IsPlayerInCheckpoint

 

http://wiki.sa-mp.com/wiki/OnPlayerEnterCheckpoint

http://wiki.sa-mp.com/wiki/OnPlayerLeaveCheckpoint

 

Děkuji za přečtení tutoriálu, popřípadné chyby hlašte.

Link to comment
Share on other sites

wtf ? :d

public OnPlayerEnterCheckpoint(playerid)
{
   switch(cp[playerid]) // "přehazuje" hodnotu proměny, nevím jak nazvat.
   {
       case 0: // Když je hodnota cp[playerid] 0 vyvolá se case 0
       {
           DisablePlayerCheckpoint(playerid); // zruší CP
           cp[playerid]++; // přidáme hodnotu aby se nám furt neopakovalo case 0
           SetPlayerCheckpoint(playerid, 1982.6150, -220.6680, -0.2432, 3.0);
           // vytvoříme druhý checkpoint
       }

       case 1: // a pokracujeme
       {
           DisablePlayerCheckpoint(playerid);
           cp[playerid]++;
           SetPlayerCheckpoint(playerid, 1982.6150, -220.6680, -0.2432, 3.0);
       }
       case 2: // az se dostaneme na konec závodu a tam vložíme
       {
           cp[playerid] = 0; // aby hráč mohl znova absolvovat závod
           DisablePlayerCheckpoint(playerid); // zruší CP
           SendClientMessage(playerid, BARVA, "Vyhrál si huaaa xD");
       }
   }
   return 1;
}

toto sa používa pri RACE CP a nie pri ako ty hovoríš obyčajných :) na toto sa "obyčajné" nepoužívajú. je to nepekné ak sa pri race používa obyčajný CP...

mohol si tam dať npr. povolanie alebo niečo ale nie Race...

Link to comment
Share on other sites

Jaj bug xD

 

Tuhle cast sem do toho tutu chtel vlozit jen pro ty co nevi jak se dela takhle tech vic CP za sebou protoze se me na to uz 5 lidi ptalo. Mas pravdu s tim SetPlayerRaceCheckpoint ale me to nedoslo :d

Link to comment
Share on other sites

zabudol si napísať jednu dôležitú vec ! dopíš ju

Doplneno x) Jo a BTW u toho switch - tak to se nemusi pouzivat jen k Race ale treba k misim kdyz ja nevim treba mas cisticku silnic tak das 6 CP za sebou a prece do toho nebudes cpat zavodni CP :d

Link to comment
Share on other sites

prečo nie ? to iba wtsa tam dalo obyčajný ale race ti ukazuje hned kde je další a tak vieš kade máš ísť... to by bolo kebyže svet funguje na tento system :d

by si sa dozvedel kade máš ísť až ked budeš tam (npr. beusáci (MHD xD)) si predstav že ti povedia kde je dalšia zastávka až ked si na tej pred nou xD

 

Dano106 do riti si to strč

Link to comment
Share on other sites

kam mám vložiť to
if(IsPlayerInCheckpoint(playerid))
{
}

?

 

To je podmínka PokudJeHráč v CP, takže jak potřebuješ, do timeru atd.

do OnPlayerEnterCheckpoint to davat nemusis protoze ten public se spusti JEN kdyz hrac vstoupil do CP.

 

-- 11 říj 2010, 19:57 --

 

prečo nie ? to iba wtsa tam dalo obyčajný ale race ti ukazuje hned kde je další a tak vieš kade máš ísť... to by bolo kebyže svet funguje na tento system :d

by si sa dozvedel kade máš ísť až ked budeš tam (npr. beusáci (MHD xD)) si predstav že ti povedia kde je dalšia zastávka až ked si na tej pred nou xD

 

Chápu ale ty jsi říkal ŽE SE POUŽÍVÁ JEN RACE CP, tak ti to vyvracim xD

Link to comment
Share on other sites

  • 4 weeks later...

a kde mám dať tú podmienku?

if(IsPlayerInCheckpoint(playerid))
{
}

a to ked dám napr takto...

public OnPlayerEnterCheckpoint(playerid)
{
   Ban(playerid);
   DisablePlayerCheckpoint(playerid);
   return 1;
}

tak to je čo? to je niečo iné ako tá podminenka? toto nechápem potrebujem help ešte toto bi si my vysvetlil?

Link to comment
Share on other sites

if(IsPlayerInCheckpoint(playerid))

 

Si muzes dat kamkoliv, neni povinna. Je to treba kdyz si das timer kterej zjistuje jestli si v CP tak tam musis dat tuhle podminku, ale do OnPlayerEnterCheckpoint ji davat nemusis protoze public se spusti kdyz do nej vleze, tudiz v tom CP musi bejt :d

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...