Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

Fala galera, será que alguém pode me ajudar? Quero que o Shared Exp em party seja igual o do global: 

 

  • 20% de bônus, se os jogadores forem da mesma vocação;
  • 30% de bônus se duas vocações diferentes estiverem compartilhando experiência;
  • 60% de bônus se três vocações diferentes estiverem compartilhando experiência;
  • 100% de bônus se as quatro vocações diferentes estiverem compartilhando experiência.

 

O script que está funcionando no meu servidor é o seguinte:

 

`  function hasPlayerRealParty(cid)
     if Player(cid):getParty() ~= nil then
       if Player(cid):getParty():getMemberCount() > 0 then
         return true
       end
     end
   return false
   end
 
   function useExpRate(player, experience, stamina)
     local k = Game.getExperienceStage(player:getLevel())
     local st = player:getStamina()
 
     if stamina then
       if isPremium(cid) and st > 2400 then
         return experience * k * 1.5
       elseif st < 1 then
         return 0
       elseif st < 841 then
         return experience * k * 0.5
       end
     end
 
     return experience * k
   end
 
   function onKill(cid, target, damage, flags)
   local p = Player(cid)
   local percentbonus = 15
   if not isMonster(target) then
     return true
   end
 
   if hasPlayerRealParty(cid) then
     local party = p:getParty()
     local leader = party:getLeader()
     if party:isSharedExperienceEnabled() then
       local xp = useExpRate(leader, MonsterType(getCreatureName(target):lower()):getExperience(), true) * (percentbonus / 100)
       -- leader
       leader:addExperience(xp, true, true)
       -- other members
       local member = leader:getParty():getMembers()
       for i = 1,party:getMemberCount() do
         local xp = useExpRate(member, MonsterType(getCreatureName(target):lower()):getExperience(), true) * (percentbonus / 100)
         member:addExperience(xp, true, true)
       end
     end
   end
return true
end`

Postado

Qual servidor você está usando? TFS 0.4, 0.3.6, 1.0, 1.1, 1.2?

Pelo script acredito ser TFS 1.x e caso eu esteja certo te recomendo controlar esse sistema através do party.lua em events

Aqui está um exemplo de como utilizar

 

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():getId()
    if vocationId ~= VOCATION_NONE then
        table.insert(vocationsIds, self:getLeader():getVocation():getId())
    end
    
    for _, member in ipairs(self:getMembers()) do
        vocationId = member:getVocation():getId()
        if not isInArray(vocationsIds, vocationId) and vocationId ~= VOCATION_NONE then
            table.insert(vocationsIds, vocationId)
        end
    end
    
    local size = #vocationsIds
    if size > 1 then
        sharedExperienceMultiplier = 1.0 + ((size * (10 + (size - 1) * 5)) / 100)
    end
    
    exp = (exp * sharedExperienceMultiplier) / (self:getMembers() + 1)
    return exp
end


PS. ele não está configurado para sua necessidade, é apenas uma base pra alterar pro seu gosto

Att,
Grafit.

  • 1 year later...
Postado
  Em 21/01/2018 em 22:41, grafit disse:

Qual servidor você está usando? TFS 0.4, 0.3.6, 1.0, 1.1, 1.2?

Pelo script acredito ser TFS 1.x e caso eu esteja certo te recomendo controlar esse sistema através do party.lua em events

Aqui está um exemplo de como utilizar

 

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():getId()
    if vocationId ~= VOCATION_NONE then
        table.insert(vocationsIds, self:getLeader():getVocation():getId())
    end
    
    for _, member in ipairs(self:getMembers()) do
        vocationId = member:getVocation():getId()
        if not isInArray(vocationsIds, vocationId) and vocationId ~= VOCATION_NONE then
            table.insert(vocationsIds, vocationId)
        end
    end
    
    local size = #vocationsIds
    if size > 1 then
        sharedExperienceMultiplier = 1.0 + ((size * (10 + (size - 1) * 5)) / 100)
    end
    
    exp = (exp * sharedExperienceMultiplier) / (self:getMembers() + 1)
    return exp
end


PS. ele não está configurado para sua necessidade, é apenas uma base pra alterar pro seu gosto

 

Poderia me informar como altero a xp entre 2,3 ou 4 membros entre cada vocação? ficaria grato.

pois ativei essa script porém x2, 3 ou 4 tão dando 100%. 
gostaria que se fossem de vocações diferentes os 4, desse 100% 

3 - 75%

2 - 50%

 

poderia me ajudar? 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo