Wie mache ich /carkey in Dialog?

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
  • if (strcmp("/carkey", cmdtext, true, 10) == 0)
    {
    new mv = MaxVeh;
    if(mv > 1)
    {
    Dtc_PlayerKey[playerid] += 1;
    if(Dtc_PlayerKey[playerid] == MaxVeh)
    {
    Dtc_PlayerKey[playerid] = 0;
    }
    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
    {
    format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, für deinen %s!",Dtc_PlayerKey[playerid]+1,CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarModel]-400]);
    }
    else
    {
    format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, doch hast für diesen Schlüssel noch kein Auto!",Dtc_PlayerKey[playerid]+1);
    }
    SendClientMessage(playerid,COLOR_YELLOW,string);
    }
    return 1;
    }


    #define MaxVeh 3


    Hay Ich wollte fragen wie man /carkey in Dialog macht und wen das Fahrzeug abgeschleppt worden ist das daneben steht (Verwahrstelle)


    Bitte um schnelle hilfe danke im vorraus!

  • if (strcmp("/opark", cmd, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 525 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(PlayerInfo[playerid][pMember] == 24||PlayerInfo[playerid][pLeader] == 24)
    {
    if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
    {
    SendClientMessage(playerid, COLOR_GREY, " An deinem Abschleppwagen ist kein Auto angehängt!");
    return 1;
    }
    new trailercar = GetVehicleTrailer(GetPlayerVehicleID(playerid));
    if(!IsADtCar(trailercar))
    {
    SendClientMessage(playerid, COLOR_GREY, " Dieses Auto kann hier nicht geparkt werden!!");
    return 1;
    }
    new Float:X,Float:Y,Float:Z;
    new Float:z_rot;
    GetVehiclePos(trailercar, X,Y,Z);
    GetVehicleZAngle(trailercar, z_rot);
    new carowner = GetDtCarOwner(trailercar);
    new slot = GetDtCarOwnerSlot(carowner,trailercar);
    PlayerCar[carowner][slot][CarPos_x] = X;
    PlayerCar[carowner][slot][CarPos_y] = Y;
    PlayerCar[carowner][slot][CarPos_z] = Z;
    PlayerCar[carowner][slot][CarRotate] = z_rot;
    if(carowner != 555)
    {
    OnPlayerCarUpdate(carowner,false);
    SendClientMessage(carowner, COLOR_WHITE, "[ORDNUNGSAMT] Ihr Fahrzeug wurde abgeschleppt, es steht im Hof des Ordnungsamtes!");
    }
    DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
    SendClientMessage(playerid, COLOR_YELLOW, " Du hast das Fahrzeug erfolgreich abgeschleppt!");
    return 1;
    } else {
    SendClientMessage(playerid, COLOR_GREY, " Du bist kein Mitglied des Ordnungsamtes!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du musst einen Abschleppwagen fahren!");
    return 1;
    }
    }


    Muss ich auch noch schaun wie ich das umschreibe das das car wergspawnt und das ich es mit /freikaufen freikaufen kann und dann spawnt

  • Mit diesem System ist es so zumindest nicht erkennbar, ob das Fahrzeug abgeschleppt wurde oder nicht, da müsstest du dem PlayerCar noch einen "Abgeschleppt" Status geben (PlayerCar[carowner][slot][Abgeschleppt] = 1).
    Ohne das würde es erst mal so aussehen:
    if(strcmp("/carkey", cmdtext, true, 10) == 0)
    {
    new string[512];
    for(new i = 0; i < MaxVeh; i++)
    {
    if(Dtc_PlayerHaveCar[playerid][i])
    {
    format(string, sizeof(string), "%s%s\n", string, CarName[PlayerCar[playerid][i][CarModel]-400]);
    }
    else
    {
    format(string, sizeof(string), "%s-Leer-\n", string);
    }
    }
    ShowPlayerDialog(playerid, DIALOG_CARKEY, DIALOG_STYLE_LIST, "Carkeys", string, "Auswahl", "Abbrechen");
    return 1;
    }


    OnDialogResponse:
    if(dialogid == DIALOG_CARKEY)
    {
    if(!response) return 1;
    new string[145];
    Dtc_PlayerKey[playerid] = listitem;
    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
    {
    format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, für deinen %s!",Dtc_PlayerKey[playerid]+1,CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarModel]-400]);
    }
    else
    {
    format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, doch hast für diesen Schlüssel noch kein Auto!",Dtc_PlayerKey[playerid]+1);
    }
    SendClientMessage(playerid,COLOR_YELLOW,string);
    return 1;
    }



    Mit Abgeschleppt-Status:
    format(string, sizeof(string), "%s%s\n", string, CarName[PlayerCar[playerid][i][CarModel]-400]);
    zu:
    if(PlayerCar[carowner][i][Abgeschleppt] == 1) format(string, sizeof(string), "%s%s (Verwahrstelle)\n", string, CarName[PlayerCar[playerid][i][CarModel]-400]);
    else format(string, sizeof(string), "%s%s\n", string, CarName[PlayerCar[playerid][i][CarModel]-400]);

  • C:\Windows\Vss\First Person\Samp Server\gamemodes\German.pwn(46355) : warning 219: local variable "string" shadows a variable at a preceding level


    if(strcmp("/carkey", cmdtext, true, 10) == 0)
    {
    new string[512];
    for(new i = 0; i < MaxVeh; i++)
    {
    if(Dtc_PlayerHaveCar[playerid][i])
    {
    format(string, sizeof(string), "%s%s\n", string, CarName[PlayerCar[playerid][i][CarModel]-400]);
    }
    else
    {
    format(string, sizeof(string), "%s-Leer-\n", string);
    }
    }
    ShowPlayerDialog(playerid, DIALOG_CARKEY, DIALOG_STYLE_LIST, "Carkeys", string, "Auswahl", "Abbrechen");
    return 1;
    }

  • Du hattest die Variable bereits deklariert, deshalb der Fehler.
    if(strcmp("/carkey", cmdtext, true, 10) == 0)
    {
    new str_out[512];
    for(new i = 0; i < MaxVeh; i++)
    {
    if(Dtc_PlayerHaveCar[playerid][i])
    {
    format(str_out, sizeof(str_out), "%s%s\n", str_out, CarName[PlayerCar[playerid][i][CarModel]-400]);
    }
    else
    {
    format(str_out, sizeof(str_out), "%s-Leer-\n", str_out);
    }
    }
    ShowPlayerDialog(playerid, DIALOG_CARKEY, DIALOG_STYLE_LIST, "Carkeys", str_out, "Auswahl", "Abbrechen");
    return 1;
    }

  • if(PlayerCar[carowner][i][Abgeschleppt] == 1) format(string, sizeof(string), "%s%s (Verwahrstelle)\n", string, CarName[PlayerCar[playerid][i][CarModel]-400]);
    else format(string, sizeof(string), "%s%s\n", string, CarName[PlayerCar[playerid][i][CarModel]-400]);



    if(strcmp("/carkey", cmdtext, true, 10) == 0)
    {
    new str_out[512];
    for(new i = 0; i < MaxVeh; i++)
    {
    if(Dtc_PlayerHaveCar[playerid][i])
    {
    format(str_out, sizeof(str_out), "%s%s\n", str_out, CarName[PlayerCar[playerid][i][CarModel]-400]);
    }
    else
    {
    format(str_out, sizeof(str_out), "%s- - -\n", str_out);
    }
    }
    ShowPlayerDialog(playerid, DIALOG_CARKEY, DIALOG_STYLE_LIST, "Carkeys", str_out, "Auswahl", "Abbrechen");
    return 1;
    }


    Muss ich da einfügen das der Stauts ((Verwahrstelle)) Angezigt wird richtig?

  • if (strcmp("/opark", cmd, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 525 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(PlayerInfo[playerid][pMember] == 24||PlayerInfo[playerid][pLeader] == 24)
    {
    if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
    {
    SendClientMessage(playerid, COLOR_GREY, " An deinem Abschleppwagen ist kein Auto angehängt!");
    return 1;
    }
    new trailercar = GetVehicleTrailer(GetPlayerVehicleID(playerid));
    if(!IsADtCar(trailercar))
    {
    SendClientMessage(playerid, COLOR_GREY, " Dieses Auto kann hier nicht geparkt werden!!");
    return 1;
    }
    new Float:X,Float:Y,Float:Z;
    new Float:z_rot;
    GetVehiclePos(trailercar, X,Y,Z);
    GetVehicleZAngle(trailercar, z_rot);
    new carowner = GetDtCarOwner(trailercar);
    new slot = GetDtCarOwnerSlot(carowner,trailercar);
    PlayerCar[carowner][slot][CarPos_x] = X;
    PlayerCar[carowner][slot][CarPos_y] = Y;
    PlayerCar[carowner][slot][CarPos_z] = Z;
    PlayerCar[carowner][slot][CarRotate] = z_rot;
    if(carowner != 555)
    {
    OnPlayerCarUpdate(carowner,false);
    SendClientMessage(carowner, COLOR_WHITE, "[ORDNUNGSAMT] Ihr Fahrzeug wurde abgeschleppt, es steht im Hof des Ordnungsamtes!");
    }
    DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
    SendClientMessage(playerid, COLOR_YELLOW, " Du hast das Fahrzeug erfolgreich abgeschleppt!");
    return 1;
    } else {
    SendClientMessage(playerid, COLOR_GREY, " Du bist kein Mitglied des Ordnungsamtes!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du musst einen Abschleppwagen fahren!");
    return 1;
    }
    }


    Dann währe das meine Letzte Frage wie schreibe ich das um das das Car weg spawnt und ein befehl zum freikaufen bräuchte ich dazu das es dann an einer Stelle spawnt und er es neu Parken muss. Und das die Ordnungsamtler die Gang Fahrzeuge auch Parken könn nur die Staats Fraks nicht!

  • Frage 1:
    Setze das Fahreug einfach ganz weit weg.
    if (strcmp("/opark", cmd, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 525 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(PlayerInfo[playerid][pMember] == 24||PlayerInfo[playerid][pLeader] == 24)
    {
    if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
    {
    SendClientMessage(playerid, COLOR_GREY, " An deinem Abschleppwagen ist kein Auto angehängt!");
    return 1;
    }
    new trailercar = GetVehicleTrailer(GetPlayerVehicleID(playerid));
    if(!IsADtCar(trailercar))
    {
    SendClientMessage(playerid, COLOR_GREY, " Dieses Auto kann hier nicht geparkt werden!!");
    return 1;
    }
    new id = GetPlayerVehicleID(playerid);
    DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(playerid, x, y, z);
    SetVehiclePos(id, 9999.0, -9999.0, -200.0);
    new carowner = GetDtCarOwner(trailercar);
    new slot = GetDtCarOwnerSlot(carowner,trailercar);
    PlayerCar[carowner][slot][CarPos_x] = 9999.0;
    PlayerCar[carowner][slot][CarPos_y] = -9999.0;
    PlayerCar[carowner][slot][CarPos_z] = -200.0;
    PlayerCar[carowner][slot][CarRotate] = 0.0;
    PlayerCar[carowner][slot][Abgeschleppt] = 1; //Nicht vergessen im enum hinzuzufügen!
    if(carowner != 555)
    {
    OnPlayerCarUpdate(carowner,false);
    SendClientMessage(carowner, COLOR_WHITE, "[ORDNUNGSAMT] Ihr Fahrzeug wurde abgeschleppt, es steht im Hof des Ordnungsamtes!");
    }
    SendClientMessage(playerid, COLOR_YELLOW, " Du hast das Fahrzeug erfolgreich abgeschleppt!");
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist kein Mitglied des Ordnungsamtes!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du musst einen Abschleppwagen fahren!");
    return 1;
    }
    }


    Frage 2:
    Du fragst ab, ob das Fahrzeug das er freikaufen will abgeschleppt ist, wenn ja, dann setzt du es an die Position die du haben willst, und setzt Abgeschleppt auf 0.


    Frage 3:
    Da musst du noch abfragen, ob das Fahrzeug ein Player oder Gang Fahrzeug ist. Falls es ein Gangfahrzeug ist, und der Spieler nicht in der Ordnungsamt-Fraktion ist, dann verbietest du ihm den Befehl.
    Ich kann dir da keinen Code geben, da ich dein Gangfahrzeuge-System nicht kenne.

  • if (strcmp("/opark", cmd, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 525 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(PlayerInfo[playerid][pMember] == 24||PlayerInfo[playerid][pLeader] == 24)
    {
    if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
    {
    SendClientMessage(playerid, COLOR_GREY, " An deinem Abschleppwagen ist kein Auto angehängt!");
    return 1;
    }
    new trailercar = GetVehicleTrailer(GetPlayerVehicleID(playerid));
    if(!IsADtCar(trailercar))
    {
    SendClientMessage(playerid, COLOR_GREY, " Dieses Auto kann hier nicht geparkt werden!!");
    return 1;
    }
    new id = GetPlayerVehicleID(playerid);
    DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(playerid, x, y, z);
    SetVehiclePos(id, 9999.0, -9999.0, -200.0);
    new Carowner = GetDtCarOwner(trailercar);
    new slot = GetDtCarOwnerSlot(Carowner,trailercar);
    PlayerCar[Carowner][slot][CarPos_x] = 9999.0;
    PlayerCar[Carowner][slot][CarPos_y] = -9999.0;
    PlayerCar[Carowner][slot][CarPos_z] = -200.0;
    PlayerCar[Carowner][slot][CarRotate] = 0.0;
    PlayerCar[Carowner][slot][Abgeschleppt] = 1; //Nicht vergessen im enum hinzuzufügen!
    if(Carowner != 555)
    {
    OnPlayerCarUpdate(Carowner,false);
    SendClientMessage(Carowner, COLOR_WHITE, "[ORDNUNGSAMT] Ihr Fahrzeug wurde abgeschleppt, es steht im Hof des Ordnungsamtes!");
    }
    SendClientMessage(playerid, COLOR_YELLOW, " Du hast das Fahrzeug erfolgreich abgeschleppt!");
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist kein Mitglied des Ordnungsamtes!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du musst einen Abschleppwagen fahren!");
    return 1;
    }
    }
    Habe ich jetz eingefügt wen ich mein Privatfarhzeug z.b abschleppen möchte ist das Ordnungsamt car aufeinmal weg?

  • Oh, ja stimmt.
    new id = GetPlayerVehicleID(playerid);
    DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(playerid, x, y, z);
    SetVehiclePos(id, 9999.0, -9999.0, -200.0);
    Zu:
    new id = GetPlayerVehicleID(playerid);
    DetachTrailerFromVehicle(id);
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(playerid, x, y, z);
    SetVehiclePos(trailercar, 9999.0, -9999.0, -200.0);

  • if (strcmp("/opark", cmd, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 525 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(PlayerInfo[playerid][pMember] == 24||PlayerInfo[playerid][pLeader] == 24)
    {
    if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
    {
    SendClientMessage(playerid, COLOR_GREY, " An deinem Abschleppwagen ist kein Auto angehängt!");
    return 1;
    }
    new trailercar = GetVehicleTrailer(GetPlayerVehicleID(playerid));
    if(!IsADtCar(trailercar))
    {
    SendClientMessage(playerid, COLOR_GREY, " Dieses Auto kann hier nicht geparkt werden!!");
    return 1;
    }
    new id = GetPlayerVehicleID(playerid);
    DetachTrailerFromVehicle(id);
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    SetPlayerPos(playerid, x, y, z);
    SetVehiclePos(trailercar, 9999.0, -9999.0, -200.0);
    new Carowner = GetDtCarOwner(trailercar);
    new slot = GetDtCarOwnerSlot(Carowner,trailercar);
    PlayerCar[Carowner][slot][CarPos_x] = 9999.0;
    PlayerCar[Carowner][slot][CarPos_y] = -9999.0;
    PlayerCar[Carowner][slot][CarPos_z] = -200.0;
    PlayerCar[Carowner][slot][CarRotate] = 0.0;
    PlayerCar[Carowner][slot][Abgeschleppt] = 1; //Nicht vergessen im enum hinzuzufügen!
    if(Carowner != 555)
    {
    OnPlayerCarUpdate(Carowner,false);
    }
    SendClientMessage(playerid, COLOR_YELLOW, " Du hast das Fahrzeug erfolgreich abgeschleppt!");
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist kein Mitglied des Ordnungsamtes!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du musst einen Abschleppwagen fahren!");
    return 1;
    }
    }


    Das Fahrzeug spawnt zwar weg aber ich kann es nicht freikaufen!

  • Der User Sollte den gewählten Schlüssel benutzen wo das Fahrzeug Abgeschleppt ist.


    Es soll ein Fenster kommen wo drinnen steht:


    Fahrzeugname: [Vom Fahrzeug]
    Kaution: [Was er bezahlen muss] soll er bar da haben
    Grund: [Warum das Fahrzeug abgeschleppt wurde]
    Abschlepper: [Wer das Fahrzeug abgeschleppt hat]


    Ich habe 3 Positionen wo die Fahrzeuge dann spawnen sollen sofern wen eins dort steht am nexten platz [Nimm irgendwelche posen die ändere ich dann]


    /opark siehe oben muss noch ein befehl rein


    /opark [Kaution] [Grund]


    Danke für die hilfe Jeffry

  • Ok, ich geb dir nicht alles auf einmal, weil ich es ja nicht prüfen kann und nicht kompilieren kann, daher Schritt für Schritt.
    Teste es erst mal so:
    if(strcmp("/freikaufen", cmdtext, true) == 0)
    {
    new string[512], slot = Dtc_PlayerKey[playerid];
    if(PlayerCar[playerid][slot][Abgeschleppt] == 1)
    {
    format(string, sizeof(string), "Fahrzeugname: %s\n", string, CarName[PlayerCar[playerid][slot][CarModel]-400]);
    ShowPlayerDialog(playerid, DIALOG_FREIKAUFEN, DIALOG_STYLE_MSGBOX, "Information", string, "Freikaufen", "Abbrechen");
    }
    else SendClientMessage(playerid, 0xFF0000FF, "Error: Fahrzeug ist nicht abgeschleppt, wechsele den Schlüssel.");
    return 1;
    }


    OnDialogResponse:
    if(dialogid == DIALOG_FREIKAUFEN)
    {
    static place;
    new slot = Dtc_PlayerKey[playerid];
    switch(place)
    {
    case 0:
    {
    //Bei "CarId" muss das rein, was bei CreateVehicle vom PlayerCar steht.
    SetVehiclePos(PlayerCar[playerid][slot][CarId], 1111.1, 1111.1, 111.1);
    PlayerCar[playerid][slot][CarPos_x] = 1111.1;
    PlayerCar[playerid][slot][CarPos_y] = 1111.1;
    PlayerCar[playerid][slot][CarPos_z] = 111.1;
    PlayerCar[playerid][slot][CarRotate] = 0.0;
    place = 1;
    }
    case 1:
    {
    //Bei "CarId" muss das rein, was bei CreateVehicle vom PlayerCar steht.
    SetVehiclePos(PlayerCar[playerid][slot][CarId], 2222.2, 2222.2, 222.2);
    PlayerCar[playerid][slot][CarPos_x] = 2222.2;
    PlayerCar[playerid][slot][CarPos_y] = 2222.2;
    PlayerCar[playerid][slot][CarPos_z] = 222.2;
    PlayerCar[playerid][slot][CarRotate] = 0.0;
    place = 2;
    }
    case 2:
    {
    //Bei "CarId" muss das rein, was bei CreateVehicle vom PlayerCar steht.
    SetVehiclePos(PlayerCar[playerid][slot][CarId], 3333.3, 3333.3, 333.3);
    PlayerCar[playerid][slot][CarPos_x] = 3333.3;
    PlayerCar[playerid][slot][CarPos_y] = 3333.3;
    PlayerCar[playerid][slot][CarPos_z] = 333.3;
    PlayerCar[playerid][slot][CarRotate] = 0.0;
    place = 0;
    }
    }
    PlayerCar[playerid][slot][Abgeschleppt] = 0;
    OnPlayerCarUpdate(playerid,false);
    return SendClientMessage(playerid, 0xFFFFFFFF, "Freigekauft.");
    }
    Es ist dann so, dass er immer von Parkplatz 1 bis 3 durchrotiert.
    Teste das mal so aus, ob das mit dem Freikauf klappt, soweit natürlich. Die Koordinaten musst du anpassen. Wenn das klappt, poste den Code mit den neuen Koordinaten wieder.


    Nicht vergessen DIALOG_FREIKAUFEN zu definieren.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen