Hallo,
ich bin dabei so einen kleinen Deathmatchserver zu machen und wollte so Deagle Arenen machen.
Wie kann ich den Spieler der die Arena betritt in eine andere Welt setzten und abfragen das er sich über /w in der Arena keine Waffen mehr geben kann?
Spieler in eine neue Welt setzten und Abfragen ob er in einer Arena ist
- mediumkova
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
http://wiki.sa-mp.com/wiki/SetPlayerVirtualWorld
http://wiki.sa-mp.com/wiki/GetPlayerVirtualWorldVersuchs mal erstmal ohne weitere Hilfe, wenn Fehler kommen, schreib sie hier
-
Oben eine Variable für die playerid setzen, die speichern soll in welchem/ob der Spieler in einem DM ist.
new isInDM[MAX_PLAYERS];Bei dem /DM Befehl abfragen ob der Spieler schon in einem DM ist.
Wenn ja wird eine Nachricht wie "Benutze /exit" erscheinen und der weiterer vorgang wird abgebrochen.
Sollte dieser Spieler nicht in einem DM sein erscheint die nachricht nicht, und alles unter der Abfrage wird ausgeführt.
Die Variable "isInDM" wird auf 1 gesetzt. Also ist der Spieler nun in DM 1.
Befehl /dm
{
if(isInDM[playerid] != 0)return SendClientMessage(.., "Benutze /exit");
SetPlayerPos(...);
SendClientMessage(.. ,"Willkommen im DM undso");
isInDM[playerid] = 1;
}Spoiler anzeigen Wenn man weitere DM Arenen hat kann man das genauso weiterführen, nur das dann die Variable der Arena auf 2 gesetzt wird usw.
Befehl /dm2
{
if(isInDM[playerid] != 0)return SendClientMessage(.., "Benutze /exit");
SetPlayerPos(...);
SendClientMessage(.. ,"Willkommen im DM2 undso");
isInDM[playerid] = 2;
}Spoiler anzeigen Beim /exit befehl wird abgefragt ob der Spieler in der normalen Welt ist, wenn ja dann kommt die Nachricht "Du bist in keinem DM!".
Wenn der spieler dann jedoch nicht die Variable isInDM auf 0 hat, wird er gespawnt (z.B.)
Befehl /exit
{
if(isInDM[playerid] == 0)return SendClientMessage(.., "Du bist in keinem DM!");
SpawnPlayer(...); //oder so
isInDM[playerid] = 0;
}
Und wenn der spieler den Befehl ausführt, wird abgefragt ob dieser Spieler nicht in der normalen Welt ist.
Wenn das stimmt, wird return ausgeführt und der Spieler bekommt nichts.Befehl /w
{
if(isInDM[playerid] != 0)return 1;
GivePlayerWeapon(bla bla);
usw.();
}mfg
edit:
400 Beiträge
Und ich hoffe er war hilfreich -
Ne Variable ist garnicht nötig, man kann auch einfach wie oben genannt die V-World abfragen.
-
Jop mit GePlayerVirtualWorld()
-
Komme hier leider nicht weiter.
Habe diesen Code in meinen /v Befehl geschrieben, aber man kann sich trotzdem Fahrzeuge erstellen in der Arena
GetPlayerVirtualWorld(playerid); SendClientMessage(playerid, Red, "Du kannst dir in einer Arena kein Fahrzeug erstellen");
Fehlercodes werden keine ausgespuckt.
Mein Problem ist es jetzt eigentlich nur, das der Server den Befehl weiter verwendet. -
Du musst auch irgendwo eine Abfrage machen, wo sich der Spieler befindet
if(GetPlayerVirtualWorld(playerid)) return SendClientMessage(playerid, Red, "Du kannst dir in einer Arena kein Fahrzeug erstellen");
//Und wenn er in keiner Virtuellen Welt ist..code hier drunter:mfg.
-
breadfish.de
Hat das Thema geschlossen.