Ir para conteúdo
  • Cadastre-se

(Resolvido)Party Não ganha xp e pokemon n tem corpo


Ir para solução Resolvido por Nysman,

Posts Recomendados

Quando dou PT com alguem, Corpo não aparece e n divide Xp:

 

Erro: 

[Error - CreatureScript Interface] 
datapack/creaturescripts/scripts/pokeexp.lua:onDeath
Description: 
(luaGetCreatureStorage) Creature not found

[Error - CreatureScript Interface] 
datapack/creaturescripts/scripts/pokeexp.lua:onDeath
Description: 
datapack/creaturescripts/scripts/pokeexp.lua:56: attempt to compare boolean with number
stack traceback:
    datapack/creaturescripts/scripts/pokeexp.lua:56: in function <datapack/creaturescripts/scripts/pokeexp.lua:14>

 

 

Spoiler

local function playerAddExp(cid, exp)
    if getPlayerLevel(cid) >= 25000 then 
        return true
    end
    doPlayerAddExp(cid, exp)
    doSendAnimatedText(getThingPos(cid), "" ..exp, 180)
    if #getPlayerPokemons(cid) > 0 and isMonster(getPlayerPokemons(cid)[1]) and getMonsterLevel(getPlayerPokemons(cid)[1]) < POKELEVEL_PLUS.maxlevel then
        exp = (exp * POKELEVEL_PLUS.exprate) / 25
        doMonsterAddExperience(getPlayerPokemons(cid)[1], exp)
        doSendAnimatedText(getThingPos(getPlayerPokemons(cid)[1]), "" ..exp, 215)
    end
end
 
