Luga03 331 Postado Maio 26, 2015 Share Postado Maio 26, 2015 Brasileiros e Estrangeiros, Bem vindo ao meu Tópico, e estou aqui para pedir que citem pfv todos os erros encontrados do servidor pokemon dash advanced! eu baixei ele, e até agora joguei d boa e upei e tals o unico erro que encontrei foi um da master ball, gostaria que se conhecerem algum erro desta base postem ai para min! se eu conseguir resolver irei fazer um tópico de como consertar cada erro que eu descobri e consertei! Vlw pela atenção de todos e estarei aguardando por vcs! Link para o comentário Compartilhar em outros sites More sharing options...
RodriigoRobson 110 Postado Maio 26, 2015 Share Postado Maio 26, 2015 Bela iniciativa, Gostei =) - Se o Projeto andar em Boas Maos o servidor fica assim: http://pokemixx.pl/ - @edit: vou ajudar com alguns bugs (Limpar a Distro) Erros Durante o Jogo: - data/creaturescripts/ATK.lua: [14/12/2014 18:12:37] [Error - CreatureScript Interface][14/12/2014 18:12:37] data/creaturescripts/scripts/atk.lua:onAttack[14/12/2014 18:12:37] Description:[14/12/2014 18:12:37] (luaDoMonsterSetTarget) Monster not found Soluçao: http://www.tibiaking.com/forum/topic/53496-monstros-focando-summons/ obs: Apos que adicionar nas sources , podem tirar o script atk.lua - data/creaturescripts/Exp.lua: Erro Na hora de Evoluir (Automatico) erro de MaxHealth, algo assim usem esse Exp.lua Atualizado: local combats = { --alterado v2.6 \/[PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC},[GRASSDAMAGE] = {cor = COLOR_GRASS},[POISONEDDAMAGE] = {cor = COLOR_GRASS},[FIREDAMAGE] = {cor = COLOR_FIRE2},[bURNEDDAMAGE] = {cor = COLOR_BURN},[WATERDAMAGE] = {cor = COLOR_WATER},[iCEDAMAGE] = {cor = COLOR_ICE},[NORMALDAMAGE] = {cor = COLOR_NORMAL},[FLYDAMAGE] = {cor = COLOR_FLYING},[GHOSTDAMAGE] = {cor = COLOR_GHOST},[GROUNDDAMAGE] = {cor = COLOR_GROUND},[ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC},[ROCKDAMAGE] = {cor = COLOR_ROCK},[bUGDAMAGE] = {cor = COLOR_BUG},[FIGHTDAMAGE] = {cor = COLOR_FIGHTING},[DRAGONDAMAGE] = {cor = COLOR_DRAGON},[POISONDAMAGE] = {cor = COLOR_POISON},[DARKDAMAGE] = {cor = COLOR_DARK},[sTEELDAMAGE] = {cor = COLOR_STEEL},[MIRACLEDAMAGE] = {cor = COLOR_PSYCHIC},[DARK_EYEDAMAGE] = {cor = COLOR_GHOST},[sEED_BOMBDAMAGE] = {cor = COLOR_GRASS},[sACREDDAMAGE] = {cor = COLOR_FIRE2},[MUDBOMBDAMAGE] = {cor = COLOR_GROUND}, --alterado v2.9}local function sendPlayerDmgMsg(cid, text)if not isCreature(cid) then return true enddoPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, text)endlocal spcevo = {["Poliwhirl"] = {"Poliwrath", "Politoed"},["Gloom"] = {"Bellossom", "Vileplume"},["Tyrogue"] = {"Hitmonchan", "Hitmontop", "Hitmonlee"}}local function doEvolveWild(cid)if not isCreature(cid) or getCreatureHealth(cid) <= 0 then return true endlocal name = getCreatureName(cid)local evolution = "none"if spcevo[name] thenevolution = spcevo[name][math.random(1, #spcevo[name])]elseif poevo[name] thenevolution = poevo[name].evolutionendlocal a = getPokemonStatus(name)if not a or evolution == "none" then return true endlocal pk = {}local players = getSpectators(getThingPos(cid), 7, 7)if players thenfor pp = 1, #players dolocal this = players[pp]if isCreature(this) and isPlayer(this) and (getCreatureTarget(this) == cid) thendoSendMagicEffect(getThingPos(this), 173)local expstring = cid.."expEx"pk[this] = getItemAttribute(getPlayerSlotItem(this, 8).uid, expstring)doItemSetAttribute(getPlayerSlotItem(this, 8).uid, expstring, 0)endendendlocal level = getPokemonLevel(cid)local pos = getThingPos(cid)local gender = getCreatureSkull(cid)local lifepercentage = 1 - ((getCreatureHealth(cid) * 1.3) / getCreatureMaxHealth(cid))local lookdir = getCreatureLookDir(cid)local status = {}status.offense = getOffense(cid) + a.off * 8status.defense = getDefense(cid) + a.def * 8status.agi = getSpeed(cid) + a.agi * 8status.spatk = getSpecialAttack(cid) + a.spatk * 8status.vit = getVitality(cid) + a.vit * 4doRemoveCreature(cid)local evo = doCreateMonster(evolution, pos)setWildPokemonLevel(evo, level, status)doCreatureSetLookDir(evo, lookdir)doCreatureSetSkullType(evo, gender)doCreatureAddHealth(evo, -getCreatureMaxHealth(evo) * lifepercentage)doSendMagicEffect(getThingPos(evo), 18)for attacker, experience in pairs (pk) do--doWildAttackPlayer(evo, attacker)local expstring = evo.."expEx"local exp = experience or 0doItemSetAttribute(getPlayerSlotItem(attacker, 8).uid, expstring, exp)endsendFinishEvolutionEffect(evo, true)addEvent(sendFinishEvolutionEffect, 550, evo, true)addEvent(sendFinishEvolutionEffect, 1050, evo)endlocal races = {[4] = {cor = COLOR_FIRE2},[6] = {cor = COLOR_WATER},[7] = {cor = COLOR_NORMAL},[8] = {cor = COLOR_FIRE2},[9] = {cor = COLOR_FIGHTING},[10] = {cor = COLOR_FLYING},[11] = {cor = COLOR_GRASS},[12] = {cor = COLOR_POISON},[13] = {cor = COLOR_ELECTRIC},[14] = {cor = COLOR_GROUND},[15] = {cor = COLOR_PSYCHIC},[16] = {cor = COLOR_ROCK},[17] = {cor = COLOR_ICE},[18] = {cor = COLOR_BUG},[19] = {cor = COLOR_DRAGON},[20] = {cor = COLOR_GHOST},[21] = {cor = COLOR_STEEL},[22] = {cor = COLOR_DARK},[1] = {cor = 180},[2] = {cor = 180},[3] = {cor = 180},[5] = {cor = 180},}local damages = {GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE, DARKDAMAGE, STEELDAMAGE}local fixdmgs = {PSYCHICDAMAGE, COMBAT_PHYSICALDAMAGE, GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, NORMALDAMAGE, GHOSTDAMAGE}local ignored = {POISONEDDAMAGE, BURNEDDAMAGE} --alterado v2.6local cannotkill = {BURNEDDAMAGE, POISONEDDAMAGE}function onStatsChange(cid, attacker, type, combat, value)if combat == FLYSYSTEMDAMAGE then return false endif isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TVlocal damageCombat = combatif not isCreature(attacker) then --alterado v2.5 cid == attackerif not isInArray(fixdamages, combat) and combats[combat] thendoSendAnimatedText(getThingPos(cid), "-"..value.."", combats[combat].cor)endreturn trueend----------------------------------------------------alterado v2.6 retirado os combats sleep_powder e poison_powder daki!--------------------------------------------------if isMonster(cid) thenlocal valor = valueif not pokes[getCreatureName(cid)] and damageCombat == COMBAT_PHYSICALDAMAGE thenvalor = getOffense(attacker) * playerDamageReductiondoCreatureAddHealth(cid, -math.abs(valor), 3, races[7].cor) --alterado v2.6 dano nos npcsreturn falseelseif not pokes[getCreatureName(cid)] and damageCombat ~= COMBAT_PHYSICALDAMAGE thendoCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor)return falseendend--------------------------------------------------if isPlayer(attacker) thenlocal valor = valueif valor > getCreatureHealth(cid) thenvalor = getCreatureHealth(cid)endif combat == COMBAT_PHYSICALDAMAGE thenreturn falseendif combat == PHYSICALDAMAGE thendoSendMagicEffect(getThingPos(cid), 3)doSendAnimatedText(getThingPos(cid), "-"..value.."", races[getMonsterInfo(getCreatureName(cid)).race].cor)endif combats[damageCombat] and not isInArray(fixdmgs, damageCombat) thendoSendAnimatedText(getThingPos(cid), "-"..value.."", combats[damageCombat].cor)endif #getCreatureSummons(attacker) >= 1 and not isInArray({POISONEDDAMAGE, BURNEDDAMAGE}, combat) thendoPlayerSendTextMessage(attacker, MESSAGE_STATUS_DEFAULT, "Your "..getPokeName(getCreatureSummons(attacker)[1]).." dealt "..valor.." damage to "..getSomeoneDescription(cid)..".")endreturn trueend--------------------------------------------------if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS thenreturn falseend--------------------------------------------------if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS thenif isSummon(attacker) or isPlayer(attacker) thenif canAttackOther(cid, attacker) == "Cant" then return false endendlocal valor = 0if combat == COMBAT_PHYSICALDAMAGE thenvalor = getOffense(attacker)elsevalor = getSpecialAttack(attacker)endvalor = valor * playerDamageReductionvalor = valor * math.random(83, 117) / 100if valor >= getCreatureHealth(cid) thenvalor = getCreatureHealth(cid)endvalor = math.floor(valor)if valor >= getCreatureHealth(cid) thenif getPlayerStorageValue(cid, 6598755) == 1 or getPlayerStorageValue(cid, 6598754) == 1 thensetPlayerStorageValue(cid, 6598755, 0)setPlayerStorageValue(cid, 6598754, 0)doRemoveCondition(cid, CONDITION_OUTFIT)doPlayerAddSkill(cid, 4, 1)doSendAnimatedText(getCreaturePosition(cid),"LOOSE",math.random(1,255))setPlayerStorageValue(cid,19998,getPlayerStorageValue(cid,19998)+1)doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))doCreatureAddHealth(cid, getCreatureMaxHealth(cid))endif getPlayerStorageValue(getCreatureMaster(attacker), 6598755) == 1 thensetPlayerStorageValue(getCreatureMaster(attacker),19999,getPlayerStorageValue(getCreatureMaster(attacker),19999)+1)doPlayerSendTextMessage(getCreatureMaster(attacker),MESSAGE_EVENT_ORANGE,"[Win Score] Score: "..(getPlayerStorageValue(getCreatureMaster(attacker),19999) + 1).." WIN SCORES.")doSendAnimatedText(getCreaturePosition(getCreatureMaster(attacker)),"WINN",math.random(1,255))setPlayerStorageValue(getCreatureMaster(attacker), 6598755,1)setGlobalStorageValue(5001, getGlobalStorageValue(5001) + 1)doPlayerAddSkill(cid, 3, 1)doBroadcastMessage("[Placar] : RedFrag [".. (getGlobalStorageValue(5001)+1).."] X ["..(getGlobalStorageValue(5002)+1).. "] BlueFrag",22)elseif getPlayerStorageValue(getCreatureMaster(attacker), 6598754) == 1 thensetPlayerStorageValue(getCreatureMaster(attacker),19999,getPlayerStorageValue(getCreatureMaster(attacker),19999)+1)doPlayerSendTextMessage(getCreatureMaster(attacker),MESSAGE_EVENT_ORANGE,"[Win Score] Score: "..(getPlayerStorageValue(getCreatureMaster(attacker),19999) + 1).." WIN SCORES.")doSendAnimatedText(getCreaturePosition(getCreatureMaster(attacker)),"WINN",math.random(1,255))setPlayerStorageValue(getCreatureMaster(attacker), 6598754,1)setGlobalStorageValue(5002, getGlobalStorageValue(5002) + 1)doPlayerAddSkill(cid, 3, 1)doBroadcastMessage("[Placar] : RedFrag [".. (getGlobalStorageValue(5001)+1).."] X ["..(getGlobalStorageValue(5002)+1).. "] BlueFrag",22)endif getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 thendoRemoveCondition(cid, CONDITION_OUTFIT)setPlayerStorageValue(cid, 17000, 0)setPlayerStorageValue(cid, 17001, 0)setPlayerStorageValue(cid, 63215, -1)doChangeSpeed(cid, PlayerSpeed)local item = getPlayerSlotItem(cid, 8)local btype = getPokeballType(item.itemid)if #getCreatureSummons(cid) <= 0 thenif isInArray(pokeballs[btype].all, item.itemid) thendoTransformItem(item.uid, pokeballs[btype].off)doItemSetAttribute(item.uid, "hp", 0)endendendif getPlayerStorageValue(cid, 22545) == 1 thenif getGlobalStorageValue(22550) == 1 thendoPlayerSendTextMessage(cid, 20, "You are the last survivor of the golden arena! Take your reward!")doPlayerAddItem(cid, 2152, getPlayerStorageValue(cid, 22551)*2)setPlayerStorageValue(cid, 22545, -1)doTeleportThing(cid, getClosestFreeTile(cid, getClosestFreeTile(cid, posBackGolden)), false)doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid))setPlayerRecordWaves(cid)endGoldenArena()return falseelsesetGlobalStorageValue(22550, getGlobalStorageValue(22550)-1)setPlayerStorageValue(cid, 22545, -1)doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false)doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid))setPlayerRecordWaves(cid)return falseendendlocal corpse = doCreateItem(3058, 1, getThingPos(cid))doDecayItem(corpse)doItemSetAttribute(corpse, "pName", getCreatureName(cid)) --alterado v2.7 coloca corpse quando o player morre!doItemSetAttribute(corpse, "attacker", getCreatureName(attacker))doItemSetAttribute(corpse, "article", getPlayerSex(cid) == 0 and "She" or "He")if getPlayerStorageValue(cid, 98796) >= 1 thensetPlayerStorageValue(cid, 98796, -1)setPlayerStorageValue(cid, 98797, -1) --alterado v2.8doTeleportThing(cid, SafariOut, false)doSendMagicEffect(getThingPos(cid), 21)doPlayerSendTextMessage(cid, 27, "You die in the saffari...")return falseendif getPlayerStorageValue(cid, Agatha.stoIni) >= 1 and getPlayerStorageValue(cid, Agatha.stoIni) <= 10 thensetPlayerStorageValue(cid, Agatha.stoIni, -1)setPlayerStorageValue(cid, Agatha.stoRec, -1)setPlayerStorageValue(cid, Agatha.stoPer, -1)setPlayerStorageValue(cid, Agatha.stoEni, -1) --alterado v2.9 agatha questsetPlayerStorageValue(cid, Agatha.stoRes, -1)endenddoCreatureAddHealth(cid, -valor, 3, 180)if not isPlayer(cid) and valor > 0 thenaddEvent(sendPlayerDmgMsg, 5, cid, "You lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".")endreturn falseend--------------------------------------------------if type == STATSCHANGE_HEALTHGAIN thenif cid == attacker thenreturn trueendif isSummon(cid) and isSummon(attacker) and canAttackOther(cid, attacker) == "Cant" thenreturn falseendreturn trueend--------------------------------------------------if isMonster(attacker) and getPlayerStorageValue(attacker, 201) ~= -1 thenif isPlayer(cid) thenreturn falseendif getPlayerStorageValue(getCreatureMaster(cid), ginasios[getPlayerStorageValue(attacker, 201)].storage) ~= 1 thenreturn falseendend--------------------------------------------------if isMonster(cid) and getPlayerStorageValue(cid, 201) ~= -1 thenif getPlayerStorageValue(getCreatureMaster(attacker), ginasios[getPlayerStorageValue(cid, 201)].storage) ~= 1 thenreturn falseendend--------------------------------------------------if ehMonstro(cid) and ehMonstro(attacker) and not isSummon(cid) and not isSummon(attacker) thenreturn false --alterado v2.9 /\end-----------------------------------------------------------------------REFLECT-----------------------if getPlayerStorageValue(cid, 21099) >= 1 and combat ~= COMBAT_PHYSICALDAMAGE thenif not isInArray({"Team Claw", "Team Slice"}, getPlayerStorageValue(attacker, 21102)) thendoSendMagicEffect(getThingPosWithDebug(cid), 135)doSendAnimatedText(getThingPosWithDebug(cid), "REFLECT", COLOR_GRASS)addEvent(docastspell, 100, cid, getPlayerStorageValue(attacker, 21102))if getCreatureName(cid) == "Wobbuffet" thendoRemoveCondition(cid, CONDITION_OUTFIT)endsetPlayerStorageValue(cid, 21099, -1) --alterado v2.6setPlayerStorageValue(cid, 21100, 1)setPlayerStorageValue(cid, 21101, attacker)setPlayerStorageValue(cid, 21103, getTableMove(attacker, getPlayerStorageValue(attacker, 21102)).f)setPlayerStorageValue(cid, 21104, getCreatureOutfit(attacker).lookType)return falseendend-------------------------------------------------local multiplier = 1if isCreature(cid) thenpoketype1 = pokes[getCreatureName(cid)].type --alterado v2.6poketype2 = pokes[getCreatureName(cid)].type2endif not poketype1 or not poketype2 then return false end --alterado v2.6if getCreatureCondition(cid, CONDITION_INVISIBLE) thenreturn falseendif damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) thenif isInArray(effectiveness[damageCombat].super, poketype1) thenmultiplier = multiplier + 0.5endif isInArray(effectiveness[damageCombat].super, poketype2) thenmultiplier = multiplier + 0.5endif isInArray(effectiveness[damageCombat].weak, poketype1) thenmultiplier = multiplier - 0.25 --alterado v2.3 efetividade q nem na pxg...endif isInArray(effectiveness[damageCombat].weak, poketype2) thenmultiplier = multiplier - 0.25endif isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) thenif isInArray(specialabilities["foresight"], getCreatureName(attacker)) then --alterado v2.5multiplier = 0.5 --alterado v2.6endendelseif combat == COMBAT_PHYSICALDAMAGE thenif isGhostPokemon(cid) then --alterado v2.3if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then --alterado v2.5doSendMagicEffect(getThingPos(cid), 3)return falseendendlocal cd = getPlayerStorageValue(attacker, conds["Miss"])local cd2 = getPlayerStorageValue(attacker, conds["Confusion"]) --alterado v2.5local cd3 = getPlayerStorageValue(attacker, conds["Stun"])if cd >= 0 or cd2 >= 0 or cd3 >= 0 thenif math.random(1, 100) > 50 then --50% chance de da miss no atk fisicodoSendMagicEffect(getThingPos(cid), 211)doSendAnimatedText(getThingPos(attacker), "MISS", 215)return falseendendend--------------------------------------------------local valor = valueif multiplier == 1.5 and poketype2 == "no type" thenmultiplier = 2 --alterado v2.6elseif multiplier == 1.5 and poketype2 ~= "no type" thenmultiplier = 1.75elseif multiplier == 1.25 then --edited effetivines = pxgmultiplier = 1end--------------------------------------------------if isSummon(cid) and isSummon(attacker) thenif getCreatureMaster(cid) == getCreatureMaster(attacker) thenreturn falseendif canAttackOther(cid, attacker) == "Cant" thenreturn falseendendlocal randomRange = math.random(83, 117) / 100local block = 1if not isPlayer(cid) thenif combat == COMBAT_PHYSICALDAMAGE then--[[local value = getOffense(attacker) > 1000 and 3 or 2block = 1 - (getDefense(cid) / (getOffense(attacker) + getDefense(cid))) --alterado v1.9 testem essa nova formula plzzz '--'valor = (getOffense(attacker)/value) * blockif valor <= 0 thenvalor = math.random(5, 10) --alterado v1.9end]]block = 1 - (getDefense(cid) / (getOffense(attacker) + getDefense(cid)))if getPokemonGender(attacker) == SEX_MALE thenblock = block + 0.2endif getPokemonGender(cid) == SEX_FEMALE thenblock = block - 0.2endvalor = getOffense(attacker) * blockif getOffenseInRage(attacker) >= 1500 then --alterado v2.8valor = valor * 0.3endif isInArray(specialabilities["counter"], getCreatureName(cid)) thenif math.random(1, 100) <= 10 thendoCreatureAddHealth(attacker, -valor, 3, 180) --alterado v2.5valor = 0doSendAnimatedText(getThingPosWithDebug(cid), "COUNTER", 215)endendelseblock = 1 - (getDefense(cid) / (getSpecialAttack(attacker) + getDefense(cid)))valor = valor * block * generalSpecialAttackReductionif isSummon(cid) thenvalor = valor * summonSpecialDamageReduction - getPokemonLevel(cid) / 2endendendvalor = valor * multipliervalor = valor * randomRangeif isSummon(attacker) thenvalor = valor * getHappinessRate(attacker)elsevalor = valor * summonReductionendvalor = math.floor(valor)if combat == BURNEDDAMAGE thenvalor = value * getResistance(cid, FIREDAMAGE)elseif combat == POISONEDDAMAGE thenvalor = value * getResistance(cid, POISONDAMAGE)endif math.random(1, 100) == 4 and not isInArray(ignorecritical, combat) thendoSendAnimatedText(getThingPos(attacker), "CRITICAL", 215)valor = valor * 2end-------------------------Edited CLAN SYSTEM-----------------------------------if isSummon(attacker) and getPlayerStorageValue(getCreatureMaster(attacker), 86228) >= 1 thenvalor = valor*getClanPorcent(getCreatureMaster(attacker), combat, "atk")elseif isSummon(cid) and getPlayerStorageValue(getCreatureMaster(cid), 86228) >= 1 then --alterado v2.3valor = valor - (valor*getClanPorcent(getCreatureMaster(cid), combat, "def", pokes[getCreatureName(cid)].type, pokes[getCreatureName(cid)].type2))end--------------------------------------------------------------------------------------------- Edited Proteção --------------------------------if valor <= 10 thenvalor = math.random(15, 25)end--------------------------------------------------------------------------------------------- FEAR / ROAR ------------------------------------if getPlayerStorageValue(attacker, conds["Fear"]) >= 1 then --alterado v2.5!!return trueend---------------------------------------------------------------------------if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) thenif isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) thenif not isInArray(specialabilities["foresight"], getCreatureName(attacker)) and getPlayerStorageValue(attacker, 999457) <= 0 thenvalor = valor * 0 --alterado v2.5endendendif damageCombat == GROUNDDAMAGE thenif isInArray(specialabilities["levitate"], getCreatureName(cid)) thenvalor = 0 --alterado v2.5endend-----------------------------------------------------------------------------local p = getThingPos(cid) --poke na pos backupif p.x == 1 and p.y == 1 and p.z == 10 thenreturn false --alterado v2.2endif getPlayerStorageValue(cid, 9658783) == 1 thenreturn false --alterado v2.4 -- skill camuflage/future sight/acid armor e afinsend-------------------------------------------------------------------------------------------- FIGHT MODE -----------------------if useOTClient thenif isSummon(cid) then --alterado v2.7 soh funciona com o OTClient q eu disponibilizei...local master = getCreatureMaster(cid)if getPlayerStorageValue(master, 248759) == 1 thenvalor = valor * 1.1elseif getPlayerStorageValue(master, 248759) == 3 thenvalor = valor * 0.9endendif isSummon(attacker) thenlocal master = getCreatureMaster(attacker)if getPlayerStorageValue(master, 248759) == 1 thenvalor = valor * 1.1elseif getPlayerStorageValue(master, 248759) == 3 thenvalor = valor * 0.9endendend-----------------------------------------------------------------------------if valor >= getCreatureHealth(cid) thenif isInArray(cannotKill, combat) and isPlayer(cid) thenvalor = getCreatureHealth(cid) - 1elsevalor = getCreatureHealth(cid)endendvalor = math.floor(valor) --alterado v2.5------------------ SKILLs Q CURAM O ATTACKER ---------------------------------local function doHeal(cid, amount)if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) thenamount = math.abs(getCreatureHealth(cid)-getCreatureMaxHealth(cid))endif getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then --alterado v2.6doCreatureAddHealth(cid, amount)doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65)endendif damageCombat == PSYCHICDAMAGE or damageCombat == MIRACLEDAMAGE thenif getPlayerStorageValue(attacker, 95487) >= 1 thendoHeal(attacker, valor)setPlayerStorageValue(attacker, 95487, -1) --alterado v2.6endelseif damageCombat == SEED_BOMBDAMAGE thendoHeal(attacker, valor)end------------------------------------------------------SACRED FIRE-----------------------if combat == SACREDDAMAGE and not ehNPC(cid) then --alterado v2.6local ret = {}ret.id = cidret.cd = 9ret.check = getPlayerStorageValue(cid, conds["Silence"])ret.eff = 39ret.cond = "Silence"doCondition2(ret)elseif combat == MUDBOMBDAMAGE and not ehNPC(cid) thenlocal ret = {} --alterado v2.8ret.id = cidret.cd = 9ret.eff = 34ret.check = getPlayerStorageValue(cid, conds["Miss"])ret.spell = "Mud Bomb" --alterado v2.9ret.cond = "Miss"doCondition2(ret)end--------------Passiva Lifesteal Clobat------------if combat == COMBAT_PHYSICALDAMAGE thenif getCreatureName(attacker) == "Crobat" then --alterado v2.4doCreatureAddHealth(attacker, math.floor(valor))doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)endend--------------------------------------------valor = math.abs(valor) --alterado v2.9if isSummon(attacker) and not isSummon(cid) and not isPlayer(cid) thenlocal expstring = cid.."expEx"if getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, expstring) == null thendoItemSetAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, expstring, 0)endlocal exp = valor / getCreatureMaxHealth(cid)local ball = getPlayerSlotItem(getCreatureMaster(attacker), 8).uiddoItemSetAttribute(ball, expstring, getItemAttribute(ball, expstring) + exp)if getItemAttribute(ball, expstring) > 1 thendoItemSetAttribute(ball, expstring, 1)endendif isSummon(attacker) thenif combat == COMBAT_PHYSICALDAMAGE thendoTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255)addEvent(doDoubleHit, 1000, attacker, cid, valor, races) --alterado v2.6 agilityelsedoTargetCombatHealth(getCreatureMaster(attacker), cid, damageCombat, -valor, -valor, 255)endif not isSummon(cid) and not isPlayer(cid) and math.random(1, wildEvolveChance) == math.random(1, wildEvolveChance) thenaddEvent(doEvolveWild, math.random(1, 2500), cid)endelseif combat ~= COMBAT_PHYSICALDAMAGE thenif damageCombat and combats[damageCombat] thendoCreatureAddHealth(cid, -valor, 3, combats[damageCombat].cor)enddoCreatureAddHealth(cid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(cid)).race].cor)addEvent(doDoubleHit, 1000, attacker, cid, valor, races) --alterado v2.6 agilityendif isSummon(cid) thenaddEvent(sendPlayerDmgMsg, 5, getCreatureMaster(cid), "Your "..getCreatureName(cid).." lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".")endendif damageCombat == FIREDAMAGE and not isBurning(cid) thenlocal ret = {}ret.id = cidret.cd = math.random(5, 12) --alterado v2.5ret.check = getPlayerStorageValue(cid, conds["Burn"])ret.damage = isSummon(attacker) and getMasterLevel(attacker)+getPokemonBoost(attacker) or getPokemonLevel(attacker)ret.cond = "Burn"doCondition2(ret)elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) thenlocal ret = {}ret.id = cidret.cd = math.random(6, 15) --alterado v2.5ret.check = getPlayerStorageValue(cid, conds["Poison"])local lvl = isSummon(attacker) and getMasterLevel(attacker) or getPokemonLevel(attacker)ret.damage = math.floor((getPokemonLevel(attacker)+lvl)/2)ret.cond = "Poison"doCondition2(ret)end------------------------------------POTIONS-------------------------------------------if isSummon(cid) and type == STATSCHANGE_HEALTHLOSS thenif getPlayerStorageValue(cid, 173) >= 1 thenif damageCombat ~= BURNEDDAMAGE and damageCombat ~= POISONEDDAMAGE thensetPlayerStorageValue(cid, 173, -1) --alterado v2.6doSendAnimatedText(getThingPos(cid), "Lost Heal", 144)endendend----------------------------------------PASSIVAS------------------------------------- --alterado v2.7 \/-------------------------------------------Counter Helix------------------------------------if passivesChances["Helix"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Helix"][getCreatureName(cid)] thendocastspell(cid, "Counter Helix")end-------------------------------------------Lava Counter/Electricity----------------------------if passivesChances["Fire_Thunder"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Fire_Thunder"][getCreatureName(cid)] thendocastspell(cid, "Lava-Electricity")end----------------------------------------Bone Counter-------------------------------if passivesChances["Bone Counter"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Bone Counter"][getCreatureName(cid)] thendocastspell(cid, "Bone Counter")end---------------------------------------Stunning Confusion-----------------------------------------if passivesChances["Stunning"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Stunning"][getCreatureName(cid)] thendocastspell(cid, "Stunning Confusion")end-----------------------------------------Groundshock-----------------------------------if passivesChances["Groundshock"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Groundshock"][getCreatureName(cid)] thendocastspell(cid, "Groundshock")end--------------------------------------Electric Charge---------------------------------------------if passivesChances["Electric Charge"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Electric Charge"][getCreatureName(cid)] thendocastspell(cid, "Electric Charge", 0, 0)end-------------------------------------Melody------------------------------------if passivesChances["Melody"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Melody"][getCreatureName(cid)] thendocastspell(cid, "Melody")end------------------------------------- Dragon Fury / Fury ---------------------------------------if passivesChances["Dragon Fury"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Dragon Fury"][getCreatureName(cid)] thendocastspell(cid, "Dragon Fury", 0, 0)end------------------------------------- Mega Drain ---------------------------------------if passivesChances["Mega Drain"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Mega Drain"][getCreatureName(cid)] thendocastspell(cid, "Mega Drain")end------------------------------------- Spores Reaction ---------------------------------------if passivesChances["Spores Reaction"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Spores Reaction"][getCreatureName(cid)] thendocastspell(cid, "Spores Reaction")end------------------------------------ Amnesia ----------------------------------------if passivesChances["Amnesia"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Amnesia"][getCreatureName(cid)] thendocastspell(cid, "Amnesia", 0, 0)end----------------------------------- Zen Mind -----------------------------------------if passivesChances["Zen Mind"][getCreatureName(cid)] and isWithCondition(cid) and math.random(1, 100) <= passivesChances["Zen Mind"][getCreatureName(cid)] thendocastspell(cid, "Zen Mind", 0, 0)end---------------------------------- Mirror Coat ---------------------------------------if passivesChances["Mirror Coat"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Mirror Coat"][getCreatureName(cid)] thendocastspell(cid, "Mirror Coat", 0, 0)end--------------------------------- Illusion -----------------------------------------return falseend Sistemas Adicionais: - Pokemon Passivos 1: http://www.tibiaking.com/forum/topic/53480-criaturas-passivas/ - Pokemons Passivos 2: http://www.tibiaking.com/forum/topic/28062-monstros-passivos/ - Clonar items usando Elf Bot: http://www.tibiaking.com/forum/topic/9255-correcao-clonar-items-npc-usando-elfbot/ - Adicionar Novas Raças: http://www.tibiaking.com/forum/topic/44029-adicionando-novas-ra%C3%A7as/ Bugs gerais que podem Causar Crash: Os Pokemons Uniques Fazem Crashar o Servidor (Se voce pegar uma Pokeball Unique e jogar no Teleport, o Servidor Crasha) Os Pokemon Lock Fazem Crashar o Servidor (Se voce pegar uma Pokeball Lock e jogar no Teleport, o Servidor Crasha) Retirem o NPC SR.SPLIT (Segundo Andar do CP) Dificuldade para Compilar? tente usar essa Dev: https://mega.co.nz/#!cRc2CZoB!6-aLe1oWpFPpY16oLlpCnzBDrqbt-CuQBZCe7eH5X24 Link para o comentário Compartilhar em outros sites More sharing options...
Luga03 331 Postado Maio 26, 2015 Autor Share Postado Maio 26, 2015 Bela iniciativa, Gostei =) - Se o Projeto andar em Boas Maos o servidor fica assim: http://pokemixx.pl/ - @edit: vou ajudar com alguns bugs (Limpar a Distro) Erros Durante o Jogo: - data/creaturescripts/ATK.lua: [14/12/2014 18:12:37] [Error - CreatureScript Interface] [14/12/2014 18:12:37] data/creaturescripts/scripts/atk.lua:onAttack [14/12/2014 18:12:37] Description: [14/12/2014 18:12:37] (luaDoMonsterSetTarget) Monster not found Soluçao: http://www.tibiaking.com/forum/topic/53496-monstros-focando-summons/ obs: Apos que adicionar nas sources , podem tirar o script atk.lua - data/creaturescripts/Exp.lua: Erro Na hora de Evoluir (Automatico) erro de MaxHealth, algo assim usem esse Exp.lua Atualizado: local combats = { --alterado v2.6 \/ [PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC}, [GRASSDAMAGE] = {cor = COLOR_GRASS}, [POISONEDDAMAGE] = {cor = COLOR_GRASS}, [FIREDAMAGE] = {cor = COLOR_FIRE2}, [bURNEDDAMAGE] = {cor = COLOR_BURN}, [WATERDAMAGE] = {cor = COLOR_WATER}, [iCEDAMAGE] = {cor = COLOR_ICE}, [NORMALDAMAGE] = {cor = COLOR_NORMAL}, [FLYDAMAGE] = {cor = COLOR_FLYING}, [GHOSTDAMAGE] = {cor = COLOR_GHOST}, [GROUNDDAMAGE] = {cor = COLOR_GROUND}, [ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC}, [ROCKDAMAGE] = {cor = COLOR_ROCK}, [bUGDAMAGE] = {cor = COLOR_BUG}, [FIGHTDAMAGE] = {cor = COLOR_FIGHTING}, [DRAGONDAMAGE] = {cor = COLOR_DRAGON}, [POISONDAMAGE] = {cor = COLOR_POISON}, [DARKDAMAGE] = {cor = COLOR_DARK}, [sTEELDAMAGE] = {cor = COLOR_STEEL}, [MIRACLEDAMAGE] = {cor = COLOR_PSYCHIC}, [DARK_EYEDAMAGE] = {cor = COLOR_GHOST}, [sEED_BOMBDAMAGE] = {cor = COLOR_GRASS}, [sACREDDAMAGE] = {cor = COLOR_FIRE2}, [MUDBOMBDAMAGE] = {cor = COLOR_GROUND}, --alterado v2.9 } local function sendPlayerDmgMsg(cid, text) if not isCreature(cid) then return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, text) end local spcevo = { ["Poliwhirl"] = {"Poliwrath", "Politoed"}, ["Gloom"] = {"Bellossom", "Vileplume"}, ["Tyrogue"] = {"Hitmonchan", "Hitmontop", "Hitmonlee"}} local function doEvolveWild(cid) if not isCreature(cid) or getCreatureHealth(cid) <= 0 then return true end local name = getCreatureName(cid) local evolution = "none" if spcevo[name] then evolution = spcevo[name][math.random(1, #spcevo[name])] elseif poevo[name] then evolution = poevo[name].evolution end local a = getPokemonStatus(name) if not a or evolution == "none" then return true end local pk = {} local players = getSpectators(getThingPos(cid), 7, 7) if players then for pp = 1, #players do local this = players[pp] if isCreature(this) and isPlayer(this) and (getCreatureTarget(this) == cid) then doSendMagicEffect(getThingPos(this), 173) local expstring = cid.."expEx" pk[this] = getItemAttribute(getPlayerSlotItem(this, 8).uid, expstring) doItemSetAttribute(getPlayerSlotItem(this, 8).uid, expstring, 0) end end end local level = getPokemonLevel(cid) local pos = getThingPos(cid) local gender = getCreatureSkull(cid) local lifepercentage = 1 - ((getCreatureHealth(cid) * 1.3) / getCreatureMaxHealth(cid)) local lookdir = getCreatureLookDir(cid) local status = {} status.offense = getOffense(cid) + a.off * 8 status.defense = getDefense(cid) + a.def * 8 status.agi = getSpeed(cid) + a.agi * 8 status.spatk = getSpecialAttack(cid) + a.spatk * 8 status.vit = getVitality(cid) + a.vit * 4 doRemoveCreature(cid) local evo = doCreateMonster(evolution, pos) setWildPokemonLevel(evo, level, status) doCreatureSetLookDir(evo, lookdir) doCreatureSetSkullType(evo, gender) doCreatureAddHealth(evo, -getCreatureMaxHealth(evo) * lifepercentage) doSendMagicEffect(getThingPos(evo), 18) for attacker, experience in pairs (pk) do --doWildAttackPlayer(evo, attacker) local expstring = evo.."expEx" local exp = experience or 0 doItemSetAttribute(getPlayerSlotItem(attacker, 8).uid, expstring, exp) end sendFinishEvolutionEffect(evo, true) addEvent(sendFinishEvolutionEffect, 550, evo, true) addEvent(sendFinishEvolutionEffect, 1050, evo) end local races = { [4] = {cor = COLOR_FIRE2}, [6] = {cor = COLOR_WATER}, [7] = {cor = COLOR_NORMAL}, [8] = {cor = COLOR_FIRE2}, [9] = {cor = COLOR_FIGHTING}, [10] = {cor = COLOR_FLYING}, [11] = {cor = COLOR_GRASS}, [12] = {cor = COLOR_POISON}, [13] = {cor = COLOR_ELECTRIC}, [14] = {cor = COLOR_GROUND}, [15] = {cor = COLOR_PSYCHIC}, [16] = {cor = COLOR_ROCK}, [17] = {cor = COLOR_ICE}, [18] = {cor = COLOR_BUG}, [19] = {cor = COLOR_DRAGON}, [20] = {cor = COLOR_GHOST}, [21] = {cor = COLOR_STEEL}, [22] = {cor = COLOR_DARK}, [1] = {cor = 180}, [2] = {cor = 180}, [3] = {cor = 180}, [5] = {cor = 180}, } local damages = {GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE, DARKDAMAGE, STEELDAMAGE} local fixdmgs = {PSYCHICDAMAGE, COMBAT_PHYSICALDAMAGE, GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, NORMALDAMAGE, GHOSTDAMAGE} local ignored = {POISONEDDAMAGE, BURNEDDAMAGE} --alterado v2.6 local cannotkill = {BURNEDDAMAGE, POISONEDDAMAGE} function onStatsChange(cid, attacker, type, combat, value) if combat == FLYSYSTEMDAMAGE then return false end if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV local damageCombat = combat if not isCreature(attacker) then --alterado v2.5 cid == attacker if not isInArray(fixdamages, combat) and combats[combat] then doSendAnimatedText(getThingPos(cid), "-"..value.."", combats[combat].cor) end return true end -------------------------------------------------- --alterado v2.6 retirado os combats sleep_powder e poison_powder daki! -------------------------------------------------- if isMonster(cid) then local valor = value if not pokes[getCreatureName(cid)] and damageCombat == COMBAT_PHYSICALDAMAGE then valor = getOffense(attacker) * playerDamageReduction doCreatureAddHealth(cid, -math.abs(valor), 3, races[7].cor) --alterado v2.6 dano nos npcs return false elseif not pokes[getCreatureName(cid)] and damageCombat ~= COMBAT_PHYSICALDAMAGE then doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor) return false end end -------------------------------------------------- if isPlayer(attacker) then local valor = value if valor > getCreatureHealth(cid) then valor = getCreatureHealth(cid) end if combat == COMBAT_PHYSICALDAMAGE then return false end if combat == PHYSICALDAMAGE then doSendMagicEffect(getThingPos(cid), 3) doSendAnimatedText(getThingPos(cid), "-"..value.."", races[getMonsterInfo(getCreatureName(cid)).race].cor) end if combats[damageCombat] and not isInArray(fixdmgs, damageCombat) then doSendAnimatedText(getThingPos(cid), "-"..value.."", combats[damageCombat].cor) end if #getCreatureSummons(attacker) >= 1 and not isInArray({POISONEDDAMAGE, BURNEDDAMAGE}, combat) then doPlayerSendTextMessage(attacker, MESSAGE_STATUS_DEFAULT, "Your "..getPokeName(getCreatureSummons(attacker)[1]).." dealt "..valor.." damage to "..getSomeoneDescription(cid)..".") end return true end -------------------------------------------------- if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS then return false end -------------------------------------------------- if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS then if isSummon(attacker) or isPlayer(attacker) then if canAttackOther(cid, attacker) == "Cant" then return false end end local valor = 0 if combat == COMBAT_PHYSICALDAMAGE then valor = getOffense(attacker) else valor = getSpecialAttack(attacker) end valor = valor * playerDamageReduction valor = valor * math.random(83, 117) / 100 if valor >= getCreatureHealth(cid) then valor = getCreatureHealth(cid) end valor = math.floor(valor) if valor >= getCreatureHealth(cid) then if getPlayerStorageValue(cid, 6598755) == 1 or getPlayerStorageValue(cid, 6598754) == 1 then setPlayerStorageValue(cid, 6598755, 0) setPlayerStorageValue(cid, 6598754, 0) doRemoveCondition(cid, CONDITION_OUTFIT) doPlayerAddSkill(cid, 4, 1) doSendAnimatedText(getCreaturePosition(cid),"LOOSE",math.random(1,255)) setPlayerStorageValue(cid,19998,getPlayerStorageValue(cid,19998)+1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) end if getPlayerStorageValue(getCreatureMaster(attacker), 6598755) == 1 then setPlayerStorageValue(getCreatureMaster(attacker),19999,getPlayerStorageValue(getCreatureMaster(attacker),19999)+1) doPlayerSendTextMessage(getCreatureMaster(attacker),MESSAGE_EVENT_ORANGE,"[Win Score] Score: "..(getPlayerStorageValue(getCreatureMaster(attacker),19999) + 1).." WIN SCORES.") doSendAnimatedText(getCreaturePosition(getCreatureMaster(attacker)),"WINN",math.random(1,255)) setPlayerStorageValue(getCreatureMaster(attacker), 6598755,1) setGlobalStorageValue(5001, getGlobalStorageValue(5001) + 1) doPlayerAddSkill(cid, 3, 1) doBroadcastMessage("[Placar] : RedFrag [".. (getGlobalStorageValue(5001)+1).."] X ["..(getGlobalStorageValue(5002)+1).. "] BlueFrag",22) elseif getPlayerStorageValue(getCreatureMaster(attacker), 6598754) == 1 then setPlayerStorageValue(getCreatureMaster(attacker),19999,getPlayerStorageValue(getCreatureMaster(attacker),19999)+1) doPlayerSendTextMessage(getCreatureMaster(attacker),MESSAGE_EVENT_ORANGE,"[Win Score] Score: "..(getPlayerStorageValue(getCreatureMaster(attacker),19999) + 1).." WIN SCORES.") doSendAnimatedText(getCreaturePosition(getCreatureMaster(attacker)),"WINN",math.random(1,255)) setPlayerStorageValue(getCreatureMaster(attacker), 6598754,1) setGlobalStorageValue(5002, getGlobalStorageValue(5002) + 1) doPlayerAddSkill(cid, 3, 1) doBroadcastMessage("[Placar] : RedFrag [".. (getGlobalStorageValue(5001)+1).."] X ["..(getGlobalStorageValue(5002)+1).. "] BlueFrag",22) end if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then doRemoveCondition(cid, CONDITION_OUTFIT) setPlayerStorageValue(cid, 17000, 0) setPlayerStorageValue(cid, 17001, 0) setPlayerStorageValue(cid, 63215, -1) doChangeSpeed(cid, PlayerSpeed) local item = getPlayerSlotItem(cid, 8) local btype = getPokeballType(item.itemid) if #getCreatureSummons(cid) <= 0 then if isInArray(pokeballs[btype].all, item.itemid) then doTransformItem(item.uid, pokeballs[btype].off) doItemSetAttribute(item.uid, "hp", 0) end end end if getPlayerStorageValue(cid, 22545) == 1 then if getGlobalStorageValue(22550) == 1 then doPlayerSendTextMessage(cid, 20, "You are the last survivor of the golden arena! Take your reward!") doPlayerAddItem(cid, 2152, getPlayerStorageValue(cid, 22551)*2) setPlayerStorageValue(cid, 22545, -1) doTeleportThing(cid, getClosestFreeTile(cid, getClosestFreeTile(cid, posBackGolden)), false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid)) setPlayerRecordWaves(cid) endGoldenArena() return false else setGlobalStorageValue(22550, getGlobalStorageValue(22550)-1) setPlayerStorageValue(cid, 22545, -1) doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid)) setPlayerRecordWaves(cid) return false end end local corpse = doCreateItem(3058, 1, getThingPos(cid)) doDecayItem(corpse) doItemSetAttribute(corpse, "pName", getCreatureName(cid)) --alterado v2.7 coloca corpse quando o player morre! doItemSetAttribute(corpse, "attacker", getCreatureName(attacker)) doItemSetAttribute(corpse, "article", getPlayerSex(cid) == 0 and "She" or "He") if getPlayerStorageValue(cid, 98796) >= 1 then setPlayerStorageValue(cid, 98796, -1) setPlayerStorageValue(cid, 98797, -1) --alterado v2.8 doTeleportThing(cid, SafariOut, false) doSendMagicEffect(getThingPos(cid), 21) doPlayerSendTextMessage(cid, 27, "You die in the saffari...") return false end if getPlayerStorageValue(cid, Agatha.stoIni) >= 1 and getPlayerStorageValue(cid, Agatha.stoIni) <= 10 then setPlayerStorageValue(cid, Agatha.stoIni, -1) setPlayerStorageValue(cid, Agatha.stoRec, -1) setPlayerStorageValue(cid, Agatha.stoPer, -1) setPlayerStorageValue(cid, Agatha.stoEni, -1) --alterado v2.9 agatha quest setPlayerStorageValue(cid, Agatha.stoRes, -1) end end doCreatureAddHealth(cid, -valor, 3, 180) if not isPlayer(cid) and valor > 0 then addEvent(sendPlayerDmgMsg, 5, cid, "You lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".") end return false end -------------------------------------------------- if type == STATSCHANGE_HEALTHGAIN then if cid == attacker then return true end if isSummon(cid) and isSummon(attacker) and canAttackOther(cid, attacker) == "Cant" then return false end return true end -------------------------------------------------- if isMonster(attacker) and getPlayerStorageValue(attacker, 201) ~= -1 then if isPlayer(cid) then return false end if getPlayerStorageValue(getCreatureMaster(cid), ginasios[getPlayerStorageValue(attacker, 201)].storage) ~= 1 then return false end end -------------------------------------------------- if isMonster(cid) and getPlayerStorageValue(cid, 201) ~= -1 then if getPlayerStorageValue(getCreatureMaster(attacker), ginasios[getPlayerStorageValue(cid, 201)].storage) ~= 1 then return false end end -------------------------------------------------- if ehMonstro(cid) and ehMonstro(attacker) and not isSummon(cid) and not isSummon(attacker) then return false --alterado v2.9 /\ end --------------------------------------------------- --------------------REFLECT----------------------- if getPlayerStorageValue(cid, 21099) >= 1 and combat ~= COMBAT_PHYSICALDAMAGE then if not isInArray({"Team Claw", "Team Slice"}, getPlayerStorageValue(attacker, 21102)) then doSendMagicEffect(getThingPosWithDebug(cid), 135) doSendAnimatedText(getThingPosWithDebug(cid), "REFLECT", COLOR_GRASS) addEvent(docastspell, 100, cid, getPlayerStorageValue(attacker, 21102)) if getCreatureName(cid) == "Wobbuffet" then doRemoveCondition(cid, CONDITION_OUTFIT) end setPlayerStorageValue(cid, 21099, -1) --alterado v2.6 setPlayerStorageValue(cid, 21100, 1) setPlayerStorageValue(cid, 21101, attacker) setPlayerStorageValue(cid, 21103, getTableMove(attacker, getPlayerStorageValue(attacker, 21102)).f) setPlayerStorageValue(cid, 21104, getCreatureOutfit(attacker).lookType) return false end end ------------------------------------------------- local multiplier = 1 if isCreature(cid) then poketype1 = pokes[getCreatureName(cid)].type --alterado v2.6 poketype2 = pokes[getCreatureName(cid)].type2 end if not poketype1 or not poketype2 then return false end --alterado v2.6 if getCreatureCondition(cid, CONDITION_INVISIBLE) then return false end if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then if isInArray(effectiveness[damageCombat].super, poketype1) then multiplier = multiplier + 0.5 end if isInArray(effectiveness[damageCombat].super, poketype2) then multiplier = multiplier + 0.5 end if isInArray(effectiveness[damageCombat].weak, poketype1) then multiplier = multiplier - 0.25 --alterado v2.3 efetividade q nem na pxg... end if isInArray(effectiveness[damageCombat].weak, poketype2) then multiplier = multiplier - 0.25 end if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then if isInArray(specialabilities["foresight"], getCreatureName(attacker)) then --alterado v2.5 multiplier = 0.5 --alterado v2.6 end end elseif combat == COMBAT_PHYSICALDAMAGE then if isGhostPokemon(cid) then --alterado v2.3 if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then --alterado v2.5 doSendMagicEffect(getThingPos(cid), 3) return false end end local cd = getPlayerStorageValue(attacker, conds["Miss"]) local cd2 = getPlayerStorageValue(attacker, conds["Confusion"]) --alterado v2.5 local cd3 = getPlayerStorageValue(attacker, conds["Stun"]) if cd >= 0 or cd2 >= 0 or cd3 >= 0 then if math.random(1, 100) > 50 then --50% chance de da miss no atk fisico doSendMagicEffect(getThingPos(cid), 211) doSendAnimatedText(getThingPos(attacker), "MISS", 215) return false end end end -------------------------------------------------- local valor = value if multiplier == 1.5 and poketype2 == "no type" then multiplier = 2 --alterado v2.6 elseif multiplier == 1.5 and poketype2 ~= "no type" then multiplier = 1.75 elseif multiplier == 1.25 then --edited effetivines = pxg multiplier = 1 end -------------------------------------------------- if isSummon(cid) and isSummon(attacker) then if getCreatureMaster(cid) == getCreatureMaster(attacker) then return false end if canAttackOther(cid, attacker) == "Cant" then return false end end local randomRange = math.random(83, 117) / 100 local block = 1 if not isPlayer(cid) then if combat == COMBAT_PHYSICALDAMAGE then --[[local value = getOffense(attacker) > 1000 and 3 or 2 block = 1 - (getDefense(cid) / (getOffense(attacker) + getDefense(cid))) --alterado v1.9 testem essa nova formula plzzz '--' valor = (getOffense(attacker)/value) * block if valor <= 0 then valor = math.random(5, 10) --alterado v1.9 end]] block = 1 - (getDefense(cid) / (getOffense(attacker) + getDefense(cid))) if getPokemonGender(attacker) == SEX_MALE then block = block + 0.2 end if getPokemonGender(cid) == SEX_FEMALE then block = block - 0.2 end valor = getOffense(attacker) * block if getOffenseInRage(attacker) >= 1500 then --alterado v2.8 valor = valor * 0.3 end if isInArray(specialabilities["counter"], getCreatureName(cid)) then if math.random(1, 100) <= 10 then doCreatureAddHealth(attacker, -valor, 3, 180) --alterado v2.5 valor = 0 doSendAnimatedText(getThingPosWithDebug(cid), "COUNTER", 215) end end else block = 1 - (getDefense(cid) / (getSpecialAttack(attacker) + getDefense(cid))) valor = valor * block * generalSpecialAttackReduction if isSummon(cid) then valor = valor * summonSpecialDamageReduction - getPokemonLevel(cid) / 2 end end end valor = valor * multiplier valor = valor * randomRange if isSummon(attacker) then valor = valor * getHappinessRate(attacker) else valor = valor * summonReduction end valor = math.floor(valor) if combat == BURNEDDAMAGE then valor = value * getResistance(cid, FIREDAMAGE) elseif combat == POISONEDDAMAGE then valor = value * getResistance(cid, POISONDAMAGE) end if math.random(1, 100) == 4 and not isInArray(ignorecritical, combat) then doSendAnimatedText(getThingPos(attacker), "CRITICAL", 215) valor = valor * 2 end -------------------------Edited CLAN SYSTEM----------------------------------- if isSummon(attacker) and getPlayerStorageValue(getCreatureMaster(attacker), 86228) >= 1 then valor = valor*getClanPorcent(getCreatureMaster(attacker), combat, "atk") elseif isSummon(cid) and getPlayerStorageValue(getCreatureMaster(cid), 86228) >= 1 then --alterado v2.3 valor = valor - (valor*getClanPorcent(getCreatureMaster(cid), combat, "def", pokes[getCreatureName(cid)].type, pokes[getCreatureName(cid)].type2)) end ----------------------------------------------------------------------- ---------------------- Edited Proteção -------------------------------- if valor <= 10 then valor = math.random(15, 25) end ----------------------------------------------------------------------- ---------------------- FEAR / ROAR ------------------------------------ if getPlayerStorageValue(attacker, conds["Fear"]) >= 1 then --alterado v2.5!! return true end --------------------------------------------------------------------------- if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) and getPlayerStorageValue(attacker, 999457) <= 0 then valor = valor * 0 --alterado v2.5 end end end if damageCombat == GROUNDDAMAGE then if isInArray(specialabilities["levitate"], getCreatureName(cid)) then valor = 0 --alterado v2.5 end end ----------------------------------------------------------------------------- local p = getThingPos(cid) --poke na pos backup if p.x == 1 and p.y == 1 and p.z == 10 then return false --alterado v2.2 end if getPlayerStorageValue(cid, 9658783) == 1 then return false --alterado v2.4 -- skill camuflage/future sight/acid armor e afins end ----------------------------------------------------------------------------- --------------- FIGHT MODE ----------------------- if useOTClient then if isSummon(cid) then --alterado v2.7 soh funciona com o OTClient q eu disponibilizei... local master = getCreatureMaster(cid) if getPlayerStorageValue(master, 248759) == 1 then valor = valor * 1.1 elseif getPlayerStorageValue(master, 248759) == 3 then valor = valor * 0.9 end end if isSummon(attacker) then local master = getCreatureMaster(attacker) if getPlayerStorageValue(master, 248759) == 1 then valor = valor * 1.1 elseif getPlayerStorageValue(master, 248759) == 3 then valor = valor * 0.9 end end end ----------------------------------------------------------------------------- if valor >= getCreatureHealth(cid) then if isInArray(cannotKill, combat) and isPlayer(cid) then valor = getCreatureHealth(cid) - 1 else valor = getCreatureHealth(cid) end end valor = math.floor(valor) --alterado v2.5 ------------------ SKILLs Q CURAM O ATTACKER --------------------------------- local function doHeal(cid, amount) if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then amount = math.abs(getCreatureHealth(cid)-getCreatureMaxHealth(cid)) end if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then --alterado v2.6 doCreatureAddHealth(cid, amount) doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65) end end if damageCombat == PSYCHICDAMAGE or damageCombat == MIRACLEDAMAGE then if getPlayerStorageValue(attacker, 95487) >= 1 then doHeal(attacker, valor) setPlayerStorageValue(attacker, 95487, -1) --alterado v2.6 end elseif damageCombat == SEED_BOMBDAMAGE then doHeal(attacker, valor) end -------------------------------------------- ----------SACRED FIRE----------------------- if combat == SACREDDAMAGE and not ehNPC(cid) then --alterado v2.6 local ret = {} ret.id = cid ret.cd = 9 ret.check = getPlayerStorageValue(cid, conds["Silence"]) ret.eff = 39 ret.cond = "Silence" doCondition2(ret) elseif combat == MUDBOMBDAMAGE and not ehNPC(cid) then local ret = {} --alterado v2.8 ret.id = cid ret.cd = 9 ret.eff = 34 ret.check = getPlayerStorageValue(cid, conds["Miss"]) ret.spell = "Mud Bomb" --alterado v2.9 ret.cond = "Miss" doCondition2(ret) end --------------Passiva Lifesteal Clobat------------ if combat == COMBAT_PHYSICALDAMAGE then if getCreatureName(attacker) == "Crobat" then --alterado v2.4 doCreatureAddHealth(attacker, math.floor(valor)) doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30) end end -------------------------------------------- valor = math.abs(valor) --alterado v2.9 if isSummon(attacker) and not isSummon(cid) and not isPlayer(cid) then local expstring = cid.."expEx" if getItemAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, expstring) == null then doItemSetAttribute(getPlayerSlotItem(getCreatureMaster(attacker), 8).uid, expstring, 0) end local exp = valor / getCreatureMaxHealth(cid) local ball = getPlayerSlotItem(getCreatureMaster(attacker), 8).uid doItemSetAttribute(ball, expstring, getItemAttribute(ball, expstring) + exp) if getItemAttribute(ball, expstring) > 1 then doItemSetAttribute(ball, expstring, 1) end end if isSummon(attacker) then if combat == COMBAT_PHYSICALDAMAGE then doTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255) addEvent(doDoubleHit, 1000, attacker, cid, valor, races) --alterado v2.6 agility else doTargetCombatHealth(getCreatureMaster(attacker), cid, damageCombat, -valor, -valor, 255) end if not isSummon(cid) and not isPlayer(cid) and math.random(1, wildEvolveChance) == math.random(1, wildEvolveChance) then addEvent(doEvolveWild, math.random(1, 2500), cid) end else if combat ~= COMBAT_PHYSICALDAMAGE then if damageCombat and combats[damageCombat] then doCreatureAddHealth(cid, -valor, 3, combats[damageCombat].cor) end doCreatureAddHealth(cid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(cid)).race].cor) addEvent(doDoubleHit, 1000, attacker, cid, valor, races) --alterado v2.6 agility end if isSummon(cid) then addEvent(sendPlayerDmgMsg, 5, getCreatureMaster(cid), "Your "..getCreatureName(cid).." lost "..valor.." hitpoints due to an attack from "..getSomeoneDescription(attacker)..".") end end if damageCombat == FIREDAMAGE and not isBurning(cid) then local ret = {} ret.id = cid ret.cd = math.random(5, 12) --alterado v2.5 ret.check = getPlayerStorageValue(cid, conds["Burn"]) ret.damage = isSummon(attacker) and getMasterLevel(attacker)+getPokemonBoost(attacker) or getPokemonLevel(attacker) ret.cond = "Burn" doCondition2(ret) elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) then local ret = {} ret.id = cid ret.cd = math.random(6, 15) --alterado v2.5 ret.check = getPlayerStorageValue(cid, conds["Poison"]) local lvl = isSummon(attacker) and getMasterLevel(attacker) or getPokemonLevel(attacker) ret.damage = math.floor((getPokemonLevel(attacker)+lvl)/2) ret.cond = "Poison" doCondition2(ret) end ------------------------------------POTIONS------------------------------------------- if isSummon(cid) and type == STATSCHANGE_HEALTHLOSS then if getPlayerStorageValue(cid, 173) >= 1 then if damageCombat ~= BURNEDDAMAGE and damageCombat ~= POISONEDDAMAGE then setPlayerStorageValue(cid, 173, -1) --alterado v2.6 doSendAnimatedText(getThingPos(cid), "Lost Heal", 144) end end end ----------------------------------------PASSIVAS------------------------------------- --alterado v2.7 \/ -------------------------------------------Counter Helix------------------------------------ if passivesChances["Helix"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Helix"][getCreatureName(cid)] then docastspell(cid, "Counter Helix") end -------------------------------------------Lava Counter/Electricity---------------------------- if passivesChances["Fire_Thunder"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Fire_Thunder"][getCreatureName(cid)] then docastspell(cid, "Lava-Electricity") end ----------------------------------------Bone Counter------------------------------- if passivesChances["Bone Counter"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Bone Counter"][getCreatureName(cid)] then docastspell(cid, "Bone Counter") end ---------------------------------------Stunning Confusion----------------------------------------- if passivesChances["Stunning"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Stunning"][getCreatureName(cid)] then docastspell(cid, "Stunning Confusion") end -----------------------------------------Groundshock----------------------------------- if passivesChances["Groundshock"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Groundshock"][getCreatureName(cid)] then docastspell(cid, "Groundshock") end --------------------------------------Electric Charge--------------------------------------------- if passivesChances["Electric Charge"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Electric Charge"][getCreatureName(cid)] then docastspell(cid, "Electric Charge", 0, 0) end -------------------------------------Melody------------------------------------ if passivesChances["Melody"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Melody"][getCreatureName(cid)] then docastspell(cid, "Melody") end ------------------------------------- Dragon Fury / Fury --------------------------------------- if passivesChances["Dragon Fury"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Dragon Fury"][getCreatureName(cid)] then docastspell(cid, "Dragon Fury", 0, 0) end ------------------------------------- Mega Drain --------------------------------------- if passivesChances["Mega Drain"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Mega Drain"][getCreatureName(cid)] then docastspell(cid, "Mega Drain") end ------------------------------------- Spores Reaction --------------------------------------- if passivesChances["Spores Reaction"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Spores Reaction"][getCreatureName(cid)] then docastspell(cid, "Spores Reaction") end ------------------------------------ Amnesia ---------------------------------------- if passivesChances["Amnesia"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Amnesia"][getCreatureName(cid)] then docastspell(cid, "Amnesia", 0, 0) end ----------------------------------- Zen Mind ----------------------------------------- if passivesChances["Zen Mind"][getCreatureName(cid)] and isWithCondition(cid) and math.random(1, 100) <= passivesChances["Zen Mind"][getCreatureName(cid)] then docastspell(cid, "Zen Mind", 0, 0) end ---------------------------------- Mirror Coat --------------------------------------- if passivesChances["Mirror Coat"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Mirror Coat"][getCreatureName(cid)] then docastspell(cid, "Mirror Coat", 0, 0) end --------------------------------- Illusion ----------------------------------------- return false end Sistemas Adicionais: - Pokemon Passivos 1: http://www.tibiaking.com/forum/topic/53480-criaturas-passivas/ - Pokemons Passivos 2: http://www.tibiaking.com/forum/topic/28062-monstros-passivos/ - Clonar items usando Elf Bot: http://www.tibiaking.com/forum/topic/9255-correcao-clonar-items-npc-usando-elfbot/ - Adicionar Novas Raças: http://www.tibiaking.com/forum/topic/44029-adicionando-novas-raças/ Bugs gerais que podem Causar Crash: Os Pokemons Uniques Fazem Crashar o Servidor (Se voce pegar uma Pokeball Unique e jogar no Teleport, o Servidor Crasha) Os Pokemon Lock Fazem Crashar o Servidor (Se voce pegar uma Pokeball Lock e jogar no Teleport, o Servidor Crasha) Retirem o NPC SR.SPLIT (Segundo Andar do CP) Dificuldade para Compilar? tente usar essa Dev:https://mega.co.nz/#!cRc2CZoB!6-aLe1oWpFPpY16oLlpCnzBDrqbt-CuQBZCe7eH5X24 Obrigado! Irei fazer tudo ai assim q possível! mas poderia passar este dev q vc passou ai no mega para .rar? pq os arquivos .7z no meu pc diz q esta danificado ai n consigo abrir! se puder mt obrigado! e o do exp.lua é para remover tudo dentro e trocar por este seu? ou é para substituir alguma parte? Link para o comentário Compartilhar em outros sites More sharing options...
Bruno 535 Postado Julho 14, 2015 Share Postado Julho 14, 2015 O tópico foi fechado e movido para lixeira por estar inativo a mais de 10 dias. Caso seja preciso reabrir o mesmo, favor entrar em contato com a equipe. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados