ShopSystem funktioniert nicht! - Was kann ich tun? - Zeigt nur ersten ShopDialog

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
  • Hi Leute mal wieder ein Problem ... ich habe eine ShopSystem gemacht aber mal wieder zeigt er mir nur das erste an bzw zeigt mir nur den Dialog wenn ich im Ersten Shop bin!


    ocmd:buy(playerid,params[])
    {
    for(new i=0; i<sizeof(buyInfo); i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,3, buyInfo[playerid][buy_x], buyInfo[playerid][buy_y], buyInfo[playerid][buy_z]))continue;
    ShowPlayerDialog(playerid,DIALOG_BUY,DIALOG_STYLE_LIST,"Shop - Kaufen",buyInfo[playerid][buykaufliste],"Kaufen","Abbrechen");
    }
    return 1;
    }

  • Zitat

    buyInfo[playerid][buy_x]


    Du bist bestimmt selber mit playerid 0 unterwegs, deshalb geht es. Wenn du zeigst wie buyInfo aussieht, kann man zumindest mit Sicherheit sagen,dass playerid als Index richtig oder falsch ist.
    Glaube aber kaum,dass du playerid als Index für buyInfo nehmen solltest bzw es so aufgebaut hast.
    Sonst würdest du ja keine Schleife verwenden,richtig ;)?


  • enum buyEnum{
    Float:buy_x,
    Float:buy_y,
    Float:buy_z,
    buykaufliste[128]
    }


    new buyInfo[][buyEnum] = {
    {2.2573,-28.5195,1003.5494,"Telefone\nPrepaid-Guthaben\nVerträge"},
    {-22.1361,-138.1877,1003.5469,"Snacks\nDrinks\nPrepaid-Guthaben"}
    };

  • ocmd:buy(playerid,params[])
    {
    for(new i=0; i<sizeof(buyInfo); i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,3, buyInfo[i][buy_x], buyInfo[i][buy_y], buyInfo[i][buy_z]))continue;
    ShowPlayerDialog(playerid,DIALOG_BUY,DIALOG_STYLE_LIST,"Shop - Kaufen",buyInfo[i][buykaufliste],"Kaufen","Abbrechen");
    }
    return 1;
    }
    Du musst i schon benutzen wenn du extra eine Schleife damit erstellst ;)

  • Meinst du so?


    ocmd:buy(playerid,params[])
    {
    for(new i=0; i<sizeof(buyInfo); i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,3, buyInfo[i][buy_x], buyInfo[i][buy_y], buyInfo[i][buy_z]))continue;
    ShowPlayerDialog(i,DIALOG_BUY,DIALOG_STYLE_LIST,"Shop - Kaufen",buyInfo[i][buykaufliste],"Kaufen","Abbrechen");
    }
    return 1;
    }


    Geht aber nicht!

  • ocmd:buy(playerid,params[])
    {
    if(!IsPlayerInRangeOfPoint(playerid,3, buyInfo[][buy_x], buyInfo[][buy_y], buyInfo[][buy_z]))continue;
    ShowPlayerDialog(i,DIALOG_BUY,DIALOG_STYLE_LIST,"Shop - Kaufen",buyInfo[][buykaufliste],"Kaufen","Abbrechen");
    return 1;
    }


    Sollte funktionieren.

    Einmal editiert, zuletzt von Hagz ()

  • SynonymousZ hat es zwar schon richtig gepostet, aber du hast es falsch kopiert.
    ocmd:buy(playerid,params[])
    {
    for(new i=0; i<sizeof(buyInfo); i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,3, buyInfo[i][buy_x], buyInfo[i][buy_y], buyInfo[i][buy_z]))continue;
    ShowPlayerDialog(playerid,DIALOG_BUY,DIALOG_STYLE_LIST,"Shop - Kaufen",buyInfo[i][buykaufliste],"Kaufen","Abbrechen");
    }
    return 1;
    }


    Du musst i für die Indexe (eckige Klammern) nehmen und playerid für IsPlayerInRangeOfPoint und ShowPlayerDialog.