Eloször is szükséged lesz egy idozítore.
new Gate; // Mód tetejére
public OnGameModeInit()
{
Gate = CreateObject(...); // Object létrehozása
return 1;
}
public OnPlayerConnect ( playerid ) return SetTimerEx ( \"OpenGate\", 1000, true , \"d\", playerid );
És a függvény.:
forward OpenGate();
public OpenGate()
{
if(PlayerToPoint(13, playerid, X, Y, Z)) // Ez az a pozíció ahol, ha a játékos van kinyilallik a kapu
{
MoveObject(Gate, X,Y,Z, 3); // Nyitva
}
else
{
MoveObject(Gate, X,Y,Z, 3); // Zárva
}
}
Másold be úgy, hogy más funkciót ne zavarjon...
Hogy muködjön szükséged lesz a PlayerToPoint függvényre.:
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}
·· Ezt másold be a mód aljára, vagy oda ahol nem zavar más funkciót.
0.2X és 0.3a -val is kompatibilis. :)
Remélem segítettem. ;)
Szerk.: Javítva! -
2010.6.15
#include <a_samp>
new Gate; // Mód tetejére
forward OpenGate();
public OnGameModeInit()
{
SetTimerEx(\"OpenGate\", 1000, true , \"b\");
Gate = CreateObject(...); // Object létrehozása
return 1;
}
public OpenGate()
{
if(PlayerToPoint(13, playerid, X, Y, Z)) // Ez az a pozíció ahol, ha a játékos van kinyilallik a kapu
{
MoveObject(Gate, X,Y,Z, 3); // Nyitva
}
else
{
MoveObject(Gate, X,Y,Z, 3); // Zárva
}
}
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}
Csabesz a playerid felesleges ha azt akarja hogyminden játékosra igaz legyen.
És a SetTimerEx-be nem vok biztos h jól írtam mert még nem használtam.
#include <a_samp>
new Gate; // Mód tetejére
forward OpenGate();
public OnGameModeInit()
{
SetTimerEx(\"OpenGate\", 1000, true , \"b\");
Gate = CreateObject(...); // Object létrehozása
return 1;
}
public OpenGate()
{
if(PlayerToPoint(13, playerid, X, Y, Z)) // Ez az a pozíció ahol, ha a játékos van kinyilallik a kapu
{
MoveObject(Gate, X,Y,Z, 3); // Nyitva
}
else
{
MoveObject(Gate, X,Y,Z, 3); // Zárva
}
}
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}
Csabesz a playerid felesleges ha azt akarja hogyminden játékosra igaz legyen.
És a SetTimerEx-be nem vok biztos h jól írtam mert még nem használtam.
Az nem is jó, inkább így:
OnPlayerConnect alá:
SetTimerEx(\"OpenGate\", 1000, true , \"d\", playerid);