Ir para conteúdo

Forged

Administrador
  • Registro em

  • Última visita

Tudo que Forged postou

  1. Hoje venho apresentar a você a mais nova rede de Servidores de Tibia do Brasil! A algumas semanas investimos em melhorias em nosso OT, arrumamos bug’s, criamos sistemas e mapa exclusivo e finalmente chegou a hora do GRANDE LANÇAMENTO! Prepare-se para jogar em um servidor realmente sério, garantimos 24h de jogo sem parar! Infraestrutura nos Estados Unidos garantindo assim 24h de JOGO SEM PARAR! PROMOÇÃO DE LANÇAMENTO: Cadastre-se em nosso OT e solicite ao GOD OtsBr sua VIP ACC totalmente de GRAÇA, para conhecer nosso mapa EXCLUSIVO VIP! Informações do Servidor: Client: 8.6 IP: otsbr.no-ip.org Port: 7171 Conta pelo Account Manager: 1/1 Mapa: Custom (exclusivo) Entre agora mesmo e solicite sua VIP ACC de GRAÇA!
  2. Não entendi o seu pedido '-'
  3. Faz o seguinte se vc vai la em npc, e não tem nem um você vai ir em: File -importar-npc/monster vai até a pasta que o npc esta click 2 vezes nele e de um refresh no rme. @Edit -Scripts de como fazer um npc de barco ou que teleporta. Crie um arquivo em Data/Npc com o nome que desejar. Dentro cole: <?xml version="1.0"?> -<npc maglevel="1" level="1" access="5" floorchange="0" walkinterval="3" script="data/npc/scripts/teleportador.lua" name="Teleportador"> <health max="150" now="150"/> <look corpse="2212" feet="111" legs="15" body="19" head="96" type="146"/> -<parameters> <parameter value="Ola |PLAYERNAME|. ! Eu posso te levar para {kunlun}, {skin}, {deserto}, {geffen}, {lutie}, {ank} e {izlud}.. Onde deseja ir?" key="message_greet"/> <parameter value="Vai custar |TOTALCOST| gold coins. Vai viajar? Voce pode ir em outras cidades indo ao tapete do meu primo!" key="message_decline"/> </parameters> </npc> Aqui você coloca os nomes das cidades que o npc vai: Eu posso te levar para {kunlun}, {skin}, {deserto}, {geffen}, {lutie}, {ank} e {izlud}.. Onde deseja ir? Agora em Data/Npc/Scripts: Crie um arquivo com o nome de "teleportador.lua E cole isso dentro local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler)[/b] [b]-- OTServ event handling functions start 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 -- OTServ event handling functions end[/b] [b]-- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! local travelNode = keywordHandler:addKeyword({'kunlun'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce quer viajar para kunlun por 210 gold coins?'}) travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 2, cost = 210, destination = {x=825, y=1686, z=6} }) travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'I wouldn\'t go there either.'})[/b] [b]keywordHandler:addKeyword({'destination'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Eu posso te levar para {kunlun}, {skin}, {deserto}, {geffen}, {lutie} e {ank} por um pequeno custo.'})[/b] [b]-- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! local travelNode = keywordHandler:addKeyword({'skin'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce quer viajar para skin por 210 gold coins?'}) travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 2, cost = 210, destination = {x=303, y=1865, z=6} }) travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'I wouldn\'t go there either.'})[/b] [b]keywordHandler:addKeyword({'destination'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can take you to \'skin\' for just a small fee.'})[/b] [b]-- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! local travelNode = keywordHandler:addKeyword({'deserto'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce quer viajar para deserto por 210 gold coins?'}) travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 2, cost = 210, destination = {x=922, y=1446, z=5} }) travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'I wouldn\'t go there either.'})[/b] [b]keywordHandler:addKeyword({'destination'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can take you to \'deserto\' for just a small fee.'})[/b] [b]-- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! local travelNode = keywordHandler:addKeyword({'geffen'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce quer viajar para geffen por 100 gold coins?'}) travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 2, cost = 100, destination = {x=991, y=1000, z=7} }) travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'I wouldn\'t go there either.'})[/b] [b]keywordHandler:addKeyword({'destination'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can take you to \'geffen\' for just a small fee.'})[/b] [b]-- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! local travelNode = keywordHandler:addKeyword({'anknor'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce quer viajar para anknor por 175 gold coins?'}) travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 2, cost = 175, destination = {x=487, y=261, z=6} }) travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'I wouldn\'t go there either.'})[/b] [b]keywordHandler:addKeyword({'destination'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can take you to \'Anknor\' for just a small fee.'})[/b] [b]-- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! local travelNode = keywordHandler:addKeyword({'anknor'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce quer viajar para anknor por 100 gold coins?'}) travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 2, cost = 100, destination = {x=487, y=261, z=6} }) travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'I wouldn\'t go there either.'})[/b] [b]keywordHandler:addKeyword({'destination'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can take you to \'anknor\' for just a small fee.'})[/b] [b]-- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! local travelNode = keywordHandler:addKeyword({'smallville'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce quer viajar para smallville por 190 gold coins?'}) travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 2, cost = 190, destination = {x=1995, y=2394, z=6} }) travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'I wouldn\'t go there either.'})[/b] [b]keywordHandler:addKeyword({'destination'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can take you to \'smallville\' for just a small fee.'})[/b] [b]-- Don't forget npcHandler = npcHandler in the parameters. It is required for all StdModule functions! local travelNode = keywordHandler:addKeyword({'goroma'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce quer viajar para Goroma por 55 gold coins?'}) travelNode:addChildKeyword({'yes'}, StdModule.travel, {npcHandler = npcHandler, premium = true, level = 2, cost = 55, destination = {x=1367, y=195, z=6} }) travelNode:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, reset = true, text = 'I wouldn\'t go there either.'})[/b] [b]keywordHandler:addKeyword({'destination'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can take you to \'goroma\' for just a small fee.'})[/b] [b]-- Makes sure the npc reacts when you say hi, bye etc. npcHandler:addModule(FocusModule:new()) essa parte você coloca as coordenadas pra onde o npc vai levar:
  4. Forged postou uma resposta no tópico em Suporte Bots
    Bom saiba como upar akie: E as hunts tente achar ake mais se for para ibot :
  5. Olá pessoal, estou aqui para lhe trazer algumas notícias quentinhas relacionadas ao TK, pois é quem está nos acompanhando viu que estamos entramos no ano de 2013 contudo, e quando eu digo contudo, é porque é contudo mesmo, estamos cheio de novidades guardas para soltar nosse fórum aqui, aqui estão algumas, confira: Upgrade do host do TK: Tivemos um pequeno problema no tráfego do servidor que hospeda o TibiaKing.com, isso ocasionou uma grande lentidão especificamente no dia 01/01/2013, após identificarmos o problema, ele rapidamente ele foi solucionado, nós aproveitamos a oportunidade e fizemos um upgrade no nosso sistema operacional e em nosso modulo de segurança, tornando o fórum ainda mais rápido e seguro. Duas novas seções do TK: Agora nosso fórum conta com duas novas seções na área "Diversos", são elas: Games e Divulgações. A seção de Games servirá para você postar a respeito de outros jogos que não seja o Tibia e na seção de Divulgações você poderá postar seu site, blog, fotolog, fórum... Enfim, divulgar seu projeto! Mas lembre-se de ler atentamente as regras da seção de divulgações para que não ocorra futuros problemas! Novo visual do TK: Bom pessoal, acabamos de lançar nosso novo visual que foi completamente feito por nossa equipe e como sempre, algo que é novo sempre apresenta alguns bugzinhos... Enfim, nosso visual estava com problemas de compatibilidade com alguns browsers (inclusive com a maldita Internet Explorer), mas eu trabalhei bastante para corrigir-los e agora está tudo ok, nosso visual está impecável! Espero que tenham gostado e em breve mais novidades para vocês!
  6. Forged postou uma resposta no tópico em Portal
    Faala galerinha, esse ano de 2012 passou rapidão né?! Pois é, passou que eu nem vi... Então, eu estou criando este tópico para desejar em nome de toda nossa equipe, um feliz e prospero ano novo a todos vocês que fazem parte dessa imensa comunidade que o TK se tornou, vocês com certeza fazem deste site algo muito especial e são responsáveis pelo avanço diário desse fórum, portanto eu só tenho a agradecer a todos vocês e desejar do fundo do coração que 2013 seja um ano muito bom e cheio de realizações para todos vocês que fazem parte do TK! E com a chegada de 2013, o TK já começa o ano trazendo diversas novidades para vocês, uma dessas novidades vocês já podem conferir e tenho certeza que irão curtir bastante, é o nosso mais novo visual, ele é um visual completamente personalizado, criado inteiramente por nossa equipe no intuito de fazer algo funcional, ou seja, algo que una o belo com útil. Ele trás várias utilidades novas para os membros do TK, como por exemplo o menu fixo que lhe ajudará bastante na navegação do fórum. Esse visual é completamente exclusivo ao TibiaKing.com! (Imagem do novo visual do TibiaKing.com) Espero que tenham gostado e em breve terá muitas novas novidades, aguardem, 2013 promete!
  7. Em breve, mas MUUUITO em breve terá umas novidades lecais no tibiaking! Mas não conta isso pra ninguém... é surpresa... xiuu, xispa
  8. Forged postou uma resposta no tópico em Playground (Off-topic)
    a conclusão que essa seção realmente é um playground, só ta faltando o cercadinho, pula pula e cama-elástica. E nós da equipe (alguns não, também são criancinhas) somos os titios que supervisionam as criancinhas para elas não fazerem merdinha.
  9. Fala galerinha do TK, hoje vim trazer um script muito interessante e que tenho certeza que será muito útil para vários que estão atrás de um sistema de pagamento automático. Então, eu corri atrás desse script durante muito tempo, encontrei vários porém nenhum funcionava, sofri bastante para conseguir achar e não achei, então tive que pegar um e editar-lo para que ele funcionasse. Vamos ao script! • Primeiramente vá em config/config.php e adicione isso dentro do arquivo: // PagSeguro automatico by Matheus e Victor for TibiaKing.com // Seu email cadastrado no PagSeguro $config['pagseguro']['email'] = 'SEU E-MAIL DO PAGSEGURO'; // Nome do produto $config['pagseguro']['produtoNome'] = 'Premium Points'; // Valor de cada ponto // Exemplo de valores: // 100 = R$ 1,00 // 250 = R$ 2,50 $config['pagseguro']['produtoValor'] = '100'; Atenção: Para pegar o seu token você precisará entrar nesse link logado em sua conta do PagSeguro, na URL de retorno selecione "Ativar" e bote a url http://seusiteaqui/retpagseguro.php agora clique em "Salvar". Agora um pouco mais embaixo tem o Token clique e "Gerar", pronto, o Token gerado você coloca na config.php! • Agora vá na pasta do seu site e crie um arquivo chamado retpagseguro.php com isto dentro: <?PHP $host = "localhost"; /* HOST */ $user = "root"; /* USER */ $passwd = ""; /* PASSWORD */ $db = ""; /* DB */ $retorno_token = ''; // 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 = $_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> Faça as edições no retpagseguro.php com as informações da sua database no inicio do script • Pronto, agora de novo na pasta do seu site crie um arquivo chamado donate.php com isto dentro: <?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 &#111;nmouseover="MouseOverBigButton(this);" &#111;nmouseout="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 &#111;nmouseover="MouseOverBigButton(this);" &#111;nmouseout="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 .= '<br><br><b>Valores:</b><br> 1 Point = R$ 1,00<br> 10 Points = R$ 10,00<br> 20 Points = R$ 20,00<br> E assim por diante...<br><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_valor_1" value="'. $config['pagseguro']['produtoValor'] .'"> <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 comprar</strong></th> </tr> <tr> <td width="10%">Sua conta</td> <td><strong>'.$account_logged->getCustomField("name").'</strong></td> </tr> <tr> <td width="10%">Pontos</td> <td> <input name="item_quant_1" type="text" value="10" size="5" maxlength="5"> </td> </tr> <tr> <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&sup1;:</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 } ?>'; } ?> • Ok, para finalizar o script vá até a database do seu OTServ no phpMyAdmin clique na aba "SQL" e execute as seguintes querys: 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; Prontinho galera, é isso ai, script finalizado... Agora você tem um script de entrega automática de points! Créditos: - Matheus (EU) - Victor Fasano Raful - Tatu Hunter Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  10. Forged postou uma resposta no tópico em Playground (Off-topic)
    Então leiam umas 5 entrevistas do TibiaBR e aprendam a fazer uma entrevista descente... http://www.tibiabr.com/ver-entrevistas Muito obrigado!
  11. Forged postou uma resposta no tópico em Portal
    Falaaa galerinha do TK, então, mais um ano se passou e estamos aqui firme e forte na correria, é isso mesmo esse ano com certeza foi o melhor ano até agora para o TibiaKing.com, um ano de muitas, mas muitas realizações para a nossa comunidade: criamos milhares de tópicos de conteúdo, nossa seção de suporte está fluindo muito bem, batemos recordes atrás de recordes... Enfim, já estamos entre as maiores comunidades de Tibia/OTServ do mundo e nosso fórum não para de crescer!!!! E com o nosso imenso sucesso, com certeza isso não nos trouxe apenas coisas boas, tivemos que mudar nosso host duas vezes esse ano devido ao grande consumo do nosso site e como se isso não bastasse nós também tivemos que enfrentar uma grande série de ataques DDoS, mas felizmente com a imensa vontade de continuar com o fórum devido aos nosso queridos membros e com a competência de todos de nossa equipe conseguimos superar esses problemas facilmente, não foi uma barreira pra nós e nunca será! (Esse é o verdadeiro Papai Noel, e sim, ele existe! huahua) Mas então, eu não vim postar esse tópico para ficar falando do nosso fórum né? Ou melhor acho que sim... ah sei la, é porque eu vim falar do Natal, mas Natal só me lembra coisa boa, então eu tive que falar do TK... Mas mudando o assunto... Feliz natal para todos, muitas felicidades, realizações, amor, presentinhos, comidinhas gostosas... Enfim, um natal repleto de alegria para todos vocês que fazem parte do TibiaKing.com!
  12. Fala pessoal, então, todos sabem que essa quest é bem complicada de ser configurada e na maioria das vezes ocorre erros, pois bem, hoje eu vim aqui trazer para vocês um script angito da Arena de Svargrond em MOD, criado por um membro da otland chamado TomCrusher e modificado por mim. É um script de fácil configuração e sem erros nenhum, confira! Vá até a pasta mods e crie um arquivo chamado arena.xml com isso dentro: <?xml version="1.0" encoding="UTF-8"?> <mod name="Arena Svargrond" version="1.0" author="Tommy" contact="[email protected]" enabled="yes"> <config name="arenaFunctions"><![CDATA[ KickPosition = {x=32227, y=31096, z=7} --if the player leave the arena or time is over, where he go. RewardsRoom = {x=32222, y=31080, z=6} --rewards room position. arenaRoomMaxTime = 240 --max time for each room 240 = 4 min. OpenDoorsID = 5127 --if you change doors item ids, change me =D TimeStor = 42350 --here will be saved the time. myArenaLevel = 45450 --here will be saved the arena level. talkNPC = 45451 --Storage to check if the player have paid to the npc and can enter to the arena. RewardsStor = {42361, 42371, 42381} --Storage for greenshore, scrapper, warlord. isIN = 42352 --to check if the player is in the arena. myRoom = 46000 --here will be saved the current room. MonStor = 47000 --here will be saved the monster uid. DoorsActID = 42357 --Doors near the npc. LeavePortals = 42321 --The action id of the portal to leave the rooms (south portals). GobletTiles = {42360, 42370, 42380} --Action ids of the tiles for Bronze, Silver and Gold Goblets. Cancel = { --message when use door and have not paid to the npc. [1] = "You have not paid NPC yet.", --message when leave arena. [2] = "You have been kicked!", --message when the player can't get the reward. [3] = "You can\'t get this item.", --message when already got any reward. [4] = "It is empty.", --when try to open a reward door and haven't completed the level. [5] = "You have not finished this arena level.", --NPC answer if the player completed all arena levels. [6] = "You already did all the arena levels.", --message when time is over [7] = "The time is over.", --message when you can go to the next room, LoL >_> this is not a cancel btw. [8] = "You can go to the next room.", --when try to go to the next room and not killed the monster yet. [9] = "Kill the monster first!", --when try to go to the next room but there is a player yet...this text will be PLAYERNAME + this text [10] = "Is in the room yet." } Completed = { [1] = "Congatulations! You have completed the arena in", --HERE WILL BE THE ARENA NAME. [2] = "difficulty! Now you go take your reward."} --then the message will be "Congatulations! you have completed the arena in greenshore/scrapper/warlord difficulty!, now go and take your reward." Arena = { --greenshore [0] = { Cost = 10000, LevelName = 'greenshore', LevelNeeded = 30, Goblet = 5807 }, --scrapper [1] = { Cost = 50000, LevelName = 'scrapper', LevelNeeded = 50, Goblet = 5806 }, --warlord [2] = { Cost = 100000, LevelName = 'warlord', LevelNeeded = 80, Goblet = 5805 } } Rewards = { --greenshore --present with items. [42361] = { Stor = RewardsStor[1], Cont = 1990, items = {7372, 6569, 6574, 2114}, count = {1, 10, 1, 1} }, --blacksteel sword. [42362] = { Stor = RewardsStor[1], Cont = nil, item = 7406 }, --headchopper. [42363] = { Stor = RewardsStor[1], Cont = nil, item = 7380 }, --orcish maul. [42364] = { Stor = RewardsStor[1], Cont = nil, item = 7392 }, --backpack with items. [42365] = { Stor = RewardsStor[1], Cont = 7342, items = {7365, 7364}, count = {100, 100} }, --scrapper --present with items. [42371] = { Stor = RewardsStor[2], Cont = 1990, items = {7372, 6569, 6574, 7183}, count = {1, 10, 1, 1} }, --mystic blade. [42372] = { Stor = RewardsStor[2], Cont = nil, item = 7384 }, --heroic axe. [42373] = { Stor = RewardsStor[2], Cont = nil, item = 7389 }, --cranial basher [42374] = { Stor = RewardsStor[2], Cont = nil, item = 7415 }, --backpack with items. [42375] = { Stor = RewardsStor[2], Cont = 7342, items = {7365, 2547, 2547, 2311, 2304}, count = {100, 100, 100, 50, 50} }, --warlord --present with items. [42381] = { Stor = RewardsStor[3], Cont = 1990, items = {7372, 6569, 6574, 6568}, count = {1, 10, 1, 1} }, --justice seeker [42382] = { Stor = RewardsStor[3], Cont = nil, item = 7390 }, --royal axe. [42383] = { Stor = RewardsStor[3], Cont = nil, item = 7434 }, --blessed sceptre. [42384] = { Stor = RewardsStor[3], Cont = nil, item = 7429 }, --backpack with items. [42385] = { Stor = RewardsStor[3], Cont = 7342, items = {2273, 2268, 7443, 7440, 7529}, count = {50, 50, 1, 1, 100} } } arena_monsters = { --greenshore -scrapper --warlord [45300] = "Frostfur", [45310] = "Avalanche", [45320] = "Webster", [45301] = "Bloodpaw", [45311] = "Kreebosh the Exile", [45321] = "Darakan the Executioner", [45302] = "Bovinus", [45312] = "The Dark Dancer", [45322] = "Norgle Glacierbeard", [45303] = "Achad", [45313] = "The Hag", [45323] = "The Pit Lord", [45304] = "Colerian The Barbarian", [45314] = "Slim", [45324] = "Svoren the Mad", [45305] = "The Hairy One", [45315] = "Grimgor Guteater", [45325] = "The Masked Marauder", [45306] = "Axeitus Headbanger", [45316] = "Drasilla", [45326] = "Gnorre Chyllson", [45307] = "Rocky", [45317] = "Spirit of Earth", [45327] = "Fallen Mooh'tah Master Ghar", [45308] = "Cursed Gladiator", [45318] = "Spirit of Water", [45328] = "Deathbringer", [45309] = "Orcus the Cruel", [45319] = "Spirit of Fire", [45329] = "The Obliverator"} Checking = false RoomsACT = {42301, 42302, 42303, 42304, 42305, 42306, 42307, 42308, 42309} Goblets = { [42360] = {Id=Arena[0].Goblet, txt="It is given to the courageous victor of the barbarian arena "..Arena[0].LevelName.." difficulty."}, [42370] = {Id=Arena[1].Goblet, txt="It is given to the courageous victor of the barbarian arena "..Arena[1].LevelName.." difficulty."}, [42380] = {Id=Arena[2].Goblet, txt="It is given to the courageous victor of the barbarian arena "..Arena[2].LevelName.." difficulty."}} RewardsDoors = {[42366] = 1, [42376] = 2, [42386] = 3} ArenaAdding = {[0] = 3000, [1] = 3010, [2] = 3020} function myArenaLevelIs(cid) Stor = getPlayerStorageValue(cid, myArenaLevel) if Stor == -1 then setPlayerStorageValue(cid, myArenaLevel, 0) Stor = 0 elseif Stor == 3 then Stor = 2 end return { RC = Arena[Stor].Cost, LN = Arena[Stor].LevelName, RLV = Arena[Stor].LevelNeeded, LV = getPlayerStorageValue(cid, myArenaLevel) } end function getDirectionmove(cid, itempos) --function by Nahruto p = getCreaturePosition(cid) i = itempos if p.x > i.x then if p.y > i.y then ret = NORTHWEST elseif p.y < i.y then ret = SOUTHWEST else ret = WEST end elseif p.x < i.x then if p.y > i.y then ret = NORTHEAST elseif p.y < i.y then ret = SOUTHEAST else ret = EAST end else if p.y > i.y then ret = NORTH elseif p.y < i.y then ret = SOUTH else ret = nil end end return ret end function LeaveArena(cid) for i = 45300, 45329 do setPlayerStorageValue(cid, i, 0) end if isCreature(getPlayerStorageValue(cid, MonStor)) == TRUE then doRemoveCreature(getPlayerStorageValue(cid, MonStor)) end setGlobalStorageValue(getPlayerStorageValue(cid, myRoom), 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, Cancel[2]) doTeleportThing(cid, KickPosition, FALSE) setPlayerStorageValue(cid, TimeStor, 0) setPlayerStorageValue(cid, isIN, 0) end function CheckRooms() addEvent(CheckRooms, 1000) for i = 42300, 42309 do local Player = getGlobalStorageValue(i) if isPlayer(Player) == TRUE then local PlayerTime = getPlayerStorageValue(Player, TimeStor) if PlayerTime <= os.time() then doTeleportThing(Player, KickPosition, FALSE) setPlayerStorageValue(Player, TimeStor, 0) setGlobalStorageValue(i, 0) doPlayerSendTextMessage(Player,MESSAGE_STATUS_CONSOLE_ORANGE, Cancel[7]) if isCreature(getPlayerStorageValue(Player, MonStor)) == TRUE then doRemoveCreature(getPlayerStorageValue(Player, MonStor)) end elseif PlayerTime - 10 <= os.time() then doPlayerSendTextMessage(Player, MESSAGE_EVENT_DEFAULT, "you have "..PlayerTime - os.time().." seconds left.!") end else setGlobalStorageValue(i, 0) end end end function getArenaMonsterIdByName(name) for i = 45300, 45329 do if tostring(arena_monsters[i]) == string.lower(tostring(name)) then return i end end return false end]]></config> <event type="login" name="arenaRegister" event="script"><![CDATA[ domodlib('arenaFunctions') function onLogin(cid) registerCreatureEvent(cid, "PlayerArena") registerCreatureEvent(cid, "ArenaKill") return true end]]></event> <event type="death" name="PlayerArena" event="script"><![CDATA[ domodlib('arenaFunctions') function onDeath(cid, corpse, deathList) if getPlayerStorageValue(cid, isIN) == 1 then I = 0 for i = 45300, 45329 do if getPlayerStorageValue(cid, i) == 1 then I = i end end GlobalStor = I - ArenaAdding[myArenaLevelIs(cid).LV] setGlobalStorageValue(GlobalStor, 0) setPlayerStorageValue(cid, isIN, 0) if isCreature(getPlayerStorageValue(cid, MonStor)) then doRemoveCreature(getPlayerStorageValue(cid, MonStor)) end end return true end ]]></event> <event type="kill" name="ArenaKill" event="script"><![CDATA[ domodlib('arenaFunctions') function onKill(cid, target, lastHit) if getPlayerStorageValue(cid, isIN) == 1 then local Room = getArenaMonsterIdByName(getCreatureName(target)) if Room ~= 0 then setPlayerStorageValue(cid, Room, 1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, Cancel[8]) end end return true end]]></event> <action fromaid="42357" toaid="42386" event="script"><![CDATA[ domodlib('arenaFunctions') function onUse(cid, item, fromPosition, itemEx, toPosition) local myMove = getDirectionmove(cid, fromPosition) if myMove == nil then return FALSE end local Reward = Rewards[item.actionid] if Reward then if getPlayerStorageValue(cid, Reward.Stor) ~= 1 then local reward = nil if Reward.Cont ~= nil then reward = doCreateItemEx(Reward.Cont, 1) for i = 1, #Reward.items do doAddContainerItem(reward, Reward.items[i], Reward.count[i]) end else reward = doCreateItemEx(Reward.item, 1) end if reward ~= nil then if doPlayerAddItemEx(cid, reward, FALSE) == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,'You have found a '..getItemNameById(getThing(reward).itemid)..'.') setPlayerStorageValue(cid, Reward.Stor, 1) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, Cancel[3]) end end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, Cancel[4]) end elseif RewardsDoors[item.actionid] then if myArenaLevelIs(cid).LV >= RewardsDoors[item.actionid] then doTransformItem(item.uid, OpenDoorsID) doMoveCreature(cid, myMove) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, Cancel[5]) end elseif item.actionid == DoorsActID and getPlayerStorageValue(cid, talkNPC) == 1 then doTransformItem(item.uid, OpenDoorsID) doMoveCreature(cid, myMove) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, Cancel[1]) end return TRUE end]]></action> <movevent type="StepIn" fromaid="42300" toaid="42380" event="script"><![CDATA[ domodlib('arenaFunctions') function onStepIn(cid, item, position, fromPosition) local ArenaRoom = item.actionid if item.actionid == LeavePortals then LeaveArena(cid) elseif isInArray(GobletTiles, item.actionid) == TRUE then local gobletPos = getThingPos(item.uid) if getPlayerStorageValue(cid, item.actionid) ~= 1 then setPlayerStorageValue(cid, item.actionid, 1) local Goblet = doCreateItemEx(Goblets[item.actionid].Id, 1) doItemSetAttribute(Goblet, "description", ""..Goblets[item.actionid].txt.."\nAwarded to "..getCreatureName(cid)..".") gobletPos.y = gobletPos.y - 1 doTileAddItemEx(gobletPos, Goblet) end doTransformItem(item.uid, item.itemid - 1) elseif isInArray(RoomsACT, ArenaRoom) == TRUE or ArenaRoom == 42300 then if Checking == FALSE then Checking = TRUE CheckRooms() end local myLevelArena = myArenaLevelIs(cid).LV if ArenaAdding[myLevelArena] then Mons = ArenaRoom + ArenaAdding[myLevelArena] end if getGlobalStorageValue(ArenaRoom) == 0 then if isCreature(getPlayerStorageValue(cid, MonStor)) == FALSE then if ArenaRoom == 42300 and getPlayerStorageValue(cid, talkNPC) == 1 then setPlayerStorageValue(cid, talkNPC, 0) setPlayerStorageValue(cid, isIN, 1) P = 1 elseif ArenaRoom ~= 42300 and getPlayerStorageValue(cid, isIN) == 1 then P = 1 else P = nil end if P ~= nil then local SpawnPos = getThingPos(ArenaRoom) doTeleportThing(cid, SpawnPos, FALSE) SpawnPos.x = SpawnPos.x - 1 SpawnPos.y = SpawnPos.y - 1 local Monster = doSummonCreature(arena_monsters[Mons], SpawnPos) setGlobalStorageValue(ArenaRoom, cid) setGlobalStorageValue(ArenaRoom - 1, 0) setPlayerStorageValue(cid, TimeStor, os.time()+arenaRoomMaxTime) setPlayerStorageValue(cid, MonStor, Monster) setPlayerStorageValue(cid, myRoom, ArenaRoom) else LeaveArena(cid) end else doTeleportThing(cid, fromPosition, TRUE) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, Cancel[9]) end else doTeleportThing(cid, fromPosition, TRUE) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, ""..getCreatureName(getGlobalStorageValue(cid, ArenaRoom)).." "..Cancel[10].."") end elseif ArenaRoom == 42310 then if isCreature(getPlayerStorageValue(cid, MonStor)) == FALSE then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,""..Completed[1].." "..myArenaLevelIs(cid).LN.." "..Completed[2].."") setPlayerStorageValue(cid, myArenaLevel, getPlayerStorageValue(cid, myArenaLevel) + 1) setGlobalStorageValue(ArenaRoom - 1, 0) setPlayerStorageValue(cid, TimeStor, 0) setPlayerStorageValue(cid, isIN, 0) doTeleportThing(cid, RewardsRoom, TRUE) else doTeleportThing(cid, fromPosition, TRUE) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_ORANGE,'Najpierw zabij potwora!') end end return TRUE end]]></movevent> <movevent type="StepOut" fromaid="42357" toaid="42387" event="script"><![CDATA[ domodlib('arenaFunctions') function onStepOut(cid, item, position, fromPosition) if item.actionid == DoorsActID or RewardsDoors[item.actionid] then doTransformItem(item.uid, item.itemid - 2) elseif isInArray(GobletTiles, item.actionid) == TRUE then doTransformItem(item.uid, item.itemid + 1) end return TRUE end]]></movevent> </mod> Pronto, apenas configure o RewardsRoom e o KickPosition, o resto é só adicionar os ActionsIDS no mapa editor caso não tenha. Se você possuir outro sistema de arena em seu OTServ, remova todos os arquivos desse sistema. Agora vamos configurar o NPC, vá até a pasta data/npc e crie um arquivo chamado Halvar.xml com isso: <?xml version="1.0" encoding="UTF-8"?> <npc name="Halvar" script="data/npc/scripts/arena.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="143" head="3" body="77" legs="78" feet="39" addons="1"/> </npc> Agora vá até data/npc/scripts e crie um arquivo chamado arena.lua com isso dentro: domodlib('arenaFunctions') 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 local focus = 0 local talk_start = 0 local TS = 0 function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 end end local function BYE() focus = 0 talk_start = 0 TS = 0 end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) msg = string.lower(msg) if (msgcontains(msg, 'hi') and (focus == 0)) then selfSay('Hello ' .. getCreatureName(cid) .. ', do you want to make arena?') focus = cid talk_start = os.clock() TS = 1 elseif msgcontains(msg, 'hi') and (focus ~= cid) then selfSay('Im Bussy') elseif TS == 1 and msgcontains(msg, 'yes') or msgcontains(msg, 'fight') or msgcontains(msg, 'arena') then if getPlayerStorageValue(cid, myArenaLevel) < 3 then local enterArena = myArenaLevelIs(cid) if getPlayerLevel(cid) >= enterArena.RLV then if getPlayerMoney(cid) >= enterArena.RC then setPlayerStorageValue(cid, talkNPC, 1) doPlayerRemoveMoney(cid, enterArena.RC) selfSay("Now you can go to test... ".. enterArena.LN .."!") BYE() else selfSay("You don\'t have "..enterArena.RC.." gp! Come back when you will be ready!") BYE() end else selfSay("You don\'t have "..enterArena.RLV.." level! Come back when you will be ready!") BYE() end else selfSay(Cancel[6]) BYE() end elseif TS == 1 and msgcontains(msg, 'no') then selfSay("Bye!") BYE() elseif msgcontains(msg, 'bye') then selfSay("Bye!") BYE() end return true end function onThink() doNpcSetCreatureFocus(focus) if (os.clock() - talk_start) > 10 then if focus > 0 then selfSay('Good bye then.') end focus = 0 end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Prontinho, sistema completamente configurado! Espero que façam bom proveito, esse é um ótimo script. Créditos: - TomCrusher (criação do sistema) - Matheus [EU] (arrumei os erros e modifiquei algumas coisas) Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  13. Forged postou uma resposta no tópico em Playground (Off-topic)
    parabéns seu fdp ta deixando de ser moça pra virar mulher
  14. VIP System by Mock 100% Fala galerinha do TK, então, há muito tempo atrás lá para meados de 2010 eu e alguns amigos pegamos um sistema de VIP inacabado pelo tão famoso scripter Mock e finalizamos ele deixando-o perfeito para uso, enfim, eu não achei esse script aqui no fórum e resolvi compartilhar com vocês, espero que gostem, confiram: 1° - Acesse a pasta data/lib e crie um arquivo chamado 049-vipsys.lua, coloque isso dentro do arquivo: vip = { name = "VIP System"; author = "Mock"; version = "1.0.0.0"; query="ALTER TABLE `accounts` ADD `vip_time` INTEGER"; query2="ALTER TABLE `accounts` ADD `vip_time` INT(15) NOT NULL" } function vip.setTable() dofile('config.lua') if sqlType == "sqlite" then db.executeQuery(vip.query) else db.executeQuery(vip.query2) end end function vip.getVip(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then error('Player don\'t find') end; ae = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..getPlayerAccount(cid).."';") if ae:getID() == -1 then return 0 end local retee = ae:getDataInt("vip_time") or 0 ae:free() return retee end function vip.getVipByAcc(acc) assert(acc,'Account is nil') local a = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';") if a:getID() ~= -1 then return a:getDataInt("vip_time") or 0, a:free() else error('Account don\'t find.') end end function vip.setVip(cid,time) dofile("config.lua") assert(tonumber(cid),'Parameter must be a number') assert(tonumber(time),'Parameter must be a number') if isPlayer(cid) == FALSE then error('Player don\'t find') end; db.executeQuery("UPDATE `"..sqlDatabase.."`.`accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='".. getPlayerAccount(cid).."';") end function vip.getVipByAccount(acc) assert(acc,'Account is nil') return db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';"):getDataInt("vip_time") or 0 end function vip.hasVip(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then return end; local t = vip.getVip(cid) or 0 if os.time(day) < t then return TRUE else return FALSE end end function vip.hasVips(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == FALSE then return end; local t = vip.getVip(cid) if os.time(day) < t then return TRUE else return FALSE end end function vip.accountHasVip(acc) assert(acc,'Account is nil') if os.time() < vip.getVipByAccount(acc) then return TRUE else return FALSE end end function vip.getDays(days) return (3600 * 24 * days) end function vip.addVipByAccount(acc,time) assert(acc,'Account is nil') assert(tonumber(time),'Parameter must be a number') local a = vip.getVipByAcc(acc) a = os.difftime(a,os.time()) if a < 0 then a = 0 end; a = a+time return vip.setVipByAccount(acc,a) end function vip.setVipByAccount(acc,time) dofile("config.lua") assert(acc,'Account is nil') assert(tonumber(time),'Parameter must be a number') db.executeQuery("UPDATE `accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='"..acc.."';") return TRUE end function vip.returnVipString(cid) assert(tonumber(cid),'Parameter must be a number') if isPlayer(cid) == TRUE then return os.date("%d %B %Y %X ", vip.getVip(cid)) end end 2° - Abra a pasta data/creaturescrpits/scripts e crie um arquivo chamado fimvip.lua, dentro dele adicione: By Lukeskywalker function onLogin(cid) local temple = { x =32369, y = 32246, z = 6} if vip.hasVip(cid) == true then if getPlayerStorageValue(cid,55555) ~= 1 then setPlayerStorageValue(cid,55555,1) end else if getPlayerStorageValue(cid,55555) == 1 then doTeleportThing(cid, temple) doPlayerSendTextMessage(cid, 22, "Your VIP Time over!") db.executeQuery("UPDATE `accounts` SET `vip_time` = 0 WHERE `id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") setPlayerPromotionLevel(cid, 1) setPlayerStorageValue(cid, 55555, 0) end end return true end Você pode troca as coordenadas do templo: local temple = {x=32369, y=32246, z=6}. 3° - Em data/creaturescripts/scripts/login.lua adicione essas tags: registerCreatureEvent(cid, "FimVip") registerCreatureEvent(cid, "VipReceive") 4° - Em data/creaturescripts/creaturescripts.xml adicione está tag: <event type="login" name="FimVip" event="script" value="fimvip.lua"/> 5º - Em data\movements\scripts e crie um arquivo chamado viptile.lua e adicione isso dentro dele: function onStepIn(cid, item, position, fromPosition) local tileConfig = { kickPos = fromPosition, kickEffect = CONST_ME_POFF, kickMsg = "You need to be a vip player to access this area.", enterMsg = "Welcome to vip area!", enterEffect = CONST_ME_MAGIC_RED, } if isPlayer(cid) == true then if vip.hasVip(cid) == FALSE then doTeleportThing(cid, tileConfig.kickPos) doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect) doPlayerSendCancel(cid, tileConfig.kickMsg) return end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tileConfig.enterMsg) doSendMagicEffect(position, tileConfig.enterEffect) return true end end 6° - Em data\movements\movements.xml adicione a tag: <movevent type="StepIn" actionid="13500" event="script" value="viptile.lua"/> Vejam a numeração 13500 você irá usar no tile que você quer para a passagem de player VIP para configurar adicione a numeração em ActionID do tile. 7° - Em data/talkactions/scripts acrescente dentro da pasta scripts uma outra pasta com o nome VIP vamos precisar de 7 arquivos.lua que teram os nomes e códigos a seguir: add.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, "Added "..param.." Vip Days.") return doPlayerAddVipDays(cid, param) end addvipp.lua function onSay(cid, words, param) if param == "" then return doPlayerPopupFYI(cid,"Está com problemas?\nAprenda os comandos!\n---------------\nAdicionar vip:\n/vip add days player\n/vip add 30 Real\n---------------\nDeletar vip:\n/vip del player\n/vip del Real\n---------------\nVer a vip:\n/vip see player\n/vip see Real\n---------------\n") end if param:lower():find('add') == 1 and 3 then local _,_,id,name = param:lower():find('add (%d+) (.+)') name = name or "" id = tonumber(id or 1) or 1 if tonumber(id) == nil or getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Adicionar vip:\n/vip add days player\n/vip add 30 Real\n [Player: "..name.."]") end if isPlayer(getPlayerByName(name)) == TRUE then vip.addVipByAccount(getPlayerAccount(getPlayerByName(name)) ,vip.getDays(id)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Foram adicionados "..tonumber(id).." dias de vip a "..name..".") doPlayerSendTextMessage(getPlayerByName(name),MESSAGE_INFO_DESCR,"Você recebeu "..tonumber(id).." dias de vip.") else doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,name.." não esta online ou não existe.") end elseif param:lower():find('del') == 1 and 3 then local _,_,name = param:lower():find('del (.+)') if getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Deletar vip:\n/vip del player\n/vip del Real\n") end vip.setVipByAccount(getPlayerAccount(getPlayerByName(name)),-os.time()) doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"A vip de "..name.." foi apagada.") elseif param:lower():find('see') == 1 and 3 then local _,_,name = param:lower():find('see (.+)') name = name or "" if getPlayerByName(name) == false then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Ver a vip:\n/vip see player\n/vip see Real\n") end local ret_ = vip.getVip(getPlayerByName(name)) if ret_ == 0 then return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,name.." Não tem vip, e nunca teve.") else return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A vip de "..name.." Acaba/terminou em "..os.date("%d %B %Y %X ",ret_)) end end return TRUE end get.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, ""..getPlayerVipDays(cid).." days VIP left.") end is.lua function onSay(cid, words, param, channel) if isPlayerVip(cid) == TRUE then doPlayerSendCancel(cid, "You are a VIP player.") else doPlayerSendCancel(cid, "You are not a VIP player.") end end removevip.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, "Vip removed.") return doPlayerRemoveVip(cid) end set.lua function onSay(cid, words, param, channel) doPlayerSendCancel(cid, "VIP Days: "..param..".") return setPlayerVipDays(cid, param) end vipdays.lua function onSay(cid, words, param) if vip.hasVip(cid) == TRUE then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your vip end in "..os.date("%d %B %Y %X ",vip.getVip(cid))) else if vip.getVip(cid) ~= 0 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You're not a vip player. Your vip has finished in "..os.date("%d %B %Y %X ", vip.getVip(cid)).." and now is "..os.date("%d %B %Y %X ", os.time())) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You're not a vip player. You naver has a vip.") end end return TRUE end 8° - Em data/talkactions/talkactions.xml adicione está tag: <!-- VIP System --> <talkaction log="yes" words="/vip" access="5" event="script" value="VIP/addvipp.lua" /> <talkaction words="!vipdays" event="script" value="VIP/vipdays.lua" /> 9° - Para finalizar execute este comando na sua database: ALTER TABLE `accounts` ADD `vip_time` INT NOT NULL; Bom galera este sistema vip adiciona os dias corretos e ao termino do VIP o player recebe a mensagem que a VIP acabou e é teletransportado para o templo. Créditos: Mock (por ter iniciado algo e não terminou) Lukeskywalker (Sistema de finalização perfeito do vip) Matheus [Eu] (Por ter feito várias alterações nas talkacions) Natan Beckman (Por ter ido atrás da conclusão 100% in game e php) Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!
  15. Bom galera no meu otserver uma vocaçao é mais editada que a outra é um server com xp 300 e fica 30 com estages queria saber se tem como balancear as vocaçoes?
  16. Forged postou uma resposta no tópico em Suporte Tibia OTServer
    Bom galera queria saber se tem como fazer 2 item que ao clicar em cada um vc ganha um tanto certo de experiencia bonus por um certo templo ex: 1 item : Bonus EXP Card 1 Da +100% de xp por 1 semana 2 item: Bonus EXP Card 2 Da 75% de xp por 1 semana Não sei se tem como ><
  17. Poo cara aruma esse link -----------'
  18. Cara se funcionar vai ser o rep mais feliz que qual quer pessoa ja te deu kk'
  19. Bom galera não sou muito bom em bolar as coisas então queria saber ja que nao existe um scripts de retorno do pagseguro que funcione 100% se alguém podece me dar uma dicas de como vender points e confirmar que foi pago usando o pagseguro
  20. Forged postou uma resposta no tópico em Suporte Tibia OTServer
    Só a vip
  21. Desculpa esta revivendo o topico mais esta dando esse erro e eu estou precisando muito desse script Erro 140 - A DESCRIÇÃO do item 1 não foi informada.
  22. Forged postou uma resposta no tópico em Suporte Tibia OTServer
    Bom galera os player do meu servidor estao comprando pontos mais na hora de por vip os pontos sao gastos e a vip nao chega tem como alguem me ajudar?
  23. Cara mais para isso ser feito não teria que ser editado o xml?,para aumentar a velocidade de atack a não ser que seja uma espada espesifica ai sim é possível .
  24. Bom cara até onde eu sei deve ser no minimo impossível kk'

Informação Importante

Confirmação de Termo