FlamesAdmin 261 Postado Outubro 14, 2019 Share Postado Outubro 14, 2019 (editado) Quando poke do player morre os selvagens ganham exp, segue um 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 Novembro 28, 2019 por FlamesAdmin Link para o comentário Compartilhar em outros sites More sharing options...
0 FlamesAdmin 261 Postado Outubro 17, 2019 Autor Share Postado Outubro 17, 2019 @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 More sharing options...
0 Yan Oliveira 211 Postado Outubro 17, 2019 Share Postado Outubro 17, 2019 Está igual também, poste o creaturescripts.lua Link para o comentário Compartilhar em outros sites More sharing options...
0 FlamesAdmin 261 Postado Outubro 17, 2019 Autor Share Postado Outubro 17, 2019 25 minutos atrás, Yan18 disse: creaturescripts.lua creature qm? kkk Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Outubro 17, 2019 Share Postado Outubro 17, 2019 5 minutos atrás, FlamesAdmin disse: creature qm? kkk Como assim? Data/creaturescripts/creaturescripts.lua Link para o comentário Compartilhar em outros sites More sharing options...
0 FlamesAdmin 261 Postado Outubro 17, 2019 Autor Share Postado Outubro 17, 2019 2 minutos atrás, Yan18 disse: creaturescripts.lua tem isso não ? Link para o comentário Compartilhar em outros sites More sharing options...
0 FlamesAdmin 261 Postado Outubro 17, 2019 Autor Share Postado Outubro 17, 2019 @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 More sharing options...
0 Yan Oliveira 211 Postado Outubro 17, 2019 Share Postado Outubro 17, 2019 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 More sharing options...
0 FlamesAdmin 261 Postado Outubro 19, 2019 Autor Share Postado Outubro 19, 2019 Em 17/10/2019 em 19:16, Yan18 disse: creaturescripts.lua creaturescripts.xml no caso né? Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Outubro 20, 2019 Share Postado Outubro 20, 2019 14 horas atrás, FlamesAdmin disse: creaturescripts.xml no caso né? Isso, só falei a extensão errada rs. Mas é esse arquivo mesmo. Link para o comentário Compartilhar em outros sites More sharing options...
0 FlamesAdmin 261 Postado Outubro 20, 2019 Autor Share Postado Outubro 20, 2019 (editado) @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 Outubro 20, 2019 por FlamesAdmin Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Outubro 21, 2019 Share Postado Outubro 21, 2019 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 More sharing options...
Pergunta
FlamesAdmin 261
Quando poke do player morre os selvagens ganham exp, segue um 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; }
Link para o comentário
Compartilhar em outros sites
26 respostass a esta questão
Posts Recomendados