Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Essa é uma modificação do script do Triple Bolt Crossbow(clique aqui). As diferenças são:

 

Você não precisa de um crossbow especifico para usar,

Só gasta 1 bolt por vez,

Você é capaz de definir quantas vezes ele se multiplica.

 

Imagem:

 

hE1v6Gz.png

 

Script:

 

local cfg = {
storage = 15001, -- Esse script usa storages, então ponha uma que ainda não esteja sendo usada
TYPE = COMBAT_PHYSICALDAMAGE, -- Que tipo de combat?
EFFECT = CONST_ME_DRAWBLOOD, -- Que tipo de efeito?
DISTANCEEFFECT = CONST_ANI_PIERCINGBOLT, -- Que tipo de efeito de distancia?
level = 10, -- Level necessário
voc = {3, 7}, -- Vocação(ões) necessária(s)
damage = 1000, -- Dano
extraBullets = 2, -- Balas extras. Com 2 irá atirar 3 balas
range = 4, -- Range das balas extras
}
 
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, cfg.TYPE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, cfg.EFFECT)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, cfg.DISTANCEEFFECT)
setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0)
 
function onUseWeapon(cid, var)
doCombat(cid, combat, var)
 
if getPlayerLevel(cid) >= cfg.level and isInArray(cfg.voc, getPlayerVocation(cid)) or getPlayerGroupId(cid) > 2 then
 
local target = getCreatureTarget(cid)
local level = getPlayerLevel(cid)
local dlevel = getPlayerSkill(cid, 4)
local atkMin = (level/5)
local atkMax = (0.09*0.75*dlevel*cfg.damage+atkMin)
local pPos = getCreaturePosition(cid)
local tPos = getCreaturePosition(target)
 
if getDistanceBetween(pPos, tPos) > cfg.range then
return false
end
 
local function doMimicsShoot(pos)
local hm = getPlayerStorageValue(cid, cfg.storage)
local creature = getTopCreature({x = pos.x, y = pos.y, z = pos.z, stackpos = STACKPOS_TOP_CREATURE})
 
if creature == getTopCreature(pPos) then 
 
return end
 
if creature.type == 1 and hm < cfg.extraBullets or creature.type == 2 and hm < cfg.extraBullets then
 
if creature.type == 1 then
atkMin = (atkMin/2)
atkMax = (atkMax/2)
end
 
local percent90 = (math.random(1,10))
 
if percent90 > 1 then
 
setPlayerStorageValue(cid, cfg.storage, hm+1)
doSendDistanceShoot(pPos, pos, cfg.DISTANCEEFFECT)
doAreaCombatHealth(cid, cfg.TYPE, pos, area, -atkMin, -atkMax, cfg.EFFECT)
 
else
 
setPlayerStorageValue(cid, cfg.storage, hm+1)
doSendDistanceShoot(pPos, pos, cfg.DISTANCEEFFECT)
doSendMagicEffect(pos, CONST_ME_POFF)
end
end
end
 
local tab = {
{x=tPos.x-1, y=tPos.y, z=tPos.z},
{x=tPos.x+1, y=tPos.y, z=tPos.z},
{x=tPos.x, y=tPos.y+1, z=tPos.z},
{x=tPos.x, y=tPos.y-1, z=tPos.z},
{x=tPos.x-1, y=tPos.y-1, z=tPos.z},
{x=tPos.x+1, y=tPos.y-1, z=tPos.z},
{x=tPos.x+1, y=tPos.y+1, z=tPos.z},
{x=tPos.x-1, y=tPos.y+1, z=tPos.z},
}
 
setPlayerStorageValue(cid, cfg.storage, 0)
 
for i = 1, #tab do
doMimicsShoot(tab)
end
end
end

 

Em weapons.xml:

 

TFS 1.0:

 

<distance id="15649" unproperly="1" level="40" function="default" script="nomedoarquivo.lua"/>     <- é só botar essa tag no bolt desejado

 

Outro TFS:

 

<distance id="15649" unproperly="1" level="40" function="default" event="script" value="nomedoarquivo.lua"/>     <- é só botar essa tag no bolt desejado

 

Vou indicar uma lista de efeitos para serem utilizados: 

 

http://www.tibiaking.com/forum/topic/32901-lista-completa-de-magic-effects-e-shoot-type/

Editado por mateusak (veja o histórico de edições)

Não se esqueça de dar REP+ para quem te ajudou e caso seja a solução marcar como melhor resposta!

 

NÃO CLIQUE AQUI!

NEM AQUI!

________________________________________________________________________________________________________________________________________________________________________________________________________________________

 

A imaginação é mais importante que o conhecimento.” Albert Einstein

Link para o post
Compartilhar em outros sites

Seu conteúdo foi aprovado, por se tratar de uma edição você poderia ter feito no próprio tópico original mas vou aprovar pelas mudanças terem sido significativas. Com isso estou te dando 1 ponto de reputação por trazer algo relativamente novo ao fórum. Continue assim e fico feliz que o TK tenha te inspirado à aprender lua :D

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Belo script! Vai ajudar muita gente ^^

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites
  • 4 years later...

Cara deu esse erro, sabe como resolver?
[19/12/2019 07:58:44] [Warning - Event::loadScript] Cannot load script (data/weapons/scripts/bolttest.lua)
[19/12/2019 07:58:44] data/weapons/scripts/bolttest.lua:84: 'end' expected (to close 'function' at line 19) near '<eof>'

 

Citar

