JOB - Müllmann

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

  • new Float: bmx1[2][3] =
    {
    {1860.9629,-2042.7212,13.5469},
    {1866.7927,-2056.9846,13.3828}
    };


    new bmxo[MAX_PLAYERS];
    new inviteID[MAX_PLAYERS];
    new istdabei[MAX_PLAYERS];
    new wurdeangefragt[MAX_PLAYERS];
    new checkpointgarbage[MAX_PLAYERS];
    new Float:kubik[MAX_VEHICLES];
    new Float:maxkubik[MAX_VEHICLES];


    CMD:garbage(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    if(istdabei[playerid] == 0)
    {
    if(Spieler[playerid][pJob] == 1)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new veh = GetPlayerVehicleID(playerid);
    for(new i = 0;i<sizeof(Muelllwagen);i++)
    {
    if(veh == Muelllwagen[i])
    {
    new rand = random(sizeof(bmx1));
    new string[128],pID,string2[128];
    //if(sscanf(params,"d",pID))return SendClientMessage(playerid,COLOR_GREY,"[Benutze] /garbage [SpielerID]");
    if(wurdeangefragt[playerid] == 0)
    {
    inviteID[playerid] = pID;
    format(string,sizeof(string),"Du hast %s erfolgreich eine Anfrage gesendet, bitte warte bis er sie annehmt!",inviteID[playerid]);
    SendClientMessage(playerid,COLOR_BLUE,string);
    format(string2,sizeof(string2),"%s hat dich angefragt, benutze /agarbage um die Anfrage anzunehmen",GetName(playerid));
    SendClientMessage(inviteID[playerid],COLOR_BLUE,string2);
    wurdeangefragt[pID] = 1;
    maxkubik[veh] = 15.0;
    kubik[veh] = 0.0;
    istdabei[playerid] = 1;
    checkpointgarbage[playerid] = playerid;
    bmxo[playerid] = SetPlayerCheckpoint(checkpointgarbage[playerid],bmx1[rand][0],bmx1[rand][1],bmx1[rand][2],3);
    return 1;
    }
    }
    }
    SendClientMessage(playerid, COLOR_RED, "Du bist in keinem Müllwagen.");
    return 1;
    }
    }
    else return SendClientMessage(playerid, COLOR_RED, "Du bist kein Müllmann.");
    }
    }
    return 1;
    }




    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    if(IsVehicleABus(vehicleid))
    {
    if(Spieler[playerid][pJob] == 1)
    {
    if(GetPlayerCheckpointType(playerid) == CP_TYPE_BUS)
    {
    SendClientMessage(playerid, COLOR_GREY, "* Deine Runde wird abgebrochen, wenn du nicht wieder in den Bus einsteigst!");
    }
    }
    }
    if(IsVehicleATruck(vehicleid))
    {
    if(Spieler[playerid][pJob] == 3)
    {
    if(GetPlayerCheckpointType(playerid) == CP_TYPE_TRUCK)
    {
    SendClientMessage(playerid, COLOR_GREY, "* Deine Fahrt wird abgebrochen, wenn du nicht wieder in den Truck einsteigst!");
    UnfreezePlayer(playerid);
    }
    }
    }
    new rand = random(sizeof(bmx1));
    if(bmxo[playerid] == 1)
    {
    bmxo[playerid] = SetPlayerCheckpoint(playerid,bmx1[rand][0],bmx1[rand][1],bmx1[rand][2],3);
    }
    inviteID[playerid] = pID;
    format(string,sizeof(string),"Du hast %s erfolgreich eine Anfrage gesendet, bitte warte bis er sie annehmt!",inviteID[playerid]);
    SendClientMessage(playerid,COLOR_BLUE,string);
    format(string2,sizeof(string2),"%s hat dich angefragt, benutze /accept garbage um die Anfrage anzunehmen",SpielerName(playerid));
    SendClientMessage(inviteID[playerid],COLOR_BLUE,string2);
    wurdeangefragt[pID] = 1;
    maxkubik[veh] = 15.0;
    kubik[veh] = 0.0;
    istdabei[playerid] = 1;
    checkpointgarbage[playerid] = playerid;
    return 1;
    }




    new fahrzeug[MAX_PLAYERS];
    new muellsacke[MAX_VEHICLES];
    public OnPlayerEnterDynamicCP(playerid, checkpointid)
    {
    if(checkpointid == bmxo[playerid])
    {
    SetPlayerAttachedObject(playerid,0,1264,6,0.165999,0.003000,-0.184999,0.000000,0.000000,0.000000,0.498999,0.466999,0.489000);
    ApplyAnimation(playerid,"CARRY","liftup",4.1,0, 0, 0, 1, 1);
    ClearAnimations(playerid,1);
    SetPlayerSpecialAction(playerid,25);
    new Float:vX,Float:vY,Float:vZ;
    GetPosVorVeh(pMuellAuto[playerid], -5.0, vX, vY, vZ);
    DestroyDynamicCP(bmxo[playerid]);
    bmxo[playerid] = -1;
    fahrzeug[playerid] = CreateDynamicCP(vX,vY,vZ,4.0,-1,-1,playerid,30.0);
    TogglePlayerDynamicCP(playerid,fahrzeug[playerid],1);
    new rand1 = 5+random(3);
    muellsacke[pMuellAuto[playerid]] = rand1;
    return 1;
    }
    else if(checkpointid == fahrzeug[playerid])
    {
    if(kubik[pMuellAuto[playerid]] == 5.0)
    {
    SendClientMessage(playerid,COLOR_RED,"Das Fahrzeug ist voll, benutze /garbagestop");
    ClearAnimations(playerid,1);
    SetPlayerSpecialAction(playerid,0);
    RemovePlayerAttachedObject(playerid, 0);
    kubik[pMuellAuto[playerid]] = 0;
    DestroyDynamicCP(fahrzeug[playerid]);
    fahrzeug[playerid] = -1;
    }
    else
    {
    if(muellsacke[pMuellAuto[playerid]] == 1)
    {
    muellsacke[pMuellAuto[playerid]] = 0;
    ClearAnimations(playerid,1);
    SetPlayerSpecialAction(playerid,0);
    RemovePlayerAttachedObject(playerid, 0);
    DestroyDynamicCP(fahrzeug[playerid]);
    fahrzeug[playerid] = -1;
    kubik[pMuellAuto[playerid]] += 0.5;
    new rand = random(sizeof(bmx1));
    bmxo[playerid] = CreateDynamicCP(bmx1[rand][0],bmx1[rand][1],bmx1[rand][2],5.0,-1,-1,playerid,1000.0);
    return 1;
    }
    else
    {
    new string[123],string2[123];
    ClearAnimations(playerid,1);
    SetPlayerSpecialAction(playerid,0);
    kubik[pMuellAuto[playerid]] += 0.5;
    muellsacke[pMuellAuto[playerid]] -= 1;//HIER
    RemovePlayerAttachedObject(playerid, 0);
    format(string,sizeof(string),"Kubik: %0.1f/15.0",kubik[pMuellAuto[playerid]]);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
    format(string2,sizeof(string2),"Müllsäcke: %d",muellsacke[pMuellAuto[playerid]]);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,string2);
    DestroyDynamicCP(fahrzeug[playerid]);
    fahrzeug[playerid] = -1;
    bmxo[playerid] = CreateDynamicCP(globalVar[playerid][0],globalVar[playerid][1],globalVar[playerid][2],4.0,-1,-1,playerid,30.0);
    return 1;
    }
    }
    }
    return 1;
    }



    Hey, ich wollte fragen wie ich ein Befehl mache /accept garbage das der Spieler die Anfrage annehmen kann.
    Meine andere frage ist das der Müllwagen Fahrer mit /garbagestop um die Route abzubrechen -> Er muss zur abladestelle fahren um die Kubiks abzuladen

  • Naja du hast doch schon die Variable "wurdeangefragt" .. Brauchst nurnoch beim /accept Befehl abfragen ob die Variable auf 1 ist. Wenn ja nimmst du die Anfrage an. Du solltest dann beim Anfragen noch irgendwo die playerid von dem Anfragendem speichern damit du ihm auch zb ne Nachricht senden kannst das seine Anfrage angenommen wurde.



    Und was genau ist das Problem mit dem Abbrechen? Abfragen ob er gerade eine Route fährt -> Checkpoint setzen -> Je nachdem wie weit er war oder wie viel er gesammelt hat bezahlen

  • Also füg mal noch oben hinzu:

    Code
    new wurdeangefragtvon[MAX_PLAYERS];



    und in dem Befehl an der Stelle wo die "wurdeangefragt" Variable verändert wird fügst du noch das hinzu:

    Code
    wurdeangefragt[pId] = 1; // Dein Code 
    wurdeangefragtvon[pId] = playerid;

    Also in dem "garbage" Befehl müsste das glaub ich gewesen sein.



    Wenn dann der Spieler den accept Befehl eingibt (den wirst du ja selber schreibn können) fragst du einfach folgendes ab:


  • new globalVar[2];
    bmxo[playerid] = CreateDynamicCP(globalVar[playerid][0],globalVar[playerid][1],globalVar[playerid][2],4.0,-1,-1,playerid,30.0); //Hier 13600



    C:\Users\Windows 7\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(13600) : error 001: expected token: ",", but found "["
    C:\Users\Windows 7\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(13600) : error 029: invalid expression, assumed zero
    C:\Users\Windows 7\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(13600) : warning 215: expression has no effect
    C:\Users\Windows 7\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(13600) : error 001: expected token: ";", but found "]"
    C:\Users\Windows 7\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(13600) : fatal error 107: too many error messages on one line





    /*CMD:accept garbage(playerid,params[])
    {
    if(wurdeangefragt[playerid] == 0) return SendClientMessage(playerid, COLOR_RED, "Du wurdest nicht angefragt.");
    if(!IsPlayerConnected(wurdeangefragtvon[playerid])) return SendClientMessage(playerid, COLOR_RED, "Der Anfragende ist nicht mehr online.");
    {
    SendClientMessage(wurdeangefragtvon[playerid], COLOR_GREEN, "Die Anfrage wurde angenommen!");
    wurdeangefragt[pId] = 1; // Dein Code
    wurdeangefragtvon[pId] = playerid;
    }
    else
    {
    wurdeangefragt[playerid] = 0;
    }
    return 1;
    }*/


    Meinst dus so @SaschaLois @Jeffry

    Einmal editiert, zuletzt von Dr. Frauenarzt () aus folgendem Grund: Fehler korrektur


  • /*CMD:accept garbage(playerid,params[])
    {
    if(wurdeangefragt[playerid] == 0) return SendClientMessage(playerid, COLOR_RED, "Du wurdest nicht angefragt.");
    if(!IsPlayerConnected(wurdeangefragtvon[playerid])) return SendClientMessage(playerid, COLOR_RED, "Der Anfragende ist nicht mehr online.");
    {
    SendClientMessage(wurdeangefragtvon[playerid], COLOR_GREEN, "Die Anfrage wurde angenommen!");
    wurdeangefragt[pId] = 1; // Dein Code
    wurdeangefragtvon[pId] = playerid;
    }
    else
    {
    wurdeangefragt[playerid] = 0;
    }
    return 1;
    }*/


    passt der Befehl wollte ein Befehl machen das der Spieler ie frage annehmen kann.

  • /*CMD:accept garbage(playerid,params[])

    Die Lücke hier zwischen accept und garbage geht nicht.



    wurdeangefragt[pId] = 1; // Dein Code

    pId ist im Befehl nirgends definiert, das dürfte dir also einen Fehler ausgeben.



    Wie sieht denn der Befehl für das Absenden der Frage aus?



    PS:
    Poste deinen PWN Codes bitte mal korrekt eingerückt.
    Entweder über den Quelltext Editor (erster Button oben vor den beiden Pfeilen) oder über den [code=c][/code] Tag.

  • Dann kannst du es so machen:
    CMD:garbage(playerid,params[])
    {
    if(IsPlayerConnected(playerid))
    {
    if(istdabei[playerid] == 0)
    {
    if(Spieler[playerid][pJob] == 1)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new veh = GetPlayerVehicleID(playerid);
    for(new i = 0;i<sizeof(Muelllwagen);i++)
    {
    if(veh == Muelllwagen[i])
    {
    new rand = random(sizeof(bmx1));
    new string[145], pID;
    if(sscanf(params,"d",pID))return SendClientMessage(playerid,COLOR_GREY,"[Benutze] /garbage [SpielerID]");
    if(wurdeangefragt[playerid] == 0)
    {
    inviteID[playerid] = pID;
    format(string,sizeof(string),"Du hast %s (ID: %d) erfolgreich eine Anfrage gesendet, bitte warte bis er sie annehmt!",GetName(pID), inviteID[playerid]);
    SendClientMessage(playerid,COLOR_BLUE,string);
    format(string,sizeof(string),"%s hat dich angefragt, benutze /agarbage um die Anfrage anzunehmen",GetName(playerid));
    SendClientMessage(inviteID[playerid],COLOR_BLUE,string);
    wurdeangefragt[pID] = 1;
    wurdeangefragtvon[pID] = playerid;
    pMuellAuto[playerid] = veh;
    new Float:vX,Float:vY,Float:vZ;
    GetPosVorVeh(pMuellAuto[playerid], -10.0, vX, vY, vZ);
    maxkubik[veh] = 15.0;
    kubik[veh] = 0.0;
    istdabei[playerid] = 1;
    checkpointgarbage[playerid] = playerid;
    bmxo[playerid] = SetPlayerCheckpoint(checkpointgarbage[playerid],bmx1[rand][0],bmx1[rand][1],bmx1[rand][2],3);
    return 1;
    }
    }
    }
    SendClientMessage(playerid, COLOR_RED, "Du bist in keinem Müllwagen.");
    return 1;
    }
    }
    else return SendClientMessage(playerid, COLOR_RED, "Du bist kein Müllmann.");
    }
    }
    return 1;
    }


    CMD:agarbage(playerid,params[])
    {
    if(wurdeangefragt[playerid] == 0) return SendClientMessage(playerid, COLOR_RED, "Du wurdest nicht angefragt.");
    if(!IsPlayerConnected(wurdeangefragtvon[playerid]))
    {
    wurdeangefragt[playerid] = 0;
    return SendClientMessage(playerid, COLOR_RED, "Der Anfragende ist nicht mehr online.");
    }
    SendClientMessage(wurdeangefragtvon[playerid], COLOR_GREEN, "Die Anfrage wurde angenommen!");
    new string[145];
    format(string, sizeof(string), "%s (ID: %d) hat deine Anfrage angenommen.", GetName(playerid), playerid);
    SendClientMessage(inviteID[playerid],COLOR_BLUE,string);
    return 1;
    }

  • Perfekt,


    Code
    CMD:garbagestop(playerid,params[])
    {
        SendClientMessage(playerid, COLOR_RED, "Die Abgabestelle der Mülldeponie wurde auf der Map rot makiert.");
        SetPlayerCheckpointEx(playerid, 1770.6328,-2023.2981,14.6614);
        return 1;
    }


    so wen der Spieler /garbagestop eingibt kommt ein Checkpoint wo her hin muss -> so wie füge ich ein wen er ihn Checkpoint dann reinfährt das er 10 Sekunden gefreezt wird und die Nachricht bekommt: Das Fahrzeug wird nun entladen. Bitte warten.. nach den 10 Sekunden kommt die Nachricht Du hast z,b 2.7 Kubikmeter Müll abgelifert und erhältst am nächsten Payday 2799$.


    so aber 1 Kubikmeter bringt 1.000$ 0.1 Kubikmeter sollten 100$ wert sein.


    es gibt ja user die z.b bei 2,7 Kubikmeter aufhören so aber man kann ja nicht so sein das sie troz den wenigen kubikmeter 15.000$ den als lohn gibt.
    Wen die spieler jetzt 0.5 Kubikmeter abgeben wird das natürlich nur 500$ bringen ganz klar g


    @Jeffry

    2 Mal editiert, zuletzt von Dr. Frauenarzt () aus folgendem Grund: Befehl & Text eingefügt

  • so wie füge ich ein wen er ihn Checkpoint dann reinfährt das er 10 Sekunden gefreezt wird und die Nachricht bekommt: Das Fahrzeug wird nun entladen.

    Starte bei OnPlayerEnterCheckpoint (Position prüfen / Checkpoint ID falls mit Streamer) einen Timer (SetTimerEx) und zeige die Nachricht entsprechend an.



    so aber 1 Kubikmeter bringt 1.000$ 0.1 Kubikmeter sollten 100$ wert sein.

    gehalt = kubikmeter[playerid] * 100;

  • Einmal editiert, zuletzt von Dr. Frauenarzt () aus folgendem Grund: Überarbeitet