paulim78 3 Postado 1 de Novembro Compartilhar Postado 1 de Novembro Galera eu meio que pedi para o chatgpt um código sobre sistema de tiro ele fez deu certo em actions, o problema e que para funciona tem que fica dando use na arma bota ela no hotkey e tals, eu queria vê se tem como adapta no actions ou criar em outro canto para ele atira automático ou seja selecionou o alvo com a arma equipada ele funciona sem precisa dar use. Sei que o código pode está na pura gambiarra e tals vai fala que da para melhorar porem que gerou foi o chatgpt eu não sei programar kkk então para mim e assim se esta funcionando e o que vale, time que esta ganhando não se mexe kkkk, porem esse meu time ai precisa de algumas substituição kkk o codigo. local WEAPON_ID = 31159 -- ID da sua arma personalizada local AMMO_ID = 29564 -- ID da munição local MISSILE_EFFECT = 113 -- Efeito de míssil local DAMAGE_TYPE = COMBAT_PHYSICALDAMAGE -- Tipo de dano físico function onUse(player, item, fromPosition, target, toPosition, isHotkey) -- Verifica se a arma está equipada na mão direita ou esquerda local weaponInRightHand = player:getSlotItem(CONST_SLOT_RIGHT) local weaponInLeftHand = player:getSlotItem(CONST_SLOT_LEFT) -- Adiciona mensagens de depuração para verificar os itens equipados if weaponInRightHand then else end if weaponInLeftHand then else end -- Verificação correta do item equipado local isWeaponEquipped = false if weaponInRightHand and weaponInRightHand:getId() == WEAPON_ID then isWeaponEquipped = true elseif weaponInLeftHand and weaponInLeftHand:getId() == WEAPON_ID then isWeaponEquipped = true end -- Envia uma mensagem de erro se a arma não estiver equipada if not isWeaponEquipped then player:sendCancelMessage("Você precisa equipar a arma na sua mão para usá-la.") return false end -- Verifica se o alvo é um monstro if not target or not target:isMonster() then player:sendCancelMessage("Você só pode usar essa arma em monstros.") return false end -- Verifica se o jogador tem munição suficiente local ammoCount = player:getItemCount(AMMO_ID) if ammoCount <= 0 then player:sendCancelMessage("Você não tem munição suficiente.") return false end -- Remove a munição player:removeItem(AMMO_ID, 1) -- Cria o efeito do míssil local startPosition = player:getPosition() local endPosition = target:getPosition() startPosition:sendDistanceEffect(endPosition, MISSILE_EFFECT) -- Calcula o dano local ammoItem = ItemType(AMMO_ID) local minDamage = ammoItem:getAttack() -- O ataque mínimo da munição local maxDamage = minDamage * 2 -- Um exemplo, onde o dano máximo é o dobro do mínimo -- Aplica o dano ao monstro local damage = math.random(minDamage, maxDamage) target:addHealth(-damage) target:getPosition():sendMagicEffect(CONST_ME_HITAREA) -- Efeito de dano no monstro return true end Alguém de bom coração consegue me ajudar. Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
Suporte Sollix 102 Postado 2 de Novembro Suporte Compartilhar Postado 2 de Novembro 3 horas atrás, paulim78 disse: Galera eu meio que pedi para o chatgpt um código sobre sistema de tiro ele fez deu certo em actions, o problema e que para funciona tem que fica dando use na arma bota ela no hotkey e tals, eu queria vê se tem como adapta no actions ou criar em outro canto para ele atira automático ou seja selecionou o alvo com a arma equipada ele funciona sem precisa dar use. Sei que o código pode está na pura gambiarra e tals vai fala que da para melhorar porem que gerou foi o chatgpt eu não sei programar kkk então para mim e assim se esta funcionando e o que vale, time que esta ganhando não se mexe kkkk, porem esse meu time ai precisa de algumas substituição kkk o codigo. local WEAPON_ID = 31159 -- ID da sua arma personalizada local AMMO_ID = 29564 -- ID da munição local MISSILE_EFFECT = 113 -- Efeito de míssil local DAMAGE_TYPE = COMBAT_PHYSICALDAMAGE -- Tipo de dano físico function onUse(player, item, fromPosition, target, toPosition, isHotkey) -- Verifica se a arma está equipada na mão direita ou esquerda local weaponInRightHand = player:getSlotItem(CONST_SLOT_RIGHT) local weaponInLeftHand = player:getSlotItem(CONST_SLOT_LEFT) -- Adiciona mensagens de depuração para verificar os itens equipados if weaponInRightHand then else end if weaponInLeftHand then else end -- Verificação correta do item equipado local isWeaponEquipped = false if weaponInRightHand and weaponInRightHand:getId() == WEAPON_ID then isWeaponEquipped = true elseif weaponInLeftHand and weaponInLeftHand:getId() == WEAPON_ID then isWeaponEquipped = true end -- Envia uma mensagem de erro se a arma não estiver equipada if not isWeaponEquipped then player:sendCancelMessage("Você precisa equipar a arma na sua mão para usá-la.") return false end -- Verifica se o alvo é um monstro if not target or not target:isMonster() then player:sendCancelMessage("Você só pode usar essa arma em monstros.") return false end -- Verifica se o jogador tem munição suficiente local ammoCount = player:getItemCount(AMMO_ID) if ammoCount <= 0 then player:sendCancelMessage("Você não tem munição suficiente.") return false end -- Remove a munição player:removeItem(AMMO_ID, 1) -- Cria o efeito do míssil local startPosition = player:getPosition() local endPosition = target:getPosition() startPosition:sendDistanceEffect(endPosition, MISSILE_EFFECT) -- Calcula o dano local ammoItem = ItemType(AMMO_ID) local minDamage = ammoItem:getAttack() -- O ataque mínimo da munição local maxDamage = minDamage * 2 -- Um exemplo, onde o dano máximo é o dobro do mínimo -- Aplica o dano ao monstro local damage = math.random(minDamage, maxDamage) target:addHealth(-damage) target:getPosition():sendMagicEffect(CONST_ME_HITAREA) -- Efeito de dano no monstro return true end Alguém de bom coração consegue me ajudar. Tópico aprovado! Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
Ryohei 0 Postado 2 de Novembro Compartilhar Postado 2 de Novembro 23 horas atrás, paulim78 disse: Galera eu meio que pedi para o chatgpt um código sobre sistema de tiro ele fez deu certo em actions, o problema e que para funciona tem que fica dando use na arma bota ela no hotkey e tals, eu queria vê se tem como adapta no actions ou criar em outro canto para ele atira automático ou seja selecionou o alvo com a arma equipada ele funciona sem precisa dar use. Sei que o código pode está na pura gambiarra e tals vai fala que da para melhorar porem que gerou foi o chatgpt eu não sei programar kkk então para mim e assim se esta funcionando e o que vale, time que esta ganhando não se mexe kkkk, porem esse meu time ai precisa de algumas substituição kkk o codigo. local WEAPON_ID = 31159 -- ID da sua arma personalizada local AMMO_ID = 29564 -- ID da munição local MISSILE_EFFECT = 113 -- Efeito de míssil local DAMAGE_TYPE = COMBAT_PHYSICALDAMAGE -- Tipo de dano físico function onUse(player, item, fromPosition, target, toPosition, isHotkey) -- Verifica se a arma está equipada na mão direita ou esquerda local weaponInRightHand = player:getSlotItem(CONST_SLOT_RIGHT) local weaponInLeftHand = player:getSlotItem(CONST_SLOT_LEFT) -- Adiciona mensagens de depuração para verificar os itens equipados if weaponInRightHand then else end if weaponInLeftHand then else end -- Verificação correta do item equipado local isWeaponEquipped = false if weaponInRightHand and weaponInRightHand:getId() == WEAPON_ID then isWeaponEquipped = true elseif weaponInLeftHand and weaponInLeftHand:getId() == WEAPON_ID then isWeaponEquipped = true end -- Envia uma mensagem de erro se a arma não estiver equipada if not isWeaponEquipped then player:sendCancelMessage("Você precisa equipar a arma na sua mão para usá-la.") return false end -- Verifica se o alvo é um monstro if not target or not target:isMonster() then player:sendCancelMessage("Você só pode usar essa arma em monstros.") return false end -- Verifica se o jogador tem munição suficiente local ammoCount = player:getItemCount(AMMO_ID) if ammoCount <= 0 then player:sendCancelMessage("Você não tem munição suficiente.") return false end -- Remove a munição player:removeItem(AMMO_ID, 1) -- Cria o efeito do míssil local startPosition = player:getPosition() local endPosition = target:getPosition() startPosition:sendDistanceEffect(endPosition, MISSILE_EFFECT) -- Calcula o dano local ammoItem = ItemType(AMMO_ID) local minDamage = ammoItem:getAttack() -- O ataque mínimo da munição local maxDamage = minDamage * 2 -- Um exemplo, onde o dano máximo é o dobro do mínimo -- Aplica o dano ao monstro local damage = math.random(minDamage, maxDamage) target:addHealth(-damage) target:getPosition():sendMagicEffect(CONST_ME_HITAREA) -- Efeito de dano no monstro return true end Alguém de bom coração consegue me ajudar. Pedi para o chat, fazer com que fique atirando até usar o item novamente ou acabar a munição: local WEAPON_ID = 31159 -- ID da sua arma personalizada local AMMO_ID = 29564 -- ID da munição local MISSILE_EFFECT = 113 -- Efeito de míssil local DAMAGE_TYPE = COMBAT_PHYSICALDAMAGE -- Tipo de dano físico local SHOOT_INTERVAL = 1000 -- Intervalo de disparo em milissegundos (1 segundo) local shooting = false -- Variável de controle para saber se está atirando local function shoot(player, target) -- Verifica se o alvo ainda é válido e se o jogador tem munição if not target or not target:isMonster() or player:getItemCount(AMMO_ID) <= 0 then player:sendCancelMessage("Você não tem munição suficiente ou o alvo não é válido.") shooting = false return end -- Remove a munição player:removeItem(AMMO_ID, 1) -- Cria o efeito do míssil local startPosition = player:getPosition() local endPosition = target:getPosition() startPosition:sendDistanceEffect(endPosition, MISSILE_EFFECT) -- Calcula o dano local ammoItem = ItemType(AMMO_ID) local minDamage = ammoItem:getAttack() local maxDamage = minDamage * 2 local damage = math.random(minDamage, maxDamage) -- Aplica o dano ao monstro target:addHealth(-damage) target:getPosition():sendMagicEffect(CONST_ME_HITAREA) end function onUse(player, item, fromPosition, target, toPosition, isHotkey) -- Verifica se a arma está equipada na mão direita ou esquerda local weaponInRightHand = player:getSlotItem(CONST_SLOT_RIGHT) local weaponInLeftHand = player:getSlotItem(CONST_SLOT_LEFT) local isWeaponEquipped = (weaponInRightHand and weaponInRightHand:getId() == WEAPON_ID) or (weaponInLeftHand and weaponInLeftHand:getId() == WEAPON_ID) if not isWeaponEquipped then player:sendCancelMessage("Você precisa equipar a arma na sua mão para usá-la.") return false end -- Se o jogador já está atirando, interrompe o loop if shooting then shooting = false player:sendCancelMessage("Você parou de atirar.") return true end -- Verifica se o alvo é um monstro if not target or not target:isMonster() then player:sendCancelMessage("Você só pode usar essa arma em monstros.") return false end -- Ativa o modo de tiro contínuo shooting = true player:sendCancelMessage("Atirando automaticamente...") -- Função que repete o disparo em intervalos definidos addEvent(function() if shooting and player:isPlayer() then shoot(player, target) addEvent(onUse, SHOOT_INTERVAL, player, item, fromPosition, target, toPosition, isHotkey) end end, SHOOT_INTERVAL) return true end Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
Nemysis 5 Postado 3 de Novembro Compartilhar Postado 3 de Novembro cara isso praticamente e uma skill de missile ao clicar no item, tecnicaente e um script apenas pra isso, ate poque ta pra vc substituir um item do tibia e depois trocar o missile do no object build para ser de um tiro Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
Ryohei 0 Postado 3 de Novembro Compartilhar Postado 3 de Novembro 11 horas atrás, Nemysis disse: cara isso praticamente e uma skill de missile ao clicar no item, tecnicaente e um script apenas pra isso, ate poque ta pra vc substituir um item do tibia e depois trocar o missile do no object build para ser de um tiro No caso é só ele fazer como se fosse um "bow", que já funcionaria perfeitamente. Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
paulim78 3 Postado 3 de Novembro Autor Compartilhar Postado 3 de Novembro 16 horas atrás, Ryohei disse: Pedi para o chat, fazer com que fique atirando até usar o item novamente ou acabar a munição: local WEAPON_ID = 31159 -- ID da sua arma personalizada local AMMO_ID = 29564 -- ID da munição local MISSILE_EFFECT = 113 -- Efeito de míssil local DAMAGE_TYPE = COMBAT_PHYSICALDAMAGE -- Tipo de dano físico local SHOOT_INTERVAL = 1000 -- Intervalo de disparo em milissegundos (1 segundo) local shooting = false -- Variável de controle para saber se está atirando local function shoot(player, target) -- Verifica se o alvo ainda é válido e se o jogador tem munição if not target or not target:isMonster() or player:getItemCount(AMMO_ID) <= 0 then player:sendCancelMessage("Você não tem munição suficiente ou o alvo não é válido.") shooting = false return end -- Remove a munição player:removeItem(AMMO_ID, 1) -- Cria o efeito do míssil local startPosition = player:getPosition() local endPosition = target:getPosition() startPosition:sendDistanceEffect(endPosition, MISSILE_EFFECT) -- Calcula o dano local ammoItem = ItemType(AMMO_ID) local minDamage = ammoItem:getAttack() local maxDamage = minDamage * 2 local damage = math.random(minDamage, maxDamage) -- Aplica o dano ao monstro target:addHealth(-damage) target:getPosition():sendMagicEffect(CONST_ME_HITAREA) end function onUse(player, item, fromPosition, target, toPosition, isHotkey) -- Verifica se a arma está equipada na mão direita ou esquerda local weaponInRightHand = player:getSlotItem(CONST_SLOT_RIGHT) local weaponInLeftHand = player:getSlotItem(CONST_SLOT_LEFT) local isWeaponEquipped = (weaponInRightHand and weaponInRightHand:getId() == WEAPON_ID) or (weaponInLeftHand and weaponInLeftHand:getId() == WEAPON_ID) if not isWeaponEquipped then player:sendCancelMessage("Você precisa equipar a arma na sua mão para usá-la.") return false end -- Se o jogador já está atirando, interrompe o loop if shooting then shooting = false player:sendCancelMessage("Você parou de atirar.") return true end -- Verifica se o alvo é um monstro if not target or not target:isMonster() then player:sendCancelMessage("Você só pode usar essa arma em monstros.") return false end -- Ativa o modo de tiro contínuo shooting = true player:sendCancelMessage("Atirando automaticamente...") -- Função que repete o disparo em intervalos definidos addEvent(function() if shooting and player:isPlayer() then shoot(player, target) addEvent(onUse, SHOOT_INTERVAL, player, item, fromPosition, target, toPosition, isHotkey) end end, SHOOT_INTERVAL) return true end Esse não funcionou, pois tem que usar o item e quando usa da o erro Lua Script Error: [Main Interface] in a timer event called from: (Unknown scriptfile) LuaScriptInterface::luaAddEvent(). callback parameter should be a function. stack traceback: [C]: in function 'addEvent' data/actions/scripts/2024/armas/glock.lua:68: in function <data/actions/scripts/2024/armas/glock.lua:65> 15 horas atrás, Nemysis disse: cara isso praticamente e uma skill de missile ao clicar no item, tecnicaente e um script apenas pra isso, ate poque ta pra vc substituir um item do tibia e depois trocar o missile do no object build para ser de um tiro Não importa como vai funcionar, só de não precisa clicar no item da use já esta ótimo kkk. 3 horas atrás, Ryohei disse: No caso é só ele fazer como se fosse um "bow", que já funcionaria perfeitamente. Não e só usar como Bow pq eu msm quero que uma arma usa vários tipo de munição e no usando igual uma bow tem que ser por item.xml e no item.xml o ammotype ele só reconhece 1 tipo de munição, fora que no item.xml não tem como configurar quantos tiro a arma vai dar. Exemplo uma AK poderia bota para sair 3 tiro por vez, isso e apenas um exemplo, e que eu quero configurar mais coisas na arma e pelo item.xml não da, porem no item.xml não precisa dar use no item pois ele ja faz isso automático. Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
paulim78 3 Postado 5 de Novembro Autor Compartilhar Postado 5 de Novembro UP. Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
paulim78 3 Postado 6 de Novembro Autor Compartilhar Postado 6 de Novembro up Citar Link para o comentário Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da Conversa
Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.