local cfg = {
storage = 15001, -- Esse script usa storages, então ponha uma que ainda não esteja sendo usada
TYPE = COMBAT_PHYSICALDAMAGE, -- Que tipo de combat?
EFFECT = CONST_ME_DRAWBLOOD, -- Que tipo de efeito?
DISTANCEEFFECT = CONST_ANI_PIERCINGBOLT, -- Que tipo de efeito de distancia?
level = 10, -- Level necessário
voc = {3, 7}, -- Vocação(ões) necessária(s)
damage = 1000, -- Dano
extraBullets = 2, -- Balas extras. Com 2 irá atirar 3 balas
range = 4, -- Range das balas extras
}
 
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, cfg.TYPE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, cfg.EFFECT)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, cfg.DISTANCEEFFECT)
setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0)
 
function onUseWeapon(cid, var)
doCombat(cid, combat, var)
 
if getPlayerLevel(cid) >= cfg.level and isInArray(cfg.voc, getPlayerVocation(cid)) or getPlayerGroupId(cid) > 2 then
 
local target = getCreatureTarget(cid)
local level = getPlayerLevel(cid)
local dlevel = getPlayerSkill(cid, 4)
local atkMin = (level/5)
local atkMax = (0.09*0.75*dlevel*cfg.damage+atkMin)
local pPos = getCreaturePosition(cid)
local tPos = getCreaturePosition(target)
 
if getDistanceBetween(pPos, tPos) > cfg.range then
return false
end
 
local function doMimicsShoot(pos)
local hm = getPlayerStorageValue(cid, cfg.storage)
local creature = getTopCreature({x = pos.x, y = pos.y, z = pos.z, stackpos = STACKPOS_TOP_CREATURE})
 
if creature == getTopCreature(pPos) then 
 
return end
 
if creature.type == 1 and hm < cfg.extraBullets or creature.type == 2 and hm < cfg.extraBullets then
 
if creature.type == 1 then
atkMin = (atkMin/2)
atkMax = (atkMax/2)
end
 
local percent90 = (math.random(1,10))
 
if percent90 > 1 then
 
setPlayerStorageValue(cid, cfg.storage, hm+1)
doSendDistanceShoot(pPos, pos, cfg.DISTANCEEFFECT)
doAreaCombatHealth(cid, cfg.TYPE, pos, area, -atkMin, -atkMax, cfg.EFFECT)
 
else
 
setPlayerStorageValue(cid, cfg.storage, hm+1)
doSendDistanceShoot(pPos, pos, cfg.DISTANCEEFFECT)
doSendMagicEffect(pos, CONST_ME_POFF)
end
end
end
 
local tab = {
{x=tPos.x-1, y=tPos.y, z=tPos.z},
{x=tPos.x+1, y=tPos.y, z=tPos.z},
{x=tPos.x, y=tPos.y+1, z=tPos.z},
{x=tPos.x, y=tPos.y-1, z=tPos.z},
{x=tPos.x-1, y=tPos.y-1, z=tPos.z},
{x=tPos.x+1, y=tPos.y-1, z=tPos.z},
{x=tPos.x+1, y=tPos.y+1, z=tPos.z},
{x=tPos.x-1, y=tPos.y+1, z=tPos.z},
}
 
setPlayerStorageValue(cid, cfg.storage, 0)
 
for i = 1, #tab do
doMimicsShoot(tab)
end
end

 

Editado por alexpaimel (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por fezeRa
      Alguem consegue me ajudar pf?
      Queria saber se alguem tem um script que a alguma arrow atirando efeito.
      Como se fosse a crystal arrow atirando shiver arrow.
      Porem eu queria colocar outro efeito ao invez de shiver arrow, por isso teria que ser feito em um script.
      E nesse script teria que ser configurado pro dano ser baseado no skill distance e de acordo com o attack que eu colocar no items.xml da flecha.
      Alguem consegue me ajudar pf?
       
    • Por xBlackWolf
      Olá a todos, estou mexendo em um servidor aqui 10.35 e percebi que os paladins não conseguem atacar de longe com os arrows! Acho que é algum bug nos Bows, vi um usuário aqui falando que resolveu pelas lib's mas não tenho idéia de como arrumar, alguem já passou por isso ? ele só ataca de perto, a 1sqm. Se não estiver colado no bixo ele não ataca, como se o item fosse um club ou uma sword...
       
      E também tenho outra dúvida, é possível fazer 1 arrow ser usada apenas com certo arco ?? Como poderia ser feito?
       
       
      Aguardo respostas!
    • Por Sekk
      Olá galera, esses dias ciriei um tópico pedindo um script para mudar o elemento das armas, no caso, o arrow fazia parte. Bom, não achei aqui no fórum um tópico sobre isso, e ninguém postou algum script para que eu pudesse testar. Sendo assim, eu procurei mais na Internet, e achei um tutorial
       
      Bom, vamos ao que interessa:
       
      Multi Elemental Arrow
       
      Vá em data/actions/actions.xml e adicione as seguintes tags:
       
        Ainda em actions, abra a pasta scripts e crie um arquivo chamado transformarrow.lua e adicione o seguinte código:     Pronto, agora você só precisa tirar os seguintes items do loot dos monsters, e mudar seus nomes no items.xml. ID dos arrow fire, energy, ice e earth:   Multi Elemental Shield:   Vá em data/actions/actions.xml e adicione as seguintes tags:   Pronto, agora você só precisa tirar os seguintes items do loot dos monsters, e mudar seus nomes no items.xml. ID dos shields normal, fire, energy, earth e ice:  
       
      Créditos
      Rozinx Team -- Por criar o script e usá-lo em seus servidores
      [T][R][O][N] -- De outro fórum, por postar o script para quem quer o mesmo
      jvcasarin(EU) -- Por compartilhar com vocês do TK o script
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo