Spring naar inhoud
NLD Community

Join the NLD Discord channel! discord.png https://discord.gg/0WsKGiYeGHJEAI5q
Breaking News: NLD Community maakt een doorstart!

speedcontrol


luucd1204

Aanbevolen Bericht

hallo,

ik ben bezig de mod speed control aan te passen. nu heb je 3 versnellingen. ik heb geprobeerd er vier van te maken. ik heb alles wat ik kon vinden uit de mods desc en lua veranderd van 3 naar vier versnellingen. maar als ik nu ingame kom kan ik de vierde versnelling niet selecteren of aan zetten. bij opties en dan besturingen kan je wel de vierde versnelling een knop toewijzen maar als ik die knop in game gebruik gebeurt er niks. mijn log zeg niet raars. weet iemand of je nog iets speciaal moet doen om hem werkend te maken? 

hier de moddesc:

Spoiler

<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<modDesc descVersion="21">
    <title>
        <de>SpeedControl</de>
    </title>
    <description>
        <de>
<![CDATA[Geschwindigkeitsspeicher
Script: Heady


www.planet-ls.de]]>
    </de>
    </description>
    <author>Heady [PLANET-LS.de]</author>
    <version>15.0.0</version>
    <iconFilename>store.png</iconFilename>
    <multiplayer supported="true"/>
    <extraSourceFiles>
        <sourceFile filename="register.lua" />
    </extraSourceFiles>

    <inputBindings>
    <input name="SPEEDCONTROL_SPEED1"      category="VEHICLE" key1="KEY_1"         button="" />
    <input name="SPEEDCONTROL_SPEED2"      category="VEHICLE" key1="KEY_2"         button="" />
    <input name="SPEEDCONTROL_SPEED3"      category="VEHICLE" key1="KEY_3"         button="" />
    <input name="SPEEDCONTROL_SPEED4"      category="VEHICLE" key1="KEY_4"         button="" />
    <input name="SPEEDCONTROL_PLUS"          category="VEHICLE" key1="KEY_KP_plus"         button="" />
    <input name="SPEEDCONTROL_MINUS"      category="VEHICLE" key1="KEY_KP_minus"         button="" />
    </inputBindings>

    <l10n>
        <text name="SPEEDCONTROL_SPEED1"> 
            <de>SpeedControl Geschwindigkeitsspeicher 1</de>
        </text>
        <text name="SPEEDCONTROL_SPEED2"> 
            <de>SpeedControl Geschwindigkeitsspeicher 2</de>
        </text>
        <text name="SPEEDCONTROL_SPEED3"> 
            <de>SpeedControl Geschwindigkeitsspeicher 3</de>
        </text>
        <text name="SPEEDCONTROL_SPEED4"> 
            <de>SpeedControl Geschwindigkeitsspeicher 4</de>
        </text>
        <text name="SPEEDCONTROL_PLUS"> 
            <de>SpeedControl Geschwindigkeit erhöhen</de>
        </text>
        <text name="SPEEDCONTROL_MINUS"> 
            <de>SpeedControl Geschwindigkeit verringern</de>
        </text>
    </l10n>

</modDesc>
 

 

hier de lua:

Spoiler

<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<modDesc descVersion="21">
    <title>
        <de>SpeedControl</de>
    </title>
    <description>
        <de>
<![CDATA[Geschwindigkeitsspeicher
Script: Heady


www.planet-ls.de]]>
    </de>
    </description>
    <author>Heady [PLANET-LS.de]</author>
    <version>15.0.0</version>
    <iconFilename>store.png</iconFilename>
    <multiplayer supported="true"/>
    <extraSourceFiles>
        <sourceFile filename="register.lua" />
    </extraSourceFiles>

    <inputBindings>
    <input name="SPEEDCONTROL_SPEED1"      category="VEHICLE" key1="KEY_1"         button="" />
    <input name="SPEEDCONTROL_SPEED2"      category="VEHICLE" key1="KEY_2"         button="" />
    <input name="SPEEDCONTROL_SPEED3"      category="VEHICLE" key1="KEY_3"         button="" />
    <input name="SPEEDCONTROL_SPEED4"      category="VEHICLE" key1="KEY_4"         button="" />
    <input name="SPEEDCONTROL_PLUS"          category="VEHICLE" key1="KEY_KP_plus"         button="" />
    <input name="SPEEDCONTROL_MINUS"      category="VEHICLE" key1="KEY_KP_minus"         button="" />
    </inputBindings>

    <l10n>
        <text name="SPEEDCONTROL_SPEED1"> 
            <de>SpeedControl Geschwindigkeitsspeicher 1</de>
        </text>
        <text name="SPEEDCONTROL_SPEED2"> 
            <de>SpeedControl Geschwindigkeitsspeicher 2</de>
        </text>
        <text name="SPEEDCONTROL_SPEED3"> 
            <de>SpeedControl Geschwindigkeitsspeicher 3</de>
        </text>
        <text name="SPEEDCONTROL_SPEED4"> 
            <de>SpeedControl Geschwindigkeitsspeicher 4</de>
        </text>
        <text name="SPEEDCONTROL_PLUS"> 
            <de>SpeedControl Geschwindigkeit erhöhen</de>
        </text>
        <text name="SPEEDCONTROL_MINUS"> 
            <de>SpeedControl Geschwindigkeit verringern</de>
        </text>
    </l10n>

</modDesc>
 

 

en hier nog een lua maar daar kon ik niks vinden wat met die drie versnellingen te maken had.

Spoiler

--
--
-- SpeedControl
--
-- # Author:  Heady
-- # date: 15.12.2014
-- # last update: 2.1.2015
--
-- > Not for commercial use  < --
--

--print("  SteeringAxle v15.0");

local modDir = g_currentModDirectory;

ModEvent = {};

SpecializationUtil.registerSpecialization("SpeedControl", "SpeedControl", modDir.."SpeedControl.lua")
local version = SpecializationUtil.getSpecialization("SpeedControl").version;
--g_i18n.globalI18N.texts["SteeringAxle"] = g_i18n:getText("SteeringAxle"); 


function ModEvent:loadMap(name)    

    if self.firstRun == nil then
        self.firstRun = false;
        --print("  register spec SteeringAxle v15.0")
        print("  register spec SpeedControl v"..tostring(version));
        
        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;
                    --if vs ~= nil and vs == SpecializationUtil.getSpecialization("steerable") then
                    if vs ~= nil and vs == SpecializationUtil.getSpecialization("drivable") 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.SpeedControl", _name)) ~= nil then
                                allowInsertion = false;                                
                            end;                            
                        end;
                        if allowInsertion then    
                            table.insert(v.specializations, SpecializationUtil.getSpecialization("SpeedControl"));
                        end;
                    end;
                end;
            end;    
        end;
    end;

end;

function ModEvent:deleteMap()
end;

function ModEvent:mouseEvent(posX, posY, isDown, isUp, button)
end;

function ModEvent:keyEvent(unicode, sym, modifier, isDown)
end;

function ModEvent:update(dt)
end;

function ModEvent:draw()
end;

addModEventListener(ModEvent);
 

 

 

ik hoop dat iemand mij kan helpen. alvast bedankt.

luuc

Link naar opmerking
Deel via andere websites

foutje dit is de lua

Spoiler

--
--
-- SpeedControl
--
-- # Author:  Heady
-- # date: 17.02.2015
-- # last update: 17.02.2015
--
-- > Not for commercial use  < --
-- > Not allowed for edit - Copyright (C) Heady - www.planet-ls.de < --
--


SpeedControl = {};

local modDir = g_currentModDirectory;
SpeedControl.version = "15.0.0";

function SpeedControl:prerequisitesPresent(specializations)
    return true;
end;

function SpeedControl:load(xmlFile)

    self.setSpeedControlKey = SpeedControl.setSpeedControlKey;
    self.setSpeedControl = SpeedControl.setSpeedControl;
    --self.setMotorSpeed = SpeedControl.setMotorSpeed;
    self.setCruiseControlState = Utils.appendedFunction(self.setCruiseControlState, SpeedControl.setCruiseControlState);

    if self.cruiseControl ~= nil then
        self.cruiseControl.isActive = false;
    end;

    self.speedControlKeys = {};
    
    self.speedControlKeys[1] = {};
    self.speedControlKeys[1] = {};
    self.speedControlKeys[1].speed = 10;
    self.speedControlKeys[1].isActive = false;
    self.speedControlKeys[1].isSelected = false;

    self.speedControlKeys[2] = {};
    self.speedControlKeys[2].speed = 20;
    self.speedControlKeys[2].isActive = false;
    self.speedControlKeys[2].isSelected = false;

    self.speedControlKeys[3] = {};
    self.speedControlKeys[3].speed = math.ceil(self.motor:getMaximumForwardSpeed()*3.6);
    self.speedControlKeys[3].isActive = false;
    self.speedControlKeys[3].isSelected = true;
    
    self.speedControlKeys[4] = {};
    self.speedControlKeys[4].speed = 5;
    self.speedControlKeys[4].isActive = false;
    self.speedControlKeys[4].isSelected = false;

    self.speedControlCurrKey = 4;
    
    self.speedControlChangeWaitTime = 0;
    
end;


function SpeedControl:delete()
end;
    
function SpeedControl:mouseEvent(posX, posY, isDown, isUp, button)
end;

function SpeedControl:keyEvent(unicode, sym, modifier, isDown)
end;

