Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 10/16/13 em todas áreas
-
Fazendo uma apresentação organizada!
Kluivert e 4 outros reagiu a vital900 por um tópico no fórum
Neste tópico irei ensinar como melhor apresentar o seu projeto, com isto você terá mais chances de obter uma boa nota em sua 'avaliação' do Seja Incentivado! Primeiramente, você deve conhecer ao menos o básico das 'ferramentas' que o fórum lhe proporciona. Tais como: » Spoiler ([ spoiler][ /spoiler] /, Code [ code] [ /code], Imagens, Vídeo [ media] [ /media]. Obs: Retire os espaços iniciais e a cor azul dos códigos acima para que 'suas palavras virem ações!' Após ter uma noção básica das 'ferramentas do fórum', você têm de saber o básico sobre o objetivo de cada 'tópico' em uma 'redação' [Título, Conteúdo, Gramática, Etc..] Obs: Este link acima, não fora feito apenas para mostrar como 'elaborar uma redação', logo alguns tópicos devem ser 'ignorados'. Após ter lido sobre estes 'pontos' citados acima e visitado os links aconselhados, começaremos finalmente o nosso tópico. Para aprender a Apresentar o seu projeto, leia abaixo. Apresentação! Para montar um projeto 'ideal' você tem que ter algumas coisas em mente e ao desenrolar de sua apresentação você deve apresentar estas ao 'publico'. Dentro destas, destacam-se: O porquê do projeto. [Qual o motivo deste?] Se não é algo que já existe. [Você já viu algum projeto semelhante?] (Se sim, tente inovar para se destacar!) Se é algo complicado de se fazer. [Você junto a sua equipe vão ter condições de desenvolver esta sua ideia?] O que o projeto iria melhorar ou divertir os outros. [Esta peça é fundamental, pois oque terá de tão inovador que dará vontade de jogar o seu jogo e não os demais?] Você já tem uma base ou equipe para o projeto. [O seu projeto, já possui algo pronto? Já tem uma equipe formada?] Explique detalhadamente a ideia de vocês. » Pensando no que fora citado acima e em outras perguntas que variam dependentemente do tipo de projeto que você deseja criar, você já pode montar o seu Projeto Ideal no 'papel' e nos apresentar. Obs: Considerações Importantes! Primeiramente, lembre-se que o tópico deve ser bem claro e explicar todos os detalhes, para deixar menos dúvidas possíveis (quanto melhor detalhado e claro for seu tópico melhor será a compreensão dos leitores). Faça uma boa escrita ('use e abuse' da linguagem formal) e lembre-se que uma boa apresentação é meio caminho andando para o sucesso. Quando for apresentar seu projeto lembre de por tudo que achar necessário, mesmo o que possa parecer mais simples, coloque para podermos entender tudo que você quer repassar a nós, lembre-se que não sabemos o que vocês pensam e sim lemos o que escrevem. Para aprender a Organizar o seu projeto, leia abaixo. Organização! Organizar a Apresentação de seu projeto é a parte mais complicada, porém é essencial para que junto ao conteúdo da apresentação tenhamos um bom resultado. Na organização de seu tópico você deve usar os códigos citados anteriormente, também é interessante a utilização do 'Negrito, Itálico e Sublinhado'. A formatação de seu texto é fundamental! Obs: É interessante utilizar o Negrito em títulos, o Itálico em palavras entre aspas e o sublinhado nas partes importantes de seu texto! Você deve de usar alguma linha de raciocínio para que não fique confuso o seu tópico, eis uma que me agrada: 1- Introdução (Uma breve apresentação de seu projeto); 2- Índice (Com todas as 'divisões' de seu projeto); 3- História (Uma extensão mais explicada e detalhada da sua introdução [favor colocar imagens para ajudar na compreensão ou fazer-nos vivenciar o conto!{esta imagem pode ser retirada da própria internet, serve apenas para ilustrar o seu conto, ou seja, dar conteúdo!}] Neste 'tópico' o RPG conta em peso!) Obs- A história deve ser bem divida e 'classificada' em seu índice. 4- Complementações (Colocar imagens InGame; Sistemas; Videos; Etc.. » Alguns conteúdos que você possuem prontos e querem divulgar. Esta parte é muito importante, deve-se apresentar neste tópico o diferencial de seu projeto! 5- Equipe (Quem são os componentes da sua equipe, a função de cada um). O xtibia.com pode não aceitar seu projeto sem qualquer explicação. Benefícios! Atenção às Regras Créditos: Vital900 & JV Chequer5 pontos -
[Encerrado] [BUG] Auto Loot
samlecter e um outro reagiu a zipter98 por um tópico no fórum
Palavras do slicer sobre esse erro: Eu ainda não adicionei autoloot aqui no meu servidor e conferi se o que o slicer disse funciona mesmo, mas se quiser tentar ae e ver se funciona..2 pontos -
É NA LIB, USADO isInArray ainda k dá pra criar outra função colocando o id da nova voc ta ae function isDruid(cid) return isInArray({2,6}, getPlayerVocation(cid)) and true or false end2 pontos
-
Avatar Zero
Alison Queiroz reagiu a 115757 por um tópico no fórum
Introdução Este é um OT feito por mim juntamente com o kikim da padaria, mas como não tivemos tempo de deixá-lo online e continuá-lo por conta dos estudos, iremos deixar o download e algumas informações básicas. Recomendo uma experiência de 5x a 15x, pois o mapa foi feito exclusivamente para uma RPG mais vívido (sem tp's ou semelhantes). Mapa 60% próprio (créditos ao kingdom age pelo resto). Acesse o site para outras informações, para tutoriais e explicação de alguns sistemas (incluindo magias, também): Link para o site As Vocações Air Bender: São dobradores pouco agressivos. Suas dobras são voltadas para evitar conflito, empurram e puxam com mais facilidade que os outros dobradores, e também são mais velozes que os outros dobradores. Fire Bender: São os dobradores com maior dano. É voltado especialmente para causar o máximo de estrago possível em seus oponentes. Earth Bender: É uma vocação balanceada. Causam um bom dano, empurram e fazem barreiras, porém possui menos eficiência que as outras. Water Benders: São dobradores voltados para o suporte. Eles curam, retiram status (envenamento, drunk), mas possuem um dano mediano. Sistemas Water Pouch: mana para dobradores de água. Nosso water pouch utiliza um sistema diferentes, por isso, viste está página para saber como usá-lo. Forja: Para forjar você deve usar um iron hammer para criar itens à partir de outros, como explica esta página. Mineração: Feito para tirar iron ore e gold nugget de um terreno de terra. Fundamental para a forja, como pode ser visto aqui. Cortar árvores: Assim como a mineração, é fundamental para forjar certos itens, especialmente flechas e bolts. Veja mais detalhadamente aqui. Água ambiente: Certas de magias de água, como w-fish e w-tsnunami, necessitam estar perto da água para serem utilizadas. Imagens Proteja-se das dobras criando uma barreira de pedra! Com um poderoso raio, destrua seus oponentes! ...Você é raio de saudade, meteoro da paixão!... Provoque uma poderosa tempestade para esmagar seus inimigos! Informações Nós não fizemos nenhuma house, então deixaremos a rigor do editor criá-las ou deletá-las. As spells estão parcialmente balanceadas, ou seja, se encontrarem algum bug ou spell OP (muito forte), fale no tópico. Este servidor foi inspirado no Taelin (ou Korelin, para muitos). Taelin foi um antigo servidor de Avatar, muito elogiado por seus jogadores. Importante: como o server não utiliza mana (só para o waterpouch, que nem é propriamente dito uma mana), nós não fizemos o uso de Magic Level na construção ou evolução das magias. Tudo se baseia em level, apenas. Download e Scan Lembrando que o servidor é 8.60 e não faz o uso de client próprio. Senha do god: god / 123456 DOWNLOAD SCAN Créditos e Considerações Finais Obrigado a todos que se recordarem de terem ajudado (pois não foram poucos) e outros que me lembro por ter auxiliado a criação e corrigido alguns bugs. E obrigado a você, que chegou até aqui e fará bom uso do conteúdo. E algumas considerações especiais: Kikim da Padaria: principal editor do OT. Sem ele nada teria acontecido. Oneshot: falecido do fórum, porém seus tópicos foram mais que importantes para a criação das spells. Roksas: obrigado pela assistência e dedicação. Craigmabbit: ajudou na criação de algumas magias mais complexas.1 ponto -
Olá galerinha do Xtibia, estou aqui para postar um bom servidor derivado. Não queria estar postando esse servidor meio que forçado, tendo em vista que foi roubado e tem gente por de trás ganhando dinheiro sujo. Então sem mais delongas, ai esta o NtoShinobi que esta sendo vendido por alguem popular aqui do forum, que prefiro não citar o nome. ------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------ Mapa do servidor conta com 4 vilas -Amegakure -Suna -Mist -Konoha Consta com 14 vocações -Naruto - Sasuke - Sakura - Rock Lee- Neji - Hinata - Kiba - Shikamaru - Tenten - Gaara - Killer Bee - Kakashi - Itachi - [sistema de Graduação] -Genin -Chunin -Jounin -Anbu [sistema de Saga] -transformar -reverter -Serve para trocar a roupa do seu persoangem, ganha umas roupas novas a cada 25 level upado, dependendo da vocação, isso varia muito. -Exemplo, Naruto tem umas 10 roupas, enquanto tenten tem apenas 4. Nada afeta ao personagem, apenas visualmente mesmo. -Caso deseja alterar para ter efeito em alguma coisa, você pode editar em vocations.xml [sistema de Recompensa] -Npc Oinin coloca a cabeça de jogadores a venda por um determinado preço, e se alguem matar o jogador que tem recompensa ganha algo em troca. [Eventos do Servidor] -Evento Guerra Ninja -Evento Assassin -Evento Roube a Bandeira -Evento Tsuki no Me [sistema de Jutsus] -Posso dizer que todos os jutsus são adequados com o anime NARUTO, dando mais realidade no jogo de naruto. -Exemplo, chidori do sasuke, o personagem ao relizar pula até o jogador para acertar o jutsu. [boss] -Tem o enrredo da historia, ao qual deve matar os Boss do jogo, que na verdade são os membros da Akatsuki. -Cada Boss se encontra em uma parte do mapa, logo abaixo vai ter os detalhes do Mapa! [Task] -Npc Anbu, ele se localiza acima dos trainers, ele realiza as famosas task do opentibia no naruto. Bom.. O melhor mesmo é vocês abrirem e verem do que estou falando, e se adequarem ao jogo. =) Algumas imagems: Desde já aviso, que um bom dedicado é o começo para tudo. Eu iniciei o projeto com dedicado fracos, o que causava lag e kicks. Na minha humilde opnião, a ServerSoft é uma boa empresa de host para opentibia, tendo em vista que a equipe da mesma tem conhecimento com o mundo Opentibia. É isso ae galera, conforme o tempo eu estarei postando umas atualizaçõezinhas Link do download - Atualizado dia 29/03/2013 Updates Não irei mais atualizar o servidor por enquanto, pois existem muitos ladrões de conteudos e créditos no forum, então por hora ficara assim. LINKS PARA INICIANTES Para quem nunca criou um servidor de uma pesquisada na area de iniciantes clicando aqui. Para saber como criar um client proprio clique aqui. Ou então entre no site http://vapus.net/customclient e crie por la mesmo. E claro, todos os devidos créditos pelo projeto, mesmo sendo um único script. Naruto Open Wings v1.2 {o começo de tudo} Lks {RobinHood} Jhon992 Eskylo Vodkart Demonbholder Oneshot Slicer SkyMagmum Kydrai Christian Letti LuckOake Acredito que tem os créditos de todos(msm sendo 1 script.lua), mesmo aqueles que nem sabe que ajudaram. Caso faltou alguem é só falar =)1 ponto
-
Bom alguns duvidaram, mais ta ai, flw ai gustavo :* OBS: SE ALGUEM FALAR QUE NÃO É O MESMO DA OT-SOFT É SÓ ABRIR NO RME E DAR UMA OLHADINHA NO TEMPLO E COMPRAR COM A DO SITE. SERVIDOR RODANDO EM MYSQL, NÃO DOU SUPORTE NELE. #Novidades: -Sistema de cooldown das magias 100% funcionando (SEM BUG DO COMBO). -Mount System 100%. -Taming System 97%. -Novos items 9.60. -Market System 100%. -Monstros adicionados. OBS*Este Mapa Possui Gray Island e Quirefang (100% Sem Bugs) #O que possui? -Peso do mapa: 140MB. - War of Emperium (Evento) - Battlefield (Evento) - Raids Automáticas (Script) - Zombie (Evento) - Database completa + Shop Pronto (DB FULL) - Wrath of Emperor com todas as missões (Mapa-quest) - Zao e New Banuta Piece (Mapa) - TFS 0.4 (Distro: Anti-Divulgação, War System, No-otbm check e sem "compite to 64bits") - War System com escudos (Script) - Mais de 30 Ilhas VIPS (Exclusivas OtSoft) - 15+ items VIPS (Script) - 9 cidades VIPS (Mapa) Download servidor completo Download DataBase Scan Pasta Data : https://www.virustot...sis/1349664734/ Scan Dlls + Distro : https://www.virustot...sis/1349665264/ Credito: OTmaker e ot-soft Anne Prevails!1 ponto
-
Pokémon Mysterion [Dowload] !
Lucioclecio1 reagiu a StyloMaldoso por um tópico no fórum
Eai galerinha..tudo bem? Hoje estou aqui para postar o dowload do meu servidor (pokémon mysterion) que esteve online durante as férias desse ano. Bom o caotic tinha postado a versão dele, com level system e varias coisas no otClient de inovador, porém muitos não gostarao do level system e resolvi posta a minha versão. OBS: o servidor está com mapa do PDA, voces podem pegar o mapa do caotic e usarem no meu servidor sem poblema, porque eu que fiz ele e e adpatei para o servídor. OBS²: O servidor esta com uns erro de "Duplicate move event found" Ao ligar, relaxa..isso é normal..é do icone porque tipo, você joga o icone no chão e puxa ele pra bag voltando icone e não em bag, eu não consegui adpta o systema de uniqueItem com o do icone por isso fica esses "errinho" ao iniciar. OBS³: o Systema de icone está dando para volta para ball, porém na proxima versão irei retirar isso e decha pra sempre icone (menos bug). E o ultimo OBS: irei atalizar o servidor sim, porém com sem preça, a proxima versão já estara o mapa do pokémon mysterion (se eu achar..) e alguns ajuste nos systema. Bom, estou sem tempo para postar informações O oque contém no servidor? TUDO que à no PDA v1.9.1 + minhas edicações. icone system, editações em script etc etc. Uma print para vocês terem noção doque estão abaixando. enfím, o dowload ! http://www.4shared.com/rar/91igaENK/Server.html? E Também a proxíma versão talvez pode demorar para sair, porque a escola está pegando muito pesado huaha, intão tenho que me dedica meu tempo todo aos estudos para ser alguem na vida (ihuul), a proxima atalização talvez demore ou não para sair, mais não depedem de min, já di a base abaxem e faça as proprías editações ! credítos. Slicer (por ter me ajudado em boa parte dos SCRIPT, e a basê "PDA V1.9.1) Eu Brun123 (poke DASH)1 ponto -
Galera XxTibiana, vou legalizar a versão 10.10 do mapa editor pra quem quiser conferir as novas sprites desse summer update. Lembrando que não é uma versão oficial! Então caso forem usar em seus mapas principais lembrem-se de criar uma cópia dos mesmos. Segue uma screenshot e o link de download: Link 1. O 4shared já contem scan 2. Os méritos não são meus, eu apenas trago a novidade a vocês. 3. Para usar de modo efetivo converta um mapa seu para a versão 10.10 e quando for pedido para achar seu tibia .spr e .dat eles estarão localizados em data >1010 do arquivo do 4shared. Havefun!1 ponto
-
[Tutorial] Efeito de texto
Lordbaxx reagiu a Alexclusive por um tópico no fórum
Fala moçada do X-Tibia. Estou aqui hoje, para ensinar vocês a criarem um efeito luminoso. Bom, vamos lá. 01. Pressione Ctrl+N para criar um novo documento e defina um tamanho de 462x236 pixels, depois de criado pressione a letra G do teclado para selecionar a Paint Bucket Tool e clique na cor do lado esquerdo e selecione a cor desejada. (No meu caso usei a cor Preta) 02. Agora duplique a layer, vá em Filter> Render> Clouds, pressione Ok, depois mude o modo de blend da layer para Luminosity. 03. Pressione a letra T do teclado para selecionar a Horizontal Type Tool. Neste tutorial usei a fonte CremonaOpenmas nada impede que ser usada outra fonte. 04. Escreva uma palavra ou frase qualquer. 05. Agora clique com o botão direito do mouse sobre a layer do texto e escolha a opção Blending Options, ao abrir a caixa de Blending Options vá em Outer Glow e defina os valores abaixo. 06. Sua palavra deverá ficar como a da imagem abaixo. 07. Agora pressione Ctrl+J para duplicar a layer, clique com o botão direito do mouse sobre a layer que acabou de ser criada e escolha a opção Blending Options, defina os valores abaixo. (Blend Mode: Divide) 08. Ainda com a caixa de Blending Options aberta vá em Gradiente Overlay e defina os valores a seguir. (Blend Mode: Hard Light e Gradient meio transparente) 09. Agora vá em Outer Glow e defina os seguintes valores, depois pressione Ok. 10. Agora pressione Ctrl+E para mesclar as duas layers, duplique novamente a layer, vá em Edit> Transform> Flip Vertical, pressione a letra V do teclado para selecionar a Move Tool e arraste a palavra para baixo, até a posição da foto abaixo. 11. Clique com o botão direito do mouse sobre a layer de baixo e escolha a opção Blending Options e defina como na foto abaixo. (Fill Opacity: 25%) 12. Sua imagem irá ficar como na foto abaixo. 13. Agora pressione Ctrl+E para mesclar as duas layers mais uma vez e vá em Filter> Blur> Gaussian Blur e defina os valores a seguir. 14. Sua imagem irá ficar como a imagem abaixo. 15. Agora pressione a letra E do teclado para selecionar a Eraser Tool e defina os seguintes valores para a ferramenta. 16. Apague suavemente a parte de baixo das letras deixando como na foto abaixo. 17. Agora vá em Filter>Sharpen>Sharpen, até pegar uma certa nitidez. Ficando assim: 18. Agora clique sobre a layer Background e pressione Ctrl+J para duplicar, vá em Filter> Render> Lens Flare e use os valores a seguir. 19. Agora vá em Edit> Fade Lens Flare e defina os valores abaixo. 20. Agora defina o valor de 69% para o Fill na sua paleta de layers. O final de seu texto deverá estar assim: Participe deixando seu comentário, dúvida, sugestão, ideias, exemplos ou simplesmente dizendo um "Olá!" Espero que gostem e aproveitem. Ficarei feliz se ver resultados por ai. Pode postar direto aqui si quiser. Abraço e até a próxima!1 ponto -
RookWAR Edited JM
usuario99 reagiu a Jobbysantos1999 por um tópico no fórum
-RookWAR [8.6]- Informações: *Quests: Anihi, Boots of Haste (BOH) e Quest100k. *Itens e vocações balanceadas para um FastAttack já configurado. *Mapa totalmente livre de bug's. *Distro 100% Limpa (Removido todos os erros do MaximusWar). *Servidor Compilado para TFS 0.3.6 (ThiagoBji) *Trainers 100% (ThiagoBji) *Depot *Npc's 100% (Sem bugs). *Prints* *Distro* *Download* RookWar Server *Scan* Clique Aqui! *Créditos* -RookWar Team -Techlook -MaximusWar -ThiagoBji -JobbyMagalhães1 ponto -
Oneshot Spell Lib Boa tarde, meus queridos. Como eu disse no último post do tópico do Spell Forge, sim, ele estava ficando funcional o bastante, mas uma coisa não me agradava, o nível de dificuldade de configuração do sistema estava aumentando, e uma hora, não teria como OT-admins usarem meu sistema, pois não saberiam configurar. Então resolvi parar o desenvolvimento dele por enquanto, mas segue minha biblioteca que estava usando para desenvolvimento do sistema. Uma biblioteca completa para desenvolvimento de magias, orientada a objetos, torna a coisa bem mais interessante. Para utilizar minha biblioteca, basta criar arquivo com qualquer nome na pasta data/lib do seu servidor e colar o seguinte conteúdo abaixo: -- This library is part of Oneshot Spell System -- Copyright (C) 2013 Oneshot -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. -- constant CONST_SPELL_AREA = 0 -- area spells, like exevo gran mas vis CONST_SPELL_DIRECTION = 1 -- wave spells, like exevo flam hur CONST_SPELL_TARGETORDIRECTION = 2 -- mix between area and wave spells WEAPON_SKILLS = { [WEAPON_SWORD] = SKILL_SWORD, [WEAPON_CLUB] = SKILL_CLUB, [WEAPON_AXE] = SKILL_AXE, } -- class for combats (spell instances) Combat = { type = 0, me = 0, ani = 0, formula = { type = 0, values = {}, }, condition = nil, delay = 0, id = 0, } function Combat:New(_type, me, ani, delay, id) local new_spellinstance = { type = _type or COMBAT_NONE, me = me or CONST_ME_NONE, ani = ani or CONST_ANI_NONE, formula = { type = COMBAT_FORMULA_UNDEFINED, values = {0, 0, 0, 0, 0, 0, 0, 0}, }, condition = nil, delay = delay or -1, id = id or 1, } return setmetatable(new_spellinstance, {__index = self}) end function Combat:SetType(_type) self.type = (tonumber(_type) and _type or COMBAT_NONE) end function Combat:SetEffect(me) self.me = (tonumber(me) and me or CONST_ME_NONE) end function Combat:SetDistanceEffect(ani) self.ani = (tonumber(ani) and ani or CONST_ANI_NONE) end function Combat:SetFormula(_type, ...) local args = select("#", ...) self.formula.type = (tonumber(_type and _type or COMBAT_FORMULA_UNDEFINED)) local minc, maxc if args > 8 then minc, maxc = select(9, ...) end local minm, maxm = getConfigValue("formulaMagic") or 1 maxm = minm local minl, maxl = getConfigValue("formulaLevel") or 5 maxl = minl if args > 6 then minm, maxm = select(7, ...) end if args > 4 then minl, maxl = select(5, ...) end local mina, minb, maxa, maxb = select(1, ...) self.formula.values = {mina, minb, maxa, maxb, minl, maxl, minm, maxm, minc, maxc} end function Combat:SetCondition(condition) -- condition needs to be a createConditionObject(), e.g -- local condition = createConditionObject(CONDITION_FIRE) -- setConditionParam(condition, CONDITION_PARAM_TICKS, 1 * 1000) self.condition = condition end function Combat:GetDelay() return self.delay end function Combat:SetDelay(delay) self.delay = (tonumber(delay) and delay or -1) end function Combat:GetId() return self.id end function Combat:SetId(id) self.id = (tonumber(id) and id or 1) end function Combat:getMinMaxValues(cid, ex) local min, max = 0, 0 local n = self.formula.values if not isCreature(cid) then return false end if not isPlayer(cid) then self.formula.type = COMBAT_FORMULA_DAMAGE end if self.formula.type == COMBAT_FORMULA_LEVELMAGIC then min = (getPlayerLevel(cid) / n[5] + getPlayerMagLevel(cid) * n[7]) * n[1] + n[2] max = (getPlayerLevel(cid) / n[6] + getPlayerMagLevel(cid) * n[8]) * n[3] + n[4] if n[9] then min = math.max(n[9], min) end if n[10] then max = math.max(n[10], max) end elseif self.formula.type == COMBAT_FORMULA_SKILL then local weapon = getPlayerWeapon(cid) if weapon.uid > 0 then max = getPlayerWeaponDamage(cid, weapon) * n[3] + n[4] else max = n[4] end if n[10] then max = math.max(n[10], max) end elseif self.formula.type == COMBAT_FORMULA_DAMAGE then min = n[2] max = n[4] end return min, max end function Combat:Callback(position, cid, ex) if not isCreature(cid) then return false end local min, max = self:getMinMaxValues(cid, ex) doCombatAreaHealth(cid, self.type, position, 0, min, max, self.me) if self.condition then doCombatAreaCondition(cid, position, 0, self.condition, CONST_ME_NONE) end return true end -- class for spells Spell = { type = 0, level = 0, maglevel = 0, mana = 0, needtarget = false, target_or_direction = false, range = 0, needweapon = false, selftarget = false, vocations = {}, combats = {}, } function Spell:New(_type, level, maglevel, mana, needtarget, range, needweapon, selftarget, ...) local new_spell = { type = _type or CONST_SPELL_AREA, level = level or 1, maglevel = maglevel or 0, mana = mana or 0, needtarget = needtarget or false, range = range or 1, needweapon = needweapon or false, selftarget = selftarget or false, vocations = {...}, combat = {}, area = {{3}}, } return setmetatable(new_spell, {__index = self}) end function Spell:SetType(_type) self.type = (tonumber(_type) and _type or CONST_SPELLarea) end function Spell:SetLevel(level) self.level = (tonumber(level) and level or 1) end function Spell:SetMagLevel(maglevel) self.maglevel = (tonumber(maglevel) and maglevel or 0) end function Spell:SetMana(mana) self.mana = (tonumber(mana) and mana or 0) end function Spell:SetNeedTarget(needtarget) self.needtarget = (type(needtarget) == "boolean" and needtarget or false) end function Spell:SetRange(range) self.range = (tonumber(range) and range or 1) end function Spell:SetNeedWeapon(needweapon) self.needweapon = (type(needweapon) == "boolean" and needweapon or false) end function Spell:SetSelfTarget(selftarget) self.selftarget = (type(selftarget) == "boolean" and selftarget or false) end function Spell:SetVocations(...) self.vocations = {...} end function Spell:Append(...) local t = {...} for i = 1, #t do self.combat[t[i]:GetId()] = t[i] end end function Spell:SetArea(area) self.area = area end function Spell:Cast(cid) if not isCreature(cid) then return false end if #self.combat == 0 then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return false end if isPlayer(cid) then if not getPlayerFlagValue(cid, PLAYERFLAG_IGNORESPELLCHECK) then if getPlayerLevel(cid) < self.level then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHLEVEL) return false end if getCreatureMana(cid) < self.mana then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA) return false end if getPlayerMagLevel(cid) < self.maglevel then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMAGICLEVEL) return false end if self.needweapon and (getPlayerWeapon(cid).uid == 0) then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUNEEDAWEAPONTOUSETHISSPELL) return false end local vocation = getPlayerVocation(cid) if #self.vocations > 0 and not (table.find(self.vocations, vocation) or table.find(self.vocations, getVocationInfo(vocation).fromVocation)) then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) doPlayerSendDefaultCancel(cid, RETURNVALUE_YOURVOCATIONCANNOTUSETHISSPELL) return false end end end local target = getCreatureTarget(cid) if self.needtarget == true then if self.type == CONST_SPELL_DIRECTION then self.type = CONST_SPELL_TARGETORDIRECTION elseif self.type == CONST_SPELL_AREA and not isCreature(target) then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUCANONLYUSEITONCREATURES) return false end end if self.range and isCreature(target) then if getDistanceBetween(getCreaturePosition(cid), getCreaturePosition(target)) > self.range then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) doPlayerSendDefaultCancel(cid, RETURNVALUE_TOOFARAWAY) return false end end local area = self.area if self.type == CONST_SPELL_DIRECTION or (self.type == CONST_SPELL_TARGETORDIRECTION and not isCreature(target)) then area = getAreaByDir(area, getCreatureLookDirection(cid)) end local centre = getCreaturePosition(cid) local target = getCreatureTarget(cid) if self.type == CONST_SPELL_DIRECTION then centre = getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), 1) elseif self.type == CONST_SPELL_TARGETORDIRECTION then centre = (isCreature(target) and getCreaturePosition(target) or getPosByDir(getCreaturePosition(cid), getCreatureLookDirection(cid), 1)) elseif self.type == CONST_SPELL_AREA then if self.needtarget and isCreature(target) then centre = getCreaturePosition(target) end end local positions = getAreaPositions(area, centre) for i = 1, #area do for j = 1, #area[i] do local tmp = area[i][j] if tmp == 3 then for k = 1, #self.combat do local combat = self.combat[k] if combat then addEvent(function() if self.selftarget then combat:Callback(positions[i][j], 0) else combat:Callback(positions[i][j], cid) end doSendDistanceShoot(getCreaturePosition(cid), centre, combat.ani) end, combat:GetDelay()) end end elseif type(tmp) == "number" and self.combat[tmp] then local combat = self.combat[tmp] if combat then addEvent(function() if self.selftarget then combat:Callback(positions[i][j], 0) else combat:Callback(positions[i][j], cid) end doSendDistanceShoot(getCreaturePosition(cid), centre, combat.ani) end, combat:GetDelay()) end elseif type(tmp) == "table" then for k = 1, #tmp do local tile = tmp[k] local combat = self.combat[tile] if combat then addEvent(function() if self.selftarget then combat:Callback(positions[i][j], 0) else combat:Callback(positions[i][j], cid) end doSendDistanceShoot(getCreaturePosition(cid), centre, combat.ani) end, combat:GetDelay()) end end end end end if self.mana > 0 then doCreatureAddMana(cid, -self.mana, 0) end return true end function rotate(area) local ret = {} for i = 1, #area do for j = 1, #area[i] do if not ret[#area[i]-j+1] then ret[#area[i]-j+1] = {} end ret[#area[i]-j+1][i] = area[i][j] end end return ret end function getAreaByDir(area, direction) local ret = area if direction > NORTH then local n = (4 - direction) repeat ret = rotate(ret) n = n - 1 until n == 0 end return ret end function getAreaCentre(area) local x, y = 0, 0 for i = 1, #area do for j = 1, #area[i] do if area[i][j] == 3 then x = j y = i break end end end return x, y end function getAreaPositions(area, centre) local ret = {} local x, y = getAreaCentre(area) for i = 1, #area do for j = 1, #area[i] do if not ret[i] then ret[i] = {} end ret[i][j] = {x = centre.x + (j - x), y = centre.y + (i - y), z = centre.z} end end return ret end function getPlayerMeleeDamage(cid, item) local skill, attack if item.uid > 0 then local info = getItemInfo(item.itemid) skill = getPlayerSkillLevel(cid, WEAPON_SKILLS[getItemWeaponType(item.uid)]) attack = ((getItemAttribute(item.uid, "attack") or info.attack) + (getItemAttribute(item.uid, "extraAttack") or info.extraAttack) - info.abilities.elementDamage) else skill = getPlayerSkillLevel(cid, SKILL_FIST) attack = 0 end local damage = math.ceil((2 * (attack * (skill + 5.8) / 25 + (getPlayerLevel(cid) - 1) / 10.)) / getPlayerAttackFactor(cid)) return -math.random(0, damage) end function getPlayerAttackFactor(cid) local switch = { 1.0, 1.2, 2.0, } return switch[(getPlayerModes(cid).fight + 1)] end dofile(getDataDir() .."/spells/lib/spells.lua") É uma biblioteca orientada a objetos que facilita o desenvolvimento de magias. Comparando a forma dos scripts de magias, com a minha biblioteca e sem, podemos ver a diferença. Sem a biblioteca: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 4.5, 9) local area = createCombatArea(AREA_SQUAREWAVE5, AREADIAGONAL_SQUAREWAVE5) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Com a biblioteca: local combat = Combat:New(COMBAT_ENERGYDAMAGE, CONST_ME_ENERGYAREA, CONST_ANI_ENERGY) combat:SetFormula(COMBAT_FORMULA_LEVELMAGIC, -1, 0, -1, 0, 5, 5, 4.5, 9) local spell = Spell:New(CONST_SPELL_DIRECTION) spell:Append(combat) spell:SetArea(AREA_WAVE4) function onCastSpell(cid, var) return spell:Cast(cid) end Mas o melhor mesmo é notado quando você quer desenvolver as magias com mais de uma variável combat. Aquelas magias de múltiplos hits e efeitos. Vou pegar uma magia de 3 efeitos e danos diferentes. local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) setAttackFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 4.5, 9) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA) setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE) setAttackFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1, 2) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS) setCombatParam(combat3, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH) setAttackFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 3.5, 7) local area = createCombatArea(AREA_SQUAREWAVE5, AREADIAGONAL_SQUAREWAVE5) setCombatArea(combat1, area) setCombatArea(combat2, area) setCombatArea(combat3, area) function onCastSpell1(cid, var) doCombat(cid, combat1, var) end function onCastSpell2(cid, var) doCombat(cid, combat2, var) end function onCastSpell3(cid, var) doCombat(cid, combat3, var) end function onCastSpell(cid, var) onCastSpell1(cid, var) addEvent(onCastSpell2, 300, cid, var) addEvent(onCastSpell3, 600, cid, var) return true end Com o uso da minha biblioteca, podemos notar a redução de linhas, e a limpeza do código: local combat1 = Combat:New(COMBAT_ENERGYDAMAGE, CONST_ME_ENERGYAREA, CONST_ANI_ENERGY) combat1:SetFormula(COMBAT_FORMULA_LEVELMAGIC, -1, 0, -1, 0, 5, 5, 4.5, 9) local combat2 = Combat:New(COMBAT_ICEDAMAGE, CONST_ME_ICEAREA, CONST_ANI_ICE) combat2:SetFormula(COMBAT_FORMULA_LEVELMAGIC, -1, 0, -1, 0, 5, 5, 1, 2) combat2:SetId(2) combat2:SetDelay(300) local combat3 = Combat:New(COMBAT_EARTHDAMAGE, CONST_ME_SMALLPLANTS, CONST_ANI_EARTH) combat3:SetFormula(COMBAT_FORMULA_LEVELMAGIC, -1, 0, -1, 0, 5, 5, 3.5, 7) combat3:SetId(4) combat3:SetDelay(600) local T = {1, 2, 4} local area = { {T, T, T}, {T, T, T}, {T, T, T}, {0, T, 0}, {0, 3, 0}, } local spell = Spell:New(CONST_SPELL_DIRECTION) spell:SetArea(area) spell:Append(combat1, combat2, combat3) function onCastSpell(cid, var) return spell:Cast(cid) end Qualquer dúvida quanto ao uso da biblioteca no desenvolvimento de magias, basta postar neste tópico que estarei esclarecendo. Grande Abraço, Oneshot.1 ponto
-
[Encerrado] Stone sumir mesmo estando no CP ao evoluir pokemon!
CaioValverde reagiu a kaiosaj por um tópico no fórum
Alguém pode me ensinar como faz para a stone sumir quando ela está no CP(Depot) e o player usa ela sem retirar-la do CP para evoluir um pokemon? No meu OT ela estando no CP não some, apenas quando está na mão... Valendo REP+ Grato desde já, Caio Valverde.1 ponto -
[MARCAS] Do jeito que a gente fala!
TioItachi reagiu a Alexclusive por um tópico no fórum
E se as marcas fossem escritas do jeito que a gente fala? Fonte: Clube do Design1 ponto -
Fawz, acho que você esqueceu de setar a storage no player quando ele entrega os items, não? Vai q é só impressão minha e.e1 ponto
-
[Encerrado] [DUVIDA]Consertar bug
arthurlindo reagiu a markindoot por um tópico no fórum
va no conf.lua e de Ctrl + F e procure pela linha rateMagic = 1.0 se tiver muito alta é lógico que os players irão upar ML fast ai é só voce abaixar ao seu gosto.1 ponto -
Pedidos e dúvidas - Servidos Derivados, já que o pedido é sobre pokémon, no caso, um servidor derivado, certo?1 ponto
-
[Show OFF] GabrielTxu and Bolz (Pokemon Skyfall)
SamueLGuedes reagiu a StyloMaldoso por um tópico no fórum
"Fala ai galera eu com Pouco tempo esse final de semana consegui terminar uma hunt bem detalhada. fiquem com essa Print e me de sugestão de quais pokemons colocar nela.." e eu ja tinha essa hunt desde 2011, e mais gente do meu skype também tinha, e porém tem muito bug, vergonhoso sua atitude, infatil de pegar trabalho e fala que foi você mesmo que fez kk'. não adianta você tenta fala com crianças, eles sempre nos surprende com as argumento de criança enfim, bye topico não irei sujar o topico porque o boltz sim é um otimo mapper, o restante é apenas crianças que dizem saber mapear.1 ponto -
PokeBadAss Voltando Com Tudo!
HannahHelenaTei reagiu a BabyLoiz por um tópico no fórum
ok, te vi online la, mas nem cheguei a ler seu post, mals, fala cmg lá sobre a vaga a hora que tiver online, ou manda msg na pagina do face! Sim, é para ser bunda ruin mesmo, é uma piadinha interna, boa sacada rapaz!1 ponto -
sei sei, tem uns bugzins ali1 ponto
-
1 ponto
-
Fazendo uma apresentação organizada!
vital900 reagiu a Alexclusive por um tópico no fórum
Depois desse tópico, só faz uma má apresentação quem não ler o mesmo. Assino embaixo!1 ponto -
Global Server 10.10
Jackgoku reagiu a alissonfgp por um tópico no fórum
MSVC 10 ou esse Dev-C++ meu eu compilo dboa ele da um erro em creature no final mas eh só clicar em compilar q ele pula o erro e termina ... essa source n tem o novo sistema de party, chegando em casa posto ela Link: http://www.4shared.com/rar/1LaX9_Xe/Stians_Repack_Dev-Cpp_Alissonf.html Esse n tem browsefield, só o novo sistema de party...1 ponto -
Potion System
lucasfgx reagiu a ScythePhantom por uma questão
Perfeito Omega, reputado, e o outro brother também por ter ajudado, obrigado.1 ponto -
Potion System
ScythePhantom reagiu a lucasfgx por uma questão
nada ve cara eu testei no meu e funciono os 2 o dele e o meu.1 ponto -
Potion System
ScythePhantom reagiu a Omega por uma questão
Usuário acima, embora seu script possa ser funcional, a base que ele forneceu é muito superior e, por favor, use spoilers para postar códigos grandes. Testa mais esse aqui se quiser manter, agora deve funcionar.1 ponto -
[GESIOR] VictorWEBMaster 2019v
Alexclusive reagiu a VictorWEBMaster por um tópico no fórum
Utilize a DB postada no topico. Nova versão! Resolvi postar uma nova versão hoje dia 16/10/2013 com alguns erros fixados e reparados. Spells arrumados (Diretorio nr 2 estava errado). donate.php agora enviando com $_POST[''] para o pagseguro. Sistema de instalação otimizado Demais bugs por favor, enviem PM ou postem aqui, tenha certeza que você terá sua REP+ garantida!1 ponto -
Css e html - problemas com imagem e sua posição
masdead reagiu a VictorWEBMaster por uma questão
Nem a classe que voce adicionou está correta, voce adicionou uma classe na forma "class" não na forma "id".. ao inves de id="..." coloque class="..."... Isso resolverá.1 ponto -
Nenhuma vantagem e desvantagem, colega. Eu só senti vontade de desenvolver uma biblioteca orientada a objetos para desenvolvimento de magias. Não preciso convencer com quaisquer argumentos o uso dela. Quanto as duas funções: combat:SetID(2) Isso vai dar o tileid igual a 2 para um combat, aí você vai poder chamar ela na área da sua magia com isso local area = { {2}, {3}, } E a função: combat:SetDelay(200) É o delay, intervalo de tempo para o combat ser chamado em um sqm. Abraços.1 ponto
-
o vital falou vocefoitrollado porvital900 KKK1 ponto
-
Tópico reportado para moverem1 ponto
-
[GESIOR] VictorWEBMaster 2019v
VictorWEBMaster reagiu a Xanpsw por um tópico no fórum
só um errinho no Website Version 0.0.4 V2.0 no donate.php na linha 714 está: <input type="hidden" name="item_valor_1" value="' . $item_valor_1. '">'; substitua para <input type="hidden" name="item_valor_1" value="' . $_POST["item_valor_1"]. '">'; pois assim no pagseguro ele vai conseguir pegar o valor da compra. sem isso ele tava dando erro de preencher o valor no checkout. Site muito bom, se eu achar mais bugs e conseguir arruma posto aqui.1 ponto -
PokeBadAss Voltando Com Tudo!
BabyLoiz reagiu a HannahHelenaTei por um tópico no fórum
Cara, adorei o servidor, pena que não devo conseguir pegar o top ; u ; ' Boa sorte, vou chamar alguns amigos >.<1 ponto -
A poke bar você pode simplesmente apagar a pasta game_barpoke. O level e system e simples mais fica seu criterio.1 ponto
-
[Gesior] Pagina Transferência de Premium Points entre players
Alexclusive reagiu a VictorWEBMaster por uma questão
http://www.xtibia.com/forum/topic/190279-gesior-9x-10x-otimizado-por-victorwebmaster-20132014v/?p=15714541 ponto -
[Show OFF] GabrielTxu and Bolz (Pokemon Skyfall)
lipinhooooo reagiu a Gabrieltxu por um tópico no fórum
Fala ai galera eu com Pouco tempo esse final de semana consegui terminar uma hunt bem detalhada. fiquem com essa Print e me de sugestão de quais pokemons colocar nela..1 ponto -
Pedido/Erro Script de transformação 8.6
Omega reagiu a lovenina12 por uma questão
to viajando vo voltar domingo da minha viagem, mais olha nao mexo com wodbo ( alem de eu ser fã pra carai ) mais axo que seria isto: function onCastSpell(cid, var) local config = { [1] = {level = 20, newvoc = 2, outfit = 37, eff = 56}, [2] = {level = 100, newvoc = 3, outfit = 18, eff = 57}, [3] = {level = 150, newvoc = 4, outfit = 71, eff = 58}, [4] = {level = 200, newvoc = 5, outfit = 70, eff = 59}, } trans = config[getPlayerVocation(cid)] if not trans then doPlayerSendCancel(cid, "You can not transform.") return false elseif getPlayerLevel(cid) >= trans.level then doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "You not level " .. trans.level .. " to transform.") end doSetCreatureOutfit(cid, {lookType = trans.outfit}, -1) doPlayerSetVocation(cid, trans.newvoc) doSendMagicEffect(getCreaturePosition(cid), trans.eff) doPlayerSendCancel(cid, "You Transformed!") doPlayerSave(cid) -- FUNCAO DE SALVAR 1 db.query("UPDATE `players` SET `vocation` = ".. trans.newvoc .." WHERE `id` = " .. getPlayerGUID(cid)) -- FUNCAO DE SALVAR 2 return true end1 ponto -
[Show OFF] GabrielTxu and Bolz (Pokemon Skyfall)
StyloMaldoso reagiu a SamueLGuedes por um tópico no fórum
Eu fiz o buero de Saffron vejam como ficou =D Comente. @edit bem ja que o gabriel nao posta eu vou colocar, ai esta Cerulean =D comentem ai por favor =D1 ponto -
Solucionar O Erro Unsupported Client Version.
Felliperenato reagiu a luisfe23 por um tópico no fórum
Faaaaala XTibianos, hoje irei trazer um tutorial que ensina a solucionar um erro muito comum, que acontece quando voce vai abrir um mapa. Creio que todos mappers, ja viram este erro. Mas, de que erro estamos falando? Este: Agora que mostrei o erro, irei ensina-los a solucionar ele. Vamos la. Vamos supor que vc vai abrir o mapa, quando o erro acontece, o que fazer agora? 1-Faça o seguinte, abra seu RME e crie um novo mapa. Depois vá em File > Import > Import Map: 2-Quando clicar nele, ira abrir um box como este: 3-Agora, clique em Browse, e selecione o mapa que está com erro e voce deseja abri-lo. Então ele ficara assim: 4-Clique em OK ! Então no mapa que voce criou, lá estara o mapa que voce queria abrir: É isso ai XTibianos. Este tutorial é exclusivo ao XTibia, ou seja, cópia é RIPPING ! Abraços e até o proximo tutorial.1 ponto -
Tutorial Mapping Tema: Deserto Hoje, vou estar fazendo um tutorial de como criar a parte nature de um deserto. Não é tão complexo, e é muito fácil, bem mais do que se pensa, pois não é nescessário exageraa..aar nos detalhes, mas tentar manter o mais jogável possivel. Estou usando o remere's, caso você use outro editor não fará diferença nenhuma. Juntamente as imagens estarei postando os Ids's fique tranquilo. Estarei postando também alguns tutoriais complementares caso você tenha dúvida em alguma parte. Chega de conversa e vamos ao Tutorial: 1# Crie sua base: Bom, primeiramente você tem que criar o continente, algo não muito difícil de ser criado. Eu fiz a minha não ficou tudo isso mas serve como exemplo: Caso tenha alguma dúvida de como criar o continente, aqui vai um tutorial: http://www.xtibia.co...to-continental/ (desculpe a má qualidade do tópico mais foi o que eu achei). O continente ta meio "feinho", mas não é um tutorial de continente né, hehe! ______________________ 2# Acressente tufinhos de gramas: Sua missão agora e colocar uns tufinhos de grama, para deichar o ambiente mais agradável, um local mais bunito, essa é a parte do detalhamento inicial: Dica: Recomendo não colocar muito dessas "maiorzinhas" (ids: 6216 e 6217), elas em exesso ficam um tanto estranhas. ________________ 3# Adicionar a grama, deichar o lugar mais vivo: Porque não deichar o local mais vivo? Bom, nessa parte eu deichei um pouquinho vivo de mais, fica à seu critério o quão de 'vida' você dará ao local, eu coloquei bastante vida, deichei um deserto mais habitavel: _______________ 4# Cactos e areia fina: Como dito antes, coloquei bastante vida no meu deserto. Agora acrescentei cactos e arvores (hambiente), e a areia fina, aqueles grãozinhos de areia. e isso você deve fazer, pouco ou muito, tudo fica a seu critério, eu puis uma quantia agradável: _________________ 5# Lixos, e pedras: - Adicional/Opcional - Esta quinta parte, é pra você dar aquele geral no local, fazer as adições necessárias, arrumar "aqui", "ali", dar aquele #Up, antes de finalizar: Essa parte, é a hora que você usa total criatividade sua, acrescente o que quiser, deis de que fique adequado ao local. ______________ 6# Final: Depois ter realizado os 5 passos anteriores, é finalizar o mapa, terminar de fazer o "aqui", o "ali", terminar o "up" dar a catada final no mapa, está aí: Ids útilizados: Os outros items semelhantes estão na casa dos ids acima, basta procurar. Tutoriais (caso precise): Não há muitos tutoriais aqui no 'Ekz' de desertos, vou passar alguns de nature mesmo, mas use o que for adequado para deserto: [Nature] Detalhamento e Beleza. Fazendo nature. Miragem deserto. Nature Básico para Iniciantes. Créditos: 100% GuizitoG Gostaria também de deichar aqui o nome do meu companheiro de mapping, Vital, que já me deu diversas dicas, procurem-o caso tenham alguma dúvida de mapping, ou se dirija a mim. Espero que gostem e aprovem o tutorial, em breve estarei trazendo mais (se der vontade), até a próxima!1 ponto
-
Video Aula - Aprenda Ser Um Script #1
Jakson Souza reagiu a thalia2012 por um tópico no fórum
Bom galera, tudo certo? XD Alguns podem me conhecer por aí, só que pelo meu outro nick "thalia" rs Então galera, como todo mundo me media ajuda com scripts, decidir criar um canal no youtube focado bastante em como se tornar um script, no canal vai ter videos ensinando "scriptar" e como interpretar um script... enfim! Se inscrevam no canal e ajude a divulga-lo galera! muito obrigado a sua atenção, aqui vai o link do canal junto com o primeiro vídeo! Canal: http://www.youtube.com/user/NWEnsina #1 Vídeo - OT Scripting #1 - function onUse, if/else.1 ponto -
Outfit Por Vocation
gustavo3754 reagiu a Vodkart por uma questão
existe, e é isso que o script que eu te passei faz, ele adiciona storage... function onLogin(cid) -- voc e outfit local x = { [1] = 50, -- sorc [2] = 60, -- druid [3] = 70, -- paladin [4] = 80, -- kina [5] = 90, -- master sorc [6] = 100, -- elder druid [7] = 200, -- royal paladin [8] = 195 -- elite kina } if (not x[getPlayerVocation(cid)]) then return true end doSetCreatureOutfit(cid, {lookType = x[getPlayerVocation(cid)]}, -1) return TRUE end [2] = 60, -- druid [iD DA VOC] = LOOKTYPE que vai se transformar1 ponto -
E ae galera!! Blz? Bom... Esse eh meu primeiro post, então espero q gostem. Esse eh o Oraculo q eu mesmo fiz. Tah ae: Nome: Oraculo Versão Testada: 8.60 e 8.70 Servidor Testado: The Forgotten Server (Não lembro a versão) Tutorial e Scripts Arquivo .xml: Certo... Primeiro, veja se na pasta "data/npc" tem o The Oracle original. Se tiver, (Com certeza deve ter) vc abre o arquivo dele com o bloco de notas... ( Eu uso o Notepad++. Eh melhor pra entender as coisas. Deve tar escrito "oracle.xml" ou outra coisa parecida.) Apaga tudo q tiver la dentro e coloca isso: <?xml version="1.0"?> <npc name="Oraculo" script="data/npc/scripts/oraculo.lua" access="1" monster="1" speed="0" lookdir="2" pushable="0" level="100"> <health now="150" max="150"/> <look typeex="1448" head="0" body="0" legs="0" feet="0" corpse="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Em que posso ser ultil?"/> <parameter key="message_farewell" value="Adeus."/> <parameter key="message_walkaway" value="Ate logo entao..." /> </parameters> </npc> Se não tiver o arquivo do The Oracle original, eh soh vc copiar um qualquer lá, apagar tudo q tiver dentro, colar esse código ai em cima e renomear o arquivo pra "Oraculo.xml". Arquivo .lua: Certo... Depois de fazer isso, vc vai la em "data/npc/scripts" e procura pelo arquivo original do oraculo tbm. Se tiver lá, vc abre ele, apaga tudo q tiver dentro e coloca isso: Isso ae... Despois de colar, salve, feche e renomeie o arquivo para "oraculo.lua". Se não tiver o arquivo original do oraculo lá, eh soh vc copiar um qualquer lá, apagar tudo q tiver dentro, colar isso q ta ai em cima e renomear o arquivo para "oraculo.lua". Como Edita-lo Certo... Agora vou ensinar como editar ele ao seu gosto. Preste atenção pq vc tem q fazer do jeito q eu ensinar! Eu vou dizer tudo q vcs devem saber para edita-lo. Mesmo q seja dificil, se vc fizer do jeito q eu ensinar, vai funcionar direitinho. Afinal, esse eh o script q eu uso no meu servidor. E, no meu, ele funciona direitinho. Aí vai: Adicionando Novas Cidades: Para adicionar novas cidade, eh simples. Basta vc copiar oq tah de verde e colar antes do end q esta em negrito. Tem um end la em cima, q eh onde o player diz o nome da cidade e um end ali em baixo, q eh pra onde o player vai ser levado. As partes em laranja são os lugares q vc pode editar de acordo com a cidade q v vai adicionar. Veja o Exemplo: Digamos q eu queira adicionar uma cidade chamada "Alabasta". (Lol... Cidade do One Piece) Basta vc fazer o seguinte: Antes: elseif msgcontains(msg, "venore") and talkState[cid] == 13 then selfSay("Tem certeza q deseja {VIVER} em Venore?", cid) talkState[cid] = 16 end Depois: elseif msgcontains(msg, "venore") and talkState[cid] == 13 then selfSay("Tem certeza q deseja {VIVER} em Venore?", cid) talkState[cid] = 16 elseif msgcontains(msg, "alabasta") and talkState[cid] == 13 then selfSay("Tem certeza q deseja {VIVER} em Alabasta?",cid) talkState[cid] = 17 end Repare oq eu mudei: Onde estava "venore" eu coloquei o nome da cidade q eu qria adicionar, "alabasta". E isso eh oq o player vai ter q falar pro oraculo saber q ele quer viver em alabasta. Depois eu mudei a frase q o oraculo diz. Fazendo com q ele diga "Tem certeza q deseja {VIVER} em Alabasta?". E por ultimo e o mais importante, eu mudei o talkState. Pq, se o player disser q qr viver em alabasta, o talkState dele vai ser 17. Isso ajuda na outra parte. Mais em baixo. Era assim: Antes: elseif msgcontains(msg, "sim") and talkState[cid] == 16 then selfSay("Boa viagem e tome cuidado", cid) doPlayerSetTown(cid, 6) doTeleportThing(cid, {x=32957, y=32076, z=7, stackpos=253}) doSendMagicEffect({x=32957, y=32076, z=7, stackpos=253}, 10) doPlayerSendTextMessage(cid, 22,"Bem vindo. Agora vc eh um cidadao de Venore") end Depois: elseif msgcontains(msg, "sim") and talkState[cid] == 16 then selfSay("Boa viagem e tome cuidado", cid) doPlayerSetTown(cid, 6) doTeleportThing(cid, {x=32957, y=32076, z=7, stackpos=253}) doSendMagicEffect({x=32957, y=32076, z=7, stackpos=253}, 10) doPlayerSendTextMessage(cid, 22,"Bem vindo. Agora vc eh um cidadao de Venore") elseif msgcontains(msg, "sim") and talkState[cid] == 17 then selfSay("Boa viagem e tome cuidado", cid) doPlayerSetTown(cid, 10) doTeleportThing(cid, {x=?????, y=?????, z=7, stackpos=253}) doSendMagicEffect({x=?????, y=?????, z=7, stackpos=253}, 10) doPlayerSendTextMessage(cid, 22,"Bem vindo. Agora vc eh um cidadao de Alabasta") end Viu soh? Akele 17 q foi colocado la em cima, foi usado bem ali. Se fosse 16 o player teria sido mandado pra Venore, mesmo q ele tivesse dito q qira ir pra Alabasta. E repare tbm q tudo isso foi colocado antes do end. Adicionando Novas Classes: Certo... Pra adicionar novas classes eh soh fazer a mesma coisa q eu ensinei em "Adicionando Novas Cidades". Primeiro vc copia oq ta de azul. (La em cima gente, no script. Esse aki foi soh uma explicação.) E edita oq ta de laranja tbm. Num vô nem dá exemplo pq, depois de ver a explicação de como adicionar as cidades, vc ja deve saber oq fazer. Soh vou explicar uma coisa importantíssima, nesse caso. Se vc adicionar uma nova classe, vc vai ter q arrumar Todos os outros talkStates. Pq elas tem q ficar na ordem. Repare, no script, q os numeros q estão em roxo são os numeros das talkStates. Eles sao os q vc vai ter q arrumar primeiro. Depois vc arruma os q estao em azul claro. Os numeros q estão em vermelho são apenas pra lembras vcs qual eh o talkState q vc vai ter q mudar na hora de adicionar uma cidade ou uma profissao nova. Aí, eu mudei a cor dos outros talkStates pra vc saber qual sao os outros talkStates q vc vai ter q arrumar, caso adicione uma PROFISSÃO nova. Se vc for adicionar soh uma cidade nova, nao precisa arrumar todos os outros talkStates. Retirando Cidades e/ou Profissões: Ahhhh.... Essa eh a parte mais facil, neh? Num precisava nem eu ter colocado... Rsrsrs... Mas vou colocar pq tem uma coisa q eh preciso saber tbm. Caso vc RETIRE uma PROFISSÃO, vai ser necessário arrumar as outras talkStates tbm... Eh, eu sei... Vc deve tar pensando: "Mas ki P*** eh essa q tudo q eu vou fazer tem q arrumar essa P*** de talkState..." Rsrsrs... Mas eh isso mesmo. Se vc quiser q o script funcione, vai ter q arrumar sim. Caso vc queira retirar uma cidade não será preciso arrumar nada nao. Soh nos lugares onde estão em laranja. Ah, eh... Pra retirar uma cidade ou profissao, eh soh vc apagar oq ta de azul, ou de verde. Agradecimentos: Bom.. Num tenho q agradecer a ninguem, pois o script eh todinho meu. Soh agradecer a vc por ter lido esse post enorme (Espero q me desculpe) e... Q se o meu script, por algum milagre da ciência, não funcionar no seu servidor, espero q vc encontre um q funcione. Eu tentei, neh? Mas eh isso aí... Por favor, comentem, critiquem, ensinem e me digam se tem alguma coisa q eu poderia melhorar, tanto no script, qto no post. (Esse eh meu primeiro post, então... Peguem leve. xD) Flws e até a próxima!1 ponto