Ir para conteúdo
  • 0

(resolvido) função getDamageMapPercent


kaleudd

Pergunta

estou com um problema na função função getDamageMapPercent para ser mais direto,o erro causa após o player matar um pokémon selvagem,após matalo o não apareçe o corpse do pokémon ele simplismente desapareçe ao matalo,e causa esse erro na distro:

 

manjo muito pouco de source,e to apanhando para isto,obrigado.

 

614.png

 

 

 

 

 

 

pokeexp;lua:

Spoiler

local function playerAddExp(cid, exp)
local Tiers = {
[71] = {bonus = Exp1},
}
local ball = getPlayerSlotItem(cid, 8):
local Tier = getItemAttribute(ball.uid, "heldx")
if Tier and Tier > 70 and Tier < 78 then
doPlayerAddExp(cid, math.floor(exp * Tiers[Tier].bonus))
    doSendAnimatedText(getThingPos(cid), exp * Tiers[Tier].bonus, 215)
else
doPlayerAddExp(cid, exp)
    doSendAnimatedText(getThingPos(cid), exp, 215)
end
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-------------------------   --alterado v1.7 \/\/
    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 * 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) then
             playerAddExp(party, 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

 

614.png.17155ccbcdeb3752c4761f781fda3819.png

Editado por kaleudd
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

O problema é aqui:

function isStone(id)if id >= leaf and id <= Ancient thenreturn trueendif id == boostStone then  --alterado v1.9return trueendif id == 11453 or id == 11452 or id == 11454 or id == 12242 thenreturn true                                 endif (id >= sfire and id <= searth) or id == 12401 or id == 12414 thenreturn true endreturn falseend

configura..

xo explicar como é:

Aqui, você configura os id que possuem sequencia

if id >= leaf and id <= Ancient then

No caso, leaf até Ancient, tem sequencia.. (ex: 1, 2, 3, 4 etc);

 

aqui, você coloca os id separados, que nao possuem sequencia, nao importa quantos sejam, se nao estiver na sequencia, adicione aqui:

if id == 11453 or id == 11452 or id == 11454 or id == 12242 then

aqui onde tem os nomes das stones, e não os id, é porque possuem sequencia(está parte é direcionada as shining stones), e os que tem os id, é que nao possuem sequencia:

if (id >= sfire and id <= searth) or id == 12401 or id == 12414 then

Se você configurar certim, o erro da distro irá parar e ficar 100%

Link para o comentário
Compartilhar em outros sites

  • 0

consegui resolver

o problema era aqui e la na tabela que vc disse,pois estavam com os id diferentes das stones,agora está tudo perfeito.

["ice"] = {ice, "ice"},

 

obrigado pela ajuda com tudo.

Editado por kaleudd
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...