Postado Fevereiro 24, 2015 10 anos 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: 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 Fevereiro 24, 2015 10 anos 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
Postado Fevereiro 24, 2015 10 anos 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 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 (obg ao @Beeny por fazer essa linda sign <3)
Postado Fevereiro 24, 2015 10 anos Belo script! Vai ajudar muita gente Te ajudei?? REP + e ficamos quites... http://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'> Atenciosamente, Daniel. Abraços! Meus tutoriais: Programação: Resolvendo QUALQUER erro na data base. Scripts (system's, creaturescripts, mod's, NPC's, etc): (Sistema) GOD Ambient Light Full. Adicionando novas mounts ao servidor [NPC] Papai Noel que dá presente todo ano. Web-site: Resolvendo problema de caracteres especiais em PHP Formatando textos em PHP! Mudando a cor, tamanho, fonte, etc. Criando e configurando tabelas para paginas PHP
Postado Dezembro 19, 2019 5 anos 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 Dezembro 19, 2019 5 anos por alexpaimel (veja o histórico de edições)
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.