Duell System funktioniert nicht

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
  • hey,
    also die Person die /annehmen eingibt wird geportet aber der die Anfrage gesendet hat nicht, an was liegt das?
    hier die befehle



    ocmd:duell(playerid,params[])
    {
    if(Map[playerid] == 0)
    {
    new pID,str[128];
    if(sscanf(params,"u",pID)) 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,"Du kannst dir keine Anfrage senden!");
    format(str,sizeof(str),"[Duell] %s fordert dich zu einem Duell auf!",SpielerName(playerid));
    SendClientMessage(pID,GELB,str);
    playerid = pID = 1;
    }
    else
    {
    SendClientMessage(playerid,GRAU,"Du bist schon in einer Arena. Benutze /l");
    }
    return 1;
    }

    ocmd:annehmen(playerid,params[])
    {
    if(Map[playerid] == 0)
    {
    new pID,str[128];
    if(pID == playerid)
    {
    SetPlayerPos(playerid,774.213989,-48.924297,1000.585937);
    SetPlayerPos(pID,774.213989,-48.924297,1000.585937);
    SetPlayerInterior(playerid,6);
    SetPlayerInterior(pID,6);
    format(str,sizeof(str),"[Duell] %s ist im Kampf gegen %s!",SpielerName(pID),SpielerName(playerid));
    SendClientMessageToAll(GELB,str);
    duelaktiv[playerid] = 1;
    duelaktiv[pID] = 1;
    }
    else
    {
    SendClientMessage(playerid,GRAU,"Dir hat keiner eine Anfrage gesendet!");
    }
    }
    else
    {
    SendClientMessage(playerid,GRAU,"Du bist schon in einer Arena. Benutze /l");
    }
    return 1;
    }

  • Du musst bei der Anfrage eine Variable erstellen bsp.: DuellGegner[pID] = playerid
    und bei dem annehmen pID = DuellGegner[playerid] abfragen.


    Außerdem sollte sich die Pos unterscheiden da die beiden Spieler sonst ineinander spawnen


    Also:
    ocmd:duell(playerid,params[])
    {
    if(Map[playerid] == 0)
    {
    new pID,str[128];
    if(sscanf(params,"u",pID)) 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,"Du kannst dir keine Anfrage senden!");
    format(str,sizeof(str),"[Duell] %s fordert dich zu einem Duell auf!",SpielerName(playerid));
    SendClientMessage(pID,GELB,str);
    //playerid = pID = 1; ???????? WTF
    DuellGegner[pID] = playerid;
    }
    else
    {
    SendClientMessage(playerid,GRAU,"Du bist schon in einer Arena. Benutze /l");
    }
    return 1;
    }


    ocmd:annehmen(playerid,params[])
    {
    if(Map[playerid] == 0)
    {
    new pID,str[128];
    pID = DuellGegner[playerid];
    if(!pID == playerid)
    {
    SetPlayerPos(playerid,774.213989,-48.924297,1000.585937);
    SetPlayerPos(pID,770.213989,-50.924297,1000.585937);
    SetPlayerInterior(playerid,6);
    SetPlayerInterior(pID,6);
    format(str,sizeof(str),"[Duell] %s ist im Kampf gegen %s!",SpielerName(pID),SpielerName(playerid));
    SendClientMessageToAll(GELB,str);
    duelaktiv[playerid] = 1;
    duelaktiv[pID] = 1;
    }
    else
    {
    SendClientMessage(playerid,GRAU,"Dir hat keiner eine Anfrage gesendet!");
    }
    }
    else
    {
    SendClientMessage(playerid,GRAU,"Du bist schon in einer Arena. Benutze /l");
    }
    return 1;
    }