@ALL
Alguem pode pasar o systema de addons por itens se possivel ^^ ??
Rep+
Por lucashgas, 10 de jan. de 2012 em Tópicos Sem Resposta
info
Grupo: Infante
Registrado: 27/08/11
Posts: 1.9k
Reputação: +85
Gênero: Masculino
Char no Tibia: Bruno Maciel

@ALL
Alguem pode pasar o systema de addons por itens se possivel ^^ ??
Rep+
info
Grupo: Campones
Registrado: 19/10/11
Posts: 90
Reputação: +6
Char no Tibia: Não Tenho Oficialmente

@TOPICO
Haha... tou de volta... Infelizamente meu PC queimo a fonte e demoro pra arruma... Mas o bom é que já arrumou e vou colocar o Meu Serv on dinovo...
Estou com os seguintes erros:
• Quando o Player faz logout com o poke fora e depois ele faz login, o poke volta a vida inteira.
Por Enquanto só esses que eu me lembro. Eu vou editando quando eu lembrar mais...
Então...
Sobre os Icones da Ball, só fazendo mais 300 itens +/- , e como @Slicer disse nao tem sprites pros shiny, então dá um trabalho do carambra, além de ter q reforma o cath.lua(lib) e o cath.lua(actions) pra poder dar certo.... seria complicado.
Pra muda o ip do client usa o HexEditor, só nao sei onde tem pra Download.
Sobre o sistema de Addons, acho q tá na assinatura do @RicardoSohnn(nao ta não
)... ele tem um defeito, quando o poke evolui, ele fica com o outfit do addon, eu seja, se vc coloca addon num charmander, e ele evolui pra charmeleon, ele fica com outfir do charmander com addon...
Editado Julho 12 por ZeSy
info
Grupo: Campones
Registrado: 16/05/12
Posts: 84
Reputação: +6

alguem sabe pq fica dano erro nesse npc de diamond.
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Vendedora" script="scripts/diamond.lua" walkinterval="3000" floorchange="0" access="5" >
<health now="150" max="150"/>
<look type="517" head="0" body="114" legs="114" feet="0"/>
<parameters>
<parameter key="message_greet" value="Bem-vindo a loja do diamond, aqui voce pode comprar sua Premium , mudar de sexo e comprar bencao.Para ver as ofertas diga 'offer' "/>
<parameter key="message_farewell" value="Ate a proxima, Beijoss!"/>
</parameters>
</npc>
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
-- Conversa Jogador/NPC
if(msgcontains(msg, 'offer') or msgcontains(msg, 'offer')) then
selfSay('Para Premium diga ( premium ) Para bencao diga ( bencao ) Para trocar de sexo diga ( trocar sexo ) Para trocar de cidade natal diga ( cidade natal ).', cid)
elseif(msgcontains(msg, 'premium') or msgcontains(msg, 'Premium')) then
selfSay('dialogo da premium - diga sim para comprar-', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'bencao') or msgcontains(msg, 'Bencao')) then
selfSay('Com bencao reduz sua penalidade quando morto ( perde menos XP skills etc..) ela custa apenas 3 Diamond.Deseja ter a Bencao??', cid)
talkState[talkUser] = 2
elseif(msgcontains(msg, 'trocar sexo') or msgcontains(msg, 'trocar sexo')) then
selfSay('Para trocar de sexo sao nescessarios 5 Diamonds. Deseja mudar seu sexo??', cid)
talkState[talkUser] = 3
elseif(msgcontains(msg, 'cidade natal') or msgcontains(msg, 'cidade natal')) then
selfSay('deseja trocar de cidade natal? custa apenasDiamond. Deseja trocar Cidade Natal??', cid)
talkState[talkUser] = 4
-- Confirmação da Compra
elseif(msgcontains(msg, 'sim') and talkState[talkUser] == 1) then
if(doPlayerRemoveItem(cid, 2145, 10) == true) then
selfSay('Parabens, Premium de 30 dias!', cid)
doPlayerAddPremiumDays(cid, 31)
talkState[talkUser] = 0
else
selfSay('Voce nao tem Diamonds suficientes.', cid)
talkState[talkUser] = 0
end
elseif(msgcontains(msg, 'sim') and talkState[talkUser] == 2) then
if getPlayerBlessing(cid, 1) and getPlayerBlessing(cid, 2) and getPlayerBlessing(cid, 3) and getPlayerBlessing(cid, 4) and getPlayerBlessing(cid, 5) then
selfSay('Voce ja esta usando bencao!', cid)
else
if(doPlayerRemoveItem(cid, 2145, 3) == true) then
selfSay('Thanks!', cid)
doPlayerAddBlessing(cid, 1)
doPlayerAddBlessing(cid, 2)
doPlayerAddBlessing(cid, 3)
doPlayerAddBlessing(cid, 4)
doPlayerAddBlessing(cid, 5)
talkState[talkUser] = 0
else
selfSay('Voce nao tem Diamonds suficientes.', cid)
talkState[talkUser] = 0
end
end
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 3) then
if(doPlayerRemoveItem(cid, 2145, 5) == true) then
selfSay('Thanks!', cid)
if(getPlayerSex(cid) == PLAYERSEX_FEMALE) then
doPlayerSetSex(cid, PLAYERSEX_MALE)
else
doPlayerSetSex(cid, PLAYERSEX_FEMALE)
end
talkState[talkUser] = 0
else
selfSay('Você nao tem Diamonds suficientes.', cid)
talkState[talkUser] = 0
end
elseif(msgcontains(msg, 'sendas') and talkState[talkUser] == 4) then
if(doPlayerRemoveItem(cid, 2145, 5) == true) then
selfSay('Thanks!', cid)
doPlayerSetTown(cid, 2)
talkState[talkUser] = 0
else
selfSay('Você nao tem Diamonds suficientes.', cid)
talkState[talkUser] = 0
end
elseif(msgcontains(msg, 'falador') and talkState[talkUser] == 4) then
if(doPlayerRemoveItem(cid, 2145, 5) == true) then
selfSay('Thanks!', cid)
doPlayerSetTown(cid, 1)
talkState[talkUser] = 0
else
selfSay('Você não tem Dimond suficientes.', cid)
talkState[talkUser] = 0
end
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
aki o erro:
[12/07/2012 14:55:40] [Error - LuaScriptInterface::loadFile] cannot open scripts/diamond.lua: No such file or directory
[12/07/2012 14:55:40] [Warning - NpcScript::NpcScript] Cannot load script: scripts/diamond.lua
[12/07/2012 14:55:40] cannot open scripts/diamond.lua: No such file or directory
Editado Julho 12 por shadow2012
info
Grupo: Artesão
Registrado: 28/01/12
Posts: 125
Reputação: +73
Char no Tibia: Kurobisu

