Postado Junho 25, 2014 10 anos Este é um post popular. Fala galera do TK, hoje eu venho mais uma vez trazer uma das magias mais incríveis que eu já vi até hoje (sério). A magia original foi feita em outro fórum mas para a versão 10.1... como eu vi que ninguém conseguiu adaptar pra versões inferiores eu decidi criar a minha própria volatile spiderling. Confesso que no começo eu tive muita dificuldade em achar as funções certas mas depois de tentar ajudar o membro @234567890z no suporte eu tive uma epifania. Sem mais delongas eu vou explicar oque o script faz e em seguida ensinar a colocá-lo no seu server.• Explicação: A magia foi feita baseada na personagem Elise do jogo League of Legends: você faz uma cria que anda até os oponentes e se explodem causando dano em area e deixando eles envenenados. Aqui tem um gif da magia funcionando Mostrar conteúdo oculto obs: note que esse gif não fui eu que fiz mas ele demonstra exatamente como a magia funciona. • Instalação: Pra instalá-lo no seu servidor vai ser um pouco complicado pois ele requer diversas modificações... antes de mais nada, coloque essas linhas no seu spells.xml: <instant name="Volatile Spiderling" words="utevo res tera" lvl="40" mana="20" prem="1" selftarget="1" exhaustion="2000" groups="1,2000" icon="88" needlearn="0" event="script" value="especiais/spiderling.lua"> <vocation id="3"/> <vocation id="7"/> </instant> <instant name="poison explosion" words="poison explosion" lvl="0" mana="0" prem="0" aggressive="1" exhaustion="3000" needlearn="1" event="script" value="especiais/newspider.lua"> </instant> Agora você vai ter que criar os dois arquivos na pasta spells\scripts\especiais. Em newspider.lua coloque o seguinte: Mostrar conteúdo oculto local poisonpowder = createConditionObject(CONDITION_POISON) setConditionParam(poisonpowder, CONDITION_PARAM_DELAYED, 1) local damageTable = { {4, -3}, {9, -2}, {20, -1} } for i = 1, #damageTable do local t = damageTable[i] addDamageCondition(poisonpowder, t[1], 4000, t[2]) end local arr = { {0, 1, 0}, {1, 3, 1}, {0, 1, 0} } local area = createCombatArea(arr) function onCastSpell(cid, var) mayNotMove(cid, 1) addEvent(function() if isCreature(cid) then doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 20) doAreaCombatCondition(cid, getThingPos(cid), area, poisonpowder, 255) doSendMagicEffect(getThingPos(cid), 16) doRemoveCreature(cid) end end, 2000) return true end agora em spiderling.lua coloque o seguinte: Mostrar conteúdo oculto function onCastSpell(cid, var) local pos = getPlayerPosition(cid) local maxsummon = 3 local summons = getCreatureSummons(cid) local possible = { {x = pos.x, y = pos.y - 2, z = pos.z, stackpos = 0}, {x = pos.x, y = pos.y + 2, z = pos.z, stackpos = 0}, {x = pos.x - 2, y = pos.y, z = pos.z, stackpos = 0}, {x = pos.x + 2, y = pos.y, z = pos.z, stackpos = 0}, {x = pos.x - 2, y = pos.y - 1, z = pos.z, stackpos = 0}, {x = pos.x + 2, y = pos.y - 1, z = pos.z, stackpos = 0}, {x = pos.x + 2, y = pos.y + 1, z = pos.z, stackpos = 0}, {x = pos.x - 2, y = pos.y + 1, z = pos.z, stackpos = 0}, {x = pos.x - 1, y = pos.y - 2, z = pos.z, stackpos = 0}, {x = pos.x + 1, y = pos.y - 2, z = pos.z, stackpos = 0}, {x = pos.x + 1, y = pos.y + 2, z = pos.z, stackpos = 0}, ---- {x = pos.x, y = pos.y - 1, z = pos.z, stackpos = 0}, {x = pos.x, y = pos.y + 1, z = pos.z, stackpos = 0}, {x = pos.x - 1, y = pos.y, z = pos.z, stackpos = 0}, {x = pos.x + 1, y = pos.y, z = pos.z, stackpos = 0}, {x = pos.x - 1, y = pos.y + 1, z = pos.z, stackpos = 0}, {x = pos.x - 1, y = pos.y - 1, z = pos.z, stackpos = 0}, {x = pos.x + 1, y = pos.y - 1, z = pos.z, stackpos = 0}, {x = pos.x + 1, y = pos.y + 1, z = pos.z, stackpos = 0}, ------ {x = pos.x - 1, y = pos.y + 2, z = pos.z, stackpos = 0} } summonpos = 0 if(table.maxn(summons) < maxsummon) then for i = 1, #possible do if isWalkable(possible[i], true, false, true) then summonpos = possible[i] end end if summonpos ~= 0 then doConvinceCreature(cid, doCreateMonster("Clone Spider", summonpos)) doSendMagicEffect(pos, 12) doSendMagicEffect(summonpos, 10) doCreatureSay(cid, "Volatile Spiderling!", 20) return true else doPlayerSendCancel(cid, "There is not enough room.") doSendMagicEffect(pos, 2) return false end else doSendMagicEffect(pos, 2) doPlayerSendCancel(cid, "You cannot summon more than "..maxsummon.." creature(s).") return false end end Agora feito isso vc vai precisar criar o monstro que usará essa spell.. vá em monster\monsters.xml e adicione a seguinte linha: <monster name="Clone Spider" file="arachnids/newspider.xml"/> agora crie o arquivo data\monsters\arachnids\newspider.xml e adicione o seguinte nele: Mostrar conteúdo oculto <?xml version="1.0" encoding="UTF-8"?> <monster name="Clone Spider" nameDescription="a spider" race="venom" experience="12" speed="152" manacost="210"> <health now="20" max="20"/> <look type="30" corpse="0"/> <targetchange interval="2000" chance="0"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="1"/> <flag convinceable="1"/> <flag pushable="0"/> <flag canpushitems="0"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="poison explosion" interval="1000" range="1" chance="50"/> </attacks> <defenses armor="2" defense="2"/> <elements> <element firePercent="-10"/> </elements> <script> <event name="Spider"/> </script> </monster> Feito isso está quase pronto... só vamos precisar fazer um creaturescript que faça a aranha explodir caso seja morta no meio do caminho, pra isso adicione essa linha em creaturescripts.xml: <event type="preparedeath" name="Spider" script="spider.lua"/> e no arquivo creaturescripts\scripts\spider.lua adicione o seguinte: Mostrar conteúdo oculto local poisonpowder = createConditionObject(CONDITION_POISON) setConditionParam(poisonpowder, CONDITION_PARAM_DELAYED, 1) local damageTable = { {4, -3}, {9, -2}, {20, -1} } for i = 1, #damageTable do local t = damageTable[i] addDamageCondition(poisonpowder, t[1], 4000, t[2]) end local arr = { {0, 1, 0}, {1, 3, 1}, {0, 1, 0} } local area = createCombatArea(arr) function onPrepareDeath(cid, deathList) if isMonster(cid) and getCreatureName(cid):lower() == 'clone spider' then doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 20) doAreaCombatCondition(cid, getThingPos(cid), area, poisonpowder, 255) doSendMagicEffect(getThingPos(cid), 16) end return true end Agora eu vou ensinar vocês a editarem... não tem muito oque mudar, apenas se vc quiser alterar os danos da spell vá em newspider.lua e será possível editar os danos do poison e da explosão: local damageTable = { {4, -3}, {9, -2}, {20, -1} } aqui você muda quantos danos serão e quanto cada um tirará.. no caso serão 4 hits de -3, depois 9 hits de -2 e por fim 20 hits de -1 até o poison parar. Lembrando que esses danos saem de 4 em 4 segundos. Se você quiser que eles sejam mais rápidos é só editar aqui: addDamageCondition(poisonpowder, t[1], 4000, t[2]) (4000 significa 4 segundos). Feito isso será possível editar também a area e o dano da explosão respectivamente em: Area: Citar local arr = { {0, 1, 0}, {1, 3, 1}, {0, 1, 0} } Dano: doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 20) Em vermelho temos o dano mínimo, analogamente, em azul, temos o dano máximo.Em verde é possível editar o efeito da explosão Só lembrando que as edições que forem feitas no newspider.lua devem ser feitas no spider.lua para que a magia tenha graça.. se não o dano da explosão/poison ao explodir será diferente caso ela morrer antes. Em spiderling.lua vc pode editar a quantidade máxima de crias que um player pode ter... o normal está setado para 2 mas vc pode sentir-se livre pra colocar quantas queira. local maxsummon = 2 (Só lembre-se que ao explodir uma aranha pode acertar outra então não é muito bom deixar um numero maior que 3); Se você for daqueles bem chatinhos com a magia você ainda pode editar algumas coisas importantes tais como: O efeito que sai quando ela explode por morte ou pela spell: doSendMagicEffect(getThingPos(cid), 16) O tempo em que ela executa a spell, a chance da spell sair naquele tempo e quantos sqm de distancia a criatura alvo deve estar pra aranha se explodir: <attack name="poison explosion" interval="1000" range="1" chance="50"/> interval = de quantos em quantos segundos ela executa a spell range = distancia em sqm que o alvo deve estar pra que ela execute a spell chance = chance de executar a spell a cada interval (nesse caso a cada 1 segundo tem 50% de chance dela soltar a magia) Você ainda pode editar aqui em vermelho: Citar addEvent(function() if isCreature(cid) then doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 20) doAreaCombatCondition(cid, getThingPos(cid), area, poisonpowder, 255) doSendMagicEffect(getThingPos(cid), 16) doRemoveCreature(cid) end end, 2000) o tempo que leva pra criatura executar a magia.. Por padrão eu deixei 2 segundos, ou seja... eu sumono a aranha, ela vai até o alvo e a cada segundo q ela passa grudada no alvo (1 sqm de distancia) ela tem 50% de chance de ativar a spell e ficar parada no lugar durante 2 segundos até explodir. Se você quiser que ela leve menos tempo pra explodir é só baixar o 2000 (em milisegundos).. Se você quiser aumentar o dano e deixar ela parada por mais tempo até explodir pode editar a vontade aumentando os 2000.• Bom, isso é tudo que dava pra eu explicar... é óbvio que dá pra editar muito mais coisa mas se você não é scripter e não tem muita idéia de como editar eu dei uma ensinada básica doque você está autorizado a mexer. Espero que vocês curtam a spell e deem aquele REP+ pra fortalecer kkkk Eu não pretendia liberar essa spell visto que ela é extremamente complexa e nenhum servidor tem ela, mas, acho que seria muito babaca da minha parte ficar guardando um script tão bonito hahaha. Qualquer erro ou dúvida postem nos comentários que eu tento ajudar. ah, mais uma coisa: Os créditos são 90% meus visto que eu fiz praticamente tudo.. 9% é pro cara que fez a magia original (se vcs derem uma procurada vcs vão ver que não tem quase nada a ver com a minha mas os créditos dele são por ele ter me dado a idéia) e 1% pro cara no suporte que me pediu ajuda numa spell do mesmo gênero e me fez correr atrás de uma forma de fazer essa magia pra versões inferiores a TFS 1.0 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 Junho 25, 2014 10 anos Segura meu rep, que spell fodaaaa! Parabéns cara, ótimo script, eu mesmo vou usar em meu servidor. *---------* Obrigado pelo conteúdo, abraços!
Postado Junho 25, 2014 10 anos Autor Este é um post popular. é uma spell realmente muito foda e muito útil em servidores de RPG... só fiquei meio triste porque dos 14 usuários que viram o tópico apenas dois curtiram :/ achei que ia fazer mais sucesso 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 Junho 26, 2014 10 anos Que fora kkkkkkk me lembro mt a elise quando ela ulta pena que seria mais legal em otserv 8.7 + :/
Postado Junho 26, 2014 10 anos Autor funciona em todos os TFS pelo que eu sei... se der algum erro posta aqui que eu faço as alterações pra rodar certinho EDIT: ATENÇÃO GALERA QUE ESTAVA USANDO A SPELL NO SEU SERVER: A spell dava erro quando não havia espaço suficiente pra ser criado a spider.. era um erro bobo mas enxia o saco qnd um monte de gente usava ao mesmo tempo, pensando nisso eu decidi mudar a spell um pouco e agora ela tá funcionando igual o utevo res. Oque isso muda pra vocês? Nada, só não vai retornar o erro. Peço que quem não queria ficar olhando uma mensagem de erro toda hora substitua a spell anterior pela nova (é só trocar o spiderling.lua antigo pelo novo que eu atualizei) Grato. Obs: Se alguém achar qualquer erro ou qualquer coisa me avisa aqui que eu tento corrigir :] Editado Junho 26, 2014 10 anos por xWhiteWolf (veja o histórico de edições) 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)
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.