Job ausschmücken

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
  • Guten Morgen.
    so sieht mein erster Job aus


    enum:
    enum trashEnum{
    Float:t_x,
    Float:t_y,
    Float:t_z
    }


    new tCPs[][trashEnum] ={
    {1866.4852,1375.1176,17.4560},
    {2152.5894,1701.5405,11.2893}, // checkpoint 1
    {2502.8469,1657.3530,17.1232}, // checkpoint 2
    {2496.6907,1529.8173,11.2110}, // checkpoint 3
    {2176.5652,1127.8326,13.1679}, // checkpoint 4
    {1716.6417,1439.4584,11.2332}// checkpoint endedertour
    };



    Befehl:
    ocmd:Muelltransport(playerid,params[])
    {
    if(!IsPlayerInRangeOfPoint(playerid,5,1866.4852,1375.1176,17.4560))return
    SendClientMessage(playerid,grün,"Du kannst den Job hier nicht Starten.");
    new Float:xc,Float:yc,Float:zc,Float:ac;
    GetPlayerPos(playerid,xc,yc,zc);
    GetPlayerFacingAngle(playerid,ac);
    new vID = CreateVehicle(408,xc,yc,zc,ac,1,1,-1);
    SetPVarInt(playerid,"trash_car",vID);
    PutPlayerInVehicle(playerid,vID,0);

    SetPlayerCheckpoint(playerid,tCPs[0][t_x],tCPs[0][t_y],tCPs[0][t_z],5);

    SetPVarInt(playerid,"trash_cp",0);
    SetPVarInt(playerid,"trash_job",1);
    return 1;
    }


    OnPlayerExitVehicle:
    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    if(GetPVarInt(playerid, "trash_job"))
    {
    SetPVarInt(playerid, "trash_job", 0);
    DestroyVehicle(GetPVarInt(playerid, "trash_car"));
    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid,helblau,"Du bist aus dem Müllwagen ausgestiegen. Somit ist dein Job beendet");
    }
    return 1;
    }


    Checkpoints:
    public OnPlayerEnterCheckpoint(playerid)
    {
    if(GetPVarInt(playerid, "trash_job"))
    {
    //Wenn trash job ausgeführt wird
    new cID = GetPVarInt(playerid, "trash_cp");
    if(IsPlayerInRangeOfPoint(playerid, 5, tCPs[cID][t_x], tCPs[cID][t_y], tCPs[cID][t_z]))
    {
    cID++;

    if(cID >= sizeof(tCPs))
    {
    GivePlayerMoney(playerid, 3000);
    SetPVarInt(playerid, "trash_cp", 0);
    SetPlayerCheckpoint(playerid, tCPs[0][t_x], tCPs[0][t_y], tCPs[0][t_z], 5);
    SendClientMessage(playerid,helblau,"Du hast soeben 300$ verdient");
    }
    else
    {
    SetPVarInt(playerid, "trash_cp", cID);
    SetPlayerCheckpoint(playerid, tCPs[cID][t_x], tCPs[cID][t_y], tCPs[cID][t_z], 5);
    }
    return 1;
    }
    }
    DisablePlayerCheckpoint(playerid);
    return 1;
    }



    Ich habe mir das wie folgt vorgestellt:


    Die Fahrzeuge stehen schon irgendwo ich steige ein und mache dann /Muelltransport.
    Dann kommt eine Nachricht: "sie haben den Job gestartet".


    So wenn ich dann zu ein Haus/Bizz usw. fahre muss ich aussteigen und an die Tonnen gehen und mit /schieben die Tonnen schieben. Die Tonnen sind dann bei mir auf dem Spieler auf beide Hände als Objekt.
    Dann wenn ich am Müllauto stehe muss ich /Tonneabstellen machen und /Muellentleren eintrippen. Nach dem ich /Muellentleren getippt habe wird die Tonne hochgehoben und wie beim richtigen Müllwagen bewegt und leer gemacht.



    2: Frage:


    So nun meine andere Frage.


    Wie kann ich Jobs machen so das wenn ich /Trucker mache ein Dialog kommt wo drinsteht "Produkteliefern" "Tankliefern" "Waffenliefern". Dann klick ich auf "Tankliefern" und mir werden die Tankliefercheckpoints angezeigt und nicht die vom Produkte und Waffen.
    Möchte auch das jede route unterschiedlich verdient da ich nicht möchte das zu viel Geld dadurch bei mein script geht.

  • Zur 1. Frage weiss ich nicht tut mir leid.


    2. Frage:
    Erst erstellst du ein Dialog.
    Dann wenn man /Trucker macht, erscheint der Dialog.
    Dann erstellst du einfach nur "3 Jobs! sogesehen!" Also so:

    enum wlieferEnum{
    Float:t_x,
    Float:t_y,
    Float:t_z
    }


    enum tlieferEnum{
    Float:t_x,
    Float:t_y,
    Float:t_z
    }


    enum plieferEnum{
    Float:t_x,
    Float:t_y,
    Float:t_z
    }

    Checkpoints ganz normal machen, weisst du ja schon!


    Im Dialog muss dann folgendes sein:



    if(dialogid == DIALOG_TRUCKER)
    {
    if(response)
    {
    if(listitem == 0)
    {
    SetPlayerCheckpoint(playerid, wlCPs[0][wl_x], wlCPs[0][wl_y], wlCPs[0][w_z],10);
    SetPVarInt(playerid, "wliefern_cp", 0);
    SetPVarInt(playerid, "wliefern_job", 1);
    }
    if(listitem == 1)
    {
    //...
    }
    if(listitem == 2)
    {
    //....
    }
    }
    }


    Der Rest ganz normal!


    MFG

  • also ich habe mir schon mal folgendes gemacht:
    #define DIALOG_TRUCKER 5
    enum transportEnum{
    Float:g_x,
    Float:g_y,
    Float:g_Z
    }
    if(dialogid==DIALOG_TRUCKER)
    {
    if(response)
    {
    if(listitem= 0)
    {

    }
    if(listitem=1)
    {

    }
    if(listitem= 2)
    {

    }
    }
    }



    für enum transportEnum{
    Float:g_x,
    Float:g_y,
    Float:g_Z
    }
    new trcps[][transportEnum]{
    Koordinaten
    } so und dann muss ich im Befehl doch nur noch dann ShowPlayerDialog machen oder?