Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 02/17/16 em todas áreas
-
Bom pessoal estou desenvolvendo um site para servidores open tibia que contem painel de gerenciamento do banco de dados, algumas imagens ai.. em breve + detalhes.. Pra quem quiser ir testando o painel, já criei o repositório no github Tutorial rápido: lá no seu banco de dados, execute o seguinte comando no console é só importar o revolution.sql para o seu banco de dados e ir lá na tabela accounts na sua conta e coloque o valor 3 na coluna nivel. Acesse a pasta _panel/_app e abra o arquivo config.inc.php e configure as seguintas constantes.. //BASE DO SITE define('SERVERURL', 'http://localhost/OTPanel/'); //ENDEREÇO DO PAINEL define('SERVERNAME', 'OTPanel'); //NOME DO SERVIDOR // CONFIGRAÇÕES DO SITE #################### define('HOST', 'localhost');//HOST DO BANCO DE DADOS define('USER', 'root'); //USUARIO DO BANCO DE DADOS define('PASS', ''); //SENHA DO BANCO DE DADOS define('DBSA', ''); //NOME DO BANCO DE DADOS Tentarei atualizar o sistema umas duas vezes por semana, quem quiser contribuir é só ir no github.. https://github.com/Mun1z/RevolutionACC2 pontos
-
Bom tarde galera, venho por meio deste tópico, anuncar que, estou terminando de desenvolver um ATS derivado de Tibia.. Um pokémon server.. Bom, vou postar ShowOff, apenas dos sistemas no qual tem no servidor.. Irei resolvendo os Bugs, e então, quando achar que está bom, liberarei o Download do servidor, junto com as devidas sources. Eu tambem, colocarei uma lista do que foi feito no servidor.. Desde bugs, até novos sistemas. enfim.. Bom, como todos sabem, esse servidor contem os sistemas básicos.. Mas ainda não parei para mexer nos sistemas mais simples.. Changelog: Adicionado nas sources: - DoCreatureSetNick - AutoStacking - Modificado a função AddItem (estava bugando por causa do autostacking..) - Adicionado todas as races pokémons. - Modificado a cor da fala dos groups nos channels. - Adicionado Passive e Agressive, igual o PokeXGames. - Adicionado OnSpawn - Adicionado Pokémon Ghost System - Adicionado GetCreaturePathTo - Adicionado CastSpell Adicionado no servidor: - Novo NPC de mudança de Nick do pokémon; - Peguei função do PDA para alterar nomes dos pokémons shinys, e deixado normal. Ex: Antes: Shiny Tangela. Agora: Tangela. - Adptado/Adicionado sistema de vantagem e desvantagem do PDA. - Copiei as passives do PDA e adpatei para o servidor. - Copiei sistema de vantagem e desvantagem do PDA e adpatei para o servidor. - Adptado/Adicionado o Clan System do PDA. - Sistema de Icon (acabei de adicionar só adicionei 1 icon pra testar mesmo) ^^ - Retirados o S no final dos pokémons selvagens. - Ao morrer, aparece descrição no corpse, indicando o monstro que matou e o nome de quem morreu. - Sistemas basicos (surf, ride, blink etc.) por order Mudanças nas configurações do servidor: -Adicionar/fazer moves, basta fazer igual o PDA. Porem, se você baixar um servidor PDA e pegar a script de "pokémon moves" da LIB, e jogar nesse servidor, não irá funcionar ^^ -Adicionar pokémons, tambem é só adicionar como se fosse um PDA. -Adicionarfazer novas evoluções igual o PDA. -Adicionar/fazer novas passives igual o PDA. Otclient: Peguei OTClient na versão 0.6.5; - Fiz a barrinha de moves funcionar.. - Não vou adicionar pokebar - Transparency funcionando Obs: O Old cliente ainda está usavel, pois não extendi o cliente, nem pretendo extender.. Faltando/Em andamento: Arrumar alguns moves Refazer nurse joy Configurar todos os pokémons e balancear Configurar o Clan Sistema Configurar Spells Confgurar sistema de ovos Retirar uns duplicad Itens Arrumar os sistemas basicos(hoje ainda deixo 100%) OBSERVAÇÕES: Eu não irei postar ainda, pois o mesmo está em andamento, tem muitos bugs na qual estou resolvendo. ***Se alguem quiser me ajudar, basta deixar seu contato. ** Não me precionem plis. * Sou lindo - Irei atualizar todos os dias, e colocar prints e atualizações e modificar o nome do topico com a data de atualização. - NÃO irei mexer no mapa, se alguma alma quiser ajudar, pois bem, deixe seu contato e.e - NÃO tem level sistema. e NÃO é PDA. CREDITOS: Zipter OrochiElf Arkz Elwyn GabrielTxu Sobre os creditos, *Eu peguei um ou mais sistemas, alguns destes me tiraram duvidas e sou grato*. PRINTS: Estou desenvolvendo esse servidor exclusivamente para o XTIBIA, e tambem porque quero ver a galera sair da mermisse do PDA..Durante muito tempo, vi gente criando topicos, pra geral juntar e fazer os sistemas do PDA, ou fazer um servidor que chegue no rastro do PDA.. Então, se alguem quiser me ajudar.. Basta me comunicar.. OBS: Sempre verifiquem as atualizações abaixo, que é onde eu irei editar sempre e postar atualizações, abram os spoilers. ATUALIZAÇÕES: 11/10/2015 00:16 Parei para mexer no Design do Client. novo entergame: Atualização *11/10/2015* Atualização *12/10/2015* *Vou upar os Prints das atualizações e colocar no tópico*1 ponto
-
Erro em script (sem erro no distro)
Darkraus reagiu a Night Wolf por uma questão
quanto mais atual, mais recursos.. porém TFS 1.2 é MUITO diferente de 0.36... eu uso aqui em casa dois servidores (0.36 e 0.4)1 ponto -
Criando page de RESET Personagem.
Thillys Alves reagiu a Furabio por uma questão
Pronto... primeiro vá na pasta classes do seu servidor, abra o arquivo player.php e troque por esse : Agora troque seu accountmanagement.php por esse: Ps : Já está configurado com todos os níveis de reset, de acordo com o site da RadBr.1 ponto -
[Encerrado] ATTACK AO MEU SERVIDOR
czxale reagiu a icaro201094 por um tópico no fórum
Normalmente isso ai é uso de bot, e sim, irá banir automaticamente todos que mandarem Unknown Bytes.1 ponto -
Erro em script (sem erro no distro)
Darkraus reagiu a Night Wolf por uma questão
eu tinha explicado ali: variantToNumber(var) representa o target. ----- o var da spell pode me retornar o uid do target através dessa função variantToNumber(var) Tem algumas discussões sobre isso aqui no xt, só procurar o tópico do @@Skulls1 ponto -
[Encerrado] ATTACK AO MEU SERVIDOR
czxale reagiu a icaro201094 por um tópico no fórum
Se não me engano no config.lua tem a opção autoBanishUnknownBytes, só por true.1 ponto -
Erro em script (sem erro no distro)
Darkraus reagiu a Night Wolf por uma questão
olha, vc não pode usar cid até ele ser declarado e ele só é declarado depois de function onCastSpell.. então nada disso daqui vai funcionar: local slot1 = getPlayerSlotItem(getCreatureTarget(cid), 5) local slot2 = getPlayerSlotItem(getCreatureTarget(cid), 6) isCreature/isPlayer/isMonster verificam se determinado uid é criatura/player/monstro.. o parâmetro é o uid. Pra quem executa os callbacks, nós chamamos o uid de cid, mas pode ser muito bem isPlayer(getCreatureTarget(cid).uid) -- verifica se assim funciona.. vc só tem que colocar target = "1" na tag do spells.xml variantToNumber(var) representa o target. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -2, -1, -3, -2) local escudo = 2520 local storage = 199901 function onCastSpell(cid, var) if isPlayer(variantToNumber(var)) then local slot1 = getPlayerSlotItem(variantToNumber(var), 5) local slot2 = getPlayerSlotItem(variantToNumber(var), 6) if slot1 or slot2 == escudo then setPlayerStorageValue(variantToNumber(var), storage, 1) doSendAnimatedText(getCreaturePosition(cid), 'Charged', 180) end addEvent(function() if isCreature(cid) then setPlayerStorageValue(variantToNumber(var), storage, 0) doSendAnimatedText(getCreaturePosition(cid), 'Charge lost', 180) end end,4000) end return doCombat(cid, combat, var) end1 ponto -
Erro em script (sem erro no distro)
Darkraus reagiu a Night Wolf por uma questão
de cara o erro q se enxerga é vc utilizando a função isPlayer(uid) sem o parâmetro.. vc quer verificar se o inimigo é um player? outra coisa.. setPlayerStorageValue(#inimigo, storage, 1) isso daqui não existe pois #inimigo retorna o numero de elementos numa tabela.1 ponto -
Que que isto? help
Mestre Server reagiu a Furabio por uma questão
Baixe a versão do xampp mais recente... só digitar no google xampp, entrar no site e clicar em download.1 ponto -
Criar tipografia usando formas geométricas simples
icaro201094 reagiu a SkyLigh por um tópico no fórum
Passo 1 Crie um novo documento no tamanho 1400px*720px com um fundo cinza-claro, use um pincel macio e branco grande, para pintar um ponto de luz no centro da tela: A palavra que criaremos é: “METRO”. Vamos começar com a letra “M”: Pegue a Ferramenta Retângulo a partir da caixa de ferramentas: Na barra de opções, aplicam-se as seguintes definições para este retângulo preto: Faça a seguinte forma na nossa tela de pintura: Use a Ferramenta de Transformação Livre (Free Transform Tool), para distorcer o retângulo da seguinte forma, arrastando o canto inferior direito do retângulo para o centro: Esta é a forma apontando que você vai alcançar: Duplique essa camada e lance-a na horizontal, e forme a seguinte forma: Em seguida, pegue a Ferramenta Polígono da caixa de Ferramentas: Aplique as seguintes definições para a Ferramenta Polígono na barra de opções: Adicione uma forma de seleção retangular no centro de nossa letra, e aqui está o efeito até agora: Passo 2Vamos trabalhar na letra “E” nesta etapa. Use a ferramenta retângulo novamente e faça a seguinte forma retangular de novo: Use a ferramenta retângulo novamente, e desenhe formas retangulares cor de rosa 2 vezes nas seguintes áreas: Adicione outra forma retangular cor de rosa na parte superior, como mostrado abaixo: Passo 3Vamos trabalhar na letra “T” nesta etapa. Desenhe uma forma retangular como mostrado abaixo: Em seguida, desenhe outra forma retangular abaixo para terminar a letra T: Adicione uma forma triangular atrás da letra T, e defina sua cor de preenchimento para cinza-claro, de modo que o “T” se destaque: Passo 4Nesta etapa, criaremos a letra “R”. Use a Ferramenta de Retângulo para criar a seguinte forma com a cor cinza: Duplique esta camada, use a opção “oblíquo” na Ferramenta de Transformação Livre, vire a camada duplicada na seguinte forma: Desenhe um círculo rosa para finalizar a letra “R” com a Ferramenta Elipse: Passo 5Vamos trabalhar na letra “O” nesta etapa. Desenhe um círculo com preenchimento preto, como mostrado abaixo: Desenhe um círculo menor dentro do círculo preto com preenchimento cor de rosa para formar uma forma de “O”: Passo 6Vamos terminar este texto, adicionando um efeito de pintura grunge aos poucos. Crie uma nova camada logo acima da camada de fundo, use o pincel que você baixou do tutorial, pinte algum padrão por trás do texto: Agrupe todas as camadas de texto em uma pasta, crie uma nova camada e coloque a máscara de corte nessa nova pasta: Pinte algum padrão grunge sobre o texto, como mostrado abaixo: Etapa 7Este último passo é opcional. Você pode adicionar algum efeito de filtro liquify para este texto. Achate a imagem, em seguida, duplique a camada de fundo. Em Filtro > Dissolver, use a ferramenta Clockwise Twirl: Com as seguintes configurações: Aplique isso a área seguinte: Ajustadas ainda mais a cor dos textos, ligeiramente com a camada de ajuste Color Balance (Balanço de Cores), aqui está o meu efeito final: Créditos : ClubedoDesign1 ponto -
[Arquivado]Canal no youtube "Tutoriais de Opentibia"
icaro201094 reagiu a Furabio por um tópico no fórum
Sim esse é um dos motivos de eu querer criar, além de que tem pessoas que preferem tutorial em vídeo do que escrito. Quem sabe não rola uma parceria shuashuashua Se eu ver que tem um pouco de pessoas interessadas eu faço sim.1 ponto -
Instanciando Mapas v1.0
Night Wolf reagiu a Skulls por um tópico no fórum
Fala galera, tudo bem? Semana passada abri uma dúvida perguntando se alguém conhecia algum jeito de players compartilharem o mesmo espaço no mapa sem interagirem entre si, como se fossem duas dimensões separadas. Ninguém soube me dar uma solução que fizesse exatamente isso, porém, o Danihcv me deu uma luz sugerindo que eu fizesse algo próximo de um instanciador de mapa. Ou seja, uma forma de clonar automaticamente um pedaço do mapa desejado sem ter que criar mil vezes no map editor. Ainda estou trabalhando na automação do mesmo - pretendo fazer um sistema, sem ser talkaction, que sempre que for necessário ele instancia uma novo espaço para aquele mesmo mapa. Esta é uma primeira versão, feita em talkaction pois achei melhor de trabalhar num primeiro momento e testar todas as funções que eu queria adicionar, ela faz basicamente cópia de uma área do mapa. Pro projeto que eu pensei para esse sistema é suficiente que ele suporte somente mapas do mesmo tamanho e, portanto, foquei em atender esse requisito. Ainda sim, é possível trabalhar com mapas de tamanhos diferentes, desde que eles fiquem em linhas diferentes. Vamos lá Primeiramente, eu fiz um banco de funções que foram utilizadas ou serão úteis mais para frente. Em lib, crie um arquivo chamado cloneMap.lua e adicione o código abaixo: As funções estão todas funcionando, porém algumas não foram utilizadas nessa versão, ficam de bônus pra vocês. Depois disso, vá em talkactions.xml adicione a tag: <talkaction words="!clonemap" event="script" value="cmap.lua"/> Feito isso, crie dentro de scripts um arquivo chamado cmap.lua e adicione o código abaixo: Por último, vá em globalevents/scripts e abra o arquivo start.lua. Dentro da função onStartup(), antes do return true, adicione as 3 linhas a seguir: setGlobalStorageValue(5546, -1) setGlobalStorageValue(5547, -1) setGlobalStorageValue(5548, -1) Pronto. Agora algumas configurações que você deve fazer de acordo com seu mapa: emptySpaceBeginPos - É a posição no mapa onde começa a área vazia que você determinou para a criação das instâncias (Canto superior esquerdo da área, ela cresce para direita até o fim do mapa e depois para baixo e se encerra quando o mapa acaba). Storages - Storages globais onde serão armazenadas os próximos valores X, Y e Z a serem utilizados. (A progressão no eixo z ainda não foi implementada, mas a lógica é a mesma). safe_dist - É a distância entre os mapas, você pode variar de acordo com a utilização que vai dar ao mapa. Feito isso, está pronto para utilizar o Instanciador de Mapas V1.0. Como funciona: !clonemap CenterX CenterY CenterZ Side Floors Centers (X, Y e Z) são as coordenadas centrais do seu mapa (e Z é o floor mais baixo do mapa, caso ele seja multi floor, isto é o floor de valor mais alto - ex, se o seu mapa vai de z=7 até z =10, use CenterZ = 10). Side é a distância entre o centro e uma das bordas (Caso o mapa não seja quadrado, basta usar a maior distância. É possível implementar usando a mesma lógica um SideX e SideY, mas eu não tive tempo de fazê-lo). Floors é o número de andares que tem o seu mapa, se ele ocupa só um andar floor = 1, 2 floor = 2 e assim por diante. Bom é isso, espero que gostem e que seja útil para vocês. Agora vou empenhar no sistema completo, assim que terminar eu posto a versão 2.0 do instanciador com muito mais recursos. Algumas Imagens OBSERVAÇÃO IMPORTANTE Quando você utilizar o comando ingame, esteja longe da área onde o mapa será criado, senão o seu cliente irá debugar. Nada acontece, na verdade, acho que é algum problema do cliente, assim que você abre o tibia novamente tudo se estabiliza, mas é chato ficar re-abrindo então evite isso.\ Grande abraço. ps: Lembrando, novamente dos Créditos ao Danihcv pela ideia, sem o brainstorm por ele promovido no meu tópico isso não seria possível1 ponto -
Fala galera, tudo bem? Então, eu li o sot#01 alguns dias atrás e achei bem legal a história no qual ele gira em torno. Tive algumas idéias e, mesmo o evento não tendo acontecido por falta de inscritos, resolvi fazer pra lembrar algumas coisas, afinal tinha uns 7 anos que não mexia com scripts para otserv. O resultado, que vou mostrar abaixo, é um evento global (mas que pode muito bem ser adaptado para uma quest ou outra finalidade). Como parte da recompensa do evento, fiz de bonus uma spell baseada na frozenOrb do whitewolf. Bom vamos lá. O Evento Basicamente é um evento estilo aquela brincadeira antiga de criança "dança das cadeiras". Como assim? Bom, na área do evento o número de espaços vazios vai ser sempre o número de players restantes no evento -1. Isso implica que, em cada turno, pelo menos um player deixará o evento. Contexto Luna é uma estrela endeusada pelos elfos e muito poderosa. De tempo em tempo ela se desperta todos os players onlines são convocados para tentarem domar a sua ira. Aquele que sobreviver à ira de Luna sem se congelar será capaz de controlar seu poder até o próximo despertar. editado: Esqueci de avisar que coloquei para ele ignorar o tile central na contagem de tiles livres pois no tile central, do meu mapa, eu coloquei um frozen starlight representando a luna e, a cada round, há uma animação na luna só para ficar bonitinho. Crie um arquivo chamado lunaevent.lua dentro de scripts e coloque o código abaixo nele: Em globalevents.xml coloque a tag: <globalevent name="Luna" interval="18000000" script="lunaevent.lua" /> A recompensa do evento é uma souvenir, um frozen starlight com o nome do vencedor do evento e x horas (no caso 5) podendo utilizar o poder de luna. Bom, eu criei uma spell para ilustrar o poder de luna e como utilizar o storage que foi preenchido para o vencedor do evento para controlar o uso de uma spell. Luna Strike Primeiramente adicione a tag abaixo em spells.xml: <instant name="Luna Strike" words="exori luna" lvl="100" manapercent="5" prem="0" range="6" casterTargetOrDirection="1" blockwalls="1" exhaustion="10000" groups="1,4000" icon="156" needlearn="0" event="script" value="attack/luna strike.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> </instant> Crie um arquivo chamado luna strike.lua dentro de scripts/attacks e coloque o código abaixo nele: Essa magia tem duas peculiaridades: 1. Ela tem uma chance de 1/15 para cada hit que ela dá de congelar o alvo e tornalo imóvel por 1.8 segundos, o que já está implementado nesse script e já funciona. 2. Em pvp, isso é, ao atacar um player, ela tem uma chance de 1/18 de liberar a Benção de Luna e tornar o caster imune aos ataques daquele player por 3 segundos (atenção, não são de todos os players da área, somente do player que liberou a benção de luna ao receber um hit). Para implementar essa segunda parte, precisamos ir em creature scripts. Adicione as tags abaixo a creaturescripts.xml: <event type="attack" name="NoAtt" event="script" value="luna.lua"/> <event type="cast" name="NoSpell" event="script" value="luna.lua"/> <event type="target" name="NoTgt" event="script" value="luna.lua"/> Crie um arquivo chamado luna.lua dentro de scripts e coloque o código abaixo nele: Pronto, o seu evento está configura e sua magia 'Luna Strike' poderá ser castada pelo último vencedor do mesmo. Espero que gostem, os scripts estão comentados e são bem auto-explicativos, mas qualquer dúvida podem me perguntar. Abraços,1 ponto
-
Adori Soul
julhinhuu reagiu a xiahoudunbr por um tópico no fórum
Bem galera venho aqui no forum apenas deixar uma magia que eu quis de um certo server ai .. relaxado .. mas BOM :s Ela recupera a Soul por uma determinada mana ^^ na Spell.xml adicione : <instant name="Soul Regen" words="adori soul" lvl="8" mana="190" prem="0" aggressive="0" selftarget="1" exhaustion="1000" groups="3" groupexhaustions="1000" icon="23" needlearn="0" event="script" value="zsw-soul.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> </instant> </spells> Agora crie a magia .lua ( meu caso zsw-soul.lua" ) local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatParam(combat,COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) function onCastSpell(cid, var) doPlayerAddSoul(cid, math.random(1, 1)) return doCombat(cid, combat, var) Pronto .... Druids, Sorcer e Pally podem usar essa magia ^^ OBS:. vc pode adicionar na magia.lua if getPlayerItemCount(cid, 6561) == TRUE then Ficando : local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatParam(combat,COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) function onCastSpell(cid, var) if getPlayerItemCount(cid, 6561) == TRUE then doPlayerAddSoul(cid, math.random(1, 1)) return doCombat(cid, combat, var) Assim o player vai ter q ter o item "x" para poder fazer a magia ^^ abrass a tds gostou ? = REP1 ponto