Farmer Problem

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
  • Hey
    Ich bastel zur zeit an ein Farmer System habe aber das Problem das beim 2 durchlauf ( also nach 2 Sekunden meine varriable von farmtrucker -996879983 ist aber wieso ?


    //=====================================================================================================================================================
    //=====================================================================================================================================================
    // Bauer
    new Trailerid[MAX_VEHICLES];
    new Tractorid[MAX_VEHICLES];
    enum enum_Weizen
    {
    w_ID,
    w_Objekt,
    Float:w_X,
    Float:w_Y,
    Float:w_Z,
    w_Zustand
    }
    new Weizen[][enum_Weizen];
    enum playerfarminfo
    {
    bool:farm_aktiv,
    farmteil,
    farmtruck,
    farmtrucki,
    farmtruckinhalt[MAX_VEHICLES],
    farmsaehen,
    farmernten,
    w_weizenzahl
    }
    new farminfo[MAX_PLAYERS][playerfarminfo];
    //OnPlayerStateChange
    if(vModel == 531)
    {
    if(Jobc[i][Playerid] != -1)
    {
    SendClientMessage(playerid,ROT,"Das Fahrzeug wird schon benutzt.");
    return RemovePlayerFromVehicle(playerid);
    }
    farminfo[playerid][farm_aktiv] = true;
    Jobc[i][Playerid] = playerid;
    farminfo[playerid][farmtruck] = Veh;
    farminfo[playerid][farmtrucki] = i;
    farminfo[playerid][farmteil] = 1;
    farminfo[playerid][w_weizenzahl] = 0;
    PlayerTextDrawShow(playerid, Job[playerid]);
    PlayerTextDrawShow(playerid, Job1[playerid]);
    TextDrawShowForPlayer(playerid,Jobh);
    TextDrawShowForPlayer(playerid,Jobh1);
    TextDrawShowForPlayer(playerid,Jobh2);
    format(string,sizeof(string),"Farmer");
    PlayerTextDrawSetString(playerid,Job[playerid], string);
    format(string,sizeof(string),"S\154hen~n~%d/%d Angepflanzt~n~Jobcarid %d",farminfo[playerid][w_weizenzahl],GetBauernMaxWeizen(playerid),farminfo[playerid][farmtruck]);
    PlayerTextDrawSetString(playerid,Job1[playerid], string);
    return 1;
    }
    else
    {
    if(Jobc[i][Playerid] != -1 && Jobc[i][Playerid] != playerid)
    {
    SendClientMessage(playerid,ROT,"Das Fahrzeug wird schon benutzt.");
    return RemovePlayerFromVehicle(playerid);
    }
    }
    ocmd:saehen(playerid)
    {
    if(sInfo[playerid][pJob] != 4) return SendClientMessage(playerid,ROT,"Du bist kein Farmer.");
    if(farminfo[playerid][farm_aktiv] == false) return SendClientMessage(playerid,ROT,"Du hast kein Schl�ssel daf�r.");
    if(farminfo[playerid][farmteil] != 1) return SendClientMessage(playerid,ROT,"Du brauchst gerade nicht S�hen.");
    if(farminfo[playerid][farmsaehen] == 1) return SendClientMessage(playerid,ROT,"Du S�hst gerade schon.");
    farminfo[playerid][farmsaehen] = 1;
    return 1;
    }
    public SekundenTimer()
    {
    for(new i = 0; i <= GetPlayerPoolSize(); i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(sInfo[i][pJob] == 4)
    {
    if(farminfo[i][farm_aktiv] != true) continue;
    for(new w = 0; w {
    if(Weizen[w][w_Z] != 127.59)
    {
    Weizen[w][w_Z] += 0.5;
    if(Weizen[w][w_Z] == 126.200) Weizen[w][w_Z] = 127.59;
    MovePlayerObject(i,Weizen[w][w_Objekt], Weizen[w][w_X], Weizen[w][w_Y], Weizen[w][w_Z],0.35,0.0, 0.0, 0.0);
    }
    }
    if(!IsPlayerInArea(i,-1191.2891,-1060.6648,-1007.6477,-930.9543)) continue;
    if(farminfo[i][farmsaehen] == 1)
    {
    if(!IsPlayerInAnyVehicle(i)) return SendClientMessage(i,ROT,"Du musst dich in einem Fahrzeug befinden!"),farminfo[i][farmsaehen] = 0;
    if(GetPlayerVehicleID(i) != farminfo[i][farmtruck]) return SendClientMessage(i,ROT,"Du bist nichtmehr in dein Jobfahrzeug."),farminfo[i][farmsaehen] = 0;
    if(IsPlayerZuNahAnPflanze(i)) return SendClientMessage(i,ROT,"Du kannst die Pflanzen nicht so dicht an einander Pflanzen!");
    new Float:z,w = farminfo[i][w_weizenzahl],string[128];
    GetPlayerPos(i,Weizen[w][w_X],Weizen[w][w_Y],z);
    Weizen[w][w_Z] = 123.200;
    Weizen[w][w_Objekt] = CreatePlayerObject(i,855,Weizen[w][w_X],Weizen[w][w_Y],123.200,0.0, 0.0, 0.0);
    farminfo[i][w_weizenzahl] ++;
    format(string,sizeof(string),"S\154hen~n~%d/%d Angepflanzt~n~Jobcarid %d",farminfo[i][w_weizenzahl],GetBauernMaxWeizen(i),farminfo[i][farmtruck]);
    PlayerTextDrawSetString(i,Job1[i], string);
    if(farminfo[i][w_weizenzahl] == GetBauernMaxWeizen(i))
    {
    farminfo[i][farmsaehen] = 0;
    SendClientMessage(i,GR�N,"Du kannst nun das geseete Weizen ernten.");
    farminfo[i][farmteil] = 2;
    format(string,sizeof(string),"Ernten~n~%d/%d Geerntet~n~Jobcarid %d",GetBauernMaxWeizen(i)-farminfo[i][w_weizenzahl],GetBauernMaxWeizen(i),farminfo[i][farmtruck]);
    PlayerTextDrawSetString(i,Job1[i], string);
    }
    }
    if(farminfo[i][farmernten] == 1)
    {
    if(!IsPlayerInAnyVehicle(i)) return SendClientMessage(i,ROT,"Du musst dich in einem Fahrzeug befinden!"),farminfo[i][farmernten] = 0;
    if(GetPlayerVehicleID(i) != farminfo[i][farmtruck]) return SendClientMessage(i,ROT,"Du bist nichtmehr in dein Jobfahrzeug."),farminfo[i][farmernten] = 0;
    }
    }
    }
    return 1;
    }

  • Hab es mir angesehen und keinen Fehler gefunden, die Variable wird ja nur einmal gesetzt und beim ersten mal ist ja laut dir alles korrekt.
    Sicher das du nicht noch wo anders das ganze nutzt?


    Und der nächste Punkt -> Bitte das nächste mal eine anständige Fehlerbeschreibung + richtige (richtig BENANNTE) Variable direkt oben mit dazu schreiben,
    schließlich brauchst du Hilfe.

  • Hab es mir angesehen und keinen Fehler gefunden, die Variable wird ja nur einmal gesetzt und beim ersten mal ist ja laut dir alles korrekt.
    Sicher das du nicht noch wo anders das ganze nutzt?


    Und der nächste Punkt -> Bitte das nächste mal eine anständige Fehlerbeschreibung + richtige (richtig BENANNTE) Variable direkt oben mit dazu schreiben,
    schließlich brauchst du Hilfe.

    Hab ich doch gemacht ?

    Schau dir mal die Deklaration vom Array Weizen an :huh::)

    Ja wo Liegt das Problem ?

  • aber das geht nicht oder


    So zumindest nicht, weil du mit "Weizen[]" ein Array ohne Größe erstellst.
    Dort muss eine Maximalangabe drin stehen.
    Zudem zählt dieses Array ja für alle Spieler.


    Was du brauchst ist eine Variable im Spieler-Array, die hochzählt, wie viele Weizen der Spieler besitzt, und dann kannst du je nach Skill abfragen, ob er noch mehr besitzen darf.



    Und dann musst du das Array für alle Spieler haben, sprich:
    new Weizen[MAX_PLAYERS][MAX_WEIZEN][enum_Weizen];


    MAX_WEIZEN entspricht der maximalen Anzahl an Weizen, die ein Spieler haben kann, wenn er im höchsten Skill ist.