Postado Março 3, 2015 10 anos Autor Em 03/03/2015 em 16:50, Adriano SwaTT disse: Use assim: local bow = 2417 -- ID DA BOW local arrow = 2352 -- ID do ARROW function onEquip(cid, item) if (getPlayerSlotItem(cid,5).itemid == bow) or (getPlayerSlotItem(cid,6).itemid == bow) then doDecayItem(item.uid) else return FALSE, doPlayerSendCancel(cid,'Você precisa estar usando o '..getItemNameById(bow)..'.') end return TRUE end function onDeEquip(cid, item) if getPlayerSlotItem(cid, ammo).itemid == arrow then return true else return FALSE, doPlayerSendCancel(cid,'Primeiro você precisa remover seus '..getItemNameById(arrow)..' para depois remover seus '..getItemNameById(bow)..'s.') end return TRUE end E a tag em movements.xml ficará assim: <movevent type="Equip" itemid="2544" slot="ammo" event="script" value="arrow.lua"/> <movevent type="DeEquip" itemid="2352" slot="shield" event="script" value="arrow.lua"/> Boa sorte. Não funcionou não, está usando normalmente.
Postado Março 3, 2015 10 anos Em movements.xml: <movevent type="Equip" itemid="2546" slot="ammo" event="script" value="arrow.lua" /> <!-- id da arrow --> <movevent type="DeEquip" itemid="2456" slot="hand" event="script" value="arrow.lua" /> <!-- id da bow -->Em movements/scripts crie o arquivo arrow.lua com este conteúdo: local bowID = 2456 -- id da bow escolhida local arrowID = 2546 -- id da arrow escolhida function onEquip(cid, item) if getPlayerSlotItem(cid, 6).itemid == bowID or getPlayerSlotItem(cid, 5).itemid == bowID then return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa estar equipado com um '..getItemNameById(bowID)..' para usar seu '..getItemNameById(item.itemid)..'.') return false end function onDeEquip(cid, item, slot) local item = getPlayerSlotItem(cid, slot).itemid if getPlayerSlotItem(cid, 10).itemid == arrowID then doPlayerRemoveItem(cid, item, 1) doPlayerAddItem(cid, item, 1, false, slot) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa desequipar seu '..getItemNameById(arrowID)..' para desequipar seu '..getItemNameById(item.itemid)..'.') return false end return true endNão tive a oportunidade de testar pois estou no serviço,Qualquer bug por favor, poste o erro do console. Abraço! Editado Março 3, 2015 10 anos por Bruno Minervino (veja o histórico de edições) Atenciosamente, Bruno Minervino
Postado Março 3, 2015 10 anos Autor Em 03/03/2015 em 17:42, Bruno Minervino disse: Em movements.xml: <movevent type="Equip" itemid="2546" slot="ammo" event="script" value="arrow.lua" /> <!-- id da arrow --> <movevent type="DeEquip" itemid="2456" slot="hand" event="script" value="arrow.lua" /> <!-- id da bow --> Em movements/scripts crie o arquivo arrow.lua com este conteúdo: local bowID = 2456 -- id da bow escolhida local arrowID = 2546 -- id da arrow escolhida function onEquip(cid, item) if getPlayerSlotItem(cid, 6).itemid == bowID or getPlayerSlotItem(cid, 5).itemid == bowID then return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa estar equipado com um '..getItemNameById(bowID)..' para usar seu '..getItemNameById(item.itemid)..'.') return false end function onDeEquip(cid, item, slot) local item = getPlayerSlotItem(cid, slot).itemid if getPlayerSlotItem(cid, 10).itemid == arrowID then doPlayerRemoveItem(cid, item, 1) doPlayerAddItem(cid, item, 1, false, slot) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa desequipar seu '..getItemNameById(arrowID)..' para desequipar seu '..getItemNameById(item.itemid)..'.') return false end return true end Não tive a oportunidade de testar pois estou no serviço, Qualquer bug por favor, poste o erro do console. Abraço! Olha, funcionou... porém se eu estiver usando a bow "certa" e jogar outra qualquer a arrow continua funcionando... há alguma maneira de fazer com que ela pare de funcionar ou que ela APENAS funcione com a bow do script? Ou teria que fazer outro script para a bow?
Postado Março 3, 2015 10 anos A mesma tag em movements e o script assim: local bowID = 2456 -- id da bow escolhida local arrowID = 2546 -- id da arrow escolhida function onEquip(cid, item) if item.itemid ~= bowID and getPlayerSlotItem(cid, 10).itemid == arrowID then doPlayerSendCancel(cid, "Você precisa remover suas munições para equipar outro bow.") return false end if getPlayerSlotItem(cid, 6).itemid == bowID or getPlayerSlotItem(cid, 5).itemid == bowID then return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa estar equipado com um '..getItemNameById(bowID)..' para usar seu '..getItemNameById(item.itemid)..'.') return false end function onDeEquip(cid, item, slot) local item = getPlayerSlotItem(cid, slot).itemid if getPlayerSlotItem(cid, 10).itemid == arrowID then doPlayerRemoveItem(cid, item, 1) doPlayerAddItem(cid, item, 1, false, slot) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa desequipar seu '..getItemNameById(arrowID)..' para desequipar seu '..getItemNameById(item.itemid)..'.') return false end return true end Boa sorte. Gosta do meu trabalho? Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs. Atenciosamente,Adriano Swatt' Para ver meus tutoriais acesse meu perfil.
Postado Março 3, 2015 10 anos Em 03/03/2015 em 18:30, Adriano SwaTT disse: A mesma tag em movements e o script assim: local bowID = 2456 -- id da bow escolhida local arrowID = 2546 -- id da arrow escolhida function onEquip(cid, item) if item.itemid ~= bowID and getPlayerSlotItem(cid, 10).itemid == arrowID then doPlayerSendCancel(cid, "Você precisa remover suas munições para equipar outro bow.") return false end if getPlayerSlotItem(cid, 6).itemid == bowID or getPlayerSlotItem(cid, 5).itemid == bowID then return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa estar equipado com um '..getItemNameById(bowID)..' para usar seu '..getItemNameById(item.itemid)..'.') return false end function onDeEquip(cid, item, slot) local item = getPlayerSlotItem(cid, slot).itemid if getPlayerSlotItem(cid, 10).itemid == arrowID then doPlayerRemoveItem(cid, item, 1) doPlayerAddItem(cid, item, 1, false, slot) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa desequipar seu '..getItemNameById(arrowID)..' para desequipar seu '..getItemNameById(item.itemid)..'.') return false end return true end Boa sorte. Adriano, Neste caso ele só iria executar a função OnEquip com o item que estiver definido no movements.xml não como um todo, neste caso, somente quando equipasse a arrow. @ScythePhantom, Teria que fazer esta condição apenas para equipar ou desequipar e uma outra condição em weapons para atribuir o attack etc apenas se usar tal bow, isso tem como fazer. Abraço! Atenciosamente, Bruno Minervino
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.