Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 01/20/16 em todas áreas
-
Eae Galera da Ekz Entao fiz um launcher em c# e queria compartilhar com a comunidade, o launcher e simples e serve para otclient porem tem as sources e se vc quiser editar para usar o old client fique a vontade. Link Download Launcher+Source Scan tbm fiz um video explicando como funciona obs: Para o Launcher funcionar vc prescisa por na pasta do client o .exe do launcher, o config.ini e a dll , todos estao no winrar do link de download.6 pontos
-
[NTO] Base NTO Foxter
Linzinho e um outro reagiu a LucaSAyreeS por um tópico no fórum
PS: Utilizar a Distro chamada Servidor, ou OTRestarter [+] Informações: - Sistema de Crítico. - Combos e Magias Novas. - Sprites de Personagens Novas. - Elemental System. - Mapa bom, com lugares novos. - Combos 90% concluídos, faltando só de alguns personagens. - Guild War System. - Sala de Quests. - Sistema de Recompensa. - Sistema de Points. - Personagens totalmente equilibrados. - Nova sala de eventos. [+] Desvantagens: - Muitos erros de distro, mas nada que afete o server. - Client com limite de sprites. [+] Imagens: [+] Downloads: http://www.4shared.com/rar/KAd6YH_cba/NTOFox.html? [+] Scan: https://www.virustotal.com/pt/file/657a18976eb2b747a0356fdd306cbc56b3677f81ed83d6698f89d86c06f63664/analysis/1453246178/ [+] Créditos: Eu pelas modificações. Aos que trabalham nessa base antes de mim.2 pontos -
Olá comunidade, O meu nome é Lucas Melo, conhecido como LuquitossML, eu recebo muitas mensagens aqui no fórum de membros que gostariam de auxilio para a criação/edição de uma sprite e outros com interesse de aprender a spritear, como eu não tenho tempo para ajudar todo mundo, decidi fazer um tutorial, neste tutorial eu vou compilar tudo aquilo que você precisa saber para começar a arte da perspectiva 45°. Aqui nós vamos aprender passo a passo para a criação de uma sprite. Tutorial Básico sobre quase tudo aquilo que você precisa saber. Introdução: Definição Geral.No Tibia, assim como todos os jogos, os elementos gráficos são chamados de Sprites. Para criar estes sprites, utilizamos uma técnica de design gráfico conhecida pelo nome de Pixel Art. Pouca gente conhece essa arte, que surgiu com os primeiros videogames. Pixel art significa fazer Arte através da utilização de Pixels. Pixel são os pequenos quadrados que compõe as imagens gráficas de qualquer sistema televisual. A organização correta de pixels pode gerar formas que podem ser reconhecidas como animais, objetivos, fotografias, plantas, animações variadas, etc. Técnicas de pixel artPixel art conta com algumas técnicas diferentes de qualquer outro tipo de arte, por ser uma arte de baixa resolução. Dithering: É o uso de padrões de pixels para se criar a ilusão de que existem mais cores do que realmente se estão sendo usadas. Também é usado para se fazer texturas. Anti-Alias (ou AA): Técnica para se suavisar linhas, usando tons médios para reduzir o contraste entre a cor da linha e a cor que envolve a linha. Sombreamento: O sombreamento em pixel art deve ser feito como em objetos reais, com base em uma fonte de luz. Sombrear a figura das bordas para o centro é um erro bastante comum, chamado de Pillow Shading (ou sombreamento 'travesseiro') Salvando deu Trabalho:Para se salvar um trabalho seu no computador, deve-se usar o formato correto. JPG é um formato que usa um tipo de compressão bom apenas para imagens suaves e contínuas. Se usado no pixel art, causa uma enorme perda de qualidade BMP é um formato que apesar de manter a qualidade, acaba resultando em um arquivo muito pesado GIF e PNG são os formatos mais apropriados. GIF, com uma paleta limitada a 256 cores, é o formato ideal, já que é o menor e dificilmente o pixel art terá tantas cores. Se você usa o programa Paint para fazer pixel art, salve como PNG, pois quando o Paint salva como GIF, ele usa uma paleta de cores padrão, e causará alterações de cores no seu pixel art. Categorias:Pixel art é normalmente dividido em duas categorias. Isométrico é o pixel art que imita uma visão em 3 dimensões, mas que não possui perspectiva. Não-isométrico é qualquer outro tipo de visão como Front View (frente) ou Top View (de cima) Como começar a fazer Pixel Art? Existem vários programas para se fazer Pixel art. O mais simples deles é o conhecido Microsoft Paint, ou como dizem: MS Paint. A interface do Paint, é muito muito simples, e com o tempo você entenderá cada uma das funções que ele é capaz de realizar. Ferramentas Básicas:LUPA - Amplia ou reduz o CANVAS (Área onde se desenha ou Área selecionada). LÁPIS - Ferramente capaz de pintar um pixel por vez. BORRACHA - Apaga o que foi desenhado. LATA DE TINTA - Preenche formas com cores. Controles Básicos. CTRL + A = Seleciona todo o Canvas. CTRL + C = Copiar Canvas. CTRL + E = Abre a Janela de Atributos do Canvas. CTRL + F = Fullscreen CTRL + G = Cria uma grade de pixels nos aumentos de 6x e 8x da LUPA CTRL + R = Abre Janela de Inverter ou Girar o Canvas. CTRL + T = Ocultar Barra de Ferramentas. CTRL + V = Colar Canvas. CTRL + Z = Desfazer ação. Desenvolvimento: Agora que já temos uma abordagem geral sobre o tema, vamos aprofundar nossos estudos. Luz e Sombra na perspectiva 45°.Para quem está começando é essencial ter noção de como a luz se comporta na perspectiva que focamos. De modo simples, a luz tem sua fonte a 45 graus acima do objeto, ou seja, a parte "noroeste" do sprite precisa sempre estar mais iluminado do que a parte "sudeste". Vejamos: Obs: Virar a sprite horizontalmente permite verificar se a luz está se comportando da maneira correta (Vindo de uma fonte que está a esquerda e acima do sprite - ou seja, a noroeste ) Lembrem-se de sempre considerar que a parte sudeste não é totalmente escura. Pois a parte da luz que vem do noroeste e chega até sudeste cruzando o sprite, pode refletir/refracionar e iluminar a parte sudeste, mas lógicamente, essa luminosidade será menor. Uma das regras mais importantes e obrigatórias caso seu intuito seja seguir o padrão Tibia: A luz vem do noroeste, mas mesmo assim, ainda existe luz vinda das demais fontes naturais e refletidas pelas superfícies. Sendo assim, seu sprite recebe luz de todas as direções, mas preferencialmente pelo Noroeste. Anti-Aliasing (AA). Quando trabalhamos com pixels percebemos que as bordas dos desenhos costumam aparentar muito o fato de que os pixels são de fato quadrados. O problema de muitos desenvolvedores gráficos no começo do pixel art, foi justamente no momento em que precisavam desenhar elementos que não seguissem o padrão quadrado dos pixels, como por exemplo Círculos, Esferas, e bordas redondas. Para muitos, a solução desse problema surgiu com a criação da ténica de Anti-Aliasing ou simplesmente AA. O AA foi um grande avanço no desenho de formas esféricas ou outras que precisassem passar a idéia de uma superfícia lisa, sem irregularidades. Mas como isto é possível se todo sistema televisual utiliza PIXELS para formar gráficos? A resposta é simples: O AA utiliza pixels que misturam as linhas com o plano de fundo em que elas estão. Quando isto é feito, nossos olhos não conseguem distinguir as irregularidades dos pixels. Em primeiro lugar devido ao tamanho dos pixels e segundo lugar devido a uma boa suavização de bordas. Vejam no exemplo: http://img507.imageshack.us/img507/8484/aaexampleok2zl9.png Obs: Créditos da imagem: Galiant Na esquerda da 2° imagem, vemos o circulo formado de vários pixels pretos. Suas bordas estão "cruas" e sem AA. Assim, mesmo no aumento menor é possível perceber as falhas de suas bordas redondas. Na direita da imagem vemos o mesmo circulo após a aplicação da técnica de Anti-Aliasing. E agora, no aumento menor, não se pode mais ver as falhas das bordas. Como fazer Anti-Aliasing? O Anti aliasing é simples apesar de não parecer. Tudo se baseia em 3 passos: 1 - Observar primeiro o desenho que se quer suavizar. 2 - Observar o fundo no qual este desenho está inserido. 3 - Adicionar cores que simbolizam a mistura das cores do desenho, com o seu fundo. No exemplo acima (dos circulos) tinhamos um circulo PRETO, num fundo BRANCO, então apenas adicionamos tons de CINZA (PRETO + BRANCO) para suavizar a borda. No caso de uma sprite, o AA é feito internamente, ou seja, é feito dentro do outline/lineart da sprite, isso é feito utilizando no caso tons mais escuros nas partes cerrilhadas da sprite. Vejamos: Como podem ver na direita, a disposição dos pixels escuros nas partes mais cerrilhadas é o chamado AA, não é necessário que seja utilizado apenas preto para se fazer o Anti-Aliasing. Exemplo: "Ahh luquitos, eu quero fazer algo roxo, como eu faço AA nele?" Simples, apenas faça os passos iniciais para se fazer uma sprite: Faça um outline (contorno do sprite) Comece a pintar. comece a fazer o AA. (no caso do meu amigo da sprite roxa, utilize tons roxos escuros nas partes cerrilhadas da sprite) Logo depois do AA pronto faça a Iluminação, no caso, Luz e Sombra. Depois de todos esses passos, veja se não há mais nada para arrumar e "Voilá" Sua sprite está pronta. Conclusão: O Investimento do Tempo e Esforço. Trabalho em pixel art é demorado e muitas vezes de difícil processo. Quanto mais tempo você gasta trabalhando, e, em seguida, um pedaço de refino, Melhor será sua aparência. Isso muitas vezes pode levar horas, mas as recompensas valem a pena. Se você não está preparado para investir o tempo em seu trabalho, Ele não ira fluir, independentemente do número de tutoriais que você lê. Nada da certo na primeira vez? As primeiras interações com o seu outline/lineart ou imagem (sprite) sombreada pode muitas vezes ser frustrantes. Não desanime, mesmo os erros aparentemente mais hediondos podem ser editados em algo decente. Uma vez que a última versão de sua sprite é completa, sentar e dar uma boa olhada nela é essencial. Este reajuste geralmente divide-se em um simples ciclo de 3 etapas: 1 - O que aparentemente há de errado? 2 - Como posso corrigir? 3 - A fixação dele. O uso de referências. Muitas vezes, você pode compensar a falta de conhecimento sobre algum objeto através de imagens. Estes podem ser encontrados a partir de uma variedade de fontes, a mais imediata a ser através de um motor de busca na internet.Você também pode encontrar cores novas e interessantes a partir de fotografias e arte dos outros pixel. Lembre-se que o plágio direto, incluindo a edição do trabalho de outras pessoas, é distintamente ilegal. Espero que o tutorial tenha sido útil para alguém, caso o tutorial tenha uma grande repercussão e o pessoal mais duvidas, eu irei continuar atualizando ele com um conteúdo mais aprofundado sobre o tema. Obrigado a equipe do Xtibia pelo espaço. Atenciosamente, LuquitossML.1 ponto
-
Npc para o sistema de reset: http://www.xtibia.com/forum/topic/238305-sistema-de-resetes/ data/npc/ reseter.XML : <?xml version="1.0" encoding="UTF-8"?> <npc name="Reseter" script="reseter.lua"> <health now="1000" max="1000"/> <look type="133" head="95" body="86" legs="86" feet="38" addons="3"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|.I've been waiting for you to come.. Say 'reset' or 'quantity'" /> <parameter key="message_farewell" value="Cya folk." /> <parameter key="message_walkaway" value="How Rude!" /> </parameters> </npc> data/npc/scripts reseter.lua : local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if not npcHandler:isFocused(cid) then return false end local player = Player(cid) config = { minlevel = 150, --- Level inical para resetar price = 10000, --- Preço inicial para resetar newlevel = 20, --- Level após reset priceByReset = 0, --- Preço acrescentado por reset percent = 10, ---- Porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total) maxresets = 50, ---- Maximo de resets levelbyreset = 0 --- Quanto de level vai precisar a mais no próximo reset } function addReset(cid) player = Player(cid) resets = player:getResets() hp = player:getMaxHealth() resethp = hp*(config.percent/100) player:setMaxHealth(resethp) mana = player:getMaxMana() resetmana = mana*(config.percent/100) player:setMaxMana(resetmana) playerid = player:getGuid() player:remove() db.query("UPDATE `players` SET `resets`="..resets.. + 1",`experience`= 0 WHERE `players`.`id`= ".. playerid .."") db.query("UPDATE `players` SET `level`="..config.newlevel..",`experience`= 0 WHERE `players`.`id`= ".. playerid .."") return true end local newPrice = config.price + (getResets(cid) * config.priceByReset) local newminlevel = config.minlevel + (getResets(cid) * config.levelbyreset) if msgcontains(msg, 'reset') then if getResets(cid) < config.maxresets then npcHandler:say('You want to reset your character? It will cost '..newPrice..' gp\'s!', cid) npcHandler.topic[cid] = 1 else npcHandler:say('You already reached the maximum reset level!', cid) end elseif msgcontains(msg, 'yes') and npcHandler.topic[cid] == 1 then if player:getLevel() > newminlevel then if player:removeMoney(newPrice) then addEvent(function() if isPlayer(cid) then addReset(cid) end end, 3000) local number = getResets(cid)+1 local msg ="---[Reset: "..number.."]-- You have reseted! You'll be disconnected in 3 seconds." player:popupFYI(msg) npcHandler.topic[cid] = 0 npcHandler:releaseFocus(cid) else npcHandler:say('Its necessary to have at least '..newPrice..' gp\'s for reseting!', cid) npcHandler.topic[cid] = 0 end else npcHandler:say('The minimum level for reseting is '..newminlevel..'!', cid) npcHandler.topic[cid] = 0 end elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then npcHandler.topic[cid] = 0 npcHandler:releaseFocus(cid) npcHandler:say('Ok.', cid) elseif msgcontains(msg, 'quantity') then npcHandler:say('You have a total of '..getResets(cid)..' reset(s).', cid) npcHandler.topic[cid] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Para configurar mexa nessa parte do npc : config = { minlevel = 150, --- Level inical para resetar price = 10000, --- Preço inicial para resetar newlevel = 20, --- Level após reset priceByReset = 0, --- Preço acrescentado por reset percent = 10, ---- Porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total) maxresets = 50, ---- Maximo de resets levelbyreset = 0 --- Quanto de level vai precisar a mais no próximo reset } Créditos: Flavio S1 ponto
-
Bom Dia, Boa Tarde ou Boa Noite, tudo depende da hora que ver o tópico Bom Hoje vim Postar meu servidor Pokemon Anonymous, estava em mente com um projeto de Poketibia Base Lendaria sem ser as tradicionais PokeZot e PokePro. Vamos Ao Que Interessa: Informações: Base Editada Poke Dash Pokemon 1 a 3 Geração. Lendarios 1 a 5 Geração - Respectivamente suas versões Shinys. Mega Stone. Hydra Stone. Boost Stone2. Pergaminho 400% e 500%. Master Ball 100%. Red Megas. Shadow Megas. Vip System "Contendo aria vip com direito a ir final de algumas quest's como por exemplo b21 e b22, e contendo quest's especiais somente nela como exemplo: Sb1 a Sb3 e Especial Box. (Para adquirir Vip é com o comando !buyvip, as scarab coins que eles pedem o npc Mark Vende Por 50TD cada, é necessário 100 Scarab Coins para comprar 7 dias vip). " Quest's B1 a B22 e SB1 a SB3 e Especial Boxs, e mais de 50 Quest's espalhadas pelo Mapa. Arias Up Free e Vip. Held System 100%, contendo X-Experience que aumenta 50% da EXP, X-Cooldown Que abaixa tempo dos golpes, ETC. Sistema Torneio que ocorre as 10:45. Servidor contém muitos sistemas e informações. Prints Download Scan Peço Desculpas por qualquer erro primeira postagem minha, Se gostar não custa nada curti . Creditos: Pokemon By Bolz. Lucas Kuchiki - Editor do Servidor " EU ". PxG Por algumas Sprits.1 ponto
-
Olá galera do XT, estou trazendo aqui, meu primeiro NPC, um NPC que teleporta se tiver o item X, tudo configurável! Vá em data/npcs/scripts e copia e cola um arquivo.lua renomeia ele para tp.lua e cola o seguinte código: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end ------------#Configurações#---------------- local config = { tp1 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir". tp2 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir2". tp3 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir3". item1 = 2160, -- id do item 1 item2 = 2148, -- id do item 2 item3 = 2158, -- id do item 3 qtd1 = 2, -- quantidade a ser removida do item 1 qtd2 = 5, -- quantidade a ser removida do item 2 qtd3 = 7, -- quantidade a ser removida do item 3 } ----------#Fim das configurações#---------- ------------#*#Início do NPC#*#-------------- if msgcontains(msg, 'ir1') then -- o que ele tem que falar. if doPlayerRemoveItem(cid, config.item1, config.qtd1) then doTeleportThing(cid, config.tp1) -- não mexa. else selfSay("Você não tem "..config.qtd1.." {"..getItemNameById(config.item1).."s}.", cid) -- msg que retorna caso ele não tenha o item. end elseif msgcontains(msg, 'ir2') then -- o que ele tem que falar. if doPlayerRemoveItem(cid, config.item2, config.qtd2) then doTeleportThing(cid, config.tp2) -- não mexa. else selfSay("Você não tem "..config.qtd2.." {"..getItemNameById(config.item2).."s}.", cid) -- msg que retorna caso ele não tenha o item. end elseif msgcontains(msg, 'ir3') then -- o que ele tem que falar. if doPlayerRemoveItem(cid, config.item3, config.qtd3) then doTeleportThing(cid, config.tp3) -- não mexa. else selfSay("Você não tem "..config.qtd3.." {"..getItemNameById(config.item3).."s}.", cid) -- msg que retorna caso ele não tenha o item. end end ------------#*#Fim do NPC#*#-------------- return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Feito isso, vá em data/npcs copia um arquivo.xml e renomeia ele para Teleport. Abra com o bloco de notas ou outro editor, e cole este arquivo: <?xml version="1.0" encoding="ISO-8859-1"?> <npc name="Gerson" script="data/npc/scripts/tp.lua" walkinterval="3000" floorchange="0"> <health now="100" max="100"/> <look type="367" head="0" body="38" legs="114" feet="94" addons="0"/> <parameters> <parameter key="message_greet" value="Eu posso levar você para {ir1}, {ir2}, {ir3}."/> <parameter key="message_farewell" value="Adeus!"/> <parameter key="message_walkaway" value="Que bons ventos o levem!"/> </parameters> </npc> Configurando o arquivo do npc: Tudo é feito aqui: ------------#Configurações#---------------- local config = { tp1 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir". tp2 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir2". tp3 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir3". item1 = 2160, -- id do item 1 item2 = 2148, -- id do item 2 item3 = 2158, -- id do item 3 qtd1 = 2, -- quantidade a ser removida do item 1 qtd2 = 5, -- quantidade a ser removida do item 2 qtd3 = 7, -- quantidade a ser removida do item 3 } ----------#Fim das configurações#---------- Em tp1, tp2, tp3 coloque a posição de cada lugar que ele será mandado. Em item1, item2, item3 coloque o ID do item que você quer que seja removido para teleportar o jogador. Em qtd1, qtd2, qtd3 coloque apenas a quantidade a ser removida. Bom galera, este é meu primeiro script espero que gostem!! @Edit Hoje dei uma editada no NPC e removi 10 linhas. Gostaria que me dessem ideias de como melhorar este NPC, ou criar outros.1 ponto
-
Changelog Versão 10.90 Suporte para versões 10.10+ Live casts Ultima versão do projeto oficial Download Mediafire Items.otb (atualizado) Créditos Colaboradores - Projeto Oficial @Bruno1 ponto
-
[Gesior] PagSeguro Automático (100% Funcional)
Sirarcken reagiu a Natanael Beckman por um tópico no fórum
Bom galera antes de vir postar este sistema já tentei de varias formas incluir isso ao meu servidor mais sempre tive problemas e não tinha sucesso com o sistema, porém um dia consegui adicionar utilizando de um tutorial postado aqui no fórum, o problema foi que esse sistema existe um BUG no qual do nada um player que fez uma doação de 10,00 reais estava com 1000 premium points na sua acc. Fui em busca de soluções encontrei uma com um amigo meu programador de PHP, Joffily Ferreira e vou postar pra vocês porque acho justo todos usufruir do que é bom. Vamos la deixa de bla bla e vamos ao que interessa... Crie um arquivo .php chamado de retpagseguro, insira dentro do mesmo os code a seguir: OBS: Este arquivo deve fica localizado na pasta htdocs ou www <?PHP $host = "localhost"; /* HOST */ $user = "root"; /* USER */ $passwd = "senhadb"; /* PASSWORD */ $db = "nomedb"; /* DB */ $retorno_token = 'suatokenpagseguro'; // Token gerado pelo PagSeguro ############################################################## # CONFIGURAÇÕES ############################################################## if (empty($_POST['Referencia'])) { header("Location http://pagseguro.com.br"); } list($accname, $world) = explode('-', $_POST['Referencia']); if ($world=='sv') { $retorno_host = "$host"; // Local da base de dados MySql $retorno_database = "$db"; // Nome da base de dados MySql $retorno_usuario = "$user"; // Usuario com acesso a base de dados MySql $retorno_senha = "$passwd"; // Senha de acesso a base de dados MySql } ############################################################### # NÃO ALTERE DESTA LINHA PARA BAIXOs# $lnk = mysql_connect("$host", "$user", "$passwd") or die ('Nao foi possível conectar ao MySql: ' . mysql_error()); mysql_select_db("$db", $lnk) or die ('Nao foi possível ao banco de dados selecionado no MySql: ' . mysql_error()); // Validando dados no PagSeguro $PagSeguro = 'Comando=validar'; $PagSeguro .= '&Token=' . $retorno_token; $Cabecalho = "Retorno PagSeguro"; foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $PagSeguro .= "&$key=$value"; } if (function_exists('curl_exec')) { $curl = true; } elseif ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen ('ssl://pagseguro.uol.com.br', 443, $errno, $errstr, 30)) ) { $fsocket = true; } elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $errno, $errstr, 30)) { $fsocket = true; } if ($curl == true) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $PagSeguro); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); $resp = curl_exec($ch); curl_close($ch); $confirma = (strcmp ($resp, "VERIFICADO") == 0); } elseif ($fsocket == true) { $Cabecalho = "POST /Security/NPI/Default.aspx HTTP/1.0\r\n"; $Cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n"; $Cabecalho .= "Content-Length: " . strlen($PagSeguro) . "\r\n\r\n"; if ($fp || $errno>0) { fputs ($fp, $Cabecalho . $PagSeguro); $confirma = false; $resp = ''; while (!feof($fp)) { $res = @fgets ($fp, 1024); $resp .= $res; if (strcmp ($res, "VERIFICADO") == 0) { $confirma=true; break; } } fclose ($fp); } else { echo "$errstr ($errno)<br />\n"; } } if ($confirma) { ## Recebendo Dados ## $TransacaoID = $_POST['TransacaoID']; $VendedorEmail = $_POST['VendedorEmail']; $Referencia = $_POST['Referencia']; $TipoFrete = $_POST['TipoFrete']; $ValorFrete = $_POST['ValorFrete']; $Extras = $_POST['Extras']; $Anotacao = $_POST['Anotacao']; $TipoPagamento = $_POST['TipoPagamento']; $StatusTransacao = $_POST['StatusTransacao']; $CliNome = $_POST['CliNome']; $CliEmail = $_POST['CliEmail']; $CliEndereco = $_POST['CliEndereco']; $CliNumero = $_POST['CliNumero']; $CliComplemento = $_POST['CliComplemento']; $CliBairro = $_POST['CliBairro']; $CliCidade = $_POST['CliCidade']; $CliEstado = $_POST['CliEstado']; $CliCEP = $_POST['CliCEP']; $CliTelefone = $_POST['CliTelefone']; $NumItens = intval($_POST['ProdValor_1']); $ProdQuantidade_x = $POST['ProdQuantidade_1']; # GRAVA OS DADOS NO BANCO DE DADOS # mysql_query("INSERT into PagSeguroTransacoes SET TransacaoID='$TransacaoID', VendedorEmail='$VendedorEmail', Referencia='$Referencia', TipoFrete='$TipoFrete', ValorFrete='$ValorFrete', Extras='$Extras', Anotacao='$accname', TipoPagamento='$TipoPagamento', StatusTransacao='$StatusTransacao', CliNome='$CliNome', CliEmail='$CliEmail', CliEndereco='$CliEndereco', CliNumero='$CliNumero', CliComplemento='$CliComplemento', CliBairro='$CliBairro', CliCidade='$CliCidade', CliEstado='$CliEstado', CliCEP='$CliCEP', CliTelefone='$CliTelefone', NumItens='$NumItens', Data=now(), ProdQuantidade_x='$ProdQuantidade_x';"); if ($StatusTransacao == "Aprovado") { mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'"); mysql_query("UPDATE PagSeguroTransacoes SET StatusTransacao = 'Entregue' WHERE CONVERT( `PagSeguroTransacoes`.`TransacaoID` USING utf8 ) = '$TransacaoID' AND CONVERT( `PagSeguroTransacoes`.`StatusTransacao` USING utf8 ) = 'Aprovado' LIMIT 1 ;"); mysql_query('OPTIMIZE TABLE `pagsegurotransacoes`'); } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Donate Server</title> <style type="text/css"> body { font-family: Tahoma, Geneva, sans-serif; font-size: 16px; width: 900px; margin: 0px auto; margin-top: 30px; } b { font-size: 18px; font-weight: bold; } </style> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td width="11%" align="center" valign="middle"><img src="images/true.png" height="auto" width="64" /></td> <td width="89%"><p><b>S</b>ua compra está sendo processada por nossos sistemas de apuração, dentro de no máximo <u>1 hora seus pontos serão creditados</u>, caso o pagamento não for efetuado, ficará em aberto 1 ou mais pagamentos pendentes em sua conta. Caso você tenha mais de 3 pagamentos pendentes por falta de pagamento, sua conta será bloqueada temporariamente para efetuar pagamentos.</p></td> </tr> </table> <!--p><b>ID de Transação:</b> <?php echo $_POST['TransacaoID']; ?></p--> </body> </html> No arquivo acima você vai alterar as seguintes linhas: $host = "localhost"; /* HOST */ $user = "root"; /* USER */ $passwd = "senhadb"; /* PASSWORD */ $db = "nomedb"; /* DB */ $retorno_token = 'suatokenpagseguro'; // Token gerado pelo PagSeguro Gere sua token no PagSeguro com este link e ative o link do retorno ao seu site veja na imagem abaixo um exemplo: Certo agora crie um arquivo .php com o nome doacao e insira no mesmo os codes abaixo: OBS: Quem utiliza gesior 2012 bota na pasta pages ou quem utiliza gesior anteriores fica na pasta htdocs ou www. <?php if(!$logged) if($action == "logout") $main_content .= '<div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Logout Successful</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td>You have logged out of your '.$config['server']['serverName'].' account. In order to view your account you need to <a href="?subtopic=accountmanagement" >log in</a> again.</td></tr> </table> </div> </table></div></td></tr>'; else $main_content .= 'Please enter your account name and your password.<br/><a href="?subtopic=createaccount" >Create an account</a> if you do not have one yet.<br/><br/><form action="?subtopic=accountmanagement" method="post" ><div class="TableContainer" > <table class="Table1" cellpadding="0" cellspacing="0" > <div class="CaptionContainer" > <div class="CaptionInnerContainer" > <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <div class="Text" >Account Login</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);" ></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></span> </div> </div> <tr> <td> <div class="InnerTableContainer" > <table style="width:100%;" ><tr><td class="LabelV" ><span >Account Name:</span></td><td style="width:100%;" ><input type="password" name="account_login" SIZE="10" maxlength="10" ></td></tr><tr><td class="LabelV" ><span >Password:</span></td><td><input type="password" name="password_login" size="30" maxlength="29" ></td></tr> </table> </div> </table></div></td></tr><br/><table width="100%" ><tr align="center" ><td><table border="0" cellspacing="0" cellpadding="0" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Submit" alt="Submit" src="'.$layout_name.'/images/buttons/_sbutton_submit.gif" ></div></div></td><tr></form></table></td><td><table border="0" cellspacing="0" cellpadding="0" ><form action="?subtopic=lostaccount" method="post" ><tr><td style="border:0px;" ><div class="BigButton" style="background-image:url('.$layout_name.'/images/buttons/sbutton.gif)" ><div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);" ><div class="BigButtonOver" style="background-image:url('.$layout_name.'/images/buttons/sbutton_over.gif);" ></div><input class="ButtonText" type="image" name="Account lost?" alt="Account lost?" src="'.$layout_name.'/images/buttons/_sbutton_accountlost.gif" ></div></div></td></tr></form></table></td></tr></table>'; else { $main_content .= '<table width="100%" border="0" cellpadding="4" cellspacing="1"> <tbody><tr> <td class="white" colspan="3" bgcolor="#505050"><span class="style4">Detalhes da bonificação de Points.</span></td> </tr> <tr bgcolor="#f1e0c6"><td width="35%"><b>Doação</b></td><td width="35%"><b>Points</b></td></tr> <tr bgcolor="#d4c0a1"><td>R$5,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 5 Points</td></tr> <tr bgcolor="#f1e0c6"><td>R$10,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 10 Points</td></tr> <tr bgcolor="#d4c0a1"><td>R$20,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 20 Points</td></tr> <tr bgcolor="#f1e0c6"><td>R$40,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 40 Points</td></tr> <tr bgcolor="#d4c0a1"><td>R$60,00</td><td><img src="layouts/tibiarl/images/content/bullet.gif"> 60 Points</td></tr> <tr bgcolor="#f1e0c6"><td><center><img src="layouts/tibiarl/images/content/bullet.gif"> E assim por diante!!! <img src="layouts/tibiarl/images/content/bullet.gif"></center><td><center><img src="layouts/tibiarl/images/content/bullet.gif"> E assim por diante!!! <img src="layouts/tibiarl/images/content/bullet.gif"></center></td></tr> </tbody></table></br> '; $main_content .= ' <form target="pagseguro" method="post" action="https://pagseguro.uol.com.br/checkout/checkout.jhtml"> <input type="hidden" name="email_cobranca" value="'. $config['pagseguro']['email']. '"> <input type="hidden" name="tipo" value="CP"> <input type="hidden" name="moeda" value="BRL"> <input type="hidden" name="item_id_1" value="1"> <input type="hidden" name="item_descr_1" value="Pontos na account de nome: '.$account_logged->getCustomField("name").'"> <input type="hidden" name="item_frete_1" value="0"> <input type="hidden" name="item_peso_1" value="0"> <input type="hidden" name="ref_transacao" value="'.$account_logged->getCustomField("name").'"> <table border="0" cellpadding="4" cellspacing="1" width="100%" id="#estilo"><tbody> <tr bgcolor="#505050" class="white"> <th colspan="2"><strong>Escolha a quantidade de pontos que deseja DONATAR.</strong></th> </tr> <tr bgcolor="#d4c0a1"> <td width="10%">Sua conta</td> <td><strong>'.$account_logged->getCustomField("name").'</strong></td> </tr> <tr bgcolor="#d4c0a1"> <td width="10%">Pontos</td> <td> <input type="number" ng-model="get_points" min="1" size="5" maxlength="5"> <input name="item_valor_1" type="hidden" value="{{get_points * 100}}" size="5" maxlength="5"> <input name="item_quant_1" type="hidden" value="1" size="1" maxlength="1"> </td> </tr> <tr bgcolor="#d4c0a1"> <td colspan="2"> <input type="image" src="https://p.simg.uol.com.br/out/pagseguro/i/botoes/carrinhoproprio/btnFinalizar.jpg" name="submit" alt="Pague com PagSeguro - é rápido, grátis e seguro!" /> </td> </tr> </tbody></table></form> <b><span style="color:#ff0000;">OBS:</span></b> Os pontos são entregues <b>automáticamente</b> logo após a <u>aprovação</u> do seu pagamento pelo PagSeguro, ou seja, pagou e foi aprovado pontos depositados. <?php } ?>'; } ?> Agora abra o arquivo config.php e adicione os codes abaixo: #PAGSEGURO SISTEMA AUTOMATICO $config['pagseguro']['email'] = '[email protected]<script cf-hash='f9e31' type="text/javascript"> /* */</script>'; //E-mail da sua conta PagSeguro $config['pagseguro']['produtoNome'] = 'Premium Points'; //Identificação do Pontos $config['pagseguro']['produtoValor'] = '100'; //100 = R$ 1,00 - 250 = R$ 2,50 Vamos em layout.php nas primeiras linhas terá a tag abrindo html, exemplo: <html> Troque por: <html ng-app> Ou se tiver assim: <html xmlns="http://www.w3.org/1999/xhtml"> Troque por: <html xmlns="http://www.w3.org/1999/xhtml" ng-app> Mais abaixo juntos aos codes de JS adicione: <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script> Agora vamos na database e adicione a seguinte tabela: CREATE TABLE IF NOT EXISTS `PagSeguroTransacoes` ( `TransacaoID` varchar(36) NOT NULL, `VendedorEmail` varchar(200) NOT NULL, `Referencia` varchar(200) DEFAULT NULL, `TipoFrete` char(2) DEFAULT NULL, `ValorFrete` decimal(10,2) DEFAULT NULL, `Extras` decimal(10,2) DEFAULT NULL, `Anotacao` text, `TipoPagamento` varchar(50) NOT NULL, `StatusTransacao` varchar(50) NOT NULL, `CliNome` varchar(200) NOT NULL, `CliEmail` varchar(200) NOT NULL, `CliEndereco` varchar(200) NOT NULL, `CliNumero` varchar(10) DEFAULT NULL, `CliComplemento` varchar(100) DEFAULT NULL, `CliBairro` varchar(100) NOT NULL, `CliCidade` varchar(100) NOT NULL, `CliEstado` char(2) NOT NULL, `CliCEP` varchar(9) NOT NULL, `CliTelefone` varchar(14) DEFAULT NULL, `NumItens` int(11) NOT NULL, `Data` datetime NOT NULL, `ProdQuantidade_x` int(5) NOT NULL, `status` tinyint(1) unsigned NOT NULL DEFAULT '0', UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`), KEY `Referencia` (`Referencia`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Beleza se tiver feito tudo OK naturalmente seu sistema está funcionando perfeitamente. Haaaa, quem quiser que o sistema entregue DOUBLE POINTS vou ensinar abaixo, eu particularmente estou com essa promoção no meu OT.... No arquivo retpagseguro.php procure por: mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' WHERE name = '".htmlspecialchars($accname)."'"); Troque por: mysql_query("UPDATE accounts SET premium_points = premium_points + '$NumItens' * 2 WHERE name = '".htmlspecialchars($accname)."'"); Bom a única mudança ai foi a multiplicação dos pontos totais incluindo * 2. Caso o seu tenha algum erro provavelmente vai ser gerado pelo layout.php se você não encontrar a formula correta então aconselho utilizar gesior 2012. Créditos: Tatu Hunter Joffily Ferreira (Ajustar o sistema) E as demais variadas participações incluindo a minha1 ponto -
Oi gente, tava com saudades. Fazem uns 3 anos que não mexo com open tibia e como estava sentindo falta, resolvi fazer um mapinha pra relembrar os velhos tempos e testar as sprites novas. Segue: A ideia é um templo abandonado. Se um lugar que é cercado pela natureza acaba ficando deserto é natural que a natureza invada esse local. ----------- Os cultistas capturavam monges de um local muito distante e os traziam pra cá, onde ficavam presos aguardando serem sacrificados para que seu sangue alimente ao Deus Cogumelo. ------------ Aqui jaz o Deus Cogumelo, que morreu de overdose de sangue e caiu, derrubando parte do templo que logo após a queda do Deus Cogumelo, foi abandonado. As flechas em seu tronco são resquícios de ataques de outros religiosos. Por algum motivo desconhecido a fonte de sangue ainda funciona. ---------- É isso, talvez eu faça mais e transforme esse tópico num tópico de show off. Beijo grande.1 ponto
-
Erro no Gesior para 10.90
lokoga reagiu a Felipe Moraes por uma questão
Opa, obrigado por informar. Como fiquei na dúvida, para evitar muitos reposts, preferi eliminar todas as possibilidades logo. Valeu !1 ponto -
Erro no Gesior para 10.90
MuriloCavalcantti reagiu a Felipe Moraes por uma questão
Adicione em seu config.lua passwordType = "sha1"1 ponto -
Erro no Gesior para 10.90
MuriloCavalcantti reagiu a Felipe Moraes por uma questão
Tente: C:\\Users\Murilo\\Desktop\\Baiak\\ Ou C:\\Users\\Murilo\\Desktop\\Baiak Ou C:/Users/Murilo/Desktop/Baiak/ ou ainda C://Users//Murilo//Desktop//Baiak// Ou C://Users//Murilo//Desktop//Baiak Vai depender de como está configurado seu php e da versão. Uma delas deverá resolver. Tente e poste novamente.1 ponto -
Erro no Gesior para 10.90
MuriloCavalcantti reagiu a Felipe Moraes por uma questão
Substituia: $config['site']['serverPath'] = "C:\Users\Murilo\Desktop\Baiak\"; Por: $config['site']['serverPath'] = 'C:\Users\Murilo\Desktop\Baiak\';1 ponto -
Erro no Gesior para 10.90
MuriloCavalcantti reagiu a Felipe Moraes por uma questão
Ele fica aqui: htdocs / config / config.php1 ponto -
Erro no Gesior para 10.90
MuriloCavalcantti reagiu a Felipe Moraes por uma questão
Poste seu config.php, por favor. Geralmente é formatação, a versão do seu xampp pode não estar interpretando as aspas, barras, etc1 ponto -
Stamina Potion
Night Wolf reagiu a totonho18 por uma questão
Tendi, pode ser porque a potion está no chão, coloca a potion dentro da bp do jogador, ele tem que usar a potion de dentro da sua bp. testei aqui e deu certo amigo, se der errado me fala que ai vou analisar isso do zero e procurar a falha. Mano não tem como dar errado, é um script muito simples. Siga o tutorial exatamente como está. Primeiro passo -> copie um arquivo da pasta data/actions/scripts e renomeie para stamina.lua, agora abra-o, apague tudo que tem dentro e coloque esse código no lugar --Stamina Potion System-- --Autor: Totonho 18 -- function onUse(cid, item, frompos, item2, topos) local Item = 7489 -- ID do item que será retirado if getPlayerItemCount(cid,Item) >= 1 then doPlayerAddStamina(cid, 2520) doSendMagicEffect(frompos, 14) doPlayerRemoveItem(cid,Item,1) end return true end feito isso salve e feche, agora no xml da pasta data/actions/actions.xml coloque essa tag <action itemid="7489" script="stamina.lua"/> Salve e feche, TEM QUE FUNCIONAR. POSSIVEIS ERROS -> PRESTE ATENÇÃO O script dará errado se; 1 - Se a potion não estiver na bp do jogador 2 - Se o item id que você usou como potion já estiver em uso em outro script 3 - Se o distro não estiver reconhecendo o formato do arquivo 4 - Se você instalou errado, na pasta errada, ou copiou com algum simbolo faltando, etc.. Se der algum erro, olhe essas 4 possibilidades e diga em qual delas o erro se enquadra, qualquer duvida manda aqui!1 ponto -
Vá no config/config.php do seu site e procure por algo PARECIDO com isso: $config['site']['access_admin_panel'] = 3; O número que estiver ali, é o acesso que a conta precisa para se tornar admin no site. Na database, vá na tabela 'accounts' e procure por "page_access', coloque o número que está naquela linha do config.php.1 ponto
-
[GESIOR] 2012 modificado por Sekk
SamueLGuedes reagiu a jvcasarin por um tópico no fórum
@@Daniel Obrigado!!1 ponto -
Templo/bank 10.x
lokoga reagiu a SamueLGuedes por um tópico no fórum
Bem legal pro começo, recomendo ver Show-OFFs de alguns mappers que tem no Ékz, como o Daniel, Gabriel Couto, e outros grandes mappers xD.1 ponto -
Em vasto mundo de mistérios, existe uma pequena ilha, que também guarda grandes segredos, chamada de Rookgaard. Seus habitantes se resume a cidadãos camponeses, pescadores e comerciantes, que sobrevivem do que a ilha tem para lhes oferecer. Apesar da vida calma e tranqüila que a ilha tem a oferecer, existe uma segunda realidade que cerca a ilha até os dias atuais. Aventureiros são os que decidem encarar está segunda realidade, tendo como pagamento a experiência e um vasto conhecimento que a ilha pode oferecer. Desde pequeno, Frimzen fora um garoto divertido, justo e corajoso. Por ser filho de comerciantes, e ajudá-los na loja, Frimzen sempre tivera desconfiança do mundo lá fora, pois as histórias que ele ouvia de alguns aventureiros que passavam por lá, o deixava bastante pensativo. Certo dia, como mais um dia de trabalho qualquer, Frimzen foi abastecer os suprimentos da loja, quando um homem aparentemente velho e com uma barba longa adentrou na loja, com um sorriso de um canto à outro. A felicidade tomou conta de Frimzen, que correu em direção do velho homem. - Tio Rimla, o senhor finalmente voltou! - Gritou Frimzen. Rimla é o irmão do pai de Frimzen, Paul. Rimla seu havia partido para aperfeicçoar os conhecimentos de uma linguagem antiga, uma linguagem que foi esquecida há muito tempo, A Linguagem Fict. Rimla era um Druida que se importava com as criaturas que existia em Rookgaard, porém a convivência entre humanos e as criaturas só tem piorado, desde que Banor, o Divino morreu. Era uma noite de festa, e todo o vilarejo estava presente, afinal era Rimla que estava de volta, o homem cujo conseguiu manter as ainda existentes relações com algumas criaturas, permitindo que o vilarejo fique à salvo de ataques. Era uma noite clara, onde as estrelas brilhavam bastante, e Frimzen resolveu passear pela floresta, já que a cidade toda estava em festa, e os guardas abandonaram seus postos. Frimzen nunca acreditara nas histórias de seu tio, pois no fundo, ele tinha medo. Medo de saber que existem pessoas e criaturas perversas no mundo, medo de ter medo, medo de morrer. O que viria depois da morte? Frimzen se perguntava bastante do porque nunca poder sair da vila; é tão perigoso lá fora? Foi se deixando levar durante o caminho, que Frimzen já não sabia mais onde estava. O barulho da floresta era mínimo, os sons presentes eram de alguns animais que ali estavam, e do balançar das folhas provocado pelo vento. De longe, ainda dava para ver que a cidade ainda estava comemorando a volta de Rimla. Tudo estava calmo e silencioso, até que uma lança atingiu seu braço. A descrição de tamanha dor não tem palavras. Frimzen gritou profundamente, e saiu correndo floresta adentro, sem saber mais onde estava, e isso acordou algumas criaturas que por ali estavam. O pânico já havia tomado conta de Frimzen, juntamente com um sentimento que nunca tinha sentido antes, o medo. Frimzen procurou em todas as direções, e avistou uma criatura esverdeada, que vestia um capuz azul, e carregava consigo várias lanças, além de soltar grunhidos e sons que Frimzen não conseguia assemelhar com nada que já tinha ouvido antes. A criatura segue em sua direção, acompanhado de outras criaturas esverdeadas, porém estes estavam sen lanças, e apenas com vestimentas de couro bastante velhas. Os seres que ali estavam, avançavam em sua direção, quando de repente, Frimzen escuta uma palavras estranhas, acompanhadas de uma voz familiar. - Utevo gran lux. - Disse a voz Após as palavras serem pronunciadas, um clarao de luz tomou conta daquela área, fazendo com que todas as criaturas partissem em retirada. - Você está bem? - Disse a voz. - Tio... Como você?... - Perguntou Frimzen, abismado. - É uma longa história, mas tudo o que ouviu até hoje é verdade. - Respondeu Rimla. Após isso, o susto, o medo, a felicidade e o alívio de estar vivo, contribuíram para que Frimzen desmaiasse. Frimzen não sabia, mas aquilo que ele acabara de ver, era apenas o início de algo muito vasto, e magnífico, a magia. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Bom pessoal, esse foi meu primeiro conto baseado no Tibia. Se vocês gostaram, comentem ai que eu vou dando continuidade à história. OBS: Saiu 2 tópicos porque eu tava pelo celular, peço desculpas à todos.1 ponto
-
Neptune Projeto + AAC inacabada
kaleudd reagiu a Felipe Moraes por um tópico no fórum
Realmente parece ser um ótimo servidor. Parabéns!1 ponto -
Try getPlayerMagLevel(cid)1 ponto
-
[Contos Tibianos] - As Aventuras de Frimzen.
Felipe Moraes reagiu a Tetoxd por um tópico no fórum
Olá Felipe! Realmente fico feliz que tenha gostado, e pretendo publicar historias 1 ~ 3 histórias por semana, dependendo de como fluir as próximas. É, os nomes foi lasca pra bolar, mas eu busco criar nomes que ninguém utilize mesmo, pra tornar o personagem único. E também, tenho grande dificuldade com os nomes, rsrsrs. Desde já agradeço!1 ponto -
Poke tournament (pokemon)
RodriigoRobson reagiu a PokeTournament por um tópico no fórum
ta ai uma pequene demonstração do Sistema de catch tirei minha base do game boy quando se tenta capturar um pokemon a pokebola balança 3 veses tendo a chance de quebrar a pokeball e o pokemon escapar dela tambem se torna mais facil capturar quando o pokemon esta com a vida baixa tipo no gameboy EDITED respondendo sua pergunta, para abrir a tela de seleção de fase tem um botão no topo do client assim como no pvp tb =D1 ponto -
Isso é uma tag que está em um monstro... Provavelmente o Dark Abomination, porem existem 2 Dark Abomination, 1 deles terá uma tag com o event "tp" , basta voce acha-lo e remover a tag completa...1 ponto
-
veja se o evento name está em algum mostro geralmente fica nas utimas linhas do .xml do moster.1 ponto
-
Otclient protocol
icaro201094 reagiu a Aberos por uma questão
o otclient tem um codigo na source game.cpp que diz que so suporta de 790 a 10.90 void Game::setProtocolVersion(int version) { if(m_protocolVersion == version) return; if(isOnline()) stdext::throw_exception("Unable to change protocol version while online"); if(version != 0 && (version < 740 || version > 1090)) stdext::throw_exception(stdext::format("Protocol version %d not supported", version)); m_protocolVersion = version; Proto::buildMessageModesMap(version); g_lua.callGlobalField("g_game", "onProtocolVersionChange", version); } no caso vc teria que mecher nas source dele para poder aceitar esse protocolo1 ponto -
[Pedido] Item Teleport
Marcelo Junior reagiu a kaleudd por uma questão
@@Night Wolf arrumei kk,nem reparei.1 ponto -
[Pedido] Item Teleport
Marcelo Junior reagiu a kaleudd por uma questão
data>actions>script e faz um arquivo com qualquer nome .lua e cole : function onUse(cid, item, frompos, item2, topos) local config = { pz = "yes", -- players precisam estar em protection zone para usar? ("yes" or "no"). battle = "yes", -- players deve estar sem battle ("yes" or "no") pos = {x=xxxx, y=xxxx, z=xxxx} } if(config.pz == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"você precisa estar em protection zone pra poder teleportar.") return TRUE end if(config.battle == "yes") and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar sem battler pra poder teleportar.") return TRUE end if item.itemid == 1234 then --id do item doPlayerSendTextMessage(cid,22,"Você foi teleportado para o centro pokémon!") doTeleportThing(cid,config.pos) doSendMagicEffect(getCreaturePosition(cid), 10) doSendMagicEffect(frompos,6) end return 1 end em seguida vá em data>actions e ponha pra editar o arquivo actions.xml e ponha isso: <action itemid="id_do_item" script="nome_do_arquivo.lua"/>1 ponto -
Global 10/11.5 + OtherWorld + Hearth of Destruction Quest+ Eventos
willxtibia reagiu a lokoga por um tópico no fórum
Aki esse tem até a versão 10.90. http://www.xtibia.com/forum/topic/237990-remeres-map-editor-1090/1 ponto -
Capture the Flag - Dúvida
lokoga reagiu a srkapetinha por uma questão
--[[ Capture The Flag System Author: Maxwell Denisson(MaXwEllDeN) Version: 2.0 Contact: <script data-cfhash='f9e31' type="text/javascript"> /* */</script> ]] local CTF = CTF_LIB function onUse(cid, item) if getPlayerStorageValue(cid, 16700) == CTF.getFlagTeam(item.itemid) then return doPlayerSendCancel(cid, "Você não pode roubar a bandeira do seu próprio time") end CTF.stealFlag(cid, CTF.getFlagTeam(item.itemid)) doRemoveItem(item.uid, 1) return true end Não tem, a actions é referente a bandeira , eu olhei todos e não achei nada , e no ot que eu peguei o sistema tá funcionando perfeitamente, unica coisa que eu mudei foi que quando eu liguei o ot tava dando erro que o Ontime não foi achado, porque no script do globalevents tava escrito Ontimer, ai eu só tirei o R para funcionar, não sei se esse é o problema Consegui resolver, eu tinha que editar as coordenadas dos Towns no remeres, e eu não tinha editado... Funfou ^^, valeu Lokoga, vou te dar REP+ por tentar me ajudar :DD1 ponto -
Visual 2015
JonatasLucasf reagiu a Avuenja por um tópico no fórum
Bom dia pessoal do Ékz, venho até vocês para apenas informar o motivo de voltarmos ao visual de 2015, como todos já devem ter percebido ao entrar no fórum hoje. Para quem não me conhece, sou o Coordenador de Infraestrutura da Comunidade, e cuido desta parte de visual e tudo o que se pode dizer a respeito em relação a isso. O motivo de voltarmos para a antiga skin, foi por alguns motivos que a nova não estava nos possibilitando algumas questões, e também pelo feedback dos vocês membros, pois queremos sempre o melhor para todos. Mas estaremos trabalhando nesta nova skin, e em um novo visual para o Ékz, que nos dará uma entidade visual ótima e única. Aguardem pessoal. Pois bem, é isto. Fiquem na Santa paz de Deus. Abraços1 ponto -
[GRUPO] WhatsApp
XScupion reagiu a Felipe Moraes por um tópico no fórum
ou esse tópico ta muito escondido, ou a garotada ta com medo de se revelar1 ponto -
[Arquivado]Quem é você, player? Ganhe 05 REP + Conquista!
Administrador reagiu a Bluester por um tópico no fórum
Preenchido, Bluester.1 ponto -
[Arquivado]Quem é você, player? Ganhe 05 REP + Conquista!
Administrador reagiu a InsanityA por um tópico no fórum
Respondido, muito bom , vai divulgar os resultados também ?1 ponto -
[Arquivado]Quem é você, player? Ganhe 05 REP + Conquista!
Administrador reagiu a Piabeta Kun por um tópico no fórum
eu fiz sem querer 2 veses, pq pulei uma parte, que podia deixar em brando wtf! Piabeta1 ponto -
[Arquivado]Quem é você, player? Ganhe 05 REP + Conquista!
Administrador reagiu a rorix por um tópico no fórum
respondido1 ponto -
[Arquivado]Quem é você, player? Ganhe 05 REP + Conquista!
Administrador reagiu a zorddella por um tópico no fórum
Preenchido! Gostei da pesquisa de mercado :v hahaha Abs!1 ponto -
[Arquivado]Quem é você, player? Ganhe 05 REP + Conquista!
Administrador reagiu a Luga03 por um tópico no fórum
Bem legais as perguntas! Já fiz meu formulário1 ponto -
[Arquivado]Quem é você, player? Ganhe 05 REP + Conquista!
Administrador reagiu a Alissow por um tópico no fórum
Quando vai depositar a rep?1 ponto -
[Arquivado]Quem é você, player? Ganhe 05 REP + Conquista!
Administrador reagiu a lSainty por um tópico no fórum
Legal a iniciativa, ElderZard :happy:1 ponto -
[Arquivado]Quem é você, player? Ganhe 05 REP + Conquista!
Administrador reagiu a Beeki por um tópico no fórum
Feito, Beeki. :smile_positivo:1 ponto -
Olá, consegui concertar e resolvi explicar aqui, vai ajudar caso alguém com a mesma dúvida veja esse tópico As novas magias criadas provavelmente não foram adicionadas em um arquivo chamado moves local do arquivo: data\lib\moves.lua ao abrir é bem simples, você vai até a ultima spell , copia ela como base , cola embaixo e edita, só colocar o nome da spell,tipo e força. As ultimas magias nesse arquivo do meu server eram essas: ["Signal Beam"] = {f = 80, t = "Bug"}, ["Aqua Jet"] = {f = 80, t = "Water"}, ["Protection"] = {f = 0, t = "normal"}, Adcionei uma spell de água, chamada Giant Water Gun, embaixo de protection eu coloquei isso: ["Giant Water Gun"] = {f = 80, t = "water"}, Pronto, essa spell já funciona caso o smeargle copie ela.1 ponto
-
Olá membros do XTibia, Estou aqui hoje para dar uma ajuda aqueles que estão em busca de uma equipe. As 4 dicas que eu darei a seguir são baseadas em minhas próprias dificuldades em achar membros para minha equipe devido a falta de uma apresentação descente. Portanto, se você não está conseguindo achar uma equipe, aqui vão as dicas para aumentarem suas chances de serem bem sucedidos: Legenda: ex: *frase* = Super importante. • Tópico organizado: - Cores não são sinônimo de beleza, evite deixar seu tópico parecendo um arco-ires. - Tente destacar apenas aquilo que for necessário e importante. - Escrever corretamente te torna uma pessoa mais madura e bem vista. - Utilize as ferramentas do editor, elas estão ai a seu dispor para deixar seu tópico mais elegante e prático. - Imagens podem enriquecer utilizadas de forma adequada, não exagera para nao tornar enjoativo. • Vocabulário: - Não tem nada pior que uma pessoa que não sabe escrever o próprio idioma. - Erros de português não são bem vistos por aqueles que desejam uma pessoa produtiva, sem contar as gírias e expressões que podem causar uma má primeira impressão. - Virgula e ponto não foram inventados para dar uma pausa para respirar. Use-os de forma correta afim de dar *coesão* ao seu texto. • Encher linguiça: - Seja direto, fale somente o necessário. Você quer ser "contratado" e não fazer alguém fechar uma aba da internet. - Textos grandes são exaustivos. • Informações pessoais: - Traga os máximo de informações possíveis a seu respeito *em relação ao cargo que deseja*. Ninguém quer saber a respeito do seu carro ou da cor da sua cueca. - Tente trazer seus trabalhos a tona, com imagens, links e afins. Amostras de seus trabalhos podem fazer a diferença. (Se você for bom, aumentará sua chance). São apenas 4 dicas que você deve se atentar e que farão a diferença para você na hora de o "procurador" escolher qual membro escolher para fazer parte de sua equipe. Desejo a todos boa sorte! Att, Maroak.1 ponto
-
2 Spells 8.6 Com Imagens
SkyTheKing reagiu a Matematheus por um tópico no fórum
Eae pessoal, irei postar 2 magias para colocar no seu otserver! Abra seuot/data/spells/scripts/attack Copie algum arquivo lua, e nome-ie de rushkina: Primeira Magia: Exori Rush Cole isso dentro da pasta: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 36) setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 50, 60, 60, 65) local arr = { {0, 1, 1, 1, 0}, {1, 1, 1, 1, 1}, {1, 1, 2, 1, 1}, {1, 1, 1, 1, 1}, {0, 1, 1, 1, 0}, } local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Depois volte para a pasta spells, e abra o arquivo spells.xml, cole isso embaixo de alguma magia: <instant name="Rush Kina" words="exori rush" lvl="300" mana="340" prem="1" needweapon="1" exhaustion="1200" needlearn="0" script="attack/rushkina.lua"> <vocation id="4"/> <vocation id="8"/> </instant> Imagem da magia: _____________ Segunda Magia: Exevo mas holy Faça igual a primeira magia: seuot/data/spells/scripts/attack Copie algum arquivo lua, e nome-ie de star Cole isso dentro da pasta: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_STUN) setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 4, 4, 5, 6) local arr = { {0, 0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 2, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0}, } local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Depois volte para a pasta spells, e abra o arquivo spells.xml, cole isso embaixo de alguma magia: <instant name="Star" words="exevo mas holy" lvl="100" mana="1100" prem="1" exhaustion="1000" selftarget="1" needlearn="0" script="attack/star.lua"> <vocation id="2"/> <vocation id="6"/> <vocation id="1"/> <vocation id="5"/> </instant> Imagem da magia: Espero te ajudado com essas magias ^^.1 ponto -
[Tutorial] Criando Magias
SkyTheKing reagiu a Kimoszin por um tópico no fórum
Introdução Ao Motivo de fechar a minha "fabrica de spells" resolvi criar esse tutorial. Para os iniciantes aprederem sozinhos. Organizei em Spoiler os Tipos de Magia. Spell De Attack: Spell De Cura: Spell de Suport: Bom é isso Pessoal. Espero que tenham Gostado! Obs: Quando eu tiver tempo, mostrarei todos os effects Abraços1 ponto