Postado Fevereiro 7, 2018 7 anos Olá a todos, Estive trabalhando em um OT 11.49 (sim, do malucoo) E está quase pronto, finalmente. O único problema é que eu não consigo fazer um cliente próprio da versão 11! Já vi todos os tutoriais disponíveis e nada. O que acontece de errado: Após editar o client via Notepad ++, eu abro ele, coloco meu account name e a senha, ele abre a seleção de char, mas ao tentar entrar no char: O client versão 10 funcionou perfeitamente! Só tive esse problema com o 11.49. Grato pela atenção. No aguardo de respostas.
Postado Fevereiro 9, 2018 7 anos Olá amigo, existem algumas etapas a fazer antes com o client 11. Não é apenas editar ele com o notepad++. Você precisa também usar um arquivo que vou detalhar abaixo: 1° Etapa: Você tem que possuir o arquivo login.php dentro do seu html (linux) ou www (windows) (caso não tenha copie esse abaixo no spoiler, crie um arquivo login.php e adicione o codigo dentro dele. depois coloque o arquivo dentro da pasta html ou www) Spoiler <?php require 'config/config.php'; // comment to show E_NOTICE [undefinied variable etc.], comment if you want make script and see all errors error_reporting(E_ALL ^ E_STRICT ^ E_NOTICE); // true = show sent queries and SQL queries status/status code/error message define('DEBUG_DATABASE', false); define('INITIALIZED', true); if (!defined('ONLY_PAGE')) define('ONLY_PAGE', true); // check if site is disabled/requires installation include_once('./system/load.loadCheck.php'); // fix user data, load config, enable class auto loader include_once('./system/load.init.php'); // DATABASE include_once('./system/load.database.php'); if (DEBUG_DATABASE) Website::getDBHandle()->setPrintQueries(true); // DATABASE END /*error example: { "errorCode":3, "errorMessage":"Account name or password is not correct." }*/ # Declare variables with array structure $characters = array(); $playerData = array(); $data = array(); $isCasting = false; # error function function sendError($msg){ $ret = array(); $ret["errorCode"] = 3; $ret["errorMessage"] = $msg; die(json_encode($ret)); } # getting infos $request = file_get_contents('php://input'); $result = json_decode($request, true); # account infos $accountName = $result["accountname"]; $password = $result["password"]; # game port $port = 7172; # check if player wanna see cast list if (strtolower($accountName) == "cast") $isCasting = true; if ($isCasting) { $casts = $SQL->query("SELECT `player_id` FROM `live_casts`")->fetchAll(); if (count($casts[0]) == 0) sendError("There is no live casts right now!"); foreach($casts as $cast) { $character = new Player(); $character->load($cast['player_id']); if ($character->isLoaded()) { $char = array("worldid" => 0, "name" => $character->getName(), "ismale" => (($character->getSex() == 1) ? true : false), "tutorial" => false); $characters[] = $char; } } $port = 7173; $lastLogin = 0; $premiumAccount = true; $timePremium = 0; } else { $account = new Account(); $account->find($accountName); if (!$account->isLoaded()) sendError("Failed to get account. Try again!"); if ($account->getPassword() != Website::encryptPassword($password)) sendError("The password for this account is wrong. Try again!"); foreach($account->getPlayersList() as $character) { $char = array("worldid" => 0, "name" => $character->getName(), "ismale" => (($character->getSex() == 1) ? true : false), "tutorial" => false); $characters[] = $char; } $lastLogin = $account->getLastLogin(); $premiumAccount = ($account->isPremium()) ? true : false; $timePremium = time() + ($account->getPremDays() * 86400); } $session = array( "fpstracking" => false, "isreturner" => true, "returnernotification" => false, "showrewardnews" => false, "sessionkey" => $accountName . "\n" . $password, "lastlogintime" => $lastLogin, "ispremium" => $premiumAccount, "premiumuntil" => $timePremium, "status" => "active" ); $world = array( "id" => 0, "name" => $config['server']['serverName'], "externaladdress" => $config['server']['ip'], "externalport" => $port, "previewstate" => 0, "location" => "BRA", "anticheatprotection" => false ); //Survey by: Cjaker $survey = array( "id" => rand(0, 999999), "invitationtext" => "Querido tibiano, obrigado por usar OTX, a base mais atualizada do Tibia Global.\n'Mensagem dita por Cjaker'.", "invitationtoken" => "1751f1beddf001e1d36dee78ace974", "endtimestamp" => 1510614000 ); // https://limesurvey.cipsoft.com/index.php/survey/index/sid/527875/lang-en?token=1751f1beddf001e1d36dee78ace974 // token=invitationtoken // o endtimestamp acima é o tempo convertido em unix timestamp, onde o mesmo é o prazo que irá acabar o survey! $worlds = array($world); $data["session"] = $session; $playerData["worlds"] = $worlds; $playerData["characters"] = $characters; $data["playdata"] = $playerData; $data["survey"] = $survey; echo json_encode($data); 2° Etapa: Você vai abrir o CLIENT 11 com o NOTEPAD++ Vai da um CTRL + H e em LOCALIZAR você coloca BC27F992A96B8E2A43F4DFBE1CEF8FD51CF43D2803EE34FBBD8634D8B4FA32F7D9D9E159978DD29156D62F4153E9C5914263FC4986797E12245C1A6C4531EFE48A6F7C2EFFFFF18F2C9E1C504031F3E4A2C788EE96618FFFCEC2C3E5BFAFAF743B3FC7A872EE60A52C29AA688BDAF8692305312882F1F66EE9D8AEB7F84B1949 Em SUBSTITUIR POR você coloca 9B646903B45B07AC956568D87353BD7165139DD7940703B03E6DD079399661B4A837AA60561D7CCB9452FA0080594909882AB5BCA58A1A1B35F8B1059B72B1212611C6152AD3DBB3CFBEE7ADC142A75D3D75971509C321C5C24A5BD51FD460F01B4E15BEB0DE1930528A5D3F15C1E3CBF5C401D6777E10ACAAB33DBE8D5B7FF5 Pronto, você acabou de trocar a RSA KEY Agora vamos mudar o endereço de login do Client 11. Obs.: Tenha em mente que o numero de CARACTERES que tem no client tem que permanecer (53), caso o seu não possua a mesma quantidade você vai preencher com NULL conforme abaixo: Dê um CTRL + L e procure por: https://secure.tibia.com/services/clientservices.php Essa Linha tem 53 caracteres! Logo, caso o seu nao possua a mesma quantidade você terá que incluir alguns NULLs vamos usar como exemplo o ip localhost 127.0.0.1 e vamos substituir o site do tibia por: http://127.0.0.1/login.php Ao substituir essa linha, observe que só tem 27 caracteres, ou seja, tem 26 caracteres a menos do que a linha original. Dessa forma teremos que adicionar 26 caracteres NULL Para adicionar vá em Plugins>Converter>Conversion Painel Na linha 19243 você irá começar a adicionar os NULLS Nessa situação, iremos adicionar 26 caracteres Após adicionar os caracteres, salve o arquivo e ele vai entrar tranquilamente no seu servidor xD espero ter ajudado. Caso queira utilizar o client que usei nesse tutorial baixe através do link abaixo. (com os dados originais do tibia) Client Tibia 11.49.5884
Postado Fevereiro 9, 2018 7 anos Autor 1 hora atrás, TioSlash disse: Olá amigo, existem algumas etapas a fazer antes com o client 11. Não é apenas editar ele com o notepad++. Você precisa também usar um arquivo que vou detalhar abaixo: 1° Etapa: Você tem que possuir o arquivo login.php dentro do seu html (linux) ou www (windows) (caso não tenha copie esse abaixo no spoiler, crie um arquivo login.php e adicione o codigo dentro dele. depois coloque o arquivo dentro da pasta html ou www) Mostrar conteúdo oculto <?php require 'config/config.php'; // comment to show E_NOTICE [undefinied variable etc.], comment if you want make script and see all errors error_reporting(E_ALL ^ E_STRICT ^ E_NOTICE); // true = show sent queries and SQL queries status/status code/error message define('DEBUG_DATABASE', false); define('INITIALIZED', true); if (!defined('ONLY_PAGE')) define('ONLY_PAGE', true); // check if site is disabled/requires installation include_once('./system/load.loadCheck.php'); // fix user data, load config, enable class auto loader include_once('./system/load.init.php'); // DATABASE include_once('./system/load.database.php'); if (DEBUG_DATABASE) Website::getDBHandle()->setPrintQueries(true); // DATABASE END /*error example: { "errorCode":3, "errorMessage":"Account name or password is not correct." }*/ # Declare variables with array structure $characters = array(); $playerData = array(); $data = array(); $isCasting = false; # error function function sendError($msg){ $ret = array(); $ret["errorCode"] = 3; $ret["errorMessage"] = $msg; die(json_encode($ret)); } # getting infos $request = file_get_contents('php://input'); $result = json_decode($request, true); # account infos $accountName = $result["accountname"]; $password = $result["password"]; # game port $port = 7172; # check if player wanna see cast list if (strtolower($accountName) == "cast") $isCasting = true; if ($isCasting) { $casts = $SQL->query("SELECT `player_id` FROM `live_casts`")->fetchAll(); if (count($casts[0]) == 0) sendError("There is no live casts right now!"); foreach($casts as $cast) { $character = new Player(); $character->load($cast['player_id']); if ($character->isLoaded()) { $char = array("worldid" => 0, "name" => $character->getName(), "ismale" => (($character->getSex() == 1) ? true : false), "tutorial" => false); $characters[] = $char; } } $port = 7173; $lastLogin = 0; $premiumAccount = true; $timePremium = 0; } else { $account = new Account(); $account->find($accountName); if (!$account->isLoaded()) sendError("Failed to get account. Try again!"); if ($account->getPassword() != Website::encryptPassword($password)) sendError("The password for this account is wrong. Try again!"); foreach($account->getPlayersList() as $character) { $char = array("worldid" => 0, "name" => $character->getName(), "ismale" => (($character->getSex() == 1) ? true : false), "tutorial" => false); $characters[] = $char; } $lastLogin = $account->getLastLogin(); $premiumAccount = ($account->isPremium()) ? true : false; $timePremium = time() + ($account->getPremDays() * 86400); } $session = array( "fpstracking" => false, "isreturner" => true, "returnernotification" => false, "showrewardnews" => false, "sessionkey" => $accountName . "\n" . $password, "lastlogintime" => $lastLogin, "ispremium" => $premiumAccount, "premiumuntil" => $timePremium, "status" => "active" ); $world = array( "id" => 0, "name" => $config['server']['serverName'], "externaladdress" => $config['server']['ip'], "externalport" => $port, "previewstate" => 0, "location" => "BRA", "anticheatprotection" => false ); //Survey by: Cjaker $survey = array( "id" => rand(0, 999999), "invitationtext" => "Querido tibiano, obrigado por usar OTX, a base mais atualizada do Tibia Global.\n'Mensagem dita por Cjaker'.", "invitationtoken" => "1751f1beddf001e1d36dee78ace974", "endtimestamp" => 1510614000 ); // https://limesurvey.cipsoft.com/index.php/survey/index/sid/527875/lang-en?token=1751f1beddf001e1d36dee78ace974 // token=invitationtoken // o endtimestamp acima é o tempo convertido em unix timestamp, onde o mesmo é o prazo que irá acabar o survey! $worlds = array($world); $data["session"] = $session; $playerData["worlds"] = $worlds; $playerData["characters"] = $characters; $data["playdata"] = $playerData; $data["survey"] = $survey; echo json_encode($data); 2° Etapa: Você vai abrir o CLIENT 11 com o NOTEPAD++ Vai da um CTRL + H e em LOCALIZAR você coloca BC27F992A96B8E2A43F4DFBE1CEF8FD51CF43D2803EE34FBBD8634D8B4FA32F7D9D9E159978DD29156D62F4153E9C5914263FC4986797E12245C1A6C4531EFE48A6F7C2EFFFFF18F2C9E1C504031F3E4A2C788EE96618FFFCEC2C3E5BFAFAF743B3FC7A872EE60A52C29AA688BDAF8692305312882F1F66EE9D8AEB7F84B1949 Em SUBSTITUIR POR você coloca 9B646903B45B07AC956568D87353BD7165139DD7940703B03E6DD079399661B4A837AA60561D7CCB9452FA0080594909882AB5BCA58A1A1B35F8B1059B72B1212611C6152AD3DBB3CFBEE7ADC142A75D3D75971509C321C5C24A5BD51FD460F01B4E15BEB0DE1930528A5D3F15C1E3CBF5C401D6777E10ACAAB33DBE8D5B7FF5 Pronto, você acabou de trocar a RSA KEY Agora vamos mudar o endereço de login do Client 11. Obs.: Tenha em mente que o numero de CARACTERES que tem no client tem que permanecer (53), caso o seu não possua a mesma quantidade você vai preencher com NULL conforme abaixo: Dê um CTRL + L e procure por: https://secure.tibia.com/services/clientservices.php Essa Linha tem 53 caracteres! Logo, caso o seu nao possua a mesma quantidade você terá que incluir alguns NULLs vamos usar como exemplo o ip localhost 127.0.0.1 e vamos substituir o site do tibia por: http://127.0.0.1/login.php Ao substituir essa linha, observe que só tem 27 caracteres, ou seja, tem 26 caracteres a menos do que a linha original. Dessa forma teremos que adicionar 26 caracteres NULL Para adicionar vá em Plugins>Converter>Conversion Painel Na linha 19243 você irá começar a adicionar os NULLS Nessa situação, iremos adicionar 26 caracteres Após adicionar os caracteres, salve o arquivo e ele vai entrar tranquilamente no seu servidor xD espero ter ajudado. Caso queira utilizar o client que usei nesse tutorial baixe através do link abaixo. (com os dados originais do tibia) Client Tibia 11.49.5884 Muito obrigado por responder! Eu já fiz todos os passos acima, o meu website tem o login.php. O client está conectando com o servidor, consigo acessar a conta, mas não consigo acessar o char! O que será que está acontecendo?
Postado Março 12, 2018 7 anos Amigo voce conseguiu resolver? pois estou com o mesmo problema que voce.
Postado Março 17, 2018 7 anos Em 09/02/2018 em 13:07, joaotmed disse: Muito obrigado por responder! Eu já fiz todos os passos acima, o meu website tem o login.php. O client está conectando com o servidor, consigo acessar a conta, mas não consigo acessar o char! O que será que está acontecendo? mesmo problema
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.