Script v1_7_1_0
- AI
- Animals
- Collections
- Contracts
- Debug
- Economy
- Elements
- EnvironmentalScore
- Errors
- Events
- GUI
- Handtools
- Hud
- I3d
- Input
- Jobs
- Maps
- Materials
- Misc
- Objects
- Parameters
- Placeables
- Placement
- Player
- Shop
- Sounds
- Specialization
- Specializations
- StateMachine
- Statistics
- Tasks
- Triggers
- AnimalLoadingTrigger
- BaleUnloadTrigger
- BasketTrigger
- FillPlane
- FillTrigger
- InsideBuildingTrigger
- LoadTrigger
- LoanTrigger
- RainDropFactorTrigger
- ShopTrigger
- TransportMissionTrigger
- UnloadTrigger
- WoodUnloadTrigger
- Utils
- Vehicles
Engine v1_7_1_0
- AI
- Animation
- Camera
- Entity
- Fillplanes
- general
- General
- I3D
- Input
- Lighting
- Math
- Network
- Node
- NoteNode
- Overlays
- Particle System
- Physics
- Rendering
- Scenegraph
- Shape
- Sound
- Spline
- String
- Terrain Detail
- Text Rendering
- Tire Track
- VoiceChat
- XML
Foundation Reference
FillTrigger
DescriptionClass for fill triggersFunctions
delete
DescriptionDelete fill triggerDefinition
delete()Code
59 | function FillTrigger:delete() |
60 | -- remove the gas stations from all vehicles that are triggered by this trigger |
61 | for vehicle,count in pairs(self.vehiclesTriggerCount) do |
62 | if count > 0 then |
63 | if vehicle.removeFillUnitTrigger ~= nil then |
64 | vehicle:removeFillUnitTrigger(self) |
65 | end |
66 | end |
67 | end |
68 | |
69 | g_soundManager:deleteSample(self.sample) |
70 | |
71 | removeTrigger(self.triggerId) |
72 | end |
fillTriggerCallback
DescriptionTrigger callbackDefinition
fillTriggerCallback(integer triggerId, integer otherId, boolean onEnter, boolean onLeave, boolean onStay)Arguments
integer | triggerId | id of trigger |
integer | otherId | id of actor |
boolean | onEnter | on enter |
boolean | onLeave | on leave |
boolean | onStay | on stay |
149 | function FillTrigger:fillTriggerCallback(triggerId, otherId, onEnter, onLeave, onStay) |
150 | if self.isEnabled and (onEnter or onLeave) then |
151 | local vehicle = g_currentMission:getNodeObject(otherId) |
152 | if vehicle ~= nil and vehicle.addFillUnitTrigger ~= nil and vehicle.removeFillUnitTrigger ~= nil and vehicle ~= self and vehicle ~= self.sourceObject then |
153 | local count = Utils.getNoNil(self.vehiclesTriggerCount[vehicle], 0) |
154 | if onEnter then |
155 | local fillType = self:getCurrentFillType() |
156 | local fillUnitIndex = vehicle:getFirstValidFillUnitToFill(fillType) |
157 | if fillUnitIndex ~= nil then |
158 | self.vehiclesTriggerCount[vehicle] = count + 1 |
159 | |
160 | if count == 0 then |
161 | vehicle:addFillUnitTrigger(self, fillType, fillUnitIndex) |
162 | end |
163 | end |
164 | else |
165 | self.vehiclesTriggerCount[vehicle] = count - 1 |
166 | if count <= 1 then |
167 | self.vehiclesTriggerCount[vehicle] = nil |
168 | vehicle:removeFillUnitTrigger(self) |
169 | g_currentMission:showMoneyChange(self.moneyChangeType, nil, false, vehicle:getActiveFarm()) |
170 | end |
171 | end |
172 | end |
173 | end |
174 | end |
fillVehicle
DescriptionFill vehicleDefinition
fillVehicle(table vehicle, float delta)Arguments
table | vehicle | vehicle to fill |
float | delta | delta |
float | delta | real delta |
87 | function FillTrigger:fillVehicle(vehicle, delta, dt) |
88 | if self.fillLitersPerSecond ~= nil then |
89 | delta = math.min(delta, self.fillLitersPerSecond * 0.001 * dt) |
90 | end |
91 | |
92 | local farmId = vehicle:getActiveFarm() |
93 | |
94 | if self.sourceObject ~= nil then |
95 | local sourceFuelFillLevel = self.sourceObject:getFillUnitFillLevel(self.fillUnitIndex) |
96 | if sourceFuelFillLevel > 0 and g_currentMission.accessHandler:canFarmAccess(farmId, self.sourceObject) then |
97 | delta = math.min(delta, sourceFuelFillLevel) |
98 | if delta <= 0 then |
99 | return 0 |
100 | end |
101 | else |
102 | return 0 |
103 | end |
104 | end |
105 | |
106 | local fillType = self:getCurrentFillType() |
107 | |
108 | local fillUnitIndex = vehicle:getFirstValidFillUnitToFill(fillType) |
109 | if fillUnitIndex == nil then |
110 | return 0 |
111 | end |
112 | |
113 | delta = vehicle:addFillUnitFillLevel(farmId, fillUnitIndex, delta, fillType, ToolType.TRIGGER, nil) |
114 | |
115 | if delta > 0 then |
116 | if self.sourceObject ~= nil then |
117 | self.sourceObject:addFillUnitFillLevel(farmId, self.fillUnitIndex, -delta, fillType, ToolType.TRIGGER, nil) |
118 | else |
119 | local price = delta * g_currentMission.economyManager:getPricePerLiter(fillType) |
120 | g_farmManager:updateFarmStats(farmId, "expenses", price) |
121 | g_currentMission:addMoney(-price, farmId, self.moneyChangeType, true) |
122 | end |
123 | end |
124 | |
125 | return delta |
126 | end |
getIsActivatable
DescriptionReturns true if is activateableDefinition
getIsActivatable(table vehicle)Arguments
table | vehicle | vehicle |
boolean | isActivateable | is activateable |
132 | function FillTrigger:getIsActivatable(vehicle) |
133 | if self.sourceObject ~= nil then |
134 | if self.sourceObject:getFillUnitFillLevel(self.fillUnitIndex) > 0 and g_currentMission.accessHandler:canFarmAccess(vehicle:getActiveFarm(), self.sourceObject) then |
135 | return true |
136 | end |
137 | end |
138 | |
139 | return false |
140 | end |
new
DescriptionCreate fill trigger objectDefinition
new(Integer id, table sourceObject, integer fillUnitIndex, table customMt)Arguments
Integer | id | id of trigger node |
table | sourceObject | sourceObject |
integer | fillUnitIndex | fillUnitIndex |
table | customMt | custom metatable (optional) |
table | instance | instance of gas station trigger |
28 | function FillTrigger.new(id, sourceObject, fillUnitIndex, fillLitersPerSecond, defaultFillType, customMt) |
29 | local self = {} |
30 | setmetatable(self, customMt or FillTrigger_mt) |
31 | |
32 | self.customEnvironment = g_currentMission.loadingMapModName |
33 | |
34 | self.triggerId = id |
35 | addTrigger(id, "fillTriggerCallback", self) |
36 | |
37 | -- place sound at the same position as the trigger |
38 | self.soundNode = createTransformGroup("fillTriggerSoundNode") |
39 | link(getParent(id), self.soundNode) |
40 | setTranslation(self.soundNode, getTranslation(id)) |
41 | |
42 | self.sourceObject = sourceObject |
43 | self.vehiclesTriggerCount = {} |
44 | self.fillUnitIndex = fillUnitIndex |
45 | self.fillLitersPerSecond = fillLitersPerSecond |
46 | self.isEnabled = true |
47 | |
48 | self.fillTypeIndex = FillType.DIESEL |
49 | |
50 | return self |
51 | end |
onCreate
DescriptionOn create fill triggerDefinition
onCreate(Integer id)Arguments
Integer | id | id of trigger node |
13 | function FillTrigger:onCreate(id) |
14 | local fillTrigger = FillTrigger.new(id) |
15 | -- we can register this on client and server because onCreate is called on map load only |
16 | local moneyChangeType = MoneyType.register("other", "finance_purchaseFuel") |
17 | fillTrigger:setMoneyChangeType(moneyChangeType) |
18 | g_currentMission:addNonUpdateable(fillTrigger) |
19 | end |
onVehicleDeleted
DescriptionCalled if vehicle gets out of triggerDefinition
onVehicleDeleted(table vehicle)Arguments
table | vehicle | vehicle |
77 | function FillTrigger:onVehicleDeleted(vehicle) |
78 | self.vehiclesTriggerCount[vehicle] = nil |
79 | g_currentMission:showMoneyChange(self.moneyChangeType, nil, false, vehicle:getActiveFarm()) |
80 | end |