Beiträge von DJ Deagle


    Woher weis db_ID denn, dass es [i] sein muss? o.o
    Ich verstehe zwar, wie ich es machen soll, aber einiges check ich auch ned.

    Allerdings habe ich den Hintergrund deines Systems noch nicht verstanden, da dein erster Code sich irgendwie mit dem zweiten Code widerspricht.


    Also. Mein Autohaussystem. Sobald man ein Fahrzeug bestellt, soll dieses in die Datenbank eingetragen werden.
    Trucker sollen dann Einsicht in diese Einträge haben (InGame) und aus dieser Einsicht wählen können (List-Dialog).

    Wenn du es über einen solchen switch machst, und die ID immer hart in das query schreibst, dann musst du nichts weiter machen, als das Auto Increment entfernen.


    Bezogen auf, das wird nicht klappen ist folgender Code:
    mysql_query("SELECT * FROM `Ordereddealercars`");
    mysql_store_result();
    new r=mysql_num_rows();
    mysql_free_result();
    format(q,sizeof q,"INSERT INTO `Ordereddealercars` (`ID`, `Seller`, `Model`, `Reward`) VALUES ('%d', '%d', '%d', '%d')",r,i,veh,lk);
    mysql_query(q);
    Da wird eingeschrieben.. Wenn du verstehst was ich meine (mit Das wird ned klappen).

    Du nimmst ein Array, und setzt den Index der ID jeweils auf true wenn die ID in der Datenbank existiert. Wird ein Wert gelöscht, dann setzt du den Index wieder auf false.
    Beim Hinzufügen loopst du durch das Array und schaust welcher Index zuerst false ist (finden des kleinsten Index).


    Ich versteh' grad nur Bahnhof. Ich habe folgendes gebastelt:
    new string[256],str[256],seller,model,reward;
    mysql_query("SELECT * FROM `Ordereddealercars`");
    mysql_store_result();
    while(mysql_fetch_row_format(string))
    {
    sscanf(string,"p<|>{i}ddd",seller,model,reward);
    format(str,sizeof str,"%s{00FF00}%s {FFFFFF}für {00FF00}%s{FFFFFF}€\n",str,PlayerVehicle[model-400],inspoints(reward));
    }
    mysql_free_result();
    if(strlen(str) > 0) {
    ShowPlayerDialog(playerid,DLG_TRUCKER_CARIMPORT,DIALOG_STYLE_LIST,"Fahrzeugbestellungen",str,"Auswählen","Abbrechen");
    } else {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Es gibt zur Zeit keine Fahrzeugbestellungen!");
    }


    //Wenn auf ein Item geklickt wurd:
    case DLG_TRUCKER_CARIMPORT:
    {
    if(response) {
    switch(listitem) {
    case 0: {/*JTrailerInfo[MAX_VEHICLES][JobTrailer];
    Jobtrailer[MAX_PLAYERS]*/
    new q[256],seller,model,reward,Float:lPos[3],Float:zang;
    mysql_query("SELECT `Seller`, `Model`, `Reward` FROM `Ordereddealercars` WHERE `ID` = '0'");
    mysql_store_result();
    while(mysql_fetch_row_format(q)) {
    sscanf(q,"p<|>{i}ddd",seller,model,reward);
    }
    GetPlayerPos(playerid,lPos[0],lPos[1],lPos[2]);
    GetVehicleZAngle(GetPlayerVehicleID(playerid),zang);
    Jobtrailer[playerid] = CreateVehicle(591,lPos[0]+5,lPos[1],lPos[2],zang,random(128),random(128),-1);
    JTrailerInfo[Jobtrailer[playerid]][jSeller] = seller;
    JTrailerInfo[Jobtrailer[playerid]][jModel] = model;
    JTrailerInfo[Jobtrailer[playerid]][jReward] = reward;
    AttachTrailerToVehicle(Jobtrailer[playerid],GetPlayerVehicleID(playerid));
    inJob[playerid] = 1;
    TruckerjobCP[playerid] = 120;
    SetPlayerCheckpoint(playerid,AHInfo[seller][zPosX],AHInfo[seller][zPosY],AHInfo[seller][zPosZ],7);
    SendClientMessage(playerid,COLOR_WHITE,"");
    SendClientMessage(playerid,COLOR_WHITE,"Bitte fahre zum Autohaus und lade das Fahrzeug ab!");
    mysql_query("DELETE * FROM `Ordereddealercars` WHERE `ID` = '0'");
    }
    }
    }
    }
    Doch ich merke, dass das failen wird.


    Kannst du es Schritt für Schritt erklären?

    Hi,


    ich habe eine kleine Frage zu (My)SQL.
    Wenn ich etwas in eine Datenbank inserten lasse (Bsp: INSERT INTO `Test` (`Name`, `Level`) VALUES (`Deagle`, `6`) ) und es in dieser Tabelle "Test" eine AUTO_INCREMENT-Spalte (Primary Key(XXX)) gibt (Sagen wir ID).
    Dies dann lösche (DELETE * FROM `Test` WHERE `Name` = 'Deagle'). Dann etwas neues einfüge, bekommt das neue dann die AUTO_INCREMENT-ID von "Deagle"?


    lg
    Deagle


    P.S.: Ich weiß, das ist etwas unverständlich. In der Theorie möchte ich nur wissen, ob die AUTO_INCREMENT nur hoch zählt, oder sich auch "ersetzen" lässt.

    Klappt es dann? Wenn nein, was wird geprintet?



    Klappt. Habe den String für den Dialog mit printen lassen.
    Wie kann ich nun den Namen hier anpassen (bei PlayerVehicle[selecteditem]):
    format(str,sizeof str,"{FFFFFF}Du hast folgendes Fahrzeug ausgewählt.\n\nName: {00FF00}%s\n{FFFFFF}Importkosten: {FF0000}%s{FFFFFF}€\n{FFFFFF}Kostenaufschlag (für die Lieferanten): {FF0000}%s{FFFFFF}€\n\nGesamtkosten: {FF0000}%s{FFFFFF}€",PlayerVehicle[selecteditem],inspoints(DealerVehPrice[selecteditem]),inspoints(rnd),inspoints(DealerVehPrice[selecteditem]+rnd));

    Füge das so ein und poste dann was im Server Log steht.


    Code
    [23:18:52] response = 1
    [23:18:52] veh = 7 | lk = 1700 | Dealercarsordered = 0 | MAX_DEALERORDERS = 8
    [23:18:52] i = 0 | playerid = 2 | CDid[i] = -1


    hm... Obwohl CDid -1 ist, kommt er nicht weiter....
    Woran kanns liegen? PS: playerid ist 2, da 0 & 1 durch Bots belegt werden.

    Habe es nicht hin bekommen ;/


    Ich schreibe dir mal, was du brauchst:
    public OnPlayerRequestClass(playerid, classid)
    {
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    GetPlayerSkin(playerid);
    SetSpawnInfo(playerid, team, skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
    SpawnPlayer(playerid);
    Und natürlich eine Skinvariable.
    Es gibt glaube ich mehr als genug Tutorials das zu machen.


    lg

    Hallo,


    wie im Titel schon beschrieben, habe ich ein Problem mit meinem Autohaussystem. Ziemlich genau mit der Bestellung von Fahrzeugen.
    Ich habe mir das vSpawner-Filterscript in den Gamemode kopiert, und ein paar Änderungen vorgenommen (MAX_ITEMS, etc.).
    Hier der Code:

    Spoiler anzeigen
    public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
    {
    new curpage = GetPVarInt(playerid, "vspawner_page");
    if(playertextid == gNextButtonTextDrawId[playerid] && GetPVarInt(playerid, "vspawner_active") != 0) {
    if(curpage < (GetNumberOfPages() - 1)) {
    SetPVarInt(playerid, "vspawner_page", curpage + 1);
    ShowPlayerModelPreviews(playerid);
    UpdatePageTextDraw(playerid);
    PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
    } else {
    PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
    }
    return 1;
    }
    else if(playertextid == gPrevButtonTextDrawId[playerid] && GetPVarInt(playerid, "vspawner_active") != 0) {
    if(curpage > 0) {
    SetPVarInt(playerid, "vspawner_page", curpage - 1);
    ShowPlayerModelPreviews(playerid);
    UpdatePageTextDraw(playerid);
    PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
    } else {
    PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
    }
    return 1;
    }
    if(GetPVarInt(playerid, "vspawner_active") != 0) {
    new x;
    while(x != SELECTION_ITEMS) {
    if(playertextid == gSelectionItems[playerid][x]) {
    ShowVehicleInfoData(playerid,x);
    PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
    DestroySelectionMenu(playerid);
    CancelSelectTextDraw(playerid);
    SetPVarInt(playerid, "vspawner_active", 0);
    print("ShowInfoData1");
    return 1;
    }
    x++;
    }
    }
    }
    return 1;
    }

    Spoiler anzeigen
    #define TOTAL_ITEMS 99
    #define SELECTION_ITEMS 21
    #define ITEMS_PER_LINE 7
    #define HEADER_TEXT "Fahrzeugauswahl"
    #define NEXT_TEXT "Weiter"
    #define PREV_TEXT "Zurueck"
    #define DIALOG_BASE_X 75.0
    #define DIALOG_BASE_Y 130.0
    #define DIALOG_WIDTH 550.0
    #define DIALOG_HEIGHT 180.0
    #define SPRITE_DIM_X 60.0
    #define SPRITE_DIM_Y 70.0

    Spoiler anzeigen
    new gTotalItems = TOTAL_ITEMS,gItemAt[MAX_PLAYERS];

    Spoiler anzeigen
    new gItemList[TOTAL_ITEMS] = {
    400,401,402,404,405,409,410,411,412,415,418,419,421,422,424,426,429,434,436,439,445,451,458,461,
    462,463,466,467,468,471,474,475,477,478,479,480,481,482,483,489,491,492,495,496,500,505,506,507,508,
    509,510,516,517,518,521,522,526,527,529,533,534,535,536,540,541,542,543,545,546,547,549,550,551,554,
    555,558,559,560,561,562,565,566,567,568,573,575,576,579,580,581,585,586,587,589,600,602,603,604,605
    };

    Spoiler anzeigen
    new DealerVehPrice[99] = {
    20000,
    15000,
    90000,
    10000,
    12500,
    100000,
    7500,
    1500000,
    15000,
    750000,
    7500,
    12500,
    20000,
    8500,
    35000,
    15000,
    400000,
    90000,
    10000,
    17500,
    13000,
    800000,
    6000,
    5000,
    1000,
    3500,
    5000,
    5000,
    11000,
    4000,
    10000,
    10000,
    80000,
    5000,
    10000,
    125000,
    100,
    14000,
    14000,
    10500,
    8300,
    8300,
    250000,
    11500,
    9900,
    13400,
    790000,
    17500,
    20000,
    150,
    200,
    7500,
    7500,
    7500,
    6000,
    999999,
    11100,
    10900,
    10500,
    15000,
    25000,
    26500,
    16000,
    10000,
    1500000,
    7300,
    6300,
    13300,
    9900,
    9910,
    8500,
    9000,
    10000,
    10000,
    20000,
    25000,
    80000,
    90000,
    14600,
    35000,
    25000,
    11500,
    15000,
    35000,
    170000,
    10000,
    10000,
    35000,
    12500,
    5000,
    10000,
    5000,
    13500,
    15000,
    6890,
    30000,
    50000,
    4000,
    4000,
    };

    Spoiler anzeigen
    public OnPlayerClickTextDraw(playerid,Text:clickedid)
    {
    if(clickedid == Text:INVALID_TEXT_DRAW && GetPVarInt(playerid, "vspawner_active") != 0) {
    DestroySelectionMenu(playerid);
    SetPVarInt(playerid, "vspawner_active", 0);
    SetPVarInt(playerid, "vspawner_page", 0);
    PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
    return 1;
    }
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
    {
    new curpage = GetPVarInt(playerid, "vspawner_page");
    if(playertextid == gNextButtonTextDrawId[playerid] && GetPVarInt(playerid, "vspawner_active") != 0) {
    if(curpage < (GetNumberOfPages() - 1)) {
    SetPVarInt(playerid, "vspawner_page", curpage + 1);
    ShowPlayerModelPreviews(playerid);
    UpdatePageTextDraw(playerid);
    PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
    } else {
    PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
    }
    return 1;
    }
    else if(playertextid == gPrevButtonTextDrawId[playerid] && GetPVarInt(playerid, "vspawner_active") != 0) {
    if(curpage > 0) {
    SetPVarInt(playerid, "vspawner_page", curpage - 1);
    ShowPlayerModelPreviews(playerid);
    UpdatePageTextDraw(playerid);
    PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
    } else {
    PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
    }
    return 1;
    }
    if(GetPVarInt(playerid, "vspawner_active") != 0) {
    new x;
    while(x != SELECTION_ITEMS) {
    if(playertextid == gSelectionItems[playerid][x]) {
    ShowVehicleInfoData(playerid,x);
    PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
    DestroySelectionMenu(playerid);
    CancelSelectTextDraw(playerid);
    SetPVarInt(playerid, "vspawner_active", 0);
    print("ShowInfoData1");
    return 1;
    }
    x++;
    }
    }
    return 1;
    }

    Spoiler anzeigen
    PlayerText:CreateModelPreviewTextDraw(playerid, modelindex, Float:Xpos, Float:Ypos, Float:width, Float:height)
    {
    new PlayerText:txtPlayerSprite = CreatePlayerTextDraw(playerid, Xpos, Ypos, "");
    PlayerTextDrawFont(playerid, txtPlayerSprite, TEXT_DRAW_FONT_MODEL_PREVIEW);
    PlayerTextDrawColor(playerid, txtPlayerSprite, 0xFFFFFFFF);
    PlayerTextDrawBackgroundColor(playerid, txtPlayerSprite, 0x000000EE);
    PlayerTextDrawTextSize(playerid, txtPlayerSprite, width, height);
    PlayerTextDrawSetPreviewModel(playerid, txtPlayerSprite, modelindex);
    PlayerTextDrawSetPreviewRot(playerid,txtPlayerSprite, -16.0, 0.0, -55.0);
    PlayerTextDrawSetSelectable(playerid, txtPlayerSprite, 1);
    PlayerTextDrawShow(playerid,txtPlayerSprite);
    return txtPlayerSprite;
    }

    Spoiler anzeigen
    PlayerText:CreatePlayerBackgroundTextDraw(playerid, Float:Xpos, Float:Ypos, Float:Width, Float:Height)
    {
    new PlayerText:txtBackground = CreatePlayerTextDraw(playerid, Xpos, Ypos,
    " ~n~");
    PlayerTextDrawUseBox(playerid, txtBackground, 1);
    PlayerTextDrawBoxColor(playerid, txtBackground, 0x00000099);
    PlayerTextDrawLetterSize(playerid, txtBackground, 5.0, 5.0);
    PlayerTextDrawFont(playerid, txtBackground, 0);
    PlayerTextDrawSetShadow(playerid, txtBackground, 0);
    PlayerTextDrawSetOutline(playerid, txtBackground, 0);
    PlayerTextDrawColor(playerid, txtBackground,0x000000FF);
    PlayerTextDrawTextSize(playerid, txtBackground, Width, Height);
    PlayerTextDrawBackgroundColor(playerid, txtBackground, 0x00000099);
    PlayerTextDrawShow(playerid, txtBackground);
    return txtBackground;
    }

    Spoiler anzeigen
    PlayerText:CreatePlayerHeaderTextDraw(playerid, Float:Xpos, Float:Ypos, header_text[])
    {
    new PlayerText:txtInit;
    txtInit = CreatePlayerTextDraw(playerid, Xpos, Ypos, header_text);
    PlayerTextDrawUseBox(playerid, txtInit, 0);
    PlayerTextDrawLetterSize(playerid, txtInit, 1.25, 3.0);
    PlayerTextDrawFont(playerid, txtInit, 0);
    PlayerTextDrawSetShadow(playerid, txtInit, 0);
    PlayerTextDrawSetOutline(playerid, txtInit, 1);
    PlayerTextDrawColor(playerid, txtInit, 0xACCBF1FF);
    PlayerTextDrawShow(playerid, txtInit);
    return txtInit;
    }

    Spoiler anzeigen
    PlayerText:CreatePlayerDialogButton(playerid, Float:Xpos, Float:Ypos, Float:Width, Float:Height, button_text[])
    {
    new PlayerText:txtInit;
    txtInit = CreatePlayerTextDraw(playerid, Xpos, Ypos, button_text);
    PlayerTextDrawUseBox(playerid, txtInit, 1);
    PlayerTextDrawBoxColor(playerid, txtInit, 0x000000FF);
    PlayerTextDrawBackgroundColor(playerid, txtInit, 0x000000FF);
    PlayerTextDrawLetterSize(playerid, txtInit, 0.4, 1.1);
    PlayerTextDrawFont(playerid, txtInit, 1);
    PlayerTextDrawSetShadow(playerid, txtInit, 0);
    PlayerTextDrawSetOutline(playerid, txtInit, 0);
    PlayerTextDrawColor(playerid, txtInit, 0x4A5A6BFF);
    PlayerTextDrawSetSelectable(playerid, txtInit, 1);
    PlayerTextDrawAlignment(playerid, txtInit, 2);
    PlayerTextDrawTextSize(playerid, txtInit, Height, Width);
    PlayerTextDrawShow(playerid, txtInit);
    return txtInit;
    }

    Spoiler anzeigen
    PlayerText:CreateCurrentPageTextDraw(playerid, Float:Xpos, Float:Ypos)
    {
    new PlayerText:txtInit;
    txtInit = CreatePlayerTextDraw(playerid, Xpos, Ypos, "0/0");
    PlayerTextDrawUseBox(playerid, txtInit, 0);
    PlayerTextDrawLetterSize(playerid, txtInit, 0.4, 1.1);
    PlayerTextDrawFont(playerid, txtInit, 1);
    PlayerTextDrawSetShadow(playerid, txtInit, 0);
    PlayerTextDrawSetOutline(playerid, txtInit, 1);
    PlayerTextDrawColor(playerid, txtInit, 0xACCBF1FF);
    PlayerTextDrawShow(playerid, txtInit);
    return txtInit;
    }

    Spoiler anzeigen
    public OnPlayerConnect(playerid)
    {
    gHeaderTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gBackgroundTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gCurrentPageTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gNextButtonTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gPrevButtonTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    for(new x; x < SELECTION_ITEMS; x++) {
    gSelectionItems[playerid][x] = PlayerText:INVALID_TEXT_DRAW;
    }
    gItemAt[playerid] = 0;
    return 1;
    }

    Spoiler anzeigen
    stock DestroySelectionMenu(playerid)
    {
    DestroyPlayerModelPreviews(playerid);

    Spoiler anzeigen
    PlayerTextDrawDestroy(playerid, gHeaderTextDrawId[playerid]);
    PlayerTextDrawDestroy(playerid, gBackgroundTextDrawId[playerid]);
    PlayerTextDrawDestroy(playerid, gCurrentPageTextDrawId[playerid]);
    PlayerTextDrawDestroy(playerid, gNextButtonTextDrawId[playerid]);
    PlayerTextDrawDestroy(playerid, gPrevButtonTextDrawId[playerid]);

    Spoiler anzeigen
    gHeaderTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gBackgroundTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gCurrentPageTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gNextButtonTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gPrevButtonTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    }

    Spoiler anzeigen
    stock CreateSelectionMenu(playerid)
    {
    gBackgroundTextDrawId[playerid] = CreatePlayerBackgroundTextDraw(playerid, DIALOG_BASE_X, DIALOG_BASE_Y + 20.0, DIALOG_WIDTH, DIALOG_HEIGHT);
    gHeaderTextDrawId[playerid] = CreatePlayerHeaderTextDraw(playerid, DIALOG_BASE_X, DIALOG_BASE_Y, HEADER_TEXT);
    gCurrentPageTextDrawId[playerid] = CreateCurrentPageTextDraw(playerid, DIALOG_WIDTH - 30.0, DIALOG_BASE_Y + 15.0);
    gNextButtonTextDrawId[playerid] = CreatePlayerDialogButton(playerid, DIALOG_WIDTH - 30.0, DIALOG_BASE_Y+DIALOG_HEIGHT+100.0, 50.0, 16.0, NEXT_TEXT);
    gPrevButtonTextDrawId[playerid] = CreatePlayerDialogButton(playerid, DIALOG_WIDTH - 90.0, DIALOG_BASE_Y+DIALOG_HEIGHT+100.0, 50.0, 16.0, PREV_TEXT);

    Spoiler anzeigen
    ShowPlayerModelPreviews(playerid);
    UpdatePageTextDraw(playerid);
    }

    Spoiler anzeigen
    stock UpdatePageTextDraw(playerid)
    {
    new PageText[64+1];
    format(PageText, 64, "%d/%d", GetPVarInt(playerid,"vspawner_page") + 1, GetNumberOfPages());
    PlayerTextDrawSetString(playerid, gCurrentPageTextDrawId[playerid], PageText);
    }

    Spoiler anzeigen
    stock ShowPlayerModelPreviews(playerid)
    {
    new x,linetracker;
    new Float:BaseX = DIALOG_BASE_X;
    new Float:BaseY = DIALOG_BASE_Y - (SPRITE_DIM_Y * 0.33);
    new itemat = GetPVarInt(playerid, "vspawner_page") * SELECTION_ITEMS;
    DestroyPlayerModelPreviews(playerid);
    while(x != SELECTION_ITEMS && itemat < gTotalItems) {
    if(linetracker == 0) {
    BaseX = DIALOG_BASE_X + 25.0;
    BaseY += SPRITE_DIM_Y + 1.0;
    }
    gSelectionItems[playerid][x] = CreateModelPreviewTextDraw(playerid, gItemList[itemat], BaseX, BaseY, SPRITE_DIM_X, SPRITE_DIM_Y);
    gSelectionItemsTag[playerid][x] = gItemList[itemat];
    BaseX += SPRITE_DIM_X + 1.0;
    linetracker++;
    if(linetracker == ITEMS_PER_LINE) linetracker = 0;
    itemat++;
    x++;
    }
    }

    Spoiler anzeigen
    stock DestroyPlayerModelPreviews(playerid)
    {
    new x;
    while(x != SELECTION_ITEMS) {
    if(gSelectionItems[playerid][x] != PlayerText:INVALID_TEXT_DRAW) {
    PlayerTextDrawDestroy(playerid, gSelectionItems[playerid][x]);
    gSelectionItems[playerid][x] = PlayerText:INVALID_TEXT_DRAW;
    }
    x++;
    }
    }

    Spoiler anzeigen
    stock GetNumberOfPages()
    {
    if((gTotalItems >= SELECTION_ITEMS) && (gTotalItems % SELECTION_ITEMS) == 0)
    {
    return (gTotalItems / SELECTION_ITEMS);
    }
    else return (gTotalItems / SELECTION_ITEMS) + 1;
    }

    Spoiler anzeigen
    //Wenn man ein Fahrzeug bestellen möchte(Auszug aus OnDialogResponse)
    case 1: {
    new str[256],i=pInfo[playerid][pAH];
    format(str,sizeof str,"SELECT * FROM `Dealercars` WHERE `Seller` = '%d'",i);
    mysql_query(str);
    format(str,sizeof str,"");
    mysql_store_result();
    if(mysql_num_rows() > MAX_SELLERCARSPERSELLER) {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du hast bereits die maximale Anzahl an Verkaufsfahrzeugen erreicht!");
    } else {
    if(Dealercarsordered < MAX_DEALERORDERS) {
    DestroySelectionMenu(playerid);
    SetPVarInt(playerid, "vspawner_active", 1);
    CreateSelectionMenu(playerid);
    SelectTextDraw(playerid, 0xACCBF1FF);
    } else {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Der Importhändler hat gerade zu viel zu tun. Versuche es Später erneut!");
    }
    }
    mysql_free_result();
    }

    Spoiler anzeigen
    stock ShowVehicleInfoData(playerid, selecteditem)
    {
    print("ShowInfoData2");
    printf("%d | %d",playerid,selecteditem);
    new str[512],rnd=random(2500);
    format(str,sizeof str,"{FFFFFF}Du hast folgendes Fahrzeug ausgewählt.\n\nName: {00FF00}%s\n{FFFFFF}Importkosten: {FF0000}%s{FFFFFF}€\n{FFFFFF}Kostenaufschlag (für die Lieferanten): {FF0000}%s{FFFFFF}€\n\nGesamtkosten: {FF0000}%s{FFFFFF}€",PlayerVehicle[selecteditem],inspoints(DealerVehPrice[selecteditem]),inspoints(2000),inspoints(DealerVehPrice[selecteditem]+rnd));
    SetPVarInt(playerid,"ImportVeh",selecteditem);
    SetPVarInt(playerid,"Lieferkosten",rnd);
    ShowPlayerDialog(playerid,DLG_AH_IMPORTCAR,DIALOG_STYLE_MSGBOX,"Fahrzeug importieren",str,"Import","Abbrechen");
    return 1;
    }

    Spoiler anzeigen
    //Nochmal ein Auszug aus OnDialogRespnose
    case DLG_AH_IMPORTCAR:
    {
    if(response) {
    new veh=GetPVarInt(playerid,"ImportVeh"),lk=GetPVarInt(playerid,"Lieferkosten");
    if(Dealercarsordered < MAX_DEALERORDERS) {
    new i=pInfo[playerid][pAH];
    if(CDid[i] == -1) {
    if(AHInfo[i][zBank] >= DealerVehPrice[veh-400]+lk) {
    AHInfo[i][zBank] -= DealerVehPrice[veh-400]+lk;
    SaveCarDealer(i);
    Dealercarsordered += 1;
    SendClientMessage(playerid,COLOR_WHITE,"Du hast das Fahrzeug bestellt. Warte nun bis es von einem Trucker geliefert wird.");
    SetTimerEx("ImportVehicle",720000,0,"dd",i,lk);
    return 1;
    } else {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du hast nicht genug Geld auf der Autohauskasse, um dieses Fahrzeug zu bestellen!");
    }
    } else {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du hast bereits ein Fahrzeug bestellt!");
    }
    } else {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Der Importhändler hat gerade zu viel zu tun. Versuche es Später erneut!");
    }
    } else { SetPVarInt(playerid,"ImportVeh",-1); SetPVarInt(playerid,"Lieferkosten",0); }
    }
    Ab hier ist dann der Wurm drin. Sind alle Bedingungen erfüllt, und man klickt auf "Import", bekommt man keine Meldung. Es wird kein Timer gestartet, nichts.
    Zudem ist es so, dass wenn man sich z.B. auf der 2. Seite des "Menüs" befindet, dort auf ein Vehikel klickt, die VehikelID nicht aus dem Array (gItemList) entnommen, sondern 400+"CLICKEDID" gerechnet wird.
    Auf das Fahrzeug im Menü (Textdraw) klicken ist kein Problem, da klappt alles.

    Spoiler anzeigen
    Zu guter letzt hier noch der Public, der nicht aufgerufen wird:
    public ImportVehicle(Seller, TruckReward)
    {
    new rnd=random(8),str[128];
    CDid[Seller]=AddStaticVehicleEx(591,CDTrailerSpawn[rnd][0],CDTrailerSpawn[rnd][1],CDTrailerSpawn[rnd][2],CDTrailerSpawn[rnd][3],random(128),random(128),-1);
    CDInfoLabel[CDid[Seller]]=Create3DTextLabel(str,COLOR_RED,CDTrailerSpawn[rnd][0],CDTrailerSpawn[rnd][1],CDTrailerSpawn[rnd][2],15,0,0);
    format(str,sizeof str,"Lieferung für '%s'\nLieferbelohnung: %s€",AHInfo[Seller][zName],inspoints(TruckReward));
    Attach3DTextLabelToVehicle(CDInfoLabel[CDid[Seller]],CDid[Seller],0.0,0.0,0.2);
    return 1;
    }


    Was funktioniert da nicht? (Infos stehen im Expander)


    lg
    Deagle

    Hi.


    Du hast Recht, am Design sollte man wirklich etwas ändern.
    Ich habe 1 Vorschlag:


    Ich finde, dass oben im Menü angezeigt werden sollte, auf welcher Seite man sich gerade befindet (RCON, Einstellungen, etc.) z.B. durch einen dickeren Rand oder so.
    Dies dient zur Orientierung, falls man nicht weiß, auf welche Seite man geklickt hat.


    Ansonsten sieht das ganze von den Funktionen her super aus.



    lg
    Deagle