Postado Junho 16, 2014 10 anos Olá amigos do TibiaKing, Eu venho pedir a vocês uma ajuda e suporte de como add uma arma no Tibia que funcina desta forma. Eu tenho a arma no slot e para usar esta arma, eu tenho que ter na Bag(mochila) um outro item que no caso seria a munição e quando a munição acabar a arma para de funcionar, enviando uma mensagem para o player, você não possui mais munição. Outra coisa gostaria de saber, como faço para quando o player clicar sobre a arma com o botão direito, ela fosse reduzindo a munição na Bag e usando um efeito de atack no monstro tipo uma explosão de fogo que seria usado saido do player, tipo como acontece no poketibia usa-se o atack e sai do pokemon um efeito mas no caso aqui o efeito só sairia do player quando clica-se na arma no slot. Peço que quem puder ajuder serei grato. Agradeço pela atenção e ajuda, um grande abraço e fique com Deus!
Postado Junho 16, 2014 10 anos weapons.xml: <melee id="8927" level="120" unproperly="1" event="script" value="new2.lua"/> muda aqui o id do item que vai utilizar esse sistema e o level. Value é o nome do script. weapons\scripts\new2.lua: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 34) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) local xCombat = createCombatObject() setCombatParam(xCombat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(xCombat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(xCombat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(xCombat, COMBAT_PARAM_EFFECT, 34) setCombatFormula(xCombat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) local area = createCombatArea({ {0, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0} }) local area1 = createCombatArea({ {0, 0, 0}, {0, 3, 0}, {0, 0, 0} }) setCombatArea(xCombat, area) setCombatArea(combat, area1) local config = { storageativ = 76650, smallstoneid = 1294 } function onUseWeapon(cid, var) if getPlayerStorageValue(cid, config.storageativ) == 1 and doPlayerRemoveItem(cid, config.smallstoneid, 1) then retorn = doCombat(cid, xCombat, var) else retorn = doCombat(cid, combat, var) end return retorn end vc muda os efeitos aqui: setCombatParam(combat, COMBAT_PARAM_EFFECT, 34) a area qnd tá desativada e quanto tá ativada vc edita no script. e aqui você muda o storage que vai salvar se ela tá ativada ou desativada e tb que item será usado como munição: local config = { storageativ = 76650, smallstoneid = 1294 } Feito isso vá em actions.xml e adicione essa linha: <action itemid="8927" script="new2.lua"/> NOTE que o ID tem que ser o mesmo do weapons.xml para que funcione da maneira correta. Agora crie um arquivo chamado new2.lua em actions\scripts e adicione isso daqui dentro dele: function onUse(cid, item, frompos, item2, topos) local config = { storageativ = 76650, -- storage que será utilizado ammo = 1294 --- id do item que será a munição. } if getPlayerStorageValue(cid, config.storageativ) > 0 then setPlayerStorageValue(cid, config.storageativ, 0) doPlayerSendTextMessage(cid, 19, "You desactivated your weapon, you're no longer attacking in area!") elseif getPlayerStorageValue(cid, config.storageativ) <= 0 then setPlayerStorageValue(cid, config.storageativ, 1) doPlayerSendTextMessage(cid, 19, "You activated your weapon, now you'll attack in area as long as you have ammunition!") end return true end Nesse exemplo que eu coloquei vc ativa a club de id 8927 e ela vai ativar um ataque em área soltando o efeito 34 mas gastando 1 small stone a cada hit. Editado Junho 18, 2014 10 anos por xWhiteWolf (veja o histórico de edições)
Postado Junho 16, 2014 10 anos Autor weapons.xml: muda aqui o id do item que vai utilizar esse sistema e o level. Value é o nome do script. weapons\scripts\new2.lua: local combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)setCombatParam(combat, COMBAT_PARAM_EFFECT, 34)setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0)local xCombat = createCombatObject()setCombatParam(xCombat, COMBAT_PARAM_BLOCKARMOR, 1)setCombatParam(xCombat, COMBAT_PARAM_BLOCKSHIELD, 1)setCombatParam(xCombat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)setCombatParam(xCombat, COMBAT_PARAM_EFFECT, 34)setCombatFormula(xCombat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0)local area = createCombatArea({{0, 1, 1, 1, 0},{1, 1, 1, 1, 1},{1, 1, 3, 1, 1},{1, 1, 1, 1, 1},{0, 1, 1, 1, 0}})local area1 = createCombatArea({{0, 0, 0},{0, 3, 0},{0, 0, 0}})setCombatArea(xCombat, area)setCombatArea(combat, area1)local config = {storageativ = 76650,smallstoneid = 1294}function onUseWeapon(cid, var)if getPlayerStorageValue(cid, config.storageativ) == 1 and doPlayerRemoveItem(cid, config.smallstoneid, 1) thenretorn = doCombat(cid, xCombat, var)elseretorn = doCombat(cid, combat, var)endreturn retornend vc muda os efeitos aqui: setCombatParam(combat, COMBAT_PARAM_EFFECT, 34) a area qnd tá desativada e quanto tá ativada vc edita no script. e aqui você muda o storage que vai salvar se ela tá ativada ou desativada e tb que item será usado como munição: local config = {storageativ = 76650,smallstoneid = 1294} Feito isso vá em actions.xml e adicione essa linha: NOTE que o ID tem que ser o mesmo do weapons.xml para que funcione da maneira correta. Agora crie um arquivo chamado new2.lua em actions\scripts e adicione isso daqui dentro dele: function onUse(cid, item, frompos, item2, topos)local config = {storageativ = 76650, -- storage que será utilizadoammo = 1294 --- id do item que será a munição.}if getPlayerStorageValue(cid, config.storageativ) > 0 thensetPlayerStorageValue(cid, config.storageativ, 0)doPlayerSendTextMessage(cid, 19, "You desactivated your "..getItemNameById(item.itemid)..", you're no longer attacking in area!") elseif getPlayerStorageValue(cid, config.storageativ) <= 0 thensetPlayerStorageValue(cid, config.storageativ, 1)doPlayerSendTextMessage(cid, 19, "You activated your "..getItemNameById(item.itemid)..", now you'll attack in area for the price of a "..getItemNameById(config.ammo).."!") endreturn trueend Nesse exemplo que eu coloquei vc ativa a club de id 8927 e ela vai ativar um ataque em área soltando o efeito 34 mas gastando 1 small stone a cada hit. Amigo o script esta muito bom, mas eu recebo este erro. Obs: estou usando TFS 1.0 versão 10.37 tibia. http://i.imgur.com/ZjkB1n2.png PS: eu não entendi direito essa parte só itendi que erra para botar o ID da munição mas o outro eu não sei o que botar. local config = {storageativ = 76650, < aqui eu não sei> smallstoneid = 1294 <Aqui e a munição> } Editado Junho 16, 2014 10 anos por ZORAN (veja o histórico de edições)
Postado Junho 17, 2014 10 anos storage é o storage que vai salvar se tá ativo ou desativo '-' se vc n sabe oque é, não mexe. O erro que tá retornando é na função getItemNameById... É uma função do 8.54, ela provavelmente deve ter mudado de nome, procura o nome da função nova, as vezes é uma mudança simpleszinha tipo getItemNameById > doGetItemName (isso é um exemplo) qnd vc achar, é só substituir nos scripts que vai ficar perfeito
Postado Junho 17, 2014 10 anos Autor Quando eu achar a solução posto aqui a correção, enquanto isso vou pesso que deixem o topico aberto, Obrigado amigo e fique com Deus!
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.