Hi Leutz,
ich will euch heute mal zeigen, wie man eigene Ein- und Ausgänge ohne Cmd macht.
Damit wir eigene Eingänge machen können, müssen die Trichter erst einmal raus.
Das geschied hier:
public OnGameModeInit()
{
DisableInteriorEnterExits();
return 1;
}
WARNUNG: Mit dem machst du nicht nur die gelben Trichter weg, nein sondern auch
die NPC's in Burgershots und Ammunations. Die Ein- und Ausgänge musst du dann
selber machen (Saven und Einfügen)!
als nächstes brauchen wir einen Timer:
forward Ports(playerid);
den Timer benennen wir:
new PortTimer;
Der Timer muss natürlich irgendwie gestartet werden.
Das machen wir unter public GamemodeInit:
public OnGameModeInit()
{
PortTimer = SetTimer("Ports", 1000, 1);
return 1;
}
Jetzt kommen wir zu den Ein- Ausgängen:
public Ports(playerid)
{
if (PlayerToPoint(1, playerid, 1555.1205, -1675.6710, 16.1953)) // PD Eingang // if (PlayerToPoint(Radius, playerid, Float:X, Float:Y, Float:Z)) // Wo der Spieler Stehen soll
{
SetPlayerInterior(playerid, 6);
SetPlayerPos(playerid, 246.7840, 63.9002, 1003.6406); // Wo der Spieler hin kommen soll
SetPlayerFacingAngle(playerid, 0.0);
}
else if (PlayerToPoint(1, playerid, 246.7282, 62.7136, 1003.6406)) // PD Ausgang
{
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, 1552.4490, -1674.9897, 16.1953);
SetPlayerFacingAngle(playerid, 90.0);
}
return 1;
}
Damit ihr wisst, wo die Ein- Ausgänge sind, machen wir noch Pickups:
public OnGameModeInit()
{
CreatePickup(1318, 23, 1555.1205, -1675.6710, 16.1953); // PD Eingang // kleiner gelber Trichter
CreatePickup(1559, 23, 246.7282, 62.7136, 1003.6406); // PD Ausgang // Weißer Pfeil
return 1;
}
Bei einem Gamemode- Serverrestart müsst ihr den Timer noch killen, da er sonnst 2x statt 1x läuft:
public OnGameModeExit()
{
KillTimer(PortTimer);
return 1;
}
Falls ihr PlayerToPoint nicht hast kommt folgendes in den Script:
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if (IsPlayerConnected(playerid))
{
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;
}
Zusammen gefasst sollte das ungefähr so aussehen:
forward Ports(playerid);
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
new PortTimer;
public OnGameModeInit()
{
DisableInteriorEnterExits();
PortTimer = SetTimer("Ports", 1000, 1);
CreatePickup(1318, 23, 1555.1205, -1675.6710, 16.1953); // PD Eingang // kleiner gelber Trichter
CreatePickup(1559, 23, 246.7282, 62.7136, 1003.6406); // PD Ausgang // Weißer Pfeil
return 1;
}
public OnGameModeExit()
{
KillTimer(PortTimer);
return 1;
}
public Ports(playerid)
{
if (PlayerToPoint(1, playerid, 1555.1205, -1675.6710, 16.1953)) // PD Eingang // if (PlayerToPoint(Radius, playerid, Float:X, Float:Y, Float:Z)) // Wo der Spieler Stehen soll
{
SetPlayerInterior(playerid, 6);
SetPlayerPos(playerid, 246.7840, 63.9002, 1003.6406); // Wo der Spieler hin kommen soll
SetPlayerFacingAngle(playerid, 0.0);
}
else if (PlayerToPoint(1, playerid, 246.7282, 62.7136, 1003.6406)) // PD Ausgang
{
SetPlayerInterior(playerid, 0);
SetPlayerPos(playerid, 1552.4490, -1674.9897, 16.1953);
SetPlayerFacingAngle(playerid, 90.0);
}
return 1;
}
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if (IsPlayerConnected(playerid))
{
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;
}
Das wars auch schon. Ich hoffe es hilft einigen von euch, vorallem den Anfängern.
Bitte nicht so harte Kritik (falls es welche geben sollte :D).
Das war mein aller erstes Tutorial
Viel Spaß noch
Mit freundlichen Grüßen
Ich