DM System

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
  • Hallo!


    Ich hätte gerademal eine Frage zu einem DM System. Ich würde gerne ein /dm
    System erstellen. Ich habe auch schon Plan wie, und meine es könnte funktionieren.


    Doch wie mach ich eine Abfrage, ob der User schon im /dm ist? Und wie mache
    ich einen /exitdm


    Ich arbeite mit ocmd.


    Danke im Vorraus!

  • Dafür musst du eine Variable Global (Über OnGameModeInit) erstellen die so aussehen könnte:
    new InArnea[MAX_PLAYERS];
    Diese Variable kannst du dann beim betreten der Arena auf 1 setzten.
    InArena[playerid] = 1;
    Um zu verhindern das der Spieler die Arena zweimal betreten kann ohne /exit eingeben zu müssen erstellst du eine if Abfrage die das verhindert.
    if(InArena[playerid] == 1)
    {
    SendClientMessage(playerid,FARBE,"Du bist schon in einer Arena");
    }


    So sieht das dann auch beim /exit Befehl aus
    if(InArena[playerid] == 1)
    {
    SetPlayerPos(playerid,x,y,z);
    SendClientMessage(playerid,FARBE,"Du hast die Arena verlassen");
    }
    else
    {
    SendClientMessage(playerid,FARBE,"Du bist in keiner Arena");
    }
    Natürlich musst du dann die Variable wieder auf 0 setzten, damit der Spieler wieder rein kommt
    InArena[playerid] = 0;

  • Bekomme diese Errors:


    error 017: undefined symbol "InArena"


    error 001: expected token: ";", but found "]"


    error 029: invalid expression, assumed zero


    Alle in dieser Zeile:


    InArena[playerid] = 1;
    Habe ganz oben


    new InArena[MAX_PLAYERS]


    gemacht. Was mache ich falsch?


  • ocmd:dm(playerid,params[])
    {
    {
    if(InArena[playerid] == 1))
    {
    SendClientMessage(playerid,ROT,"SYSTEM: Du bist schon in einer Arena!");
    }
    else
    {
    SetPlayerVirtualWorld(playerid, 120);
    SendClientMessage(playerid, GRÜN, "SYSTEM: Erfolgreich in die DM-Arena teleportiert!");
    }
    }
    }



    ocmd:dmexit(playerid, params[])
    {
    if(InArena[playerid] == 1))
    {
    SetPlayerPos(playerid,2343.5691,-1164.5767,27.2251);
    SendClientMessage(playerid,ROT,"SYSTEM: Du hast die Arena verlassen!");
    }
    else
    {
    SendClientMessage(playerid,ROT,"SYSTEM: Du bist in keiner Arena!");
    }
    InArena[playerid]==0;
    SetPlayerVirtualWorld(playerid, 0);
    }


    Das sind meine Befehle!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Du hast da ein paar Klammern zu viel
    ocmd:dm(playerid,params[])
    {
    if(InArena[playerid] == 1)
    {
    SendClientMessage(playerid,ROT,"SYSTEM: Du bist schon in einer Arena!");
    }
    else
    {
    SetPlayerVirtualWorld(playerid, 120);
    SendClientMessage(playerid, GRÜN, "SYSTEM: Erfolgreich in die DM-Arena teleportiert!");
    }
    return 1;
    }
    //Edit:
    ocmd:dmexit(playerid, params[])
    {
    if(InArena[playerid] == 1)
    {
    SetPlayerPos(playerid,2343.5691,-1164.5767,27.2251);
    SendClientMessage(playerid,ROT,"SYSTEM: Du hast die Arena verlassen!");
    InArena[playerid] = 0;
    SetPlayerVirtualWorld(playerid, 0);
    }
    else
    {
    SendClientMessage(playerid,ROT,"SYSTEM: Du bist in keiner Arena!");
    }
    return 1;
    }
    Im anderem Befehl waren auch Fehler

  • Immernoch Errors: Immer bei dem hier:


    if(InArena[playerid] == 1))


    In dieser Zeile..


    //Edit:


    Jo hab keine Errors mehr. Hatte mich beim new verschrieben..
    Klappt alles, danke für eure Hilfe! :P


    Habe jetzt auch if und else komplett verstanden.
    Ich wünsche euch ne gute Nacht. ^^ bb