Seguinte galera, há um tempo atrás 1 dia acho( ) postei um tópico(http://www.xtibia.co...kables-pokemon/)pedindo ajuda pra transformar as stones do meu server em agrupáveis, as respostas foram inúteis, mas eu consegui descobrir sozinho como fazia, enfim... agora venho pedir outra coisa.
Após transformá-las em agrupáveis eu criei um problema nos boosts, problema não, apenas continua a mesma coisa, quando clocamos 100 stones em um mesmo slot da caixa de boosts, ele boosta como se só existisse 1 stone na caixa.
Ex: Coloquei 100 stones na caixa de boosts. Meu pokémon precisa de dois stones pra alcançar um boost, se eu coloco 100 no mesmo espaço ele diz que não tenho stones suficientes, porém se eu as separo em vários slots ele as lê normalmente '-'
Alguém se habilita?
segue o arquivo .lua dos boosts
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},
["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},
["Mew"] = {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] = 0,
[leaf] = 0,
[water] =0,
[venom] = 0,
[thunder] = 0,
[rock] = 0,
[punch] =0 ,
[fire] = 0,
[coccon] = 0,
[crystal] = 0,
[dark] = 0,
[earth] = 0,
[enigma] = 0,
[ice] = 0,
}
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 >= 200 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 <= 200 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, 300, cid, getThingPos(item.uid), getThingPos(ball_slot.uid),
getThingPos(stone_slot.uid), msg, msg2)
return true
end
end