Ir para conteúdo

Vinicius Sousa

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Vinicius Sousa deu reputação a gerson em Rajada de Flechas   
    Criaçã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)
  2. Gostei
    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 



  3. Gostei
    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)
  4. Gostei
    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
  5. Gostei
    Oi. 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

Informação Importante

Confirmação de Termo