Script v1.4.4.0
- Handtools
- Events
- Objects
- Placeables
- Triggers
- BaleDestroyerTrigger
- BasketTrigger
- ConveyorBeltTipTrigger
- FillTrigger
- GasStationTrigger
- LiquidManureFillTrigger
- LoanTrigger
- PickupObjectsSellTrigger
- ReceivingTipTrigger
- ShopTrigger
- SiloTrigger
- TipTrigger
- WaterTrailerFillTrigger
- WeighStation
- WoodSellTrigger
- Utils
- Vehicles
- Specializations
Engine v7.0.0.2
- General
- Entity
- Node
- Scenegraph
- Lighting
- Camera
- Shape
- Particle System
- Physics
- Spline
- Animation
- Overlays
- Sound
- Input
- XML
- Network
- Callbacks
- Text Rendering
- Terrain Detail
- Tire Track
- Editor
- Rendering
- String
- Math
- I3D
- Fillplanes
Foundation Reference
WaterTrailerFillTrigger
DescriptionClass for water trailer fill triggersFunctions
onCreate
DescriptionOn create triggerDefinition
onCreate(integer id)Arguments
integer | id | id of trigger node |
15 | function WaterTrailerFillTrigger:onCreate(id) |
16 | g_currentMission:addNonUpdateable(WaterTrailerFillTrigger:new(id)); |
17 | end; |
new
DescriptionCreate water trailer fill trigger objectDefinition
new(integer nodeId, table trailer)Arguments
integer | nodeId | id of trigger node |
table | trailer | trailer if trigger is mounted to trailer |
table | instance | instance |
24 | function WaterTrailerFillTrigger:new(nodeId, trailer) |
25 | local self = {}; |
26 | setmetatable(self, WaterTrailerFillTrigger_mt); |
27 | |
28 | self.triggerId = Utils.getNoNil(Utils.indexToObject(nodeId, getUserAttribute(nodeId, "triggerIndex")), nodeId) |
29 | addTrigger(self.triggerId, "triggerCallback", self); |
30 | |
31 | self.priceScale = Utils.getNoNil(getUserAttribute(nodeId, "priceScale"), 1); |
32 | |
33 | self.trailer = trailer; |
34 | |
35 | self.triggeredTrailers = {}; |
36 | |
37 | self.isEnabled = true; |
38 | |
39 | return self; |
40 | end; |
delete
DescriptionDelete water trailer fill triggerDefinition
delete()Code
44 | function WaterTrailerFillTrigger:delete() |
45 | for trailer, _ in pairs(self.triggeredTrailers) do |
46 | if trailer.removeWaterTrailerFillTrigger ~= nil then |
47 | trailer:removeWaterTrailerFillTrigger(self); |
48 | end |
49 | end |
50 | removeTrigger(self.triggerId); |
51 | end; |
onVehicleDeleted
DescriptionCalled on vehicle deleted and remove vehicle from triggered vehiclesDefinition
onVehicleDeleted()Code
55 | function WaterTrailerFillTrigger:onVehicleDeleted(vehicle) |
56 | self.triggeredTrailers[vehicle] = nil; |
57 | end |
fillWater
DescriptionFill vehicle from water triggerDefinition
fillWater(table vehicle, float delta)Arguments
table | vehicle | vehicle |
float | delta | delta to fill |
float | delta | real delta filled |
64 | function WaterTrailerFillTrigger:fillWater(vehicle, delta) |
65 | |
66 | if not vehicle:allowFillType(FillUtil.FILLTYPE_WATER, false) then |
67 | return 0; |
68 | end |
69 | |
70 | if self.trailer ~= nil then |
71 | local trailerWaterFillLevel = self.trailer:getFillLevel(FillUtil.FILLTYPE_WATER); |
72 | if trailerWaterFillLevel > 0 then |
73 | delta = math.min(delta, trailerWaterFillLevel); |
74 | if delta <= 0 then |
75 | return 0; |
76 | end |
77 | else |
78 | return 0; |
79 | end |
80 | end |
81 | |
82 | local oldFillLevel = vehicle:getFillLevel(FillUtil.FILLTYPE_WATER); |
83 | vehicle:setFillLevel(oldFillLevel + delta, FillUtil.FILLTYPE_WATER); |
84 | delta = vehicle:getFillLevel(FillUtil.FILLTYPE_WATER) - oldFillLevel; |
85 | |
86 | if delta > 0 then |
87 | if self.trailer ~= nil then |
88 | self.trailer:setFillLevel(self.trailer:getFillLevel(FillUtil.FILLTYPE_WATER) - delta, FillUtil.FILLTYPE_WATER); |
89 | elseif self.priceScale > 0 then |
90 | local price = delta * g_currentMission.economyManager:getPricePerLiter(FillUtil.FILLTYPE_WATER) * self.priceScale; |
91 | g_currentMission.missionStats:updateStats("expenses", price); |
92 | g_currentMission:addSharedMoney(-price, "purchaseWater"); |
93 | end |
94 | end |
95 | return delta; |
96 | end |
getIsActivatable
DescriptionReturns true if it is activateableDefinition
getIsActivatable(table vehicle)Arguments
table | vehicle | vehicle to check |
boolean | isActivateable | is activateable |
102 | function WaterTrailerFillTrigger:getIsActivatable(vehicle) |
103 | if self.trailer ~= nil then |
104 | if self.trailer:getFillLevel(FillUtil.FILLTYPE_WATER) <= 0 then |
105 | return false; |
106 | end |
107 | end |
108 | if not vehicle:allowFillType(FillUtil.FILLTYPE_WATER, false) then |
109 | return false; |
110 | end |
111 | return true; |
112 | end |
triggerCallback
DescriptionTrigger callbackDefinition
triggerCallback(integer triggerId, integer otherActorId, boolean onEnter, boolean onLeave, boolean onStay, integer otherShapeId)Arguments
integer | triggerId | id of trigger |
integer | otherActorId | id of other actor |
boolean | onEnter | on enter |
boolean | onLeave | on leave |
boolean | onStay | on stay |
integer | otherShapeId | id of other shape |
122 | function WaterTrailerFillTrigger:triggerCallback(triggerId, otherActorId, onEnter, onLeave, onStay, otherShapeId) |
123 | if self.isEnabled and (onEnter or onLeave) then |
124 | |
125 | local waterTrailer = g_currentMission.objectToTrailer[otherShapeId]; |
126 | |
127 | if waterTrailer ~= nil and waterTrailer ~= self.trailer and waterTrailer.addWaterTrailerFillTrigger ~= nil and waterTrailer.removeWaterTrailerFillTrigger ~= nil then |
128 | if onEnter then |
129 | self.triggeredTrailers[waterTrailer] = waterTrailer; |
130 | waterTrailer:addWaterTrailerFillTrigger(self); |
131 | else -- onLeave |
132 | self.triggeredTrailers[waterTrailer] = nil; |
133 | waterTrailer:removeWaterTrailerFillTrigger(self); |
134 | end; |
135 | end; |
136 | end; |
137 | end; |