Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------------------------------------ADHESE--------------------------------------------
- --------------Adhese koeficienty----
- typSrazek = SysCall("WeatherController:GetCurrentPrecipitationType")
- intenzitaSrazek = SysCall("WeatherController:GetPrecipitationDensity")
- if typSrazek ~= nil then
- if typSrazek < 3 then --nesnezi
- if intenzitaSrazek > 0.3 then --prsi hodne
- if adhese_casdeste == -1 then
- adhese_casdeste = 0
- end
- if adhese_casdeste <= 370 then
- adhese_casdeste = adhese_casdeste + cas
- end
- adhese_caspodesti = -1
- elseif intenzitaSrazek ~= 0 then --prsi trochenc
- if adhese_casdeste == -1 then
- adhese_casdeste = ADHESE_VLHKO_CAS_NABEH
- end
- adhese_caspodesti = -1
- else --neprsi vubec
- if typSrazek > 0 then
- if adhese_casdeste == -1 then
- adhese_casdeste = ADHESE_VLHKO_CAS_NABEH
- end
- adhese_caspodesti = -1
- else
- if adhese_casdeste ~= -1 then
- adhese_caspodesti = adhese_casdeste*10
- adhese_casdeste = -1
- end
- if adhese_caspodesti > 0 then
- adhese_caspodesti = adhese_caspodesti - cas
- else
- adhese_caspodesti = -1
- end
- end
- end
- --defaultne adhese za sucha
- ambientAdhesion = ADHESE_SUCHO
- if adhese_casdeste ~= -1 then --pokud prsi
- if adhese_casdeste < ADHESE_VLHKO_CAS_NABEH then --a prsi mene jak ADHESE_VLHKO_CAS_NABEH (70 vterin) - adhese se znizuje az na ADHESE_VLHKO_START (0.5)
- ambientAdhesion = ADHESE_SUCHO - (ADHESE_SUCHO-ADHESE_VLHKO_START)*(adhese_casdeste/ADHESE_VLHKO_CAS_NABEH)
- elseif adhese_casdeste < ADHESE_VLHKO_CAS_SNIZENI then --nebo prsi mene jak ADHESE_VLHKO_CAS_SNIZENI (370 vterin) - adhese se zvysuje na ADHESE_VLHKO (0.7)
- ambientAdhesion = ADHESE_VLHKO_START - (ADHESE_VLHKO_START-ADHESE_VLHKO)*(adhese_casdeste/(ADHESE_VLHKO_CAS_NABEH+ADHESE_VLHKO_CAS_SNIZENI))
- else --jinak uz je adhese stala ADHESE_VLHKO (0.7)
- ambientAdhesion = ADHESE_VLHKO
- end
- elseif adhese_caspodesti ~= -1 then --pokud prselo pred mene jak 10 minutami, adhese se zvysuje od aktualni k ADHESE_SUCHO (0.9)
- if sourceAdhesion == -1 then
- sourceAdhesion = ambientAdhesion
- end
- ambientAdhesion = sourceAdhesion - (sourceAdhesion-ADHESE_SUCHO)*(adhese_caspodesti/ADHESE_VLHKO_PODESTI)
- end
- else --snezi, tak nejsou casy deste
- adhese_casdeste = -1
- adhese_caspodesti = -1
- ambientAdhesion = ADHESE_SNIH
- end
- else --nedeje se nic
- adhese_caspodesti = -1
- ambientAdhesion = ADHESE_SUCHO
- end
- if adhese_caspodesti == -1 then --pokud uz neprsi vice jak 10*casDeste vynuluj vychozi pocitadla - koleje uz jsou urcite suche
- sourceAdhesion = -1
- end
- if SysCall("ScenarioManager:GetSeason") == 3 then --pokud je zima, je snih - sankuje to 2x tolik jak obvykle
- ambientAdhesion = ADHESE_SNIH
- end
- if plynuleValce > 0.1 and rychlostKolaKMHPodvozek1 > 5 then
- if brakeAdhesionAdditionPodvozek1 < 0.15 then
- brakeAdhesionAdditionPodvozek1 = brakeAdhesionAdditionPodvozek1 + 0.25*cas
- else
- brakeAdhesionAdditionPodvozek1 = 0.15
- end
- else
- if brakeAdhesionAdditionPodvozek1 > 0 then
- brakeAdhesionAdditionPodvozek1 = (brakeAdhesionAdditionPodvozek1 - 0.00333*cas)
- else
- brakeAdhesionAdditionPodvozek1 = 0
- end
- end
- if plynuleValce_bezBP > 0.1 and rychlostKolaKMHPodvozek2 > 5 then
- if brakeAdhesionAdditionPodvozek2 < 0.15 then
- brakeAdhesionAdditionPodvozek2 = brakeAdhesionAdditionPodvozek2 + 0.25*cas
- else
- brakeAdhesionAdditionPodvozek2 = 0.15
- end
- else
- if brakeAdhesionAdditionPodvozek2 > 0 then
- brakeAdhesionAdditionPodvozek2 = (brakeAdhesionAdditionPodvozek2 - 0.00333*cas)
- else
- brakeAdhesionAdditionPodvozek2 = 0
- end
- end
- decisiveAdhesionPodvozek1 = ambientAdhesion + brakeAdhesionAdditionPodvozek1
- decisiveAdhesionPodvozek2 = ambientAdhesion + brakeAdhesionAdditionPodvozek2
- if adheseRandomCtdnPodvozek1 > 0 then
- if math.abs(Call("GetSpeed")) > 0.1 and math.abs(Call("GetSpeed")) < 15 and intenzitaSrazek ~= 0 then
- adheseRandomCtdnPodvozek1 = adheseRandomCtdnPodvozek1 - cas
- end
- adheseRandomLenCtuPodvozek1 = 0
- elseif adheseRandomLenCtuPodvozek1 < 1 then
- decisiveAdhesionPodvozek1 = decisiveAdhesionPodvozek1 * 0.7
- adheseRandomLenCtuPodvozek1 = adheseRandomLenCtuPodvozek1 + cas
- else
- adheseRandomCtdnPodvozek1 = math.random(40,200)
- end
- if adheseRandomCtdnPodvozek2 > 0 then
- if math.abs(Call("GetSpeed")) > 0.1 and math.abs(Call("GetSpeed")) < 15 and intenzitaSrazek ~= 0 then
- adheseRandomCtdnPodvozek2 = adheseRandomCtdnPodvozek2 - cas
- end
- adheseRandomLenCtuPodvozek2 = 0
- elseif adheseRandomLenCtuPodvozek2 < 1 then
- decisiveAdhesionPodvozek2 = decisiveAdhesionPodvozek2 * 0.7
- adheseRandomLenCtuPodvozek2 = adheseRandomLenCtuPodvozek2 + cas
- else
- adheseRandomCtdnPodvozek2 = math.random(40,200)
- end
- --------------Adheze a skluz--------
- output_kN = VratTCh(Call("GetControlValue","VykonPredTrCh",0),Call("GetSpeed"))*gAbsolutniMax_kN
- positiveTractiveEffortForWheelslip = math.max(output_kN,0)
- negativeTractiveEffortForWheelslip = math.abs(math.min(output_kN,0)/math.min(pocetZapnutychVozu, pocetMG))+plynuleValce/3.8*100*max_tbc+200*Call("GetControlValue", "HandBrake", 0)
- if fiktivniVykonNaRizeneNeschopne then
- positiveTractiveEffortForWheelslip = 0
- negativeTractiveEffortForWheelslip = 0
- end
- tractiveEffortForWheelslip = math.abs(positiveTractiveEffortForWheelslip-negativeTractiveEffortForWheelslip)
- adhesiveTractiveForcePodvozek1 = ((7500)/(rychlost+44)+161)*0.001*9.81*decisiveAdhesionPodvozek1*64
- if positiveTractiveEffortForWheelslip > negativeTractiveEffortForWheelslip then
- cilovaRychlostKolaPodvozek1 = math.abs(Call("GetSpeed"))+math.max(0,tractiveEffortForWheelslip-adhesiveTractiveForcePodvozek1)
- else
- cilovaRychlostKolaPodvozek1 = math.max(math.abs(Call("GetSpeed"))-(math.max(0,tractiveEffortForWheelslip-adhesiveTractiveForcePodvozek1)^2),0)
- end
- if tractiveEffortForWheelslip > adhesiveTractiveForcePodvozek1 then
- koefSpeedChange = 5
- else
- koefSpeedChange = 7*math.max(1,plynuleValce)
- end
- if cilovaRychlostKolaPodvozek1 > rychlostKolaPodvozek1 then
- rychlostKolaPodvozek1 = math.min(rychlostKolaPodvozek1 + math.sqrt(cilovaRychlostKolaPodvozek1-rychlostKolaPodvozek1)*cas*koefSpeedChange, cilovaRychlostKolaPodvozek1)
- else
- rychlostKolaPodvozek1 = math.max(rychlostKolaPodvozek1 - math.sqrt(rychlostKolaPodvozek1-cilovaRychlostKolaPodvozek1)*cas*koefSpeedChange, cilovaRychlostKolaPodvozek1)
- end
- if math.abs(rychlostKolaPodvozek1 - cilovaRychlostKolaPodvozek1) < 0.5 then
- rychlostKolaPodvozek1 = cilovaRychlostKolaPodvozek1
- end
- rychlostKolaKMHPodvozek1 = rychlostKolaPodvozek1*3.6
- if math.max(0,tractiveEffortForWheelslip-adhesiveTractiveForcePodvozek1) > 5 then
- if positiveTractiveEffortForWheelslip < negativeTractiveEffortForWheelslip then
- output_kN = output_kN*0.63245553203367586639977870888654
- actualTBC = actualTBC*0.63245553203367586639977870888654
- else
- output_kN = output_kN*0.22360679774997896964091736687313
- end
- end
- adhesiveTractiveForcePodvozek2 = ((7500)/(rychlost+44)+161)*0.001*9.81*decisiveAdhesionPodvozek2*64
- if positiveTractiveEffortForWheelslip > negativeTractiveEffortForWheelslip then
- cilovaRychlostKolaPodvozek2 = math.abs(Call("GetSpeed"))+math.max(0,tractiveEffortForWheelslip-adhesiveTractiveForcePodvozek2)
- else
- cilovaRychlostKolaPodvozek2 = math.max(math.abs(Call("GetSpeed"))-(math.max(0,tractiveEffortForWheelslip-adhesiveTractiveForcePodvozek2)^2),0)
- end
- if tractiveEffortForWheelslip > adhesiveTractiveForcePodvozek2 then
- koefSpeedChange = 5
- else
- koefSpeedChange = 7
- end
- if cilovaRychlostKolaPodvozek2 > rychlostKolaPodvozek2 then
- rychlostKolaPodvozek2 = math.min(rychlostKolaPodvozek2 + math.sqrt(cilovaRychlostKolaPodvozek2-rychlostKolaPodvozek2)*cas*koefSpeedChange,cilovaRychlostKolaPodvozek2)
- else
- rychlostKolaPodvozek2 = math.max(rychlostKolaPodvozek2 - math.sqrt(rychlostKolaPodvozek2-cilovaRychlostKolaPodvozek2)*cas*koefSpeedChange,cilovaRychlostKolaPodvozek2)
- end
- if math.abs(rychlostKolaPodvozek2 - cilovaRychlostKolaPodvozek2) < 0.5 then
- rychlostKolaPodvozek2 = cilovaRychlostKolaPodvozek2
- end
- rychlostKolaKMHPodvozek2 = rychlostKolaPodvozek2*3.6
- if math.max(0,tractiveEffortForWheelslip-adhesiveTractiveForcePodvozek2) > 5 then
- if positiveTractiveEffortForWheelslip < negativeTractiveEffortForWheelslip then
- output_kN = output_kN*0.63245553203367586639977870888654
- actualTBC = actualTBC*0.63245553203367586639977870888654
- else
- output_kN = output_kN*0.22360679774997896964091736687313
- end
- end
- if rychlostKolaPodvozek1 < 1 and rychlostKolaPodvozek2 < 1 and tractiveEffortForWheelslip > adhesiveTractiveForcePodvozek1+10 then
- output_kN = 0
- actualTBC = 0.2
- obutiVolume = math.min(obutiVolume + cas*math.abs(rychlostKolaKMHPodvozek1-rychlost)/100,1)
- end
- if (plynuleValce > 0.1 and tractiveEffortForWheelslip < adhesiveTractiveForcePodvozek1) or rychlostKolaKMHPodvozek1+5 > rychlost then
- obutiVolume = math.max(obutiVolume - cas*plynuleValce/10000,0)
- end
- Call("SoundLoziska:SetParameter", "obutiVolume", math.min(obutiVolume, math.max(0.3, 1-((rychlost-40)/60))))
- if obutiDistance > 0 then
- if rychlostKolaKMHPodvozek1 > 0.2 then
- obutiDistance = obutiDistance - cas*rychlostKolaPodvozek1
- end
- else
- obutiDistance = 2.4772805742778301026860760754598+obutiDistance
- obuti = 1-obuti
- end
- Call("SoundLoziska:SetParameter", "obuti", obuti)
- if plynuleValce_bezBP < 0.05 then
- Call("SetControlValue","TrainBrakeControl",0,0)
- else
- Call("SetControlValue","TrainBrakeControl",0,actualTBC)
- end
- --Call("*:SetParameter", "WheelAbsoluteSpeed", rychlostKolaPodvozek1)
- Call("SoundTMpredni:SetParameter", "WheelAbsoluteSpeed", rychlostKolaKMHPodvozek1)
- Call("SoundTMzadni:SetParameter", "WheelAbsoluteSpeed", rychlostKolaKMHPodvozek2)
- Call("SoundZdrze:SetParameter", "WheelAbsoluteSpeed", rychlostKolaPodvozek1)
- Call("SoundLoziska:SetParameter", "WheelAbsoluteSpeed", rychlostKolaPodvozek1)
- Call("EngineSound:SetParameter", "WheelAbsoluteSpeed", rychlostKolaPodvozek1)
Add Comment
Please, Sign In to add comment