function SpeedControl:readStream(streamId, connection)
    if connection:getIsServer() then
        self.speedControlCurrKey = streamReadInt8(streamId);

        self.speedControlKeys[1].isSelected = streamReadBool(streamId);
        self.speedControlKeys[1].isActive = streamReadBool(streamId);
        self.speedControlKeys[1].speed = streamReadInt8(streamId);
        
        self.speedControlKeys[2].isSelected = streamReadBool(streamId);
        self.speedControlKeys[2].isActive = streamReadBool(streamId);
        self.speedControlKeys[2].speed = streamReadInt8(streamId);
        
        self.speedControlKeys[3].isSelected = streamReadBool(streamId);
        self.speedControlKeys[3].isActive = streamReadBool(streamId);
        self.speedControlKeys[3].speed = streamReadInt8(streamId);
        
        self.speedControlKeys[4].isSelected = streamReadBool(streamId);
        self.speedControlKeys[4].isActive = streamReadBool(streamId);
        self.speedControlKeys[4].speed = streamReadInt8(streamId);

        self.cruiseControl.speed = math.ceil(self.speedControlKeys[self.speedControlCurrKey].speed);
    end
end;

function SpeedControl:writeStream(streamId, connection)
    if not connection:getIsServer() then
        streamWriteInt8(streamId, self.speedControlCurrKey);

        streamWriteBool(streamId, self.speedControlKeys[1].isSelected);
        streamWriteBool(streamId, self.speedControlKeys[1].isActive);
        streamWriteInt8(streamId, self.speedControlKeys[1].speed);
        
        streamWriteBool(streamId, self.speedControlKeys[2].isSelected);
        streamWriteBool(streamId, self.speedControlKeys[2].isActive);
        streamWriteInt8(streamId, self.speedControlKeys[2].speed);
        
        streamWriteBool(streamId, self.speedControlKeys[3].isSelected);
        streamWriteBool(streamId, self.speedControlKeys[3].isActive);
        streamWriteInt8(streamId, self.speedControlKeys[3].speed);

        streamWriteBool(streamId, self.speedControlKeys[4].isSelected);
        streamWriteBool(streamId, self.speedControlKeys[4].isActive);
        streamWriteInt8(streamId, self.speedControlKeys[4].speed);
    end;
end;

function SpeedControl:update(dt)

    if self.isEntered and self.isClient and not self.isHired then
        if self:getIsActiveForInput(false) then
            
            local currSpeed = self.speedControlKeys[self.speedControlCurrKey].speed;
        
            if InputBinding.hasEvent(InputBinding.SPEEDCONTROL_SPEED1) then
                self.speedControlCurrKey = 1;
                self:setSpeedControlKey(1);
                SpeedControlMPEvent:updateSendEvent(self);
            end;
            if InputBinding.hasEvent(InputBinding.SPEEDCONTROL_SPEED2) then
                self.speedControlCurrKey = 2;
                self:setSpeedControlKey(2);
                SpeedControlMPEvent:updateSendEvent(self);
            end;
            if InputBinding.hasEvent(InputBinding.SPEEDCONTROL_SPEED3) then
                self.speedControlCurrKey = 3;
                self:setSpeedControlKey(3);
                SpeedControlMPEvent:updateSendEvent(self);
            end;
            if InputBinding.hasEvent(InputBinding.SPEEDCONTROL_SPEED0) then
                self.speedControlCurrKey = 4;
                self:setSpeedControlKey(4);
                SpeedControlMPEvent:updateSendEvent(self);
            end;
            
            
            if InputBinding.hasEvent(InputBinding.SPEEDCONTROL_MINUS) and self.speedControlKeys[self.speedControlCurrKey].speed > 1 then
                self.speedControlKeys[self.speedControlCurrKey].speed = self.speedControlKeys[self.speedControlCurrKey].speed - 5;            
            end;
            
            if InputBinding.hasEvent(InputBinding.SPEEDCONTROL_PLUS) and self.speedControlKeys[self.speedControlCurrKey].speed < math.ceil(self.motor:getMaximumForwardSpeed()*3.6) then
                self.speedControlKeys[self.speedControlCurrKey].speed = self.speedControlKeys[self.speedControlCurrKey].speed + 5;            
            end;
            

            if InputBinding.isPressed(InputBinding.SPEEDCONTROL_MINUS) and self.speedControlKeys[self.speedControlCurrKey].speed > 0 then
                self.speedControlChangeWaitTime = self.speedControlChangeWaitTime + dt; -- realtime ms
                if self.speedControlChangeWaitTime > 250 then
                    self.speedControlKeys[self.speedControlCurrKey].speed = self.speedControlKeys[self.speedControlCurrKey].speed - 10*dt/1000
                end;

                if self.speedControlKeys[self.speedControlCurrKey].speed < 1 then
                    self.speedControlKeys[self.speedControlCurrKey].speed = 1;
                end;

            elseif InputBinding.isPressed(InputBinding.SPEEDCONTROL_PLUS) and self.speedControlKeys[self.speedControlCurrKey].speed < math.ceil(self.motor:getMaximumForwardSpeed()*3.6) then                
                self.speedControlChangeWaitTime = self.speedControlChangeWaitTime + dt; -- realtime ms
                if self.speedControlChangeWaitTime > 250 then
                    self.speedControlKeys[self.speedControlCurrKey].speed = self.speedControlKeys[self.speedControlCurrKey].speed + 10*dt/1000
                end;
                
                if self.speedControlKeys[self.speedControlCurrKey].speed > math.ceil(self.motor:getMaximumForwardSpeed()*3.6) then
                    self.speedControlKeys[self.speedControlCurrKey].speed = math.ceil(self.motor:getMaximumForwardSpeed()*3.6);
                end;
            else
                self.speedControlChangeWaitTime = 0;
            end;            
            
            if self.speedControlKeys[self.speedControlCurrKey].speed ~= currSpeed then
                print("self.speedControlKeys[self.speedControlCurrKey].speed: ", self.speedControlKeys[self.speedControlCurrKey].speed)
                
                self.cruiseControl.speed = math.ceil(self.speedControlKeys[self.speedControlCurrKey].speed);
                print("self.cruiseControl.speed: ", self.cruiseControl.speed)
                SpeedControlSpeedMPEvent:updateSendEvent(self);                
            end;
            
            --self:setMotorSpeed(self.speedControlKeys[self.speedControlCurrKey].speed);

            
        end;
    end;

end;

function SpeedControl:updateTick(dt)

end;

function SpeedControl:draw()

    if self.isEntered then

        if self.cruiseControl.state == 1 then
            setTextColor(0.2, 0.83, 0, 1);
        else
            setTextColor(1,1,1,1);
        end;
        setTextBold(true);
        setTextAlignment(RenderText.ALIGN_LEFT)
        renderText(g_currentMission.vehicleHudPosX  + 236/1920, g_currentMission.vehicleHudPosY + 29/1200, 13/1200, tostring(self.speedControlCurrKey));
        
        setTextColor(1,1,1,1);
        setTextBold(false);
        --setTextAlignment(RenderText.ALIGN_LEFT)

    end;    

end;

function SpeedControl:setSpeedControlKey(key)

    if self.speedControlKeys[key].isActive then
        self.speedControlKeys[key].isActive = false;
        
        self:setSpeedControl(key, false);
    else
        if self.speedControlKeys[key].isSelected then
            self.speedControlKeys[key].isActive = true;
            
            self:setSpeedControl(key, true);
        else
            for i=1, table.getn(self.speedControlKeys) do
                self.speedControlKeys.isSelected = false;    
            end;
            for i=1, table.getn(self.speedControlKeys) do
                self.speedControlKeys.isActive = false;    
            end;
            self.speedControlKeys[key].isSelected = true;    
            
            self:setSpeedControl(key, false);
        end;
    end;

end;

function SpeedControl:setSpeedControl(key, active)

    if active then
        self.cruiseControl.state = 1;
        self.motor:setSpeedLimit(self.cruiseControl.speed);
    else
        self.cruiseControl.state = 0;
        self.motor:setSpeedLimit(math.huge);
    end;

end;

function SpeedControl:setCruiseControlState(state, noEventSend)

    for i=1, table.getn(self.speedControlKeys) do
        self.speedControlKeys.isActive = false;    
    end;
    
end;


SpeedControlMPEvent = {};
SpeedControlMPEvent_mt = Class(SpeedControlMPEvent, Event);

InitEventClass(SpeedControlMPEvent, "SpeedControlMPEvent");

function SpeedControlMPEvent:emptyNew()
    local self = Event:new(SpeedControlMPEvent_mt);
    self.className="SpeedControlMPEvent";
    return self;
end;

function SpeedControlMPEvent:new(object)
    local self = SpeedControlMPEvent:emptyNew()
    self.object = object;
    return self;
end;

function SpeedControlMPEvent:readStream(streamId, connection)
    self.object = networkGetObject(streamReadInt32(streamId));    
    
    self.object.speedControlCurrKey = streamReadInt8(streamId);
    
    self.object:setSpeedControlKey(self.object.speedControlCurrKey);
    
    if not connection:getIsServer() then -- if server read then send to clients
        g_server:broadcastEvent(SpeedControlMPEvent:new(self.object), nil, connection, self.object);
    end;

end;

function SpeedControlMPEvent:writeStream(streamId, connection)
    streamWriteInt32(streamId, networkGetObjectId(self.object));    
    
    streamWriteInt8(streamId, self.object.speedControlCurrKey);    
end;

function SpeedControlMPEvent:updateSendEvent(runSelf)    

    if g_server ~= nil then
        g_server:broadcastEvent(SpeedControlMPEvent:new(runSelf));
    else
        g_client:getServerConnection():sendEvent(SpeedControlMPEvent:new(runSelf));
    end;

end;

SpeedControlSpeedMPEvent = {};
SpeedControlSpeedMPEvent_mt = Class(SpeedControlSpeedMPEvent, Event);

InitEventClass(SpeedControlSpeedMPEvent, "SpeedControlSpeedMPEvent");

function SpeedControlSpeedMPEvent:emptyNew()
    local self = Event:new(SpeedControlSpeedMPEvent_mt);
    self.className="SpeedControlSpeedMPEvent";
    return self;
end;

function SpeedControlSpeedMPEvent:new(object)
    local self = SpeedControlSpeedMPEvent:emptyNew()
    self.object = object;
    return self;
end;

function SpeedControlSpeedMPEvent:readStream(streamId, connection)
    self.object = networkGetObject(streamReadInt32(streamId));    
    
    self.object.speedControlKeys[self.object.speedControlCurrKey].speed = streamReadInt8(streamId);
    
    self.object.cruiseControl.speed = math.ceil(self.object.speedControlKeys[self.object.speedControlCurrKey].speed);
    
    if not connection:getIsServer() then -- if server read then send to clients
        g_server:broadcastEvent(SpeedControlSpeedMPEvent:new(self.object), nil, connection, self.object);
    end;

end;

function SpeedControlSpeedMPEvent:writeStream(streamId, connection)
    streamWriteInt32(streamId, networkGetObjectId(self.object));    
    
    streamWriteInt8(streamId, self.object.speedControlKeys[self.object.speedControlCurrKey].speed);
end;

function SpeedControlSpeedMPEvent:updateSendEvent(runSelf)    

    if g_server ~= nil then
        g_server:broadcastEvent(SpeedControlSpeedMPEvent:new(runSelf));
    else
        g_client:getServerConnection():sendEvent(SpeedControlSpeedMPEvent:new(runSelf));
    end;

end;


 

 

Link naar opmerking
Deel via andere websites

Je hebt twee keer de moddesc geplaatst ipv 2 lua inhoud. 

Zou je xml's en lua's even willen plaatsen in losse spoilers. Dan kan ik verder kijken met je,

--
--
-- SpeedControl
--
-- # Author:  Heady
-- # date: 17.02.2015
-- # last update: 17.02.2015
--
-- > Not for commercial use  < --
-- > Not allowed for edit - Copyright (C) Heady - www.planet-ls.de < --
--

SpeedControl = {};
local modDir = g_currentModDirectory;
SpeedControl.version = "15.0.0";
function SpeedControl:prerequisitesPresent(specializations)
    return true;
end;
function SpeedControl:load(xmlFile)
    self.setSpeedControlKey = SpeedControl.setSpeedControlKey;
    self.setSpeedControl = SpeedControl.setSpeedControl;
    --self.setMotorSpeed = SpeedControl.setMotorSpeed;
    self.setCruiseControlState = Utils.appendedFunction(self.setCruiseControlState, SpeedControl.setCruiseControlState);
    if self.cruiseControl ~= nil then
        self.cruiseControl.isActive = false;
    end;
    self.speedControlKeys = {};
    
    self.speedControlKeys[1] = {};
    self.speedControlKeys[1] = {};
    self.speedControlKeys[1].speed = 10;
    self.speedControlKeys[1].isActive = false;
    self.speedControlKeys[1].isSelected = false;
    self.speedControlKeys[2] = {};
    self.speedControlKeys[2].speed = 20;
    self.speedControlKeys[2].isActive = false;
    self.speedControlKeys[2].isSelected = false;
    self.speedControlKeys[3] = {};
    self.speedControlKeys[3].speed = 25;
    self.speedControlKeys[3].isActive = false;
    self.speedControlKeys[3].isSelected = false;
    self.speedControlKeys[4] = {};
    self.speedControlKeys[4].speed = math.ceil(self.motor:getMaximumForwardSpeed()*3.6);
    self.speedControlKeys[4].isActive = false;
    self.speedControlKeys[4].isSelected = false;
    self.speedControlCurrKey = 4;
    
    self.speedControlChangeWaitTime = 0;
    
end;

function SpeedControl:delete()
end;
    
function SpeedControl:mouseEvent(posX, posY, isDown, isUp, button)
end;
function SpeedControl:keyEvent(unicode, sym, modifier, isDown)
end;
function SpeedControl:readStream(streamId, connection)
    if connection:getIsServer() then
        self.speedControlCurrKey = streamReadInt8(streamId);
        self.speedControlKeys[1].isSelected = streamReadBool(streamId);
        self.speedControlKeys[1].isActive = streamReadBool(streamId);
        self.speedControlKeys[1].speed = streamReadInt8(streamId);
        
        self.speedControlKeys[2].isSelected = streamReadBool(streamId);
        self.speedControlKeys[2].isActive = streamReadBool(streamId);
        self.speedControlKeys[2].speed = streamReadInt8(streamId);
        
        self.speedControlKeys[3].isSelected = streamReadBool(streamId);
        self.speedControlKeys[3].isActive = streamReadBool(streamId);
        self.speedControlKeys[3].speed = streamReadInt8(streamId);
        
        self.speedControlKeys[4].isSelected = streamReadBool(streamId);
        self.speedControlKeys[4].isActive = streamReadBool(streamId);
        self.speedControlKeys[4].speed = streamReadInt8(streamId);


        self.cruiseControl.speed = math.ceil(self.speedControlKeys[self.speedControlCurrKey].speed);
    end
