Difference between revisions of "LeaderboardPost.php"
(Created page with "Different awards can be given to the players on your servers. This is managed through these files file. If you want to give a bunny an award you must be a mod on your server...") |
|||
Line 1: | Line 1: | ||
− | Different awards can be given to the players on your servers. | + | Different trophies and awards can be given to the players on your servers. |
− | This is managed through | + | This is managed through the following files: ```statsConfig.php''', '''trophyPost.php''', and '''trophies.txt'''. |
+ | |||
+ | For this all to work you need to set the following in your [[serverSettings]].txt | ||
+ | leaderboardTrophyURL=http://abc.com/url/to/my/trophies.txt | ||
+ | leaderboardTrophyPostURL=http://abc.com/url/to/my/trophyPost.php | ||
+ | leaderboardPostPassword=myPassword | ||
+ | |||
If you want to give a bunny an award you must be a mod on your server and use the /trophy [[Console Commands]]. | If you want to give a bunny an award you must be a mod on your server and use the /trophy [[Console Commands]]. | ||
Line 25: | Line 31: | ||
playerName^playerID^b1:00ff00#b2:00ff00#a1:00ff00 | playerName^playerID^b1:00ff00#b2:00ff00#a1:00ff00 | ||
− | == | + | == trophyPost.php == |
<?php | <?php | ||
include("statsConfig.php"); | include("statsConfig.php"); |
Revision as of 18:09, 3 October 2018
Different trophies and awards can be given to the players on your servers. This is managed through the following files: ```statsConfig.php, trophyPost.php, and trophies.txt.
For this all to work you need to set the following in your serverSettings.txt
leaderboardTrophyURL=http://abc.com/url/to/my/trophies.txt leaderboardTrophyPostURL=http://abc.com/url/to/my/trophyPost.php leaderboardPostPassword=myPassword
If you want to give a bunny an award you must be a mod on your server and use the /trophy Console Commands.
For example: Typing ```/trophy playerID 1st``` will give that player a "1st" trophy. Whatever trophies you want are defined in this file. In the comments you can get an idea for what the trophies look like.
The trophy records are stored in a text file defined inside of statsConfig.php as shown below:
statsConfig.php
<?php $postPW = "myPassword"; $trophiesFile = 'trophies.txt'; ?>
trophies.txt is read by the server each time a new map loads so it can know who has trophies and will show their trophies next to their names respectively in the in-game leader boards.
This file is what the server talks to when it is told to give a player a trophy. It processes the server message, and saves it to the trophies.txt file in the appropriate format. For example this player has 3 trophies of different kinds, but each is red colored. Each player that has won trophies has their own line in the trophies file. playerName^playerID^b1:00ff00#b2:00ff00#a1:00ff00
trophyPost.php
<?php include("statsConfig.php"); if ($_GET["pw"] != $postPW) { exit; } //convert what the server told us happened, into some kind of "record or trophy" that can be displayed next to the player's name //the format is: playerName^playerID^b1:00ff00#b2:00ff00#a1:00ff00 //OBEY servers will read this and search it for players that are joining. //Each time they find the player's ID (the name is just for convenience of manual editing) it will display the award in the score board //a1 = a vertical line next to the name //a2 = a thick vertical line //a3 = a large cube //b1 = a small dot //b2 = 2 small dots , one over the other $trophy = $_GET["trophy"]; $profileID = $_GET["profileID"]; $playerName = $_GET["playerName"]; if ($profileID == "" || $playerName == "" || $trophy == "") exit; if ($trophy != "1st" && $trophy != "2nd" && $trophy != "3rd") { echo "[ff0000]Trophy not recognized.[-]"; //this will be printed to everyone on the server exit; } $data = file($trophiesFile); // reads an array of lines $recordExists = 0; $outData = array(); //below, we transcribe each line from $data into $outData, making any needed changes as we go. for ($i = 0; $i < Count($data); $i++) { if (strncmp($data[$i], $profileID, strlen($profileID)) === 0) //does the line starts with the profileID? { $recordExists = 1; //abcd2234^stuphChicken^b1:00ff00#b1:00ff00#b1:00ff00# //we may have a mix of dots.. so lets order them. First place on the left, 2nd markers in the middle, 3rds on the right. //count any we may have $firsts = (int)substr_count($data[$i], 'b1:00ff00'); $firsts += (int)substr_count($data[$i], 'b2:00ff00') * 2; $seconds = (int)substr_count($data[$i], 'b1:00ffff'); $seconds += (int)substr_count($data[$i], 'b2:00ffff') * 2; $thirds = (int)substr_count($data[$i], 'b1:008989'); $thirds += (int)substr_count($data[$i], 'b2:008989') * 2; //add the trophy given by the url if ($trophy == "1st") //won first place $firsts++; else if ($trophy == "2nd") $seconds++; else if ($trophy == "3rd") $thirds++; else { echo "[ff0000]Trophy not recognized.[-]"; //this will be printed to everyone on the server exit; } //reorganize and print all awards, so that they appear in order 1st, 2nd, 3rd place wins $awards = ""; for ($d = 0; $d < (int)floor($firsts/ 2); $d++) //firsts/2 in a way that will not round or cast to float $awards .= "b2:00ff00#"; if ($firsts % 2 == 1) $awards .= "b1:00ff00#"; for ($d = 0; $d < (int)floor($seconds/ 2); $d++) $awards .= "b2:00ffff#"; if ($seconds % 2 == 1) $awards .= "b1:00ffff#"; for ($d = 0; $d < (int)floor($thirds/ 2); $d++) $awards .= "b2:008989#"; if ($thirds % 2 == 1) $awards .= "b1:008989#"; $outData[Count($outData)] = $profileID."^".$playerName."^".$awards."\n"; } else if ($data[$i] != "" && $data[$i] != "\n" && $data[$i] != "\n\n") { $outData[Count($outData)] = $data[$i]; //nothing noted, just copy this line to the end of the output } } if ($recordExists == 0) //this is the first trophy for this player { if ($trophy == "1st") //won first place $outData[Count($outData)] = $profileID."^".$playerName."^b1:00ff00\n"; //add the new record else if ($trophy == "2nd") $outData[Count($outData)] = $profileID."^".$playerName."^b1:00ffff\n"; else if ($trophy == "3rd") $outData[Count($outData)] = $profileID."^".$playerName."^b1:008989\n"; } file_put_contents($awardsFile, implode("", $outData)); echo "[00ff00]". $playerName ." = ". $trophy."![-]"; //this will be printed to everyone on the server ?>