Beiträge von simpson95

    Hallo,


    ich wollte mir den Füllstand von meinem Fahrsilo über die vehicles.xml ändern. Ich habe da alle werte die mit dem Füllstand des Fahrsilos zu tun haben geändert jedoch ohne Erfolg.


    Weiß jemand von Euch wie ich da vorgehen soll?




    mfg,
    simpson95

    hallo
    habe ein Problem, und zwar wenn ich das Spiel starte ist alles normal doch wenn ich ein Spielstand laden will lädt keine der beiden Maps.
    Patch 1.1 ist drauf und neu installiert habe ich auch schon.


    hier ist mal die LOG:


    [expander]GIANTS Engine Runtime 6.0.2 64bit (Build Date: Oct 28 2014)
    Copyright (c) 2008-2014, GIANTS Software GmbH (giants-software.com), All Rights Reserved.
    Copyright (c) 2003-2014, Christian Ammann and Stefan Geiger, All Rights Reserved.
    Application: FarmingSimulator2015
    Main System
    CPU: Intel(R) Core(TM)2 Duo CPU P7450 @ 2.13GHz
    Memory: 4095 MB
    OS: Windows NT 6.2 64-bit
    Physics System
    Version: 5.9.4
    Thread(s): 1
    Input System
    Keyboard enabled
    Mouse enabled
    Gamepad/Joystick enabled
    Force Feedback disabled
    Name: Xbox 360 Controller
    Number of Axes: 5
    Number of Buttons: 14
    Sound System
    Driver: OpenAL
    Version: 1.1
    Device: Generic Software
    Max. sources: 256
    Render System
    Driver: OpenGL
    Card Vendor: NVIDIA Corporation
    Renderer: GeForce 9600M GS/PCIe/SSE2
    Version: 3.3.0
    Shader Version: 3.30 NVIDIA via Cg compiler
    max_texture_layers: 16
    OpenGL initialization successful
    Hardware Profile
    Level: High (forced)
    View Distance Factor: 1.100000
    Shadow Quality: 1.000000
    Skip Mipmaps: 0
    LOD Distance Factor: 1.100000
    Terrain LOD Distance Factor: 1.500000
    Foliage View Distance Factor: 1.400000
    Volume Mesh Tessellation Factor: 0.850000
    Tyre Tracks Segments Factor: 2.000000
    Farming Simulator 15
    Version: 1.1.0.0 RC12
    Available Languages: de
    Language: de
    Game vehicle types loaded
    Mod directory: C:/Users/Fandel/Documents/My Games/FarmingSimulator2015/mods/
    Load mod: BrantnerDPW18000
    Load mod: FS15_flieglVFW10600
    Load mod: FS15_kuhnSitera3000
    Load mod: FS15_kuhnVB2190
    Load mod: FS15_lamborghiniNitro120
    Register vehicle type: BrantnerDPW18000.dpw18000
    data/sky/sky_day_night.i3d (9.86 ms)
    data/sky/rain.i3d (2.38 ms)
    data/sky/hail.i3d (1.69 ms)
    data/sky/dust.i3d (1.07 ms)
    data/maps/map02.i3d (16716.27 ms)
    Error: Running LUA method 'loadMapFinished'.
    D:/code/lsim2015/build/finalbin/dataS/scripts/gui/InGameMessage.lua(35) : attempt to index a nil value
    Application exit request forced.
    Application exit request forced.
    [/expander]

    Hallo liebe Community,


    wollte mal fragen ob zufällig einer weiß wie man den Stundenzähler (OperatingTime) nach den Stunden im Spiel laufen lassen kann und nicht nach den realen Stunden? Habe mir das so vorgestellt, dass man die Zeit im Spiel z.B. 5x oder 15x schneller hat als die reale Zeit und der Stundenzähler mit diesen Stunden arbeitet und nicht mit den realen. Würde es realistischer finden.



    Würde mich freuen wenn mir da einer weiterhelfen könnte.


    Hier mal die ESLimiter LUA: [expander][lua]--
    -- ESLimiter
    -- Specialization for ESLimiter
    --
    -- SFM-Modding
    -- @author Manuel Leithner
    -- @date: 13/11/12
    -- @version: v3.1
    -- @history: v1.0 - initial implementation
    -- v2.0 - convert to LS2011 and some bugfixes
    -- v2.1 - Network-Fixes
    -- v2.2 - Bugfixes and new huds
    -- v3.0 - LS13 & integration of OperatingHours
    -- v3.1 - self-installing modification for standard-vehicles and mod-vehicles & manualIgnition compatible (by gotchTOM)
    --
    -- free for noncommerical-usage
    --
    ESLimiter = {};
    local esl_directory = g_currentModDirectory;
    function ESLimiter.prerequisitesPresent(specializations)
    return SpecializationUtil.hasSpecialization(Motorized, specializations);
    end;
    function ESLimiter:load(xmlFile)
    self.setNewLimit = SpecializationUtil.callSpecializationsFunction("setNewLimit");
    self.addOperatingTime = SpecializationUtil.callSpecializationsFunction("addOperatingTime");


    self.ESLimiter = {};
    self.ESLimiter.maxRPM = {};
    self.ESLimiter.orgMaxRPM = {};
    self.ESLimiter.percentage = {};


    for k,_ in pairs(self.motor.maxRpm) do
    local percentage = string.format("%d",(self.motor.maxRpm[k] * 100 / self.motor.maxRpm[3]));
    self.ESLimiter.percentage[k+1] = tonumber(percentage);
    self.ESLimiter.maxRPM[k+1] = self.motor.maxRpm[3];
    self.ESLimiter.orgMaxRPM[k+1] = self.motor.maxRpm[k];
    end;
    -- set limits for reverse
    self.ESLimiter.maxRPM[1] = self.ESLimiter.maxRPM[2];
    self.ESLimiter.percentage[1] = self.ESLimiter.percentage[2];
    self.ESLimiter.default = self.motor.maxRpm[3];


    self.isLimiterActive = false;
    self.ESLimiter.isButtonPressed = false;


    self.ESLimiter.xPos = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.ESLimiter#posX"), 0.5029);
    self.ESLimiter.yPos = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.ESLimiter#posY"), 0.01238);
    self.ESLimiter.yOffset = 0.014;


    self.ESLimiter.hudBarWidth = 0.205;
    self.ESLimiter.overlay = Overlay:new("hudESLOverlay", Utils.getFilename("ESLimiter_hud.png", esl_directory), self.ESLimiter.xPos, self.ESLimiter.yPos, 0.2371, 0.039525);
    self.ESLimiter.overlayBg = Overlay:new("hudESLBackground", Utils.getFilename("ESLimiter_bg.png", esl_directory), self.ESLimiter.xPos, self.ESLimiter.yPos, 0.2371, 0.039525);
    self.ESLimiter.overlayBar = Overlay:new("hudESLbar", Utils.getFilename("ESLimiter_bar.png", esl_directory), self.ESLimiter.xPos + 0.123, self.ESLimiter.yPos + 0.01, 0.21, 0.02190);


    self.ESLimiter.operatingTime = 0;
    self.lastLevelUpdate = 0;
    self.lastLevel = 0;
    end;
    function ESLimiter:delete()
    end;
    function ESLimiter:readStream(streamId, connection)
    for level,_ in pairs(self.ESLimiter.percentage) do
    local percentage = streamReadInt16(streamId)/10;
    self:setNewLimit(level, percentage, true);
    end;


    self:addOperatingTime(streamReadFloat32(streamId), true);
    end;
    function ESLimiter:writeStream(streamId, connection)
    for _,percentage in pairs(self.ESLimiter.percentage) do
    streamWriteInt16(streamId, percentage*10);
    end;


    streamWriteFloat32(streamId, self.ESLimiter.operatingTime);
    end;
    function ESLimiter:mouseEvent(posX, posY, isDown, isUp, button)
    end;
    function ESLimiter:keyEvent(unicode, sym, modifier, isDown)
    end;
    function ESLimiter:update(dt)
    if self.isMotorStarted then
    self:addOperatingTime(dt);
    end;


    if self:getIsActive() then
    local level = 0;
    if self.movingDirection < 0 then
    level = 1;
    else
    if self.motor.speedLevel > 0 then
    level = self.motor.speedLevel + 1;
    end;
    end;


    if self.isHired then
    if self.attachedCutters ~= nil then
    level = 2;
    for cutter,implement in pairs(self.attachedCutters) do
    if Cutter.getUseLowSpeedLimit(cutter) then
    level = 1;
    break;
    end;
    end;
    else
    level = 1;
    end;
    level = level + 1;
    end;


    if self.lastLevel == level then
    self.lastLevelUpdate = self.lastLevelUpdate + dt;
    else
    self.lastLevelUpdate = 0;
    end;
    self.lastLevel = level;


    if level ~= 0 and self.isClient and self:getIsActiveForInput(false) and not self:hasInputConflictWithSelection() then
    local percentage = self.ESLimiter.percentage;
    if InputBinding.isPressed(InputBinding.ESLimiter_PLUS) and percentage[level] < 100 then
    percentage[level] = percentage[level] + 0.25;
    self:setNewLimit(level, percentage[level], true);
    self.ESLimiter.isButtonPressed = true;
    elseif InputBinding.isPressed(InputBinding.ESLimiter_MINUS) and percentage[level] > 10 then
    percentage[level] = percentage[level] - 0.25;
    self:setNewLimit(level, percentage[level], true);
    self.ESLimiter.isButtonPressed = true;
    else
    if self.ESLimiter.isButtonPressed then
    -- only send event to other players if key was released -> performance issue
    self:setNewLimit(level, percentage[level]);
    self.ESLimiter.isButtonPressed = false;
    end;
    end;
    end;


    if level ~= 0 then
    local newRpm = tonumber(string.format("%d",(self.ESLimiter.percentage[level] * self.ESLimiter.maxRPM[level] / 100)));
    if self.movingDirection >= 0 then
    self.motor.maxRpm[level - 1] = newRpm;
    else
    -- backward
    self.motor.maxRpm[3] = newRpm;
    end;
    else
    -- reset to default value if no level is set
    self.motor.maxRpm[3] = self.ESLimiter.default;
    end;
    end;
    end;
    function ESLimiter:draw()
    local text = Steerable.ESL_DEACTIVATED;
    local currentLevel = self.motor.speedLevel;
    local currentLevelText = 0;
    local percentage = 0;


    if self.movingDirection < 0 then
    currentLevel = 1;
    currentLevelText = "R";
    else
    if self.isHired then
    if self.attachedCutters ~= nil then
    currentLevel = 2;
    for cutter,implement in pairs(self.attachedCutters) do
    if Cutter.getUseLowSpeedLimit(cutter) then
    currentLevel = 1;
    break;
    end;
    end;
    else
    currentLevel = 1;
    end;
    end;


    if currentLevel ~= 0 then
    currentLevel = currentLevel + 1;
    currentLevelText = currentLevel - 1;
    end;
    end;


    if currentLevel ~= 0 and (self.lastLevelUpdate > 500 or self.movingDirection > 0) then
    percentage = tonumber(string.format("%d", self.ESLimiter.percentage[currentLevel]));
    if percentage < 100 then
    percentage = " " .. percentage;
    end;
    text = Steerable.ESL_LEVEL .. currentLevelText .. ":" .. percentage .. "% ";
    g_currentMission:addExtraPrintText(string.format(Steerable.ESL_CONTROLS, self.typeDesc) .. " " .. InputBinding.getKeyNamesOfDigitalAction(InputBinding.ESLimiter_PLUS) .. "/" .. InputBinding.getKeyNamesOfDigitalAction(InputBinding.ESLimiter_MINUS));
    end;


    self.ESLimiter.overlayBg:render();


    self.ESLimiter.overlayBar.width = self.ESLimiter.hudBarWidth * math.min(1, percentage/190);
    setOverlayUVs(self.ESLimiter.overlayBar.overlayId, 0, 0.05, 0, 1, math.min(1, percentage/190), 0.05, math.min(1, percentage/190), 1);
    self.ESLimiter.overlayBar:render();


    self.ESLimiter.overlay:render();
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_LEFT);
    setTextColor(0, 0, 0, 1);
    renderText(self.ESLimiter.xPos + 0.139, self.ESLimiter.yPos + 0.008, 0.02, text);
    setTextColor(1, 1, 1, 1);
    renderText(self.ESLimiter.xPos + 0.139, self.ESLimiter.yPos + 0.010, 0.02, text);


    local operatingHours = math.floor((self.ESLimiter.operatingTime / 1000 / 60 / 60)*10) / 10;
    local hours = math.floor(operatingHours);
    local minutes = tostring(math.floor((operatingHours - hours)*10));
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextBold(true);
    setTextColor(0, 0, 0, 1);
    renderText(self.ESLimiter.xPos+0.062, self.ESLimiter.yPos + 0.008, 0.02, tostring(hours) .. ",");
    setTextColor(1,1,1,1);
    renderText(self.ESLimiter.xPos+0.062, self.ESLimiter.yPos + 0.010, 0.02, tostring(hours) .. ",");
    setTextColor(0, 0, 0, 1);
    renderText(self.ESLimiter.xPos+0.071, self.ESLimiter.yPos + 0.008, 0.02, minutes);
    setTextColor(0.95,0,0,1);
    renderText(self.ESLimiter.xPos+0.071, self.ESLimiter.yPos + 0.010, 0.02, minutes);
    setTextColor(0, 0, 0, 1);
    renderText(self.ESLimiter.xPos+0.08, self.ESLimiter.yPos + 0.008, 0.02, "h");
    setTextColor(1,1,1,1);
    renderText(self.ESLimiter.xPos+0.08, self.ESLimiter.yPos + 0.010, 0.02, "h");
    setTextAlignment(RenderText.ALIGN_LEFT);
    end;
    function ESLimiter:setNewLimit(level, percentage, noEventSend)
    ESLimiterEvent.sendEvent(self, level, percentage, noEventSend);
    self.ESLimiter.percentage[level] = percentage;
    end;
    function ESLimiter:loadFromAttributesAndNodes(xmlFile, key, resetVehicles)
    local valueStr = getXMLString(xmlFile, key.."#limiterValues");
    if valueStr ~= nil then
    local found = string.find(valueStr, ";");
    local index = 1;
    while found ~= nil do
    local value = string.sub(valueStr, 0, found-1);
    valueStr = string.sub(valueStr, found+1);
    found = string.find(valueStr, ";");
    self:setNewLimit(index, tonumber(value), true);
    if found == nil then
    value = tonumber(valueStr);
    self:setNewLimit(index+1, tonumber(value), true);
    end;
    index = index + 1;
    end;
    end;


    local operatingTime = Utils.getNoNil(getXMLFloat(xmlFile, key .. "#operatingTime"), self.ESLimiter.operatingTime) * 1000;
    self:addOperatingTime(operatingTime);
    return BaseMission.VEHICLE_LOAD_OK;
    end;
    function ESLimiter:getSaveAttributesAndNodes(nodeIdent)
    local values = "";
    for k,v in pairs(self.ESLimiter.percentage) do
    if k ~= 1 then
    values = values .. ";";
    end;
    values = values .. string.format("%d", v);
    end;


    local attributes = 'limiterValues="'.. values .. '" operatingTime="' .. tostring((self.ESLimiter.operatingTime / 1000)) ..'"';
    return attributes, nil;
    end;
    function ESLimiter:addOperatingTime(addTime)


    local time = math.max(Utils.getNoNil(addTime, 0), 0);
    self.ESLimiter.operatingTime = self.ESLimiter.operatingTime + time;


    if self.ESLimiter.operatingTime > (99999.9 * 1000 * 60 * 60) then
    self.ESLimiter.operatingTime = 0;
    end;
    end;


    --
    -- ESLimiterEvent
    -- Networkevent for ESLimiter
    --
    -- SFM-Modding
    -- @author Manuel Leithner
    -- @date: 14/12/11
    -- @version: v1.0
    -- @history: v1.0 - initial implementation
    --
    ESLimiterEvent = {};
    ESLimiterEvent_mt = Class(ESLimiterEvent, Event);
    InitEventClass(ESLimiterEvent, "ESLimiterEvent");
    function ESLimiterEvent:emptyNew()
    local self = Event:new(ESLimiterEvent_mt);
    return self;
    end;
    function ESLimiterEvent:new(vehicle, level, percentage)
    local self = ESLimiterEvent:emptyNew()
    self.vehicle = vehicle;
    self.level = level;
    self.percentage = percentage;
    return self;
    end;
    function ESLimiterEvent:readStream(streamId, connection)
    local id = streamReadInt32(streamId);
    self.level = streamReadInt8(streamId);
    self.percentage = streamReadInt16(streamId)/10;
    self.vehicle = networkGetObject(id);
    self:run(connection);
    end;
    function ESLimiterEvent:writeStream(streamId, connection)
    streamWriteInt32(streamId, networkGetObjectId(self.vehicle));
    streamWriteInt8(streamId, self.level);
    streamWriteInt16(streamId, self.percentage*10);
    end;
    function ESLimiterEvent:run(connection)
    self.vehicle:setNewLimit(self.level, self.percentage, true);
    end;
    function ESLimiterEvent.sendEvent(vehicle, level, percentage, noEventSend)


    if noEventSend == nil or noEventSend == false then
    if g_server ~= nil then
    g_server:broadcastEvent(ESLimiterEvent:new(vehicle, level, percentage), nil, nil, vehicle);
    else
    g_client:getServerConnection():sendEvent(ESLimiterEvent:new(vehicle, level, percentage));
    end;
    end;
    end;[/lua][/expander]


    und die Register LUA: [expander][lua]SpecializationUtil.registerSpecialization("esLimiter", "ESLimiter", g_currentModDirectory.."ESLimiter.lua")
    ESLimiter_Register = {};
    function ESLimiter_Register:loadMap(name)
    if self.firstRun == nil then
    self.firstRun = false;


    print("--- loading ESLimiter - specialization for ESLimiter + OperatingHours by Manuel Leithner (SFM-Modding)");


    for k, v in pairs(VehicleTypeUtil.vehicleTypes) do
    if v ~= nil then
    local allowInsertion = true;
    for i = 1, table.maxn(v.specializations) do
    local vs = v.specializations[i];
    if vs ~= nil and vs == SpecializationUtil.getSpecialization("steerable") then
    local v_name_string = v.name
    local point_location = string.find(v_name_string, ".", nil, true)
    if point_location ~= nil then
    local _name = string.sub(v_name_string, 1, point_location-1);
    if rawget(SpecializationUtil.specializations, string.format("%s.ESLimiter", _name)) ~= nil then
    allowInsertion = false;
    -- print(tostring(v.name)..": Specialization ESLimiter is present! ESLimiter was not inserted!");
    end;
    if rawget(SpecializationUtil.specializations, string.format("%s.operatingHours", _name)) ~= nil then
    allowInsertion = false;
    -- print(tostring(v.name)..": Specialization operatingHours is present! ESLimiter was not inserted!");
    end;
    if rawget(SpecializationUtil.specializations, string.format("%s.OperatingHours", _name)) ~= nil then
    allowInsertion = false;
    -- print(tostring(v.name)..": Specialization OperatingHours is present! ESLimiter was not inserted!");
    end;
    end;
    if allowInsertion then
    -- print("adding ESLimiter to:"..tostring(v.name));
    table.insert(v.specializations, SpecializationUtil.getSpecialization("esLimiter"));
    end;


    vs.ESL_DEACTIVATED = g_i18n:getText("ESLimiter_deactivated");
    vs.ESL_LEVEL = g_i18n:getText("ESLimiter_level");
    vs.ESL_CONTROLS = g_i18n:getText("ESLimiter_controls");
    end;
    end;
    end;
    end;
    end;
    end;
    function ESLimiter_Register:deleteMap()


    end;
    function ESLimiter_Register:keyEvent(unicode, sym, modifier, isDown)
    end;
    function ESLimiter_Register:mouseEvent(posX, posY, isDown, isUp, button)
    end;
    function ESLimiter_Register:update(dt)


    end;
    function ESLimiter_Register:draw()


    end;
    addModEventListener(ESLimiter_Register);[/lua][/expander]


    mfg

    die LOG ist sauber alles ganz normal


    1. MapDirt Objects sind im Modordner
    2.Transformgroups sind drin
    3. habe die Eintrgäge aus dem JohnDeere 6920 von Maurus genommen, wenn du willst kann ich sie mal posten


    Kann es sein das es nicht geht weil der Schlepper im GE keine Räder hat? Es ist der NewHolland TM175 von BJR-Modding.


    mfg

    Hallo,


    ich will momentan die WheelTracks in einen Schlepper einbauen. Habe alle Einträge eingetragen und die Texturen sowie die .LUA eingefügt.
    Nun wollte den Schlepper testen, habe mir ein großes Feld umgepflügt doch es ist nichts com Dirt Ground auf dem Boden zu sehen.
    Könnte mir jemand Helfen?


    mfg

    Hallo, habe versucht den PowerTakeoff (Zapfwellenanschluss, Powershaft) der in dem gratis DLC vorhanden ist auf einen Schlepper zu bauen.


    Habe alle Eintrgäge in die Moddesc und Traktor XML eingefügt und auch im GE den Attacher an den bestimmten Ort platziert. Doch nun im Spiel möchte ich den Schlepper kaufen, klicke auf den Kaufen Button, es lädt paar sekunden und dann stürzt das Spiel ab. Habe den PowerTakeoff in einen Wender eingebaut und es funktioniert einwandfrei.


    Kann mir einer weiterhelfen, wenn sich schon einer damit beschäftigt hat?


    mfg