Nos ezt úgy oldhatod meg, hogy létrehozol egy x mp-s timert (vagy OnPlayerUpdate, bár én az elsõt ajánlom), ugyebár (OnPlayerSpawn-hoz) rakd be:
SetTimerEx(\"playerupdate\", x*1000, true, \"d\", playerid);
Majd hozd létre egy üres (azaz funkcióban illetve eljáráson kívüli) helyen így:
forward playerupdate(playerid);
public playerupdate(playerid)
{
if(IsPlayerInRangeOfPoint(playerid, 1.0, x, y, z))
{
// ide hogy mi történjen ha ott van
}
return 1;
}
Kelleni fog még két koordináta. Elmagyarázom! Elõszõr is tudnod kell, hogy a PAWN nyelven való programozás fele logika. A gondolkodásmód. Hogy hogy akarod elkészíteni a dolgokat. Na most már.
E mûvelet elvégzéséhez szükséged lesz egy függvényre.
IsPlayerInRangeOfPoint
. Errõl bõvebben itt olvashatsz: http://wiki.sa-mp.com/wiki/IsPlayerInRangeOfPoint. Egy kevéske angoltudással megérted. Mint minden függvénynek, ennek is vannak paraméterei.
(playerid, Float:range, Float:x, Float:y, Float:z)
A legelsõ paraméter a playerid. Ide egy játékos ID -je kerül. De hogy melyiké, azt te kell eldöntsd. De jelen esetben, a playerid, mivel õ maga végzi el a \"cselekvést\". A Float: Range paraméter azt jelöli, hogy az adott ponttól milyen távolságra legyen. Ezt számmal jelöljük. A maradék paraméterek, a pozíciót jelölik, amiket te tudsz elmenteni a játékban( /save, és ezt a dokumentumok mappádban találod meg ). Ezek az elõbb megemlített adott pontok. Tehát ez a függvény,
IsPlayerInRangeOfPoint
egy adott pontból való távolságot \"figyel\". Ha az õ hatókörén belül vagy, akkor történik valami. És ez a szócska, hogy if, ez a ha feltételt jelöli. Tehát:
if(IsPlayerInRangeOfPoint(playerid, 1.0, x, y, z))
Ez azt jelenti, hogy ha a játékos (playerid), a megadott koordináták 1 \"méteres\" hatósugarán belül van, történjék valami. Ha még mindig nem értesz valamit, szólj és szívesen segítek.
public OnPlayerSpawn(playerid) //ez egy függvény, ha egy játékos lespawol, történik valami...
{ //ezzel nyitjuk meg a szkriptet
SetTimerEx(\"playerupdate\", 1000, true, \"d\", playerid); //ez a timer, vagyis idõzítõ.Lényege:Ha letelik egy bizonyos idõ, mi történjen...
return 1; //visszatérés
} //lezárjuk a szkriptet
forward playerupdate(playerid); //létrehozzuk a callback -t vagyis eljárást
public playerupdate(playerid) // elkezdjük a callback -t
{
if(IsPlayerInRangeOfPoint(playerid, 1.0, x,y,z)) // errõl az elõbb beszéltem, x,y,z helyére azokat a koordinátákat rakd, amik a belépésnél vannak, az ajtó elõtt.Tehát mi történjen, ha odaér a player.
{
SetPlayerPos(playerid, x,y,z); //ide azokat a koordinátákat, ahova legyen teleportálva a player
//SetPlayerInterior(playerid, x); Ez csak akkor kell ha más interiorba akarod rakni a playert. Az x helyére az interior ID fog kerülni.
}
return 1;
}