/accept *Wort* ?

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
  • Guten Tag liebe Community...


    Ich habe mal ne Frage....


    Wie kann man einen Befehl machen mit /accept *wort* ...


    Ich habe die Anfrage schon geschrieben :S


    Könnte mir wer helfen?


    ocmd:duell(playerid,params[])
    {
    new pID,string[128];
    if(sscanf(params,"i",pID))return SendClientMessage(playerid,BLAU,"/duell [id]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Dieser Spieler ist garnicht online!");
    format(string,sizeof(string),"Server: Du wurdest von ID:%d zu einem Duell herausgefordert!\nTippe /accept duell um das Duell anzunehmen!",playerid);
    SendClientMessage(pID,ROT,string);
    format(string,sizeof(string),"Server: Du hast ID:%d zu einem Duell herausgefordert!\nDu wirst sofort eine Antwort bekommen!",pID);
    SendClientMessage(playerid,GRÜN,string);
    return 1;
    }

  • Mach zb new blalbla[maxplayers], mit dem Befehl setzt du es auf 1, für den Spieler dem du die anfrage schicksst.
    Wenn er dann den Befehl eingibbst um anzunehmen fragst du ab ob Blabla auf 1 ist.

  • Du machst beistpiel:
    new Duellanfrage[MAX_PLAYERS];


    Und unter OnPlayerConnect machst du Duellanfrage[playerid]=0;


    Dann mit deinem Befehl da, baust du das ein.
    Duellanfrage[giveplayerid]=1;
    Und mit dem befehl zum annehmen deiner anfrage fragst du ab:
    If(Duellanfrage[playerid]==1)
    {
    // Code
    }
    else
    {
    SendClientMessage(playerid,FARBE," Du hast keine Anfrage erhalten");
    return 1;
    }


    Und dann halt was dannach passieren würde

  • enum Vars
    {
    DuelRequest
    }


    new PlayerVars[MAX_PLAYERS][Vars]; // Erstellen einer Variable, die später für /accept benötigt wird


    public OnPlayerConnect(playerid)
    {
    PlayerVars[playerid][DuelRequest] = -1;
    return 1;
    }


    ocmd:duell(playerid,params[])
    {
    new pID,string[128];
    if(sscanf(params,"i",pID))return SendClientMessage(playerid,BLAU,"/duell [id]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Dieser Spieler ist garnicht online!");
    format(string,sizeof(string),"Server: Du wurdest von ID:%d zu einem Duell herausgefordert!\nTippe /accept duell um das Duell anzunehmen!",playerid);
    SendClientMessage(pID,ROT,string);
    format(string,sizeof(string),"Server: Du hast ID:%d zu einem Duell herausgefordert!\nDu wirst sofort eine Antwort bekommen!",pID);
    SendClientMessage(playerid,GRÜN,string);
    // Zuweisung der Variable für den betreffenden Spieler
    return 1;
    }


    ocmd:accept(playerid,params[])
    {
    if(PlayerVars[playerid][DuelRequest] == -1) return SendClientMessage(playerid,BLAU,"Du hast von niemandem eine Duellanfrage bekommen.");
    new option[20],string[128];
    if(sscanf(params,"s[20]",option))return SendClientMessage(playerid,BLAU,"/accept [Auswahl] (Zur Verfügung: duell)");
    //Abfrage, ob "duell" mit option übereinstimmt
    // Wenn ja, Duel mit playerid und der Variable starten
    return 1;
    }


    Ein bisschen musst du natürlich auch selbst machen :p
    //Edit: @Deadwalker: Das Script weiß in diesem Fall aber nicht, gegen wen das Duell stattfinden soll.


    Grüße,
    tonyalva

  • ich habs jetzt so...


    ocmd:duell(playerid,params[])
    {
    new pID,string[128];
    if(sscanf(params,"i",pID))return SendClientMessage(playerid,BLAU,"/duell [id]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"Dieser Spieler ist garnicht online!");
    format(string,sizeof(string),"Server: Du wurdest von ID:%d zu einem Duell herausgefordert!\nTippe /accept duell um das Duell anzunehmen!",playerid);
    SendClientMessage(pID,ROT,string);
    format(string,sizeof(string),"Server: Du hast ID:%d zu einem Duell herausgefordert!\nDu wirst sofort eine Antwort bekommen!",pID);
    SendClientMessage(playerid,GRÜN,string);
    Duellanfrage[playerid]=1;
    Duellanfrage[pID]=1;
    return 1;
    }


    aber wie mach ich, dass die beiden jetzt geportet werden?
    Also, die ID , die angefragt hat... :S

  • Wie gesagt, ich habe dir einen umfassenden Beitrag dazu geschrieben.
    Du musst in einer Variable die ID des herausgeforderten Spielers speichern.


    Grüße,
    tonyalva

    Sorry, aber so richtig hab ich das bei dir nicht verstanden :S


    Gibts da kein tut zu? :S
    Oder mir einfach das /accept duell schreiben? :S

  • if(strcmp(cmd, "/accept", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new x_nr[256];
    x_nr = strtok(cmdtext, idx);
    if(!strlen(x_nr)) {
    SendClientMessage(playerid, COLOR_WHITE, "Benutze: /accept [Befehl]");
    SendClientMessage(playerid, COLOR_WHITE, "Befehle: duell, lala");
    return 1;
    }
    if(strcmp(x_nr,"duell",true) == 0)
    {
    /* Was passieren soll */
    return 1;
    }
    else if(strcmp(x_nr,"lala",true) == 0)
    {
    /* Was passieren soll */
    return 1;
    }


    Ich hab diesen Thread nur überflogen, ich hoffe dass ist was du meinst :P