Elindítasz neki egy timert, amikor a pozícióját megváltoztatod, tetszőleges értékkel. Ugyanekkor a lefagyasztod a játékost, és mikor lejár a timer pedig felolvasztod, ilyen egyszerű. 2 függvényre van szükséged hozzá(+ egyéni dolgok amiket te készítesz):Lefagyasztás: TogglePlayerControllableSetTimerEx: SetTimerExDirekt nem írom meg a szkriptet, mert akkor sosem tanulod meg. Majd próbálkozz és ha kész egy próbaszkripted, és nem működik, és nem érted(de átnézted legalább 8x) akkor szólj és küld el a szkriptet
forward belepes(playerid);if(PlayerToPointStripped(1, playerid,-2627.4290,2024.6559,8.4660, cx,cy,cz)){//VÁROSHÁZA BE / BSSetPlayerVirtualWorld(playerid, 27);GameTextForPlayer(playerid, \"~w~Varoshaza\", 5000, 1);SetPlayerInterior(playerid, 10);SetPlayerPos(playerid,246.375991,109.245994,1003.218750);PlayerInfo[playerid][pInt] = 10;TogglePlayerControllable(playerid,0);SetTimerEx(\"belepes\", 5000, false, \"i\", playerid);}public belepes(playerid){ SendClientMessage(playerid, -1, \"Objectek betöltve\"); return 1;}
Kicsit gondolkozz, lefagyasztani már letudod, ott a függvény ugyanazzal kell felolvasztani is. Na de hol? Ez a kérdés
forward belepes(playerid);if(PlayerToPointStripped(1, playerid,-2627.4290,2024.6559,8.4660, cx,cy,cz)){//VÁROSHÁZA BE / BSSetPlayerVirtualWorld(playerid, 27);GameTextForPlayer(playerid, \"~w~Varoshaza\", 5000, 1);SetPlayerInterior(playerid, 10);SetPlayerPos(playerid,246.375991,109.245994,1003.218750);PlayerInfo[playerid][pInt] = 10;TogglePlayerControllable(playerid,0);SetTimerEx(\"belepes\", 5000, false, \"i\", playerid);}public belepes(playerid){ SendClientMessage(playerid, -1, \"Objectek betöltése\"); TogglePlayerControllable(playerid,1); return 1;}
Teszteld, jónaktűnik.
Hogy ne kelljen minden teleporthoz beirni a timert, használd az onplayerinteriorchange alatt a timert
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid){ SetTimerEx(\"spawnvedelem\", 5000, false, \"i\", playerid); SendClientMessage(playerid,-1,\"Objectek betöltése..........\"); TogglePlayerControllable(playerid,false); return 1;}
forward spawnvedelem(playerid);
public spawnvedelem(playerid){TogglePlayerControllable(playerid,true);SendClientMessage(playerid,-1,\"Objectek betöltve!\");return1;}