Hier, jetzt haste ein dynamisches Zoll System:
C
#define E:: e_z
enum E::Tor
{
E::id,
Float:E::x,
Float:E::y,
Float:E::z,
Float:E::from_rX,
Float:E::from_rY,
Float:E::from_rZ,
Float:E::to_rX,
Float:E::to_rY,
Float:E::to_rZ
};
stock const zollTore[][e_zTor] = {
{Zolltor1, 2234.0056,-2216.0217,13.546, 0.0,270.0,135.0, 0.0,0.0,135.0},
{Zolltor2, 2179.1099,-2255.8748,14.7734, 0.0,0.0,135.0, 0.0,0.0,0.0} //Musst noch angeben, in welche Rotation gedreht werden soll
};
ocmd:zolltor(playerid,params[])
{
if(pInfo[playerid][pJob] != 1) return SendClientMessage(playerid,-1,"{bc4343}Du bist kein Mitarbeiter vom Zoll und kannst das Tor nicht öffnen.");
new i = GetZollStation(playerid);
if(i == -1) return SendClientMessage(playerid,-1,"Du befindest dich an keinem Zoll Tor!");
MoveDynamicObjectRot(zollTore[i][E::id], zollTore[i][E::to_rX], zollTore[i][E::to_rY], zollTore[i][E::to_rZ], true);
SetTimerEx("@checkZone", 3000, 0, "ii", playerid, i);
return 1;
}
stock GetZollStation(playerid)
{
for(new i; i<sizeof(zollTore); i++)
{
if(IsPlayerInRangeOfPoint(playerid,10.0,zollTore[i][E::x],zollTore[i][E::y],zollTore[i][E::z])) return i;
}
return -1;
}
@checkZone(p,i);@checkZone(p,i)
{
return (!IsPlayerConnected(p) || !IsPlayerInRangeOfPoint(p, 10.0,zollTore[i][E::x],zollTore[i][E::y],zollTore[i][E::z])) ? Zollzu(i) : SetTimerEx("@checkZone", 3000, 0, "ii", p,i);
}
stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ, bool:open)
{
new Float:x,Float:y,Float:z;
GetDynamicObjectPos(obj,x,y,z);
MoveDynamicObject(obj,x,y,z+((open)?(0.0001):(-0.0001)),0.0001,rX,rY,rZ);
return 1;
}
forward Zollzu (i);
public Zollzu (i)
{
MoveDynamicObjectRot(zollTore[i][E::id], zollTore[i][E::from_rX], zollTore[i][E::from_rY], zollTore[i][E::from_rZ], false);
return 1;
}
Alles anzeigen
Jetzt musst du nur oben in dein Array ein Zolltor hinzufügen und fertig