Waffenshop mit Dialogen funktioniert nicht ganz?

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. Habe gerade Waffenshop gescriptet. bzw. nur ein Dialog. Jetzt kann ich allerdings nur das Messer kaufen. Kann mir da einer helfen?


    ShowPlayerDialog(playerid,DIALOG_PWEAPON,DIALOG_STYLE_LIST,"Waffen","Messer 70$\nBaseballschläger 70$\nDeagle + 50 Schuss $500\nShotgun + 50 Schuss $800\nMP5 + 300 Schuss 1500$\nM4 + 300 Schuss 2000$\nSniper + 5 Schuss 950$","Kaufen","Abbrechen");
    }
    return 1;
    }
    }

    if(dialogid==DIALOG_PWEAPON)
    {
    if(response)
    {
    if(listitem == 0)//MESSER
    {
    if(GetPlayerMoney(playerid) >= 70)
    {
    GivePlayerMoney(playerid,-70);
    {
    GivePlayerWeapon(playerid,4,1);
    }
    if(listitem == 1)//BASEBALLSCHLÄGER
    {
    if(GetPlayerMoney(playerid) >= 70)
    {
    GivePlayerMoney(playerid,-70);
    {
    GivePlayerWeapon(playerid,5,1);
    }
    if(listitem == 2)//DEAGLE
    {
    if(GetPlayerMoney(playerid) >= 500)
    {
    GivePlayerMoney(playerid,-500);
    {
    GivePlayerWeapon(playerid,24,50);
    }
    if(listitem == 3)//SHOTGUN
    {
    if(GetPlayerMoney(playerid) >= 800)
    {
    GivePlayerMoney(playerid,-800);
    {
    GivePlayerWeapon(playerid,25,50);
    }
    if(listitem == 4)//MP5
    {
    if(GetPlayerMoney(playerid) >= 1500)
    {
    GivePlayerMoney(playerid,-1500);
    {
    GivePlayerWeapon(playerid,29,300);
    }
    if(listitem == 5)//M4
    {
    if(GetPlayerMoney(playerid) >= 2000)
    {
    GivePlayerMoney(playerid,-2000);
    {
    GivePlayerWeapon(playerid,31,300);
    }
    if(listitem == 6)//Sniper
    {
    if(GetPlayerMoney(playerid) >= 950)
    {
    GivePlayerMoney(playerid,-950);
    {
    GivePlayerWeapon(playerid,34,5);
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    }
    return 1;
    }



    Ausserdem (ist nicht direkt ein fehler aber yoa.) krieg ich das Warning irgendwo in den Zeilen nicht raus..


    Spoiler anzeigen
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    {
    if(dialogid==DIALOG_PSHOP)
    {
    if(response)
    {
    if(listitem == 0)
    {
    if(GetPlayerMoney(playerid) >= 50)
    {
    GivePlayerMoney(playerid,-50);
    {
    SetTimerEx("StopMusic", 5*60000, false, "d", playerid);
    SetPlayerScore(playerid,GetPlayerScore(playerid) +1);
    new Float:xz, Float:yz, Float:zz;
    GetPlayerPos(playerid, xz, yz, zz);
    SetPlayerVirtualWorld(playerid, 3);
    SetPlayerPos(playerid,xz,yz,zz +550);
    SetPlayerHealth(playerid, 9000);
    SetPlayerDrunkLevel(playerid,50000);
    SetPlayerWeather(playerid, -66);
    SetPlayerTime(playerid, 13,0);
    SetPlayerGravity(playerid, 0.001);
    SendClientMessage(playerid,KID_COL_GELB,"Max: Gute Reise.");
    return 1;
    }
    }
    }
    }
    else
    {
    SCM(playerid,KID_COL_RED,"Max: Verpiss dich.!");
    }
    if(listitem == 1)
    {
    ShowPlayerDialog(playerid,DIALOG_PWEAPON,DIALOG_STYLE_LIST,"Waffen","Messer 70$\nBaseballschläger 70$\nDeagle + 50 Schuss $500\nShotgun + 50 Schuss $800\nMP5 + 300 Schuss 1500$\nM4 + 300 Schuss 2000$\nSniper + 5 Schuss 950$","Kaufen","Abbrechen");
    }
    return 1;
    }
    }


    MFG :):love:

  • Der Obere sowie der Untere Code ist komplett fürn Ar*** - frage mich was du da vor hattest xD Editiere mein Beitrag gleich nochmal mit dem Code.


    Edit: Probier mal obs so klappt, mit dem Dialog PWEAPON:


    Code
    if(dialogid == DIALOG_PWEAPON)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: { //MESSER
    if(GetPlayerMoney(playerid) < 70) return SendClientMessage(playerid, FARBE, "Du hast nicht genügend Geld dabei.");
    GivePlayerMoney(playerid, -70);
    GivePlayerWeapon(playerid, 4, 1);
    }
    case 1: { //BASEBALLSCHLÄGER
    if(GetPlayerMoney(playerid) < 70) return SendClientMessage(playerid, FARBE, "Du hast nicht genügend Geld dabei.");
    GivePlayerMoney(playerid, -70);
    GivePlayerWeapon(playerid, 5, 1);
    }
    case 2: { //DEAGLE
    if(GetPlayerMoney(playerid) < 500) return SendClientMessage(playerid, FARBE, "Du hast nicht genügend Geld dabei.");
    GivePlayerMoney(playerid, -500);
    GivePlayerWeapon(playerid, 24, 50);
    }
    case 3: { //SHOTGUN
    if(GetPlayerMoney(playerid) < 800) return SendClientMessage(playerid, FARBE, "Du hast nicht genügend Geld dabei.");
    GivePlayerMoney(playerid, -800);
    GivePlayerWeapon(playerid, 25, 50);
    }
    case 4: { //MP5
    if(GetPlayerMoney(playerid) < 1500) return SendClientMessage(playerid, FARBE, "Du hast nicht genügend Geld dabei.");
    GivePlayerMoney(playerid, -1500);
    GivePlayerWeapon(playerid, 29, 300);
    }
    case 5: { //M4
    if(GetPlayerMoney(playerid) < 2000) return SendClientMessage(playerid, FARBE, "Du hast nicht genügend Geld dabei.");
    GivePlayerMoney(playerid, -2000);
    GivePlayerWeapon(playerid, 31, 300);
    }
    case 6: { //SNIPER
    if(GetPlayerMoney(playerid) < 950) return SendClientMessage(playerid, FARBE, "Du hast nicht genügend Geld dabei.");
    GivePlayerMoney(playerid, -950);
    GivePlayerWeapon(playerid, 34, 5);
    }
    }
    }
    }

    Einmal editiert, zuletzt von varrez ()

  • Deine Abfrage ist auch nicht gerade effizient.


    Ein gutes Beispiel mit kleinen objektorientierten Ansätze: (Ist mit Notepad++ geschrieben, da ich nicht mehr für SA:MP scripte, sollte aber funktionieren)


  • Das passt nicht ganz, die Array Größe ist zu klein und die Abfrage ob der Spieler genug Geld hat passt nicht, da du es negativ speicherst.


    // Waffe, Munition, Preis
    new PWEAPON_LIST[ 3 ][ 3 ] = {
    { WEAPON_PISTOL, 50, 700 },
    { WEAPON_M4, 200, 400 },
    { WEAPON_AK, 180, 350 }
    };


    public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
    {
    if( dialogid == DIALOG_PWEAPON && response )
    {
    new result[ 3 ] = PWEAPON_LIST[ listitem ];
    if( result[ 2 ] <= GetPlayerMoney( playerid ) )
    {
    GivePlayerMoney( playerid, -result[ 2 ] );
    GivePlayerWeapon( playerid, result[ 0 ], result[ 1 ] );
    SendClientMessage( playerid, COLOR_HELP, "Viel spaß mit deiner Waffe." );
    return 1;
    }
    SendClientMessage( playerid, COLOR_HELP, "Du hast nicht genügend Geld dabei." );
    return 1;
    }
    return 1;
    }