diff --git a/lua/entities/gmod_subway_81-717_mvm/cl_init.lua b/lua/entities/gmod_subway_81-717_mvm/cl_init.lua index afe5a49..f54b174 100644 --- a/lua/entities/gmod_subway_81-717_mvm/cl_init.lua +++ b/lua/entities/gmod_subway_81-717_mvm/cl_init.lua @@ -2722,8 +2722,8 @@ function ENT:Think() self:SetLightPower(45,self:GetPackedBool("PanelLights")) local mask = self:GetNW2Int("MaskType",1)--self:GetNW2Bool("Mask") - local HL1 = self:Animate("Headlights1",self:GetPackedBool("Headlights1") and 1 or 0,0,1,6,false) - local HL2 = self:Animate("Headlights2",self:GetPackedBool("Headlights2") and 1 or 0,0,1,6,false) + local HL1 = self:Animate("Headlights1",self:GetPackedRatio("Headlights1"),0,1,6,false) + local HL2 = self:Animate("Headlights2",self:GetPackedRatio("Headlights2"),0,1,6,false) local RL = self:Animate("RedLights_a",self:GetPackedBool("RedLights") and 1 or 0,0,1,6,false) self:ShowHideSmooth("RedLights",RL) self:SetLightPower(8,RL > 0,RL) diff --git a/lua/entities/gmod_subway_81-717_mvm/init.lua b/lua/entities/gmod_subway_81-717_mvm/init.lua index e2c0c7e..4f67214 100644 --- a/lua/entities/gmod_subway_81-717_mvm/init.lua +++ b/lua/entities/gmod_subway_81-717_mvm/init.lua @@ -572,12 +572,12 @@ function ENT:Think() local Panel = self.Panel local Pneumatic = self.Pneumatic local power = Panel.V1 > -1.5 - local brightness = math.min(1,Panel.Headlights1)*0.60 + - math.min(1,Panel.Headlights2)*0.40 + --local brightness = math.min(1,Panel.Headlights1)*0.60 + + --math.min(1,Panel.Headlights2)*0.40 --local T = {} - self:SetPackedBool("Headlights1",Panel.Headlights1 > 0) - self:SetPackedBool("Headlights2",Panel.Headlights2 > 0) + self:SetPackedRatio("Headlights1",Panel.Headlights1*math.max(0,(self.Battery.eds_eq-50)/30)) + self:SetPackedRatio("Headlights2",Panel.Headlights2*math.max(0,(self.Battery.eds_eq-50)/30)) self:SetPackedBool("RedLights",Panel.RedLight2 > 0) self:SetPackedBool("CabLights",Panel.CabLights>0) self:SetPackedBool("EqLights",Panel.EqLights>0) diff --git a/lua/metrostroi/systems/sys_battery.lua b/lua/metrostroi/systems/sys_battery.lua index 1090c6f..2fcd1fe 100644 --- a/lua/metrostroi/systems/sys_battery.lua +++ b/lua/metrostroi/systems/sys_battery.lua @@ -14,7 +14,7 @@ function TRAIN_SYSTEM:Initialize() -- Battery parameters self.ElementCapacity = 80 -- A*hour - self.Capacity = self.ElementCapacity * 3600 + self.Capacity = self.ElementCapacity * 3600 * (0.7 + math.random()*0.3) self.Charge = self.Capacity self.FullCapacity = self.Capacity -- Current through battery/A @@ -121,7 +121,7 @@ function TRAIN_SYSTEM:Think(dT) end end -- Calculate state of charge, internal resistance and battery voltage - -- TODO: сделать, чтобы освещение и фары тоже кушали заряд АКБ (и чтобы свет белых фар тускнел на 25% при отсутствии высокого напряжения (только для .5 и ниже)) + -- TODO: сделать, чтобы освещение и фары тоже потребляли ток if self.Dischar then self.Capacity = self.Capacity - dT * (self.FullCapacity*0.1/86400) -- make capacity loss ~ 10% per day (just a game abstraction) if self.Ibatt > 0 then @@ -143,8 +143,8 @@ function TRAIN_SYSTEM:Think(dT) if self.SoC <= 0 or self.SoC >= 1.0 then self.EthaCE = 0 end -- Возможно, надо ввести ток саморазряда, а не ебаться с выдуманной зависимостью EthaCE от SoC выше 100% (которого не бывает >_>) - self.SoC = self.SoC + self.EthaCE*self.Ibatt*dT/self.Capacity - local SoC = math.max(0,math.min(100,self.SoC*100)) + self.SoC = math.max(0,math.min(1,self.SoC + self.EthaCE*self.Ibatt*dT/self.Capacity)) + local SoC = self.SoC*100 if 50 <= SoC and SoC <= 100 then self.CellIRes = 0.009 elseif SoC >= 0.5 then