end;
function SpeedControl:writeStream(streamId, connection)
    if not connection:getIsServer() then
        streamWriteInt8(streamId, self.speedControlCurrKey);
        streamWriteBool(streamId, self.speedControlKeys[1].isSelected);
        streamWriteBool(streamId, self.speedControlKeys[1].isActive);
        streamWriteInt8(streamId, self.speedControlKeys[1].speed);
        
        streamWriteBool(streamId, self.speedControlKeys[2].isSelected);
        streamWriteBool(streamId, self.speedControlKeys[2].isActive);
        streamWriteInt8(streamId, self.speedControlKeys[2].speed);
        
        streamWriteBool(streamId, self.speedControlKeys[3].isSelected);
        streamWriteBool(streamId, self.speedControlKeys[3].isActive);
        streamWriteInt8(streamId, self.speedControlKeys[3].speed);


        streamWriteBool(streamId, self.speedControlKeys[4].isSelected);
        streamWriteBool(streamId, self.speedControlKeys[4].isActive);
        streamWriteInt8(streamId, self.speedControlKeys[4].speed);
    end;
end;
function SpeedControl:update(dt)
    if self.isEntered and self.isClient and not self.isHired then
        if self:getIsActiveForInput(false) then
            
            local currSpeed = self.speedControlKeys[self.speedControlCurrKey].speed;
        
            if InputBinding.hasEvent(InputBinding.SPEEDCONTROL_SPEED1) then
                self.speedControlCurrKey = 1;
                self:setSpeedControlKey(1);
                SpeedControlMPEvent:updateSendEvent(self);
            end;
            if InputBinding.hasEvent(InputBinding.SPEEDCONTROL_SPEED2) then
                self.speedControlCurrKey = 2;
                self:setSpeedControlKey(2);
                SpeedControlMPEvent:updateSendEvent(self);
            end;
            if InputBinding.hasEvent(InputBinding.SPEEDCONTROL_SPEED3) then
                self.speedControlCurrKey = 3;
                self:setSpeedControlKey(3);
                SpeedControlMPEvent:updateSendEvent(self);
            end;
            if InputBinding.hasEvent(InputBinding.SPEEDCONTROL_SPEED4) then
                self.speedControlCurrKey = 4;
                self:setSpeedControlKey(4);
                SpeedControlMPEvent:updateSendEvent(self);
            end;
            
            
            if InputBinding.hasEvent(InputBinding.SPEEDCONTROL_MINUS) and self.speedControlKeys[self.speedControlCurrKey].speed > 1 then
                self.speedControlKeys[self.speedControlCurrKey].speed = self.speedControlKeys[self.speedControlCurrKey].speed - 5;            
            end;
            
            if InputBinding.hasEvent(InputBinding.SPEEDCONTROL_PLUS) and self.speedControlKeys[self.speedControlCurrKey].speed < math.ceil(self.motor:getMaximumForwardSpeed()*3.6) then
                self.speedControlKeys[self.speedControlCurrKey].speed = self.speedControlKeys[self.speedControlCurrKey].speed + 5;            
            end;
            
            if InputBinding.isPressed(InputBinding.SPEEDCONTROL_MINUS) and self.speedControlKeys[self.speedControlCurrKey].speed > 0 then
                self.speedControlChangeWaitTime = self.speedControlChangeWaitTime + dt; -- realtime ms
                if self.speedControlChangeWaitTime > 250 then
                    self.speedControlKeys[self.speedControlCurrKey].speed = self.speedControlKeys[self.speedControlCurrKey].speed - 10*dt/1000
                end;
                if self.speedControlKeys[self.speedControlCurrKey].speed < 1 then
                    self.speedControlKeys[self.speedControlCurrKey].speed = 1;
                end;
            elseif InputBinding.isPressed(InputBinding.SPEEDCONTROL_PLUS) and self.speedControlKeys[self.speedControlCurrKey].speed < math.ceil(self.motor:getMaximumForwardSpeed()*3.6) then                
                self.speedControlChangeWaitTime = self.speedControlChangeWaitTime + dt; -- realtime ms
                if self.speedControlChangeWaitTime > 250 then
                    self.speedControlKeys[self.speedControlCurrKey].speed = self.speedControlKeys[self.speedControlCurrKey].speed + 10*dt/1000
                end;
                
                if self.speedControlKeys[self.speedControlCurrKey].speed > math.ceil(self.motor:getMaximumForwardSpeed()*3.6) then
                    self.speedControlKeys[self.speedControlCurrKey].speed = math.ceil(self.motor:getMaximumForwardSpeed()*3.6);
                end;
            else
                self.speedControlChangeWaitTime = 0;
            end;            
            
            if self.speedControlKeys[self.speedControlCurrKey].speed ~= currSpeed then
                print("self.speedControlKeys[self.speedControlCurrKey].speed: ", self.speedControlKeys[self.speedControlCurrKey].speed)
                
                self.cruiseControl.speed = math.ceil(self.speedControlKeys[self.speedControlCurrKey].speed);
                print("self.cruiseControl.speed: ", self.cruiseControl.speed)
                SpeedControlSpeedMPEvent:updateSendEvent(self);                
            end;
            
            --self:setMotorSpeed(self.speedControlKeys[self.speedControlCurrKey].speed);
            
        end;
    end;
