Ir para conteúdo

[Encerrado] [Pokemon] Dúvidas? - Pda


lucashgas

Posts Recomendados

/\ agora q tu flo.. eu refiz o self sim... soh q eu coloquei pra da dano com o hp maximo do poke q ta usando.. e n o hp atual ^^ vo ate corrigir aki...

 

o problema do duel em grupo eh q eu teria q editar o menu "invite to party"... ;x tpw.. criar outro menu desse soh q com "invite to duel" pra poder mandar a janela la pedindo qnts pessoas vao tar no duel e pah.. e setando a storage q coloquei no sistema de duel aki... ;x e como n sei fazer isso........ e porra de sistema... eu arrumo uma coisa aparece outra coisa dando erro kkkk ta tenso o/

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

/\ agora q tu flo.. eu refiz o self sim... soh q eu coloquei pra da dano com o hp maximo do poke q ta usando.. e n o hp atual ^^ vo ate corrigir aki...

 

o problema do duel em grupo eh q eu teria q editar o menu "invite to party"... ;x tpw.. criar outro menu desse soh q com "invite to duel" pra poder mandar a janela la pedindo qnts pessoas vao tar no duel e pah.. e setando a storage q coloquei no sistema de duel aki... ;x e como n sei fazer isso........ e porra de sistema... eu arrumo uma coisa aparece outra coisa dando erro kkkk ta tenso o/

 

@Slicer

 

Depois que termina de faze os negocio que tu ta fazendo vai postar pra all?

Link para o comentário
Compartilhar em outros sites

galera ta dando um erro ake qnd upa poke shiny

 

 

 

 

[22/04/2012 23:30:31] [Error - CreatureScript Interface]

[22/04/2012 23:30:31] data/creaturescripts/scripts/exp.lua:onStatsChange

[22/04/2012 23:30:31] Description:

[22/04/2012 23:30:31] data/creaturescripts/scripts/exp.lua:340: attempt to index field '?' (a nil value)

[22/04/2012 23:30:31] stack traceback:

[22/04/2012 23:30:31] data/creaturescripts/scripts/exp.lua:340: in function <data/creaturescripts/scripts/exp.lua:129>

 

 

script

 

 

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

 

 

 

e só mais uma duvida: como faço para por surf para premium? procurei procurei e nao axei

rep+

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

@All , @Slicer.

 

Começo do nada esse erro pode me ajudar?

 

 

[22/04/2012 19:19:28] [Error - CreatureScript Interface]
[22/04/2012 19:19:28] data/creaturescripts/scripts/login.lua:onLogin
[22/04/2012 19:19:28] Description:
[22/04/2012 19:19:28] data/creaturescripts/scripts/login.lua:204: attempt to compare number with string
[22/04/2012 19:19:28] stack traceback:
[22/04/2012 19:19:28]  data/creaturescripts/scripts/login.lua:204: in function <data/creaturescripts/scripts/login.lua:121>

[22/04/2012 19:19:28] [Error - CreatureScript Interface]
[22/04/2012 19:19:28] data/creaturescripts/scripts/goback.lua:onLogout
[22/04/2012 19:19:28] Description:
[22/04/2012 19:19:28] data/creaturescripts/scripts/goback.lua:24: attempt to compare number with string
[22/04/2012 19:19:28] stack traceback:
[22/04/2012 19:19:28]  data/creaturescripts/scripts/goback.lua:24: in function <data/creaturescripts/scripts/goback.lua:1>

 

Esse do login acontece qdo tem algum player com ball bugada e loga montado no poke, ou em fly, ou em surf...provavelmente antes desse bug no login aparece o nome de alguem logando e depois deslogando...pega o nome vai no player e altera o storage de surf, fly e ride de 1 pra -1...ai o cara vai conseguir logar...Eu poderia arrumar esse negocio pra verificar se o poke q o cara ta montado ta bugado antes de logar, mas melhor era fazer com q os pokes nao bugassem mais =s

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

@FlamesAdmin , Vai na PastadoOt/DATA/CreatureScript/EXP.LUA

E mude por esse >

 

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

 

 

Já esta adaptado para o Passive do Slincer :)

 

 

Algum Entereçado Por Uma Empresa , Séria.

 

Por Favor Veja Esse Topico , Clicando Aqui

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

Alguem pode mi ajuda os pokemons shinys que veio no meu sv ta tudo fraco parese que os normais ta mais forte que os shinys alguem pode manda um pasta dos pokemons shinys ja configurado tipo forte mais forte que os normais

 

dou rep++

Link para o comentário
Compartilhar em outros sites

@All

 

Ae galera alguem poderia mim ajudar por favor... preciso ajeitar o bau da minha fight tower.

 

Tipo, o Soulorishie mim passou o scripter , so nao sei o q tem q colocar na chest(bau) em actionid e uniqueid ... alguem pode mim ajudar pf nao consigo fazer o bau funcionar e dar 1 chan ou lee

 

Cara éra só por o id do bau na action.xml que eu te disse e mais nada ( esse script não é por action nem unique id ) é só por item id.

Que no caso é o do bau.

 

<action itemid="12251" event="script" value="lee.lua"/>

 

12251 É O ID DO BAU QUE TU VAI POR.Só olhar no map editor pra saber o id do teu bau ai pronto vai funcionar.

 

Dúvida: Alguém me ajuda na seguinte questão!

Eu queria saber como eu vejo os newtypes do pokemon? Porque quero saber o newtype do Capitao, e do Professor, etc.. Quando eu dou /newtype só aparece outfit de tibia ://

Grata.

Cara se tu ja tem os npcs ou pokemons no teu servidor basta tu abrir o script deles e olhar o looktype deles pronto mas se tu quer olhar pelo dat editor tu vai na outfit que tu quer e depois olha em itemtype da outfit

 

obs: não tem como usar esses looktypes no comando de god /newtype a não ser que ja tenha mas acho que nesse comando só tem mesmo os de tibia.

 

@all..

oq vcs acham.. atualmente no serv quando um poke toma 2 ou mais hits com efeito de miss, confusion, sleep e afins somase o tempo.. exemplo o efeito de miss aki eu fiz pra durar 9segs.. dai se um poke toma 2 mud shot por exemplo ele vai ficar com efeito de miss por 18segs... mas fiquei sabendo q parece q la no PXG n soma isso... se tu ja tiver sobre algum efeito se tomar outro hit de efeito n vai somar... 2 mud shots vai ficar com efeito de miss soh de 9seg... -lembrando q soh soma efeios iguais, e n vai somar tb soh efeitos iguais, se tomar efeito de miss vai ficar por 9seg, se tomar de confusion tb vai fica por 9seg-..

 

agora oq vcs acham melhor? somar os efeitos... ou n somar? ;x

Não somar não assim estilo pxg ta legal assim ficaria muito facil caçar de mudshot \o/

e no pvp tbm seria quem soltase primeiro o cd ja espancaria de cara o pokemon.

 

@all

 

alguem sabe como ativar a aura bosst por effect de raça?

 

ajudem REP+

Vudi vamo para de flodar eu li 3x a mesma coisa, se tu não leu no log do slicer que ele postou que vai fazer um npc de aura que nem o pxg então espera.

Próxima vez será reportado, pois aviso verbal ja foi dado por admins e membros.

Link para o comentário
Compartilhar em outros sites

Galera , eu criei uma forma do Promote, (POR VOCS)

eu adicionei em cada MOVES de agua para checar se o player é vocaçao 5 = Seavell.

se for , ele verifica o Clan Force = distance fighters. e adiciona o numero que estiver lá em 10% no atk.

 

Para conseguir a promote , voce precisa fazer Charizard Valey = Dragon Flute

Snow Mission = Crystal Flute + 2TD + Snow Outfit

70 Catchs = Pokemon Flute + 70HD

Star Flute = Kill 120 Starmie e 60 Staryu

 

depois voce vai em um NPC , e fala

Hi , Clan , Yes

 

ai ele duela com voce .

se voce ganhar , ele retira os 4 flutes e te adiciona a vocaçao + 3 stones do TIPO...

e se voce perder , nao acontece nada....

 

 

Se quizerem ajuda com esse script , do modo que eu citei a cima, so pedir. ou adicionar no MSN : tony.plyson@hotmail.com

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

Alguem sabe como fazer uma condiçao para que os npc da tower não duele com player que estejam usando poke tipo ghost e psychic? Porque fica facil derrotar o Chuck Norris comum "exemplo" Hauter ja que lutador nao acerta tipo ghost.

help

Chuck Norris

local focus = 0

local max_distance = 8

local talk_start = 0

local conv = 0

local fighting = false

local challenger = 0

local afk_limit_time = 30 -- seconds

local afk_time = 0 -- don't change

local battle_turn = 1 -- don't change

local challenger_turn = 0 -- don't change

local pokes = {Abra, Kadabra, Alakazam, Gastly, Gengar, Haunter, Hypno, Espeon} -- whit this pokeballs you CANT enter in the saffari.

for i = 1, #pokes do

if getPlayerItemCount(cid, pokeball) >= 1 then

npcHandler:say('Deposit your pokemons type ghostand psych on the DP!', cid)

return true

end

end

local pokemons = {

{name = "Machamp", level = 150, extralevel = 200, sex = SEX_MALE, nick = "", ball = "normal"},

}

 

 

local function doSummonGymPokemon(npc)

local this = npc

if not isCreature(this) then return true end

if #getCreatureSummons(this) >= 1 or focus == 0 then return true end

local it = pokemons[battle_turn]

doSummonMonster(this, it.name)

local summon = getCreatureSummons(this)[1]

local balleffect = pokeballs["normal"].effect

if it.ball and pokeballs[it.ball] then

balleffect = pokeballs[it.ball].effect

end

doSendMagicEffect(getThingPos(summon), balleffect)

setPlayerStorageValue(summon, 10000, balleffect)

setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name))

setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name)

doSetMonsterGym(summon, focus)

local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name

setWildPokemonLevel(summon, it.level, getPokemonStatus(it.name, (it.extralevel + it.level)), name, 1.5)

doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)

fighting = true

battle_turn = battle_turn + 1

end

 

local function doWinDuel(cid, npc)

if not isCreature(cid) then return true end

local this = npc

doPlayerSetStorageValue(cid, 344487, 1)

doPlayerAddItem(cid,11638,1)

doTeleportThing(cid, { x=1212, y=1324, z=7 })

doCreatureSay(npc, "You won the duel! Congratulations, choose your prize!", 1)

end

 

function onCreatureSay(cid, type, msg)

 

local msg = string.lower(msg)

 

if focus == cid then

talk_start = os.clock()

end

 

if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then

focus = cid

talk_start = os.clock()

conv = 1

selfSay("Hello "..getCreatureName(cid)..", my name is Chuck Norris and I'm Last's Fight Trainer. How may I help you?")

return true

end

 

if isDuelMsg(msg) and conv == 1 and focus == cid then

 

if getPlayerStorageValue(cid, 344481) ~= 1 or getPlayerStorageValue(cid, 344482) ~= 1 or getPlayerStorageValue(cid, 344483) ~= 1 or getPlayerStorageValue(cid, 344484) ~= 1 or getPlayerStorageValue(cid, 344485) ~= 1 or getPlayerStorageValue(cid, 344485) ~= 1 then

selfSay("You need defeated the first, second, third, fourth, fifth and sixth trainer.")

focus = 0

return true

end

if getPlayerStorageValue(cid, 344487) == 1 then

selfSay("You have defeated my, choose your prize!")

focus = 0

return true

end

 

if not hasPokemon(cid) then

selfSay("To battle agains't a gym leader you need pokemons.")

return true

end

 

selfSay("You are challenging me to a battle. It will be a "..#pokemons.." pokemon limit battle, let's start?")

conv = 2

 

return true

end

 

if isConfirmMsg(msg) and conv == 2 and focus == cid then

 

challenger = focus

setPlayerStorageValue(cid, 990, 1)

selfSay("Yea, let's fight!")

talk_start = os.clock()

addEvent(doSummonGymPokemon, 850, getThis())

conv = 3

 

return true

end

 

if isNegMsg(msg) and conv == 2 and focus == cid then

 

focus = 0

selfSay("It is better for you to refuse a battle against me!")

 

return true

end

 

if msgcontains(msg, 'bye') and focus == cid then

selfSay('Bye and do your best trainer!')

setPlayerStorageValue(focus, 990, -1)

focus = 0

return true

end

end

 

local afk_warning = false

local change = false

 

function onThink()

 

if focus == 0 then

selfTurn(2)

fighting = false

challenger = 0

challenger_turn = 0

battle_turn = 1

afk_time = 0

afk_warning = false

 

if #getCreatureSummons(getThis()) >= 1 then

setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0)

doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1]))

end

 

return true

else

 

if not isCreature(focus) then

focus = 0

return true

end

 

if fighting then

 

talk_start = os.clock()

 

if not isCreature(getCreatureTarget(getThis())) then

if #getCreatureSummons(challenger) >= 1 then

selfAttackCreature(getCreatureSummons(challenger)[1])

change = true

afk_time = 0

else

afk_time = afk_time + 0.5

if change then

change = false

challenger_turn = challenger_turn + 1

end

end

end

 

if afk_time > afk_limit_time then

setPlayerStorageValue(focus, 990, -1)

focus = 0

selfSay("I have waited too long, come back when you are ready!")

return true

end

 

if not afk_warning and afk_time > afk_limit_time / 2 then

selfSay("Where's your pokemon? Let's fight!")

afk_warning = true

end

 

 

if #getCreatureSummons(getThis()) == 0 then

if battle_turn > #pokemons then

addEvent(doWinDuel, 1000, focus, getThis())

setPlayerStorageValue(focus, 990, -1)

focus = 0

return true

end

addEvent(doSummonGymPokemon, 1000, getThis())

end

 

if not hasPokemon(challenger) or challenger_turn >= 7 or challenger_turn > #pokemons then

selfSay("You lost our duel! Maybe some other time you'll defeat me.")

setPlayerStorageValue(focus, 990, -1)

focus = 0

return true

end

 

end

 

local npcpos = getThingPos(getThis())

local focpos = getThingPos(focus)

 

if npcpos.z ~= focpos.z then

setPlayerStorageValue(focus, 990, -1)

focus = 0

selfSay("Bye then.")

return true

end

 

if (os.clock() - talk_start) > 30 then

selfSay("Good bye and keep training!")

setPlayerStorageValue(focus, 990, -1)

focus = 0

end

 

if getDistanceToCreature(focus) > max_distance then

setPlayerStorageValue(focus, 990, -1)

focus = 0

return true

end

 

local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))

selfTurn(dir)

end

return true

end

 

 

Slicer sabecomo resolver?

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

Galera , eu criei uma forma do Promote, (POR VOCS)

eu adicionei em cada MOVES de agua para checar se o player é vocaçao 5 = Seavell.

se for , ele verifica o Clan Force = distance fighters. e adiciona o numero que estiver lá em 10% no atk.

 

Para conseguir a promote , voce precisa fazer Charizard Valey = Dragon Flute

Snow Mission = Crystal Flute + 2TD + Snow Outfit

70 Catchs = Pokemon Flute + 70HD

Star Flute = Kill 120 Starmie e 60 Staryu

 

depois voce vai em um NPC , e fala

Hi , Clan , Yes

 

ai ele duela com voce .

se voce ganhar , ele retira os 4 flutes e te adiciona a vocaçao + 3 stones do TIPO...

e se voce perder , nao acontece nada....

 

 

Se quiz

 

erem ajuda com esse script , do modo que eu citei a cima, so pedir. ou adicionar no MSN : tony.plyson@hotmail.com

 

vc ja tem ele pronto?

 

@Slicer

Como Anda os sistemas?

Link para o comentário
Compartilhar em outros sites

vc ja tem ele pronto?

 

@Slicer

Como Anda os sistemas?

Se você quer mesmo saber adicione o tonynamoral no msn que ele passou e se você quer saber sobre o andamento dos system do slicer mande pm não fique criando posts "inuteis" pois essa sessão é para duvidas no servidor PDA.

Proxima vez sera reportado.

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

Quero Pedir Um Script (Não bem um script , mais uma modificaçao.)

Eu ja tentei de muitas formas , mais nenhuma deu certo.

 

 

O meu script é o seguinte.

a pessoa para pescar ela precisa de 1 isca.

tem 4 tipos de isca (Minhoca , Carne , PokeAnzol e MistyAnzol)

 

o de minhoca , Só puxa pokemon fracos

carne , ja puxa pokemon +-

pokeanzol , puxa um poke fortinho

e mistyanzol puxa pokemon forte

 

e se a pessoa nao tiver o certa isca , tem 1 menssagem , pedindo para ela ir comprar a isca :)

 

é isso ai

 

 

REP++ para quem ajudar

Link para o comentário
Compartilhar em outros sites

 

Alguem sabe arrumar esse erro

 

 

[23/04/2012 16:59:51] [Error - Action Interface]

[23/04/2012 16:59:51] data/actions/scripts/boost.lua:onUse

[23/04/2012 16:59:51] Description:

[23/04/2012 16:59:51] data/actions/scripts/boost.lua:489: attempt to get length of field '?' (a nil value)

[23/04/2012 16:59:51] stack traceback:

[23/04/2012 16:59:51] data/actions/scripts/boost.lua:489: in function <data/actions/scripts/boost.lua:455>

 

 

Boost.lua

 

local ballslot = 12355

local ballslot_run = 12352

local stoneslot = 12354

local stoneslot_run = 12353

local button = 12356

local button_run = 12357

function isRunning(id)

if isInArray({button_run, stoneslot_run, ballslot_run}, id) then

return true

end

return false

end

boost_stones = {

["Bulbasaur"] = {leaf},

["Ivysaur"] = {leaf},

["Venusaur"] = {leaf},

["Charmander"] = {fire},

["Charmeleon"] = {fire},

["Charizard"] = {fire},

["Squirtle"] = {water},

["Wartortle"] = {water},

["Blastoise"] = {water},

["Caterpie"] = {coccon},

["Metapod"] = {coccon},

["Butterfree"] = {coccon},

["Weedle"] = {coccon},

["Kakuna"] = {coccon},

["Beedrill"] = {coccon},

["Pidgey"] = {heart},

["Pidgeotto"] = {heart},

["Pidgeot"] = {heart},

["Rattata"] = {heart},

["Raticate"] = {heart},

["Spearow"] = {heart},

["Fearow"] = {heart},

["Ekans"] = {venom},

["Arbok"] = {venom},

["Pikachu"] = {thunder},

["Raichu"] = {thunder},

["Sandshrew"] = {earth},

["Sandslash"] = {earth},

["Nidoran Female"] = {venom},

["Nidorina"] = {venom},

["Nidoqueen"] = {venom, earth},

["Nidoran Male"] = {venom},

["Nidorino"] = {venom},

["Nidoking"] = {venom, earth},

["Clefairy"] = {heart},

["Clefable"] = {heart},

["Vulpix"] = {fire},

["Ninetales"] = {fire},

["Jigglypuff"] = {heart},

["Wigglytuff"] = {heart},

["Zubat"] = {venom},

["Golbat"] = {venom},

["Oddish"] = {leaf, venom},

["Gloom"] = {leaf, venom},

["Vileplume"] = {leaf, venom},

["Paras"] = {coccon, leaf},

["Parasect"] = {coccon, leaf},

["Venonat"] = {coccon, venom},

["Venomoth"] = {coccon, venom},

["Diglett"] = {earth},

["Dugtrio"] = {earth},

["Meowth"] = {heart},

["Persian"] = {heart},

["Psyduck"] = {water},

["Golduck"] = {water, enigma},

["Mankey"] = {punch},

["Primeape"] = {punch},

["Growlithe"] = {fire},

["Arcanine"] = {fire},

["Poliwag"] = {water},

["Poliwhirl"] = {water},

["Poliwrath"] = {water, punch},

["Abra"] = {enigma},

["Kadabra"] = {enigma},

["Alakazam"] = {enigma},

["Machop"] = {punch},

["Machoke"] = {punch},

["Machamp"] = {punch},

["Bellsprout"] = {leaf, venom},

["Weepinbell"] = {leaf, venom},

["Victreebel"] = {leaf, venom},

["Tentacool"] = {water, venom},

["Tentacruel"] = {water, venom},

["Geodude"] = {earth, rock},

["Graveler"] = {earth, rock},

["Golem"] = {earth, rock},

["Ponyta"] = {fire},

["Rapidash"] = {fire},

["Slowpoke"] = {water, enigma},

["Slowbro"] = {water, enigma},

["Magnemite"] = {thunder, metal},

["Magneton"] = {thunder, metal},

["Farfetch'd"] = {heart},

["Doduo"] = {heart},

["Dodrio"] = {heart},

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

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

["Grimer"] = {venom},

["Muk"] = {venom},

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

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

["Gastly"] = {dark},

["Haunter"] = {dark},

["Gengar"] = {dark},

["Onix"] = {rock, earth},

["Drowzee"] = {enigma},

["Hypno"] = {enigma},

["Krabby"] = {water},

["Kingler"] = {water},

["Voltorb"] = {thunder},

["Electrode"] = {thunder},

["Exeggcute"] = {enigma, leaf},

["Exeggutor"] = {enigma, leaf},

["Cubone"] = {earth},

["Marowak"] = {earth},

["Hitmonlee"] = {punch},

["Hitmonchan"] = {punch},

["Lickitung"] = {heart},

["Koffing"] = {venom},

["Weezing"] = {venom},

["Rhyhorn"] = {earth, rock},

["Rhydon"] = {earth, rock},

["Chansey"] = {heart},

["Tangela"] = {leaf},

["Kangaskhan"] = {heart},

["Horsea"] = {water},

["Seadra"] = {water},

["Goldeen"] = {water},

["Seaking"] = {water},

["Staryu"] = {water},

["Starmie"] = {water},

["Mr. Mime"] = {enigma},

["Scyther"] = {coccon},

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

["Electabuzz"] = {thunder},

["Magmar"] = {fire},

["Pinsir"] = {coccon},

["Tauros"] = {heart},

["Magikarp"] = {water},

["Gyarados"] = {water, crystal},

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

["Ditto"] = {heart},

["Eevee"] = {heart},

["Vaporeon"] = {water},

["Jolteon"] = {thunder},

["Flareon"] = {fire},

["Porygon"] = {heart, enigma},

["Omanyte"] = {rock, water},

["Omastar"] = {rock, water},

["Kabuto"] = {rock, water},

["Kabutops"] = {rock, water},

["Aerodactyl"] = {rock},

["Snorlax"] = {heart},

["Articuno"] = {ice},

["Zapdos"] = {thunder},

["Moltres"] = {fire},

["Dratini"] = {crystal},

["Dragonair"] = {crystal},

["Dragonite"] = {crystal},

["Mewtwo"] = {enigma},

["Mew"] = {enigma},

["Shiny Bulbasaur"] = {leaf},

["Shiny Ivysaur"] = {leaf},

["Shiny Venusaur"] = {leaf},

["Shiny Charmander"] = {fire},

["Shiny Charmeleon"] = {fire},

["Shiny Charizard"] = {fire},

["Shiny Squirtle"] = {water},

["Shiny Wartortle"] = {water},

["Shiny Blastoise"] = {water},

["Shiny Caterpie"] = {coccon},

["Shiny Metapod"] = {coccon},

["Shiny Butterfree"] = {coccon},

["Shiny Weedle"] = {coccon},

["Shiny Kakuna"] = {coccon},

["Shiny Beedrill"] = {coccon},

["Shiny Pidgey"] = {heart},

["Shiny Pidgeotto"] = {heart},

["Shiny Pidgeot"] = {heart},

["Shiny Rattata"] = {heart},

["Shiny Raticate"] = {heart},

["Shiny Spearow"] = {heart},

["Shiny Fearow"] = {heart},

["Shiny Ekans"] = {venom},

["Shiny Arbok"] = {venom},

["Shiny Pikachu"] = {thunder},

["Shiny Raichu"] = {thunder},

["Shiny Sandshrew"] = {earth},

["Shiny Sandslash"] = {earth},

["Shiny Nidoran Female"] = {venom},

["Shiny Nidorina"] = {venom},

["Shiny Nidoqueen"] = {venom, earth},

["Shiny Nidoran Male"] = {venom},

["Shiny Nidorino"] = {venom},

["Shiny Nidoking"] = {venom, earth},

["Shiny Clefairy"] = {heart},

["Shiny Clefable"] = {heart},

["Shiny Vulpix"] = {fire},

["Shiny Ninetales"] = {fire},

["Shiny Jigglypuff"] = {heart},

["Shiny Wigglytuff"] = {heart},

["Shiny Zubat"] = {venom},

["Shiny Golbat"] = {venom},

["Shiny Oddish"] = {leaf, venom},

["Shiny Gloom"] = {leaf, venom},

["Shiny Vileplume"] = {leaf, venom},

["Shiny Paras"] = {coccon, leaf},

["Shiny Parasect"] = {coccon, leaf},

["Shiny Venonat"] = {coccon, venom},

["Shiny Venomoth"] = {coccon, venom},

["Shiny Diglett"] = {earth},

["Shiny Dugtrio"] = {earth},

["Shiny Meowth"] = {heart},

["Shiny Persian"] = {heart},

["Shiny Psyduck"] = {water},

["Shiny Golduck"] = {water, enigma},

["Shiny Mankey"] = {punch},

["Shiny Primeape"] = {punch},

["Shiny Growlithe"] = {fire},

["Shiny Arcanine"] = {fire},

["Shiny Poliwag"] = {water},

["Shiny Poliwhirl"] = {water},

["Shiny Poliwrath"] = {water, punch},

["Shiny Abra"] = {enigma},

["Shiny Kadabra"] = {enigma},

["Shiny Alakazam"] = {enigma},

["Shiny Machop"] = {punch},

["Shiny Machoke"] = {punch},

["Shiny Machamp"] = {punch},

["Shiny Bellsprout"] = {leaf, venom},

["Shiny Weepinbell"] = {leaf, venom},

["Shiny Victreebel"] = {leaf, venom},

["Shiny Tentacool"] = {water, venom},

["Shiny Tentacruel"] = {water, venom},

["Shiny Geodude"] = {earth, rock},

["Shiny Graveler"] = {earth, rock},

["Shiny Golem"] = {earth, rock},

["Shiny Ponyta"] = {fire},

["Shiny Rapidash"] = {fire},

["Shiny Slowpoke"] = {water, enigma},

["Shiny Slowbro"] = {water, enigma},

["Shiny Magnemite"] = {thunder, metal},

["Shiny Magneton"] = {thunder, metal},

["Shiny Farfetch'd"] = {heart},

["Shiny Doduo"] = {heart},

["Shiny Dodrio"] = {heart},

["Shiny Seel"] = {water, ice},

["Shiny Dewgong"] = {water, ice},

["Shiny Grimer"] = {venom},

["Shiny Muk"] = {venom},

["Shiny Shellder"] = {water, ice},

["Shiny Cloyster"] = {water, ice},

["Shiny Gastly"] = {dark},

["Shiny Haunter"] = {dark},

["Shiny Gengar"] = {dark},

["Shiny Onix"] = {rock, earth},

["Shiny Drowzee"] = {enigma},

["Shiny Hypno"] = {enigma},

["Shiny Krabby"] = {water},

["Shiny Kingler"] = {water},

["Shiny Voltorb"] = {thunder},

["Shiny Electrode"] = {thunder},

["Shiny Exeggcute"] = {enigma, leaf},

["Shiny Exeggutor"] = {enigma, leaf},

["Shiny Cubone"] = {earth},

["Shiny Marowak"] = {earth},

["Shiny Hitmonlee"] = {punch},

["Shiny Hitmonchan"] = {punch},

["Shiny Lickitung"] = {heart},

["Shiny Koffing"] = {venom},

["Shiny Weezing"] = {venom},

["Shiny Rhyhorn"] = {earth, rock},

["Shiny Rhydon"] = {earth, rock},

["Shiny Chansey"] = {heart},

["Shiny Tangela"] = {leaf},

["Shiny Kangaskhan"] = {heart},

["Shiny Horsea"] = {water},

["Shiny Seadra"] = {water},

["Shiny Goldeen"] = {water},

["Shiny Seaking"] = {water},

["Shiny Staryu"] = {water},

["Shiny Starmie"] = {water},

["Shiny Mr. Mime"] = {enigma},

["Shiny Scyther"] = {coccon},

["Shiny Jynx"] = {enigma, ice},

["Shiny Electabuzz"] = {thunder},

["Shiny Magmar"] = {fire},

["Shiny Pinsir"] = {coccon},

["Shiny Tauros"] = {heart},

["Shiny Magikarp"] = {water},

["Shiny Gyarados"] = {water, crystal},

["Shiny Lapras"] = {water, ice},

["Shiny Ditto"] = {heart},

["Shiny Eevee"] = {heart},

["Shiny Vaporeon"] = {water},

["Shiny Jolteon"] = {thunder},

["Shiny Flareon"] = {fire},

["Shiny Porygon"] = {heart, enigma},

["Shiny Omanyte"] = {rock, water},

["Shiny Omastar"] = {rock, water},

["Shiny Kabuto"] = {rock, water},

["Shiny Kabutops"] = {rock, water},

["Shiny Aerodactyl"] = {rock},

["Shiny Snorlax"] = {heart},

["Shiny Articuno"] = {ice},

["Shiny Zapdos"] = {thunder},

["Shiny Moltres"] = {fire},

["Shiny Dratini"] = {crystal},

["Shiny Dragonair"] = {crystal},

["Shiny Dragonite"] = {crystal},

["Shiny Mewtwo"] = {enigma},

["Shiny Mew"] = {enigma},

["Chikorita"] = {leaf},

["Bayleef"] = {leaf},

["Meganium"] = {leaf},

["Cyndaquil"] = {fire},

["Quilava"] = {fire},

["Typhlosion"] = {fire},

["Totodile"] = {water},

["Croconaw"] = {water},

["Feraligatr"] = {water},

["Sentret"] = {heart},

["Furret"] = {heart},

["Hoothoot"] = {heart, enigma},

["Noctowl"] = {heart, enigma},

["Ledyba"] = {coccon},

["Ledian"] = {coccon},

["Spinarak"] = {coccon, venom},

["Ariados"] = {coccon, venom},

["Crobat"] = {venom},

["Chinchou"] = {water, thunder},

["Lanturn"] = {water, thunder},

["Pichu"] = {thunder},

["Cleffa"] = {heart},

["Iglybuff"] = {venom},

["Natu"] = {enigma},

["Xatu"] = {enigma},

["Mareep"] = {thunder},

["Flaaffy"] = {thunder},

["Ampharos"] = {thunder},

["Bellossom"] = {leaf},

["Marill"] = {water},

["Azulmarill"] = {water},

["Sudowoodo"] = {rock, earth},

["Politoed"] = {water, earth},

["Hoppip"] = {leaf},

["Skiploom"] = {leaf},

["Jumpluff"] = {leaf},

["Aipom"] = {heart},

["Sunkern"] = {leaf},

["Sunflora"] = {leaf},

["Yanma"] = {venom, coccon},

["Wooper"] = {water},

["Quagsire"] = {water, earth},

["Murkrow"] = {dark},

["Slowking"] = {water,enigma},

["Misdreavus"] = {dark},

["Wobbuffet"] = {enigma},

["Girafarig"] = {enigma},

["Pineco"] = {coccon},

["Forretress"] = {coccon},

["Gligar"] = {dark, heart},

["Steelix"] = {earth, rock},

["Snubbull"] = {heart},

["Granbull"] = {heart},

["Qwilfish"] = {water},

["Shuckle"] = {earth},

["Heracross"] = {coccon},

["Teddiursa"] = {heart},

["Ursaring"] = {heart, dark},

["Slugma"] = {fire},

["Magcargo"] = {fire},

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

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

["Corsola"] = {water},

["Remoraid"] = {water},

["Octillery"] = {water},

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

["Mantine"] = {water},

["Skarmory"] = {heart},

["Houndour"] = {fire, dark},

["Houndoom"] = {fire, dark},

["Kingdra"] = {water, crystal},

["Phanpy"] = {earth},

["Donphan"] = {earth},

["porygon2"] = {enigma},

["Stantler"] = {heart},

["Smeargle"] = {heart},

["Tyrogue"] = {punch},

["Hitmontop"] = {punch},

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

["Elekid"] = {thunder},

["Magby"] = {fire},

["Miltank"] = {heart},

["Blissey"] = {heart},

["Raikou"] = {thunder},

["Entei"] = {fire},

["Suicune"] = {water},

["Larvitar"] = {earth, dark},

["Pupitar"] = {earth, dark},

["Tyranitar"] = {earth, dark},

["Lugia"] = {enigma, water},

["Ho-oh"] = {enigma, fire},

["Celebi"] = {leaf, enigma},

["Scizor"] = {coccon, leaf}}

function doRestoreBoostMachine(cid, b_pos, p_pos, s_pos, msg, msg2)

doSendAnimatedText(b_pos, "DONE.", 215)

if isCreature(cid) then

doCreatureSetNoMove(cid, false)

doPlayerSendTextMessage(cid, 27, msg)

doPlayerSendTextMessage(cid, 27, msg2)

end

local ball_s = getTileItemById(p_pos, ballslot_run)

doTransformItem(ball_s.uid, ballslot)

local stne_s = getTileItemById(s_pos, stoneslot_run)

doTransformItem(stne_s.uid, stoneslot)

local butn_s = getTileItemById(b_pos, button_run)

doTransformItem(butn_s.uid, button)

end

local stones_required = { -- custo base de stones para boostar

[heart] = 1,

[leaf] = 1,

[water] = 1,

[venom] = 1,

[thunder] = 1,

[rock] = 1,

[punch] = 1,

[fire] = 1,

[coccon] = 1,

[crystal] = 1,

[dark] = 1,

[earth] = 1,

[enigma] = 1,

[ice] = 1,

}

local stone_increase = { -- a cada quantos boosts irá aumentar o custo de stones

[heart] = 300000000000000,

[leaf] = 300000000000000,

[water] = 300000000000000,

[venom] = 300000000000000,

[thunder] = 300000000000000,

[rock] = 300000000000000,

[punch] = 300000000000000,

[fire] = 300000000000000,

[coccon] = 300000000000000,

[crystal] = 300000000000000,

[dark] = 300000000000000,

[earth] = 300000000000000,

[enigma] = 300000000000000,

[ice] = 300000000000000,

}

function onUse(cid, item, topos, item2, frompos)

if isRunning(item.itemid) then

doPlayerSendCancel(cid, "Wait until boosting finishes.")

return true

end

if item.itemid == button then

local pbpos = topos

pbpos.x = pbpos.x + 1

local ball_slot = getTileItemById(pbpos, ballslot)

local myball = getContainerItem(ball_slot.uid, 0)

if myball.uid <= 0 or getItemWeight(myball.uid) == 0 then

doPlayerSendCancel(cid, "You need to put a pokeball in the ball slot.")

return true

end

local pokemon = getItemAttribute(myball.uid, "poke")

local boost = getItemAttribute(myball.uid, "boost") or 0

if boost >= 100 then

doPlayerSendCancel(cid, "Your pokemon is already at maximum boost.")

return true

end

local stnpos = pbpos

stnpos.x = stnpos.x - 2

local stone_slot = getTileItemById(stnpos, stoneslot)

local stone = getContainerItem(stone_slot.uid, 0)

if stone.uid <= 0 then

doPlayerSendCancel(cid, "You need to put a stone in the stone slot.")

return true

end

if not isStone(stone.itemid) then

doPlayerSendCancel(cid, "Please, put only stones in the stone slot.")

return true

end

if not isInArray(boost_stones[pokemon], stone.itemid) then

local cancelstr = "Sorry, you are not using the correct stone."

if #boost_stones[pokemon] > 1 then

local stonesused = ""

cancelstr = cancelstr.." This pokemon needs "

for su = 1, #boost_stones[pokemon] do

local n = doCorrectString(getItemNameById(boost_stones[pokemon][su]))

if su == #boost_stones[pokemon] then

stonesused = stonesused.." or "..getArticle(n).." "..n..""

elseif su == 1 then

stonesused = stonesused..""..getArticle(n).." "..n..""

else

stonesused = stonesused..", "..n..""

end

end

cancelstr = cancelstr..""..stonesused.." to be boosted."

else

cancelstr = cancelstr.." This pokemon needs a "..doCorrectString(getItemNameById(boost_stones[pokemon][1])).." to be boosted."

end

doPlayerSendCancel(cid, cancelstr)

return true

end

local removeStones = 0

local extraStones = math.floor(boost / stone_increase[stone.itemid])

local required_stones = stones_required[stone.itemid] + extraStones

local boosts = 0

for a = 0, getContainerSize(stone_slot.uid) - 1 do

local it = getContainerItem(stone_slot.uid, a)

if it.uid > 0 then

if not isStone(it.itemid) then

doPlayerSendCancel(cid, "Please, put only stones in the stone slot.")

return true

end

if it.itemid ~= stone.itemid then

doPlayerSendCancel(cid, "Please, put only one type of stone in the stone slot.")

return true

end

if required_stones > 0 then

required_stones = required_stones - 1

if required_stones <= 0 then

boosts = boosts + 1

removeStones = removeStones + stones_required[stone.itemid] + extraStones

if boost + boosts <= 49 then

extraStones = math.floor((boost + boosts) / stone_increase[stone.itemid])

required_stones = stones_required[stone.itemid] + extraStones

end

end

end

end

end

if required_stones > 0 and boosts == 0 then

doPlayerSendCancel(cid, "You need more stones to boost this pokemon.")

return true

end

for b = 1, removeStones do

doRemoveItem(getContainerItem(stone_slot.uid, 0).uid, 1)

end

local off = pokes[pokemon].offense * boost_rate * boosts

local def = pokes[pokemon].defense * boost_rate * boosts

local agi = pokes[pokemon].agility * boosts

local spatk = pokes[pokemon].specialattack * boost_rate * boosts

local vit = pokes[pokemon].vitality * boost_rate * boosts

doSetItemAttribute(myball.uid, "boost", boost + boosts)

doItemSetAttribute(myball.uid, "offense", getItemAttribute(myball.uid, "offense") + off)

doItemSetAttribute(myball.uid, "defense", getItemAttribute(myball.uid, "defense") + def)

doItemSetAttribute(myball.uid, "speed", getItemAttribute(myball.uid, "speed") + agi)

doItemSetAttribute(myball.uid, "specialattack", getItemAttribute(myball.uid, "specialattack") + spatk)

doItemSetAttribute(myball.uid, "vitality", getItemAttribute(myball.uid, "vitality") + vit)

local msg = "Your "..getPokeballName(myball.uid).." ["..getItemAttribute(myball.uid, "level").."] has been boosted!"

local msg2 = "• Boost: "..(boost + boosts).." (+"..boosts..") • Offense: +"..doMathDecimal(off).." • Defense: +"..doMathDecimal(def).." • Spc. Atk: +"..doMathDecimal(spatk).." • Agility: +"..doMathDecimal(agi).." • Vitality: +"..doMathDecimal(vit)..""

local downpos = getThingPos(cid)

downpos.y = downpos.y + 1

local mypos = getThingPos(cid)

doTeleportThing(cid, downpos, false)

doTeleportThing(cid, mypos, false)

doTransformItem(ball_slot.uid, ballslot_run)

doTransformItem(stone_slot.uid, stoneslot_run)

doTransformItem(item.uid, button_run)

doCreatureSetNoMove(cid, true)

doCreatureAddCondition(cid, boostcondition)

addEvent(doRestoreBoostMachine, 3000, cid, getThingPos(item.uid), getThingPos(ball_slot.uid), getThingPos(stone_slot.uid), msg, msg2)

return true

end

end

 

 

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

 

Alguem sabe arrumar esse erro

 

 

[23/04/2012 16:59:51] [Error - Action Interface]

[23/04/2012 16:59:51] data/actions/scripts/boost.lua:onUse

[23/04/2012 16:59:51] Description:

[23/04/2012 16:59:51] data/actions/scripts/boost.lua:489: attempt to get length of field '?' (a nil value)

[23/04/2012 16:59:51] stack traceback:

[23/04/2012 16:59:51] data/actions/scripts/boost.lua:489: in function <data/actions/scripts/boost.lua:455>

 

 

Boost.lua

 

local ballslot = 12355

local ballslot_run = 12352

local stoneslot = 12354

local stoneslot_run = 12353

local button = 12356

local button_run = 12357

function isRunning(id)

if isInArray({button_run, stoneslot_run, ballslot_run}, id) then

return true

end

return false

end

boost_stones = {

["Bulbasaur"] = {leaf},

["Ivysaur"] = {leaf},

["Venusaur"] = {leaf},

["Charmander"] = {fire},

["Charmeleon"] = {fire},

["Charizard"] = {fire},

["Squirtle"] = {water},

["Wartortle"] = {water},

["Blastoise"] = {water},

["Caterpie"] = {coccon},

["Metapod"] = {coccon},

["Butterfree"] = {coccon},

["Weedle"] = {coccon},

["Kakuna"] = {coccon},

["Beedrill"] = {coccon},

["Pidgey"] = {heart},

["Pidgeotto"] = {heart},

["Pidgeot"] = {heart},

["Rattata"] = {heart},

["Raticate"] = {heart},

["Spearow"] = {heart},

["Fearow"] = {heart},

["Ekans"] = {venom},

["Arbok"] = {venom},

["Pikachu"] = {thunder},

["Raichu"] = {thunder},

["Sandshrew"] = {earth},

["Sandslash"] = {earth},

["Nidoran Female"] = {venom},

["Nidorina"] = {venom},

["Nidoqueen"] = {venom, earth},

["Nidoran Male"] = {venom},

["Nidorino"] = {venom},

["Nidoking"] = {venom, earth},

["Clefairy"] = {heart},

["Clefable"] = {heart},

["Vulpix"] = {fire},

["Ninetales"] = {fire},

["Jigglypuff"] = {heart},

["Wigglytuff"] = {heart},

["Zubat"] = {venom},

["Golbat"] = {venom},

["Oddish"] = {leaf, venom},

["Gloom"] = {leaf, venom},

["Vileplume"] = {leaf, venom},

["Paras"] = {coccon, leaf},

["Parasect"] = {coccon, leaf},

["Venonat"] = {coccon, venom},

["Venomoth"] = {coccon, venom},

["Diglett"] = {earth},

["Dugtrio"] = {earth},

["Meowth"] = {heart},

["Persian"] = {heart},

["Psyduck"] = {water},

["Golduck"] = {water, enigma},

["Mankey"] = {punch},

["Primeape"] = {punch},

["Growlithe"] = {fire},

["Arcanine"] = {fire},

["Poliwag"] = {water},

["Poliwhirl"] = {water},

["Poliwrath"] = {water, punch},

["Abra"] = {enigma},

["Kadabra"] = {enigma},

["Alakazam"] = {enigma},

["Machop"] = {punch},

["Machoke"] = {punch},

["Machamp"] = {punch},

["Bellsprout"] = {leaf, venom},

["Weepinbell"] = {leaf, venom},

["Victreebel"] = {leaf, venom},

["Tentacool"] = {water, venom},

["Tentacruel"] = {water, venom},

["Geodude"] = {earth, rock},

["Graveler"] = {earth, rock},

["Golem"] = {earth, rock},

["Ponyta"] = {fire},

["Rapidash"] = {fire},

["Slowpoke"] = {water, enigma},

["Slowbro"] = {water, enigma},

["Magnemite"] = {thunder, metal},

["Magneton"] = {thunder, metal},

["Farfetch'd"] = {heart},

["Doduo"] = {heart},

["Dodrio"] = {heart},

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

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

["Grimer"] = {venom},

["Muk"] = {venom},

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

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

["Gastly"] = {dark},

["Haunter"] = {dark},

["Gengar"] = {dark},

["Onix"] = {rock, earth},

["Drowzee"] = {enigma},

["Hypno"] = {enigma},

["Krabby"] = {water},

["Kingler"] = {water},

["Voltorb"] = {thunder},

["Electrode"] = {thunder},

["Exeggcute"] = {enigma, leaf},

["Exeggutor"] = {enigma, leaf},

["Cubone"] = {earth},

["Marowak"] = {earth},

["Hitmonlee"] = {punch},

["Hitmonchan"] = {punch},

["Lickitung"] = {heart},

["Koffing"] = {venom},

["Weezing"] = {venom},

["Rhyhorn"] = {earth, rock},

["Rhydon"] = {earth, rock},

["Chansey"] = {heart},

["Tangela"] = {leaf},

["Kangaskhan"] = {heart},

["Horsea"] = {water},

["Seadra"] = {water},

["Goldeen"] = {water},

["Seaking"] = {water},

["Staryu"] = {water},

["Starmie"] = {water},

["Mr. Mime"] = {enigma},

["Scyther"] = {coccon},

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

["Electabuzz"] = {thunder},

["Magmar"] = {fire},

["Pinsir"] = {coccon},

["Tauros"] = {heart},

["Magikarp"] = {water},

["Gyarados"] = {water, crystal},

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

["Ditto"] = {heart},

["Eevee"] = {heart},

["Vaporeon"] = {water},

["Jolteon"] = {thunder},

["Flareon"] = {fire},

["Porygon"] = {heart, enigma},

["Omanyte"] = {rock, water},

["Omastar"] = {rock, water},

["Kabuto"] = {rock, water},

["Kabutops"] = {rock, water},

["Aerodactyl"] = {rock},

["Snorlax"] = {heart},

["Articuno"] = {ice},

["Zapdos"] = {thunder},

["Moltres"] = {fire},

["Dratini"] = {crystal},

["Dragonair"] = {crystal},

["Dragonite"] = {crystal},

["Mewtwo"] = {enigma},

["Mew"] = {enigma},

["Shiny Bulbasaur"] = {leaf},

["Shiny Ivysaur"] = {leaf},

["Shiny Venusaur"] = {leaf},

["Shiny Charmander"] = {fire},

["Shiny Charmeleon"] = {fire},

["Shiny Charizard"] = {fire},

["Shiny Squirtle"] = {water},

["Shiny Wartortle"] = {water},

["Shiny Blastoise"] = {water},

["Shiny Caterpie"] = {coccon},

["Shiny Metapod"] = {coccon},

["Shiny Butterfree"] = {coccon},

["Shiny Weedle"] = {coccon},

["Shiny Kakuna"] = {coccon},

["Shiny Beedrill"] = {coccon},

["Shiny Pidgey"] = {heart},

["Shiny Pidgeotto"] = {heart},

["Shiny Pidgeot"] = {heart},

["Shiny Rattata"] = {heart},

["Shiny Raticate"] = {heart},

["Shiny Spearow"] = {heart},

["Shiny Fearow"] = {heart},

["Shiny Ekans"] = {venom},

["Shiny Arbok"] = {venom},

["Shiny Pikachu"] = {thunder},

["Shiny Raichu"] = {thunder},

["Shiny Sandshrew"] = {earth},

["Shiny Sandslash"] = {earth},

["Shiny Nidoran Female"] = {venom},

["Shiny Nidorina"] = {venom},

["Shiny Nidoqueen"] = {venom, earth},

["Shiny Nidoran Male"] = {venom},

["Shiny Nidorino"] = {venom},

["Shiny Nidoking"] = {venom, earth},

["Shiny Clefairy"] = {heart},

["Shiny Clefable"] = {heart},

["Shiny Vulpix"] = {fire},

["Shiny Ninetales"] = {fire},

["Shiny Jigglypuff"] = {heart},

["Shiny Wigglytuff"] = {heart},

["Shiny Zubat"] = {venom},

["Shiny Golbat"] = {venom},

["Shiny Oddish"] = {leaf, venom},

["Shiny Gloom"] = {leaf, venom},

["Shiny Vileplume"] = {leaf, venom},

["Shiny Paras"] = {coccon, leaf},

["Shiny Parasect"] = {coccon, leaf},

["Shiny Venonat"] = {coccon, venom},

["Shiny Venomoth"] = {coccon, venom},

["Shiny Diglett"] = {earth},

["Shiny Dugtrio"] = {earth},

["Shiny Meowth"] = {heart},

["Shiny Persian"] = {heart},

["Shiny Psyduck"] = {water},

["Shiny Golduck"] = {water, enigma},

["Shiny Mankey"] = {punch},

["Shiny Primeape"] = {punch},

["Shiny Growlithe"] = {fire},

["Shiny Arcanine"] = {fire},

["Shiny Poliwag"] = {water},

["Shiny Poliwhirl"] = {water},

["Shiny Poliwrath"] = {water, punch},

["Shiny Abra"] = {enigma},

["Shiny Kadabra"] = {enigma},

["Shiny Alakazam"] = {enigma},

["Shiny Machop"] = {punch},

["Shiny Machoke"] = {punch},

["Shiny Machamp"] = {punch},

["Shiny Bellsprout"] = {leaf, venom},

["Shiny Weepinbell"] = {leaf, venom},

["Shiny Victreebel"] = {leaf, venom},

["Shiny Tentacool"] = {water, venom},

["Shiny Tentacruel"] = {water, venom},

["Shiny Geodude"] = {earth, rock},

["Shiny Graveler"] = {earth, rock},

["Shiny Golem"] = {earth, rock},

["Shiny Ponyta"] = {fire},

["Shiny Rapidash"] = {fire},

["Shiny Slowpoke"] = {water, enigma},

["Shiny Slowbro"] = {water, enigma},

["Shiny Magnemite"] = {thunder, metal},

["Shiny Magneton"] = {thunder, metal},

["Shiny Farfetch'd"] = {heart},

["Shiny Doduo"] = {heart},

["Shiny Dodrio"] = {heart},

["Shiny Seel"] = {water, ice},

["Shiny Dewgong"] = {water, ice},

["Shiny Grimer"] = {venom},

["Shiny Muk"] = {venom},

["Shiny Shellder"] = {water, ice},

["Shiny Cloyster"] = {water, ice},

["Shiny Gastly"] = {dark},

["Shiny Haunter"] = {dark},

["Shiny Gengar"] = {dark},

["Shiny Onix"] = {rock, earth},

["Shiny Drowzee"] = {enigma},

["Shiny Hypno"] = {enigma},

["Shiny Krabby"] = {water},

["Shiny Kingler"] = {water},

["Shiny Voltorb"] = {thunder},

["Shiny Electrode"] = {thunder},

["Shiny Exeggcute"] = {enigma, leaf},

["Shiny Exeggutor"] = {enigma, leaf},

["Shiny Cubone"] = {earth},

["Shiny Marowak"] = {earth},

["Shiny Hitmonlee"] = {punch},

["Shiny Hitmonchan"] = {punch},

["Shiny Lickitung"] = {heart},

["Shiny Koffing"] = {venom},

["Shiny Weezing"] = {venom},

["Shiny Rhyhorn"] = {earth, rock},

["Shiny Rhydon"] = {earth, rock},

["Shiny Chansey"] = {heart},

["Shiny Tangela"] = {leaf},

["Shiny Kangaskhan"] = {heart},

["Shiny Horsea"] = {water},

["Shiny Seadra"] = {water},

["Shiny Goldeen"] = {water},

["Shiny Seaking"] = {water},

["Shiny Staryu"] = {water},

["Shiny Starmie"] = {water},

["Shiny Mr. Mime"] = {enigma},

["Shiny Scyther"] = {coccon},

["Shiny Jynx"] = {enigma, ice},

["Shiny Electabuzz"] = {thunder},

["Shiny Magmar"] = {fire},

["Shiny Pinsir"] = {coccon},

["Shiny Tauros"] = {heart},

["Shiny Magikarp"] = {water},

["Shiny Gyarados"] = {water, crystal},

["Shiny Lapras"] = {water, ice},

["Shiny Ditto"] = {heart},

["Shiny Eevee"] = {heart},

["Shiny Vaporeon"] = {water},

["Shiny Jolteon"] = {thunder},

["Shiny Flareon"] = {fire},

["Shiny Porygon"] = {heart, enigma},

["Shiny Omanyte"] = {rock, water},

["Shiny Omastar"] = {rock, water},

["Shiny Kabuto"] = {rock, water},

["Shiny Kabutops"] = {rock, water},

["Shiny Aerodactyl"] = {rock},

["Shiny Snorlax"] = {heart},

["Shiny Articuno"] = {ice},

["Shiny Zapdos"] = {thunder},

["Shiny Moltres"] = {fire},

["Shiny Dratini"] = {crystal},

["Shiny Dragonair"] = {crystal},

["Shiny Dragonite"] = {crystal},

["Shiny Mewtwo"] = {enigma},

["Shiny Mew"] = {enigma},

["Chikorita"] = {leaf},

["Bayleef"] = {leaf},

["Meganium"] = {leaf},

["Cyndaquil"] = {fire},

["Quilava"] = {fire},

["Typhlosion"] = {fire},

["Totodile"] = {water},

["Croconaw"] = {water},

["Feraligatr"] = {water},

["Sentret"] = {heart},

["Furret"] = {heart},

["Hoothoot"] = {heart, enigma},

["Noctowl"] = {heart, enigma},

["Ledyba"] = {coccon},

["Ledian"] = {coccon},

["Spinarak"] = {coccon, venom},

["Ariados"] = {coccon, venom},

["Crobat"] = {venom},

["Chinchou"] = {water, thunder},

["Lanturn"] = {water, thunder},

["Pichu"] = {thunder},

["Cleffa"] = {heart},

["Iglybuff"] = {venom},

["Natu"] = {enigma},

["Xatu"] = {enigma},

["Mareep"] = {thunder},

["Flaaffy"] = {thunder},

["Ampharos"] = {thunder},

["Bellossom"] = {leaf},

["Marill"] = {water},

["Azulmarill"] = {water},

["Sudowoodo"] = {rock, earth},

["Politoed"] = {water, earth},

["Hoppip"] = {leaf},

["Skiploom"] = {leaf},

["Jumpluff"] = {leaf},

["Aipom"] = {heart},

["Sunkern"] = {leaf},

["Sunflora"] = {leaf},

["Yanma"] = {venom, coccon},

["Wooper"] = {water},

["Quagsire"] = {water, earth},

["Murkrow"] = {dark},

["Slowking"] = {water,enigma},

["Misdreavus"] = {dark},

["Wobbuffet"] = {enigma},

["Girafarig"] = {enigma},

["Pineco"] = {coccon},

["Forretress"] = {coccon},

["Gligar"] = {dark, heart},

["Steelix"] = {earth, rock},

["Snubbull"] = {heart},

["Granbull"] = {heart},

["Qwilfish"] = {water},

["Shuckle"] = {earth},

["Heracross"] = {coccon},

["Teddiursa"] = {heart},

["Ursaring"] = {heart, dark},

["Slugma"] = {fire},

["Magcargo"] = {fire},

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

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

["Corsola"] = {water},

["Remoraid"] = {water},

["Octillery"] = {water},

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

["Mantine"] = {water},

["Skarmory"] = {heart},

["Houndour"] = {fire, dark},

["Houndoom"] = {fire, dark},

["Kingdra"] = {water, crystal},

["Phanpy"] = {earth},

["Donphan"] = {earth},

["porygon2"] = {enigma},

["Stantler"] = {heart},

["Smeargle"] = {heart},

["Tyrogue"] = {punch},

["Hitmontop"] = {punch},

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

["Elekid"] = {thunder},

["Magby"] = {fire},

["Miltank"] = {heart},

["Blissey"] = {heart},

["Raikou"] = {thunder},

["Entei"] = {fire},

["Suicune"] = {water},

["Larvitar"] = {earth, dark},

["Pupitar"] = {earth, dark},

["Tyranitar"] = {earth, dark},

["Lugia"] = {enigma, water},

["Ho-oh"] = {enigma, fire},

["Celebi"] = {leaf, enigma},

["Scizor"] = {coccon, leaf}}

function doRestoreBoostMachine(cid, b_pos, p_pos, s_pos, msg, msg2)

doSendAnimatedText(b_pos, "DONE.", 215)

if isCreature(cid) then

doCreatureSetNoMove(cid, false)

doPlayerSendTextMessage(cid, 27, msg)

doPlayerSendTextMessage(cid, 27, msg2)

end

local ball_s = getTileItemById(p_pos, ballslot_run)

doTransformItem(ball_s.uid, ballslot)

local stne_s = getTileItemById(s_pos, stoneslot_run)

doTransformItem(stne_s.uid, stoneslot)

local butn_s = getTileItemById(b_pos, button_run)

doTransformItem(butn_s.uid, button)

end

local stones_required = { -- custo base de stones para boostar

[heart] = 1,

[leaf] = 1,

[water] = 1,

[venom] = 1,

[thunder] = 1,

[rock] = 1,

[punch] = 1,

[fire] = 1,

[coccon] = 1,

[crystal] = 1,

[dark] = 1,

[earth] = 1,

[enigma] = 1,

[ice] = 1,

}

local stone_increase = { -- a cada quantos boosts irá aumentar o custo de stones

[heart] = 300000000000000,

[leaf] = 300000000000000,

[water] = 300000000000000,

[venom] = 300000000000000,

[thunder] = 300000000000000,

[rock] = 300000000000000,

[punch] = 300000000000000,

[fire] = 300000000000000,

[coccon] = 300000000000000,

[crystal] = 300000000000000,

[dark] = 300000000000000,

[earth] = 300000000000000,

[enigma] = 300000000000000,

[ice] = 300000000000000,

}

function onUse(cid, item, topos, item2, frompos)

if isRunning(item.itemid) then

doPlayerSendCancel(cid, "Wait until boosting finishes.")

return true

end

if item.itemid == button then

local pbpos = topos

pbpos.x = pbpos.x + 1

local ball_slot = getTileItemById(pbpos, ballslot)

local myball = getContainerItem(ball_slot.uid, 0)

if myball.uid <= 0 or getItemWeight(myball.uid) == 0 then

doPlayerSendCancel(cid, "You need to put a pokeball in the ball slot.")

return true

end

local pokemon = getItemAttribute(myball.uid, "poke")

local boost = getItemAttribute(myball.uid, "boost") or 0

if boost >= 100 then

doPlayerSendCancel(cid, "Your pokemon is already at maximum boost.")

return true

end

local stnpos = pbpos

stnpos.x = stnpos.x - 2

local stone_slot = getTileItemById(stnpos, stoneslot)

local stone = getContainerItem(stone_slot.uid, 0)

if stone.uid <= 0 then

doPlayerSendCancel(cid, "You need to put a stone in the stone slot.")

return true

end

if not isStone(stone.itemid) then

doPlayerSendCancel(cid, "Please, put only stones in the stone slot.")

return true

end

if not isInArray(boost_stones[pokemon], stone.itemid) then

local cancelstr = "Sorry, you are not using the correct stone."

if #boost_stones[pokemon] > 1 then

local stonesused = ""

cancelstr = cancelstr.." This pokemon needs "

for su = 1, #boost_stones[pokemon] do

local n = doCorrectString(getItemNameById(boost_stones[pokemon][su]))

if su == #boost_stones[pokemon] then

stonesused = stonesused.." or "..getArticle(n).." "..n..""

elseif su == 1 then

stonesused = stonesused..""..getArticle(n).." "..n..""

else

stonesused = stonesused..", "..n..""

end

end

cancelstr = cancelstr..""..stonesused.." to be boosted."

else

cancelstr = cancelstr.." This pokemon needs a "..doCorrectString(getItemNameById(boost_stones[pokemon][1])).." to be boosted."

end

doPlayerSendCancel(cid, cancelstr)

return true

end

local removeStones = 0

local extraStones = math.floor(boost / stone_increase[stone.itemid])

local required_stones = stones_required[stone.itemid] + extraStones

local boosts = 0

for a = 0, getContainerSize(stone_slot.uid) - 1 do

local it = getContainerItem(stone_slot.uid, a)

if it.uid > 0 then

if not isStone(it.itemid) then

doPlayerSendCancel(cid, "Please, put only stones in the stone slot.")

return true

end

if it.itemid ~= stone.itemid then

doPlayerSendCancel(cid, "Please, put only one type of stone in the stone slot.")

return true

end

if required_stones > 0 then

required_stones = required_stones - 1

if required_stones <= 0 then

boosts = boosts + 1

removeStones = removeStones + stones_required[stone.itemid] + extraStones

if boost + boosts <= 49 then

extraStones = math.floor((boost + boosts) / stone_increase[stone.itemid])

required_stones = stones_required[stone.itemid] + extraStones

end

end

end

end

end

if required_stones > 0 and boosts == 0 then

doPlayerSendCancel(cid, "You need more stones to boost this pokemon.")

return true

end

for b = 1, removeStones do

doRemoveItem(getContainerItem(stone_slot.uid, 0).uid, 1)

end

local off = pokes[pokemon].offense * boost_rate * boosts

local def = pokes[pokemon].defense * boost_rate * boosts

local agi = pokes[pokemon].agility * boosts

local spatk = pokes[pokemon].specialattack * boost_rate * boosts

local vit = pokes[pokemon].vitality * boost_rate * boosts

doSetItemAttribute(myball.uid, "boost", boost + boosts)

doItemSetAttribute(myball.uid, "offense", getItemAttribute(myball.uid, "offense") + off)

doItemSetAttribute(myball.uid, "defense", getItemAttribute(myball.uid, "defense") + def)

doItemSetAttribute(myball.uid, "speed", getItemAttribute(myball.uid, "speed") + agi)

doItemSetAttribute(myball.uid, "specialattack", getItemAttribute(myball.uid, "specialattack") + spatk)

doItemSetAttribute(myball.uid, "vitality", getItemAttribute(myball.uid, "vitality") + vit)

local msg = "Your "..getPokeballName(myball.uid).." ["..getItemAttribute(myball.uid, "level").."] has been boosted!"

local msg2 = "• Boost: "..(boost + boosts).." (+"..boosts..") • Offense: +"..doMathDecimal(off).." • Defense: +"..doMathDecimal(def).." • Spc. Atk: +"..doMathDecimal(spatk).." • Agility: +"..doMathDecimal(agi).." • Vitality: +"..doMathDecimal(vit)..""

local downpos = getThingPos(cid)

downpos.y = downpos.y + 1

local mypos = getThingPos(cid)

doTeleportThing(cid, downpos, false)

doTeleportThing(cid, mypos, false)

doTransformItem(ball_slot.uid, ballslot_run)

doTransformItem(stone_slot.uid, stoneslot_run)

doTransformItem(item.uid, button_run)

doCreatureSetNoMove(cid, true)

doCreatureAddCondition(cid, boostcondition)

addEvent(doRestoreBoostMachine, 3000, cid, getThingPos(item.uid), getThingPos(ball_slot.uid), getThingPos(stone_slot.uid), msg, msg2)

return true

end

end

 

 

 

 

Respondendo sua pergunta

 

Primeiro , Vá na PastadoOT/Data/Actions/Actions.xml

add iso lá

<action itemid="12352-12357" event="script" value="boost.lua"/>

 

 

depois vá em PastadoOT/Data/Actions/Scripts

Procure seu Boost.lua , apague tudo dentro dele e coloque esse \/

 

 

local ballslot = 12355

local ballslot_run = 12352

 

local stoneslot = 12354

local stoneslot_run = 12353

 

local button = 12356

local button_run = 12357

 

function isRunning(id)

if isInArray({button_run, stoneslot_run, ballslot_run}, id) then

return true

end

return false

end

 

boost_stones = {

["Bulbasaur"] = {leaf},

["Ivysaur"] = {leaf},

["Venusaur"] = {leaf},

["Charmander"] = {fire},

["Charmeleon"] = {fire},

["Charizard"] = {fire},

["Squirtle"] = {water},

["Wartortle"] = {water},

["Blastoise"] = {water},

["Caterpie"] = {coccon},

["Metapod"] = {coccon},

["Butterfree"] = {coccon},

["Weedle"] = {coccon},

["Kakuna"] = {coccon},

["Beedrill"] = {coccon},

["Pidgey"] = {heart},

["Pidgeotto"] = {heart},

["Pidgeot"] = {heart},

["Rattata"] = {heart},

["Raticate"] = {heart},

["Spearow"] = {heart},

["Fearow"] = {heart},

["Ekans"] = {venom},

["Arbok"] = {venom},

["Pikachu"] = {thunder},

["Raichu"] = {thunder},

["Sandshrew"] = {earth},

["Sandslash"] = {earth},

["Nidoran Female"] = {venom},

["Nidorina"] = {venom},

["Nidoqueen"] = {venom, earth},

["Nidoran Male"] = {venom},

["Nidorino"] = {venom},

["Nidoking"] = {venom, earth},

["Clefairy"] = {heart},

["Clefable"] = {heart},

["Vulpix"] = {fire},

["Ninetales"] = {fire},

["Jigglypuff"] = {heart},

["Wigglytuff"] = {heart},

["Zubat"] = {venom},

["Golbat"] = {venom},

["Oddish"] = {leaf, venom},

["Gloom"] = {leaf, venom},

["Vileplume"] = {leaf, venom},

["Paras"] = {coccon, leaf},

["Parasect"] = {coccon, leaf},

["Venonat"] = {coccon, venom},

["Venomoth"] = {coccon, venom},

["Diglett"] = {earth},

["Dugtrio"] = {earth},

["Meowth"] = {heart},

["Persian"] = {heart},

["Psyduck"] = {water},

["Golduck"] = {water, enigma},

["Mankey"] = {punch},

["Primeape"] = {punch},

["Growlithe"] = {fire},

["Arcanine"] = {fire},

["Poliwag"] = {water},

["Poliwhirl"] = {water},

["Poliwrath"] = {water, punch},

["Abra"] = {enigma},

["Kadabra"] = {enigma},

["Alakazam"] = {enigma},

["Machop"] = {punch},

["Machoke"] = {punch},

["Machamp"] = {punch},

["Bellsprout"] = {leaf, venom},

["Weepinbell"] = {leaf, venom},

["Victreebel"] = {leaf, venom},

["Tentacool"] = {water, venom},

["Tentacruel"] = {water, venom},

["Geodude"] = {earth, rock},

["Graveler"] = {earth, rock},

["Golem"] = {earth, rock},

["Ponyta"] = {fire},

["Rapidash"] = {fire},

["Slowpoke"] = {water, enigma},

["Slowbro"] = {water, enigma},

["Magnemite"] = {thunder, metal},

["Magneton"] = {thunder, metal},

["Farfetch'd"] = {heart},

["Doduo"] = {heart},

["Dodrio"] = {heart},

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

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

["Grimer"] = {venom},

["Muk"] = {venom},

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

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

["Gastly"] = {dark},

["Haunter"] = {dark},

["Gengar"] = {dark},

["Onix"] = {rock, earth},

["Drowzee"] = {enigma},

["Hypno"] = {enigma},

["Krabby"] = {water},

["Kingler"] = {water},

["Voltorb"] = {thunder},

["Electrode"] = {thunder},

["Exeggcute"] = {enigma, leaf},

["Exeggutor"] = {enigma, leaf},

["Cubone"] = {earth},

["Marowak"] = {earth},

["Hitmonlee"] = {punch},

["Hitmonchan"] = {punch},

["Lickitung"] = {heart},

["Koffing"] = {venom},

["Weezing"] = {venom},

["Rhyhorn"] = {earth, rock},

["Rhydon"] = {earth, rock},

["Chansey"] = {heart},

["Tangela"] = {leaf},

["Kangaskhan"] = {heart},

["Horsea"] = {water},

["Seadra"] = {water},

["Goldeen"] = {water},

["Seaking"] = {water},

["Staryu"] = {water},

["Starmie"] = {water},

["Mr. Mime"] = {enigma},

["Scyther"] = {coccon},

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

["Electabuzz"] = {thunder},

["Magmar"] = {fire},

["Pinsir"] = {coccon},

["Tauros"] = {heart},

["Magikarp"] = {water},

["Gyarados"] = {water, crystal},

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

["Ditto"] = {heart},

["Eevee"] = {heart},

["Vaporeon"] = {water},

["Jolteon"] = {thunder},

["Flareon"] = {fire},

["Porygon"] = {heart, enigma},

["Omanyte"] = {rock, water},

["Omastar"] = {rock, water},

["Kabuto"] = {rock, water},

["Kabutops"] = {rock, water},

["Aerodactyl"] = {rock},

["Snorlax"] = {heart},

["Articuno"] = {ice},

["Zapdos"] = {thunder},

["Moltres"] = {fire},

["Dratini"] = {crystal},

["Dragonair"] = {crystal},

["Dragonite"] = {crystal},

["Mewtwo"] = {enigma},

["Mew"] = {enigma},

["Shiny Bulbasaur"] = {leaf},

["Shiny Ivysaur"] = {leaf},

["Shiny Venusaur"] = {leaf},

["Shiny Charmander"] = {fire},

["Shiny Charmeleon"] = {fire},

["Shiny Charizard"] = {fire},

["Shiny Squirtle"] = {water},

["Shiny Wartortle"] = {water},

["Shiny Blastoise"] = {water},

["Shiny Caterpie"] = {coccon},

["Shiny Metapod"] = {coccon},

["Shiny Butterfree"] = {coccon},

["Shiny Weedle"] = {coccon},

["Shiny Kakuna"] = {coccon},

["Shiny Beedrill"] = {coccon},

["Shiny Pidgey"] = {heart},

["Shiny Pidgeotto"] = {heart},

["Shiny Pidgeot"] = {heart},

["Shiny Rattata"] = {heart},

["Shiny Raticate"] = {heart},

["Shiny Spearow"] = {heart},

["Shiny Fearow"] = {heart},

["Shiny Ekans"] = {venom},

["Shiny Arbok"] = {venom},

["Shiny Pikachu"] = {thunder},

["Shiny Raichu"] = {thunder},

["Shiny Sandshrew"] = {earth},

["Shiny Sandslash"] = {earth},

["Shiny Nidoran Female"] = {venom},

["Shiny Nidorina"] = {venom},

["Shiny Nidoqueen"] = {venom, earth},

["Shiny Nidoran Male"] = {venom},

["Shiny Nidorino"] = {venom},

["Shiny Nidoking"] = {venom, earth},

["Shiny Clefairy"] = {heart},

["Shiny Clefable"] = {heart},

["Shiny Vulpix"] = {fire},

["Shiny Ninetales"] = {fire},

["Shiny Jigglypuff"] = {heart},

["Shiny Wigglytuff"] = {heart},

["Shiny Zubat"] = {venom},

["Shiny Golbat"] = {venom},

["Shiny Oddish"] = {leaf, venom},

["Shiny Gloom"] = {leaf, venom},

["Shiny Vileplume"] = {leaf, venom},

["Shiny Paras"] = {coccon, leaf},

["Shiny Parasect"] = {coccon, leaf},

["Shiny Venonat"] = {coccon, venom},

["Shiny Venomoth"] = {coccon, venom},

["Shiny Diglett"] = {earth},

["Shiny Dugtrio"] = {earth},

["Shiny Meowth"] = {heart},

["Shiny Persian"] = {heart},

["Shiny Psyduck"] = {water},

["Shiny Golduck"] = {water, enigma},

["Shiny Mankey"] = {punch},

["Shiny Primeape"] = {punch},

["Shiny Growlithe"] = {fire},

["Shiny Arcanine"] = {fire},

["Shiny Poliwag"] = {water},

["Shiny Poliwhirl"] = {water},

["Shiny Poliwrath"] = {water, punch},

["Shiny Abra"] = {enigma},

["Shiny Kadabra"] = {enigma},

["Shiny Alakazam"] = {enigma},

["Shiny Machop"] = {punch},

["Shiny Machoke"] = {punch},

["Shiny Machamp"] = {punch},

["Shiny Bellsprout"] = {leaf, venom},

["Shiny Weepinbell"] = {leaf, venom},

["Shiny Victreebel"] = {leaf, venom},

["Shiny Tentacool"] = {water, venom},

["Shiny Tentacruel"] = {water, venom},

["Shiny Geodude"] = {earth, rock},

["Shiny Graveler"] = {earth, rock},

["Shiny Golem"] = {earth, rock},

["Shiny Ponyta"] = {fire},

["Shiny Rapidash"] = {fire},

["Shiny Slowpoke"] = {water, enigma},

["Shiny Slowbro"] = {water, enigma},

["Shiny Magnemite"] = {thunder, metal},

["Shiny Magneton"] = {thunder, metal},

["Shiny Farfetch'd"] = {heart},

["Shiny Doduo"] = {heart},

["Shiny Dodrio"] = {heart},

["Shiny Seel"] = {water, ice},

["Shiny Dewgong"] = {water, ice},

["Shiny Grimer"] = {venom},

["Shiny Muk"] = {venom},

["Shiny Shellder"] = {water, ice},

["Shiny Cloyster"] = {water, ice},

["Shiny Gastly"] = {dark},

["Shiny Haunter"] = {dark},

["Shiny Gengar"] = {dark},

["Shiny Onix"] = {rock, earth},

["Shiny Drowzee"] = {enigma},

["Shiny Hypno"] = {enigma},

["Shiny Krabby"] = {water},

["Shiny Kingler"] = {water},

["Shiny Voltorb"] = {thunder},

["Shiny Electrode"] = {thunder},

["Shiny Exeggcute"] = {enigma, leaf},

["Shiny Exeggutor"] = {enigma, leaf},

["Shiny Cubone"] = {earth},

["Shiny Marowak"] = {earth},

["Shiny Hitmonlee"] = {punch},

["Shiny Hitmonchan"] = {punch},

["Shiny Lickitung"] = {heart},

["Shiny Koffing"] = {venom},

["Shiny Weezing"] = {venom},

["Shiny Rhyhorn"] = {earth, rock},

["Shiny Rhydon"] = {earth, rock},

["Shiny Chansey"] = {heart},

["Shiny Tangela"] = {leaf},

["Shiny Kangaskhan"] = {heart},

["Shiny Horsea"] = {water},

["Shiny Seadra"] = {water},

["Shiny Goldeen"] = {water},

["Shiny Seaking"] = {water},

["Shiny Staryu"] = {water},

["Shiny Starmie"] = {water},

["Shiny Mr. Mime"] = {enigma},

["Shiny Scyther"] = {coccon},

["Shiny Jynx"] = {enigma, ice},

["Shiny Electabuzz"] = {thunder},

["Shiny Magmar"] = {fire},

["Shiny Pinsir"] = {coccon},

["Shiny Tauros"] = {heart},

["Shiny Magikarp"] = {water},

["Shiny Gyarados"] = {water, crystal},

["Shiny Lapras"] = {water, ice},

["Shiny Ditto"] = {heart},

["Shiny Eevee"] = {heart},

["Shiny Vaporeon"] = {water},

["Shiny Jolteon"] = {thunder},

["Shiny Flareon"] = {fire},

["Shiny Porygon"] = {heart, enigma},

["Shiny Omanyte"] = {rock, water},

["Shiny Omastar"] = {rock, water},

["Shiny Kabuto"] = {rock, water},

["Shiny Kabutops"] = {rock, water},

["Shiny Aerodactyl"] = {rock},

["Shiny Snorlax"] = {heart},

["Shiny Dratini"] = {crystal},

["Shiny Dragonair"] = {crystal},

["Shiny Dragonite"] = {crystal},

["Chikorita"] = {leaf},

["Bayleef"] = {leaf},

["Meganium"] = {leaf},

["Cyndaquil"] = {fire},

["Quilava"] = {fire},

["Typhlosion"] = {fire},

["Totodile"] = {water},

["Croconaw"] = {water},

["Feraligatr"] = {water},

["Sentret"] = {heart},

["Furret"] = {heart},

["Hoothoot"] = {heart, enigma},

["Noctowl"] = {heart, enigma},

["Ledyba"] = {coccon},

["Ledian"] = {coccon},

["Spinarak"] = {coccon, venom},

["Ariados"] = {coccon, venom},

["Crobat"] = {venom},

["Chinchou"] = {water, thunder},

["Lanturn"] = {water, thunder},

["Pichu"] = {thunder},

["Cleffa"] = {heart},

["Iglybuff"] = {venom},

["Natu"] = {enigma},

["Xatu"] = {enigma},

["Mareep"] = {thunder},

["Flaaffy"] = {thunder},

["Ampharos"] = {thunder},

["Bellossom"] = {leaf},

["Marill"] = {water},

["Azulmarill"] = {water},

["Sudowoodo"] = {rock, earth},

["Politoed"] = {water, earth},

["Hoppip"] = {leaf},

["Skiploom"] = {leaf},

["Jumpluff"] = {leaf},

["Aipom"] = {heart},

["Sunkern"] = {leaf},

["Sunflora"] = {leaf},

["Yanma"] = {venom, coccon},

["Wooper"] = {water},

["Quagsire"] = {water, earth},

["Murkrow"] = {dark},

["Slowking"] = {water,enigma},

["Misdreavus"] = {dark},

["Wobbuffet"] = {enigma},

["Girafarig"] = {enigma},

["Pineco"] = {coccon},

["Forretress"] = {coccon},

["Gligar"] = {dark, heart},

["Steelix"] = {earth, rock},

["Snubbull"] = {heart},

["Granbull"] = {heart},

["Qwilfish"] = {water},

["Shuckle"] = {earth},

["Heracross"] = {coccon},

["Teddiursa"] = {heart},

["Ursaring"] = {heart, dark},

["Slugma"] = {fire},

["Magcargo"] = {fire},

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

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

["Corsola"] = {water},

["Remoraid"] = {water},

["Octillery"] = {water},

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

["Mantine"] = {water},

["Skarmory"] = {heart},

["Houndour"] = {fire, dark},

["Houndoom"] = {fire, dark},

["Kingdra"] = {water, crystal},

["Phanpy"] = {earth},

["Donphan"] = {earth},

["porygon2"] = {enigma},

["Stantler"] = {heart},

["Smeargle"] = {heart},

["Tyrogue"] = {punch},

["Hitmontop"] = {punch},

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

["Elekid"] = {thunder},

["Magby"] = {fire},

["Miltank"] = {heart},

["Blissey"] = {heart},

["Raikou"] = {thunder},

["Entei"] = {fire},

["Suicune"] = {water},

["Larvitar"] = {earth, dark},

["Pupitar"] = {earth, dark},

["Tyranitar"] = {earth, dark},

["Lugia"] = {enigma, water},

["Ho-oh"] = {enigma, fire},

["Celebi"] = {leaf, enigma}}

 

function doRestoreBoostMachine(cid, b_pos, p_pos, s_pos, msg, msg2)

 

doSendAnimatedText(b_pos, "DONE.", 215)

 

if isCreature(cid) then

doCreatureSetNoMove(cid, false)

doPlayerSendTextMessage(cid, 27, msg)

doPlayerSendTextMessage(cid, 27, msg2)

end

 

local ball_s = getTileItemById(p_pos, ballslot_run)

doTransformItem(ball_s.uid, ballslot)

 

local stne_s = getTileItemById(s_pos, stoneslot_run)

doTransformItem(stne_s.uid, stoneslot)

 

local butn_s = getTileItemById(b_pos, button_run)

doTransformItem(butn_s.uid, button)

 

end

 

local stones_required = { -- custo base de stones para boostar

[heart] = 1,

[leaf] = 1,

[water] = 1,

[venom] = 1,

[thunder] = 1,

[rock] = 1,

[punch] = 1,

[fire] = 1,

[coccon] = 1,

[crystal] = 1,

[dark] = 1,

[earth] = 1,

[enigma] = 1,

[ice] = 1,

}

 

local stone_increase = { -- a cada quantos boosts irá aumentar o custo de stones

[heart] = 3,

[leaf] = 3,

[water] = 3,

[venom] = 4,

[thunder] = 4,

[rock] = 3,

[punch] = 4,

[fire] = 3,

[coccon] = 2,

[crystal] = 15,

[dark] = 4,

[earth] = 4,

[enigma] = 4,

[ice] = 4,

}

 

function onUse(cid, item, topos, item2, frompos)

 

if isRunning(item.itemid) then

doPlayerSendCancel(cid, "Wait until boosting finishes.")

return true

end

 

if item.itemid == button then

 

local pbpos = topos

pbpos.x = pbpos.x + 1

local ball_slot = getTileItemById(pbpos, ballslot)

local myball = getContainerItem(ball_slot.uid, 0)

 

if myball.uid <= 0 or getItemWeight(myball.uid) == 0 then

doPlayerSendCancel(cid, "You need to put a pokeball in the ball slot.")

return true

end

 

local pokemon = getItemAttribute(myball.uid, "poke")

local boost = getItemAttribute(myball.uid, "boost") or 0

 

if boost >= 50 then

doPlayerSendCancel(cid, "Your pokemon is already at maximum boost.")

return true

end

 

local stnpos = pbpos

stnpos.x = stnpos.x - 2

local stone_slot = getTileItemById(stnpos, stoneslot)

 

local stone = getContainerItem(stone_slot.uid, 0)

 

if stone.uid <= 0 then

doPlayerSendCancel(cid, "You need to put a stone in the stone slot.")

return true

end

 

if not isStone(stone.itemid) then

doPlayerSendCancel(cid, "Please, put only stones in the stone slot.")

return true

end

 

if not isInArray(boost_stones[pokemon], stone.itemid) then

 

local cancelstr = "Sorry, you are not using the correct stone."

 

if #boost_stones[pokemon] > 1 then

local stonesused = ""

cancelstr = cancelstr.." This pokemon needs "

for su = 1, #boost_stones[pokemon] do

local n = doCorrectString(getItemNameById(boost_stones[pokemon][su]))

if su == #boost_stones[pokemon] then

stonesused = stonesused.." or "..getArticle(n).." "..n..""

elseif su == 1 then

stonesused = stonesused..""..getArticle(n).." "..n..""

else

stonesused = stonesused..", "..n..""

end

end

cancelstr = cancelstr..""..stonesused.." to be boosted."

else

cancelstr = cancelstr.." This pokemon needs a "..doCorrectString(getItemNameById(boost_stones[pokemon][1])).." to be boosted."

end

 

doPlayerSendCancel(cid, cancelstr)

 

return true

end

 

local removeStones = 0

local extraStones = math.floor(boost / stone_increase[stone.itemid])

local required_stones = stones_required[stone.itemid] + extraStones

 

local boosts = 0

 

for a = 0, getContainerSize(stone_slot.uid) - 1 do

 

local it = getContainerItem(stone_slot.uid, a)

 

if it.uid > 0 then

 

if not isStone(it.itemid) then

doPlayerSendCancel(cid, "Please, put only stones in the stone slot.")

return true

end

 

if it.itemid ~= stone.itemid then

doPlayerSendCancel(cid, "Please, put only one type of stone in the stone slot.")

return true

end

 

if required_stones > 0 then

required_stones = required_stones - 1

 

if required_stones <= 0 then

boosts = boosts + 1

removeStones = removeStones + stones_required[stone.itemid] + extraStones

if boost + boosts <= 49 then

extraStones = math.floor((boost + boosts) / stone_increase[stone.itemid])

required_stones = stones_required[stone.itemid] + extraStones

end

end

end

 

end

 

end

 

if required_stones > 0 and boosts == 0 then

doPlayerSendCancel(cid, "You need more stones to boost this pokemon.")

return true

end

 

for b = 1, removeStones do

doRemoveItem(getContainerItem(stone_slot.uid, 0).uid, 1)

end

 

local off = pokes[pokemon].offense * boost_rate * boosts

local def = pokes[pokemon].defense * boost_rate * boosts

local agi = pokes[pokemon].agility * boosts

local spatk = pokes[pokemon].specialattack * boost_rate * boosts

local vit = pokes[pokemon].vitality * boost_rate * boosts

 

doSetItemAttribute(myball.uid, "boost", boost + boosts)

doItemSetAttribute(myball.uid, "offense", getItemAttribute(myball.uid, "offense") + off)

doItemSetAttribute(myball.uid, "defense", getItemAttribute(myball.uid, "defense") + def)

doItemSetAttribute(myball.uid, "speed", getItemAttribute(myball.uid, "speed") + agi)

doItemSetAttribute(myball.uid, "specialattack", getItemAttribute(myball.uid, "specialattack") + spatk)

doItemSetAttribute(myball.uid, "vitality", getItemAttribute(myball.uid, "vitality") + vit)

 

local msg = "Your "..getPokeballName(myball.uid).." ["..getItemAttribute(myball.uid, "level").."] has been boosted!"

local msg2 = "• Boost: "..(boost + boosts).." (+"..boosts..") • Offense: +"..doMathDecimal(off).." • Defense: +"..doMathDecimal(def).." • Spc. Atk: +"..doMathDecimal(spatk).." • Agility: +"..doMathDecimal(agi).." • Vitality: +"..doMathDecimal(vit)..""

 

local downpos = getThingPos(cid)

downpos.y = downpos.y + 1

 

local mypos = getThingPos(cid)

 

doTeleportThing(cid, downpos, false)

doTeleportThing(cid, mypos, false)

 

doTransformItem(ball_slot.uid, ballslot_run)

doTransformItem(stone_slot.uid, stoneslot_run)

doTransformItem(item.uid, button_run)

 

doCreatureSetNoMove(cid, true)

doCreatureAddCondition(cid, boostcondition)

 

addEvent(doRestoreBoostMachine, 3000, cid, getThingPos(item.uid), getThingPos(ball_slot.uid), getThingPos(stone_slot.uid), msg, msg2)

 

return true

end

end

 

 

 

 

 

Ajudei ?? Então . REP+

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

Estou pensando aqui... Fiz o systema de icones igual pxg esta quase perfeito so tem um poblema, como ele troca o "id" do item por outro não tem como usar-lo com o goback... ai fica o poblema pois saum varios mais varios ids e adicionar tudo seria um poblema... tava pensando em um jeito de fazer funcionar sem precisar add varias coisas nos script... pensei em modificar-lo mais axo que vai precisa mexer em praticamente qse todos os script... seria um poblema tb a solução atual que eu axei é ao mover a ball para o slot voltar a virar pokeball...

 

Aceito sugestões para esse pobleminha ^^

 

Obrigado todos

 

PS:Não irei disponibilizar esse script pois ele estara no server que eu estou criando para voces...

 

@Tonynamoral

Poste seu script de fishing que irei modificar para voce.

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

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