function onDeath(cid, corpse, deathList)

    doItemSetAttribute(corpse.uid, "n_level", getMonsterLevel(cid)) 

    if not isCreature(cid) or isSummon(cid) or not deathList or getCreatureName(cid) == "Evolution" then 
        return true
    end
    if getMonsterLevel(cid) > 0 then
        doItemSetAttribute(corpse.uid, "n_level", getMonsterLevel(cid))
    end
    if getPlayerStorageValue(cid, 22546) == 1 then
        setGlobalStorageValue(22548, getGlobalStorageValue(22548)-1)
        if corpse.itemid ~= 0 then 
            doItemSetAttribute(corpse.uid, "golden", 1) 
        end   
    end  
    if getPlayerStorageValue(cid, 22546) == 1 and getGlobalStorageValue(22548) == 0 then
        local wave = getGlobalStorageValue(22547)
        for _, sid in ipairs(getPlayersOnline()) do
            if isPlayer(sid) and getPlayerStorageValue(sid, 22545) == 1 then
                if getGlobalStorageValue(22547) < #wavesGolden+1 then
                    doPlayerSendTextMessage(sid, 20, "Wave "..wave.." will begin in "..timeToWaves.."seconds!")  
                    doPlayerSendTextMessage(sid, 28, "Wave "..wave.." will begin in "..timeToWaves.."seconds!")
                    addEvent(creaturesInGolden, 100, GoldenUpper, GoldenLower, false, true, true)
                    addEvent(doWave, timeToWaves*1000)
                elseif getGlobalStorageValue(22547) == #wavesGolden+1 then
                    doPlayerSendTextMessage(sid, 20, "You have win the golden arena! Take your reward!")
                    doPlayerAddItem(sid, 2152, getPlayerStorageValue(sid, 22551)*2)    --premio
                    setPlayerStorageValue(sid, 22545, -1)
                    doTeleportThing(sid, getClosestFreeTile(sid, posBackGolden), false)
                    setPlayerRecordWaves(sid)
                end
            end
        end   
        if getGlobalStorageValue(22547) == #wavesGolden+1 then
            endGoldenArena()
        end
    end  
    local exptotal = math.ceil(getWildPokemonExp(cid) * playerExperienceRate)
    if exptotal > 0 then
        for _, killer in pairs(deathList) do
            if isPlayer(killer) then
                if isInParty(killer) and getPlayerStorageValue(pk, 4875498) <= -1 then
                    local sharedexp = math.floor(exptotal / #getPartyMembers(killer))
                    for _, member in pairs(getPartyMembers(killer)) do
                        if getDistanceBetween(getThingPos(killer), getThingPos(member) < 30) then
                            playerAddExp(member, sharedexp)
                        end
                    end
                else
                    playerAddExp(killer, exptotal) 
                end
            end
        end
    end
    if isNpcSummon(cid) then
        local master = getCreatureMaster(cid)
        doSendMagicEffect(getThingPos(cid), getPlayerStorageValue(cid, 10000))
        doCreatureSay(master, getPlayerStorageValue(cid, 10001), 1)
        doRemoveCreature(cid)
        return false
    end
    return true
end

 

 

Alguem me ajuda por gentileza!

Link para o post
Compartilhar em outros sites

Tenta assim:

Spoiler

local function playerAddExp(cid, exp)
    doPlayerAddExp(cid, exp)
    doSendAnimatedText(getThingPos(cid), exp, 215)
end


function onDeath(cid, corpse, deathList)
        
    --if not isCreature(cid) then return true end
    if isSummon(cid) or not deathList or getCreatureName(cid) == "Evolution" then return true end --alterado v1.8

    local givenexp = getWildPokemonExp(cid)
    ---local killer = getItemAttribute(corpse.uid, "corpseowner") 
if givenexp > 0 then
for a = 1, #deathList do
local pk = deathList[a]
---
local list = getSpectators(getThingPosWithDebug(pk), 30, 30, false)
if isCreature(pk) then 
   local expTotal = math.floor(givenexp * getDamageMapPercent(pk, cid))
   local party = getPartyMembers(pk)
   if isInParty(pk) and getPlayerStorageValue(pk, 4875498) <= -1 then
      expTotal = math.floor(expTotal/#party)         --alterado v1.6.1
      for i = 1, #party do
          if isInArray(list, party[i]) then             
if getPlayerLevel(pk) <= 50 then
             playerAddExp(party[i], expTotal * 200)  
elseif getPlayerLevel(pk) >= 51 and getPlayerLevel(pk) <= 75 then
             playerAddExp(party[i], expTotal * 130)
elseif getPlayerLevel(pk) >= 76 and getPlayerLevel(pk) <= 100 then
             playerAddExp(party[i], expTotal * 80)
elseif getPlayerLevel(pk) >= 101 and getPlayerLevel(pk) <= 150 then
             playerAddExp(party[i], expTotal * 40)
elseif getPlayerLevel(pk) >= 151 and getPlayerLevel(pk) <= 250 then
             playerAddExp(party[i], expTotal * 20)
elseif getPlayerLevel(pk) >= 251 and getPlayerLevel(pk) <= 350 then
             playerAddExp(party[i], expTotal * 10)
elseif getPlayerLevel(pk) >= 351 then
             playerAddExp(party[i], expTotal * 5)
             end
          end
      end
   elseif not isInParty(pk) then
if getPlayerLevel(pk) <= 50 then
playerAddExp(pk, math.floor(200 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 51 and getPlayerLevel(pk) <= 75 then
playerAddExp(pk, math.floor(130 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 76 and getPlayerLevel(pk) <= 100 then
playerAddExp(pk, math.floor(80 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 101 and getPlayerLevel(pk) <= 150 then
playerAddExp(pk, math.floor(40 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 151 and getPlayerLevel(pk) <= 250 then
playerAddExp(pk, math.floor(20 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 251 and getPlayerLevel(pk) <= 350 then
playerAddExp(pk, math.floor(10 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 351 then
playerAddExp(pk, math.floor(5 * givenexp * getDamageMapPercent(pk, cid)))
return true end      
   end       
end
end
end

    if isNpcSummon(cid) then
        local master = getCreatureMaster(cid)
        doSendMagicEffect(getThingPos(cid), getPlayerStorageValue(cid, 10000))
        doCreatureSay(master, getPlayerStorageValue(cid, 10001), 1)
        doRemoveCreature(cid)
    return false
    end
if corpse.itemid ~= 0 then   --alterado v1.8
   doItemSetAttribute(corpse.uid, "level", getPokemonLevel(cid))
   doItemSetAttribute(corpse.uid, "gender", getPokemonGender(cid))  
end
return true
end

 

Link para o post
Compartilhar em outros sites
4 minutos atrás, Nysman disse:

Tenta assim:

  Ocultar conteúdo

local function playerAddExp(cid, exp)
    doPlayerAddExp(cid, exp)
    doSendAnimatedText(getThingPos(cid), exp, 215)
end


function onDeath(cid, corpse, deathList)
        
    --if not isCreature(cid) then return true end
    if isSummon(cid) or not deathList or getCreatureName(cid) == "Evolution" then return true end --alterado v1.8

    local givenexp = getWildPokemonExp(cid)
    ---local killer = getItemAttribute(corpse.uid, "corpseowner") 
if givenexp > 0 then
for a = 1, #deathList do
local pk = deathList[a]
---
local list = getSpectators(getThingPosWithDebug(pk), 30, 30, false)
if isCreature(pk) then 
   local expTotal = math.floor(givenexp * getDamageMapPercent(pk, cid))
   local party = getPartyMembers(pk)
   if isInParty(pk) and getPlayerStorageValue(pk, 4875498) <= -1 then
      expTotal = math.floor(expTotal/#party)         --alterado v1.6.1
      for i = 1, #party do
          if isInArray(list, party[i]) then             
if getPlayerLevel(pk) <= 50 then
             playerAddExp(party[i], expTotal * 200)  
elseif getPlayerLevel(pk) >= 51 and getPlayerLevel(pk) <= 75 then
             playerAddExp(party[i], expTotal * 130)
elseif getPlayerLevel(pk) >= 76 and getPlayerLevel(pk) <= 100 then
             playerAddExp(party[i], expTotal * 80)
elseif getPlayerLevel(pk) >= 101 and getPlayerLevel(pk) <= 150 then
             playerAddExp(party[i], expTotal * 40)
elseif getPlayerLevel(pk) >= 151 and getPlayerLevel(pk) <= 250 then
             playerAddExp(party[i], expTotal * 20)
elseif getPlayerLevel(pk) >= 251 and getPlayerLevel(pk) <= 350 then
             playerAddExp(party[i], expTotal * 10)
elseif getPlayerLevel(pk) >= 351 then
             playerAddExp(party[i], expTotal * 5)
             end
          end
      end
   elseif not isInParty(pk) then
if getPlayerLevel(pk) <= 50 then
playerAddExp(pk, math.floor(200 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 51 and getPlayerLevel(pk) <= 75 then
playerAddExp(pk, math.floor(130 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 76 and getPlayerLevel(pk) <= 100 then
playerAddExp(pk, math.floor(80 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 101 and getPlayerLevel(pk) <= 150 then
playerAddExp(pk, math.floor(40 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 151 and getPlayerLevel(pk) <= 250 then
playerAddExp(pk, math.floor(20 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 251 and getPlayerLevel(pk) <= 350 then
playerAddExp(pk, math.floor(10 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 351 then
playerAddExp(pk, math.floor(5 * givenexp * getDamageMapPercent(pk, cid)))
return true end      
   end       
end
end
end

    if isNpcSummon(cid) then
        local master = getCreatureMaster(cid)
        doSendMagicEffect(getThingPos(cid), getPlayerStorageValue(cid, 10000))
        doCreatureSay(master, getPlayerStorageValue(cid, 10001), 1)
        doRemoveCreature(cid)
    return false
    end
if corpse.itemid ~= 0 then   --alterado v1.8
   doItemSetAttribute(corpse.uid, "level", getPokemonLevel(cid))
   doItemSetAttribute(corpse.uid, "gender", getPokemonGender(cid))  
end
return true
end

 

Nao funcionou não

 

Link para o post
Compartilhar em outros sites
  • Solução
17 horas atrás, Isac005 disse:

Nao funcionou não

 

Troca o seu por esse:

Spoiler

local function playerAddExp(cid, exp)
   doPlayerAddExp(cid, exp)
   doSendAnimatedText(getThingPos(cid), exp, 215)
end

local Exps = {
{minL = 1, maxL = 51, multipler = 1.6},
{minL = 51, maxL = 150, multipler = 1.4},
{minL = 150, maxL = 199, multipler = 1.2},
{minL = 200, maxL = 249, multipler = 1.0},
{minL = 250, maxL = 299, multipler = 0.9},
}

local function calculaExp(cid, expTotal)
if not isPlayer(cid) then return 0 end
   local expFinal = expTotal
   local flag = false
   for _, TABLE in pairs(Exps) do
          if getPlayerLevel(cid) >= TABLE.minL and getPlayerLevel(cid) <= TABLE.maxL then
                 flag = true
                 expFinal = expFinal * TABLE.multipler
                 break
          end
   end
   if not flag then expFinal = expFinal * 0.1 end --lvl 300+
return math.floor(expFinal)
end

function onDeath(cid, corpse, deathList)

if isSummon(cid) or not deathList or getCreatureName(cid) == "Evolution" then return true end --alterado v1.8
-------------Edited Golden Arena-------------------------
   if getPlayerStorageValue(cid, 22546) == 1 then
          setGlobalStorageValue(22548, getGlobalStorageValue(22548)-1)
          if corpse.itemid ~= 0 then doItemSetAttribute(corpse.uid, "golden", 1) end --alterado v1.8
   end
   if getPlayerStorageValue(cid, 22546) == 1 and getGlobalStorageValue(22548) == 0 then
          local wave = getGlobalStorageValue(22547)
          for _, sid in ipairs(getPlayersOnline()) do
                 if isPlayer(sid) and getPlayerStorageValue(sid, 22545) == 1 then
                    if getGlobalStorageValue(22547) < #wavesGolden+1 then
                           doPlayerSendTextMessage(sid, 20, "Wave "..wave.." will begin in "..timeToWaves.."seconds!")
                           doPlayerSendTextMessage(sid, 28, "Wave "..wave.." will begin in "..timeToWaves.."seconds!")
                           addEvent(creaturesInGolden, 100, GoldenUpper, GoldenLower, false, true, true)
                           addEvent(doWave, timeToWaves*1000)
                    elseif getGlobalStorageValue(22547) == #wavesGolden+1 then
                           doPlayerSendTextMessage(sid, 20, "You have win the golden arena! Take your reward!")
                           doPlayerAddItem(sid, 2152, getPlayerStorageValue(sid, 22551)*2) --premio
                           setPlayerStorageValue(sid, 22545, -1)
                           doTeleportThing(sid, getClosestFreeTile(sid, posBackGolden), false)
                           setPlayerRecordWaves(sid)
                    end
                 end
          end
          if getGlobalStorageValue(22547) == #wavesGolden+1 then
                 endGoldenArena()
          end
   end
--------------------------------------------------- /\/\
   local givenexp = getWildPokemonExp(cid)

   if givenexp > 0 then
          for a = 1, #deathList do
                  local pk = deathList[a]
                  local list = getSpectators(getThingPosWithDebug(pk), 30, 30, false)
                  if isCreature(pk) then
                         local expTotal = math.floor(playerExperienceRate * givenexp / 1.9)
                                   expTotal = calculaExp(pk, expTotal)
                         local party = getPartyMembers(pk)
                         if isInParty(pk) and getPlayerStorageValue(pk, 4875498) <= -1 then
                            expTotal = math.floor(expTotal/#party)
                            for i = 1, #party do
                                    if isInArray(list, party[i]) then
                                           playerAddExp(party[i], expTotal)
                                    end
                            end
                         else
                                 playerAddExp(pk, expTotal)
                         end
                  end
          end
   end

   if isNpcSummon(cid) then
          local master = getCreatureMaster(cid)
          doSendMagicEffect(getThingPos(cid), getPlayerStorageValue(cid, 10000))
          doCreatureSay(master, getPlayerStorageValue(cid, 10001), 1)
          doRemoveCreature(cid)
          return false
   end

   if corpse.itemid ~= 0 then --alterado v1.8
          doItemSetAttribute(corpse.uid, "level", getPokemonLevel(cid))
          doItemSetAttribute(corpse.uid, "gender", getPokemonGender(cid))
   end
return true
end
local function doSetRandomGender(cid)
    if not isCreature(cid) then return true end
    if isSummon(cid) then return true end
    local gender = 0
    local name = getCreatureName(cid)
    if not newpokedex[name] then return true end
    local rate = newpokedex[name].gender
        if rate == 0 then
            gender = 3
        elseif rate == 1000 then
            gender = 4
        elseif rate == -1 then
            gender = 1
        elseif math.random(1, 1000) <= rate then
            gender = 4
        else
            gender = 3
        end
        
        
    doCreatureSetSkullType(cid, gender)

end

 

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo