Ir para conteúdo
  • 0

[Resolvido] Bug em item


Neymar Jr

Pergunta

Olá tem uma boost stone em meu servidor que está com um bug e espero que vocês me ajudem



eu tenho uma stone que uso no pokémon , ela está funcionando normal o único problema é que não importa onde eu der use no item , tipo se eu clicar no item e der use no chão o efeito vai funcionar no pokemon que estiver no slot.



Mais eu queria que o efeito da stone só funcionasse se eu usasse o item na ball e não como está que eu posso usar em qualquer coisa que o efeito funciona no pokemon que está no slot principal



script da boost stone



 

function onUse(cid, item, fromPosition, item2, toPosition)
local myball = getPlayerSlotItem(cid, 8)
local boost = getItemAttribute(myball.uid, "boost") or 0
local boosts = 10

if boost == 70 then
doPlayerSendCancel(cid, "Seu pokemon está no lvl máximo.")
return true
end

if #getCreatureSummons(cid) >= 1 then
return doPlayerSendCancel(cid, "Retorne seu pokemon para poder usar a boost stone.")
end

if getPlayerSlotItem(cid, 8).uid <= 0 then
return doPlayerSendCancel(cid, "Seu pokemon não está no slot principal.")
end


boosts = boosts
local pokemon = getItemAttribute(myball.uid, "poke")
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
newBoost = boost + boosts

if newBoost > 70 then
newBoost = 70
end

doSetItemAttribute(myball.uid, "boost", newBoost)
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)
doRemoveItem(item.uid, 1)
doSendMagicEffect(getThingPos(item2.uid), 103)
doPlayerSendTextMessage(cid, 27, "Parabéns, o seu "..pokemon..", foi bostado +"..boosts..".")
doPlayerSendTextMessage(cid, 27, "Agora, o seu "..pokemon.." está bostado +"..newBoost..".")
doSendAnimatedText(getThingPos(item2.uid), "+"..boosts.." Boost", 215)
return true
end



rep+ para quem me ajudar


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

8 respostass a esta questão

Posts Recomendados

  • 0

@@Neymar Jr, tentei uma solução rápida para ajudá-lo, vejamos se da certo (nunca mexi em servidores derivados):

 

 

function onUse(cid, item, topos, item2, frompos)
    local ids = {1111, 2222, 3333} -- lista de ids que pode usar a boost stone
    local myball = getPlayerSlotItem(cid, 8)
    local boost = getItemAttribute(myball.uid, "boost") or 0
    local boosts = 10

    if boost == 70 then
        return doPlayerSendCancel(cid, "Seu pokemon esta no lvl maximo.")
    end
 
    if #getCreatureSummons(cid) >= 1 then
        return doPlayerSendCancel(cid, "Retorne seu pokemon para poder usar a boost stone.")
    end

    if not isInArray(ids, myball) then
        return doPlayerSendCancel(cid, "Voce nao pode usar a boost stone nesse item.")
    end

    boosts = boosts
    local pokemon = getItemAttribute(myball.uid, "poke")
    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
    newBoost = boost + boosts
    
    if newBoost > 70 then
        newBoost = 70
    end
    
    doSetItemAttribute(myball.uid, "boost", newBoost)
    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)
    doRemoveItem(item.uid, 1)
    doSendMagicEffect(getThingPos(item2.uid), 103)
    doPlayerSendTextMessage(cid, 27, "Parabéns, o seu "..pokemon..", foi bostado +"..boosts..".")
    doPlayerSendTextMessage(cid, 27, "Agora, o seu "..pokemon.." está bostado +"..newBoost..".")
    doSendAnimatedText(getThingPos(item2.uid), "+"..boosts.." Boost", 215)
    return true
end

 

 

local ids = {1111, 2222, 3333} -- lista de ids que pode usar a boost stone (basta colocar os ids ou apenas o id do item que pode usar a boost)

 

Tópico movido para área correta.

Link para o comentário
Compartilhar em outros sites

  • 0

Não funcionou , eu coloco o id do item e mesmo assim quando vou usar manda a mensagem de erro

não teria alguma função que desse apenas pra reconhecer o pokemon que está no slot principal?


olha um script de outra stone ai que pode ajudar

local evo = {
["Charizard"] = {"Shiny Charizard", 1},
["Venusaur"] = {"Shiny Venusaur", 1},
["Blastoise"] = {"Shiny Blastoise", 1},
["Butterfree"] = {"Shiny Butterfree", 1},
["Beedrill"] = {"Shiny Beedrill", 1},
["Pidgeot"] = {"Shiny Pidgeot", 1},
["Raticate"] = {"Shiny Raticate", 1},
["Fearow"] = {"Shiny Fearow", 1},
["Pikachu"] = {"Shiny Pikachu", 1},
["Raichu"] = {"Shiny Raichu", 1},
["Nidoking"] = {"Shiny Nidoking", 1},
["Ninetales"] = {"Shiny Ninetales", 1},
["Golbat"] = {"Shiny Golbat", 1},
["Vileplume"] = {"Shiny Vileplume", 1},
["Parasect"] = {"Shiny Parasect", 1},
["Venomoth"] = {"Shiny Venomoth", 1},
["Arcanine"] = {"Shiny Arcanine", 1},
["Alakazam"] = {"Shiny Alakazam", 1},
["Tentacruel"] = {"Shiny Tentacruel", 1},
["Golem"] = {"Shiny Golem", 1},
["Farfetch'd"] = {"Shiny Farfetch'd", 1},
["Muk"] = {"Shiny Muk", 1},
["Gengar"] = {"Shiny Gengar", 1},
["Onix"] = {"Shiny Onix", 1},
["Hypno"] = {"Shiny Hypno", 1},
["Kingler"] = {"Shiny Kingler", 1},
["Electrode"] = {"Shiny Electrode", 1},
["Cubone"] = {"Shiny Cubone", 1},
["Marowak"] = {"Shiny Marowak", 1},
["Hitmonlee"] = {"Shiny Hitmonlee", 1},
["Hitmonchan"] = {"Shiny Hitmonchan", 1},
["Hitmontop"] = {"Shiny Hitmontop", 1},
["Scyther"] = {"Shiny Scyther", 1},
["Jynx"] = {"Shiny Jynx", 1},
["Electabuzz"] = {"Shiny Electabuzz", 1},
["Gyarados"] = {"Shiny Gyarados", 1},
["Vaporeon"] = {"Shiny Vaporeon", 1},
["Jolteon"] = {"Shiny Jolteon", 1},
["Flareon"] = {"Shiny Flareon", 1},
["Snorlax"] = {"Shiny Snorlax", 1},
["Dragonite"] = {"Shiny Dragonite", 1},
["Mr. Mime"] = {"Shiny Mr. Mime", 1},
["Rhydon"] = {"Shiny Rhydon", 1},
["Magneton"] = {"Shiny Magneton", 1},
["Espeon"] = {"Shiny Espeon", 1},
["Umbreon"] = {"Shiny Umbreon", 1},
["Meganium"] = {"Shiny Meganium", 1},
["Feraligatr"] = {"Shiny Feraligatr", 1},
["Typhlosion"] = {"Shiny Typhlosion", 1},
["Aerodactyl"] = {"Shiny Aerodactyl", 1},
["Rhyperior"] = {"Shiny Rhyperior", 1},
["Larvitar"] = {"Shiny Larvitar", 1},
["Pupitar"] = {"Shiny Pupitar", 1},
["Tyranitar"] = {"Shiny Tyranitar", 1},
["Magmar"] = {"Shiny Magmar", 1},
["Magmortar"] = {"Shiny Magmortar", 1},
["Magby"] = {"Shiny Magby", 1},
["Absol"] = {"Shiny Absol", 1},
["Aggron"] = {"Shiny Aggron", 1},
["Elekid"] = {"Shiny Elekid", 1},
["Electivire"] = {"Shiny Electivire", 1},
["Tropius"] = {"Shiny Tropius", 1},
["Manectric"] = {"Shiny Manectric", 1},
["Metagross"] = {"Shiny Metagross", 1},
["Shiftry"] = {"Shiny Shiftry", 1},
["Salamence"] = {"Shiny Salamence", 1},
["Steelix"] = {"Shiny Steelix", 1},
}
 
local balls = {
[11827] = {newBall = 11738}, -- PokeBall
[11833] = {newBall = 11741}, -- GreatBall
[11836] = {newBall = 11744}, -- SuperBall
[11830] = {newBall = 11747}, -- UltraBall
[10976] = {newBall = 12622}, -- Saffari Ball
[11738] = {newBall = 11738}, -- Shiny Pokeball
[11741] = {newBall = 11741}, -- Shiny GreatBall
[11744] = {newBall = 11744}, -- Shiny SuperBall
[11747] = {newBall = 11747}, -- Shiny UltraBall
[12622] = {newBall = 12622}, -- Shiny Saffari Ball
}
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
local pokeball = getPlayerSlotItem(cid, 8)
 
if isMonster(itemEx.uid) and getCreatureMaster(itemEx.uid) == cid then
local monster = getCreatureName(itemEx.uid)
 
if not balls[pokeball.itemid] then
 
doPlayerSendCancel(cid, "Seu pokemon esta em uma pokebola invalida.")
return true
end
 
if evo[monster] then
if getPlayerItemCount(cid, item.itemid) >= evo[monster][2] then
 
doPlayerSendTextMessage(cid, 27, "Parabens! Seu "..getPokeName(itemEx.uid).." evoluiu para "..evo[monster][1].."!")
local health, maxHealth = getCreatureHealth(itemEx.uid), getCreatureMaxHealth(itemEx.uid)
doSendMagicEffect(getThingPos(itemEx.uid), 242)
doRemoveCreature(itemEx.uid)
doPlayerRemoveItem(cid, item.itemid, evo[monster][2]-1)
doRemoveItem(item.uid, 1)
doSummonMonster(cid,evo[monster][1])
doItemSetAttribute(pokeball.uid, "poke", evo[monster][1])
doItemSetAttribute(pokeball.uid, "level", pokes[evo[monster][1]].level)
doItemSetAttribute(pokeball.uid, "hp", 1)
doItemSetAttribute(pokeball.uid, "happy", 110)
local pk = getCreatureSummons(cid)[1]
doTransformItem(pokeball.uid, balls[pokeball.itemid].newBall)
adjustStatus(pk, pokeball.uid, true, false, true)
return TRUE
else
 
return doPlayerSendTextMessage(cid, 27, "Voce precisa de pelo menos ".. evo[monster][2] .." stones para faze-lo vira shiny!")
end
end
end
return false
end

quando estou usando em qualquer lugar e não tem pokemon no slot principal dar esse erro ai

[31/07/2015 18:29:45] [Error - Action Interface] 
[31/07/2015 18:29:45] data/actions/scripts/booststone.lua:onUse
[31/07/2015 18:29:45] Description: 
[31/07/2015 18:29:45] (luaGetItemAttribute) Item not found
 
[31/07/2015 18:29:54] [Error - Action Interface] 
[31/07/2015 18:29:54] data/actions/scripts/booststone.lua:onUse
[31/07/2015 18:29:54] Description: 

[31/07/2015 18:29:54] (luaGetItemAttribute) Item not found
Editado por Neymar Jr
Link para o comentário
Compartilhar em outros sites

  • 0


function onUse(cid, item, fromPosition, item2, toPosition)

local myball = getPlayerSlotItem(cid, 8)

if #getCreatureSummons(cid) >= 1 then

return doPlayerSendCancel(cid, "Retorne seu pokemon para poder usar a boost stone.")

elseif myball.uid < 1 or item2.uid ~= myball.uid then

return doPlayerSendCancel(cid, "Use this item on a pokeball in the pokeball slot.")

end

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

local boosts = 10

 

if boost == 70 then

doPlayerSendCancel(cid, "Seu pokemon está no lvl máximo.")

return true

end

 

boosts = boosts

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

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

newBoost = boost + boosts

 

if newBoost > 70 then

newBoost = 70

end

 

doSetItemAttribute(myball.uid, "boost", newBoost)

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)

doRemoveItem(item.uid, 1)

doSendMagicEffect(getThingPos(item2.uid), 103)

doPlayerSendTextMessage(cid, 27, "Parabéns, o seu "..pokemon..", foi bostado +"..boosts..".")

doPlayerSendTextMessage(cid, 27, "Agora, o seu "..pokemon.." está bostado +"..newBoost..".")

doSendAnimatedText(getThingPos(item2.uid), "+"..boosts.." Boost", 215)

return true

end

 

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

  • 0
function onUse(cid, item, fromPosition, item2, toPosition)
    local myball = getPlayerSlotItem(cid, 8)
    if myball.uid < 1 or item2.uid ~= myball.uid then
        return doPlayerSendCancel(cid, "Use this item on a pokeball in the pokeball slot.")
    end
    local boost = getItemAttribute(myball.uid, "boost") or 0
    local boosts = 10
 
    if boost == 70 then
        doPlayerSendCancel(cid, "Seu pokemon está no lvl máximo.")
        return true
    end
 
    if #getCreatureSummons(cid) >= 1 then
        return doPlayerSendCancel(cid, "Retorne seu pokemon para poder usar a boost stone.")
    end
 
    if getPlayerSlotItem(cid, 8).uid <= 0 then
        return doPlayerSendCancel(cid, "Seu pokemon não está no slot principal.")
    end
 
 
    boosts = boosts
    local pokemon = getItemAttribute(myball.uid, "poke")
    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
    newBoost = boost + boosts
 
    if newBoost > 70 then
        newBoost = 70
    end
 
    doSetItemAttribute(myball.uid, "boost", newBoost)
    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)
    doRemoveItem(item.uid, 1)
    doSendMagicEffect(getThingPos(item2.uid), 103)
    doPlayerSendTextMessage(cid, 27, "Parabéns, o seu "..pokemon..", foi bostado +"..boosts..".")
    doPlayerSendTextMessage(cid, 27, "Agora, o seu "..pokemon.." está bostado +"..newBoost..".")
    doSendAnimatedText(getThingPos(item2.uid), "+"..boosts.." Boost", 215)
    return true 
end

 

Obrigado mestre, está funcionando perfeitamente <3

 

só que quando o player está com o pokemon sumonado e tenta usar a stone nele diz essa mensagem > Use this item on a pokeball in the pokeball slot

ao invés dessa > Retorne seu pokemon para poder usar a boost stone

 

teria como ajuda só nessa parte? confused.gif

Link para o comentário
Compartilhar em outros sites

  • 0

 

function onUse(cid, item, fromPosition, item2, toPosition)
    local myball = getPlayerSlotItem(cid, 8)
    if #getCreatureSummons(cid) >= 1 then
        return doPlayerSendCancel(cid, "Retorne seu pokemon para poder usar a boost stone.")
    elseif myball.uid < 1 or item2.uid ~= myball.uid then
        return doPlayerSendCancel(cid, "Use this item on a pokeball in the pokeball slot.")
    end
    local boost = getItemAttribute(myball.uid, "boost") or 0
    local boosts = 10
 
    if boost == 70 then
        doPlayerSendCancel(cid, "Seu pokemon está no lvl máximo.")
        return true
    end
 
    boosts = boosts
    local pokemon = getItemAttribute(myball.uid, "poke")
    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
    newBoost = boost + boosts
 
    if newBoost > 70 then
        newBoost = 70
    end
 
    doSetItemAttribute(myball.uid, "boost", newBoost)
    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)
    doRemoveItem(item.uid, 1)
    doSendMagicEffect(getThingPos(item2.uid), 103)
    doPlayerSendTextMessage(cid, 27, "Parabéns, o seu "..pokemon..", foi bostado +"..boosts..".")
    doPlayerSendTextMessage(cid, 27, "Agora, o seu "..pokemon.." está bostado +"..newBoost..".")
    doSendAnimatedText(getThingPos(item2.uid), "+"..boosts.." Boost", 215)
    return true 
end
Link para o comentário
Compartilhar em outros sites

  • 0
  • Administrador
A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...