Created
April 3, 2023 03:17
-
-
Save RafaelClaumann/6c3af8d3b4adab9fbaaf6cf7cf6e5034 to your computer and use it in GitHub Desktop.
simple login.php for otserv 12x
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // https://github.com/otsoft/myaac | |
| // https://github.com/opentibiabr/canary | |
| // https://github.com/dudantas/tibia-client/releases/tag/12.91.12329 | |
| <?php | |
| $databaseURL = "172.18.0.1"; | |
| $databaseUser = "forgottenserver"; | |
| $databaseUserPassword = "noob"; | |
| $databaseName = "forgottenserver"; | |
| $mysqli = mysqli_connect($databaseURL,$databaseUser, $databaseUserPassword, $databaseName); | |
| $request = json_decode(file_get_contents('php://input')); | |
| file_put_contents('01_resquestBody.json', json_encode($request)); | |
| $current_password = sha1($request->password); | |
| $characters = []; | |
| // buscar conta, validar email e password | |
| $query = $mysqli->query("SELECT * FROM accounts WHERE email = '$request->email'"); | |
| $account = $query->fetch_object(); | |
| if (strcmp($account->password, $current_password) != 0) { | |
| sendError(($request->email != false ? 'Email' : 'Account name') . ' or password is not correct.'); | |
| } | |
| // buscar characters da conta e definir o main char | |
| $columns = 'id, name, level, sex, vocation, looktype, lookhead, lookbody, looklegs, lookfeet, lookaddons'; | |
| $query = $mysqli->query("SELECT {$columns} FROM players WHERE account_id = '$account->id' AND deletion = 0"); | |
| if($query) { | |
| $players = $query->fetch_all(MYSQLI_BOTH); | |
| $highestLevelId = 0; | |
| $highestLevel = 0; | |
| foreach ($players as $player) { | |
| if ($player['level'] >= $highestLevel) { | |
| $highestLevel = $player['level']; | |
| $highestLevelId = $player['id']; | |
| } | |
| } | |
| foreach ($players as $player) { | |
| $characters[] = create_char($player, $highestLevelId); | |
| } | |
| } | |
| $worlds = [[ | |
| 'id' => 0, | |
| 'name' => "OTServBR-Global", // igual ao campo serverName do config.lua | |
| 'externaladdress' => "172.18.0.1", // endereço da rede docker | |
| 'externalport' => 7172, | |
| 'externaladdressprotected' => "172.18.0.1", // endereço da rede docker | |
| 'externalportprotected' => 7172, | |
| 'externaladdressunprotected' => "172.18.0.1", // endereço da rede docker | |
| 'externalportunprotected' => 7172, | |
| 'previewstate' => 0, | |
| 'location' => 'BRA', | |
| 'anticheatprotection' => false, | |
| 'pvptype' => "pvp", | |
| 'istournamentworld' => false, | |
| 'restrictedstore' => false, | |
| 'currenttournamentphase' => 2 | |
| ]]; | |
| $session = [ | |
| 'sessionkey' => $request->email."\n".$request->password, | |
| 'lastlogintime' => 0, | |
| 'ispremium' => true, | |
| 'premiumuntil' => 0, | |
| 'status' => 'active', | |
| 'returnernotification' => false, | |
| 'showrewardnews' => false, | |
| 'isreturner' => true, | |
| 'fpstracking' => false, | |
| 'optiontracking' => false, | |
| 'tournamentticketpurchasestate' => 0, | |
| 'emailcoderequest' => false | |
| ]; | |
| $playdata = compact('worlds', 'characters'); | |
| $responseBody = compact('session', 'playdata'); | |
| file_put_contents('01_responseBody.json', json_encode($responseBody)); | |
| die(json_encode($responseBody)); | |
| function create_char($player, $highestLevelId) { | |
| $vocations = [ | |
| "1" => "Sorcerer", | |
| "2" => "Druid", | |
| "3" => "Paladin", | |
| "4" => "Knight" | |
| ]; | |
| return [ | |
| 'worldid' => 0, | |
| 'name' => $player['name'], | |
| 'ismale' => intval($player['sex']) === 1, | |
| 'tutorial' => isset($player['istutorial']) && $player['istutorial'], | |
| 'level' => intval($player['level']), | |
| 'vocation' => ($vocations[$player['vocation']]) ?? 'No Vocation', | |
| 'outfitid' => intval($player['looktype']), | |
| 'headcolor' => intval($player['lookhead']), | |
| 'torsocolor' => intval($player['lookbody']), | |
| 'legscolor' => intval($player['looklegs']), | |
| 'detailcolor' => intval($player['lookfeet']), | |
| 'addonsflags' => intval($player['lookaddons']), | |
| 'ishidden' => isset($player['deletion']) && (int)$player['deletion'] === 1, | |
| 'istournamentparticipant' => false, | |
| 'ismaincharacter' => $highestLevelId == $player['id'], | |
| 'dailyrewardstate' => isset($player['isreward']) ? intval($player['isreward']) : 0, | |
| 'remainingdailytournamentplaytime' => 0 | |
| ]; | |
| } | |
| function sendError($message, $code = 3){ | |
| $ret = []; | |
| $ret['errorCode'] = $code; | |
| $ret['errorMessage'] = $message; | |
| die(json_encode($ret)); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment