Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 12/03/13 em %

  1. meubk

    Auto Target

    autotarget.xml: [LUA]<?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Auto Target System" version="1.0" author="xOtservx" enabled="yes"> <event type="login" name="AutoTargetLogin" event="script"><![CDATA[ function onLogin(cid) return registerCreatureEvent(cid, "AutoTarget") end]]></event> <event type="think" name="AutoTarget" event="script"><![CDATA[ function onThink(cid, interval) if getPlayerStorageValue(cid, 25471) ~= "on" then return true end if getCreatureTarget(cid) then return true end local monsterScreen = {} for x = -7, 7 do for y = -5, 5 do creature = getTopCreature({x = getThingPos(cid).x + x, y = getThingPos(cid).y + y, z = getThingPos(cid).z}).uid if isMonster(creature) then table.insert(monsterScreen, creature) end end end if #monsterScreen == 0 then return true end monsterTarget = #monsterScreen[1] if #monsterTarget > 1 then local type = type(getPlayerStorageValue(cid, 25472)) ~= "string" and "distancia" or getPlayerStorageValue(cid, 25471) for i = 1, #monsterScreen do if type == "distancia" then if getDistanceBetween(getThingPos(monsterScreen[i]), getThingPos(cid)) < getDistanceBetween(getThingPos(monsterTarget), getThingPos(cid)) then monsterTarget = monsterScreen[i] end elseif type == "forte" then if getCreatureMaxHealth(monsterScreen[i]) > getCreatureMaxHealth(monsterTarget) then monsterTarget = monsterScreen[i] end end end end doMonsterSetTarget(cid, monsterTarget) return true end]]></event> <talkaction words="!autotarget;/autotarget" event="buffer"><![CDATA[ function onSay(cid, words, param) if param == "on" then setPlayerStorageValue(cid, 25471, "on") return doPlayerSendTextMessage(cid, 27, "Você ligou o sistema de auto target, configure ele para !autotarget distancia ou !autotarget forte .") elseif param == "off" then setPlayerStorageValue(cid, 25471, "off") return doPlayerSendTextMessage(cid, "27, Você desligou o sistema de auto target.") elseif param == "distancia" or param "forte" then if getPlayerStorageValue(cid, 25471) ~= "on" then return doPlayerSendTextMessage(cid, "27, Você precisa estar com o sistema de auto target ligado (!autotarget on)") end setPlayerStorageValue(cid, 25472, param) return doPlayerSendTextMessage(cid, "27, Você trocou o modo do auto target para " .. param .. ".") end end]]></talkaction> </mod>[/LUA] coloque o xml na pasta mods do ot. comandos:
    2 pontos
  2. 1 ponto
  3. 1 ponto
  4. Omega

    Tour Mod

    Informações Apresento-lhes um mod simples, mas muito útil para servidores com mapas próprios. Ele faz com que o jogador passe por certos locais, sem poder se mexer nem entrar em combate, recebendo caixas de diálogo com informações sobre cada local Basta adicionar o código na pasta mods do seu servidor como tourMod.xml O comando é ativado in-game usando /tour ou !tour Só pode ser ativado em PZ A duração de cada posição é configurável Caso haja algum erro, GMs podem usar o comando /tour debug para finalizar o tour de todos os jogadores online Código Configuração As posições para as quais o jogador será levado e o tempo pelo qual ele ficará em cada posição são configuráveis em tourLocations, seguindo o padrão Depois de cada duração, você deve configurar a mensagem que o jogador irá receber em tourDesc, usando a mesma numeração
    1 ponto
  5. Benny

    Recomeçando ! :3

    HELLOO MY sexFRIENDS Bom, tinha um tempo aí que eu realmente trabalhava em algo, ( uns 5 meses, por aí ) colocando c4d, etc talz e talz.. Hoje eu fiz uma aq e pá. Tô com preguiça de escrever, falai oq tu acho da sign e mimimimimi
    1 ponto
  6. Benny

    [ Mini - Tutorial ] Efeito básico !

    Olá pessoal :3 Hoje vou ensinar um efeito básico.. Digamos que você quer deixar uma parte de seu job mais "chamativa"... Exemplo : Vamos lá 1 - Bom depois de terminar seu job, crie uma nova camada e passe um brush preto, padrão, deixando somente a parte onde vamos aplicar nosso efeito vazia. 2 - Após isso selecione a camada do brush, e mude o blend mode para "Color", ou "Cor" Ficando assim :   Bom chegamos ao fim :3 Créditos : Flinkton ( Uma das poucas coisas que eu descobri sozinho ;-; ). Abraços, Flink ;3      
    1 ponto
  7. zipter98

    [Encerrado] Duvidas da pasta Mods

    Como o próprio nome sugere, MOD = modificação. Não tem muito segredo; MODs em tibia são, em geral, vários arquivos "unidos" em um só; ou seja, modificações (hue). Por exemplo, ao invés de você criar vários arquivos em lib, creaturescripts, actions, etc, você pode simplesmente juntá-los em um mod. (claro, não basta apenas dar um ctrl c nos arquivos e ctrl v no arquivo mod, deve ser seguido um modelo.) Além de tudo, a instalação de um mod é muito fácil, prática e rápida. A pasta MODS tem como função "armazenar" essas modificações. As alterações causadas por mods são as alterações que os arquivos presentes neles causariam normalmente, se estivessem "separados" nos outros arquivos da data.
    1 ponto
  8. Tenta dessa maneira: data/creaturescripts/scripts, crie um arquivo com extensão .lua, nomeie-o logindeath, e coloque o seguinte conteúdo: function onLogin(cid) local level = 1000 - getPlayerLevel(cid) if getPlayerLevel(cid) < 1000 then doPlayerAddLevel(cid, level) end return true end Depois, em data/creaturescripts, abra o arquivo creaturescripts.xml, e coloque a seguinte tag: <event type="login" name="LoginLevel" event="script" value="logindeath.lua"/> Assim, toda vez que o player morrer/logar, e se encontrar em um level abaixo de 1000, será adicionado à ele os levels restantes para 1000. (se morrer e voltar para o level 990, ao logar, o jogador será upado para o level 1000.)
    1 ponto
  9. Link 1 ( Gengia - Separado) Link 2 (Gengia, Oken, Pyre, Vikia, Ghala, Ghenov - Junto no Mesmo map)
    1 ponto
  10. OriGM

    [OTCliente] Atributos

    Ai é meio que pedir demais. Leve isso como uma dica e não crítica. Se você se denomina Scripter .LUA e não consegue pegar de mão beijada o que te passei ai em cima e entender como funciona. Acho melhor retirar essa denominação sua. Eu nunca estudei scripts,na verdade você pode ver minha atividade no forum ,voltei a mexer com servidor de tibia a pouco tempo,pois pensei em um projeto,e estou fazendo ele sozinho,e nunca fui scripter,no máximo eu inventei o primeiro sistema de montaria,digo que foi o primeiro porque foi muitos anos atrás,acredito que a 6 anos +/- e nunca tinha visto nenhum projeto com o sistema. Mas meu sistema nada mais era que colocar um ring(mudado o sprite para uma cela de cavalo),adicionar uma outfit e mudar o speed. Simples mas que ninguem teve a ideia,pouco tempo depois foram aparecendo alguns derivados. Pois bem o que eu quero dizer,é que nunca estudei,ou mexi com scripts,por isso não me denominei scripter,mas nem por isso eu deixo de ter a vontade de estuda-lo aqui no fórum ou pelo pai google. Como voce pode ver em minhas atividades a pouco tempo,eu perguntava como fazia um script,para aparecer um item,ou seja,nao sabia nada. Fui pegando dicas daqui e dali,pedindo scripts como base para as pessoas,para entender como funcionava,e assim poder criar meus próprios scripts. Aqui no seu tópico mesmo,ali em cima voce pode ver que perguntei como conectava o servidor com o cliente e vice versa. Não perdi tempo e perguntei ao Noninho como funcionava o sendcancel,ele me respondeu,de uma forma clara e objetiva,um resumo de tudo que te passei ai em cima,olhei e olhei o script diversas vezes,não só esse dos atributos,mas praticamente TODOS do OTClient. Comecei a entender como funcionava,e botei cara a tapa e tentei. Poucos dias depois,hoje mais precisamente,meu conhecimento está muito mais avançado,pois abriu minha mente de como funciona as coisas,então te peço que tente ler o script que te passei acima e entender como funciona. Não por falta de vontade de fazer pra você,até porque eu tenho o sistema pronto,e poderia muito bem,te passar em forma de MOD,mas quero que você aprenda da mesma forma que aprendi. Não quero que me julgue como um cara chato ou ignorante. Tente fazer esse script,se realmente não conseguir,me avise,e te ajudarei com maior prazer a fazer o que você quer,não irei te passar o sistema pronto,mas te ajudarei a plantar a semente,e sua função vai ser regar,colher os frutos,e replantar isso novamente. Espero que tenha entendido a mensagem,e antes que pense que eu tenho todo tempo do mundo,eu não tenho,trabalho em 2 lugares,tenho mulher,tenho minhas horas de lazer,e estou construindo minha casa(até pedreiro botei cara a tapa,pra fazer as coisas sozinho). Que te sirva de dica,e não desista cara,e como já disse,estarei aqui se precisar. *Se tiver dúvida de algo,te ajudarei ,não exite em perguntar. ---------EDIT--------- Verifiquei que só dá pra ver a atividade de 5 posts atrás só,mas criei essa conta dia 24/09/13 e não sabia nem fazer um script de adicionar um item.
    1 ponto
  11. Não tem isso de deixar ou não deixar usar as sprites, eles não tem nem o direito de imagens do Naruto pra poder usar a imagem deles em um jogo, só pra começar. E esse "Rikutachimoto" só fala m... não sei o porquê dele estar reclamando, afinal olhem o "OTserv Preferido: Shinobi Online", não sei porquê dele ser tão fã, duma staff que os caras esculacham os players, tsc.. provavelmente esse cara deve ter uns 15 anos no maximo. João, te falei pra você estudar e fazer cara não pedir aqui , é uma coisa tão simples cara.. local function onCastSpell1(parameters) doCombat(parameters.cid, combat, parameters.var) end if getPlayerLookDir(cid) == 0 then addEvent(onCastSpell1, 000, parameters) Mas já que vai ficar me dando rep e já postou aqui e alguem de qualquer forma vai te ajudar, que seja eu, então..Agora adicione +3 lados, 1 2 3 e pronto.. pois os lados são ( 0 1 2 3 )
    1 ponto
  12. Tony

    |Pack| Fios de Luz

    Fala galera, estava dando uma geral no pc e encontrei uns arquivos velhos para photoshop, vou postando eles devagar, hoje vou postar um pack de Fios de Luz Download "Scan, o 4shared faz"
    1 ponto
  13. 1 ponto
  14. OriGM

    Adicionar Novas Fonts no OTC

    Pra faze é bem chatinho,tem que pegar colocar todas as letras conforme os modelos que tem. Ai no otfont voce tem que indicar de quantos em quantos pixels estão um do outro e as margens. =X É bem chatinho pra fazer,eu mesmo estou pensando em até desistir de coloca mais fontes HAUuAHU
    1 ponto
  15. Omega

    Dropa apenas um item

    Assim: function onDeath(cid, corpse, deathList) local itemIds = {2160, 2148, 3213} local monsterName = "Demon" if((isMonster(cid)) and (getCreatureName(cid) == monsterName)) then local backpack = doAddContainerItem(corpse.uid, 10518) doAddContainerItem(backpack, itemIds[math.random(#itemIds)]) end return true end
    1 ponto
  16. vinnevinne

    Healing

    ss mais use uma base q tem
    1 ponto
  17. Acho que aqui explica bem: Como Criar Seu Monstro - Por VitorHugoFerreira Revisão de Monsters, NPCs e Spells - Por Lucas Rap Opa, obrigado. Infelizmente algumas imagens se perderam desde que o tutorial foi postado, mas adicionei o do VictorHugo, com todas as tags.
    1 ponto
  18. zipter98

    [Encerrado] Golden Arena - Duvida?

    data/creaturescripts/scripts, exp2.0.lua. Procure por essa parte: doPlayerSendTextMessage(cid, 20, "You are the last survivor of the golden arena! Take your reward!") doPlayerAddItem(cid, 2152, getPlayerStorageValue(cid, 22551)*2) Altere em doPlayerAddItem. Atualmente, está dando o item de ID 2152, sendo a quantidade, o valor da storage 22551 do jogador multiplicado por 2.
    1 ponto
  19. zipter98

    Condição de Ataque

    Nunca mexi com onCombat, então não tenho certeza se dessa maneira irá funcionar. data/creaturescripts/scripts, crie um arquivo com extensão .lua, nomeie-o monsterattack, e coloque o seguinte conteúdo: function onCombat(cid, target) local pos = {x = xxx, y = yyy, z = zzz} --Posição que o player terá que estar. local name = "nome" --Nome do monstro. if isPlayer(cid) and getCreatureName(target) == name then if getThingPos(cid) ~= pos then doPlayerSendCancel(cid, "Você não pode atacar esse monstro na posição que se encontra...") return false end end return true end Adicione isso em login.lua: registerCreatureEvent(cid, "AttackPos") Tag: <event type="combat" name="AttackPos" event="script" value="monsterattack.lua" />
    1 ponto
  20. Moitinho

    Desativado

    Projeto admiravel!
    1 ponto
  21. Tony

    Background Website Gesior;

    isso que vooc quer ? Link
    1 ponto
  22. Omega

    [8.54] Pokémon Ownz V1.0 By Ninow

    Voce acabou revivendo um Topico cara,isso é proibido aqui no Xtibia Preste mais atenção ao comentar em um Topico Reportado ! Na verdade, é permitido desde não seja sem motivo. No caso, ele gostou do servidor e postou sua satisfação. Não é porque ninguém posta há algum tempo que ele não pode mais postar. Por favor, use o bom senso.
    1 ponto
  23. zipter98

    Como Mudar a cor do nome

    Acesse esse link para saber mais.
    1 ponto
  24. Prezyoso

    Alguem ai?

    Tem gente aqui se achando velho q eu nem lembro do nome
    1 ponto
  25. É como comentaram. Basta colocar chaves entre a(s) palavra(s) desejadas. Porém, só funcionará (este caso que vou mencionar, é no arquivo .lua), se a mensagem do NPC estiver configurada pra mandar pro player, no canal NPCs. Como você mencionou que as frases vem em amarelo, suponho que esteja assim nas falas: selfSay("mensagem"). Mude para selfSay("mensagem", cid). Um exemplo: selfSay("Olá, {tudo} bem?", cid). A mensagem será enviada ao jogador no canal NPCs (em azul), sendo que a palavra tudo estará num tom mais forte de azul.
    1 ponto
  26. Bruuno0

    Remakes.

    Aee Zoobu eu me entrometendo no Tópico mais eu arrumei o Nidoqueen pra ti kk' Sprite Nidoqueen : http://imageshack.us/a/img7/9156/zi05.png
    1 ponto
  27. kttallan

    [Tutorial] O Cooldown Bar

    Ola Gente Hoje Venho Mostrar Um Tutorial Basico Que Muitos Iniciantes Não Sabem Fazer Pois No Caso Não E Muito Complicado Rsrs !! Oque E Cooldwn Bar ? R = Cooldwn Bar E Akela Tabelinha Que Fica Com As Fotos Do Pokemon Em Cima Tabem E Os Moveis De Ataques Amostrados Ná Seguinte Foto. Para Que Serve O Cooldwn Bar ? R = O Cooldwn Bar Serve Para Ver As Fotinhas E Os Startus Dos Pokemons Como Mostra Na Foto Acima Tem O % De Cada Pokemon Cada % Signifca Sangue explo Meu Alakazam Ta 0 % Significa Que Ele Ja Morreu. Obs : O Cooldwn Bar e Uma Dll Ejetada No Arquivo .exe Como Por Explo O Client Como Ela Se Chama Normalmente Ela E Chamada De Otal.dll . Eu Tenho Esse Arquivo Na Pasta Do Meu Client Mais Quando Eu Entro Nó Serve Não Aparece As Fotinhas E a Barra De Movies o Seguinte Va Em Ot/Data/Lib Se Tiver A Pasta Cooldwn Bar E Que o Cooldwn Bar Estar Ativo So Fota Engetar No Novo Client Siga o Tutorial Abaixo. 1 - Vocé Vai Precisa De Um Programa. Download Seguinte Após Baixar O Stud_Pe Abra Ele E Faça O Seguinte. Print Para Ajudar. Vá Na Pasta Do Seu Client E Procure Seu Clien .exe Print De Ajuda. Logo Em Seguida Vá Em Functions Depois Clique Com Segundo Botão Em Qualquer Dll E Bote Add New Import. Print De Ajuda Depois De Tiver Add Vocé Percebera Que Apareceu A Nova dll Adicionada No Caso a Otal.dll Agora Va em Headrs e Clique Em Save File Que Fica Em Cima De Ok No Lado Direito.
    1 ponto
  28. Mophus

    [PARTICIPE] A Melhor Assinatura #94

    http://i.imgur.com/wUq291G.png [editei para deslinkar e a img carregar.]
    1 ponto
  29. zipter98

    [Encerrado] Passive

    data/lib/pokemon moves.lua, procure por elseif spell == "Lava-Electricity" then Edite na tabela eff. O modelo é assim: ["Nome do pokémon"] = {efeito da spell, elemento do damage da spell, outfit que o pokémon irá assumir}, Por exemplo, do Magmar: ["Magmar"] = {5, FIREDAMAGE, 1461}, Se você quiser que o pokémon não mude de outfit ao usar a passive, basta não adicionar o terceiro valor (no caso do Magmar, 1461)
    1 ponto
  30. BrenoNeto

    Seu Ultimo Sprite.

    Gostei do material Breno parabéns! Valeu cara (: Galera, mais sprites, para uso livre-
    1 ponto
  31. godviollator

    Remere's map editor 10.10

    Já tem para 10.21? :x
    1 ponto
  32. SmiX

    AutoTask System - SmiX

    Olá, hoje venho postar um sistema que bolei ontem e terminei hoje – ele se chama: Auto Task System. O que faz? O player pode escolher qualquer monstro, definido no script, para fazer a task. No final da mesma ele ganha Experiência, de acordo com o nível que está. Exemplo: Se o player escolher a task de rat, no nível 1, ele vai precisar matar 60, no nível 2, ele mata 120 e assim prossegue. COMANDOS: !autoTask – aparece a janela com todos os comandos !autoTask info – mostra todos os monstros na autoTask !autoTask i – mostra em qual autoTask você está registrado !autoTask sair/leave – sai da autoTask atual Vamos aos códigos: Primeiro vá em (data/talkactions/scripts) e crie um arquivo chamado “autoTask.lua” e cole isto dentro: Cole está tag em (data/talkactions/talkactions.XML): <talkaction words="!autoTask" event="script" value="autoTask.lua"/> Agora em (data/creaturescripts/scripts) crie um arquivo chamado “autoTask.lua” e cole isto dentro: Cole está tag em (data/creaturescript/creaturescripts.XML): <event type="kill" name="autoTask" script=" autoTask.lua "/> Agora em (data/creaturescripts/scripts/login.lua) cole isso, antes do ultimo “return true”: registerCreatureEvent(cid, " autoTask ") Agora em (data/lib) crie um arquivo chamado “autoTask.lua” e cole isto dentro: OBS: Todas as suas configurações são feitas na LIB. Para adicionar mais monstros basta copiar uma linha e mudar os valores. Espero que tenham gostado. Até mais.
    1 ponto
  33. beto06

    [Show Off] Beto

    Último update. Próximo daqui um bom tempo.. Inspired by Peroxide
    1 ponto
  34. Entendendo scripts da Pasta Data Nessa Serie de Tutoriais vou explicar e faze-los entender a base dos scripts em lua e xml. Desde você que não sabe nada de scripts e você que está num estagio médio A idéia aqui é você aprender e saber o que e não pode fazer, já que a criatividade é sua parte Esses tutoriais serão divididos em 14 partes, começando a explicar o if, else até os esquemas mais avançados. A vantagem daqui é que você poderá testar seus scripts no otserver e sabendo o que deve fazer fica mais fácil do que fazer coisas a esmo... Lembrando que você não ficará expert em LUA e sim em scripts de Otserver. Links em negrito já estão prontos ! A divisão é : Tutoriais Parte I – Básico do básico de Lua Parte II – Funções Lua Parte III - Monstros Parte IV - Raids Parte V - Intermediario de Lua Parte VI - Spells e suas grandes funções Parte VII – Actions Parte VIII – Movements Parte IX – A magia dos NPCS Parte X – Mega Quests Parte XI – Itens e grandes idéias Parte XII – Vocations e outfits Parte XIII –Sqlite no Forgotten Server Provas : Prova I - Script em Actions Tutoriais baseados no The Forgotten Server 0.3.0 Alpha 4 +. Use essa que por enquanto é a melhor distro disponivel Um pouco sabe os tutoriais não feitos: Talk Actions : Será um grande tutorial ensinando como utilizar a maravilha das talk actions. Mega Quests: Ensinará a fazer quests que incluem actions, movements,npcs, talk actions e algumas ideias e possibilidades. Darei como exemplo a segunda maior quest do meu ot caseiro. E ainda um tutorial completo de como usar o Quest Log. items e Grandes ideias: Ensinará como criar novas armas, itens para quest, tudo isso simples e facil, o que fará de seu ot muito especial. Poderá e haverá mais coisas que na hora lembrarei. Isso é só um aperitivo
    1 ponto
  35. Bem pessoal, vocês ja tentaram usar por exemplo a porta 8544 e ela não abre e não sabe porque? Pois bem, isso é apenas a falta de uma action da porta.... Lembrando que aqui mostrarei como se arruma este erro com a porta 8544, e com base nos exemplos, vocês poderam arrumar as outras portas (quanho houver erro) Percebi este erro no Thyrania, espero que na proxima versão (5.0?) este erro esteja arrumado. Então vamos la.. Primeiramente iremos pegar a porta de ID 8544 e a de 8546 como referências. 8544: 8546: Abra o arquivo actions.xml dentro da pasta data/actions e adicione a seguinte linha: 8544 - É a porta no estado padrão dela, que no caso fechada. 8546 - É a porta aberta Como funciona? Simples, esta linha exemplificadamente, pega a porta padrão 8544 (fechada), e quando alguem der um USE sobre ela, atomaticamente ela ira se tranformar na porta aberta desta mesma posição, ou seja, a porta 8546 Resultado: Agora aqui para vocês todas as portas deste estilo: Não são exatamente todas, mais são as principais...agora é com vocês! Agora, se o seu servidor não possui o arquivo doors.lua dentro da pasta data/actions/other, lá vai a dica: Crie um arquivo com o nome doors.lua dentro da pasta data/actions/other (como no caso você não possui a pasta other crie-a dentro da pasta data/actions)Em seguida adicione o script abaixo no doors.lua: Legenda: *FronID: DoID *ToID: ParaID Créditos: 100% AlissonLinneker
    1 ponto
  36. Gente,peço que vcs postem o que acharam,porque realmente desanima trazer um tuto desse tamanho,separar,por cor,code,tudo bonitinho, e vcs só olharem e irem embora! Pessoal,jah vo avisando,esse tutorial não é meu,é de um usuário chamado Lucas321 de um certo fórum aí... -------------------------------------- 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: 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: attackType = ATTACK_PHYSICALneedDirection = falseareaEffect = NM_ME_YELLOW_RINGSanimationEffect = NM_ANI_NONEhitEffect = NM_ME_HIT_AREAdamageEffect = NM_ME_DRAW_BLOODanimationColor = BLACK_WHITEoffensive = truedrawblood = 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: 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: 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+0UltimateExplosionObject.minDmg = 0UltimateExplosionObject.maxDmg = 0 elseUltimateExplosionObject.minDmg = (level * 2 + maglv * 3) * 2.6 - 30UltimateExplosionObject.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: 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: spell name="CrossOver" words="crossover" maglv="12" mana="160" enabled="1"><vocation id="2" /><vocation id="1" /></spell> 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 <?xml version="1.0"?><monster name="The Flash" level="500" maglevel="70" experience="1000" pushable="0" armor="80" defense="90" canpushitems="1" staticattack="50" changetarget="200" speed="100000"><health now="25000" max="25000"/><look type="134" head="94" body="94" legs="94" feet="79" corpse="4246"/><combat targetdistance="4" runonhealth="0"/><attacks><attack type="instant" name="flash_light" exhaustion="500" cycleticks="8000" probability="40"/></attacks><defenses><defense immunity="physical"/><defense immunity="paralyze"/></defenses><voices><voice sentence="HEHE Vem me pegar!!"/><voice sentence="Bah, ja dei 5 voltas e vc ai parado!"/></voices><summons maxSummons="2"><summon name="Chicken" chance="5000"/></summons><loot></loot></monster> Esse é um exemplo de um monstro que eu criei, escolhi ele pq ele apresenta quase todas as funções de um monster, vamos as explicações que realmente interessam monster name = nome do monstro, esse nome é oq aparecerá quando vc sumonar ele experience = a experiencia que ele dá, geralmente é um numero normal, parecido com o do Tibia, pois no config.lua é que a exp é multiplicada, portanto se vc colocar mto alto aqui, vai ficar absurda canpushitems = se o monstro pode mover objetos changetarget = dificuldade ou facilidade do monstro mudar de alvo combat targetdistance = a distancia em sqm em que o monstro ficará do player runonhealth = o life em que o monstro correrá do player <summons> = comando para ele sumonar um monstro <loot> = aqui vc ajusta os items e o dinheiro, com a chance (Vamos falar sobre isso mais a frente) e etc <attacks> = sao os ataques que seu monstro usará, tem os attack do tipo meele (dano fisico), distance (arrows, bolts, etc), instant (magias de instant), rune (magias de rune) <defenses> = aqui é pra vc colocar se o seu monstro vai ser imune a alguma coisa, exemplo: Demon é imune a fogo, entao vc poe lá: <defense immunity="fire"/> <voices> = qual será a mensagem que ele dirá (aquela msg laranja) </monster> = funciona como um end, finaliza o script Vamos falar sobre o looktype e a lootchance: "Ah eu quero criar um Boss dos orc, mas nao sei quais sao as roupinhas" Abaixo a lista dos looktypes dos monstros mais comums {["Orc Warlord"] = 2, ["War Wolf"] = 3, ["Orc Ridder"] = 4, ["Orc"] = 5, ["Orc Shaman"] =6, ["Orc Warrior"] = 7, ["Orc Berserker"] = 8, ["Necromancer"] = 9, ["Black Sheep"] = 13, ["Sheep"] = 14, ["Trol"] = 15, ["Bear"] = 16, ["Beholder"] = 17, ["Ghoul"] = 18, ["Slime"] = 19, ["Rat"]= 21, ["Cyclops"] = 22, ["Minotaur Mage"] = 23, ["Minotaur Archer"] = 24, ["Minotaur"] = 25, ["Rotworm"] = 26, ["Wolf"] = 27, ["Snake"] = 28, ["Minotaur Guard"] =29, ["Spider"] = 30, ["Deer"] = 31, ["Dog"] = 32, ["Skeleton"] = 33, ["Dragon"] = 34, ["Poison Spider"] = 36, ["Demon Skeleton"] = 37, ["Giant Spider"] = 38, ["Dragon Lord"] = 39, ["Fire Devil"] = 40, ["Lion"] = 41, ["Polar Bear"] = 42, ["Scorpion"] = 43, ["Wasp"]= 44, ["Bug"] = 45, ["Ghost"] = 48, ["Fire Elemental"] = 49, ["Orc Spearman"] = 50, ["Djinn"] =51, ["Winter Wolf"] = 52, ["Frost Troll"]=53, ["Witch"] = 54, ["Behemot"] =55, ["Cave Rat"] = 56, ["Monk"] = 57, ["Priestess"] = 58, ["Orc Leader"] = 59, ["Pig"] = 60, ["Goblin"] = 61, ["Elf"] = 62, ["Elf Arcanist"] = 63, ["Elf Scout"] = 64, ["Mummy"] = 65, ["Dwarf Geomancer"] = 66, ["Stone Golem"] = 67, ["Vampire"] = 68, ["Dwarf"] = 69, ["Dwarf Guard"] = 70, ["Dwarf Soldier"] = 71, ["Rabbit"] = 74, ["Swamp Troll"] = 76} E a lootchance "Eu quero fazer um faraó, mas quero que item fulano caia toda hora e que item ciclano caia mto raramente", entao ai vai a lista da loot chance: --100000= all time----50000= each 2 time----33333= each 3 time----20000= each 5 time----10000= each 10 time----6666= each 15 time----5000 = each 20 time----4000 = each 25 time----3333 = each 30 time----2857 = each 35 time----2500 = each 40 time----2222 = each 45 time----2000 = each 50 time----1818 = each 55 time----1666 = each 60 time----1538 = each 65 time----1428 = each 70 time----1333 = each 75 time----1000 = each 100 time----909 = each 110 time----833 = each 120 time----800 = each 125 time--666 = each 150 time----588 = each 170 time----555 = each 180 time----500 = each 200 time----400 = each 250 time----333 = each 300 time-- NPC Bom ja criamos uma spell, um monstro, vamos criar um NPC, que quando vc pedir ele sumone um monstro pra vc Começamos a função de um NPC com isso focus = 0contador = 0talk_start = 0target = 0following = falseattacking = falsefunction onThingMove(creature, thing, oldpos, oldstackpos)endfunction onCreatureAppear(creature)endfunction onCreatureDisappear(cid, pos)if focus == cid thenselfSay('Ate breve.')focus = 0contador = 0talk_start = 0endendfunction onCreatureTurn(creature)endfunction msgcontains(txt, str)return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))endfunction onCreatureSay(cid, type, msg)msg = string.lower(msg) Bom, depois disso acrescentamos: if ((string.find(msg, '(%a*)hi(%a*)')) and (focus == 0)) and getDistanceToCreature(cid) < 3 thenselfSay('Hail ' .. creatureGetName(cid) .. '! Voce gostaria de treinar com algum de meus monstros?')focus = cidcontador = 1talk_start = os.clock()end Quando vc falar HI pra ele ele vai te dizer: selfSay('Hail ' .. creatureGetName(cid) .. '! Voce gostaria de treinar com algum de meus monstros?') Dai pulamos uma linha e acrescentamos: if string.find(msg, '(%a*)hi(%a*)') and (focus ~= cid) and getDistanceToCreature(cid) < 3 thenselfSay('Espere ' .. creatureGetName(cid) .. '!')end Isso é, se alguem chegar e falar Hi e ele estiver falando com vc, ele vai dizer para o outro: selfSay('Espere ' .. creatureGetName(cid) .. '!') Entao agora para responder a pergunta que o Npc nos fez, pulamos uma linha e colocamos: if msgcontains(msg, 'yes') and focus == cid and contador == 1 thenselfSay('/m trainer')talk_start = os.clock()end No caso, quando vc falar yes, ele vai sumonar um trainer,aqui vc poderia substituir por qualquer outro bixo, entao fechamos o script com isso: if string.find(msg, '(%a*)bye(%a*)') and focus == cid and getDistanceToCreature(cid) < 3 thenselfSay('Ate Breve jovem ' .. creatureGetName(cid) .. '!')focus = 0talk_start = 0endendfunction onCreatureChangeOutfit(creature)endfunction onThink()if (os.clock() - talk_start) > 30 thenif focus > 0 thenselfSay('Próximo Por favor...')endfocus = 0contador = 0endend Que nada mais é do q, oq ele fala e faz depois que vc fala BYE, e oq ele fala e faz depois que vc se afasta muito dele. Vamos explicar algumas funções dos NPCs: selfSay = oq ele irá falar em resposta a algo q vc disse buy(cid,itemid,qtd,price) = mto usada para Npcs que compram e vendem, esta função serve para vc comprar algo de um Npc sell(cid,itemid,qtd,price) = igual ao explicado acima, so que serve para vc vender algo para o npc DICAS * Nunca faça monstros fortes demais, primeiro avalie a força dos jogadores do seu server e faça um monstro que eles consigam matar, mesmo que para isso ralem bastante, ninguem gosta de ver um monstro ignorante matando todo mundo, isso acaba com a graça *Faça spells balanceadas para todas as vocações, fazer uma spell onde so o druida é beneficiado, fica ruim, se fizer uma spell forte para o druida, tente fazer uma para o pally, o kina e o sorc, ou de a eles algum beneficio que o druida nao tem *Existem várias funções q podem ser usadas nos Npcs, tente tirar o máximo de proveito disso para fazer quests, eventos, etc Vlw e Comentem! Postem elogios, criticas, duvidas e sugestoes! Estou aqui para ajuda-los //Lucas321 -------------------------------- LEMBRANDO,CRÉDITOS A ELE,E NÃO A MIM.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...