Kleine Frage zu Dialogen

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
  • Jetzt wird gar kein auto mehr in der Garage geparkt.
    Das Fahrzeug in dem ich sitze wird auch nicht Zerstört.
    Ist etwas schwer zu erklären also sobald ich an der Garage stehe und /garage eingebe und dann Rausnehmen wähle kommt dann
    format(string, sizeof(string), "%s{FFFF00}%i. {FFFFFF}Fahrzeug %i\n", string, slot, PrivatCarInfo[slot][playerid][pfModel]);
    nur steht dort Fahrzeug 0 im Dialog.


    //Edit
    Als ich das wieder eingefügt habe hat es Funktioniert.
    new idx = GetVehicleSlot(playerid, GetPlayerVehicleID(playerid));

    Einmal editiert, zuletzt von JOK3R ()

  • Ja Jetzt funktioniert eigentlich alles soweit.
    Danke für die Hilfe :)


    Muss das Thema nochmal aufmachen also ich habe immer noch das gleiche Problem wie vorher egal auf welches Auto ich drücke es kommt immer das Erste Auto aus der Garage raus
    Hab das Script neu geschrieben also nicht wundern warum die Funktionen anders heißen
    case DIALOG_GARAGE:
    {
    if(response)
    {
    switch(listitem)
    {
    case 0:
    {
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_RED, "* Error: Du bist in keinem Fahrzeug!");
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid, COLOR_RED, "* Error: Du bist nicht der Fahrer des Fahrzeuges!");
    if(HouseInfo[HouseID][gVehiclesInside] >= HouseInfo[HouseID][gMaxVehicles])
    {
    SendClientMessage(playerid, COLOR_RED, "* Error: Deine Garage ist voll!");
    }
    else
    {
    new slot = GetVehicleSlot(playerid, GetPlayerVehicleID(playerid));
    GetVehiclePos(PrivatVehInfo[playerid][slot][vehVehicleID], PrivatVehInfo[playerid][slot][vehPosX], PrivatVehInfo[playerid][slot][vehPosY], PrivatVehInfo[playerid][slot][vehPosZ]);
    GetVehicleZAngle(PrivatVehInfo[playerid][slot][vehVehicleID], PrivatVehInfo[playerid][slot][vehPosR]);
    DestroyVehicle(PrivatVehInfo[playerid][slot][vehVehicleID]);
    HouseInfo[HouseID][gVehiclesInside] ++;
    PrivatVehInfo[playerid][slot][vehGarageStored] = 1;
    printf("Vehicle Slot %d Stored", slot);
    mysql_format(handle, query, sizeof(query), "UPDATE `privatcardata` SET VehPosX = '%f', VehPosY = '%f', VehPosZ = '%f', VehPosR = '%f', GarageStored = '%i' WHERE Owner = '%s' AND Slot = '%d'", PrivatVehInfo[playerid][slot][vehPosX], PrivatVehInfo[playerid][slot][vehPosY], PrivatVehInfo[playerid][slot][vehPosZ], PrivatVehInfo[playerid][slot][vehPosR], PrivatVehInfo[playerid][slot][vehGarageStored], pInfo[playerid][pName], slot);
    mysql_pquery(handle, query);
    SendClientMessage(playerid, COLOR_YELLOW, "* Garage: Fahrzeug wurde eingeparkt!");
    UpdateHouses(HouseID);
    SaveHouses(HouseID);
    }
    return 1;
    }
    case 1:
    {
    for(new slot = 0; slot < MAX_PRIVATCARS; slot ++)
    {
    if(PrivatVehInfo[playerid][slot][vehGarageStored] == 1)
    {
    format(string, sizeof(string), "{D6543D}%i\t{FFFFFF}%s\n", slot, VehicleNames[PrivatVehInfo[playerid][slot][vehModelID] - 400]);
    strcat(string1, string, sizeof(string1));
    format(string, sizeof(string), "#\tFahrzeuge\n%s", string1);
    }
    }
    if(!strlen(string)) ShowPlayerDialog(playerid, DIALOG_GARAGE3, DIALOG_STYLE_MSGBOX, "{D6543D}Project X: {FFFFFF}Garageverwaltung - > Ausparken", "{FFFFFF}Du hast zurzeit kein Fahrzeug in deiner Garage.", "Okay", "");
    else ShowPlayerDialog(playerid, DIALOG_GARAGE2, DIALOG_STYLE_TABLIST_HEADERS, "{D6543D}Project X: {FFFFFF}Garageverwaltung - > Ausparken", string, "Ausparken", "Zurück");
    return 1;
    }
    }
    }
    return 1;
    }
    case DIALOG_GARAGE2:
    {
    if(response)
    {
    new slot, count;
    for(new i = 0; i < MAX_PRIVATCARS; i ++)
    {
    if(PrivatVehInfo[playerid][i][vehGarageStored] == 1)
    {
    if(count == listitem)
    {
    slot = i;
    break;
    }
    }
    }
    PrivatVehInfo[playerid][slot][vehVehicleID] = CreateVehicle(PrivatVehInfo[playerid][slot][vehModelID], PrivatVehInfo[playerid][slot][vehPosX], PrivatVehInfo[playerid][slot][vehPosY], PrivatVehInfo[playerid][slot][vehPosZ], PrivatVehInfo[playerid][slot][vehPosR], PrivatVehInfo[playerid][slot][vehCarColor1], PrivatVehInfo[playerid][slot][vehCarColor1], 0);
    HouseInfo[HouseID][gVehiclesInside] --;
    PrivatVehInfo[playerid][slot][vehGarageStored] = 0;
    PutPlayerInVehicle(playerid, PrivatVehInfo[playerid][slot][vehVehicleID], 0);
    printf("Vehicle Slot %d UnStored", slot);
    SendClientMessage(playerid, COLOR_YELLOW, "* Garage: Fahrzeug wurde ausgeparkt!");
    UpdateHouses(HouseID);
    SaveHouses(HouseID);
    SavePrivatVehicles(playerid);
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_GARAGE, DIALOG_STYLE_TABLIST_HEADERS, "{D6543D}Project X: {FFFFFF}Garageverwaltung",
    "#\tOption\n\
    {D6543D}1.\t{FFFFFF}Parken\n\
    {D6543D}2.\t{FFFFFF}Ausparken", "Weiter", "Abbrechen");
    }
    return 1;
    }


    Das ist zurzeit die Dialog funktion und wie ich schon oben gesagt habe Egal ob ich auf den Infernus oder Sultan drücke es kommt immer der Infernus raus
    Sobald der Infernus draußen ist kann man dann auch den Sultan rausholen soll aber nicht so sein es soll ja so sein das man Egal wo drauf man drückt das auch dann dieses auto raus kommt.



    Was bei mir auch nicht Funktionieren wird ist diese Funktion sobald ich den wert auf 0 stelle passiert mit dem Auto nichts
    new slot = GetVehicleSlot(playerid, 0);

    2 Mal editiert, zuletzt von JOK3R ()

  • Das ist zurzeit die Dialog funktion und wie ich schon oben gesagt habe Egal ob ich auf den Infernus oder Sultan drücke es kommt immer der Infernus raus

    Da habe ich im Code, den ich dir gegeben habe, noch etwas vergessen.
    if(count == listitem)
    {
    slot = i;
    break;
    }
    zu:
    if(count == listitem)
    {
    slot = i;
    break;
    }
    count++;


    Was bei mir auch nicht Funktionieren wird ist diese Funktion sobald ich den wert auf 0 stelle passiert mit dem Auto nichts

    Das kommt drauf an, ob das Fahrzeug schon einen Slot hat, oder nicht. Die 0 kannst du nur angeben, wenn das Fahrzeug noch keinen Slot hat.

  • Okay jetzt funktioniert das :')


    Also bei mir fängt der Slot ab 0 an und hört dann ab 4 auf also heißt er zählt alle MAX_PRIVATCARS 5
    0
    1
    2
    3
    4
    Heißt ich kann dann also das mit der 0 nicht benutzen richtig ?

  • Heißt ich kann dann also das mit der 0 nicht benutzen richtig ?

    GetVehicleSlot mit 0 sollte den ersten freien Slot ausgeben, der für ein neues Fahrzeug verwendet wird, unter der Annahme, dass die Slot-Variablen auf 0 stehen, wenn kein Fahrzeug drin ist.
    Falls es nicht klappt, lass dir die Variable, die in der Funktion gegen die vehicleid (in dem Fall 0) geprüft wird, ausgeben und poste das hier bitte, mit der Funktion.

  • case DIALOG_GARAGE:
    {
    if(response)
    {
    switch(listitem)
    {
    case 0:
    {
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_RED, "* Error: Du bist in keinem Fahrzeug!");
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SendClientMessage(playerid, COLOR_RED, "* Error: Du bist nicht der Fahrer des Fahrzeuges!");
    if(HouseInfo[HouseID][gVehiclesInside] >= HouseInfo[HouseID][gMaxVehicles])
    {
    SendClientMessage(playerid, COLOR_RED, "* Error: Deine Garage ist voll!");
    }
    else
    {
    new slot = GetVehicleSlot(playerid, GetPlayerVehicleID(playerid));
    printf("Vehicle Slot %d Stored", slot);
    format(string, sizeof(string), "Fahrzeug mit Slot %d wurde eingeparkt", slot);
    SendClientMessage(playerid, COLOR_SAMP2, string);
    GetVehiclePos(PrivatVehInfo[playerid][slot][vehVehicleID], PrivatVehInfo[playerid][slot][vehPosX], PrivatVehInfo[playerid][slot][vehPosY], PrivatVehInfo[playerid][slot][vehPosZ]);
    GetVehicleZAngle(PrivatVehInfo[playerid][slot][vehVehicleID], PrivatVehInfo[playerid][slot][vehPosR]);
    DestroyVehicle(PrivatVehInfo[playerid][slot][vehVehicleID]);
    HouseInfo[HouseID][gVehiclesInside] ++;
    PrivatVehInfo[playerid][slot][vehGarageStored] = 1;
    mysql_format(handle, query, sizeof(query), "UPDATE `privatcardata` SET VehPosX = '%f', VehPosY = '%f', VehPosZ = '%f', VehPosR = '%f', GarageStored = '%i' WHERE Owner = '%s' AND Slot = '%d'", PrivatVehInfo[playerid][slot][vehPosX], PrivatVehInfo[playerid][slot][vehPosY], PrivatVehInfo[playerid][slot][vehPosZ], PrivatVehInfo[playerid][slot][vehPosR], PrivatVehInfo[playerid][slot][vehGarageStored], pInfo[playerid][pName], slot);
    printf("[MySQL] %s", query);
    mysql_pquery(handle, query);
    SendClientMessage(playerid, COLOR_YELLOW, "* Garage: Fahrzeug wurde eingeparkt!");
    UpdateHouses(HouseID);
    SaveHouses(HouseID);
    }
    return 1;
    }
    case 1:
    {
    for(new slot = 0; slot < MAX_PRIVATCARS; slot ++)
    {
    if(PrivatVehInfo[playerid][slot][vehGarageStored] == 1)
    {
    format(string, sizeof(string), "{D6543D}%i\t{FFFFFF}%s\n", slot, VehicleNames[PrivatVehInfo[playerid][slot][vehModelID] - 400]);
    strcat(string1, string, sizeof(string1));
    format(string, sizeof(string), "#\tFahrzeuge\n%s", string1);
    }
    }
    if(!strlen(string)) ShowPlayerDialog(playerid, DIALOG_GARAGE3, DIALOG_STYLE_MSGBOX, "{D6543D}Project X: {FFFFFF}Garageverwaltung - > Ausparken", "{FFFFFF}Du hast zurzeit kein Fahrzeug in deiner Garage.", "Okay", "");
    else ShowPlayerDialog(playerid, DIALOG_GARAGE2, DIALOG_STYLE_TABLIST_HEADERS, "{D6543D}Project X: {FFFFFF}Garageverwaltung - > Ausparken", string, "Ausparken", "Zurück");
    return 1;
    }
    }
    }
    return 1;
    }
    stock GetVehicleSlot(playerid, vehicleid)
    {
    for(new i; i < MAX_PRIVATCARS; i++)
    {
    if(PrivatVehInfo[playerid][i][vehVehicleID] == vehicleid) return i;
    }
    return -1;
    }