Mais erros vem a me aparecer
Aqui:
1º Erro:
[12/07/2012 15:16:55] [Error - CreatureScript Interface]
[12/07/2012 15:16:55] data/creaturescripts/scripts/exp.lua:onStatsChange
[12/07/2012 15:16:55] Description:
[12/07/2012 15:16:55] data/creaturescripts/scripts/exp.lua:532: attempt to call global 'hasMimicWall' (a nil value)
[12/07/2012 15:16:55] stack traceback:
[12/07/2012 15:16:55] data/creaturescripts/scripts/exp.lua:532: in function <data/creaturescripts/scripts/exp.lua:129>
2º Erro:
[12/07/2012 15:16:42] [Error - CreatureScript Interface]
[12/07/2012 15:16:42] In a timer event called from:
[12/07/2012 15:16:42] data/creaturescripts/scripts/exp.lua:onStatsChange
[12/07/2012 15:16:42] Description:
[12/07/2012 15:16:42] data/lib/status library.lua:214: attempt to call global 'canAttackOther' (a nil value)
[12/07/2012 15:16:42] stack traceback:
[12/07/2012 15:16:42] data/lib/status library.lua:214: in function <data/lib/status library.lua:211>
Issu tudo começou a aparecer depois de que eu instalei o Patch do Nibelins, Só que daí retirei outros bugs com ele.
Outro erro é quando o Pokémon Atacka o outro ele invez de perder HP não Hita nada!
Me ajuda ai porfavor!
#Edit:
Meu Exp.lua aqui:
local combats = {
[PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC},
[GRASSDAMAGE] = {cor = COLOR_GRASS},
[POISONEDDAMAGE] = {cor = COLOR_GRASS},
[MORTALGASDAMAGE] = {cor = COLOR_POISON},
[FIREDAMAGE] = {cor = COLOR_FIRE2},
[bURNEDDAMAGE] = {cor = COLOR_BURN},
[WATERDAMAGE] = {cor = COLOR_WATER},
[iCEDAMAGE] = {cor = COLOR_ICE},
[NORMALDAMAGE] = {cor = COLOR_NORMAL},
[GUILLOTINEDAMAGE] = {cor = COLOR_NORMAL},
[FLYDAMAGE] = {cor = COLOR_FLYING},
[GHOSTDAMAGE] = {cor = COLOR_GHOST},
[NIGHTMAREDAMAGE] = {cor = COLOR_GHOST},
[GROUNDDAMAGE] = {cor = COLOR_GROUND},
[ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC},
[THUNDERWAVEDAMAGE] = {cor = COLOR_ELECTRIC},
[ROCKDAMAGE] = {cor = COLOR_ROCK},
[bUGDAMAGE] = {cor = COLOR_BUG},
[FIGHTDAMAGE] = {cor = COLOR_FIGHTING},
[sEISMICTOSSDAMAGE] = {cor = COLOR_FIGHTING},
[DRAGONDAMAGE] = {cor = COLOR_DRAGON},
[POISONDAMAGE] = {cor = COLOR_POISON},
[DARKDAMAGE] = {cor = COLOR_DARK},
[sTEELDAMAGE] = {cor = COLOR_STEEL},
}
local function doHeal(cid, amount)
doCreatureAddHealth(cid, amount)
doSendMagicEffect(getThingPos(cid), 12)
doSendAnimatedText(getThingPos(cid), "+"..amount.."", 65)
end
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 or getDamageMapPercent(this, cid) > 0) 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 = {MORTALGASDAMAGE, GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE, DARKDAMAGE, STEELDAMAGE, NIGHTMAREDAMAGE, GUILLOTINEDAMAGE, SEISMICTOSSDAMAGE}
local fixdmgs = {PSYCHICDAMAGE, COMBAT_PHYSICALDAMAGE, GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, NORMALDAMAGE, GHOSTDAMAGE}
local ignored = {NIGHTMAREDAMAGE, GUILLOTINEDAMAGE, MORTALGASDAMAGE, SEISMICTOSSDAMAGE, PSYCHOSHIFTDAMAGE, POISONEDDAMAGE, BURNEDDAMAGE}
local ignoremiss = {NIGHTMAREDAMAGE, MORTALGASDAMAGE, BURNEDDAMAGE, POISONEDDAMAGE}
local ignorecritical = {MORTALGASDAMAGE, BURNEDDAMAGE, POISONEDDAMAGE, NIGHTMAREDAMAGE}
local cannotkill = {MORTALGASDAMAGE, BURNEDDAMAGE, POISONEDDAMAGE, NIGHTMAREDAMAGE}
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 damageCombat == THUNDERWAVEDAMAGE then
damageCombat = ELECTRICDAMAGE
elseif damageCombat == PSYCHOSHIFTDAMAGE then
damageCombat = PSYCHICDAMAGE
end
if getPlayerStorageValue(cid, 33) >= 1 then -- funcionamento do self destruction
if isCreature(attacker) then
return false
end
return true
end
if not isCreature(attacker) or cid == attacker then
if not isInArray(fixdamages, combat) and combats[combat] then
doSendAnimatedText(getThingPos(cid), value, combats[combat].cor)
end
return true
end
--------------------------------------------------
if combat == SLEEP_POWDERDAMAGE then
if not isSummon(cid) and not isSummon(attacker) and not isPlayer(attacker) then
return false
end
if isPlayer(cid) then
return false
end
if isNpcSummon(cid) and getCreatureTarget(cid) ~= attacker then
return false
end
if isSummon(cid) and isSummon(attacker) then
if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then
return false
end
if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
return false
end
end
doSleep(cid, value, true)
return false
end
--------------------------------------------------
if combat == HEALINGDAMAGE then
local healing = math.abs(value)
if not isSummon(cid) and not isSummon(attacker) and not isPlayer(attacker) then
doHeal(cid, healing)
return false
end
if isSummon(cid) and isSummon(attacker) then
if getPlayerStorageValue(getCreatureMaster(cid), 990) >= 1 then
return false
end
if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then
doHeal(cid, healing)
return false
end
if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
doHeal(cid, healing)
return false
end
end
return false
end
--------------------------------------------------
if combat == POISON_POWDERDAMAGE then
if not isSummon(cid) and not isSummon(attacker) and not isPlayer(attacker) then
return false
end
if isNpcSummon(cid) and getCreatureTarget(cid) ~= attacker then
return false
end
if isSummon(cid) and isSummon(attacker) then
if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then
return false
end
if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
return false
end
end
local master = attacker
if isSummon(attacker) then master = getCreatureMaster(attacker) end
addEvent(doAdvancedPoison, 2500, attacker, master, cid, getPlayerStorageValue(attacker, 919231), value, getPlayerStorageValue(cid, 3893))
return false
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), valor, races[getMonsterInfo(getCreatureName(cid)).race].cor)
end
if combats[damageCombat] and not isInArray(fixdmgs, damageCombat) then
doSendAnimatedText(getThingPos(cid), valor, 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 --muda isso
end
--------------------------------------------------
if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS then
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, 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
end
doCreatureAddHealth(cid, -valor, 3, 180)
if not isPlayer(cid) 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 not isSummon(cid) and isSummon(attacker) then
return false
end
if isSummon(cid) and isSummon(attacker) and getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) 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
--------------------------------------------------
--------------------------------------------------
local multiplier = 1
local miss = (getSpeed(cid) - getSpeed(attacker)) * 0.26
local poketype1 = pokes[getCreatureName(cid)].type
local poketype2 = pokes[getCreatureName(cid)].type2
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 * 2
end
if isInArray(effectiveness[damageCombat].super, poketype2) then
multiplier = multiplier * 2
end
if isInArray(effectiveness[damageCombat].weak, poketype1) then
multiplier = multiplier * 0.5
end
if isInArray(effectiveness[damageCombat].weak, poketype2) then
multiplier = multiplier * 0.5
end
if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then
multiplier = multiplier * 0
end
elseif combat == COMBAT_PHYSICALDAMAGE then
if isGhostPokemon(cid) and not isGhostPokemon(attacker) then
doSendMagicEffect(getThingPos(cid), 3)
return false
end
if getCreatureCondition(attacker, CONDITION_INVISIBLE) and not isGhostPokemon(attacker) then
if not isInArray({"Clefable", "Wigglytuff"}, getCreatureName(attacker)) then
return false
end
end
if miss > 0 and math.random(1, 100) <= miss and not isSleeping(cid) and not getCreatureCondition(cid, CONDITION_PARALYZE) then
doSendMagicEffect(getThingPos(cid), 211)
doSendAnimatedText(getThingPos(cid), "MISS", 215)
return false
end
end
--------------------------------------------------
local valor = value
if multiplier > 2 then
multiplier = 2
elseif multiplier == 0.25 then
multiplier = 0.5
end
--------------------------------------------------
local function resetMiss(cid)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 88726, -1)
end
if getPlayerStorageValue(cid, 88726) ~= 1 and miss > 0 and math.random(1, 100) <= miss and damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignoremiss, combat) and not isSleeping(cid) and not getCreatureCondition(cid, CONDITION_PARALYZE) then
doSendMagicEffect(getThingPos(cid), 211)
doSendAnimatedText(getThingPos(cid), "MISS", 215)
doTeleportThing(cid, getClosestFreeTile(cid, getThingPos(cid)), false)
doSendMagicEffect(getThingPos(cid), 211)
doFaceCreature(cid, getThingPos(attacker))
setPlayerStorageValue(cid, 88726, 1)
addEvent(resetMiss, 2200, cid)
return false
end
if not isSummon(attacker) and not isSummon(cid) then
return false
end
if isSummon(cid) and isSummon(attacker) then
if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then
return false
end --party system
if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
return false
end
end
if isSleeping(attacker) then
return false
end
local randomRange = math.random(83, 117) / 100
local block = 0
if combat == COMBAT_PHYSICALDAMAGE then
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
else
block = 1 - (getSpecialDefense(cid) / (getSpecialAttack(attacker) + getSpecialDefense(cid)))
valor = valor * block * generalSpecialAttackReduction
if isSummon(cid) then
valor = valor * summonSpecialDamageReduction - getPokemonLevel(cid) / 2
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 == NIGHTMAREDAMAGE then
local div = 8
if isSummon(attacker) and not isSummon(cid) then
div = 4
end
valor = math.floor(getCreatureMaxHealth(cid)/div)
elseif combat == GUILLOTINEDAMAGE then
if isGhostPokemon(cid) then
doSendMagicEffect(getThingPos(cid), 3)
return false
end
local gDmg = 0.5
if isSummon(attacker) and not isSummon(cid) then
gDmg = 0.7
end
valor = getCreatureMaxHealth(cid) * gDmg
elseif combat == SEISMICTOSSDAMAGE then
valor = getPokemonLevel(attacker) * 10
elseif combat == BURNEDDAMAGE then
valor = value * getResistance(cid, FIREDAMAGE)
elseif combat == POISONEDDAMAGE then
valor = value * getResistance(cid, POISONDAMAGE)
end
if valor <= 0 then
doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
return false
end
if math.random(1, 100) == 4 and not isInArray(ignorecritical, combat) then
doSendAnimatedText(getThingPos(attacker), "CRITICAL", 215)
valor = valor * 2
end
if combat == PSYCHOSHIFTDAMAGE and isCreature(cid) then
if not isPlayer(cid) then
local pos = getThingPos(cid)
pos.x = pos.x + math.random(-4,4)
pos.y = pos.y + math.random(-4,4)
for a = 1, 6 do
if not canWalkOnPos(pos, true, true, true, true, false) or not isSightClear(getThingPos(cid), pos, false) then
pos = getThingPos(cid)
pos.x = pos.x + math.random(-4,4)
pos.y = pos.y + math.random(-4,4)
end
end
if not canWalkOnPos(pos, true, true, true, true, false) then
pos = getClosestFreeTile(cid, getThingPos(cid))
end
if not canWalkOnPos(pos, true, true, true, true, false) then
pos = getThingPos(cid)
end
doTeleportThing(cid, pos, false)
end
doSendMagicEffect(getThingPos(cid), math.random(12, 14))
end
if combat == THUNDERWAVEDAMAGE then
doCreatureAddCondition(cid, thunderwavecondition)
end
if valor >= getCreatureHealth(cid) then
if isInArray(cannotKill, combat) and isPlayer(cid) then
valor = getCreatureHealth(cid) - 1
else
valor = getCreatureHealth(cid)
end
end
--- REFLECT --------------------------------
if not isPlayer(cid) and getPlayerStorageValue(cid, 34) >= 1 and combat ~= COMBAT_PHYSICALDAMAGE then
doSendMagicEffect(getThingPos(cid), 135)
doSendAnimatedText(getThingPos(cid), "REFLECT", COLOR_GRASS)
setPlayerStorageValue(cid, 34, -1)
return false
end
--------------------------------------------
if hasMimicWall(cid) then
doSendMagicEffect(getThingPos(cid), 135)
local dmgText = ""..valor..""
local a = getPlayerStorageValue(cid, 878)
setPlayerStorageValue(cid, 878, a - valor)
local k = getPlayerStorageValue(cid, 878)
if k <= 0 then
local b = getTileItemById(getThingPos(cid), 11440)
if b.uid > 1 then doRemoveItem(b.uid, 1) end
local c = getTileItemById(getThingPos(cid), 11439)
if c.uid > 1 then doRemoveItem(c.uid, 1) end
dmgText = ""..a..""
doSendMagicEffect(getThingPos(cid), 3)
end
doSendAnimatedText(getThingPos(cid), dmgText, 215)
return false
end
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(cid) and getCreatureHealth(cid) <= (getCreatureMaxHealth(cid)*0.08) and not exhaustion.get(getCreatureMaster(cid), 88726) then
exhaustion.set(getCreatureMaster(cid), 88726, 11)
doSendMagicEffect(getThingPos(cid), 178)
end
if isSummon(attacker) then
if combat == COMBAT_PHYSICALDAMAGE then
doTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255)
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
doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor)
else
doCreatureAddHealth(cid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(cid)).race].cor)
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
local percent = 8 + math.ceil(valor / getCreatureMaxHealth(cid) * 100)
if getCreatureHealth(cid) == 0 or percent <= 0 then return false end
local runCond = false
if math.random(100) <= percent then
runCond = true
end
if runCond then
local condPos = getThingPos(cid)
local color = 215
local text = ""
local effect = 2
if damageCombat == FIREDAMAGE and not isBurning(cid) then
doAdvancedBurn(attacker, isPlayer(getCreatureMaster(attacker)) and getCreatureMaster(attacker) or 0, cid, getPokemonLevel(attacker) * 2, math.random(5, 12))
color = COLOR_FIRE2
text = "BURNING"
effect = 15
elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) and randomCond == checkCond then
doAdvancedPoison(attacker, isPlayer(getCreatureMaster(attacker)) and getCreatureMaster(attacker) or 0, cid, getPokemonLevel(attacker) * 2, math.random(4, 20))
color = COLOR_GRASS
text = "POISONED"
effect = 8
end
doSendMagicEffect(getThingPos(cid), effect)
addEvent(doSendAnimatedText, 5, condPos, text, color)
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, 174, 1)
doSendAnimatedText(getThingPos(cid), "Lost Heal", 144)
end
end
end
----------------------------------------PASSIVAS-----------------------------------------
------------------------------"Counter Helix" - "Giro Ball"------------------------------
-- [outfit normal] = {out = outfit girando, efeitos}
local OutFit = {
[366] = {out = 496, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --scyther
[912] = {out = 918, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Scizor
[1317] = {out = 849, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Shiny Scyther
[952] = {out = 1193, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Hitmontop
[909] = {out = 1194, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --pineco
[910] = {out = 1192, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Forretress
}
--acima do efeito 255 n aparece -pelo menos aki- entao fica esse por enquanto... ;x
--efeito vermelho => {cima = 261, direita = 263, esquerda = 264, baixo = 262}
if isSummon(cid) then
if OutFit[getCreatureOutfit(cid).lookType] then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local outfitt = OutFit[getCreatureOutfit(cid).lookType]
local function doWingAttack(cid, a, damage, min, max)
local damagearea = {}
local effectpos = getThingPosWithDebug(cid)
local effect = 255
if a == 0 then
effect = outfitt.cima
effectpos.x = effectpos.x + 1
effectpos.y = effectpos.y - 1
damagearea = wingdn
elseif a == 1 then
effect = outfitt.direita
effectpos.x = effectpos.x + 2
effectpos.y = effectpos.y + 1
damagearea = wingde
elseif a == 2 then
effect = outfitt.baixo
effectpos.x = effectpos.x + 1
effectpos.y = effectpos.y + 2
damagearea = wingds
elseif a == 3 then
effect = outfitt.esquerda
effectpos.x = effectpos.x - 1
effectpos.y = effectpos.y + 1
damagearea = wingdw
end
doSendMagicEffect(effectpos, effect)
if damage then
local look = getCreatureOutfit(cid).lookType
if look == 366 or look == 1317 then --scyther e shiny scyther
doAreaCombatHealth(cid, BUGDAMAGE, getThingPosWithDebug(cid), damagearea, -min, -max, CONST_ME_NONE)
elseif look == 952 then --hitmontop
doAreaCombatHealth(cid, FIGHTINGDAMAGE, getThingPosWithDebug(cid), damagearea, -min, -max, CONST_ME_NONE)
else --resto
doAreaCombatHealth(cid, STEELDAMAGE, getThingPosWithDebug(cid), damagearea, -min, -max, CONST_ME_NONE)
end
end
end
local dire = getCreatureLookDir(cid)
local cpos = getThingPosWithDebug(cid)
local min = getPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*20 --nao sei como funciona o sistema de dano...
setPlayerStorageValue(cid, 32623, 1) --proteçao
doSetCreatureOutfit(cid, {lookType = OutFit[getCreatureOutfit(cid).lookType].out}, -1)
local function doDance(cid, dir, damage, min, max)
if not isCreature(cid) then return true end
doCreatureSetLookDir(cid, dir)
doWingAttack(cid, dir, damage, min, max)
end
for times = 0, 2 do
for directions = 0, 3 do
addEvent(doDance, times * 300, cid, directions, true, min, max)
end
end
local function doChangeO(cid, dir, pos)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 32623, 0) --proteçao
doRemoveCondition(cid, CONDITION_OUTFIT)
if getThingPosWithDebug(cid).x == pos.x and getThingPosWithDebug(cid).y == pos.y then
doCreatureSetLookDir(cid, dir)
end
end
addEvent(doChangeO, 2 * 300 + 10, cid, dire, cpos)
end
end
end
-------------------------------------------Lava Counter / Electricity-------------------------------------
local Fire_Thunder = {"Magmar", "Shiny Magmar", "Electabuzz", "Shiny Electabuzz"}
--["Nome"] = {effeito, damage}
local eff = {
["Magmar"] = {15, FIREDAMAGE},
["Shiny Magmar"] = {15, FIREDAMAGE},
["Electabuzz"] = {207, ELECTRICDAMAGE},
["Shiny Electabuzz"] = {207, ELECTRICDAMAGE},
}
if isSummon(cid) then
local e = getCreatureMaster(cid)
if isInArray(Fire_Thunder, getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")) then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local min = getPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*20 --nao sei como funciona o sistema de dano...
local function sendFireEff(cid, dir, eff, damage)
if not isCreature(cid) then return true end
doAreaCombatHealth(cid, damage, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, eff)
end
local function doSpinFire(cid)
if not isCreature(cid) then return true end
local t = {
[1] = SOUTHWEST,
[2] = SOUTH,
[3] = SOUTHEAST,
[4] = EAST,
[5] = NORTHEAST,
[6] = NORTH,
[7] = NORTHWEST,
[8] = WEST,
[9] = SOUTHWEST,
}
for a = 1, 17 do
if not t[a] then
addEvent(sendFireEff, a * 140, cid, t[a-8], eff[getCreatureName(cid)][1], eff[getCreatureName(cid)][2])
else
addEvent(sendFireEff, a * 140, cid, t[a], eff[getCreatureName(cid)][1], eff[getCreatureName(cid)][2])
end
end
setPlayerStorageValue(cid, 32623, 0) --proteçao
end
setPlayerStorageValue(cid, 32623, 1) --proteçao
doSpinFire(cid, false, cid)
end
end
end
---------------------------------------------Demon Kicker----------------------------------
--[outfit] = outfit chutando,
local hitmonlees = {
[371] = 652, --hitmonlee
[1300] = 652, --shiny hitmonlee
[877] = 878, --elite hitmonlee PxG
}
--DETALHE: shiny hitmonlee n tem a sprite dele chutando.. pelo menos eu n achei..
--entao deixei a sprite do hitmonlee normal atacando...
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if name == "Shiny Hitmonlee" or name == "Hitmonlee" then
if isCreature(getCreatureTarget(getCreatureMaster(cid))) then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if isSleeping(cid) then return true end
if getDistanceBetween(getThingPos(cid), getThingPos(getMasterTarget(cid))) > 1 then
return false
end
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local function doChangeHitmon(cid)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 32623, 0) --proteçao
doRemoveCondition(cid, CONDITION_OUTFIT)
end
local min = getPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*20 --nao sei como funciona o sistema de dano...
setPlayerStorageValue(cid, 32623, 1) --proteçao
doSetCreatureOutfit(cid, {lookType = hitmonlees[getCreatureOutfit(cid).lookType]}, -1)
doTargetCombatHealth(cid, getMasterTarget(cid), FIGHTINGDAMAGE, -min, -max, 255)
addEvent(doChangeHitmon, 700, cid)
end
end
end
end
-------------------------------------------Demon Puncher-------------------------------------
local hitmonchans = {
["Hitmonchan"] = {
[0] = {out = 559, eff = 112, type = FIGHTINGDAMAGE}, --outfit normal
[1] = {out = 1075, eff = 35, type = FIREDAMAGE}, --outfit fogo
[2] = {out = 1077, eff = 48, type = ELECTRICDAMAGE}, --outfit raio
[3] = {out = 1078, eff = 43, type = ICEDAMAGE}, --outfit gelo
[4] = {out = 1076, eff = 140, type = GHOSTDAMAGE} --outfit ghost
},
["Shiny Hitmonchan"] = {
--aconcelho trocar a outfit do shiny hitmonchan pela do elite hitmonchan do PO...
[0] = {out = 837, eff = 112, type = FIGHTINGDAMAGE}, --outfit normal
[1] = {out = 1080, eff = 35, type = FIREDAMAGE}, --outfit fogo
[2] = {out = 1081, eff = 48, type = ELECTRICDAMAGE}, --outfit raio
[3] = {out = 1082, eff = 43, type = ICEDAMAGE}, --outfit gelo
[4] = {out = 1079, eff = 140, type = GHOSTDAMAGE} --outfit ghost
}
}
local monchanOUT = {837, 1080, 1081, 1082, 1079}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if name == "Shiny Hitmonchan" or name == "Hitmonchan" then
if isCreature(getCreatureTarget(getCreatureMaster(cid))) then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if isSleeping(cid) then return true end
if getDistanceBetween(getThingPos(cid), getThingPos(getMasterTarget(cid))) > 1 then
return false
end
if getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke") == "Shiny Hitmonchan" and not isInArray(monchanOUT, getCreatureOutfit(cid).lookType) then
return false --proteçao pro script n funcionar com o shiny monchan com outfit diferente da do elite...
end --script soh funciona com outfit do elite hirmonchan do PO...
local min = getPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*20 --nao sei como funciona o sistema de dano...
local hands = getItemAttribute(getPlayerSlotItem(e, 8).uid, "hands")
doSendDistanceShoot(getThingPos(cid), getThingPos(getMasterTarget(cid)), 39)
doTargetCombatHealth(cid, getMasterTarget(cid), hitmonchans[name][hands].type, -min, -max, 255)
local target = getThingPos(getMasterTarget(cid))
target.x = target.x + 1
if hands == 4 then
doSendMagicEffect(target, hitmonchans[name][hands].eff)
else
doSendMagicEffect(getThingPos(getMasterTarget(cid)), hitmonchans[name][hands].eff)
end
end
end
end
end
---------------------------------------Stunning Confusion------------------------------------------
local ducks = {"Golduck", "Psyduck", "Shiny Golduck", "Shiny Psyduck"}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if isInArray(ducks, name) then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local min = getPokemonLevel(cid)*5 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*10 --nao sei como funciona o sistema de dano...
local function damage(cid)
if isCreature(cid) then
setPlayerStorageValue(cid, 32623, 1) --proteçao
doAreaCombatHealth(cid, PSYCHICDAMAGE, getThingPosWithDebug(cid), confusion, -min, -max, 136)
end
end
for i = 1, 7 do
addEvent(damage, i*500, cid)
end
setPlayerStorageValue(cid, 32623, 0) --proteçao
end
end
end
-----------------------------------------Groundshock-----------------------------------
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if name == "Kangaskhan" or name == "Shiny Kangaskhan" then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
local min = getPokemonLevel(cid)*10 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), eshock, -min, -max, 255)
local sps = getThingPosWithDebug(cid)
sps.x = sps.x+1
sps.y = sps.y+1
doSendMagicEffect(sps, 127)
end
end
end
--------------------------------------Electric Charge---------------------------------------------------
arr = {
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 2, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1}
}
local charge = {"Pikachu", "Shiny Pikachu", "Raichu", "Shiny Raichu"}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
local target = 0
if isInArray(charge, name) then
if getPlayerStorageValue(cid, 253) >= 0 then
return true
end
local uid = checkAreaUid(getCreaturePosition(cid), arr, 1, 1)
for _,pid in pairs(uid) do
if isCreature(pid) then
if getCreatureTarget(pid) == cid then
target = target+1
end
end
end
if target == 0 then
return true
end
if target == (1 or 2) then
chance = 15 --15%
elseif target == (3 or 4) then
chance = 20 --20%
elseif target == (5 or 6) then
chance = 30 --30%
end
if math.random(1, 100) <= chance then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
setPlayerStorageValue(cid, 253, 1)
doSendAnimatedText(getThingPos(cid), "FOCUS", 144)
end
end
end
-------------------------------------Melody------------------------------------
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if name == "Wigglytuff" or name == "Shiny Wigglytuff" then
if math.random(1, 100) <= 10 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
doAreaCombatHealth(cid, SLEEP_POWDERDAMAGE, getThingPosWithDebug(cid), powders, -6, -10, 33)
end
end
end
------------------------------------- Dragon Fury / Fury ---------------------------------------
local DracoFury = {"Persian", "Shiny Persian", "Gyarados", "Shiny Gyarados", "Dratini", "Shiny Dratini", "Dragonair", "Shiny Dragonair", "Dragonite", "Shiny Dragonite"}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if isInArray(DracoFury, name) then
if math.random(1, 100) <= 10 then --Chance 4 = 4% Acho, Mais Fica A Sua Escolha
if getPlayerStorageValue(cid, 32623) == 1 then
return false
end
local function effect(params)
if isCreature(params.cid) then
doSendMagicEffect(getThingPos(params.cid), 12)
end
end
setPlayerStorageValue(cid, 32623, 1)
local function doReduceOffenseDefense(cid, qnt)
if not isCreature(cid) then return true end
local a = getDefense(cid)
local A = getOffense(cid)
if getCreatureName(cid) ~= "Persian" then
setPlayerStorageValue(cid, 1002, a - qnt)
end
setPlayerStorageValue(cid, 1001, A - qnt)
end
local function doDoubleOffenseDefense(cid)
if not isCreature(cid) then return true end
local a = getDefense(cid)
local A = getOffense(cid)
if getCreatureName(cid) ~= "Persian" then
setPlayerStorageValue(cid, 1002, a * 2)
end
setPlayerStorageValue(cid, 1001, A * 1.5)
local b = getDefense(cid)
local c = b - a
local B = getOffense(cid)
local C = B - A
if getCreatureName(cid) ~= "Persian" then
addEvent(doReduceOffenseDefense, 15 * 1500 + 40, cid, c)
end
addEvent(doReduceOffenseDefense, 15 * 1500 + 40, cid, C)
end
setPlayerStorageValue(cid, 32623, 0)
doDoubleOffenseDefense(cid)
for times = 0, 15 do
addEvent(effect, 1500 * times + 40, {cid = cid})
end
setPlayerStorageValue(cid, 32623, 1)
end
end
end
------------------------------------- Mega Drain ---------------------------------------
arr = {
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{0, 1, 2, 1, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 0, 0}
}
local mega = {"Oddish", "Gloom", "Vileplume", "Kabuto", "Kabutops", "Parasect", "Tangela", "Shiny Oddish",
"Shiny Gloom", "Shiny Vileplume", "Shiny Kabuto", "Shiny Kabutops", "Shiny Parasect", "Shiny Tangela"}
local min = getPokemonLevel(cid)*3 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*5 --nao sei como funciona o sistema de dano...
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if isInArray(mega, name) then
if math.random(1, 100) <= 10 then -- Porcentagem de chance pro poke usar a passiva... 20 = 20%
local uid = checkAreaUid(getThingPos(cid), arr, 1, 1)
for _,pid in pairs(uid) do
if isCreature(pid) then
if getCreatureTarget(pid) == cid then
local hp = getCreatureHealth(pid)
local drain = choose(min, max)
if hp-drain >= 1 then
doCreatureAddHealth(pid, -drain)
doCreatureAddHealth(cid, drain)
doSendAnimatedText(getThingPos(pid), "-"..drain.."", 144)
doSendAnimatedText(getThingPos(cid), "+"..drain.."", 32)
end
end
end
end
end
end
end
------------------------------------- Spores Reaction ---------------------------------------
arr = {
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{0, 1, 2, 1, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 0, 0}
}
local spores = {"Oddish", "Gloom", "Vileplume", "Shiny Oddish", "Shiny Gloom", "Shiny Vileplume"}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if isInArray(spores, name) then
if math.random(1, 100) <= 10 then -- Porcentagem de chance pro poke usar a passiva... 20 = 20% +/-
doAreaCombatHealth(cid, SLEEP_POWDERDAMAGE, getThingPosWithDebug(cid), powders, -2, -3, 27)
end
end
end
return false
end
Bem consegui concertar ja o problema do atack que não hitava, mais agora me surgiu outro problema nem sei se é o mesmo mais apareceu.
Problema:
[12/07/2012 15:30:40] [Error - CreatureScript Interface]
[12/07/2012 15:30:40] data/creaturescripts/scripts/exp.lua:onStatsChange
[12/07/2012 15:30:40] Description:
[12/07/2012 15:30:40] data/lib/status library.lua:262: attempt to call global 'canAttackOther' (a nil value)
[12/07/2012 15:30:40] stack traceback:
[12/07/2012 15:30:40] data/lib/status library.lua:262: in function 'doAdvancedBurn'
[12/07/2012 15:30:40] data/creaturescripts/scripts/exp.lua:529: in function
<data/creaturescripts/scripts/exp.lua:128>
[12/07/2012 15:30:49] [Error - CreatureScript Interface]
[12/07/2012 15:30:49] data/creaturescripts/scripts/exp.lua:onStatsChange
[12/07/2012 15:30:49] Description:
[12/07/2012 15:30:49] data/lib/status library.lua:262: attempt to call global 'canAttackOther' (a nil value)
[12/07/2012 15:30:49] stack traceback:
[12/07/2012 15:30:50] data/lib/status library.lua:262: in function 'doAdvancedBurn'
[12/07/2012 15:30:50] data/creaturescripts/scripts/exp.lua:529: in function <data/creaturescripts/scripts/exp.lua:128>
o Exp.lua novamente:
local combats = {
[PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC},
[GRASSDAMAGE] = {cor = COLOR_GRASS},
[POISONEDDAMAGE] = {cor = COLOR_GRASS},
[MORTALGASDAMAGE] = {cor = COLOR_POISON},
[FIREDAMAGE] = {cor = COLOR_FIRE2},
[bURNEDDAMAGE] = {cor = COLOR_BURN},
[WATERDAMAGE] = {cor = COLOR_WATER},
[iCEDAMAGE] = {cor = COLOR_ICE},
[NORMALDAMAGE] = {cor = COLOR_NORMAL},
[GUILLOTINEDAMAGE] = {cor = COLOR_NORMAL},
[FLYDAMAGE] = {cor = COLOR_FLYING},
[GHOSTDAMAGE] = {cor = COLOR_GHOST},
[NIGHTMAREDAMAGE] = {cor = COLOR_GHOST},
[GROUNDDAMAGE] = {cor = COLOR_GROUND},
[ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC},
[THUNDERWAVEDAMAGE] = {cor = COLOR_ELECTRIC},
[ROCKDAMAGE] = {cor = COLOR_ROCK},
[bUGDAMAGE] = {cor = COLOR_BUG},
[FIGHTDAMAGE] = {cor = COLOR_FIGHTING},
[sEISMICTOSSDAMAGE] = {cor = COLOR_FIGHTING},
[DRAGONDAMAGE] = {cor = COLOR_DRAGON},
[POISONDAMAGE] = {cor = COLOR_POISON},
[DARKDAMAGE] = {cor = COLOR_DARK},
[sTEELDAMAGE] = {cor = COLOR_STEEL},
}
local function doHeal(cid, amount)
doCreatureAddHealth(cid, amount)
doSendMagicEffect(getThingPos(cid), 12)
doSendAnimatedText(getThingPos(cid), "+"..amount.."", 65)
end
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 or getDamageMapPercent(this, cid) > 0) 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 = {MORTALGASDAMAGE, GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE, DARKDAMAGE, STEELDAMAGE, NIGHTMAREDAMAGE, GUILLOTINEDAMAGE, SEISMICTOSSDAMAGE}
local fixdmgs = {PSYCHICDAMAGE, COMBAT_PHYSICALDAMAGE, GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, NORMALDAMAGE, GHOSTDAMAGE}
local ignored = {NIGHTMAREDAMAGE, GUILLOTINEDAMAGE, MORTALGASDAMAGE, SEISMICTOSSDAMAGE, PSYCHOSHIFTDAMAGE, POISONEDDAMAGE, BURNEDDAMAGE}
local ignoremiss = {NIGHTMAREDAMAGE, MORTALGASDAMAGE, BURNEDDAMAGE, POISONEDDAMAGE}
local ignorecritical = {MORTALGASDAMAGE, BURNEDDAMAGE, POISONEDDAMAGE, NIGHTMAREDAMAGE}
local cannotkill = {MORTALGASDAMAGE, BURNEDDAMAGE, POISONEDDAMAGE, NIGHTMAREDAMAGE}
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 damageCombat == THUNDERWAVEDAMAGE then
damageCombat = ELECTRICDAMAGE
elseif damageCombat == PSYCHOSHIFTDAMAGE then
damageCombat = PSYCHICDAMAGE
end
if getPlayerStorageValue(cid, 33) >= 1 then -- funcionamento do self destruction
if isCreature(attacker) then
return false
end
return true
end
if not isCreature(attacker) or cid == attacker then
if not isInArray(fixdamages, combat) and combats[combat] then
doSendAnimatedText(getThingPos(cid), value, combats[combat].cor)
end
return true
end
--------------------------------------------------
if combat == SLEEP_POWDERDAMAGE then
if not isSummon(cid) and not isSummon(attacker) and not isPlayer(attacker) then
return false
end
if isPlayer(cid) then
return false
end
if isNpcSummon(cid) and getCreatureTarget(cid) ~= attacker then
return false
end
if isSummon(cid) and isSummon(attacker) then
if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then
return false
end
if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
return false
end
end
doSleep(cid, value, true)
return false
end
--------------------------------------------------
if combat == HEALINGDAMAGE then
local healing = math.abs(value)
if not isSummon(cid) and not isSummon(attacker) and not isPlayer(attacker) then
doHeal(cid, healing)
return false
end
if isSummon(cid) and isSummon(attacker) then
if getPlayerStorageValue(getCreatureMaster(cid), 990) >= 1 then
return false
end
if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then
doHeal(cid, healing)
return false
end
if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
doHeal(cid, healing)
return false
end
end
return false
end
--------------------------------------------------
if combat == POISON_POWDERDAMAGE then
if not isSummon(cid) and not isSummon(attacker) and not isPlayer(attacker) then
return false
end
if isNpcSummon(cid) and getCreatureTarget(cid) ~= attacker then
return false
end
if isSummon(cid) and isSummon(attacker) then
if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then
return false
end
if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
return false
end
end
local master = attacker
if isSummon(attacker) then master = getCreatureMaster(attacker) end
addEvent(doAdvancedPoison, 2500, attacker, master, cid, getPlayerStorageValue(attacker, 919231), value, getPlayerStorageValue(cid, 3893))
return false
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), valor, races[getMonsterInfo(getCreatureName(cid)).race].cor)
end
if combats[damageCombat] and not isInArray(fixdmgs, damageCombat) then
doSendAnimatedText(getThingPos(cid), valor, 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 --muda isso
end
--------------------------------------------------
if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS then
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, 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
end
doCreatureAddHealth(cid, -valor, 3, 180)
if not isPlayer(cid) 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 not isSummon(cid) and isSummon(attacker) then
return false
end
if isSummon(cid) and isSummon(attacker) and getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) 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
--------------------------------------------------
--------------------------------------------------
local multiplier = 1
local miss = (getSpeed(cid) - getSpeed(attacker)) * 0.26
local poketype1 = pokes[getCreatureName(cid)].type
local poketype2 = pokes[getCreatureName(cid)].type2
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 * 2
end
if isInArray(effectiveness[damageCombat].super, poketype2) then
multiplier = multiplier * 2
end
if isInArray(effectiveness[damageCombat].weak, poketype1) then
multiplier = multiplier * 0.5
end
if isInArray(effectiveness[damageCombat].weak, poketype2) then
multiplier = multiplier * 0.5
end
if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then
multiplier = multiplier * 0
end
elseif combat == COMBAT_PHYSICALDAMAGE then
if isGhostPokemon(cid) and not isGhostPokemon(attacker) then
doSendMagicEffect(getThingPos(cid), 3)
return false
end
if getCreatureCondition(attacker, CONDITION_INVISIBLE) and not isGhostPokemon(attacker) then
if not isInArray({"Clefable", "Wigglytuff"}, getCreatureName(attacker)) then
return false
end
end
if miss > 0 and math.random(1, 100) <= miss and not isSleeping(cid) and not getCreatureCondition(cid, CONDITION_PARALYZE) then
doSendMagicEffect(getThingPos(cid), 211)
doSendAnimatedText(getThingPos(cid), "MISS", 215)
return false
end
end
--------------------------------------------------
local valor = value
if multiplier > 2 then
multiplier = 2
elseif multiplier == 0.25 then
multiplier = 0.5
end
--------------------------------------------------
local function resetMiss(cid)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 88726, -1)
end
if getPlayerStorageValue(cid, 88726) ~= 1 and miss > 0 and math.random(1, 100) <= miss and damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignoremiss, combat) and not isSleeping(cid) and not getCreatureCondition(cid, CONDITION_PARALYZE) then
doSendMagicEffect(getThingPos(cid), 211)
doSendAnimatedText(getThingPos(cid), "MISS", 215)
doTeleportThing(cid, getClosestFreeTile(cid, getThingPos(cid)), false)
doSendMagicEffect(getThingPos(cid), 211)
doFaceCreature(cid, getThingPos(attacker))
setPlayerStorageValue(cid, 88726, 1)
addEvent(resetMiss, 2200, cid)
return false
end
if not isSummon(attacker) and not isSummon(cid) then
return false
end
if isSummon(cid) and isSummon(attacker) then
if not isInParty(getCreatureMaster(cid)) or not isInParty(getCreatureMaster(attacker)) then
return false
end --party system
if not getPlayerParty(getCreatureMaster(cid)) == getPlayerParty(getCreatureMaster(attacker)) then
return false
end
end
if isSleeping(attacker) then
return false
end
local randomRange = math.random(83, 117) / 100
local block = 0
if combat == COMBAT_PHYSICALDAMAGE then
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
else
block = 1 - (getSpecialDefense(cid) / (getSpecialAttack(attacker) + getSpecialDefense(cid)))
valor = valor * block * generalSpecialAttackReduction
if isSummon(cid) then
valor = valor * summonSpecialDamageReduction - getPokemonLevel(cid) / 2
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 == NIGHTMAREDAMAGE then
local div = 8
if isSummon(attacker) and not isSummon(cid) then
div = 4
end
valor = math.floor(getCreatureMaxHealth(cid)/div)
elseif combat == GUILLOTINEDAMAGE then
if isGhostPokemon(cid) then
doSendMagicEffect(getThingPos(cid), 3)
return false
end
local gDmg = 0.5
if isSummon(attacker) and not isSummon(cid) then
gDmg = 0.7
end
valor = getCreatureMaxHealth(cid) * gDmg
elseif combat == SEISMICTOSSDAMAGE then
valor = getPokemonLevel(attacker) * 10
elseif combat == BURNEDDAMAGE then
valor = value * getResistance(cid, FIREDAMAGE)
elseif combat == POISONEDDAMAGE then
valor = value * getResistance(cid, POISONDAMAGE)
end
if valor <= 0 then
doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
return false
end
if math.random(1, 100) == 4 and not isInArray(ignorecritical, combat) then
doSendAnimatedText(getThingPos(attacker), "CRITICAL", 215)
valor = valor * 2
end
if combat == PSYCHOSHIFTDAMAGE and isCreature(cid) then
if not isPlayer(cid) then
local pos = getThingPos(cid)
pos.x = pos.x + math.random(-4,4)
pos.y = pos.y + math.random(-4,4)
for a = 1, 6 do
if not canWalkOnPos(pos, true, true, true, true, false) or not isSightClear(getThingPos(cid), pos, false) then
pos = getThingPos(cid)
pos.x = pos.x + math.random(-4,4)
pos.y = pos.y + math.random(-4,4)
end
end
if not canWalkOnPos(pos, true, true, true, true, false) then
pos = getClosestFreeTile(cid, getThingPos(cid))
end
if not canWalkOnPos(pos, true, true, true, true, false) then
pos = getThingPos(cid)
end
doTeleportThing(cid, pos, false)
end
doSendMagicEffect(getThingPos(cid), math.random(12, 14))
end
if combat == THUNDERWAVEDAMAGE then
doCreatureAddCondition(cid, thunderwavecondition)
end
if valor >= getCreatureHealth(cid) then
if isInArray(cannotKill, combat) and isPlayer(cid) then
valor = getCreatureHealth(cid) - 1
else
valor = getCreatureHealth(cid)
end
end
--- REFLECT --------------------------------
if not isPlayer(cid) and getPlayerStorageValue(cid, 34) >= 1 and combat ~= COMBAT_PHYSICALDAMAGE then
doSendMagicEffect(getThingPos(cid), 135)
doSendAnimatedText(getThingPos(cid), "REFLECT", COLOR_GRASS)
setPlayerStorageValue(cid, 34, -1)
return false
end
--------------------------------------------
if hasMimicWall(cid) then
doSendMagicEffect(getThingPos(cid), 135)
local dmgText = ""..valor..""
local a = getPlayerStorageValue(cid, 878)
setPlayerStorageValue(cid, 878, a - valor)
local k = getPlayerStorageValue(cid, 878)
if k <= 0 then
local b = getTileItemById(getThingPos(cid), 11440)
if b.uid > 1 then doRemoveItem(b.uid, 1) end
local c = getTileItemById(getThingPos(cid), 11439)
if c.uid > 1 then doRemoveItem(c.uid, 1) end
dmgText = ""..a..""
doSendMagicEffect(getThingPos(cid), 3)
end
doSendAnimatedText(getThingPos(cid), dmgText, 215)
return false
end
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(cid) and getCreatureHealth(cid) <= (getCreatureMaxHealth(cid)*0.08) and not exhaustion.get(getCreatureMaster(cid), 88726) then
exhaustion.set(getCreatureMaster(cid), 88726, 11)
doSendMagicEffect(getThingPos(cid), 178)
end
if isSummon(attacker) then
if combat == COMBAT_PHYSICALDAMAGE then
doTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255)
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
doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor)
else
doCreatureAddHealth(cid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(cid)).race].cor)
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
local percent = 8 + math.ceil(valor / getCreatureMaxHealth(cid) * 100)
if getCreatureHealth(cid) == 0 or percent <= 0 then return false end
local runCond = false
if math.random(100) <= percent then
runCond = true
end
if runCond then
local condPos = getThingPos(cid)
local color = 215
local text = ""
local effect = 2
if damageCombat == FIREDAMAGE and not isBurning(cid) then
doAdvancedBurn(attacker, isPlayer(getCreatureMaster(attacker)) and getCreatureMaster(attacker) or 0, cid, getPokemonLevel(attacker) * 2, math.random(5, 12))
color = COLOR_FIRE2
text = "BURNING"
effect = 15
elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) and randomCond == checkCond then
doAdvancedPoison(attacker, isPlayer(getCreatureMaster(attacker)) and getCreatureMaster(attacker) or 0, cid, getPokemonLevel(attacker) * 2, math.random(4, 20))
color = COLOR_GRASS
text = "POISONED"
effect = 8
end
doSendMagicEffect(getThingPos(cid), effect)
addEvent(doSendAnimatedText, 5, condPos, text, color)
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, 174, 1)
doSendAnimatedText(getThingPos(cid), "Lost Heal", 144)
end
end
end
----------------------------------------PASSIVAS-----------------------------------------
------------------------------"Counter Helix" - "Giro Ball"------------------------------
-- [outfit normal] = {out = outfit girando, efeitos}
local OutFit = {
[366] = {out = 496, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --scyther
[912] = {out = 918, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Scizor
[1317] = {out = 849, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Shiny Scyther
[952] = {out = 1193, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Hitmontop
[909] = {out = 1194, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --pineco
[910] = {out = 1192, cima = 128, direita = 129, esquerda = 130, baixo = 131}, --Forretress
}
--acima do efeito 255 n aparece -pelo menos aki- entao fica esse por enquanto... ;x
--efeito vermelho => {cima = 261, direita = 263, esquerda = 264, baixo = 262}
if isSummon(cid) then
if OutFit[getCreatureOutfit(cid).lookType] then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local outfitt = OutFit[getCreatureOutfit(cid).lookType]
local function doWingAttack(cid, a, damage, min, max)
local damagearea = {}
local effectpos = getThingPosWithDebug(cid)
local effect = 255
if a == 0 then
effect = outfitt.cima
effectpos.x = effectpos.x + 1
effectpos.y = effectpos.y - 1
damagearea = wingdn
elseif a == 1 then
effect = outfitt.direita
effectpos.x = effectpos.x + 2
effectpos.y = effectpos.y + 1
damagearea = wingde
elseif a == 2 then
effect = outfitt.baixo
effectpos.x = effectpos.x + 1
effectpos.y = effectpos.y + 2
damagearea = wingds
elseif a == 3 then
effect = outfitt.esquerda
effectpos.x = effectpos.x - 1
effectpos.y = effectpos.y + 1
damagearea = wingdw
end
doSendMagicEffect(effectpos, effect)
if damage then
local look = getCreatureOutfit(cid).lookType
if look == 366 or look == 1317 then --scyther e shiny scyther
doAreaCombatHealth(cid, BUGDAMAGE, getThingPosWithDebug(cid), damagearea, -min, -max, CONST_ME_NONE)
elseif look == 952 then --hitmontop
doAreaCombatHealth(cid, FIGHTINGDAMAGE, getThingPosWithDebug(cid), damagearea, -min, -max, CONST_ME_NONE)
else --resto
doAreaCombatHealth(cid, STEELDAMAGE, getThingPosWithDebug(cid), damagearea, -min, -max, CONST_ME_NONE)
end
end
end
local dire = getCreatureLookDir(cid)
local cpos = getThingPosWithDebug(cid)
local min = getPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*20 --nao sei como funciona o sistema de dano...
setPlayerStorageValue(cid, 32623, 1) --proteçao
doSetCreatureOutfit(cid, {lookType = OutFit[getCreatureOutfit(cid).lookType].out}, -1)
local function doDance(cid, dir, damage, min, max)
if not isCreature(cid) then return true end
doCreatureSetLookDir(cid, dir)
doWingAttack(cid, dir, damage, min, max)
end
for times = 0, 2 do
for directions = 0, 3 do
addEvent(doDance, times * 300, cid, directions, true, min, max)
end
end
local function doChangeO(cid, dir, pos)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 32623, 0) --proteçao
doRemoveCondition(cid, CONDITION_OUTFIT)
if getThingPosWithDebug(cid).x == pos.x and getThingPosWithDebug(cid).y == pos.y then
doCreatureSetLookDir(cid, dir)
end
end
addEvent(doChangeO, 2 * 300 + 10, cid, dire, cpos)
end
end
end
-------------------------------------------Lava Counter / Electricity-------------------------------------
local Fire_Thunder = {"Magmar", "Shiny Magmar", "Electabuzz", "Shiny Electabuzz"}
--["Nome"] = {effeito, damage}
local eff = {
["Magmar"] = {15, FIREDAMAGE},
["Shiny Magmar"] = {15, FIREDAMAGE},
["Electabuzz"] = {207, ELECTRICDAMAGE},
["Shiny Electabuzz"] = {207, ELECTRICDAMAGE},
}
if isSummon(cid) then
local e = getCreatureMaster(cid)
if isInArray(Fire_Thunder, getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")) then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local min = getPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*20 --nao sei como funciona o sistema de dano...
local function sendFireEff(cid, dir, eff, damage)
if not isCreature(cid) then return true end
doAreaCombatHealth(cid, damage, getPosByDir(getThingPosWithDebug(cid), dir), 0, -min, -max, eff)
end
local function doSpinFire(cid)
if not isCreature(cid) then return true end
local t = {
[1] = SOUTHWEST,
[2] = SOUTH,
[3] = SOUTHEAST,
[4] = EAST,
[5] = NORTHEAST,
[6] = NORTH,
[7] = NORTHWEST,
[8] = WEST,
[9] = SOUTHWEST,
}
for a = 1, 17 do
if not t[a] then
addEvent(sendFireEff, a * 140, cid, t[a-8], eff[getCreatureName(cid)][1], eff[getCreatureName(cid)][2])
else
addEvent(sendFireEff, a * 140, cid, t[a], eff[getCreatureName(cid)][1], eff[getCreatureName(cid)][2])
end
end
setPlayerStorageValue(cid, 32623, 0) --proteçao
end
setPlayerStorageValue(cid, 32623, 1) --proteçao
doSpinFire(cid, false, cid)
end
end
end
---------------------------------------------Demon Kicker----------------------------------
--[outfit] = outfit chutando,
local hitmonlees = {
[371] = 652, --hitmonlee
[1300] = 652, --shiny hitmonlee
[877] = 878, --elite hitmonlee PxG
}
--DETALHE: shiny hitmonlee n tem a sprite dele chutando.. pelo menos eu n achei..
--entao deixei a sprite do hitmonlee normal atacando...
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if name == "Shiny Hitmonlee" or name == "Hitmonlee" then
if isCreature(getCreatureTarget(getCreatureMaster(cid))) then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if isSleeping(cid) then return true end
if getDistanceBetween(getThingPos(cid), getThingPos(getMasterTarget(cid))) > 1 then
return false
end
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local function doChangeHitmon(cid)
if not isCreature(cid) then return true end
setPlayerStorageValue(cid, 32623, 0) --proteçao
doRemoveCondition(cid, CONDITION_OUTFIT)
end
local min = getPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*20 --nao sei como funciona o sistema de dano...
setPlayerStorageValue(cid, 32623, 1) --proteçao
doSetCreatureOutfit(cid, {lookType = hitmonlees[getCreatureOutfit(cid).lookType]}, -1)
doTargetCombatHealth(cid, getMasterTarget(cid), FIGHTINGDAMAGE, -min, -max, 255)
addEvent(doChangeHitmon, 700, cid)
end
end
end
end
-------------------------------------------Demon Puncher-------------------------------------
local hitmonchans = {
["Hitmonchan"] = {
[0] = {out = 559, eff = 112, type = FIGHTINGDAMAGE}, --outfit normal
[1] = {out = 1075, eff = 35, type = FIREDAMAGE}, --outfit fogo
[2] = {out = 1077, eff = 48, type = ELECTRICDAMAGE}, --outfit raio
[3] = {out = 1078, eff = 43, type = ICEDAMAGE}, --outfit gelo
[4] = {out = 1076, eff = 140, type = GHOSTDAMAGE} --outfit ghost
},
["Shiny Hitmonchan"] = {
--aconcelho trocar a outfit do shiny hitmonchan pela do elite hitmonchan do PO...
[0] = {out = 837, eff = 112, type = FIGHTINGDAMAGE}, --outfit normal
[1] = {out = 1080, eff = 35, type = FIREDAMAGE}, --outfit fogo
[2] = {out = 1081, eff = 48, type = ELECTRICDAMAGE}, --outfit raio
[3] = {out = 1082, eff = 43, type = ICEDAMAGE}, --outfit gelo
[4] = {out = 1079, eff = 140, type = GHOSTDAMAGE} --outfit ghost
}
}
local monchanOUT = {837, 1080, 1081, 1082, 1079}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if name == "Shiny Hitmonchan" or name == "Hitmonchan" then
if isCreature(getCreatureTarget(getCreatureMaster(cid))) then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if isSleeping(cid) then return true end
if getDistanceBetween(getThingPos(cid), getThingPos(getMasterTarget(cid))) > 1 then
return false
end
if getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke") == "Shiny Hitmonchan" and not isInArray(monchanOUT, getCreatureOutfit(cid).lookType) then
return false --proteçao pro script n funcionar com o shiny monchan com outfit diferente da do elite...
end --script soh funciona com outfit do elite hirmonchan do PO...
local min = getPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*20 --nao sei como funciona o sistema de dano...
local hands = getItemAttribute(getPlayerSlotItem(e, 8).uid, "hands")
doSendDistanceShoot(getThingPos(cid), getThingPos(getMasterTarget(cid)), 39)
doTargetCombatHealth(cid, getMasterTarget(cid), hitmonchans[name][hands].type, -min, -max, 255)
local target = getThingPos(getMasterTarget(cid))
target.x = target.x + 1
if hands == 4 then
doSendMagicEffect(target, hitmonchans[name][hands].eff)
else
doSendMagicEffect(getThingPos(getMasterTarget(cid)), hitmonchans[name][hands].eff)
end
end
end
end
end
---------------------------------------Stunning Confusion------------------------------------------
local ducks = {"Golduck", "Psyduck", "Shiny Golduck", "Shiny Psyduck"}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if isInArray(ducks, name) then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
if getPlayerStorageValue(cid, 32623) == 1 then --proteçao pra n usar a spell 2x seguidas...
return false
end
local min = getPokemonLevel(cid)*5 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*10 --nao sei como funciona o sistema de dano...
local function damage(cid)
if isCreature(cid) then
setPlayerStorageValue(cid, 32623, 1) --proteçao
doAreaCombatHealth(cid, PSYCHICDAMAGE, getThingPosWithDebug(cid), confusion, -min, -max, 136)
end
end
for i = 1, 7 do
addEvent(damage, i*500, cid)
end
setPlayerStorageValue(cid, 32623, 0) --proteçao
end
end
end
-----------------------------------------Groundshock-----------------------------------
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if name == "Kangaskhan" or name == "Shiny Kangaskhan" then
if math.random(1, 100) <= 20 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
local min = getPokemonLevel(cid)*10 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*15 --nao sei como funciona o sistema de dano...
doAreaCombatHealth(cid, NORMALDAMAGE, getThingPosWithDebug(cid), eshock, -min, -max, 255)
local sps = getThingPosWithDebug(cid)
sps.x = sps.x+1
sps.y = sps.y+1
doSendMagicEffect(sps, 127)
end
end
end
--------------------------------------Electric Charge---------------------------------------------------
arr = {
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 2, 1, 1},
{1, 1, 1, 1, 1},
{1, 1, 1, 1, 1}
}
local charge = {"Pikachu", "Shiny Pikachu", "Raichu", "Shiny Raichu"}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
local target = 0
if isInArray(charge, name) then
if getPlayerStorageValue(cid, 253) >= 0 then
return true
end
local uid = checkAreaUid(getCreaturePosition(cid), arr, 1, 1)
for _,pid in pairs(uid) do
if isCreature(pid) then
if getCreatureTarget(pid) == cid then
target = target+1
end
end
end
if target == 0 then
return true
end
if target == (1 or 2) then
chance = 15 --15%
elseif target == (3 or 4) then
chance = 20 --20%
elseif target == (5 or 6) then
chance = 30 --30%
end
if math.random(1, 100) <= chance then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
setPlayerStorageValue(cid, 253, 1)
doSendAnimatedText(getThingPos(cid), "FOCUS", 144)
end
end
end
-------------------------------------Melody------------------------------------
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if name == "Wigglytuff" or name == "Shiny Wigglytuff" then
if math.random(1, 100) <= 10 then -- Porcentagem de chance pro poke usar a passiva... 10 = 10% +/-
doAreaCombatHealth(cid, SLEEP_POWDERDAMAGE, getThingPosWithDebug(cid), powders, -6, -10, 33)
end
end
end
------------------------------------- Dragon Fury / Fury ---------------------------------------
local DracoFury = {"Persian", "Shiny Persian", "Gyarados", "Shiny Gyarados", "Dratini", "Shiny Dratini", "Dragonair", "Shiny Dragonair", "Dragonite", "Shiny Dragonite"}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if isInArray(DracoFury, name) then
if math.random(1, 100) <= 10 then --Chance 4 = 4% Acho, Mais Fica A Sua Escolha
if getPlayerStorageValue(cid, 32623) == 1 then
return false
end
local function effect(params)
if isCreature(params.cid) then
doSendMagicEffect(getThingPos(params.cid), 12)
end
end
setPlayerStorageValue(cid, 32623, 1)
local function doReduceOffenseDefense(cid, qnt)
if not isCreature(cid) then return true end
local a = getDefense(cid)
local A = getOffense(cid)
if getCreatureName(cid) ~= "Persian" then
setPlayerStorageValue(cid, 1002, a - qnt)
end
setPlayerStorageValue(cid, 1001, A - qnt)
end
local function doDoubleOffenseDefense(cid)
if not isCreature(cid) then return true end
local a = getDefense(cid)
local A = getOffense(cid)
if getCreatureName(cid) ~= "Persian" then
setPlayerStorageValue(cid, 1002, a * 2)
end
setPlayerStorageValue(cid, 1001, A * 1.5)
local b = getDefense(cid)
local c = b - a
local B = getOffense(cid)
local C = B - A
if getCreatureName(cid) ~= "Persian" then
addEvent(doReduceOffenseDefense, 15 * 1500 + 40, cid, c)
end
addEvent(doReduceOffenseDefense, 15 * 1500 + 40, cid, C)
end
setPlayerStorageValue(cid, 32623, 0)
doDoubleOffenseDefense(cid)
for times = 0, 15 do
addEvent(effect, 1500 * times + 40, {cid = cid})
end
setPlayerStorageValue(cid, 32623, 1)
end
end
end
------------------------------------- Mega Drain ---------------------------------------
arr = {
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{0, 1, 2, 1, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 0, 0}
}
local mega = {"Oddish", "Gloom", "Vileplume", "Kabuto", "Kabutops", "Parasect", "Tangela", "Shiny Oddish",
"Shiny Gloom", "Shiny Vileplume", "Shiny Kabuto", "Shiny Kabutops", "Shiny Parasect", "Shiny Tangela"}
local min = getPokemonLevel(cid)*3 --nao sei como funciona o sistema de dano...
local max = getPokemonLevel(cid)*5 --nao sei como funciona o sistema de dano...
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if isInArray(mega, name) then
if math.random(1, 100) <= 10 then -- Porcentagem de chance pro poke usar a passiva... 20 = 20%
local uid = checkAreaUid(getThingPos(cid), arr, 1, 1)
for _,pid in pairs(uid) do
if isCreature(pid) then
if getCreatureTarget(pid) == cid then
local hp = getCreatureHealth(pid)
local drain = choose(min, max)
if hp-drain >= 1 then
doCreatureAddHealth(pid, -drain)
doCreatureAddHealth(cid, drain)
doSendAnimatedText(getThingPos(pid), "-"..drain.."", 144)
doSendAnimatedText(getThingPos(cid), "+"..drain.."", 32)
end
end
end
end
end
end
end
------------------------------------- Spores Reaction ---------------------------------------
arr = {
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{0, 1, 2, 1, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 0, 0}
}
local spores = {"Oddish", "Gloom", "Vileplume", "Shiny Oddish", "Shiny Gloom", "Shiny Vileplume"}
if isSummon(cid) then
local e = getCreatureMaster(cid)
local name = getItemAttribute(getPlayerSlotItem(e, 8).uid, "poke")
if isInArray(spores, name) then
if math.random(1, 100) <= 10 then -- Porcentagem de chance pro poke usar a passiva... 20 = 20% +/-
doAreaCombatHealth(cid, SLEEP_POWDERDAMAGE, getThingPosWithDebug(cid), powders, -2, -3, 27)
end
end
end
return false
end
Ajuda ae porfavorzão!
Editado Julho 12 por Kurobisu
info
Grupo: Campones
Registrado: 19/07/11
Posts: 7
Reputação: 0
Char no Tibia: itachi aktsuky

como eu coloco pokemon na dentro da chest pra ficar tipo um kit inicial
o player abre o baú pega o pokemon ??
To com um erro, os alguns pokes nao hitam nada dos players. Alguem pode me ajudar?
info
Grupo: Artesão
Registrado: 15/07/11
Posts: 141
Reputação: +14
Char no Tibia: Retribution

Galéra to com um problema aqui na spr, pareçe que a capacidade maxima déla é 65535, só que presiso de mais espaço que isso.
Alguem sabe como almenta a capacidade maxima déla ? se souber posta ae ou manda MSG.
Vlws ae.
info
Grupo: Infante
Registrado: 25/01/12
Posts: 1.6k
Reputação: +330

info
Grupo: Artesão
Registrado: 15/07/11
Posts: 141
Reputação: +14
Char no Tibia: Retribution

@shadow2012: não tenho certeza mais verifica se o nome do script do NPC ta como "diamond".
ja que o NPC em xml ta carregando o diamond.lua qualquer erro no nome póde causar em não carregar o arquivo.lua
@StyloMaldoso ja exclui um monte de sprites sem uso mais nao passa de 65535 a capacidade maxima, talvez presise alterar a programação do arquivo, coisa que não sou programador.
info
Grupo: Campones
Registrado: 16/05/12
Posts: 84
Reputação: +6

@shadow2012: não tenho certeza mais verifica se o nome do script do NPC ta como "diamond".
ja que o NPC em xml ta carregando o diamond.lua qualquer erro no nome póde causar em não carregar o arquivo.lua
@StyloMaldoso ja exclui um monte de sprites sem uso mais nao passa de 65535 a capacidade maxima, talvez presise alterar a programação do arquivo, coisa que não sou programador.
vlw cara tinha um nome scripts junto com o nome npc ta ai seu rep. amanha eu coloco pq ja atingiu o maximo de rep q ja dei hj
Outra duvida qual e o comando de banir player?
Editado Julho 12 por shadow2012
info
Grupo: Artesão
Registrado: 28/01/12
Posts: 125
Reputação: +73
Char no Tibia: Kurobisu

To com um erro, os alguns pokes nao hitam nada dos players. Alguem pode me ajudar?
Não deu para intender sua duvida, seria o pokémon ao atackar o player ou o Pokémon atackando o Pokémon ou vice versa?
Explica direito isto aí.![]()
@shadow2012: não tenho certeza mais verifica se o nome do script do NPC ta como "diamond".
ja que o NPC em xml ta carregando o diamond.lua qualquer erro no nome póde causar em não carregar o arquivo.lua
@StyloMaldoso ja exclui um monte de sprites sem uso mais nao passa de 65535 a capacidade maxima, talvez presise alterar a programação do arquivo, coisa que não sou programador.
vlw cara tinha um nome scripts junto com o nome npc ta ai seu rep. amanha eu coloco pq ja atingiu o maximo de rep q ja dei hj
Outra duvida qual e o comando de banir player?
/ban
Ou então faça o seguinte, diga: /commands
Daí abrirá uma janela dentro do game com uma lista completa dos comandos, pra entender é só olhar que ja da pra ter uma base...![]()
@shadow2012: não tenho certeza mais verifica se o nome do script do NPC ta como "diamond".
ja que o NPC em xml ta carregando o diamond.lua qualquer erro no nome póde causar em não carregar o arquivo.lua
@StyloMaldoso ja exclui um monte de sprites sem uso mais nao passa de 65535 a capacidade maxima, talvez presise alterar a programação do arquivo, coisa que não sou programador.
Jhonsy, seria mais o caso pois o limite realmente não tem como ser aumentado a capacidade maxima de Sprites é essa. A não ser que você faça com que fique 2 Tibia.spr dentro da pasta de seu Client, aí ja surgiria mais uma forma de capacidade...![]()
como eu coloco pokemon na dentro da chest pra ficar tipo um kit inicial
o player abre o baú pega o pokemon ??
Cara acho que ta meio difíciu responder a está pergunta, eu ando tentando por via Script's caso queira tentar aí posso até lhe ensinar mais fique claro que mesmo comigo não deu certo só que pelo visto daria certo se fosse em outro tipo de OT. Caso queira tentar no seu pra ver a sorte só falar aí que posto um Tutorial.
Também gostaria que alguém fora eu ajuda-se nesta dúvida nem eu consigo por para o player pegar o Pokémon Ínicial.![]()
info
Grupo: Artesão
Registrado: 15/07/11
Posts: 141
Reputação: +14
Char no Tibia: Retribution

@Kurobiso: Vlws ae, me deu uma idéia msm ^^, acho que consigo colocar 2 sprs, compilando as duas formando uma unica spr com o dobro de capacidaed, sei um jeito de fazer isso, Vlws ae ^^
@shadow2012: Esquenta com REP não, nen presisa dar, não ligo pra isso.
Editado Julho 12 por Jhonsy
info
Grupo: Campones
Registrado: 15/11/11
Posts: 40
Reputação: +1
Char no Tibia: [WPD] Killer-Raxx

Alguem Pode Me Ajuda Quando Tira o Pokemon Aparece essa mensagem ali aqueles negocio 12/0,0,0,0,0,0 o outro 12/0-0-0-0-0
Me Ajudem Por favor!! Rep ++
@shadow2012 cara, o erro é que o nome do .lua ta errado, você não deve colocar no xml assim: scripts/diamonds.lua e somente diamonds.lua
info
Grupo: Conde
Registrado: 06/08/11
Posts: 752
Reputação: +112
@digodigo2
Então é hoje que você vai continuar esperando kkk
@Kurobisu
Não é no arquivo da magia, deve ser configuration.lua ou spells.xml ou .xml do pokemon, good luck
E sobre o evolution, tem certeza que é esse que ta no serve? pelo que vi só tem 469 linhas, quanto o erro é na 595, posta o level system.lua então deve ser la
@StyloMaldoso
Olhando pra desse jeito, lembra do meu dash normal, era bem maior que isso ai ahsahusausa e no login? Nem se fala ahsuahsua