end;
function SpeedControl:updateTick(dt)
end;
function SpeedControl:draw()
    if self.isEntered then
        if self.cruiseControl.state == 1 then
            setTextColor(0.2, 0.83, 0, 1);
        else
            setTextColor(1,1,1,1);
        end;
        setTextBold(true);
        setTextAlignment(RenderText.ALIGN_LEFT)
        renderText(g_currentMission.vehicleHudPosX  + 236/1920, g_currentMission.vehicleHudPosY + 29/1200, 13/1200, tostring(self.speedControlCurrKey));
        
        setTextColor(1,1,1,1);
        setTextBold(false);
        --setTextAlignment(RenderText.ALIGN_LEFT)
    end;    
end;
function SpeedControl:setSpeedControlKey(key)
    if self.speedControlKeys[key].isActive then
        self.speedControlKeys[key].isActive = false;
        
        self:setSpeedControl(key, false);
    else
        if self.speedControlKeys[key].isSelected then
            self.speedControlKeys[key].isActive = true;
            
            self:setSpeedControl(key, true);
        else
            for i=1, table.getn(self.speedControlKeys) do
                self.speedControlKeys.isSelected = false;    
            end;
            for i=1, table.getn(self.speedControlKeys) do
                self.speedControlKeys.isActive = false;    
            end;
            self.speedControlKeys[key].isSelected = true;    
            
            self:setSpeedControl(key, false);
        end;
    end;
end;
function SpeedControl:setSpeedControl(key, active)
    if active then
        self.cruiseControl.state = 1;
        self.motor:setSpeedLimit(self.cruiseControl.speed);
    else
        self.cruiseControl.state = 0;
        self.motor:setSpeedLimit(math.huge);
    end;
end;
function SpeedControl:setCruiseControlState(state, noEventSend)
    for i=1, table.getn(self.speedControlKeys) do
        self.speedControlKeys.isActive = false;    
    end;
    
end;

SpeedControlMPEvent = {};
SpeedControlMPEvent_mt = Class(SpeedControlMPEvent, Event);
InitEventClass(SpeedControlMPEvent, "SpeedControlMPEvent");
function SpeedControlMPEvent:emptyNew()
    local self = Event:new(SpeedControlMPEvent_mt);
    self.className="SpeedControlMPEvent";
    return self;
end;
function SpeedControlMPEvent:new(object)
    local self = SpeedControlMPEvent:emptyNew()
    self.object = object;
    return self;
end;
function SpeedControlMPEvent:readStream(streamId, connection)
    self.object = networkGetObject(streamReadInt32(streamId));    
    
    self.object.speedControlCurrKey = streamReadInt8(streamId);
    
    self.object:setSpeedControlKey(self.object.speedControlCurrKey);
    
    if not connection:getIsServer() then -- if server read then send to clients
        g_server:broadcastEvent(SpeedControlMPEvent:new(self.object), nil, connection, self.object);
    end;
end;
function SpeedControlMPEvent:writeStream(streamId, connection)
    streamWriteInt32(streamId, networkGetObjectId(self.object));    
    
    streamWriteInt8(streamId, self.object.speedControlCurrKey);    
end;
function SpeedControlMPEvent:updateSendEvent(runSelf)    
    if g_server ~= nil then
        g_server:broadcastEvent(SpeedControlMPEvent:new(runSelf));
    else
        g_client:getServerConnection():sendEvent(SpeedControlMPEvent:new(runSelf));
    end;
end;
SpeedControlSpeedMPEvent = {};
SpeedControlSpeedMPEvent_mt = Class(SpeedControlSpeedMPEvent, Event);
InitEventClass(SpeedControlSpeedMPEvent, "SpeedControlSpeedMPEvent");
function SpeedControlSpeedMPEvent:emptyNew()
    local self = Event:new(SpeedControlSpeedMPEvent_mt);
    self.className="SpeedControlSpeedMPEvent";
    return self;
end;
function SpeedControlSpeedMPEvent:new(object)
    local self = SpeedControlSpeedMPEvent:emptyNew()
    self.object = object;
    return self;
end;
function SpeedControlSpeedMPEvent:readStream(streamId, connection)
    self.object = networkGetObject(streamReadInt32(streamId));    
    
    self.object.speedControlKeys[self.object.speedControlCurrKey].speed = streamReadInt8(streamId);
    
    self.object.cruiseControl.speed = math.ceil(self.object.speedControlKeys[self.object.speedControlCurrKey].speed);
    
    if not connection:getIsServer() then -- if server read then send to clients
        g_server:broadcastEvent(SpeedControlSpeedMPEvent:new(self.object), nil, connection, self.object);
    end;
