Dialog Fehler

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 liebes Forum,


    Ich bin grade dabei Scripten zu lernen, und hab mich an eine "Waffenkiste" gemacht.


    Ganz oben im Script habe ich:


    #define waffendialog 1337


    Der Dialog öffnet sich mit dem befehl /waffenkiste und sieht so aus:
    if(strcmp("/waffenkiste", cmdtext, true, 10) == 0)


    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 674.6451, 1845.8447, 5.3527))
    {
    ShowPlayerDialog(playerid, 1337, DIALOG_STYLE_LIST, "Waffenkiste", "Silenced Pistol - 750$\nDesert Eagle - 1500$\nColt - 500$", "Kaufen", "Schließen");
    return 1;
    }
    else SendClientMessage(playerid, 0xB4B5B7FF, "Du bist nicht im Erdgeschoss an der Waffenkiste!");
    }


    Und das was eigentlich passieren soll ist hier:


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 1337)
    {
    if(listitem == 0)
    {
    GivePlayerWeapon(playerid, 23, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine sPistol mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 750$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -750);
    }
    if(listitem == 1)
    {
    GivePlayerWeapon(playerid, 24, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine Desert Eagle mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 1500 bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -1500);
    }
    if(listitem == 2)
    {
    GivePlayerWeapon(playerid, 22, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast einen Colt mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 500$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -500);
    return 1;
    }
    }
    }



    Problem:
    Wenn ich jetzt /waffenkiste im Spiel an der richtigen Position eingebe, kommt zwar der Dialog, aber führ die Befehle darin nicht aus.


    .ShiiX ~*

    [align=center]

  • #define DIALOG_WAFFEN 1337



    if(strcmp("/waffenkiste", cmdtext, true, 10) == 0)


    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 674.6451, 1845.8447, 5.3527))
    {
    ShowPlayerDialog(playerid, 1337, DIALOG_STYLE_LIST, "Waffenkiste", "Silenced Pistol - 750$\nDesert Eagle - 1500$\nColt - 500$", "Kaufen", "Schließen");
    return 1;
    }
    else SendClientMessage(playerid, 0xB4B5B7FF, "Du bist nicht im Erdgeschoss an der Waffenkiste!");
    }




    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 1337)
    {
    if(listitem == 0)
    {
    GivePlayerWeapon(playerid, 23, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine sPistol mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 750$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -750);
    }
    if(listitem == 1)
    {
    GivePlayerWeapon(playerid, 24, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine Desert Eagle mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 1500 bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -1500);
    }
    if(listitem == 2)
    {
    GivePlayerWeapon(playerid, 22, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast einen Colt mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 500$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -500);
    return 1;
    }
    }
    }







    Und ich brauche mal wieder hilfe.... könnt ihr mir helfen

  • -.-..


    Bei
    #define waffendialog 1337
    kann man jeden Mist hinschreiben...


    z.B:
    #define Waffendialogichwollekaufen 1337


    oder


    #define waffemachtbumm 1337


    -> Also geht's auch nicht.


    .ShiiX ~*



    Edit: Ich hab die 3 Absätze jetzt als Function, funktioniert leider aber immernochnicht. Habs jetzt nochmal so wies oben steht.

    [align=center]

    Einmal editiert, zuletzt von ShiiX ()


  • public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 1337)
    {
    if(listitem == 0)
    {
    GivePlayerWeapon(playerid, 23, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine sPistol mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 750$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -750);
    }
    if(listitem == 1)
    {
    GivePlayerWeapon(playerid, 24, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine Desert Eagle mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 1500 bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -1500);
    }
    if(listitem == 2)
    {
    GivePlayerWeapon(playerid, 22, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast einen Colt mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 500$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -500);
    return 1;
    }
    }
    return 1;
    }


    Fehlt ja auch ein return ^^

    graphics frontend web

  • Pass das bei dir mal an



    if(dialogid == WAFFEN)
    {
    if(response == 0)
    {
    return 1;//Die T
    }
    if(listitem == 1)
    {
    if(GetPlayerMoney(playerid > 10000))
    {
    GivePlayerMoney(playerid, -10000);
    GivePlayerWeapon(playerid,31,500);
    SendClientMessage(playerid,GREEN,"Verkäufer:Danke für deinen Einkauf(M4).");
    }

    else
    {
    SendClientMessage(playerid,ERROR_ROT,"Du hast nicht genug Geld.");//iMMER DIESE NOOBS
    }
    }
    if(listitem == 2)
    {
    if(GetPlayerMoney(playerid > 5000))
    {
    GivePlayerMoney(playerid, -5000);
    GivePlayerWeapon(playerid,29,250);
    SendClientMessage(playerid,GREEN,"Verkäufer:Danke für deinen Einkauf(Mp5).");
    }

    else
    {
    SendClientMessage(playerid,ERROR_ROT,"Du hast nicht genug Geld.");
    } // darf ich weiter `? ja


    }
    if(listitem == 3)
    {
    if(GetPlayerMoney(playerid > 7500))
    {
    GivePlayerMoney(playerid,-7500);
    GivePlayerWeapon(playerid,30,500);
    SendClientMessage(playerid,GREEN,"Verkäufer:Danke für deinen Einkauf(Ak47).");
    }
    else
    {
    SendClientMessage(playerid,ERROR_ROT,"Du hast nicht genug Geld.");
    }
    }
    if(listitem == 4)
    {
    if(GetPlayerMoney(playerid > 1000))
    {
    GivePlayerMoney(playerid,-1000);
    GivePlayerWeapon(playerid,24,100);
    SendClientMessage(playerid,GREEN,"Verkäufer:Danke für deinen Einkauf(Desert Eagle).");
    }
    else
    {
    SendClientMessage(playerid, ERROR_ROT,"Du hast nicht genug Geld.");
    }
    }

    if(listitem == 5)
    {
    if(GetPlayerMoney(playerid > 1000))
    {
    GivePlayerMoney(playerid,-1000);
    SetPlayerArmour(playerid,100.0);
    SendClientMessage(playerid,GREEN,"Verkäufer:Danke für deinen Einkauf(Schutzweste).");
    }
    else
    {
    SendClientMessage(playerid, ERROR_ROT, "Du hast nicht genug Geld.");
    }
    }
    }










    graphics frontend web

  • Ich würd es so machen


    switch(dialogid==Dialogeinfügen) //Dialognamen einfügen
    {
    case 1:
    {
    if(!response) //Zeigt das an wenn der spieler abbricht.
    {
    SendClientMessage(playerid,COLOR_WHITE,"Vorgang abgebrochen."); //ggf. ersetzen
    return 1;
    }
    switch(listitem)
    {
    case 0:{blablabla} //Aktionen einfügen
    case 1:{blablabla}
    case 2:{blablalba}
    case 3:{abcdefg}
    case 4:{dies das}
    case 5:{bla bla}
    }
    }
    }

  • @iFeet: Geht auchnicht :/


    Hier des (bisherige) Code:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 1337)
    {
    if(response == 0)
    {
    return 1;
    }
    if(listitem == 0)
    {
    GivePlayerWeapon(playerid, 23, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine sPistol mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 750$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -750);
    }
    if(listitem == 1)
    {
    GivePlayerWeapon(playerid, 24, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine Desert Eagle mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 1500 bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -1500);
    }
    if(listitem == 2)
    {
    GivePlayerWeapon(playerid, 22, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast einen Colt mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 500$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -500);
    return 1;
    }
    }
    return 0;
    }


    @DarkHell232:


    Wie mach ich das dann, dass ich bei
    case 0:
    case 1:
    case 2:
    case 3:
    ...


    Mehrere Aktionen ausführe? Also, 2 mal SendClientMessage, 1 mal GivePlayerWeapon und GivePlayerMoney?


    .ShiiX ~*

    [align=center]

  • public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == waffendialog)
    {
    if(response)// machs damit ...
    {
    if(listitem == 0)
    {
    GivePlayerWeapon(playerid, 23, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine sPistol mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 750$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -750);
    }
    if(listitem == 1)
    {
    GivePlayerWeapon(playerid, 24, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine Desert Eagle mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 1500 bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -1500);
    }
    if(listitem == 2)
    {
    GivePlayerWeapon(playerid, 22, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast einen Colt mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 500$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -500);
    }
    }
    }
    return 1;
    }


    Edit: verbesserung vorgenommen Im Befehl das 1337 durch waffendialog ersetzen und es geht

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

    Einmal editiert, zuletzt von Developer ()

  • also ich habe meinen jetzt oben nochmal editiert und damit muss! es gehen... habs grade selber nochmal compillt ohne errors ingame habe ich es jetzt zwar net getestet aber es muss gehen....

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Nein, der geht auch nich :(


    Ich poste mal alles was ich bis jetzt hab..


    Oben:
    #define waffendialog 570
    #define COLOR_GRAD1 0xB4B5B7FF


    Das ist OnPlayerCommandText:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/waffenbar", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 674.6451, 1845.8447, 5.3527))
    {
    ShowPlayerDialog(playerid, 570, DIALOG_STYLE_LIST, "Waffenbar", "Silenced Pistol - 750$\nDesert Eagle - 1500$\nColt - 500$", "Kaufen", "Schließen");
    return 1;
    }
    else SendClientMessage(playerid, 0xB4B5B7FF, "Du bist nicht im Erdgeschoss an der Waffenbar!");
    }
    return 0;
    }


    Und das ist OnDialogResponse
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 570)
    {
    if(response)// machs damit ...
    {
    if(listitem == 0)
    {
    GivePlayerWeapon(playerid, 23, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine sPistol mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 750$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -750);
    }
    if(listitem == 1)
    {
    GivePlayerWeapon(playerid, 24, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine Desert Eagle mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 1500 bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -1500);
    }
    if(listitem == 2)
    {
    GivePlayerWeapon(playerid, 22, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast einen Colt mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 500$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -500);
    }
    }
    }
    return 1;
    }


    .ShiiX~*

    [align=center]

  • #define waffendialog 570
    #define COLOR_GRAD1 0xB4B5B7FF
    /* ist soweit ok*/
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/waffenbar", cmdtext, true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 674.6451, 1845.8447, 5.3527))
    {
    ShowPlayerDialog(playerid, waffendialog, DIALOG_STYLE_LIST, "Waffenbar", "Silenced Pistol - 750$\nDesert Eagle - 1500$\nColt - 500$", "Kaufen", "Schließen");
    }
    else
    {
    SendClientMessage(playerid, 0xB4B5B7FF, "Du bist nicht im Erdgeschoss an der Waffenbar!");
    }
    }
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == waffendialog)
    {
    if(response)// machs damit ...
    {
    if(listitem == 0)
    {
    GivePlayerWeapon(playerid, 23, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine sPistol mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 750$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -750);
    }
    if(listitem == 1)
    {
    GivePlayerWeapon(playerid, 24, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine Desert Eagle mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 1500 bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -1500);
    }
    if(listitem == 2)
    {
    GivePlayerWeapon(playerid, 22, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast einen Colt mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 500$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -500);
    }
    }
    }
    return 1;
    }

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern


  • #define DIALOG_WAFFEN 570



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/waffenbar", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 674.6451, 1845.8447, 5.3527))
    {
    ShowPlayerDialog(playerid, 570, DIALOG_STYLE_LIST, "Waffenbar", "Silenced Pistol - 750$\nDesert Eagle - 1500$\nColt - 500$", "Kaufen", "Schließen");
    return 1;
    }
    else
    {
    SendClientMessage(playerid, 0xB4B5B7FF, "Du bist nicht im Erdgeschoss an der Waffenbar!");
    }
    }
    return 0;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 570)
    {
    if(response==1)
    {
    if(listitem == 0)
    {
    GivePlayerWeapon(playerid, 23, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine sPistol mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 750$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -750);
    }
    if(listitem == 1)
    {
    GivePlayerWeapon(playerid, 24, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast eine Desert Eagle mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 1500 bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -1500);
    }
    if(listitem == 2)
    {
    GivePlayerWeapon(playerid, 22, 20);
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast einen Colt mit 20 Schuss erhalten.");
    SendClientMessage(playerid, 0xB4B5B7FF, "Du hast 500$ bezahlt. Mach keine Dummheiten!");
    GivePlayerMoney(playerid, -500);
    }
    }
    }
    return 1;
    }


    so vlcht

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen