Postado Julho 8, 2015 10 anos Olá galera , eu tenho um systema de slot e queria criar um item com action para limpar esse atributo que o slot da. Seria mais ou menos remover o item e dar outro. EX: "You see Dark Shield (Def:40) [hp+1%] " a pedra com action (Removedor de Slot) iria remover o dark shield e dar um novo em folha quando usar a pedra nele... Acredito que seria alguma função de reconhecer o item usado , remove-lo e adiciona-lo novamente... Alguem saberia fazer esta action? Aguardo anciosamente , Obrigado! Este é o script de slot que uso: https://otland.net/threads/slot-system-multi-slot-no-crashes.90387/ Editado Julho 8, 2015 10 anos por Mayke Fleury (veja o histórico de edições)
Postado Julho 8, 2015 10 anos Solução ---Config local conf = { maxSlotCount=2, ignoredIds={} } --End function choose(...) local arg = {...} return arg[math.random(1,#arg)] end if not getItemAttack then function getItemAttack(uid) return getItemAttribute(uid,'attack') end function getItemDefense(uid) return getItemAttribute(uid,'defense') end end local function isArmor(uid) -- Function by Mock the bear. if (getItemInfo(uid.itemid).armor ~= 0) and (getItemWeaponType(uid.uid) == 0) then return true end return false end local function isWeapon(uid) -- Function by Mock the bear. uid = uid or 0 local f = getItemWeaponType(uid) if f == 1 or f == 2 or f == 3 then return true end return false end local function isShield(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 4 then return true end return false end local function isBow(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 5 and not isItemStackable(uid) then return true end return false end local function getWeaponLevel(uid) -- Function by Mock the bear. uid = uid or 0 local name = getItemName(uid.uid) or getItemInfo(uid.itemid).name or '' local lvl = string.match(name,'%s%+(%d+)%s*') return tonumber(lvl) or 0 end function onUse(cid, item, fromPosition, itemEx, toPosition) if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 if isInArray(conf.ignoredIds, itemEx.itemid) or (not getItemWeaponType(itemEx.uid) or getItemWeaponType(itemEx.uid) > 5) or (getItemWeaponType(itemEx.uid) == 0 and not isArmor(itemEx)) or itemEx.itemid == 0 or itemEx.type > 1 or isItemStackable(itemEx.uid) then doPlayerSendCancel(cid, "You cant reset this item.") return TRUE end if isCreature(itemEx.uid) then return FALSE end local level = getWeaponLevel(itemEx) if level > 0 then upgrade = refine doSendMagicEffect(toPosition,30) setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level)) doPlayerSendCancel(cid, "All slots were removed.") doRemoveItem(item.uid,1) else doSendMagicEffect(toPosition,30) setItemName(itemEx.uid, getItemNameById(itemEx.itemid)) doPlayerSendCancel(cid, "All slots were removed.") doRemoveItem(item.uid,1) end return true end tenho esse que ta na pasta do meu sv, se n der, de tarde eu faço para vc Toda terça-feira um tópico novo: Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/ Peça sua spell (Suporte): https://tibiaking.com/forums/topic/84162-peça-sua-spell/ Chuva de flechas (Spell): https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/ Doom (Spell): https://tibiaking.com/forums/topic/51622-doom-spell/ Utilização do VS Code (Infra): https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/ SD com Combo (Spell): https://tibiaking.com/forums/topic/94520-sd-modificada/ Alteração attack speed (C++): https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/ Bônus de Speed (NPC): https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
Postado Julho 12, 2015 10 anos Voce quer é que ao clicar em certo item, remova o item de "x" id que esta com voce, e adicione tal item novamente? caso seja isso tenta assim: function onUse(cid, item, frompos, item2, topos) if DoPlayerRemoveitem(cid, ID DO ITEM, QUANTIDADE) then DoPlayerAddItem(cid, ID DO ITEM, QUANTIDADE) return true end Não testei, e nao tenho certeza, haha mas tenta ai.
Postado Julho 12, 2015 10 anos Autor Voce quer é que ao clicar em certo item, remova o item de "x" id que esta com voce, e adicione tal item novamente? caso seja isso tenta assim: Não testei, e nao tenho certeza, haha mas tenta ai. Seria tipo isso , mas esse script eu teria que criar 1 script para cada item diferente que eu queria remover ne? Ja consegui com o script que o amigo acima postou , obrigado!! ---Config local conf = { maxSlotCount=2, ignoredIds={} } --End function choose(...) local arg = {...} return arg[math.random(1,#arg)] end if not getItemAttack then function getItemAttack(uid) return getItemAttribute(uid,'attack') end function getItemDefense(uid) return getItemAttribute(uid,'defense') end end local function isArmor(uid) -- Function by Mock the bear. if (getItemInfo(uid.itemid).armor ~= 0) and (getItemWeaponType(uid.uid) == 0) then return true end return false end local function isWeapon(uid) -- Function by Mock the bear. uid = uid or 0 local f = getItemWeaponType(uid) if f == 1 or f == 2 or f == 3 then return true end return false end local function isShield(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 4 then return true end return false end local function isBow(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 5 and not isItemStackable(uid) then return true end return false end local function getWeaponLevel(uid) -- Function by Mock the bear. uid = uid or 0 local name = getItemName(uid.uid) or getItemInfo(uid.itemid).name or '' local lvl = string.match(name,'%s%+(%d+)%s*') return tonumber(lvl) or 0 end function onUse(cid, item, fromPosition, itemEx, toPosition) if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 if item.uid == 0 or item.itemid == 0 then return false end toPosition.stackpos = 255 if isInArray(conf.ignoredIds, itemEx.itemid) or (not getItemWeaponType(itemEx.uid) or getItemWeaponType(itemEx.uid) > 5) or (getItemWeaponType(itemEx.uid) == 0 and not isArmor(itemEx)) or itemEx.itemid == 0 or itemEx.type > 1 or isItemStackable(itemEx.uid) then doPlayerSendCancel(cid, "You cant reset this item.") return TRUE end if isCreature(itemEx.uid) then return FALSE end local level = getWeaponLevel(itemEx) if level > 0 then upgrade = refine doSendMagicEffect(toPosition,30) setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level)) doPlayerSendCancel(cid, "All slots were removed.") doRemoveItem(item.uid,1) else doSendMagicEffect(toPosition,30) setItemName(itemEx.uid, getItemNameById(itemEx.itemid)) doPlayerSendCancel(cid, "All slots were removed.") doRemoveItem(item.uid,1) end return true end tenho esse que ta na pasta do meu sv, se n der, de tarde eu faço para vc Funcionou certinho brow , era esse mesmo! Muito obrigado! Rep+
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.