Script v1.7.1.0
- AI
- Animals
- Contracts
- Debug
- Economy
- Effects
- Events
- Farms
- GUI
- Handtools
- I3d
- Materials
- Misc
- Objects
- Placeables
- Player
- Player
- PlayerModelManager
- PlayerPickUpObjectEvent
- PlayerSetFarmAnswerEvent
- PlayerSetFarmEvent
- PlayerSetHandToolEvent
- PlayerStateActivateObject
- PlayerStateAnimalFeed
- PlayerStateAnimalInteract
- PlayerStateAnimalPet
- PlayerStateAnimalRide
- PlayerStateBase
- PlayerStateCrouch
- PlayerStateCycleHandtool
- PlayerStateDrop
- PlayerStateFall
- PlayerStateIdle
- PlayerStateJump
- PlayerStateMachine
- PlayerStatePickup
- PlayerStateRun
- PlayerStateSwim
- PlayerStateThrow
- PlayerStateUseLight
- PlayerStateWalk
- PlayerStyle
- PlayerSwitchedFarmEvent
- PlayerTeleportEvent
- PlayerThrowObjectEvent
- PlayerToggleLightEvent
- Shop
- Sounds
- Specializations
- Triggers
- Utils
- Vehicles
- Weather
Engine v1.7.1.0
- AI
- Animation
- Camera
- Entity
- Fillplanes
- General
- I3D
- Input
- Lighting
- Math
- Network
- Node
- Overlays
- Particle System
- Physics
- Rendering
- Scenegraph
- Shape
- Sound
- Spline
- String
- Terrain Detail
- Text Rendering
- Tire Track
- XML
- general
Foundation Reference
PlayerSetFarmEvent
ParentEventFunctions
emptyNew
DescriptionCreate an empty instanceDefinition
emptyNew()Return Values
table | instance | Instance of object |
13 | function PlayerSetFarmEvent:emptyNew() |
14 | local self = Event:new(PlayerSetFarmEvent_mt) |
15 | return self |
16 | end |
new
DescriptionCreate an instanceDefinition
new(table player, integer toolId)Arguments
table | player | player instance |
integer | toolId | tool identification |
table | instance | Instance of object |
23 | function PlayerSetFarmEvent:new(player, farmId, password) |
24 | local self = PlayerSetFarmEvent:emptyNew() |
25 | |
26 | self.player = player |
27 | self.farmId = farmId |
28 | self.password = password |
29 | |
30 | return self |
31 | end |
readStream
DescriptionReads network streamDefinition
readStream(integer streamId, table connection)Arguments
integer | streamId | network stream identification |
table | connection | connection information |
53 | function PlayerSetFarmEvent:readStream(streamId, connection) |
54 | self.player = NetworkUtil.readNodeObject(streamId) |
55 | self.farmId = streamReadUIntN(streamId, FarmManager.FARM_ID_SEND_NUM_BITS) |
56 | |
57 | if streamReadBool(streamId) then |
58 | self.password = streamReadString(streamId) |
59 | end |
60 | |
61 | self:run(connection) |
62 | end |
run
DescriptionRun eventDefinition
run(table connection)Arguments
table | connection | connection information |
67 | function PlayerSetFarmEvent:run(connection) |
68 | if not connection:getIsServer() then --server side |
69 | local oldFarmId = self.player.farmId |
70 | local oldFarm = g_farmManager:getFarmById(oldFarmId) |
71 | |
72 | local farm = g_farmManager:getFarmById(self.farmId) |
73 | |
74 | if farm ~= nil then |
75 | local user = g_currentMission.userManager:getUserByUserId(self.player.userId) |
76 | |
77 | -- admins can always join any farm, otherwise the password must be empty or correctly given |
78 | if user:getIsMasterUser() or farm.password == nil or farm.password == self.password then |
79 | oldFarm:removeUser(user:getId()) |
80 | self.player:setFarm(self.farmId) |
81 | farm:addUser(user:getId(), user:getUniqueUserId(), user:getIsMasterUser()) |
82 | |
83 | self.player:onFarmChange() |
84 | |
85 | -- publish message about farm change |
86 | g_messageCenter:publish(MessageType.PLAYER_FARM_CHANGED, {self.player}) |
87 | |
88 | -- Force an update of the finance history |
89 | user:setFinancesVersionCounter(0) |
90 | |
91 | -- Finish handshake, lets the client record the password for the farm |
92 | connection:sendEvent(PlayerSetFarmAnswerEvent:new(PlayerSetFarmAnswerEvent.STATE.OK, self.farmId, self.password)) |
93 | |
94 | -- Tell all players that a player has switched |
95 | g_server:broadcastEvent(PlayerSwitchedFarmEvent:new(oldFarmId, self.farmId, user:getId())) |
96 | else |
97 | -- let the client know that the correct password is required |
98 | connection:sendEvent(PlayerSetFarmAnswerEvent:new(PlayerSetFarmAnswerEvent.STATE.PASSWORD_REQUIRED, self.farmId)) |
99 | end |
100 | end |
101 | else -- client side |
102 | self.player.farmId = self.farmId |
103 | self.player:onFarmChange() |
104 | |
105 | g_messageCenter:publish(MessageType.PLAYER_FARM_CHANGED, {self.player}) |
106 | end |
107 | end |
sendEvent
DescriptionCreate an instanceDefinition
sendEvent(table player, integer farmId, bool noEventSend)Arguments
table | player | player instance |
integer | farmId | farm identification |
bool | noEventSend | if false will send the event |
114 | function PlayerSetFarmEvent.sendEvent(player, farmId, noEventSend) |
115 | if noEventSend == nil or noEventSend == false then |
116 | if g_server ~= nil then |
117 | g_server:broadcastEvent(PlayerSetFarmEvent:new(player, farmId), nil, nil, player) |
118 | else |
119 | g_client:getServerConnection():sendEvent(PlayerSetFarmEvent:new(player, farmId)) |
120 | end |
121 | end |
122 | end |
writeStream
DescriptionWrites network streamDefinition
writeStream(integer streamId, table connection)Arguments
integer | streamId | network stream identification |
table | connection | connection information |
37 | function PlayerSetFarmEvent:writeStream(streamId, connection) |
38 | NetworkUtil.writeNodeObject(streamId, self.player) |
39 | streamWriteUIntN(streamId, self.farmId, FarmManager.FARM_ID_SEND_NUM_BITS) |
40 | |
41 | if self.password ~= nil then |
42 | streamWriteBool(streamId, true) |
43 | streamWriteString(streamId, self.password) |
44 | else |
45 | streamWriteBool(streamId, false) |
46 | end |
47 | end |