Undead Slayer 0 #1 Postado 24 Janeiro, 2009 (editado) ------------------------------- Nome: Arrow Fury Versão: 8.10 ~ 8.40 Tipo do script: Spells Servidor Testado: The Forgotten Server 0.3 Beta 2 Autor: Undead Slayer ------------------------------- INOVAÇÃO Apos seculos sem postar magia, trago para você, uma nova magia. Diferente daquelas magias que as formulas são programadas pelo propio Server, esta magia possui uma formula propia, ou seja, o dano dela não é nem irreal, e nem muito baixo, ou seja, magia ideal para servidores serios com experiencia Baixa Como é a Magia A magia simplesmente considera para que lado o char esta virado, e solta em uma area na sua frente, uma quanditade indefinida de arrows (de 12 a 20), e o dano é baseado no skill de distance e no tipo de arrow lançada (Pode sair varios tipos de arrows, - Flaming, Earth, Flash, Shiver, Burst, Poison, Onyx, Sniper e Arrow Normal - depende da sorte do cara ), lembrando que a spell é para Paladin e Royal Paladin. O Script Para adicionar esta spell em seu servidor, va na pasta data/spells/scripts, crie uma subpasta chamada 'news spells', crie um arquivo de extensão .LUA nesta pasta (Ou copie um arquivo ja existente com essa mesma extenção, e cole dentro da pasta criada), coloque o nome deste arquivo como 'Arrow Fury', (Se você copiou um arquivo, apague tudo dentro dele) e coloque isto dentro do arquivo: [spoiler_name=Arrow Fury]--- Arrow Fury Spell --- --- Made By Undead Slayer --- function onCastSpell(cid, var) --- Vars --- local arrow_type = math.random(1,9) local arrow_types = { [1] = {ani = CONST_ANI_ARROW, me = CONST_ME_HITAREA, damage = COMBAT_PHYSICALDAMAGE, random = math.random(1,5)}, [2] = {ani = CONST_ANI_POISONARROW, me = CONST_ME_POISONAREA, damage = COMBAT_POISONDAMAGE, random = math.random(2,6)}, [3] = {ani = CONST_ANI_BURSTARROW, me = CONST_ME_EXPLOSIONHIT, damage = COMBAT_FIREDAMAGE, random = math.random(3,7)}, [4] = {ani = CONST_ANI_FLAMMINGARROW, me = CONST_ME_FIREAREA, damage = COMBAT_FIREDAMAGE, random = math.random(5,10)}, [5] = {ani = CONST_ANI_FLASHARROW, me = CONST_ME_ENERGYHIT, damage = COMBAT_ENERGYDAMAGE, random = math.random(5,10)}, [6] = {ani = CONST_ANI_SHIVERARROW, me = CONST_ME_ICEATTACK, damage = COMBAT_ICEDAMAGE, random = math.random(5,10)}, [7] = {ani = CONST_ANI_EARTHARROW, me = CONST_ME_CARNIPHILA, damage = COMBAT_EARTHDAMAGE, random = math.random(5,10)}, [8] = {ani = CONST_ANI_SNIPERARROW, me = CONST_ME_GROUNDSHAKER, damage = COMBAT_PHYSICALDAMAGE, random = math.random(6,12)}, [9] = {ani = CONST_ANI_ONYXARROW, me = CONST_ME_GROUNDSHAKER, damage = COMBAT_PHYSICALDAMAGE, random = math.random(7,15)} } local send_arrows = math.random(12,20) local send_storage = 1000000 local parameters = { cid = cid, var = var, send_storage = send_storage, send_arrows = send_arrows, arrow_type = arrow_type, arrow_types = arrow_types } --- Function --- addEvent(onSendAttack,100,parameters) setPlayerStorageValue(cid,send_storage,0) end function onSendAttack(parameters) --- Vars --- local dir = getPlayerLookDir(parameters.cid) local distance = getPlayerSkillLevel(parameters.cid,SKILL_DISTANCE) local formula = distance*(parameters.arrow_types[parameters.arrow_type].random) local min = formula-50 local max = formula+50 local cid_pos = getCreaturePosition(parameters.cid) local random_pos = math.random(1,2) local the_random_1 = { [1] = cid_pos.x+math.random(0,3), [2] = cid_pos.x-math.random(0,3) } local the_random_2 = { [1] = cid_pos.y+math.random(0,3), [2] = cid_pos.y-math.random(0,3) } local sends_pos = { [0] = {x=the_random_1[random_pos], y=cid_pos.y-math.random(1,4), z=cid_pos.z, stackpos=255}, [1] = {x=cid_pos.x+math.random(1,4), y=the_random_2[random_pos], z=cid_pos.z, stackpos=255}, [2] = {x=the_random_1[random_pos], y=cid_pos.y+math.random(1,4), z=cid_pos.z, stackpos=255}, [3] = {x=cid_pos.x-math.random(1,4), y=the_random_2[random_pos], z=cid_pos.z, stackpos=255} } local send_pos = sends_pos[dir] local send_status = getPlayerStorageValue(parameters.cid,parameters.send_storage) local creature = getThingfromPos(send_pos) --- Function --- if send_status < parameters.send_arrows then addEvent(onSendAttack,100,parameters) doSendDistanceShoot(cid_pos,send_pos,parameters.arrow_types[parameters.arrow_type].ani) doSendMagicEffect(send_pos,parameters.arrow_types[parameters.arrow_type].me) setPlayerStorageValue(parameters.cid,parameters.send_storage,send_status+1) if isCreature(creature.uid) == TRUE then doTargetCombatHealth(parameters.cid, creature.uid, parameters.arrow_types[parameters.arrow_type].damage, -min, -max, CONST_ME_NONE) end end end[/spoiler_name] E para finalizar, abra o arquivo spells.xml e adicione esta TAG: [spoiler_name=TAG]<instant name="Arrow Fury" words="exevo con mas hur" lvl="40" mana="300" direction="1" exhaustion="2000" needlearn="0" script="news spells/Arrow Fury.lua"> <vocation name="Paladin"/> <vocation name="Royal Paladin"/> </instant>[/spoiler_name] Editando Se você quiser mudar o lvl, as palavras ou a mana nescessaria, edite as seguintes partes: *De vermelho, são as palavras usadas para invocar a spell *De Azul Mais escuro, é o lvl nescessario para invocar a spell *De Azul Claro, é a mana nescessaria para invocar a spell [spoiler_name=Screen Shot][/spoiler_name] Creditos: Undead Slayer Se forem postar em outro lugar, coloquem meus creditos (Isso vale pros X-PERTINHOS de plantão do X-TIBIA :@) Comentem, critiquem, reclamem, ou elogie. Seu comentario é muito importante. Estou aberto a qualquer comentario, dica, reclamação, ou afins. (Y) Editado 24 Janeiro, 2009 por Undead Slayer Colocar Screen Shot Compartilhar este post Link para o post
Mock 32 #2 Postado 24 Janeiro, 2009 Que spell mais mal feita o.o! XD zuera vei ta massa sei q vc apanho p faze ela. Aprovado Compartilhar este post Link para o post
Undead Slayer 0 #3 Postado 24 Janeiro, 2009 apanhei pra faze essa? nem... se eu tivesse apanhado pra fazer essa, imagina o que eu tinha feito pra fazer a Arrow Shower.... auehuaehuaheuaehae Compartilhar este post Link para o post
Vinah 0 #4 Postado 24 Janeiro, 2009 gostei, mto boa Dead Slayer =D local send_arrows = math.random(0,700) ;D Compartilhar este post Link para o post
Undead Slayer 0 #5 Postado 24 Janeiro, 2009 OMG, 700 arrows, aeuhae, DEAD na hora o alvo Compartilhar este post Link para o post
MotoBoy 0 #6 Postado 24 Janeiro, 2009 sauhsasauhsauh ainda acho qeu o 700 ia cair bem uhaasasauhsa curti muuuito a magia babei xD realmente muito boa.. formula 100% cara.. pela primeira vez vi um script que eu num possu criticar =/ sahahuahusa parabéns!!! Hail Undead~~ flws~~ Compartilhar este post Link para o post
henrique_ms 0 #7 Postado 25 Janeiro, 2009 Nossa...muito bom bem criativa gosteiii =] aprovadoo ======--------============-------------========= Meu Servidor: [spoiler_name=Trabalhos]4 novas vocações 1 Magia nova [/spoiler_name] [spoiler_NAME=Recomendo] [/spoiler_NAME] Compartilhar este post Link para o post
Armageddom 0 #8 Postado 28 Janeiro, 2009 Muito boa essa sua Spell, com certeza futuramente colocarei no meu Servidor. Valeu e muito obrigado por compartilhar com nois os membros do "Otnet". Aprovado. Compartilhar este post Link para o post
Seven 0 #9 Postado 29 Janeiro, 2009 Eita, sempre gostei desses tipo de spell. Parabéns mano... Ultimamente tem bastante spell rox aqui. Gostei mesmo, (Y) Até... Compartilhar este post Link para o post
Jereziah 0 #10 Postado 29 Janeiro, 2009 Gostei pra Caramba. Sempre sou Paladin/RP. Só que nunca tem magia boa de ATK. Thanks pela magia... Muito bem feita. Até mais! • DarkHunter Compartilhar este post Link para o post
CM Bigorna~* 0 #11 Postado 6 Fevereiro, 2009 Aki nun funfo =( fis direitinhu como vc mando mais msm assim nao funfou... tentei num slayer yourots v9 8.4.. Compartilhar este post Link para o post
wilsonic10 0 #14 Postado 14 Fevereiro, 2009 rox otima magia parabens mano! Compartilhar este post Link para o post
DiegooooxD 0 #15 Postado 20 Fevereiro, 2009 axei bota rox movido~~ Compartilhar este post Link para o post
Scryder 0 #16 Postado 20 Fevereiro, 2009 (editado) Aqui tá dando erro na hora de usa (tava com uns erro de espaço que arrumei mas agora da otra coisa ¬¬) Aparece isso: .../Arrow Fury.lua:46: attempt to call global 'getPlayerSkillLevel' <a nil value> stack traceback: .../Arrow Fury.lua:46: in function <data/spells/scripts/attack/Arrow Fury.lua:40> e não sai nada dai >.> --Editado Para quem não deu certo troque as coisas do arquivo por isso: --- Arrow Fury Spell ------ Made By Undead Slayer --- function onCastSpell(cid, var) --- Vars --- local arrow_type = math.random(1,9) local arrow_types = { [1] = {ani = CONST_ANI_ARROW, me = CONST_ME_HITAREA, damage = COMBAT_PHYSICALDAMAGE, random = math.random(1,5)}, [2] = {ani = CONST_ANI_POISONARROW, me = CONST_ME_POISONAREA, damage = COMBAT_POISONDAMAGE, random = math.random(2,6)}, [3] = {ani = CONST_ANI_BURSTARROW, me = CONST_ME_EXPLOSIONHIT, damage = COMBAT_FIREDAMAGE, random = math.random(3,7)}, [4] = {ani = CONST_ANI_FLAMMINGARROW, me = CONST_ME_FIREAREA, damage = COMBAT_FIREDAMAGE, random = math.random(5,10)}, [5] = {ani = CONST_ANI_FLASHARROW, me = CONST_ME_ENERGYHIT, damage = COMBAT_ENERGYDAMAGE, random = math.random(5,10)}, [6] = {ani = CONST_ANI_SHIVERARROW, me = CONST_ME_ICEATTACK, damage = COMBAT_ICEDAMAGE, random = math.random(5,10)}, [7] = {ani = CONST_ANI_EARTHARROW, me = CONST_ME_CARNIPHILA, damage = COMBAT_EARTHDAMAGE, random = math.random(5,10)}, [8] = {ani = CONST_ANI_SNIPERARROW, me = CONST_ME_GROUNDSHAKER, damage = COMBAT_PHYSICALDAMAGE, random = math.random(6,12)}, [9] = {ani = CONST_ANI_ONYXARROW, me = CONST_ME_GROUNDSHAKER, damage = COMBAT_PHYSICALDAMAGE, random = math.random(7,15)} } local send_arrows = math.random(12,20) local send_storage = 1000000 local parameters = { cid = cid, var = var, send_storage = send_storage, send_arrows = send_arrows, arrow_type = arrow_type, arrow_types = arrow_types } --- Function --- addEvent(onSendAttack,100,parameters) setPlayerStorageValue(cid,send_storage,0) end function onSendAttack(parameters) --- Vars --- local dir = getPlayerLookDir(parameters.cid) local distance = getPlayerSkill(cid, 4) local formula = distance*(parameters.arrow_types[parameters.arrow_type].random) local min = formula-50 local max = formula+50 local cid_pos = getCreaturePosition(parameters.cid) local random_pos = math.random(1,2) local the_random_1 = { [1] = cid_pos.x+math.random(0,3), [2] = cid_pos.x-math.random(0,3) } local the_random_2 = { [1] = cid_pos.y+math.random(0,3), [2] = cid_pos.y-math.random(0,3) } local sends_pos = { [0] = {x=the_random_1[random_pos], y=cid_pos.y-math.random(1,4), z=cid_pos.z, stackpos=255}, [1] = {x=cid_pos.x+math.random(1,4), y=the_random_2[random_pos], z=cid_pos.z, stackpos=255}, [2] = {x=the_random_1[random_pos], y=cid_pos.y+math.random(1,4), z=cid_pos.z, stackpos=255}, [3] = {x=cid_pos.x-math.random(1,4), y=the_random_2[random_pos], z=cid_pos.z, stackpos=255} } local send_pos = sends_pos[dir] local send_status = getPlayerStorageValue(parameters.cid,parameters.send_storage) local creature = getThingfromPos(send_pos) --- Function --- if send_status < parameters.send_arrows then addEvent(onSendAttack,100,parameters) doSendDistanceShoot(cid_pos,send_pos,parameters.arrow_types[parameters.arrow_type].ani) doSendMagicEffect(send_pos,parameters.arrow_types[parameters.arrow_type].me) setPlayerStorageValue(parameters.cid,parameters.send_storage,send_status+1) if isCreature(creature.uid) == TRUE then doTargetCombatHealth(parameters.cid, creature.uid, parameters.arrow_types[parameters.arrow_type].damage, -min, -max, CONST_ME_NONE) end end end --Editado2 Não tenho certeza se deu certo pq o dano ta mt baxo '-' Editado 20 Fevereiro, 2009 por Arcane Slayer consegui /o/ - ou naõ '-' Compartilhar este post Link para o post
Gordow 0 #17 Postado 21 Fevereiro, 2009 bem legal mesmo a magia. só que por uns erros de digitação, ta dando ero no ot. pra quem não intende fica dificil intão vo ajudar voces ai --- Arrow Fury Spell ------ Made By Undead Slayer --- function onCastSpell(cid, var) --- Vars --- local arrow_type = math.random(1,9) local arrow_types = { [1] = {ani = CONST_ANI_ARROW, me = CONST_ME_HITAREA, damage = COMBAT_PHYSICALDAMAGE, random = math.random(1,5)}, [2] = {ani = CONST_ANI_POISONARROW, me = CONST_ME_POISONAREA, damage = COMBAT_POISONDAMAGE, random = math.random(2,6)}, [3] = {ani = CONST_ANI_BURSTARROW, me = CONST_ME_EXPLOSIONHIT, damage = COMBAT_FIREDAMAGE, random = math.random(3,7)}, [4] = {ani = CONST_ANI_FLAMMINGARROW, me = CONST_ME_FIREAREA, damage = COMBAT_FIREDAMAGE, random = math.random(5,10)}, [5] = {ani = CONST_ANI_FLASHARROW, me = CONST_ME_ENERGYHIT, damage = COMBAT_ENERGYDAMAGE, random = math.random(5,10)}, [6] = {ani = CONST_ANI_SHIVERARROW, me = CONST_ME_ICEATTACK, damage = COMBAT_ICEDAMAGE, random = math.random(5,10)}, [7] = {ani = CONST_ANI_EARTHARROW, me = CONST_ME_CARNIPHILA, damage = COMBAT_EARTHDAMAGE, random = math.random(5,10)}, [8] = {ani = CONST_ANI_SNIPERARROW, me = CONST_ME_GROUNDSHAKER, damage = COMBAT_PHYSICALDAMAGE, random = math.random(6,12)}, [9] = {ani = CONST_ANI_ONYXARROW, me = CONST_ME_GROUNDSHAKER, damage = COMBAT_PHYSICALDAMAGE, random = math.random(7,15)} } local send_arrows = math.random(12,20) local send_storage = 1000000 local parameters = { cid = cid, var = var, send_storage = send_storage, send_arrows = send_arrows, arrow_type = arrow_type, arrow_types = arrow_types } --- Function --- addEvent(onSendAttack,100,parameters) setPlayerStorageValue(cid,send_storage,0) end function onSendAttack(parameters) --- Vars --- local dir = getPlayerLookDir(parameters.cid) local distance = getPlayerSkillLevel(parameters.cid,SKILL_DISTANCE) local formula = distance*(parameters.arrow_types[parameters.arrow_type].random) local min = formula-50 local max = formula+50 local cid_pos = getCreaturePosition(parameters.cid) local random_pos = math.random(1,2) local the_random_1 = { [1] = cid_pos.x+math.random(0,3), [2] = cid_pos.x-math.random(0,3) } local the_random_2 = { [1] = cid_pos.y+math.random(0,3), [2] = cid_pos.y-math.random(0,3) } local sends_pos = { [0] = {x=the_random_1[random_pos], y=cid_pos.y-math.random(1,4), z=cid_pos.z, stackpos=255}, [1] = {x=cid_pos.x+math.random(1,4), y=the_random_2[random_pos], z=cid_pos.z, stackpos=255}, [2] = {x=the_random_1[random_pos], y=cid_pos.y+math.random(1,4), z=cid_pos.z, stackpos=255}, [3] = {x=cid_pos.x-math.random(1,4), y=the_random_2[random_pos], z=cid_pos.z, stackpos=255} } local send_pos = sends_pos[dir] local send_status = getPlayerStorageValue(parameters.cid,parameters.se nd_storage) local creature = getThingfromPos(send_pos) --- Function --- if send_status < parameters.send_arrows then addEvent(onSendAttack,100,parameters) doSendDistanceShoot(cid_pos,send_pos,parameters.ar row_types[parameters.arrow_type].ani) doSendMagicEffect(send_pos,parameters.arrow_types[parameters.arrow_type].me) setPlayerStorageValue(parameters.cid,parameters.se nd_storage,send_status+1) if isCreature(creature.uid) == TRUE then doTargetCombatHealth(parameters.cid, creature.uid, parameters.arrow_types[parameters.arrow_type].damage, -min, -max, CONST_ME_NONE) end end end só essas. arrow_types e send_storage só ajeitar as palavras e já esta funcionando.(Y) Compartilhar este post Link para o post
f@bio 0 #18 Postado 24 Fevereiro, 2009 Muito fera esta tua spell, vc trabalha com exclusividade???? por favor mande uma PM caso fassa, eu pago em OT$s... Compartilhar este post Link para o post
Tozim 0 #19 Postado 27 Fevereiro, 2009 ate q enfim uma magia seria, vo usar ela no meu ot obrigado pelo otimo trabalho! Compartilhar este post Link para o post
luan1234 0 #20 Postado 28 Fevereiro, 2009 Aprovado.,Gostei.... Abraços,Luan. Compartilhar este post Link para o post