Schwarzmarktsystem - Kleines Problem

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
  • Hey Leute,
    derzeit arbeite ich an einem Schwarzmarktsystem und hab ein kleines Problem.
    Wenn ich den Befehl '/smarket' eingebe und ein Gegenstand dort auswähle, kauft er immer nur das Messer.
    Heißt, ich gehe z.b. auf Desert Eagle, aber kriege dennoch ein Messer.


    Hier ist mal der Code:

    Spoiler anzeigen

    // Der ENUM

    Spoiler anzeigen
    enum SchwarzmarktBuy_info
    {
    sbuyweapon,
    sbuyammo,
    sbuyweaponname[35],
    smaterialsverbrauch
    }

    Spoiler anzeigen
    // Wo die Waffen mit den Preisen etc. drinne stehen.
    new sBuyInfo[][SchwarzmarktBuy_info] =
    {
    {4,1,"Messer",410},
    {5,1,"Baseballschläger",150},
    {22,145,"9mm Pistole",550},
    {23,145,"schallgedämpfte Pistole",420},
    {24,75,"Desert Eagle",900},
    {25,50,"Shotgun",1250},
    {29,300,"MP5",2500},
    {30,225,"AK-47",3500},
    {31,225,"M4A1",3500},
    {33,60,"Country Rifle",3000},
    {34,30,"Sniper Rifle",8000},
    {0,1,"Dünger",5}
    };

    Spoiler anzeigen
    // Der Befehl
    COMMAND:smarket(playerid,params[])
    {
    new string[512];
    for(new sm=1;sm<MAX_SMARKETS;sm++){
    for(new i=0;i<sizeof(sBuyInfo);i++){
    format(string,sizeof(string),"%s\n%s (%i$)",string,sBuyInfo[i][sbuyweaponname],SmarkInfo[sm][sartikel][i]);
    }}
    ShowPlayerDialog(playerid,DIALOG_SMARKT_KAUF,DIALOG_STYLE_LIST,"Schwarzmarkt",string,"Auswählen","Zurück");
    return 1;
    }

    Spoiler anzeigen
    //Der Dialog, also bei OnDialogResponse

    Spoiler anzeigen
    case DIALOG_SMARKT_KAUF:
    {
    new string[128];
    if(response == 0)
    {
    SendClientMessage(playerid, WEISS, "Kauf abgebrochen!");
    TogglePlayerControllable(playerid,1);
    return 1;
    }
    else
    {
    for(new sm=1;sm<MAX_SMARKETS;sm++)
    {
    for(new i=0;i<sizeof(sBuyInfo);i++)
    {
    if((GetACMoney(playerid) - SmarkInfo[sm][sartikel][i]) < 0)return SendClientMessage(playerid,GRAU,"Nicht genug Geld dabei!");
    if((SmarkInfo[sm][smaterials] - sBuyInfo[i][smaterialsverbrauch]) < 0)return SendClientMessage(playerid,GRAU,"Diese Waffe ist nicht mehr im Lager vorhanden.");
    ACMoney(playerid,-SmarkInfo[sm][sartikel][i]);
    SmarkInfo[sm][skasse] += SmarkInfo[sm][sartikel][i];
    SmarkInfo[sm][smaterials] -= sBuyInfo[i][smaterialsverbrauch];
    format(string,sizeof(string),"Du hast dir den Gegenstand %s für %i$ gekauft!",sBuyInfo[i][sbuyweaponname],SmarkInfo[sm][sartikel][i]);
    SendClientMessage(playerid,GELB,string);
    if(i >= sizeof(sBuyInfo)-1)
    {
    format(string,sizeof(string),"Das %s kannst du mit '/truncatduenger' auf eine Drogenpflanze schütten.",sBuyInfo[i][sbuyweaponname]);
    SendClientMessage(playerid,GELB,string);
    SendClientMessage(playerid,GELB,"Es bewirkt das die Produktion von Drogen um ein Viertel verschnellert wird.");
    Spieler[playerid][pDuenger]++;
    }
    else GiveWeapon(playerid,sBuyInfo[i][sbuyweapon],sBuyInfo[i][sbuyammo],true);
    return 1;
    }
    }
    TogglePlayerControllable(playerid,1);
    }
    }


    Ich weiß garnicht, woran das liegen kann :pinch:

    Einmal editiert, zuletzt von aytef ()

  • Ich könnte mir so ganz gut vorstellen das es funktioniert, so habe ich es noch in erinnerung.
    So sparst du dir auch 2 schleifen.

    Spoiler anzeigen


    enum SchwarzmarktBuy_info
    {
    sid,
    sbuyweapon,
    sbuyammo,
    sbuyweaponname[35],
    smaterialsverbrauch
    }

    Spoiler anzeigen
    // Wo die Waffen mit den Preisen etc. drinne stehen.
    new sBuyInfo[][SchwarzmarktBuy_info] =
    {
    {1,4,1,"Messer",410},
    {2,5,1,"Baseballschläger",150},
    {3,22,145,"9mm Pistole",550},
    {4,23,145,"schallgedämpfte Pistole",420},
    {5,24,75,"Desert Eagle",900},
    {6,25,50,"Shotgun",1250},
    {7,29,300,"MP5",2500},
    {8,30,225,"AK-47",3500},
    {9,31,225,"M4A1",3500},
    {10,33,60,"Country Rifle",3000},
    {11,34,30,"Sniper Rifle",8000},
    {12,0,1,"Dünger",5}
    };

    Spoiler anzeigen
    // Der Befehl
    COMMAND:smarket(playerid,params[])
    {
    new string[512];
    for(new sm=1;sm<MAX_SMARKETS;sm++){
    for(new i=0;i<sizeof(sBuyInfo);i++){
    format(string,sizeof(string),"%s\n%s (%i$)",string,sBuyInfo[i][sbuyweaponname],SmarkInfo[sm][sartikel][i]);
    }}
    ShowPlayerDialog(playerid,DIALOG_SMARKT_KAUF,DIALOG_STYLE_LIST,"Schwarzmarkt",string,"Auswählen","Zurück");
    return 1;
    }

    Spoiler anzeigen
    //Der Dialog, also bei OnDialogResponse

    Spoiler anzeigen
    case DIALOG_SMARKT_KAUF:
    {
    new string[128];
    if(!response)
    {
    TogglePlayerControllable(playerid,1);
    return SendClientMessage(playerid, WEISS, "Kauf abgebrochen!");
    }
    else
    {
    new listid = listitem+1;
    if((GetACMoney(playerid) - SmarkInfo[sm][sartikel][listid]) < 0)return SendClientMessage(playerid,GRAU,"Nicht genug Geld dabei!");
    if((SmarkInfo[listid][smaterials] - sBuyInfo[listid][smaterialsverbrauch]) < 0)return SendClientMessage(playerid,GRAU,"Diese Waffe ist nicht mehr im Lager vorhanden.");
    ACMoney(playerid,-SmarkInfo[listid][sartikel][i]);
    SmarkInfo[listid][skasse] += SmarkInfo[listid][sartikel][i];
    SmarkInfo[listid][smaterials] -= sBuyInfo[listid][smaterialsverbrauch];
    format(string,sizeof(string),"Du hast dir den Gegenstand %s für %i$ gekauft!",sBuyInfo[listid][sbuyweaponname],SmarkInfo[listid][sartikel][listid]);
    SendClientMessage(playerid,GELB,string);
    if(listid >= sizeof(sBuyInfo)-1)
    {
    format(string,sizeof(string),"Das %s kannst du mit '/truncatduenger' auf eine Drogenpflanze schütten.",sBuyInfo[listid][sbuyweaponname]);
    SendClientMessage(playerid,GELB,string);
    SendClientMessage(playerid,GELB,"Es bewirkt das die Produktion von Drogen um ein Viertel verschnellert wird.");
    Spieler[playerid][pDuenger]++;
    }
    else GiveWeapon(playerid,sBuyInfo[listid][sbuyweapon],sBuyInfo[listid][sbuyammo],true);
    return TogglePlayerControllable(playerid,1);
    }
    }