Party Class
The Party class represents a group of players working together, sharing experience and loot.
Getting a Party
local party = player:getParty()
Members
| Method | Returns | Description |
|---|
getLeader() | Player | Party leader |
getMembers() | table | All members (excluding leader) |
getMemberCount() | number | Member count |
getInvitees() | table | Pending invites |
getInviteeCount() | number | Invite count |
local party = player:getParty()
local leader = party:getLeader()
print("Leader: " .. leader:getName())
for _, member in ipairs(party:getMembers()) do
print("Member: " .. member:getName())
Invitations
| Method | Returns | Description |
|---|
addInvite(player) | boolean | Invite player |
removeInvite(player) | boolean | Cancel invite |
isInvited(player) | boolean | Check if invited |
-- Invite player to party
party:addInvite(targetPlayer)
if party:isInvited(player) then
print("Player is invited!")
Member Management
| Method | Returns | Description |
|---|
addMember(player) | boolean | Add member |
removeMember(player) | boolean | Remove member |
passLeadership(player) | boolean | Transfer leadership |
disband() | boolean | Disband party |
party:passLeadership(newLeader)
party:removeMember(member)
Experience Sharing
| Method | Returns | Description |
|---|
isSharedExperienceActive() | boolean | Shared exp active |
isSharedExperienceEnabled() | boolean | Shared exp enabled |
setSharedExperience(active) | boolean | Toggle shared exp |
if party:isSharedExperienceActive() then
print("Party is sharing experience!")
party:setSharedExperience(true)
Examples
Create Party System
local function createParty(leader)
-- Player becomes leader when inviting
local function inviteToParty(leader, target)
local party = leader:getParty()
-- Create party by inviting
leader:sendTextMessage(MESSAGE_INFO_DESCR,
"You have invited " .. target:getName() .. " to your party.")
if party:getLeader() ~= leader then
leader:sendCancelMessage("Only the leader can invite players.")
Party Message
local function partyMessage(party, message)
local leader = party:getLeader()
leader:sendTextMessage(MESSAGE_PARTY_MANAGEMENT, message)
for _, member in ipairs(party:getMembers()) do
member:sendTextMessage(MESSAGE_PARTY_MANAGEMENT, message)
Check Same Party
local function isSameParty(player1, player2)
local party1 = player1:getParty()
local party2 = player2:getParty()
if not party1 or not party2 then
Party Heal
local function healParty(caster, amount)
local party = caster:getParty()
local leader = party:getLeader()
if caster:getPosition():getDistance(leader:getPosition()) <= 10 then
leader:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
for _, member in ipairs(party:getMembers()) do
if caster:getPosition():getDistance(member:getPosition()) <= 10 then
member:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
Party Level Range Check
local function canShareExperience(party)
local leader = party:getLeader()
local minLevel = leader:getLevel()
local maxLevel = leader:getLevel()
for _, member in ipairs(party:getMembers()) do
local level = member:getLevel()
if level < minLevel then minLevel = level end
if level > maxLevel then maxLevel = level end
-- Check if within 2/3 range
return minLevel >= (maxLevel * 2 / 3)