Pour avoir la vitesse à la quelle le véhicule est en train de rouler, j'ai trouver
ici.
self :getLastSpeed() .
1er test que je trouve concluant.
Code: Select all
function SpeedControl.onInputAction_setSpeedEvent(self, actionName, inputValue, callbackState, isAnalog)
-- #######################################################################################################################################
-- ######################################## Fonction à modifier (1er test v3) dans "SpeedControl.lua ####### ~ligne 230 #############
-- #######################################################################################################################################
-- ##### avec cette modif, la troisième vitesse du régulateur servira pour le levier d'avancement ####################################
-- ######## les touches KEY_KP_plus / KEY_KP_minus, incrémente / décrémente la vitesse actuel de 1km/h ###############################
-- ########### "Accélération lente" ###### pour une accélération plus rapide, maintenir la touche enfoncée ##########
-- #######################################################################################################################################
-- ### -> cette fonction modifie lors de l'apuis sur la touche. Si la touche reste enfoncée c'est une autre fonction qui agie ############
-- #######################################################################################################################################
if self:getIsEntered() then
------------------------
if self.speedControl.currentKey < 3 then -- # New line
if inputValue < 0 and self.speedControl.keys[self.speedControl.currentKey].speed > 0 then
self.speedControl.keys[self.speedControl.currentKey].speed = self.speedControl.keys[self.speedControl.currentKey].speed - 1;
elseif inputValue > 0 and self.speedControl.keys[self.speedControl.currentKey].speed < math.ceil(self:getMotor():getMaximumForwardSpeed()*3.6) then
self.speedControl.keys[self.speedControl.currentKey].speed = self.speedControl.keys[self.speedControl.currentKey].speed + 1;
end;
elseif inputValue ~= 0 then -- # New line
-- local vitesseIncrémente = 1; -- # New line // vitesse incrémentée avec les touches + et -
local realSpeed = self:getLastSpeed()-- # New line // vitesse actuel du véhicule
if self.speedControl.keys[self.speedControl.currentKey].isActive == false then -- # New line // si le régulateur n'est pas actif
self.speedControl.keys[self.speedControl.currentKey].speed = realSpeed; -- # New line // défini la vitesse actuel du véhicule comme vitesse du régulateur
self.speedControl.keys[self.speedControl.currentKey].isActive = true; -- # New line // écrit le régulateur actuel comme actif
self:setSpeedControl(self.speedControl.currentKey, true); -- # New line // fonction définissant le régulateur actuel comme actif
else -- # New line // ci le régulateur et déjà actif ...
if inputValue < 0 and self.speedControl.keys[self.speedControl.currentKey].speed > 0 then -- # New line // ralentir ...
self.speedControl.keys[self.speedControl.currentKey].speed = realSpeed - 1; -- # New line
elseif inputValue > 0 and self.speedControl.keys[self.speedControl.currentKey].speed < math.ceil(self:getMotor():getMaximumForwardSpeed()*3.6) then -- # New line // accélérer ...
self.speedControl.keys[self.speedControl.currentKey].speed = realSpeed + 1; -- # New line
end; -- # New line
end; -- # New line
end; -- # New line
end;
self.spec_drivable.cruiseControl.speed = math.ceil(self.speedControl.keys[self.speedControl.currentKey].speed);
SpeedControlSpeedMPEvent:updateSendEvent(self);
end;
function SpeedControl:onUpdate(dt)
-- #######################################################################################################################################
-- fonction qui s'éxécute quand on garde la touche [plus] ou [moins] enffoncée plus de 250milliseconde
-- #######################################################################################################################################
-- ######################################## Fonction à modifier (1er test v3) dans "SpeedControl.lua ####### ~ligne 300 #############
-- #######################################################################################################################################
-- #######################################################################################################################################
local spec = self.spec_enterable
if spec.isEntered and self.isClient then
local currSpeed = self.speedControl.keys[self.speedControl.currentKey].speed;
local realSpeed = self:getLastSpeed()-- # New line // vitesse actuel du véhicule
if self.speedControl.inputValues.axisSteer < 0 and self.speedControl.keys[self.speedControl.currentKey].speed >= 0 then
self.speedControl.changeWaitTime = self.speedControl.changeWaitTime + dt; -- realtime ms
if self.speedControl.changeWaitTime > 250 then
if self.speedControl.currentKey < 3 then -- # New line
self.speedControl.keys[self.speedControl.currentKey].speed = self.speedControl.keys[self.speedControl.currentKey].speed - 15*dt/1000
else -- # New line
self.speedControl.keys[self.speedControl.currentKey].speed = realSpeed - 5 -- # New line // enlève 5km/h à la vitesse du véhicule
end; -- # New line
end;
if self.speedControl.keys[self.speedControl.currentKey].speed < 0 then
self.speedControl.keys[self.speedControl.currentKey].speed = 0;
end;
elseif self.speedControl.inputValues.axisSteer > 0 and self.speedControl.keys[self.speedControl.currentKey].speed < math.ceil(self:getMotor():getMaximumForwardSpeed()*3.6) then
self.speedControl.changeWaitTime = self.speedControl.changeWaitTime + dt;
if self.speedControl.changeWaitTime > 250 then
if self.speedControl.currentKey < 3 then -- # New line
self.speedControl.keys[self.speedControl.currentKey].speed = self.speedControl.keys[self.speedControl.currentKey].speed + 15*dt/1000
else -- # New line
self.speedControl.keys[self.speedControl.currentKey].speed = realSpeed + 5 -- # New line // ajoute 5 à la vitesse du véhicule
end; -- # New line
end;
if self.speedControl.keys[self.speedControl.currentKey].speed > math.ceil(self:getMotor():getMaximumForwardSpeed()*3.6) then
self.speedControl.keys[self.speedControl.currentKey].speed = math.ceil(self:getMotor():getMaximumForwardSpeed()*3.6);
end;
else
self.speedControl.changeWaitTime = 0;
end;
if self.speedControl.keys[self.speedControl.currentKey].speed ~= currSpeed then
self.spec_drivable.cruiseControl.speed = math.ceil(self.speedControl.keys[self.speedControl.currentKey].speed);
SpeedControlSpeedMPEvent:updateSendEvent(self);
end;
end;
end;
Si vous voulez tester :
1- Modification du mod « speedControl » (version test1):
-Copier le "FS19_zzzSpeedControl.zip" et renomer la copie "FS19_zzzSpeedControl_.zip" . Ne pas laisser le mod original dans le dossier mods, ou utiliser un nouveau dossier mods vide.
-Déziper
-Dans SpeedControl.lua remplacer les function « SpeedControl.onInputAction_setSpeedEvent » et « function SpeedControl:onUpdate » par celles ci-dessus.
-Reziper et placer le zip dans le dossier mods.
2- Utilisation du mod (version test1) :
-Les régulateurs « 1 » et « 2 » fonctionnes comme à l'origine.
- > KeyPad_1/2 pour sélectionner puis on/off
- > KeyPad_+/- pour régler la vitesse.
-Le régulateur « 3 », (régulation en continue)
- > KeyPad_3 pour sélectionner
- > KeyPad_+/- pour activer et régler :
- > > En tapotant sur la touche « + », vitesse du régulateur = vitesse du véhicule + 1km/h. → Accélération lente.
- > > En gardant la touche « + » enfoncée, vitesse du régulateur = vitesse du véhicule + 5km/h. → Accélération rapide.
- > > Idem avec la touche « - » pour la décélération lente et rapide.
Maintenant la suite : Ajout de l'axe joystick.
Dans ModDesc.xml
Code: Select all
<l10n>
...
<text name="input_SPEEDCONTROL_AXIS_ADVANCEMENTLEVER">
<de>SpeedControl: Vorwärtsgeschwindigkeit</de>
<en>SpeedControl: Advancement Lever</en>
<fr>SpeedControl: Levier d'avencement</fr>
</text>
<text name="input_SPEEDCONTROL_AXIS_ADVANCEMENTLEVER_1">
<de>SpCont: "+" Vorwärtsgeschwindigkeit</de>
<en>SpCont: "+" Forward speed </en>
<fr>SpCont: "+" Vitesse d'avencement</fr>
</text>
<text name="input_SPEEDCONTROL_AXIS_ADVANCEMENTLEVER_2">
<de>SpCont: "-" Vorwärtsgeschwindigkeit </de>
<en>SpCont: "-" Forward speed</en>
<fr>SpCont: "-" Vitesse d'avencement</fr>
</text>
</l10n>
<actions>
<action name="SPEEDCONTROL_SPEED1" category="VEHICLE" axisType="HALF"/>
<action name="SPEEDCONTROL_SPEED2" category="VEHICLE" axisType="HALF"/>
<action name="SPEEDCONTROL_SPEED3" category="VEHICLE" axisType="HALF"/>
<action name="SPEEDCONTROL_AXIS_SETSPEED" category="VEHICLE" axisType="FULL"/>
<action name="SPEEDCONTROL_AXIS_ADVANCEMENTLEVER" category="VEHICLE" axisType="FULL"/>
</actions>
<inputBinding>
...
<actionBinding action="SPEEDCONTROL_AXIS_ADVANCEMENTLEVER">
<binding device="KB_MOUSE_DEFAULT" input="" axisComponent="+" neutralInput="0" index="1"/>
<binding device="KB_MOUSE_DEFAULT" input="" axisComponent="-" neutralInput="0" index="1"/>
</actionBinding>
</inputBinding>
Question :
Dans le modDesc, dans la balise <actions> que veut dire axisType="FULL" ou axisType="HALF" ?
Autre question :
Est ce-que je dois renseigner l'axe dans register.lua ? (je comprends pas comment il arrive à faire la différence entre un bouton et un axe).
Salutations, bonne journée.