Duell System - Hilfe

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
  • Ich wollte ein Duellsystem scripten, womit man einen Spieler eine Einladung senden kann, der Spieler die dann animmt und die beiden in einen Raum geportet werden.
    Ich bekomme es aber mit dem /acccept Befehl und halb /duell Befehl nicht klar.
    Wie können nur playerid(der einlädt) pID(der eingeladen wurde) in einen Raum geporten werden?


    bis jetzt :P


    ocmd:duell(playerid,params[])
    {
    new str[64],pID;
    if(sscanf(params,"u",Duell[pID][pInvite])) return SendClientMessage(playerid,GRAU,"Benutze: /duell [SpielerName/ID]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,GRAU,"Spieler ist nicht online!");
    if(playerid == pID) return SendClientMessage(playerid,GRAU,"[FEHLER] Du kannst dich nicht selbst einladen!");
    format(str,128,"Spieler %s fordert dich zu einem Duell heraus - /accept duell um anzunehmen!",PlayerName(playerid));
    SendClientMessage(pID,TURKIS,str);
    return 1;
    }
    ocmd:accept(playerid,params[])
    {
    new str[64];

    return 1;
    }


    mfg

  • Du musst eine Playervariable erstellen
    new duell[MAX_PLAYERS];
    new induell[MAX_PLAYERS];


    ocmd:duell(playerid,params[])
    {
    new str[64],pID;
    if(sscanf(params,"u",Duell[pID][pInvite])) return SendClientMessage(playerid,GRAU,"Benutze: /duell [SpielerName/ID]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,GRAU,"Spieler ist nicht online!");
    if(playerid == pID) return SendClientMessage(playerid,GRAU,"[FEHLER] Du kannst dich nicht selbst einladen!");
    if(pID==induell[pID]) return SendClientMessage(playerid,GRAU,"Dieser spieler hat bereits ein Duell!");
    format(str,128,"Spieler %s fordert dich zu einem Duell heraus - /accept duell um anzunehmen!",PlayerName(playerid));
    SendClientMessage(pID,TURKIS,str);
    duell[pID]=1;
    return 1;
    }
    ocmd:accept(playerid,params[])
    {
    new str[64];
    if(duell[playerid]==1)
    {
    was ausgeührt werden soll
    induell[playerid]=1;
    return 1;
    }
    else if(duell[playerid]==0)
    {
    SendClientMessage(playerid,farbe,"Du hast keine duell einladung!");
    return 1;
    }
    return 1;
    }

  • ich würde erstmal eine abfrage machen durch eine zusätzliche variable ob der spieler überhaupt eine Anfrage bekommen hat.
    Dann erstellst du deine pID zB targetID global im Script und verwendest ebenfalls targetid bei /duell & /accept
    Keine Ahnung ob es so funktioniert aber würde es mal ausprobieren.

    KleineHilfe 2.0

  • ich würde erstmal eine abfrage machen durch eine zusätzliche variable ob der spieler überhaupt eine Anfrage bekommen hat.
    Dann erstellst du deine pID zB targetID global im Script und verwendest ebenfalls targetid bei /duell & /accept
    Keine Ahnung ob es so funktioniert aber würde es mal ausprobieren.

    hab ich doch induell? induell die var soll abfragen ob er im duell ist hierif(pID==induell[pID]) return SendClientMessage(playerid,GRAU,"Dieser spieler hat bereits ein Duell!");

  • if(sscanf(params,"u",Duell[pID][pInvite])) return SendClientMessage(playerid,GRAU,"Benutze: /duell [SpielerName/ID]");


    und das
    if(sscanf(params,"u",Duell[pID][pInvite])) return SendClientMessage(playerid,GRAU,"Benutze: /duell [SpielerName/ID]");


    zu
    if(sscanf(params,"u",duell)) return SendClientMessage(playerid,GRAU,"Benutze: /duell [SpielerName/ID]"); ge