@StefanDD auch das hat nicht funktioniert.
Code
--------------------------------------------------------------------------------------
-- RailSimulator.com RailWorks
--------------------------------------------------------------------------------------
gUpdate = false
gEmitRate = 0.0
ReglerSoll = 0;
-- INITIALISE
function Initialise ()
-- All emitters are active by default so turn off req effects
Call( "Whistle Smoke:SetEmitterActive", 0 );
Call( "Sander Right Front:SetEmitterActive", 0 );
Call( "Sander Right Middle:SetEmitterActive", 0 );
Call( "Sander Right Rear:SetEmitterActive", 0 );
Call( "Sander Left Front:SetEmitterActive", 0 );
Call( "Sander Left Middle:SetEmitterActive", 0 );
Call( "Sander Left Rear:SetEmitterActive", 0 );
Call( "Cylinder Cocks Left:SetEmitterActive", 0 );
Call( "Cylinder Cocks Right:SetEmitterActive", 0 );
gEmitRate = Call( "Main Smoke Stack:GetEmitterRate" );
-- If player engine then update
if Call( "GetIsPlayer" ) then
Call( "BeginUpdate" )
gUpdate = true
end
end
------------------------------------------------------------
-- OnControlValueChange
------------------------------------------------------------
-- Called when a cab control is modified
------------------------------------------------------------
-- Parameters:
-- name = Name of the control
-- index = Index of the control
-- value = Modified control value
------------------------------------------------------------
function OnControlValueChange ( name, index, value )
if Call( "*:ControlExists", name, index ) then
Call( "*:SetControlValue", name, index, value );
end
if name == "Horn" then
if value > 0.01 then
Call( "Whistle Smoke:SetEmitterActive", 1 );
else
Call( "Whistle Smoke:SetEmitterActive", 0 );
end
end
if name == "Sander" then
if value > 0.01 then
Call( "Sander Right Front:SetEmitterActive", 1 );
Call( "Sander Right Middle:SetEmitterActive", 1 );
Call( "Sander Right Rear:SetEmitterActive", 1 );
Call( "Sander Left Front:SetEmitterActive", 1 );
Call( "Sander Left Middle:SetEmitterActive", 1 );
Call( "Sander Left Rear:SetEmitterActive", 1 );
else
Call( "Sander Right Front:SetEmitterActive", 0 );
Call( "Sander Right Middle:SetEmitterActive", 0 );
Call( "Sander Right Rear:SetEmitterActive", 0 );
Call( "Sander Left Front:SetEmitterActive", 0 );
Call( "Sander Left Middle:SetEmitterActive", 0 );
Call( "Sander Left Rear:SetEmitterActive", 0 );
end
end
if name == "CylinderCock" then
if value > 0.01 then
Call( "Cylinder Cocks Left:SetEmitterActive", 1 );
Call( "Cylinder Cocks Right:SetEmitterActive", 1 );
else
Call( "Cylinder Cocks Left:SetEmitterActive", 0 );
Call( "Cylinder Cocks Right:SetEmitterActive", 0 );
end
end
if name == "RegulatorVorwahl" then
Call("SetControlValue", "Regulator", 0, value);
Call("SetControlTargetValue", "Regulator", 0, value);
end
if gUpdate ~= true and Call ( "GetIsPlayer") then
Call( "BeginUpdate" )
gUpdate = true
end
end
---------------------------------------------
function Update ( time )
-- dont update if no longer player
if Call( "GetIsPlayer" ) == false then
Call( "EndUpdate" )
gUpdate = false
end
speed = Call ( "GetSpeed" )
if speed < 0.0 then
speed = -speed;
end
if speed <= 0.1 then
Call ( "Main Smoke Stack:SetEmitterRate", 100000.0 );
elseif speed > 0.1 then
Call ( "Main Smoke Stack:SetEmitterRate", gEmitRate );
end
end
Alles anzeigen
Hier ist nochmal der gesamte Quellcode. Das meiste ist von der Kuju Black 5. Mein Teil beginnt bei Zeile 81 und endet bei Zeile 85.
Edit: @StefanDD Es hat doch funktioniert, jedoch ist die ReglerVorwahl jetzt genau so schnell wie der Regulator, kann man irgendwie den SetControlTargetValue langsamer machen? Meine Grundidee war ja, dass es wie bei der 86er wird. Da ich weiß, dass es da einen relativ komplexe Schieberkasten-Simulation gibt, wollte ich einfach nur diese Verzögerung hinzufügen um zumindest ein wenig von der unrealistischen Dampfloksteuerung im TS wegzukommen.
Edit2: Hat sich erledigt, ich habe es selber hinbekommen.