Histórico de Curtidas
-
Vinicius Sousa deu reputação a gerson em Rajada de FlechasCriação de Spell "Rajada de Flechas"
Ola turma venho trazer hoje o meu primeiro tutorial, hoje editei uma magia que ficou muito legar e gostaria de por para vocês
A magia como o próprio nome já diz, consiste quanto o paladin escreve as palavras magicas "lançar uma rajada de flechas" atingindo todos os inimigos a frente, a ideia veio jogando League Of Legends do personagem "Asher"
Bem.... mãos a Obra
1º) Vá a pasta de seu OTServer e logo em seguida (Data>Spell>Attack) copie qualquer magia existente lá, (arquivo.lua) e cole e renomeie com o nome "rajada de flechas".
2º) Abra o arquivo em bloco de notas, apague tudo que tem la dentro e cole isso, salve e feche:
3º) Agora vamos adicionar a Tag.xml, para isso va em: data/spell/spell.xml, abra o arquivo "spell.xml" e procure a parte Attack Spell e adicione essa tag
Pronto com a magia feita agora é só se divertir
Foto Spell
A foto não ficou muito boa, mais ta ai:
Obrigado Gostou ?
comenta e da +REP não custa nada
Creditos:
90% = Gerson Souto (eu)
10% = League Of Legends (mi deu espiração)
-
Vinicius Sousa deu reputação a xWhiteWolf em Puxar/Empurrar (conjunto de spells)Fala galera do TK, hoje vim trazer pra vocês um conjuntinho de spells que eu criei com base em uma spell que achei aqui no fórum mesmo
Os créditos da spell base que eu utilizei são do OneShot
São duas spells bem simples, uma puxa o oponente pra perto e a outra arremessa ele longe.
Idéia original tirada dos servidores de Avatar que possuem esse tipo de magia pra nação do Ar haha.
Aqui vão os scripts:
empurrararea.lua
Agora algumas imagens (não deu pra captar muito bem oque a spell faz porque ela é composta por diferentes movimentos, sugiro que vcs instalem e testem)
Puxar:
Empurrar
-
Vinicius Sousa deu reputação a lutavio2 em Como criar TalkAction de spellbook (!spells)e ae pessoal!! vou ensinar vcs a colocarem a uma TalkAction
no seu ot 8.6 que serve para vcs verem o spellbook sem
precisar te-lo apenas digitando !spells.
1º: primeiramente va na pasta do seu ot vá em data/talkactions e clique no arquivo xml chamado talkactions (vc pode abri-lo com bloco de notas ou com OTScript Live!) adicione a linha de comando em player se preferir
<talkaction words="!spells" event="script" value="talkspellbook.lua"/>
obs*: coloque como os outros! salve e feche
2º: depois vá em data/talkactions/scripts copie e cole um arquivo .lua (formato LUA) renomeie para talkspellbook abra-o apague tudo e cole:
function onSay(cid, words, param, channel)
local count = getPlayerInstantSpellCount(cid)
local text = ""
local t = {}
for i = 0, count - 1 do
local spell = getPlayerInstantSpellInfo(cid, i)
if spell.level ~= 0 then
if spell.manapercent > 0 then
spell.mana = spell.manapercent .. "%"
end
table.insert(t, spell)
end
end
table.sort(t, function(a, b) return a.level < b.level end)
local prevLevel = -1
for i, spell in ipairs(t) do
local line = ""
if prevLevel ~= spell.level then
if i ~= 1 then
line = "\n"
end
line = line .. "Spells for Level " .. spell.level .. "\n"
prevLevel = spell.level
end
text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n"
end
doShowTextDialog(cid, words, text)
return TRUE
end
SALVE E Feche
agora abra seu ot e com qualquer player digite !spells que vai abri o spellbook! gente esse é meu primeiro post ake no tibia king espero que tenham gostado (clika em gostei pra me ajuda)
-
Vinicius Sousa deu reputação a Winfernus em Entendendo Scripts,Rune,Spells,Monsters,etc...ANTES DE TUDO ME AJUDE! NÃO SEI SE POSTEI NA ÁREA CERTA! Por Favor Mova!
Aprenda a fazer seus próprios Monstros, Spells e NPC
Basicamente scripts sao o conjunto dos códigos que formam os arquivos de players, monster, spells, etc.
Nesse
tutorial vou ensinar tudo, pra vc sair daqui fazendo monstros, spells e
tudo mais. E se no final houver alguma duvida poste aqui que serei
grato em ajudar. Neste Tutorial existem varios comandos básicos, bons
para iniciantes, parte por parte é explicada, visando um maior
entendimento sobre o assunto.
Vamos lá!
SPELLS
Primeiro vamos falar sobre as spells
Existem
as spells de instant e as spells de rune, as spells de instant sao
aquelas em q o monstro usa nele, e as de runa ele vai usar em vc. Entao
a primeira coisa que precisamos fazer é decidir se vamos fazer uma
spell de runa ou de instant, vou mostrar aqui apenas um exemplo, se nao
o topico ficara muito grande. Vamos começar, seguindo um exemplo de uma
magia minha:
Primeiro, crie um arquivo chamado crossover.lua, na pasta Data>Spells>Instant
Começamos o script com isso:
CODE
area = {
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
}
Essa
é a area em que a magia ira pegar, o numero 0 simboliza os espaços que
a magia nao pega e os numeros 1, os lugares onde acontecerá a magia, no
exemplo acima, é uma magia em forma de cruz
Pulamos entao uma linha e acrescentamos isso:
CODE
attackType = ATTACK_PHYSICAL
needDirection = false
areaEffect = NM_ME_YELLOW_RINGS
animationEffect = NM_ANI_NONE
hitEffect = NM_ME_HIT_AREA
damageEffect = NM_ME_DRAW_BLOOD
animationColor = BLACK_WHITE
offensive = true
drawblood = true
Vamos às explicações:
attackType = o tipo de ataque que será, no exemplo será um ataque fisico, mas tbm poderia ser um ataque de fogo, ou de energy
needDirection = se o ataque precisa de direção, como as firewaves
areaEffect = o tipo de animação que saira na area na magia
animationEffect = a animação de quando o player sofrer dano da magia
damageEffect = o efeito que saira quando o player receber o dano
animationColor = a cor da animação da Magia
offensive = se a magia é de ataque ou nao
drawblood = se embaixo do player vai sair sangue quando ele receber a magia
Explicado, pulamos uma linha e adicionamos:
CODE
UltimateExplosionObject
= MagicDamageObject(attackType, animationEffect, hitEffect,
damageEffect, animationColor, offensive, drawblood, 0, 0)
Essa é a função que fara com q oq explicamos acima funcione, pulamos outra linha e acrescentamos:
CODE
function onCast(cid, creaturePos, level, maglv, var)
centerpos = {x=creaturePos.x, y=creaturePos.y, z=creaturePos.z}
n = tonumber(var)
if n ~= nil then
-- bugged
-- ultimateExplosionObject.minDmg = var+0
-- UltimateExplosionObject.maxDmg = var+0
UltimateExplosionObject.minDmg = 0
UltimateExplosionObject.maxDmg = 0
else
UltimateExplosionObject.minDmg = (level * 2 + maglv * 3) * 2.6 - 30
UltimateExplosionObject.maxDmg = (level * 2 + maglv * 3) * 3.0
end
Essa é a fórmula do Dano que o player irá tomar ao receber a magia, agora pra finalizar adiconamos:
CODE
return doAreaMagic(cid, centerpos, needDirection, areaEffect, area, UltimateExplosionObject:ordered())
end
Pronto ja terminamos nossa primeira spell, agora para faze-la funcionar precisamos acrescenta-la aou arquivo spells.xml
vamos lá, na pasta Data>Spells abra o arquivo spells.xml e na sessao de INSTANT, acrescente esta linha:
CODE
spell
name="CrossOver" words="crossover" maglv="12" mana="160"
enabled="1">/>
Explicando:
spell name = nome da magia (pode ser qualquer um)
words = as palavras magicas que terao que ser ditas pra magia funcionar (tem q ser igual ao nome do script da magia)
magvl = maglv necessario para usar essa magia
mana = mana que será gasta
enabled = se a magia esta abilitada ou nao
vocation id = para quais vocações essa magia funcionará, no caso acima ela so funciona pra sorc e druid
------------------
MONSTERS
Spell criada, vamos passar para o Monstro que usara esta spell
Crie um arquivo .xml com um nome qualquer na pasta Data>Monsters
CODE
-
Vinicius Sousa deu reputação a Godfather em [NPC] Mensageira - Players deixam mensagens num bloco de notasOi. Eu fiz esse NPC para que ele possa deixar mensagens em um bloco de notas para que os administradores vejam. É uma forma de comunicação com os jogadores.
[data/npc/Mensageira.xml]
<npc name="Mensageira" script="data/npc/scripts/messenger.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="347" head="20" body="100" legs="50" feet="99" corpse="2212"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Eu tenho a função de deixar mensagens para que o administrador possa ler mais tarde, como críticas, ou simplesmente um bom dia. Gostaria de deixar uma {mensagem}?"/> </parameters> </npc> [data/npc/scripts/messenger.lua]
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local moneyTo = {} local playerTo = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end if talkState[cid] == 1 then selfSay("A mensagem \""..msg.."\" foi deixada. Obrigado pela contribuicao! Sua mensagem sera revisada por um administrador.", cid) local texto = "" local read = io.open("mensagens.txt", "r") texto = read:read("*all") read:close() local write = io.open("mensagens.txt", "w") write:write(texto.."["..getPlayerName(cid)..", "..os.date("%c").."]: \""..msg.."\"\n") write:close() talkState[cid] = 0 elseif msgcontains(msg, 'mensagem') then selfSay("Escreva a mensagem que voce gostaria de deixar. Pede-se rever o texto e escrever claramente o que deseja. Spam causa banimento por IP.", cid) talkState[cid] = 1 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Aí você deixa ele no templo, sei lá, faz qualquer coisa Só pra avisar, o mensagens.txt fica na pasta raiz do servidor, lá onde tem config.lua