Hallo Leute befehl in Dialog ?

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 Community ,
    Ich habe da mal ein Anliegen ..



    Wie würde der befehl aussehen würde man ihn in ein Dialog umwandeln wollen .
    d.h /giverang welche id möcte ich den Rang geben und welchen rang möchte ich geben .


    Hier der jetzige code ..



    Danke für die Hilfe suche jemanden der mir ab und zu mal was erklähren kann und helfen kann gerne bei Sachgemäßer erklärung und ausführlicher Hilfe bezahlung


    ocmd:contract(playerid,params[])
    {
    new pID,geld, string[200];
    if(!IsPlayerInFrac(playerid,8) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Hitman !");
    if(sscanf(params,"ud",pID,geld))return SendClientMessage(playerid,0xFF0000,"Info:/contract [Spieler ID] [Kopfgeld/Betrag]");
    if(playerid == pID) return SendClientMessage(playerid,COLOR_RED,"Du kannst dich nicht selber als Auftrag freigeben!");
    if(PlayerInfo[pID][pLevel] <=2) return SendClientMessage(playerid,COLOR_RED,"Du kannst keinen Level 1-User Kopfgeld geben!");
    if(!IsPlayerInFrac(pID,8) return SendClientMessage(playerid,COLOR_RED,"Du kannst keinen Auftragskiller ein Kopfgeld geben!");


    if(IsPlayerInFrac(pID,1) || IsPlayerInFrac(pID,2) || IsPlayerInFrac(pID,4) || IsPlayerInFrac(pID,24))
    {
    SendClientMessage(playerid,COLOR_RED,"Du kannst keinen Contract auf eine Staatliche Fraktion setzen");
    return 1;
    }
    if(geld > 50000) return SendClientMessage(playerid,COLOR_RED,"Du kannst nicht mehr als 50000$ aufeinmal als Kopfgeld setzen ");
    if(geld < 5000)return SendClientMessage(playerid,COLOR_RED,"Du musst Mindestens 5000$!");
    if(GetPlayerMoney(playerid) > geld)
    {
    GivePlayerMoney(playerid,-geld);
    PlayerInfo[pID][pContract] += geld;
    format(string, sizeof(string), "Du hast %s für %d$ zum Aufrag freigegeben.",SpielerName(pID),geld);
    SendClientMessage(playerid,COLOR_RED,string);
    format(string, sizeof(string), "||>>|| Auftrag ||<<||%s hat einen Auftrag in höhe von %d$ auf %s [ID: %d] gesetzt.",SpielerName(playerid),geld,SpielerName(pID),pID);
    SendFamilyMessage(8,COLOR_YELLOW,string);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"So viel kannst du dir nicht leisten !");
    return 1;
    }
    return 1;
    }


    //Edit ( Befehl umgeschrieben )

    Einmal editiert, zuletzt von SchwarzRot ()

  • ShowPlayerDialog
    -->Irgendwas überprüfen o.ä.
    -->ShowPlayerDialog
    ---->Irgendwas überprüfen o.ä


    Einfach von Dialog zu Dialog hangeln und zwischen durch die Informatioen verarbeiten.

    Zitat

    Schaue dir mal das hier an, das sollte dir weiterhelfen.

  • Wie würde dann die Dialoge aussehen .
    Wie ich ein Dialog mache das weiß ich das war auch nicht die Frage .


    Nur was muss ich abfragen wenn ich es so haben will .


    /contract
    Spieler ID eingeben
    Den Preis eingeben
    Contract abschicken


    Damit ich es in zukunpft auch weiß bitte ich euch einmal den Code ihr reinzuposten wie er sein müsste /- sollte .

  • So sollte es passen:
    #define DIALOG_CONTRACT_GELD 1001
    #define DIALOG_CONTRACT_ID 1002


    ocmd:contract(playerid,params[])
    {
    if(!IsPlayerInFrac(playerid,8) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Hitman !");
    ShowPlayerDialog(playerid, DIALOG_CONTRACT_ID, DIALOG_STYLE_INPUT, "Spieler ID", "Bitte gebe die Spieler-ID ein:", "Ok", "Abbrechen");
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_CONTRACT_ID)
    {
    if(!response) return 1;
    new pID;
    if(sscanf(inputtext,"u",pID))
    {
    return ShowPlayerDialog(playerid, DIALOG_CONTRACT_ID, DIALOG_STYLE_INPUT, "Spieler ID", "Bitte gebe die Spieler-ID ein:", "Ok", "Abbrechen");
    }
    if(playerid == pID)
    {
    ShowPlayerDialog(playerid, DIALOG_CONTRACT_ID, DIALOG_STYLE_INPUT, "Spieler ID", "Bitte gebe die Spieler-ID ein:", "Ok", "Abbrechen");
    return SendClientMessage(playerid,COLOR_RED,"Du kannst dich nicht selber als Auftrag freigeben!");
    }
    if(PlayerInfo[pID][pLevel] < 2)
    {
    ShowPlayerDialog(playerid, DIALOG_CONTRACT_ID, DIALOG_STYLE_INPUT, "Spieler ID", "Bitte gebe die Spieler-ID ein:", "Ok", "Abbrechen");
    return SendClientMessage(playerid,COLOR_RED,"Du kannst keinen Level 1-User Kopfgeld geben!");
    }
    if(!IsPlayerInFrac(pID,8))
    {
    ShowPlayerDialog(playerid, DIALOG_CONTRACT_ID, DIALOG_STYLE_INPUT, "Spieler ID", "Bitte gebe die Spieler-ID ein:", "Ok", "Abbrechen");
    return SendClientMessage(playerid,COLOR_RED,"Du kannst keinen Auftragskiller ein Kopfgeld geben!");
    }
    if(IsPlayerInFrac(pID,1) || IsPlayerInFrac(pID,2) || IsPlayerInFrac(pID,4) || IsPlayerInFrac(pID,24))
    {
    ShowPlayerDialog(playerid, DIALOG_CONTRACT_ID, DIALOG_STYLE_INPUT, "Spieler ID", "Bitte gebe die Spieler-ID ein:", "Ok", "Abbrechen");
    return SendClientMessage(playerid,COLOR_RED,"Du kannst keinen Contract auf eine Staatliche Fraktion setzen");
    }
    SetPVarInt(playerid, "pID", pID);
    ShowPlayerDialog(playerid, DIALOG_CONTRACT_GELD, DIALOG_STYLE_INPUT, "Geld", "Bitte gebe den Geldbetrag ein:", "Ok", "Zurück");
    return 1;
    }
    if(dialogid == DIALOG_CONTRACT_GELD)
    {
    if(!response)
    {
    ShowPlayerDialog(playerid, DIALOG_CONTRACT_ID, DIALOG_STYLE_INPUT, "Spieler ID", "Bitte gebe die Spieler-ID ein:", "Ok", "Abbrechen");
    return 1;
    }
    if(!strlen(inputtext))
    {
    return ShowPlayerDialog(playerid, DIALOG_CONTRACT_GELD, DIALOG_STYLE_INPUT, "Geld", "Bitte gebe den Geldbetrag ein:", "Ok", "Zurück");
    }
    new geld = strval(inputtext);
    if(geld > 50000)
    {
    ShowPlayerDialog(playerid, DIALOG_CONTRACT_GELD, DIALOG_STYLE_INPUT, "Geld", "Bitte gebe den Geldbetrag ein:", "Ok", "Zurück");
    return SendClientMessage(playerid,COLOR_RED,"Du kannst nicht mehr als 50000$ aufeinmal als Kopfgeld setzen ");
    }
    if(geld < 5000)
    {
    ShowPlayerDialog(playerid, DIALOG_CONTRACT_GELD, DIALOG_STYLE_INPUT, "Geld", "Bitte gebe den Geldbetrag ein:", "Ok", "Zurück");
    return SendClientMessage(playerid,COLOR_RED,"Du musst Mindestens 5000$!");
    }
    if(GetPlayerMoney(playerid) > geld)
    {
    new pID = GetPVarInt(playerid, "pID"), string[145];
    GivePlayerMoney(playerid,-geld);
    PlayerInfo[pID][pContract] += geld;
    format(string, sizeof(string), "Du hast %s für %d$ zum Aufrag freigegeben.",SpielerName(pID),geld);
    SendClientMessage(playerid,COLOR_RED,string);
    format(string, sizeof(string), "||>>|| Auftrag ||<<||%s hat einen Auftrag in höhe von %d$ auf %s [ID: %d] gesetzt.",SpielerName(playerid),geld,SpielerName(pID),pID);
    SendFamilyMessage(8,COLOR_YELLOW,string);
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_CONTRACT_GELD, DIALOG_STYLE_INPUT, "Geld", "Bitte gebe den Geldbetrag ein:", "Ok", "Abbrechen");
    SendClientMessage(playerid,COLOR_RED,"So viel kannst du dir nicht leisten !");
    return 1;
    }
    }
    return 1;
    }