Líderes
-
Makhai Drakon
MembroPontos154Total de itens -
-
Natanael Beckman
MembroPontos574Total de itens -
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 12/02/17 em todas áreas
-
DEV C++ Compilando TFS no Windows
DEV C++ Compilando TFS no Windows
Gabriel485 reagiu a Natanael Beckman por uma resposta no tópico
1 pontoDEV C++, aprenda a compila uma source TFS! Downloads(Baixe de acordo as configurações do seu windows): DEV C++ CONFIGURADO PARA 32BITS DEV C++ CONFIGURADO PARA 64BITS REV 3884 TFS 0.4 Certo, feitos os downloads, extrai DEV C++ no Disco C e REV 3884 em Documentos. ====================================== Abra o DEV C++: ====================================== ====================================== Abra a Source: ====================================== ====================================== Localize a pasta da Source e abra o arquivo TheForgottenServer.dev, Documentos> trunk.r3884> dev-cpp> TheForgottenServer.dev: ====================================== ============================================================= ====================================== Aguarde carregar todos os arquivos: ====================================== ====================================== Vamos adicionar o parâmetro -D__CONSOLE__ no teclado digita ALT + P, clique em parameters e adicione o parâmetro... Feito? clique em OK: ====================================== ====================================== Vamos compilar Source, no teclado digite CTRL+F9 e aguarde finalizar o processo: ====================================== ====================================== Se der tudo certo em Log vai estar como mostra a imagem abaixo: ====================================== ====================================== Verifique na pasta Documentos> trunk.r3884> dev-cpp você vai encontrar o arquivo TheForgottenServer.exe e pronto meu parabéns você compilou! ====================================== =========================================== Só isso galera tutorial rápido resumido e útil! Créditos Natanael Beckman! =========================================== Caso você adquira uma source com apenas os arquivos .cpp e .h e não sabe como compilar o projeto, abaixo vamos explicar: Na pasta onde está localizado os arquivos .cpp e .h crie uma pasta chamada dev-cpp, e dentro dela adicione uma imagem icone. Abra o DEV-C++, clique em File> New> Project: Logo em seguida selecione Empty Project, em name terá o nome Project1 altere utilize o nome quer quiser, após isso clique em OK e em seguida selecione a pasta dev-cpp que criamos: Agora selecione a opção Win32GUI caso use source OTX ou TFS selecione Win32Console ao lado << Browse selecione a imagem do icone que está na pasta Dev-Cpp. No mesmo menu na aba Parameters em C++ compiler adicione os seguintes parâmetros: -D__ENABLE_SERVER_DIAGNOSTIC__ -D__ROOT_PERMISSION__ -D__GROUND_CACHE__ -D__USE_SQLITE__ -D__USE_MYSQL__ -D__CONSOLE__ -D__WAR_SYSTEM__ E em Linker adicione as seguintes libs: -lboost_filesystem -lboost_thread -lboost_system -lboost_regex -lsqlite3 -lwsock32 -llua5.1 -lws2_32 -leay32 -lmysql -lxml2 -lgmp -lz -s No mesmo Menu na aba Build Option escreva na segunda coluna horizontal escreva Obj e dê OK. Na lateral terá o nome do seu projeto o meu no caso é The Forgotten Server, clique com o botão direito do mouse em cima do nome e clique na opção Add Project: Selecione na pasta da sua source todos os arquivos .cpp e .h após isso salva o projeto e já pode compilar CTRL+F9: OpenSSL 0.9.8 1º baixe http://devpaks.org/details.php?devpak=73 2° abra Dev-Cpp > Tools > Packager Manager > Install > Seleciona o arquivo baixado e instala, fecha abre e testa! Clica aqui \/1 ponto -
Layout Avatar Online
Layout Avatar Online
Summ reagiu a luanluciano93 por uma resposta no tópico
1 pontoEai pessoal, to fazendo aqui um layout pra um amigo .. o que acharam? LOGIN: ACCOUNT: RANK: FÓRUM: DONATE: Críticas plx!1 ponto -
[Pagseguro Automático] 100% e com Double Points OPCIONAL
Fala linduxos do TK, hoje vim trazer para vocês um sistema que venho modificando a algum tempo. O Sistema de pagseguro automático, ao longo do script ensinarei perfeitamente como instalar/configurar. Lembrando que uso esse sistema em um servidor meu e está 100% entregando os pontos no mesmo instante, adicionei a opção de entregar pontos dobrados, para promoção double points acima de X valor. Vá em sua pasta www ou htocs/config abra o arquivo config.php e procure por: $config['site']['layout'] = ... embaixo disto adicione o seguinte: // Pagseguro Automático by Absolute on Luminera // 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'; Simples explicação sobre este passo: em SEU E-MAIL DO PAGSEGURO basta colocar o seu e-mail do pagseguro, ficando como exemplo: $config['pagseguro']['email'] = 'absolute@tibiaking.com'; (não mexa em mais nada) Próximo passo: Agora vá na sua pasta www ou htocs e crie um arquivo chamado pagseguro_retorno.php (Extensão PHP formato de página PHP), dentro do pagseguro_retorno.php adicione: <?PHP $host = "localhost"; /* HOST */ $user = "root"; /* USER */ $passwd = "SENHADOPHPMYADMIN"; /* PASSWORD */ $db = "NOMEDADATABASE"; /* DB */ ############################################################## # CONFIGURAÇÕES ############################################################## $retorno_token = 'SEUTOKENPAGSEGURO'; // Token gerado pelo PagSeguro 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 } ############################################################### # ATENÇÃO TIBIAKING NÃO ALTERE DESTA LINHA PARA BAIXO OK? Absolute Agradeçe hihi # $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 ($NumItens >= 5) { $pontosadd = $NumItens * 2; } else { $pontosadd = $NumItens; } if ($StatusTransacao == "Aprovado") { mysql_query("UPDATE accounts SET premium_points = premium_points + '$pontosadd' 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> Explicação de configuração deste passo: Coloque a senha que você usa para entrar no phpmyadmin aqui: $passwd = "SENHADOPHPMYADMIN"; /* PASSWORD */ Exemplo de como ficaria: $passwd = "absolute123"; /* PASSWORD */ Coloque aqui o nome que está seu banco de dados (o mesmo que vai no config.lua, onde salva os characters, contas e cia): $db = "NOMEDADATABASE"; /* DB */ ; Exemplo de como ficaria: $db = "otserver"; /* DB */ IMPORTANTE, TOKEN Pagseguro! Você irá entrar neste link, aparecerá uma página pedindo para colocar a url de retorno, no entanto você colocará o seu site terminado em /pagseguro_retorno.php, exemplo de link para colocar: http://otglobal.com/pagseguro_retorno.php (LEMBRANDO QUE É APENAS UM EXEMPLO, SERÁ SEUSITE.COM/pagseguro_retorno.php, como na imagem a seguir: Pós verificar a seleção do "Ativar" e o link correto clique em Salvar. Agora descendo um pouco esta página onde terá a opção a cima terá uma opção como a imagem a seguir: Clique em GERAR, você receberá o seu código token e coloque no script que estará na sua pasta www ou htocs, mude na linha: $retorno_token = 'SEUTOKENPAGSEGURO'; // Token gerado pelo PagSeguro EM SEUTOKENPAGSEGURO coloque o TOKEN que você acabou de pegar, será vários números e letras, exemplo de como ficaria: $retorno_token = 'AE89464AE8145487484PAEA978E91'; // Token gerado pelo PagSeguro DOUBLE POINTS EXPLICAÇÃO: Neste mesmo script há algumas linhas com a seuginte função: if ($NumItens >= 5) { $pontosadd = $NumItens * 2; Isto quer dizer, > 5 (A cima de 5 pontos, receba: NumItens * 2, receba em 2x PONTOS EM DOBRO!) Para alterar o valor a cima que a pessoa receberá em dobro: NumItens >= 5) 5 pontos ou mais a pessoa receberá em dobro, caso seja para qualquer valor, troque o 5 pelo 1. Caso não deseje DOUBLE POINTS e sim 50% do valor em pontos, exemplo: 10R$ = 15 Pontos, altere para: $pontosadd = $NumItens * 1.5; Caso não deseje promoção e queira que seja 1 Real = 1 Ponto: $pontosadd = $NumItens * 1; Próximo passo: Calma gente, está quase acabando eu prometo, então abra o seu PHPMYADMIN, localhost/phpmyadmin ou seusite.com/phpmyadmin, exemplo: www.absolutewar.com/phpmyadmin ; absoluteot.servegame.com/phpmyadmin, clique na opção SQL do phpmyadmin (como mostrarei na imagem e de executar. Código a inserir no "espaço": CREATE TABLE `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, `status` tinyint(1) unsigned NOT NULL default '0', UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`), KEY `Referencia` (`Referencia`), KEY `status` (`status`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Pós executar irá aparecer uma mensagem que o código foi aceito e uma tabela nova foi criada, como na imagem a seguir: Agora por fim o ÚLTIMO PASSO Novamente na pasta www ou htdocs substitua o seu arquivo donate.php por este: <?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 .= '<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¹:</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. Você pdoerá acessar o shop offer e desfrutar dos melhores items do servidor! <?php } ?>'; } ?> Pronto galera tão fácil né? agora vocês poderão pegar seu guarda sol, sua água de coco e sentar na sua cadeira de praia enquanto o script entregará os pontos automáticamente em menos de 1 minuto. Espero ter ajudado, quaisquer dúvidas podem solicitar no tópico ou até mesmo me mandar uma mensagem privado que estarei disposto a ajuda-los. Créditos: Absolute (EU) Matheus Sesso pela página donate.php Nos vemos na próxima! Enjoy.1 ponto
-
[8.54] tfs 0.3.6 Barra de vida e mana por porcentagem %%
[8.54] tfs 0.3.6 Barra de vida e mana por porcentagem %%
L3K0T reagiu a Wesley Alexandre2014 por uma resposta no tópico
1 pontoFala galerinha Vim aqui trazer pra vocês um negocio bem simples, Mais creio que vai ser bem útil pra quem usa tfs 0.3.6, Bom oque isso faz ?, Ao invés da sua barra de vida e mana ficar com aqueles números gigantes, Vai ficar por porcentagem %%, independente do level do personagem vai ficar 100/100 % MAX, Então vamos lá vocês vão ter que ter as souces que você usa em seu servidor, Abra elas com Deve C++, Agora vá em protocolgame.cpp, Em seguida: PROCURE POR: msg->AddU16(player->getHealth()); AGORA SUBSTITUA POR: msg->AddU16((uint16_t)std::ceil(player->getHealth() * 100 / player->getPlayerInfo(PLAYERINFO_MAXHEALTH))); NO MESMO ARQUIVO PROCURE POR: msg->AddU16(player->getPlayerInfo(PLAYERINFO_MAXHEALTH)); SUBSTITUA POR: msg->AddU16((uint16_t)100); PROCURE POR: msg->AddU16(player->getPlayerInfo(PLAYERINFO_MANA)); SUBSTITUA POR: msg->AddU16((uint16_t)std::ceil(player->getMana() * 100 / player->getPlayerInfo(PLAYERINFO_MAXMANA))); POR ULTIMO NO MESMO ARQUIVO PROCURE POR: msg->AddU16(player->getPlayerInfo(PLAYERINFO_MAXMANA)); AGORA SUBSTITUA POR: msg->AddU16((uint16_t)100); Simples né ?, Agora só salvar e compilar!, Então é isso pessoal, Eu decidi postar isso aqui porque um dia procurei muito e não achei aqui pelo TK, Para versão 0.3.6, Então espero que esse simples tutorial ajude muita gente (...), FLLW's OBS: Se estiver na área errada peço desculpas, É peço que algum moderador movam pra área correta pls.1 ponto -
[Windows] Compilando Sources OTClient - VS2015
[Windows][VS2015] Compilando Sources OTClient Tutorial explicando como compilar as Sources do OTClient com o Visual Studio 2015. 1 - Downloads Necessários - Visual Studio 2015 Update 3: http://my.visualstudio.com/Downloads?pid=2086 - Microsoft Visual C++ 2015 Redistributable:https://www.microsoft.com/pt-br/download/details.aspx?id=48145 - OTClient SDK 1.0 (Bibliotecas): https://github.com/conde2/otclient-sdk - Bibliotecas Boost C++ 1.63.0: https://sourceforge.net/projects/boost/files/boost-binaries/1.63.0/boost_1_63_0-msvc-14.0-32.exe/download 2 - Instale os softwares necessários - Instale o Visual Studio 2015. - Instale as bibliotecas Boost C++ 1.63.0. 3 - OTClient SDK 1.0 - Extraia os arquivos do OTClient SDK 1.0. - Antes de rodar o arquivo "register_otclient_sdk_env.bat", clique com botão direito nele e em Editar. - Você encontrará escrito assim: setx OTCLIENTSDKDir %CD% - Você deverá colocar as "" (aspas duplas) em %CD% e adicionar "pause" no final (lembre-se de salvar o arquivo). - Ficando assim: setx OTCLIENTSDKDir "%CD%" pause - Rode o arquivo e ele irá abrir uma janela cmd informando com sucesso o valor salvo. Obs: fazendo isso, você não precisará adicionar as bibliotecas manualmente. 4 - Boost C++ 1.63.0 - Mova o arquivo "register_otclient_boost_env.bat" que está na pasta do OTClient SDK 1.0/boost 1_63_0) para o diretório onde foi instalado o Boost C++ 1.63.0 (Exemplo: C:\local\boost_1_63_0) - Antes de rodar o arquivo "register_otclient_boost_env.bat", clique com botão direito nele e em Editar. - Você encontrará escrito assim: setx BOOST_ROOT_OTCLIENT %CD% - Você deverá colocar as "" (aspas duplas) em %CD% e adicionar "pause" no final (lembre-se de salvar o arquivo). - Ficando assim: setx BOOST_ROOT_OTCLIENT "%CD%" pause - Rode o arquivo e ele irá abrir uma janela cmd informando com sucesso o valor salvo. Obs: fazendo isso, você não precisará adicionar as bibliotecas manualmente. 5 - Sources OTClient - Se você tem o cliente Git instalado, pode utilizar esse comando para fazer download das sources: git clone https://github.com/edubart/otclient.git - Se você não tem o cliente Git instalado, pode fazer o download das sources em: https://github.com/edubart/otclient/archive/master.zip 6 - Compilando as Sources do OTClient - Encontre o diretório vc14 do OTClient e abra o arquivo otclient.sln. Isso irá abrir o Visual Studio e você estará apto a compilar as sources. - No Visual Studio, escolha Release e a solução "Win32". - Para compilar as sources, clica em Build no menu e depois em Build Solution. - As sources serão compiladas com sucesso. 7 - Abrindo o OTClient - Copie as DLLs glew32.dll (bin > x86), zlib.dll (bin > x86) e openal32.dll (bin > x86) da pasta OTClient SDK 1.0 para a pasta do executável do OTClient. - OTClient será aberto com sucesso! 8 - Créditos edubart:https://github.com/edubart/otclient/wiki/Compiling-on-Windows Ninja:https://otland.net/threads/windows-how-to-set-path-environment-variables-for-tfs-1-0.207359/ Tradução, Modificações e Testes - Majesty1 ponto
-
PUO - OPEN BETA COMEÇOU!
PUO - OPEN BETA COMEÇOU!
luanluciano93 reagiu a Neophyte por uma resposta no tópico
1 pontoOlá, pessoal! O OPEN BETA COMEÇOU! Acesse: www.pokeuniverseonline.com.br Há 3 anos e meio, eu e mais alguns amigos da comunidade de Open Tibia, começamos a desenvolver um novo jogo a partir da manjada base de poketibia por aí. No fim, decidimos nós mesmos construir quase do 0 um novo jogo com base em uma versão estável do TFS. Nós jogamos muito pouco diversos poketibias famosos. Sempre haviam coisas que nos incomodavam profundamente, não só graficamente (estilo heterogêneo de topdown com 45 gruas), mas a jogabilidade em si. Criamos então o Poke Universe Online, mais conhecido como PUO. A equipe passou por diversas transformações nesses anos de desenvolvimento do projeto. Tivemos crises e dias em que todos queriam jogar tudo para o alto. Enfretamos as turbulências, desconectamos e conectamos com pessoas diferentes que nos ajudaram e tentaram nos atrapalhar. Seguimos sempre em frente, aprendendo com nossos erros. Começamos com 3 e hoje somos em 9 (aumentando conforme demanda). Cada um com sua função e desenvolvendo o PUO em paralelo aos estudos, trabalhos, relacionamentos. Talvez o maior de desafio de sempre vêm sendo ajustar a nossa vida para semanalmente dedicarmos horas trabalhando nesse jogo. Precisamos, nesse tempo, adaptar e desenvolver muitas coisas. O primeiro real problema que enfretamos foi um jogo de turno ser transformado em um MMORPG. Sempre foi pensado no CORE de batalhas entre Pokémons. Essa é a real diversão do jogo, mas não deixamos de criar uma história inovadora, nunca vista no mundo de Pokémon, misturando inclusive pontos do primeiro e clássico Pokémon com as novas tramas encantadores de Pokémon Ultra Sun e Moon. Não utilizamos nenhuma inspiração de outros servidores famosos, tentamos ser originais em tudo. Se algumas ideias convergir, de fato foi porque ouvimos muito nossos testers e desenvolvemos um jogo baseado em feedbacks.1 ponto -
[PEDIDO] NPC
[PEDIDO] NPC
mostps reagiu a Makhai Drakon por uma resposta no tópico
1 ponto@mostps Esse era o script do meu server, eu dei uma editada nele pra você, mas eu não testei! Captain.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="Captain" script="Captain.lua" walkinterval="3000" floorchange="0" access="5" level="100" maglevel="1"> <health now="15" max="15"/> <look type="335" head="114" body="7" legs="7" feet="7" addons="2"/> <parameters> <parameter key="message_greet" value="Welcome |PLAYERNAME|, you want some {quest}?"/> </parameters> </npc> Captain.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 PArea(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end local function backp() doTeleportThing(cid, parameters.exit) end if parameters.premium == false and not isPremium(cid) then npcHandler:say('Sorry, you need to be premium account!', cid) return true elseif doPlayerRemoveMoney(cid, parameters.price) == FALSE then npcHandler:say('Sorry, you dont have enought money!', cid) return true end doPlayerSendTextMessage(cid,22,'Good Luck!.') doTeleportThing(cid, parameters.enter) addEvent(backp, parameters.minutes*60*1000) npcHandler:resetNpc() return true end local node1 = keywordHandler:addKeyword({'quest'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Nessa {quest} possui monstros muito fortes você esta pronto para enfrenta-los?? Mais antes guarde suas pokebolas no DP....ah você so tem 60 minutos de tempo para realizar essa quest!!!!'}) node1:addChildKeyword({'yes'}, PArea, {premium = no, price = 0, enter = {x=1235, y=630, z=8}, exit = {x=1235, y=630, z=8}, minutes = 60}) node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Ok, then.', reset = true}) npcHandler:addModule(FocusModule:new())1 ponto -
(Resolvido)[PEDIDO] Npc troca item por item e da storage
(Resolvido)[PEDIDO] Npc troca item por item e da storage
Christinacsa reagiu a Wakon por uma resposta no tópico
1 ponto@Christinacsa, testa ai: local cfg = { need_item = {5785, 10}, reward_item = {13506, 1}, storage = 40531, } 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 local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local msg = msg:lower() if msgcontains(msg, 'kefla') then if getPlayerStorageValue(cid, cfg.storage) < 1 then if doPlayerRemoveItem(cid, cfg.need_item[1], cfg.need_item[2]) then doPlayerAddItem(cid, cfg.reward_item[1], cfg.reward_item[2]) selfSay('You just swap '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..' for '.. cfg.reward_item[2] ..' '.. getItemNameById(cfg.reward_item[1]) ..'.', cid) setPlayerStorageValue(cid, cfg.storage, 1) else selfSay('You need '.. cfg.need_item[2] ..' '.. getItemNameById(cfg.need_item[1]) ..'.', cid) end else selfSay('...', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())1 ponto -
(Resolvido)Portas Do Roteador, DMZ??
Para Abrir Qualquer Porta Da Sua Rede Realmente Só Basta Colocar O IP Do Seu Roteador Na Url Do Seu Navegador, Veja: Seu IP Pode Ser Encontrado Atras Do Seu Roteador Wifi, Ou Modem De Internet... Porem A Partir Dai Cada Tipo De Internet E Operadora Tem Diferenças Nas Configuraçoes, Vou Dar Exemplo Com A Minha Da Vivo Fibra: Login E Senha Tambem Encontrados Atras Ou Em Baixo Do Roteador ( Letras Pequenas) Se Nao Tiver Ligue Para Quem Lhe Proporciona A Internet E Peça Essas Informaçoes!1 ponto
-
Npc Que troca X item Por outro item
Em 2146 é o ID do item que o player precisa em 500 e 499 ( 500 E 499 SÃO A QUANTIDADE DO ITEM QUE O PLAYER PRECISA! Em 13485 é o id do item que o player ira ganhar! ... Dialogo - Aqui voce muda para oque o player falara depois de HI if msgcontains(msg, "vegetto") then1 ponto
-
Iniciando na área de sprit
Iniciando na área de sprit
edumasterrrr reagiu a Martim Tiburcio por uma resposta no tópico
1 pontoOlá, estou começando nessa área de sprits e gostaria de mostrar alguns trabalhos em que eu venho treinando, gostaria de saber a opinião de vocês em pontos que eu deva melhorar, obrigado.1 ponto -
Iniciando na área de sprit
Iniciando na área de sprit
edumasterrrr reagiu a KotZletY por uma resposta no tópico
1 ponto@Martim Tiburcio foda botando pra fuder. Tóp cara, bom, desenhar você já sabia, colocar em prática em uma sprite era só questão de tempo. kkkkkkkkkkkkkk Parabéns cara, e me desculpe o termo. Segura meu like ae!! xD1 ponto -
Zelettar Soft (Tibia 6.0)
Zelettar Soft (Tibia 6.0)
PortgasJhon reagiu a RogerioSantos por uma resposta no tópico
1 pontoConsegui esse OT6.4 https://master.dl.sourceforge.net/project/tosserver/releaseV38.7z esta funcionando. abri o tibia pela VM no windows XP.1 ponto -
Dream Backpack
Dream Backpack
Ryukiimaru reagiu a santomoklucas por uma resposta no tópico
1 pontoHistoria do item criado por mim um aventureiro Acabou guardando os loots supostamente dropados do boss gaz`Haragoth, A dream matter junto com o olho do sight of Surrender que avia dropado muito antes e botado em sua backpack, e isso acabou fazendo com que sua backpack magicamente fundisse com os tais itens !! ++ = >>>> <<<< espero que gostem e me digam ideias para mais criações :D notas e criticas ?1 ponto -
Paralyze Rune Sem Cura
Paralyze Rune Sem Cura
zgredek232 reagiu a icaro2507 por uma resposta no tópico
1 pontoBoa tarde! Gostaria de saber como eu faço para que a Paralyze Rune não cure com Spells( utani gran hur) PARALYZE.LUA local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 20000) setConditionFormula(condition, -0.9, 0, -0.9, 0) setCombatCondition(combat, condition) function onCastSpell(cid, var) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN) return doCombat(cid, combat, var) end STRONGHASTE.LUA local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_TICKS, 22000) setConditionFormula(condition, 0.7, -56, 0.7, -56) setCombatCondition(combat, condition) function onCastSpell(cid, var) if isPlayer(cid) == TRUE then if exhaustion.check(cid, 30030) then return FALSE else return doRemoveCondition(cid, CONDITION_HASTE), doCombat(cid, combat, var) end else return doRemoveCondition(cid, CONDITION_HASTE), doCombat(cid, combat, var) end return doCombat(cid, combat, var) end1 ponto -
[Pedido] Level System Poketibia
[Pedido] Level System Poketibia
NyckDragon reagiu a Noob II por uma resposta no tópico
1 pontoOlha ai >1 ponto -
RSA Decrypt
0 pontosIsto é um pacote RSA da source, dependendo da conexão ele rejeita ping, no entanto não interfere no jogo, fique tranquilo.0 pontos