Ir para conteúdo
  • 0

Pokes selvagens ganhando XP


FlamesAdmin

Pergunta

Quando poke do player morre os selvagens ganham exp, segue um GIF

WIWavyO.gif

 

Alguém que já teve o mesmo problema sabe como resolver isso?

 

CORREÇÃO
Problema está no sistema de PASSIVE SYSTEM do Tony Araujo

troque todo código da função "void Creature::addDamagePoints(Creature* attacker, int32_t damagePoints)" em creature.cpp por essa

void Creature::addDamagePoints(Creature* attacker, int32_t damagePoints)
{
    uint32_t attackerId = 0;
    if(attacker)
    {
        if(Creature* master = attacker->getMaster())
            attacker = master;

        attackerId = attacker->isPlayerSummon() ? attacker->getMaster()->getID() : attacker->getID();
    }

    if(attacker->getPlayer())
    {
        CountMap::iterator it = damageMap.find(attackerId);
        if(it != damageMap.end())
        {
            it->second.ticks = OTSYS_TIME();
            if(damagePoints > 0)
                it->second.total += damagePoints;
        }
        else
            damageMap[attackerId] = CountBlock_t(damagePoints);
    }

    if(damagePoints > 0)
        lastHitCreature = attackerId;
}

 

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

Posts Recomendados

  • 0

@Yan18



