LUADOC - Farming Simulator 19

Script v1.7.1.0

Engine v1.7.1.0

Foundation Reference

PlayerSetFarmEvent

Parent
Event
Functions

emptyNew

Description
Create an empty instance
Definition
emptyNew()
Return Values
tableinstanceInstance of object
Code
13function PlayerSetFarmEvent:emptyNew()
14 local self = Event:new(PlayerSetFarmEvent_mt)
15 return self
16end

new

Description
Create an instance
Definition
new(table player, integer toolId)
Arguments
tableplayerplayer instance
integertoolIdtool identification
Return Values
tableinstanceInstance of object
Code
23function 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
31end

readStream

Description
Reads network stream
Definition
readStream(integer streamId, table connection)
Arguments
integerstreamIdnetwork stream identification
tableconnectionconnection information
Code
53function 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)
62end

run

Description
Run event
Definition
run(table connection)
Arguments
tableconnectionconnection information
Code
67function 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
107end

sendEvent

Description
Create an instance
Definition
sendEvent(table player, integer farmId, bool noEventSend)
Arguments
tableplayerplayer instance
integerfarmIdfarm identification
boolnoEventSendif false will send the event
Code
114function 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
122end

writeStream

Description
Writes network stream
Definition
writeStream(integer streamId, table connection)
Arguments
integerstreamIdnetwork stream identification
tableconnectionconnection information
Code
37function 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
47end