Dialog erstellen und weiterführen // Geldstand anzeigen lassen

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 Leser


    ich habe ein Dialog erstellt


    if(strcmp(cmdtext,"/fcarlist",true)==0)
    {
    new dialogstring3[600],string1[300];
    if(GetPlayerLeader(playerid)) {
    for(new fc;fc<sizeof(FactionCars);fc++) {
    if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611) {
    if(FactionCars[fc][fFaction][0] == GetPlayerFaction(playerid)) {
    format(string1, sizeof(string1),"%s (%d)\n",fCarName[FactionCars[fc][fVehid]-400],FactionCars[fc][fCarid]);
    SendClientMessage(playerid,COLOR_GRAD1,string1);
    strcat(dialogstring3,string1);
    strdel(string1,987,sizeof(string1));
    }
    }
    }
    }else SendClientMessage(playerid,FACTION_COL_GREY,"Du bist nicht berechtigt diesen Befehl anzuwenden.");
    ShowPlayerDialog(playerid, DIALOG_FCARS, DIALOG_STYLE_LIST, "Fahrzeuge deiner Fraktion:", dialogstring3, "Auswählen", "Beenden");
    return 1;
    }


    Diesen Dialog möchte ich, dass er hier wieder ausgeführt wird


    if(dialogid == DIALOG_FACTION)
    {
    if(response == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_FACTION, DIALOG_STYLE_LIST, "Fraktionsverwaltung:", "Geldstand\nSkin ändern\nRanknamen ändern\nGehalt ändern\nFahrzeuge","Auswählen","Beenden");
    return 1;
    }
    if(response == 1)
    {
    if(listitem == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_GELSTAND, DIALOG_STYLE_MSGBOX, "Geldstand:","Derzeit sind $%d in der Fraktionskasse.","", "Zurück");
    }
    if(listitem == 1)
    {
    ShowPlayerDialog(playerid, DIALOG_FSKINS, DIALOG_STYLE_LIST, "Skins ändern:","Rank 1\nRank 2\nRank 3\nRank 4\n Rank 5\nRank 6\nColeader\nLeader", "Auswählen", "Zurück");
    }
    if(listitem == 2)
    {
    ShowPlayerDialog(playerid, DIALOG_FRANK, DIALOG_STYLE_MSGBOX, "Ranknamen einstellen:", "Rank 1\nRank 2\nRank 3\nRank 4\n Rank 5\nRank 6\nColeader\nLeader", "Auswählen", "Zurück");
    }
    if(listitem == 3)
    {
    ShowPlayerDialog(playerid, DIALOG_FGEHALT, DIALOG_STYLE_LIST, "Gehalt ändern:", "Rank 1\nRank 2\nRank 3\nRank 4\n Rank 5\nRank 6\nColeader\nLeader", "Auswählen", "Zurück");
    }
    if(listitem == 4)
    {
    ShowPlayerDialog(playerid, DIALOG_FCARS, DIALOG_STYLE_LIST, "Fahrzeuge:","", "Auswählen", "Zurück");
    }
    }


    Beim letzten listitem 4 Fahrzeuge. Wenn man auf Fahrzeuge klickt, dass sich dann der Dialog siehe oben öffnet.


    Ich würde mich über eine nette und hilfsbereite Antwort freuen



    mfg Fabii

    Einmal editiert, zuletzt von FabiixD ()

  • Haha, ne kann sein das ich es schlecht erklärt habe


    Also oben habe ich den Dialog DIALOG_FCARS erstellt, wenn man /fcarlist macht kommt ein DIALO_LIST wo dann alle Fahrzeuge der Fraktion sieht.


    nun dann habe ich noch den Befehl /faction eingefügt womit man die Fraktion verwalten kann, siehe 2ten Code,


    Ich möchte dass wenn man /faction eingibt dann auf Fahrzeuge klickt der DIALOG_FCARS sich öffnet und angezeigt wird


    Ich hoffe das ich das so gut erklärt habe



    mfg

  • Der Code ist zwar etwas schlecht eingerückt, aber ich glaube das ist dass was du wolltest ^^
    if(dialogid == DIALOG_FACTION)
    {
    if(response == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_FACTION, DIALOG_STYLE_LIST, "Fraktionsverwaltung:", "Geldstand\nSkin ändern\nRanknamen ändern\nGehalt ändern\nFahrzeuge","Auswählen","Beenden");
    return 1;
    }
    if(response == 1)
    {
    if(listitem == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_GELSTAND, DIALOG_STYLE_MSGBOX, "Geldstand:","Derzeit sind $%d in der Fraktionskasse.","", "Zurück");
    }
    if(listitem == 1)
    {
    ShowPlayerDialog(playerid, DIALOG_FSKINS, DIALOG_STYLE_LIST, "Skins ändern:","Rank 1\nRank 2\nRank 3\nRank 4\n Rank 5\nRank 6\nColeader\nLeader", "Auswählen", "Zurück");
    }
    if(listitem == 2)
    {
    ShowPlayerDialog(playerid, DIALOG_FRANK, DIALOG_STYLE_MSGBOX, "Ranknamen einstellen:", "Rank 1\nRank 2\nRank 3\nRank 4\n Rank 5\nRank 6\nColeader\nLeader", "Auswählen", "Zurück");
    }
    if(listitem == 3)
    {
    ShowPlayerDialog(playerid, DIALOG_FGEHALT, DIALOG_STYLE_LIST, "Gehalt ändern:", "Rank 1\nRank 2\nRank 3\nRank 4\n Rank 5\nRank 6\nColeader\nLeader", "Auswählen", "Zurück");
    }
    if(listitem == 4)
    {
    new dialogstring3[600],string1[300];
    if(GetPlayerLeader(playerid)) {
    for(new fc;fc<sizeof(FactionCars);fc++) {
    if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611) {
    if(FactionCars[fc][fFaction][0] == GetPlayerFaction(playerid)) {
    format(string1, sizeof(string1),"%s (%d)\n",fCarName[FactionCars[fc][fVehid]-400],FactionCars[fc][fCarid]);
    SendClientMessage(playerid,COLOR_GRAD1,string1);
    strcat(dialogstring3,string1);
    strdel(string1,987,sizeof(string1));
    }
    }
    }
    }else SendClientMessage(playerid,FACTION_COL_GREY,"Du bist nicht berechtigt diesen Befehl anzuwenden.");
    ShowPlayerDialog(playerid, DIALOG_FCARS, DIALOG_STYLE_LIST, "Fahrzeuge deiner Fraktion:", dialogstring3, "Auswählen", "Beenden");
    }
    }

    Windows ist wie ein U-Boot, öffnest du ein Fenster hast du ein Problem.

  • Hm ... Was funktioniert denn genau nicht?
    Ich hab das jetzt so verstanden dass wenn man im Dialog auf den untersten Eintrag klick, soll das gleiche passieren wir mit dem Befehl /fcarlist


    Oder hab ich das jetzt komplett falsch verstanden? :D

    Windows ist wie ein U-Boot, öffnest du ein Fenster hast du ein Problem.

  • Sorry geht leider nicht, Teamviewer benutze ich nicht und Skype naja ohne Sound am PC etwas schlecht bei mir Zurzeit. ;) :D


    Aber, vielleicht hilft das ja:
    CallLocalFunction("OnPlayerCommandText", "ds", playerid, "/fcarlist");
    Einfach mal unter "if(listitem == 4)" einfügen.


    Vielleicht klappt es ja dann. ;)

    Windows ist wie ein U-Boot, öffnest du ein Fenster hast du ein Problem.

  • Hey, sry das ich jetz ein verwirenden Aufwand betrieben habe. ist schon spät^^ habs geschafft


    Ich danke dir, dein obere Tipp war richtig habe nur falsch eingetragen


    ich danke dir...


    Jetz zu einem weiteren Problem :D , Ich weiß nicht ob diese Probkeme an der Uhrzeit liegen^^


    if(strcmp(cmd,"/fkasse",true) == 0)
    {
    new fraktion = 0;
    if(PlayerInfo[playerid][pMember] > 0) fraktion = PlayerInfo[playerid][pMember] - 1;
    if(PlayerInfo[playerid][pLeader] > 0) fraktion = PlayerInfo[playerid][pLeader] - 1;
    if(fraktion >= 0)
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_GRAD5," /fkasse [einzahlen/auszahlen] [Betrag]");
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]); //BLUB
    SendClientMessage(playerid,COLOR_GRAD5,string);
    return 1;
    }
    if(strcmp(tmp,"einzahlen",true) == 0)
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_GRAD5," /fkasse einzahlen [Betrag]");
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_GRAD5,string);
    return 1;
    }
    new amount = strval(tmp);
    if(amount < 0 || amount > 1000000) return SendClientMessage(playerid,COLOR_WHITE," Bitte nur Summen in Höhe von 1 bis 1 Million Dollar!");
    if(GetPlayerMoney(playerid) < amount) return SendClientMessage(playerid,COLOR_WHITE," Du hast nicht soviel Geld um es einzuzahlen!");
    FraktionsKasse[fraktion] += amount;
    GivePlayerMoney(playerid,-amount);
    format(string,sizeof(string)," Du hast $%d in die Fraktionskasse eingezahlt! Total: $%d",amount,FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_WHITE,string);
    format(string,sizeof(string)," %s hat $%d in die Fraktionskasse eingezahlt! Total: $%d",sendername,amount,FraktionsKasse[fraktion]);
    SendLeaderMSG(fraktion+1,COLOR_LIGHTBLUE,string);
    SaveFraktionsKassen();
    }
    /*else if(strcmp(tmp,"auszahlen",true) == 0)
    {
    tmp = strtok(cmdtext,idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,COLOR_GRAD5," /fkasse auszahlen [Betrag]");
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_GRAD5,string);
    return 1;
    }
    new amount = strval(tmp);
    if(PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid,COLOR_WHITE," Nur Leader dürfen Geld aus der Fraktionskasse nehmen!");
    if(amount < 0 || amount > 1000000) return SendClientMessage(playerid,COLOR_WHITE," Bitte nur Summen in Höhe von 1 bis 1 Million Dollar!");
    if((FraktionsKasse[fraktion] - amount) < 0) return SendClientMessage(playerid,COLOR_WHITE," Du kannst keine Schulden machen!");
    FraktionsKasse[fraktion] -= amount;
    GivePlayerMoney(playerid,amount);
    format(string,sizeof(string)," Du hast $%d aus der Fraktionskasse genommen! Total: $%d",amount,FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_WHITE,string);
    format(string,sizeof(string)," %s hat $%d aus der Fraktionskasse genommen! Total: $%d",sendername,amount,FraktionsKasse[fraktion]);
    SendLeaderMSG(fraktion+1,COLOR_LIGHTBLUE,string);
    SaveFraktionsKassen();
    }*/
    else
    {
    SendClientMessage(playerid,COLOR_GRAD5," /fkasse [einzahlen/auszahlen] [Betrag]");
    format(string,sizeof(string)," Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    SendClientMessage(playerid,COLOR_GRAD5,string);
    }
    }
    else SendClientMessage(playerid,COLOR_WHITE," Du bist in gar keiner Fraktion!");
    return 1;
    }


    Soll wiedereinmal unter der Funktion Geldstand unter faction verfügbar sein


    if(dialogid == DIALOG_FACTION)
    {
    if(response == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_FACTION, DIALOG_STYLE_LIST, "Fraktionsverwaltung:", "Geldstand\nSkin ändern\nRanknamen ändern\nGehalt ändern\nFahrzeuge","Auswählen","Beenden");
    return 1;
    }
    if(response == 1)
    {
    if(listitem == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_GELSTAND, DIALOG_STYLE_MSGBOX, "Geldstand:","Derzeit sind $%d in der Fraktionskasse.","", "Zurück");
    }


    Meine Frage jetzt wie stelle ich ein, dass da bei $%d der aktuelle Betrag der Fkasse steht?


    mfg

  • Einfach den Inhalt des Befehls, in die entsprechende Stelle vom Dialog einfügen. ;)


    // Edit: Sorry, hab übersehen dass es diesmal etwas anders ist. (Liegt an der Uhrzeit...)

    Windows ist wie ein U-Boot, öffnest du ein Fenster hast du ein Problem.

  • Ich denke mal so:


    if(dialogid == DIALOG_FACTION)
    {
    if(response == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_FACTION, DIALOG_STYLE_LIST, "Fraktionsverwaltung:", "Geldstand\nSkin ändern\nRanknamen ändern\nGehalt ändern\nFahrzeuge","Auswählen","Beenden");
    return 1;
    }
    if(response == 1)
    {
    if(listitem == 0)
    {
    new fraktion = 0;
    if(PlayerInfo[playerid][pMember] > 0) fraktion = PlayerInfo[playerid][pMember] - 1;
    if(PlayerInfo[playerid][pLeader] > 0) fraktion = PlayerInfo[playerid][pLeader] - 1;


    new string[129];
    format(string,sizeof(string),"Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    ShowPlayerDialog(playerid, DIALOG_GELSTAND, DIALOG_STYLE_MSGBOX, "Geldstand:","Derzeit sind $%d in der Fraktionskasse.","", "Zurück");
    }

    Windows ist wie ein U-Boot, öffnest du ein Fenster hast du ein Problem.

  • Ups, mein Fehler. :D


    Änder mal bei "ShowPlayerDialog"
    "Derzeit sind $%d in der Fraktionskasse!"


    In das hier:
    string


    (Sorry, ist schon so spät ^^)


    Bzw. Hier der komplette Code
    if(dialogid == DIALOG_FACTION)
    {
    if(response == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_FACTION, DIALOG_STYLE_LIST, "Fraktionsverwaltung:", "Geldstand\nSkin ändern\nRanknamen ändern\nGehalt ändern\nFahrzeuge","Auswählen","Beenden");
    return 1;
    }
    if(response == 1)
    {
    if(listitem == 0)
    {
    new fraktion = 0;
    if(PlayerInfo[playerid][pMember] > 0) fraktion = PlayerInfo[playerid][pMember] - 1;
    if(PlayerInfo[playerid][pLeader] > 0) fraktion = PlayerInfo[playerid][pLeader] - 1;

    Bzw. Hier der komplette Code
    new string[128];
    format(string,sizeof(string),"Derzeit sind $%d in der Fraktionskasse!",FraktionsKasse[fraktion]);
    ShowPlayerDialog(playerid, DIALOG_GELSTAND, DIALOG_STYLE_MSGBOX, "Geldstand:",string,"", "Zurück");
    }

    Windows ist wie ein U-Boot, öffnest du ein Fenster hast du ein Problem.

  • Es hat geklappt :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup: :thumbup:


    FREU, jetz bin ich wieder wach, fuu da sehe ich noch ein Prolem ocmd^^


    ocmd:faction(playerid,params[])
    {
    ShowPlayerDialog(playerid, DIALOG_FACTION, DIALOG_STYLE_LIST, "Fraktionsverwaltung:", "Geldstand\nSkin ändern\nRanknamen ändern\nGehalt ändern\nFahrzeuge","Auswählen","Beenden");
    }


    der befehl soll nur als Leader ausgeführt werden, wenn dein Member dies macht soll da stehen du bist nicht befugt



    mfg

  • So? :D
    ocmd:faction(playerid,params[])
    {
    if(PlayerInfo[playerid][pLeader] > 0)
    {
    ShowPlayerDialog(playerid, DIALOG_FACTION, DIALOG_STYLE_LIST, "Fraktionsverwaltung:", "Geldstand\nSkin ändern\nRanknamen ändern\nGehalt ändern\nFahrzeuge","Auswählen","Beenden");
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du bist nicht befugt, diesen Befehl zu nutzen.");
    }
    return 1;
    }

    Windows ist wie ein U-Boot, öffnest du ein Fenster hast du ein Problem.

  • Och ich danke dir vielmals


    2 Fragen habe ich noch. wie ist es möglich, bei Geldstand MSG BOX
    "Einzahlen","Zurück"
    Das sollen die beiden buttons bedeuten das wenn man aus Einzahlen klickt das man einzahlen kann,,


    und unter Faction dann bei Ranknamen die verscheidenen Ranknamen einstellen kann ingame per input und per list, dann sehen kann sie die jetzt heißen


    mfg

  • Naja, du fragst ab ob der Spieler auf Einzahlen gedrückt hat. Dann Zeigt du einen Dialog mit einem Eingabefeld (DIALOG_STYLE_INPUT). Dann fragst du wieder bei "OnDialogResponse" ab ob er etwas eingegeben hat, falls ja musst du nur noch prüfen ob die Eingabe nur aus zahlen besteht (z.b. mit der IsNumeric Funktion).


    Und das mit den Rangnamen ... das ist um diese Uhrzeit für mich etwas zu viel, ist aber nicht so kompliziert wie es sich anhört. ;)

    Windows ist wie ein U-Boot, öffnest du ein Fenster hast du ein Problem.