• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Custom PT Shared

icekis

Member
Joined
Jan 18, 2018
Messages
91
Reaction score
5
I would like to know how can I configure pt shared for 6 players with any vocation.

My idea is, each player add 15% and 6 would be the maximum with 90% exp gain

If players are from the same guild they win + 10%

Can anybody help me?

my party.lua file

Lua:
function Party:onJoin(player)
    return true
end

function Party:onLeave(player)
    return true
end

function Party:onDisband()
    return true
end

function Party:onShareExperience(exp)
    local sharedExperienceMultiplier = 1.20 --20%
    local vocationsIds = {}

    local vocationId = self:getLeader():getVocation():getBase():getId()
    if vocationId ~= VOCATION_NONE then
        table.insert(vocationsIds, vocationId)
    end

    for _, member in ipairs(self:getMembers()) do
        vocationId = member:getVocation():getBase():getId()
        if not table.contains(vocationsIds, vocationId) and vocationId ~= VOCATION_NONE then
            table.insert(vocationsIds, vocationId)
        end
    end

    local size = #vocationsIds
    if size > 1 then
        sharedExperienceMultiplier = 1.0 + ((size * (5 * (size - 1) + 10)) / 100)
    end

    return (exp * sharedExperienceMultiplier) / (#self:getMembers() + 1)
end
 
Solution
Not tested.
Lua:
function Party:onShareExperience(exp)
    local extraExperienceMultiplier = 1.00

    -- Guild to compare
    local leaderGuild = self:getLeader():getGuild():getId()

    -- Members size bonus
    local partyMembersCount = #self:getMembers()
    if (partyMembersCount > 0 and partyMembersCount < 6) then
      extraExperienceMultiplier = partyMembersCount * 1.15
    elseif (partyMembersCount >= 6) then
      extraExperienceMultiplier = 1.90
    end

    -- Guild bonus
    local bonus = true
    for _, member in ipairs(self:getMembers()) do
      if (member:getGuild():getId() ~= leaderGuild) then
        bonus = false
        break
      end
    end

    if bonus then
      extraExperienceMultiplier =...
Not tested.
Lua:
function Party:onShareExperience(exp)
    local extraExperienceMultiplier = 1.00

    -- Guild to compare
    local leaderGuild = self:getLeader():getGuild():getId()

    -- Members size bonus
    local partyMembersCount = #self:getMembers()
    if (partyMembersCount > 0 and partyMembersCount < 6) then
      extraExperienceMultiplier = partyMembersCount * 1.15
    elseif (partyMembersCount >= 6) then
      extraExperienceMultiplier = 1.90
    end

    -- Guild bonus
    local bonus = true
    for _, member in ipairs(self:getMembers()) do
      if (member:getGuild():getId() ~= leaderGuild) then
        bonus = false
        break
      end
    end

    if bonus then
      extraExperienceMultiplier = extraExperienceMultiplier + 0.10
    end

    return (exp * extraExperienceMultiplier)
end
 
Solution
Not tested.
Lua:
function Party:onShareExperience(exp)
    local extraExperienceMultiplier = 1.00

    -- Guild to compare
    local leaderGuild = self:getLeader():getGuild():getId()

    -- Members size bonus
    local partyMembersCount = #self:getMembers()
    if (partyMembersCount > 0 and partyMembersCount < 6) then
      extraExperienceMultiplier = partyMembersCount * 1.15
    elseif (partyMembersCount >= 6) then
      extraExperienceMultiplier = 1.90
    end

    -- Guild bonus
    local bonus = true
    for _, member in ipairs(self:getMembers()) do
      if (member:getGuild():getId() ~= leaderGuild) then
        bonus = false
        break
      end
    end

    if bonus then
      extraExperienceMultiplier = extraExperienceMultiplier + 0.10
    end

    return (exp * extraExperienceMultiplier)
end

I got this error:

Code:
Lua Script Error: [Event Interface]
data/events/scripts/party.lua:Party@onShareExperience
data/events/scripts/party.lua:17: attempt to index a nil value
stack traceback:
        [C]: in function '__index'
        data/events/scripts/party.lua:17: in function <data/events/scripts/party.lua:13>
 
I got this error:

Code:
Lua Script Error: [Event Interface]

Lua:
function Party:onShareExperience(exp)
    local extraExperienceMultiplier = 1.00

    -- Guild to compare
    local leaderGuild = self:getLeader():getGuild():getId()

    -- Members size bonus
    local partyMembersCount = #self:getMembers()
    if (partyMembersCount > 0 and partyMembersCount < 6) then
      extraExperienceMultiplier = partyMembersCount * 1.15
    elseif (partyMembersCount >= 6) then
      extraExperienceMultiplier = 1.90
    end

    -- Guild bonus
    local bonus = true
    for i = 1, #self:getMembers() do
        if self:getMembers()[i] ~= self then
          if (self:getMembers()[i]:getGuild():getId() ~= leaderGuild) then
            bonus = false
            break
          end
        end
    end

    if bonus then
      extraExperienceMultiplier = extraExperienceMultiplier + 0.10
    end

    return (exp * extraExperienceMultiplier)
end
 
Lua:
function Party:onShareExperience(exp)
    local extraExperienceMultiplier = 1.00

    -- Guild to compare
    local leaderGuild = self:getLeader():getGuild():getId()

    -- Members size bonus
    local partyMembersCount = #self:getMembers()
    if (partyMembersCount > 0 and partyMembersCount < 6) then
      extraExperienceMultiplier = partyMembersCount * 1.15
    elseif (partyMembersCount >= 6) then
      extraExperienceMultiplier = 1.90
    end

    -- Guild bonus
    local bonus = true
    for i = 1, #self:getMembers() do
        if self:getMembers()[i] ~= self then
          if (self:getMembers()[i]:getGuild():getId() ~= leaderGuild) then
            bonus = false
            break
          end
        end
    end

    if bonus then
      extraExperienceMultiplier = extraExperienceMultiplier + 0.10
    end

    return (exp * extraExperienceMultiplier)
end

Got this:


Code:
Lua Script Error: [Event Interface]
data/events/scripts/party.lua:Party@onShareExperience
data/events/scripts/party.lua:17: attempt to index a nil value
stack traceback:
        [C]: in function '__index'
        data/events/scripts/party.lua:17: in function <data/events/scripts/party.lua:13>
 
I got this error:

Code:
Lua Script Error: [Event Interface]
data/events/scripts/party.lua:Party@onShareExperience
data/events/scripts/party.lua:17: attempt to index a nil value
stack traceback:
        [C]: in function '__index'
        data/events/scripts/party.lua:17: in function <data/events/scripts/party.lua:13>
Post your party.lua
 
Post your party.lua

Code:
function Party:onJoin(player)
    return true
end

function Party:onLeave(player)
    return true
end

function Party:onDisband()
    return true
end

function Party:onShareExperience(exp)
    local extraExperienceMultiplier = 1.00

    -- Guild to compare
    local leaderGuild = self:getLeader():getGuild():getId()

    -- Members size bonus
    local partyMembersCount = #self:getMembers()
    if (partyMembersCount > 0 and partyMembersCount < 6) then
      extraExperienceMultiplier = partyMembersCount * 1.15
    elseif (partyMembersCount >= 6) then
      extraExperienceMultiplier = 1.90
    end

    -- Guild bonus
    local bonus = true
    for _, member in ipairs(self:getMembers()) do
      if (member:getGuild():getId() ~= leaderGuild) then
        bonus = false
        break
      end
    end

    if bonus then
      extraExperienceMultiplier = extraExperienceMultiplier + 0.10
    end

    return (exp * extraExperienceMultiplier)
end
 
self:getLeader() returns nil somehow

Test:
Lua:
function Party:onShareExperience(exp)
    local extraExperienceMultiplier = 1.00

    -- Members size bonus
    local partyMembersCount = #self:getMembers()
    if (partyMembersCount > 0 and partyMembersCount < 6) then
      extraExperienceMultiplier = partyMembersCount * 1.15
    elseif (partyMembersCount >= 6) then
      extraExperienceMultiplier = 1.90
    end

    -- Guild bonus
    if partyMembersCount > 1
      local bonus = true
      local lastGuildId = nil
      for _, member in ipairs(self:getMembers()) do
        local guildId = member:getGuild():getId()
        if guildId ~= lastGuildId and lastGuildId ~= nil then
          bonus = false
          break
        end
        lastGuildId = guildId
      end

      if bonus then
        extraExperienceMultiplier = extraExperienceMultiplier + 0.10
      end
    end

    return (exp * extraExperienceMultiplier)
end
 
Would this be able to apply to a server not using data/events?
Im using
Code:
https://github.com/TwistedScorpio/Nostalrius?files=1
 
self:getLeader() returns nil somehow

Test:
Lua:
function Party:onShareExperience(exp)
    local extraExperienceMultiplier = 1.00

    -- Members size bonus
    local partyMembersCount = #self:getMembers()
    if (partyMembersCount > 0 and partyMembersCount < 6) then
      extraExperienceMultiplier = partyMembersCount * 1.15
    elseif (partyMembersCount >= 6) then
      extraExperienceMultiplier = 1.90
    end

    -- Guild bonus
    if partyMembersCount > 1
      local bonus = true
      local lastGuildId = nil
      for _, member in ipairs(self:getMembers()) do
        local guildId = member:getGuild():getId()
        if guildId ~= lastGuildId and lastGuildId ~= nil then
          bonus = false
          break
        end
        lastGuildId = guildId
      end

      if bonus then
        extraExperienceMultiplier = extraExperienceMultiplier + 0.10
      end
    end

    return (exp * extraExperienceMultiplier)
end

@Westwol Bro i got this error now:


Code:
data/events/scripts/party.lua:Party@onShareExperience
data/events/scripts/party.lua:29: attempt to index a nil value
stack traceback:
        [C]: in function '__index'
        data/events/scripts/party.lua:29: in function <data/events/scripts/party.lua:13>

My party.lua

Lua:
function Party:onJoin(player)

    return true

end



function Party:onLeave(player)

    return true

end



function Party:onDisband()

    return true

end



function Party:onShareExperience(exp)

    local extraExperienceMultiplier = 1.00



    -- Members size bonus

    local partyMembersCount = #self:getMembers()

    if (partyMembersCount > 0 and partyMembersCount < 6) then

      extraExperienceMultiplier = partyMembersCount * 1.15

    elseif (partyMembersCount >= 6) then

      extraExperienceMultiplier = 1.90

    end



    -- Guild bonus

    if partyMembersCount > 1 then

      local bonus = true

      local lastGuildId = nil

      for _, member in ipairs(self:getMembers()) do

        local guildId = member:getGuild():getId()

        if guildId ~= lastGuildId and lastGuildId ~= nil then

          bonus = false

          break

        end

        lastGuildId = guildId

      end



      if bonus then

        extraExperienceMultiplier = extraExperienceMultiplier + 0.10

      end

    end



    return (exp * extraExperienceMultiplier)

end

Could you still help me?
 
Back
Top