Lopaskurwa
Well-Known Member
- Joined
- Oct 6, 2017
- Messages
- 936
- Solutions
- 2
- Reaction score
- 57
Anyone got any optimization improvements this is Rekzais party module.
creaturescript
party.lua
creaturescript
LUA:
local OPCODE_PARTY = 160
function onThink(creature, interval)
-- only players have parties
if not creature:isPlayer() then
return true
end
local party = creature:getParty()
if not party then
return true
end
local pos = creature:getPosition()
local _data = {
name = creature:getName(),
pos = {x = pos.x, y = pos.y, z = pos.z}
}
-- send update to all members + leader
local leader = party:getLeader()
if leader then
leader:sendExtendedOpcode(OPCODE_PARTY, json.encode({type = "update", player = _data}))
end
for _, member in ipairs(party:getMembers()) do
member:sendExtendedOpcode(OPCODE_PARTY, json.encode({type = "update", player = _data}))
end
return true
end
LUA:
local OPCODE_PARTY = 160
function Party:onJoin(player)
addEvent(function() Arena:onPartySizeChange(self) end, 1) -- Fix since we want to know what the new party looks like (after joining)
-- PARTY ICON START
-- scuffed workaround because members only get populated after we returned true :/
local _members = {}
local leader = self:getLeader()
table.insert(_members, {name = player:getName(), vocation = player:getVocation():getClientId(), pos = player:getPosition()})
for _, member in ipairs(self:getMembers()) do
table.insert(members, {name = member:getName(), vocation = member:getVocation():getClientId(), pos = member:getPosition()})
end
table.insert(_members, {name = leader:getName(), vocation = leader:getVocation():getClientId(), pos = leader:getPosition()})
player:sendExtendedOpcode(OPCODE_PARTY, json.encode({type = "join", members = _members}))
leader:sendExtendedOpcode(OPCODE_PARTY, json.encode({type = "join", members = _members}))
for _, member in ipairs(self:getMembers()) do
member:sendExtendedOpcode(OPCODE_PARTY, json.encode({type = "join", members = _members}))
end
player:registerEvent("partyUpdate")
if #self:getMembers() == 0 then
leader:registerEvent("partyUpdate")
end
-- PARTY ICON END
return true
end
function Party:onLeave(player)
Arena:onPartySizeChange(self)
-- PARTY ICON START
local members = self:getMembers()
for _, member in ipairs(members) do
member:sendExtendedOpcode(OPCODE_PARTY, json.encode({type = "leave", name = player:getName()}))
end
self:getLeader():sendExtendedOpcode(OPCODE_PARTY, json.encode({type = "leave", name = player:getName()}))
player:unregisterEvent("partyUpdate")
-- PARTY ICON END
return true
end
function Party:onDisband()
-- PARTY ICON START
local members = self:getMembers()
for _, member in ipairs(members) do
member:sendExtendedOpcode(OPCODE_PARTY, json.encode({type = "leave", name = member:getName()}))
member:unregisterEvent("partyUpdate")
end
self:getLeader():sendExtendedOpcode(OPCODE_PARTY, json.encode({type = "leave", name = self:getLeader():getName()}))
self:getLeader():unregisterEvent("partyUpdate")
-- PARTY ICON END
return true
end