end;
function SpeedControlSpeedMPEvent:writeStream(streamId, connection)
    streamWriteInt32(streamId, networkGetObjectId(self.object));    
    
    streamWriteInt8(streamId, self.object.speedControlKeys[self.object.speedControlCurrKey].speed);
end;
function SpeedControlSpeedMPEvent:updateSendEvent(runSelf)    
    if g_server ~= nil then
        g_server:broadcastEvent(SpeedControlSpeedMPEvent:new(runSelf));
    else
        g_client:getServerConnection():sendEvent(SpeedControlSpeedMPEvent:new(runSelf));
    end;
end;

 

 

Ik heb wat verandert, weet niet of het nu werk maar probeer maar :) . Als het niet lukt zou je dan alles wat je hebt aangepast nog eens willen plaatsen en markeren wat je waar hebt verandert? Met een kleurtje oid?

Link naar opmerking
Deel via andere websites

thnx twan hij werkt. hoe heb je dat gedaan? ik wil namelijk nog twee of drie versnellingen erbij zodat ik mijn schakelpook voledig kan gebruiken. en weet jij hoe je er voor zorgt dat je maar een keer op een knop van de versnelling hoefd te drukken en niet 1 keer voor het selecteren en 1 keer voor het aan zetten? nogmaals bedankt.

luuc

Link naar opmerking
Deel via andere websites

Je hebt niet alles goed verwezen, je kan namelijk niet iets naar button 0 verwijzen. En je hebt niet alles er goed bij gezet.

 

En: Dit stukje is heel belangrijk:

math.ceil(self.motor:getMaximumForwardSpeed()*3.6);

Hier staat dat dit stukje de maximale snelheid is, je had eerst dit:


   

self.speedControlKeys[1] = {};
    self.speedControlKeys[1] = {};
    self.speedControlKeys[1].speed = 10;
    self.speedControlKeys[1].isActive = false;
    self.speedControlKeys[1].isSelected = false;
    self.speedControlKeys[2] = {};
    self.speedControlKeys[2].speed = 20;
    self.speedControlKeys[2].isActive = false;
    self.speedControlKeys[2].isSelected = false;
    self.speedControlKeys[3] = {};
    self.speedControlKeys[3].speed = math.ceil(self.motor:getMaximumForwardSpeed()*3.6);
    self.speedControlKeys[3].isActive = false;
    self.speedControlKeys[3].isSelected = false;
    self.speedControlKeys[4] = {};
    self.speedControlKeys[4].speed = 5;
    self.speedControlKeys[4].isActive = false;
    self.speedControlKeys[4].isSelected = false;
    self.speedControlCurrKey = 4;

Maar dat moet natuurlijk dit zijn:  

self.speedControlKeys[1] = {};
    self.speedControlKeys[1] = {};
    self.speedControlKeys[1].speed = 10;
    self.speedControlKeys[1].isActive = false;
    self.speedControlKeys[1].isSelected = false;
    self.speedControlKeys[2] = {};
    self.speedControlKeys[2].speed = 20;
    self.speedControlKeys[2].isActive = false;
    self.speedControlKeys[2].isSelected = false;
    self.speedControlKeys[3] = {};
    self.speedControlKeys[3].speed = 25;
    self.speedControlKeys[3].isActive = false;
    self.speedControlKeys[3].isSelected = false;
    self.speedControlKeys[4] = {};
    self.speedControlKeys[4].speed = math.ceil(self.motor:getMaximumForwardSpeed()*3.6);
    self.speedControlKeys[4].isActive = false;
    self.speedControlKeys[4].isSelected = false;
    self.speedControlCurrKey = 4;
    

Met "math.ceil(self.motor:getMaximumForwardSpeed()*3.6);" bij de laatste gear.

Link naar opmerking
Deel via andere websites

Dankje, ik ga er zo naar kijken

het werkt!!

 

EDIT:

ik heb nu 7 versnellingen. allen wil ik er ook een voor achter uit hebben. ik heb math.ceil(self.motor:getMaximumForwardSpeed()*3.6); veranderd door math.ceil(self.motor:getMaximumBackwardSpeed()*3.6);  . allen pakt hij nu allen de max snelheid van achteruit rijden. hoe zorg ik er voor dat hij dan ook echt achteruit rijd?

luuc

Link naar opmerking
Deel via andere websites

ik kan hem nog niet in zijn achteruit zetten. als in nu op de knop druk die ik in had gesteld voor achter uit pakt hij de max snelheid achteruit in zijn voor uit. voor de verduidelijking. de trekker kan 16 km per uur achter uit. als ik nu op de knop van achteruit druk gaat hij 16 km per uur voor uit inplaats van achteruit.

Link naar opmerking
Deel via andere websites

Gearchiveerd

Dit topic is nu gearchiveerd en gesloten voor verdere reacties.

×
×
  • Maak Nieuw...

Belangrijke Informatie

By using this site, you agree to our Gebruiksvoorwaarden.