function onLogout(cid)
    if not isCreature(cid) then return true end    
    local thisitem = getPlayerSlotItem(cid, ?
    
    if thisitem.uid <= 0 then return true end
    
    local ballName = getItemAttribute(thisitem.uid, "poke")
    local btype = getPokeballType(thisitem.itemid)
    
    ---------------------------------------------------------------
    if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then    --alterado v1.6
       if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then  
          BackTeam(cid)       
       end
    end
    --////////////////////////////////////////////////////////////////////////////////////////--
    if getPlayerStorageValue(cid, 52480) >= 1 and getPlayerStorageValue(cid, 52481) >= 0 then 
       doEndDuel(cid)
    end
    --////////////////////////////////////////////////////////////////////////////////////////--
    if #getCreatureSummons(cid) == 2 and getPlayerStorageValue(cid, 212124) >= 1 then
       local cmed2 = getCreatureSummons(cid)[1]
       local poscmed = getThingPos(cmed2)
       local cmeddir = getCreatureLookDir(cmed2)
       local namecmed = getCreatureName(cmed2)
       local hp, maxHp = getCreatureHealth(getCreatureSummons(cid)[1]), getCreatureMaxHealth(getCreatureSummons(cid)[1])
       --local gender = getPokemonGender(cmed2) 
       doRemoveCreature(getCreatureSummons(cid)[1])
       local back = doCreateMonster(namecmed, poscmed)
       --addEvent(doCreatureSetSkullType, 150, back, gender)
       doCreatureSetLookDir(back, cmeddir)
       addEvent(doCreatureAddHealth, 100, back, hp-maxHp)
                                                                            
       -- pokemon controlador    
       local ball2 = getPlayerSlotItem(cid, ?
       local mynewpos = getThingPos(getCreatureSummons(cid)[1])
       doRemoveCreature(getCreatureSummons(cid)[1])
       local pk2 = doSummonCreature(getItemAttribute(ball2.uid, "poke"), mynewpos) 
       doConvinceCreature(cid, pk2)
       addEvent(doAdjustWithDelay, 100, cid, pk2, true, true, false)
       setPlayerStorageValue(cid, 888, -1)    
       cleanCMcds(ball2.uid)
       doCreatureSetLookDir(getCreatureSummons(cid)[1], 2)
       registerCreatureEvent(pk2, "SummonDeath")   
    end
    
    ----------------------------------------------------------------------
    local summon = getCreatureSummons(cid)[1]      
      
    if #getCreatureSummons(cid) >= 1 and thisitem.uid > 1 then
        if getPlayerStorageValue(cid, 212124) <= 0 then
           doItemSetAttribute(thisitem.uid, "hp", (getCreatureHealth(summon) / getCreatureMaxHealth(summon)))
        end                                                          
        setPlayerStorageValue(cid, 212124, 0)
        doTransformItem(thisitem.uid, pokeballs[btype].on)
        doSendMagicEffect(getThingPos(summon), pokeballs[btype].effect)
        doRemoveCreature(summon)
    end

    if getCreatureOutfit(cid).lookType == 814 then
        doPlayerStopWatching(cid)
    end

    if tonumber(getPlayerStorageValue(cid, 17000)) and getPlayerStorageValue(cid, 17000) >= 1 then  
        markFlyingPos(cid, getThingPos(cid))
    end
    
    if getPlayerStorageValue(cid, 22545) == 1 then     
       setGlobalStorageValue(22550, getGlobalStorageValue(22550)-1)
       if getGlobalStorageValue(22550) <= 0 then
          endGoldenArena()          
       end 
    end

return TRUE
end

local deathtexts = {"Oh no! POKENAME, come back!", "Come back, POKENAME!", "That's enough, POKENAME!", "You did well, POKENAME!",
            "You need to rest, POKENAME!", "Nice job, POKENAME!", "POKENAME, you are too hurt!"}

function onDeath(cid, deathList)

    local owner = getCreatureMaster(cid)

        if getPlayerStorageValue(cid, 637500) >= 1 then
           doSendMagicEffect(getThingPos(cid), 211)
           doRemoveCreature(cid)
           return true
        end
        
        if getPlayerStorageValue(cid, 212123) >= 1 then
           return true
        end
        
        --////////////////////////////////////////////////////////////////////////////////////////--
        checkDuel(owner)                                                                          
        --////////////////////////////////////////////////////////////////////////////////////////--
        
    local thisball = getPlayerSlotItem(owner, ?
    local ballName = getItemAttribute(thisball.uid, "poke")
    
    btype = getPokeballType(thisball.itemid)

        if #getCreatureSummons(owner) > 1 then
           BackTeam(owner, getCreatureSummons(owner))      
        end

        doSendMagicEffect(getThingPos(cid), pokeballs[btype].effect)
        doTransformItem(thisball.uid, pokeballs[btype].off)

        --doPlayerSendTextMessage(owner, 22, "Your pokemon fainted.")

    local say = deathtexts[math.random(#deathtexts)]
        say = string.gsub(say, "POKENAME", getCreatureName(cid))

    if getPlayerStorageValue(cid, 33) <= 0 then
        doCreatureSay(owner, say, TALKTYPE_MONSTER)
    end

    doItemSetAttribute(thisball.uid, "hp", 0)
    if ehMonstro(deathList[1]) then
       doItemSetAttribute(thisball.uid, "happy", getPlayerStorageValue(cid, 1008) - happyLostOnDeath)
    end
    doItemSetAttribute(thisball.uid, "hunger", getPlayerStorageValue(cid, 1009))

    if useOTClient then
       doPlayerSendCancel(owner, '12//,hide')      --alterado v1.7
    end

    doRemoveCreature(cid)

return false
end

Link para o comentário
Compartilhar em outros sites

  • 0

@Yan18tava dando uma olhada no level system da lib e na funçao function adjustWildPoke(cid, optionalLevel) tem isso

if pokes[getCreatureName(cid)].exp then
       local exp = pokes[getCreatureName(cid)].exp * baseExpRate + pokes[getCreatureName(cid)].vitality * pokemonExpPerLevelRate
       setPlayerStorageValue(cid, 1006, (exp * generalExpRate/2)*10)
       if getPlayerStorageValue(cid, 22546) == 1 then
          setPlayerStorageValue(cid, 1006, 750)
          doSetCreatureDropLoot(cid, false)      
       end   

ainda não mexi

Link para o comentário
Compartilhar em outros sites

  • 0
20 horas atrás, FlamesAdmin disse:

 

tem isso não ?

Como não? Se você tem a pasta creaturescripts, tem que ter o creaturescripts.lua para executar os eventos. Todo Poketibia tem que ter.

5 horas atrás, FlamesAdmin disse:

@Yan18tava dando uma olhada no level system da lib e na funçao function adjustWildPoke(cid, optionalLevel) tem isso


if pokes[getCreatureName(cid)].exp then
       local exp = pokes[getCreatureName(cid)].exp * baseExpRate + pokes[getCreatureName(cid)].vitality * pokemonExpPerLevelRate
       setPlayerStorageValue(cid, 1006, (exp * generalExpRate/2)*10)
       if getPlayerStorageValue(cid, 22546) == 1 then
          setPlayerStorageValue(cid, 1006, 750)
          doSetCreatureDropLoot(cid, false)      
       end   

ainda não mexi

Olhei aqui nesse mesmo arquivo level system.lua no PDA 1.9 que tenho, e está a mesma coisa. Cara eu acho que compensa mais você trocar de base, não sei se criou muita função nova, mas procure usar o Pokémon Mythology 2019 como te indiquei, pois ele tem source e você consegue mexer também. Isso ai é um problema pequeno, mas que é chato de achar e gasta muito tempo para o retorno. Mas se quer continuar beleza, porém tem que olhar arquivo por arquivo que envolve level de pokémon selvagem. Se lembrar as últimas alterações que fez antes do problema, fica muito mais fácil e adianta muita coisa.

Link para o comentário
Compartilhar em outros sites

  • 0

@Yan18

 

 


<?xml version="1.0" encoding="UTF-8"?>

<creaturescripts>
    <event type="extendedopcode" name="Opcode" event="script" value="opcode/opcode.lua"/>
    <event type="login" name="MutePlayer" event="script" value="mute_check.lua"/>
    <event type="joinchannel" name="ShowPokedex" event="script" value="newpokedex.lua"/>
    <event type="leavechannel" name="ClosePokedex" event="script" value="newpokedex.lua"/>
    <event type="moveitem" name="throwItemAtHouse" event="script" value="player/throwItemAtHouse.lua"/>
    <event type="moveitem" name="MoveItem" event="script" value="player/moveItem.lua"/>
    <event type="kill" name="task_count" script="task.lua"/>
    <event type="kill" name="dropStone" script="dropStone.lua"/>
    <event type="login" name="PlayerLogin" event="script" value="player/login.lua"/>
    <event type="receivemail" name="Mail" event="script" value="mail.lua"/>
    <event type="reportbug" name="SaveReportBug" script="reportbug.lua"/>
    <event type="think" name="Idle" event="script" value="idle.lua"/>
    <event type="death" name="Experience" event="script" value="player/pokeexp.lua"/>
    <event type="spawn" name="Spawn" event="script" value="spawn.lua"/>
    <event type="think" name="t" event="script" value="wildpoke.lua"/>
    <event type="statschange" name="GeneralConfiguration" event="script" value="player/exp2.0.lua"/>
    <event type="advance" name="EffectOnAdvance" event="script" value="levelup.lua"/>
    <event type="direction" name="DirectionSystem" event="script" value="wildpoke.lua"/>
    <event type="attack" name="AttackSystem" event="script" value="wildpoke.lua"/>
    <event type="cast" name="CastSystem" event="script" value="wildpoke.lua"/>
    <event type="target" name="WildAttack" event="script" value="playerattack.lua"/>
    <event type="look" name="LookSystem" event="script" value="player/look.lua"/>
    <event type="death" name="SummonDeath" event="script" value="goback.lua"/>
    <event type="logout" name="PlayerLogout" event="script" value="goback.lua"/>
<!-- TV SYSTEM -->
    <event type="joinchannel" name="WatchTv" event="script" value="tvsys.lua"/>
    <event type="leavechannel" name="StopWatchingTv" event="script" value="tvsys.lua"/>
    <event type="walk" name="WalkTv" event="script" value="tvsys.lua"/>
    <event type="textedit" name="RecordTv" event="script" value="tvsys.lua"/>
    
    <event type="traderequest" name="T2" event="script" value="trade system.lua"/>
    <event type="tradeaccept" name="T1" event="script" value="trade system.lua"/>

</creaturescripts>

 

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

  • 0
4 horas atrás, FlamesAdmin disse:

@Yan18

  Ocultar conteúdo

 


<?xml version="1.0" encoding="UTF-8"?>

<creaturescripts>
    <event type="extendedopcode" name="Opcode" event="script" value="opcode/opcode.lua"/>
    <event type="login" name="MutePlayer" event="script" value="mute_check.lua"/>
    <event type="joinchannel" name="ShowPokedex" event="script" value="newpokedex.lua"/>
    <event type="leavechannel" name="ClosePokedex" event="script" value="newpokedex.lua"/>
    <event type="moveitem" name="throwItemAtHouse" event="script" value="player/throwItemAtHouse.lua"/>
    <event type="moveitem" name="MoveItem" event="script" value="player/moveItem.lua"/>
    <event type="kill" name="task_count" script="task.lua"/>
    <event type="kill" name="dropStone" script="dropStone.lua"/>
    <event type="login" name="PlayerLogin" event="script" value="player/login.lua"/>
    <event type="receivemail" name="Mail" event="script" value="mail.lua"/>
    <event type="reportbug" name="SaveReportBug" script="reportbug.lua"/>
    <event type="think" name="Idle" event="script" value="idle.lua"/>
    <event type="death" name="Experience" event="script" value="player/pokeexp.lua"/>
    <event type="spawn" name="Spawn" event="script" value="spawn.lua"/>
    <event type="think" name="t" event="script" value="wildpoke.lua"/>
    <event type="statschange" name="GeneralConfiguration" event="script" value="player/exp2.0.lua"/>
    <event type="advance" name="EffectOnAdvance" event="script" value="levelup.lua"/>
    <event type="direction" name="DirectionSystem" event="script" value="wildpoke.lua"/>
    <event type="attack" name="AttackSystem" event="script" value="wildpoke.lua"/>
    <event type="cast" name="CastSystem" event="script" value="wildpoke.lua"/>
    <event type="target" name="WildAttack" event="script" value="playerattack.lua"/>
    <event type="look" name="LookSystem" event="script" value="player/look.lua"/>
    <event type="death" name="SummonDeath" event="script" value="goback.lua"/>
    <event type="logout" name="PlayerLogout" event="script" value="goback.lua"/>
<!-- TV SYSTEM -->
    <event type="joinchannel" name="WatchTv" event="script" value="tvsys.lua"/>
    <event type="leavechannel" name="StopWatchingTv" event="script" value="tvsys.lua"/>
    <event type="walk" name="WalkTv" event="script" value="tvsys.lua"/>
    <event type="textedit" name="RecordTv" event="script" value="tvsys.lua"/>
    
    <event type="traderequest" name="T2" event="script" value="trade system.lua"/>
    <event type="tradeaccept" name="T1" event="script" value="trade system.lua"/>

</creaturescripts>

 

Eu comparei aqui e está a mesma coisa do meu 1.9. 

 

Minha sugestão para você não perder tempo e ter dor de cabeça, faz um backup do seu server, depois pega o zip (ou rar) do seu pokémon e descompacta e substitui no seu servidor (que está com esse problema da exp) alguns arquivos 1 por 1 (ou todos de uma vez, mas sugiro 1 por 1 para testar e ver o problema) em creaturescripts. Começa pelo pokeexp.lua, se não der certo, substitui o exp2.0.lua e vai olhando pela data os arquivos alterados a partir de quando deu problema e troca, e por precaução troca o creaturescripts.xml também.

 

Faça esse procedimento e me diga se ainda continua que investigamos e tentamos resolver.

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...