Autor | Zpráva | ||
---|---|---|---|
sitole Profil |
#1 · Zasláno: 30. 10. 2013, 17:33:27
Ahoj, potřebuju minecraft server status tož bude obrázek a na něm se bude ukazovat kolko je online na server jak se jmenuje.
Příklad: Akorád mít to ve vlastních souborech na webu prý se to dá udělat nějak přes PHP už to tu na foru bylo. Ale já to nechápu. Potřebuju sem nebo nějak postal přímo soubory nebo třeba... Jmeno serveru GaMmA IP: mc27.crew.sk Port: 25580 Web: http://gamma-play.tk/ Napíšte to prosím takto.. Index.php A co vněm má být doplněné.. Info.php A co tu má být... Image.jpg Jakou velikost má mít... A prosím takhle i s udaji co jsem vám nahoře psal... i doplněnou IP. Jsem natohle opravdu lamka :) Moc moc děkuju! |
||
Radek9 Profil |
sitole:
Na tohle tu máme sekci Práce a zakázky. Nabídní odměnu a uveď kontakt. Nebo zkus lépe hledat. Na tohle by mohl existovat hotový Bukkit plugin. |
||
Rfilip Profil |
#3 · Zasláno: 30. 10. 2013, 17:41:18
To ti zdejší vyhledávání titulku nenašlo tyto vlákna?
PHP Online Status a navazující PHP Online Status Generator [Minecraft] |
||
sitole Profil |
#4 · Zasláno: 30. 10. 2013, 17:44:07
Radek9:
Omlouvám se ale jsem tu nový a nechi forum zahlcovat takže to echám tu v php protože tu m někdo pomůže (doufám) |
||
Radek9 Profil |
#5 · Zasláno: 30. 10. 2013, 17:45:31
sitole:
Ano, tady by ti za běžných okolností někdo pomohl. Ale kdyby ses taky snažil něco dělat. Přijít sem se slovy „Napíšte to prosím takto“ na nás prostě nefunguje, když nevidíme vlastní snahu. :-) |
||
nemeja Profil |
#6 · Zasláno: 30. 10. 2013, 17:47:49
sitole:
„Omlouvám se ale jsem tu nový a nechi forum zahlcovat takže to echám tu v php protože tu m někdo pomůže (doufám)“ Máš dvě možnosti, buď si to necháš celé udělat a k tomu je sekce Práce a zakázky a nebo potřebuješ jen radu na konkrétní problém s tím scriptem a jsi tu správně. Kdyby jsi si nejdřív pročetl vlákna, co zmínil Radek9, tak by jsi zjistil, že jsem tam vložil již hotový script... |
||
Anonymní Profil * |
#7 · Zasláno: 30. 10. 2013, 17:48:51
Na téhle diskuzi by mělo být zakázané téma minecraft, protože většinou tyto témata končí jako obyčejný Flame War, či spamárnou.
sitole: „forum zahlcovat takže to echám tu v php protože tu m někdo pomůže (doufám)“ Tak ho zahlť, sorry ale v dnešní době se za věci platí penězi a pochybuji, že ti někdo pomůže když ti jediné co umíš je sesmolit ne příliš kvalitní příspěvek na fórum. „IP: mc27.crew.sk“ Omlouvám se za mojí nezkušenost, ale neměla by být IP adresa ve tvaru xxx.xxx.xxx.xxx? |
||
nemeja Profil |
Anonymní:
„Omlouvám se za mojí nezkušenost, ale neměla by být IP adresa ve tvaru xxx.xxx.xxx.xxx?“ Ano, však DNS servery ti vrátěj IP adresu :) |
||
sitole Profil |
#9 · Zasláno: 30. 10. 2013, 18:23:50
No dobře mam to.... hlavní strana jakš takš funguje ted vedlejší Hlásí to toto...
http://sitole.tk/Banner/status.php?server=mc27.crew.sk&port=25580 A script vypadá takto {\rtf1\ansi\ansicpg1250\deff0\deflang1029{\fonttbl{\f0\fswiss\fcharset238{\*\fname Arial;}Arial CE;}} {\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 <?php if(isset($_GET['server'])) { $server = $_GET['mc27.crew.sk']; $port = (int)$_GET['25580']; ?> Co je tam špatně? |
||
lorin Profil |
|||
nemeja Profil |
Asi se konečně dokopu k vytvoření služby na generování vlastních Minecraft statusů, nicméně jednoduchý nástřel:
script <?php $server = "176.9.104.116"; // IP nebo adresa $port = 25574; // port serveru // Vytvoř obrázek o rozměrech $image_width = 550; // px $image_height = 150; // px $im = imagecreatetruecolor($image_width, $image_height); // Nastav barvy $white = imagecolorallocate($im, 255, 255, 255); $green = imagecolorallocate($im, 0, 255, 0); $black = imagecolorallocate($im, 0, 0, 0); $red = imagecolorallocate($im, 255, 0, 0); $font_file = 'arial.ttf'; // umístění fontu $mineClassLoc = "MinecraftServerStatus/status.class.php"; // umístění třídy na zjištění statusu // načti třídu a zjisti status include_once $mineClassLoc; $status = new MinecraftServerStatus(); $response = $status->getStatus($server,$port); // Vyplň pozadí imagefilledrectangle($im, 0, 0, $image_width, $image_height, $white); // vepisování do obrázku if(!$response){ imagefttext($im, 50, 0, 180, 100, $red, $font_file, 'Offline'); } else { imagefttext($im, 30, 0, 10, 40, $green, $font_file, 'Online'); imagefttext($im, 15, 0, 30, 70, $black, $font_file, $response['motd']); imagefttext($im, 15, 0, 30, 90, $black, $font_file, 'Host: '.$response['hostname'].":".$response['port']); imagefttext($im, 15, 0, 30, 110, $black, $font_file, 'Hráčů: '.$response['players'].'/'.$response['maxplayers']); imagefttext($im, 15, 0, 30, 130, $black, $font_file, 'Ping: '.($response['ping']).'ms'); imagefttext($im, 14, 0, ($image_width - 150), 130, $black, $font_file, 'Version: '.$response['version']); } // nastav HTTP hlavičku header('Content-Type: image/png'); // odešli png obrázek imagepng($im); // vyčisti cache imagedestroy($im); MinecraftServerStatusClass <?php /** * Minecraft Server Status Query * @author Julian Spravil <julian.spr@t-online.de> https://github.com/FunnyItsElmo * @license Free to use but dont remove the author, license and copyright * @copyright © 2013 Julian Spravil */ class MinecraftServerStatus { private $timeout; /** * Prepares the class. * @param int $timeout default(3) */ public function __construct($timeout = 3) { $this->timeout = $timeout; } /** * Gets the status of the target server. * @param string $host domain or ip address * @param int $port default(25565) */ public function getStatus($host = '127.0.0.1', $port = 25565) { //Transform domain to ip address. if (substr_count($host , '.') != 4) $host = gethostbyname($host); //Get timestamp for the ping $start = microtime(true); //Connect to the server if(!$socket = @stream_socket_client('tcp://'.$host.':'.$port, $errno, $errstr, $this->timeout)) { //Server is offline return false; } else { stream_set_timeout($socket, $this->timeout); //Write and read data fwrite($socket, "\xFE\x01"); $data = fread($socket, 2048); fclose($socket); if($data == null) return false; //Calculate the ping $ping = round((microtime(true)-$start)*1000); //Evaluate the received data if (substr((String)$data, 3, 5) == "\x00\xa7\x00\x31\x00"){ $result = explode("\x00", mb_convert_encoding(substr((String)$data, 15), 'UTF-8', 'UCS-2')); $motd = preg_replace("/(§.)/", "",$result[1]); }else{ $result = explode('§', mb_convert_encoding(substr((String)$data, 3), 'UTF-8', 'UCS-2')); $motd = ""; foreach ($result as $key => $string) { if($key != sizeof($result)-1 && $key != sizeof($result)-2 && $key != 0) { $motd .= '§'.$string; } } $motd = preg_replace("/(§.)/", "", $motd); } //Remove all special characters from a string $motd = preg_replace("/[^[:alnum:][:punct:] ]/", "", $motd); //Set variables $res = array(); $res['hostname'] = $host; $res['version'] = $result[0]; $res['motd'] = $motd; $res['players'] = $result[sizeof($result)-2]; $res['maxplayers'] = $result[sizeof($result)-1]; $res['ping'] = $ping; $res['port'] = $port; //return obj return $res; } } } ?> Musí se upravit umístění třídy a fontu |
||
sitole Profil |
#12 · Zasláno: 30. 10. 2013, 19:01:55
nemeja:
Dobře děkuju ale ted další problém.... Vše snad dobře ale kdy dam toto ak tam nic není jakto? http://sitole.tk/Banner/status.php?server=mc27.crew.sk&port=25580 |
||
lorin Profil |
Změňte tuto část tak, aby načítala data z $_GET a nezapomeňte ošetřit vstup.
$server = "176.9.104.116"; // IP nebo adresa $port = 25574; // port serveru Alespoň část si můžete udělat sám... |
||
sitole Profil |
#14 · Zasláno: 30. 10. 2013, 19:20:01
lorin
Moc se omllllouvám ale echápu ak říkám jse začátečník posím upravíte mi kod? <?php $server = "mc27.crew.sk"; // IP nebo adresa $port = 25580; // port serveru // VytvoĹ™ obrázek o rozmÄ›rech $image_width = 550; // px $image_height = 150; // px $im = imagecreatefrompng("signa2.png"); // Nastav barvy $white = imagecolorallocate($im, 255, 255, 255); $green = imagecolorallocate($im, 0, 255, 0); $black = imagecolorallocate($im, 0, 0, 0); $red = imagecolorallocate($im, 255, 0, 0); $font_file = 'arial.ttf'; // umístění fontu $mineClassLoc = "status.class.php"; // umístění třídy na zjištění statusu // naÄŤti tĹ™Ădu a zjisti status include_once $mineClassLoc; $status = new MinecraftServerStatus(); $response = $status->getStatus($server,$port); // vepisovánĂ do obrázku imagefttext($im, 15, 0, 430, 140, $red, $font_file, '(c)SamerLP'); imagefttext($im, 25, 0, 10, 40, $green, $font, 'Online'); imagefttext($im, 15, 0, 30, 70, $green2, $font_file, 'gameStreets|mGame 1.5.2'); imagefttext($im, 15, 0, 30, 90, $green2, $font_file, 'IP: '.$response['hostname'].":".$response['port']); imagefttext($im, 15, 0, 30, 110, $green2, $font_file, 'Hraci: '.$response['players'].'/'.$response['maxplayers']); imagefttext($im, 15, 0, 30, 130, $green2, $font_file, 'Verzia: '.$response['version']); ;// nastav HTTP hlaviÄŤku header('Content-Type: image/png'); // odešli png obrázek imagepng($im); // vyÄŤisti cache imagedestroy($im); ?> |
||
lorin Profil |
#15 · Zasláno: 30. 10. 2013, 19:27:59
|
||
sitole Profil |
Ja se opravdu omlouvám ale pořád mě to nezobrazuje....
http://sitole.tk/Banner/status.php?server=mc27.crew.sk&port=25580 status.php <?php if(isset($_GET['server'])) { $server = $_GET['mc27.crew.sk']; $port = (int)$_GET['25580']; // VytvoĹ™ obrázek o rozmÄ›rech $image_width = 550; // px $image_height = 150; // px $im = imagecreatefrompng("signa2.png"); // Nastav barvy $white = imagecolorallocate($im, 255, 255, 255); $green = imagecolorallocate($im, 0, 255, 0); $black = imagecolorallocate($im, 0, 0, 0); $red = imagecolorallocate($im, 255, 0, 0); $font_file = 'arial.ttf'; // umístění fontu $mineClassLoc = "status.class.php"; // umístění třídy na zjištění statusu // naÄŤti tĹ™Ădu a zjisti status include_once $mineClassLoc; $status = new MinecraftServerStatus(); $response = $status->getStatus($server,$port); // vepisovánĂ do obrázku imagefttext($im, 15, 0, 430, 140, $red, $font_file, '(c)SamerLP'); imagefttext($im, 25, 0, 10, 40, $green, $font, 'Online'); imagefttext($im, 15, 0, 30, 70, $green2, $font_file, 'gameStreets|mGame 1.5.2'); imagefttext($im, 15, 0, 30, 90, $green2, $font_file, 'IP: '.$response['hostname'].":".$response['port']); imagefttext($im, 15, 0, 30, 110, $green2, $font_file, 'Hraci: '.$response['players'].'/'.$response['maxplayers']); imagefttext($im, 15, 0, 30, 130, $green2, $font_file, 'Verzia: '.$response['version']); ;// nastav HTTP hlaviÄŤku header('Content-Type: image/png'); // odešli png obrázek imagepng($im); // vyÄŤisti cache imagedestroy($im); } ?> |
||
Radek9 Profil |
sitole:
Z toho GETu přece nebereš mc27.crew.sk a 25580. Ty potřebuješ brát server a port. Tamto jsou jen hodnoty, které to může mít, ale ty potřebuješ znát klíče. A to je to před rovnítkem v adrese. ;-) |
||
sitole Profil |
#18 · Zasláno: 30. 10. 2013, 19:57:42 · Upravil/a: sitole
Takže to bude
if(isset($_GET['server'])) { $server = $_GET['server']; $port = (int)$_GET['port']; Jo a ještě mam dobře nastavené status.class.php <?php /** * Minecraft Server Status Query * @author Julian Spravil <julian.spr@t-online.de> https://github.com/FunnyItsElmo * @license Free to use but dont remove the author, license and copyright * @copyright © 2013 Julian Spravil */ class MinecraftServerStatus { private $timeout; /** * Prepares the class. * @param int $timeout default(3) */ public function __construct($timeout = 3) { $this->timeout = $timeout; } /** * Gets the status of the target server. * @param string $host domain or ip address * @param int $port default(25565) */ public function getStatus($host = 'mc27.crew.sk', $port = 25580) { //Transform domain to ip address. if (substr_count($host , '.') != 4) $host = gethostbyname($host); //Get timestamp for the ping $start = microtime(true); //Connect to the server if(!$socket = @stream_socket_client('tcp://'.$host.':'.$port, $errno, $errstr, $this->timeout)) { //Server is offline return false; } else { stream_set_timeout($socket, $this->timeout); //Write and read data fwrite($socket, "\xFE\x01"); $data = fread($socket, 2048); fclose($socket); if($data == null) return false; //Calculate the ping $ping = round((microtime(true)-$start)*1000); //Evaluate the received data if (substr((String)$data, 3, 5) == "\x00\xa7\x00\x31\x00"){ $result = explode("\x00", mb_convert_encoding(substr((String)$data, 15), 'UTF-8', 'UCS-2')); $motd = preg_replace("/(§.)/", "",$result[1]); }else{ $result = explode('§', mb_convert_encoding(substr((String)$data, 3), 'UTF-8', 'UCS-2')); $motd = ""; foreach ($result as $key => $string) { if($key != sizeof($result)-1 && $key != sizeof($result)-2 && $key != 0) { $motd .= '§'.$string; } } $motd = preg_replace("/(§.)/", "", $motd); } //Remove all special characters from a string $motd = preg_replace("/[^[:alnum:][:punct:] ]/", "", $motd); //Set variables $res = array(); $res['hostname'] = $host; $res['version'] = $result[0]; $res['motd'] = $motd; $res['players'] = $result[sizeof($result)-2]; $res['maxplayers'] = $result[sizeof($result)-1]; $res['ping'] = $ping; $res['port'] = $port; //return obj return $res; } } } ?> |
||
DarkMeni Profil |
#19 · Zasláno: 30. 10. 2013, 20:18:17
sitole:
Ve status.class.php nic nastavovat nemusíš. Umíš HTML? (Když to chceš dávat na stránky, tak předpokládám že asi jo) |
||
sitole Profil |
Ale stejně to nezobrazuje status na stránce...
http://sitole.tk/Banner/status.php?server=mc27.crew.sk&port=25580 A ano HTML umím index.php <style type="text/css"> body{ color: #2A2A2A; font-family: Arial, Helvetica, Sans-serif; font-size:14px; } input[type=text], textarea { -webkit-transition: all 0.30s ease-in-out; -moz-transition: all 0.30s ease-in-out; -ms-transition: all 0.30s ease-in-out; -o-transition: all 0.30s ease-in-out; outline: none; padding: 3px 0px 3px 3px; margin: 5px 1px 3px 0px; border: 1px solid #DDDDDD; } input[type=text]:focus, textarea:focus { box-shadow: 0 0 5px rgba(81, 203, 238, 1); padding: 3px 0px 3px 3px; margin: 5px 1px 3px 0px; border: 1px solid rgba(81, 203, 238, 1); } </style> <form method="GET" action="status.php"> Server: <input type="text" name="server"><br> Port: <input type="text" name="port"><br> <input type="submit" value="Vytvořit obrázek"> </form> status.php <?php if(isset($_GET['server'])) { $server = $_GET['server']; $port = (int)$_GET['port']; $image_width = 550; // px $image_height = 150; // px $im = imagecreatefrompng("signa2.png"); // Nastav barvy $white = imagecolorallocate($im, 255, 255, 255); $green = imagecolorallocate($im, 0, 255, 0); $black = imagecolorallocate($im, 0, 0, 0); $red = imagecolorallocate($im, 255, 0, 0); $font_file = 'arial.ttf'; // umístění fontu $mineClassLoc = "status.class.php"; // umístění třídy na zjištění statusu // naÄŤti tĹ™Ădu a zjisti status include_once $mineClassLoc; $status = new MinecraftServerStatus(); $response = $status->getStatus($server,$port); // vepisovánĂ do obrázku imagefttext($im, 15, 0, 430, 140, $red, $font_file, '(c)Prcek'); imagefttext($im, 25, 0, 10, 40, $green, $font, 'Online'); imagefttext($im, 15, 0, 30, 70, $green2, $font_file, 'GaMmA 1.6.2'); imagefttext($im, 15, 0, 30, 90, $green2, $font_file, 'IP: '.$response['hostname'].":".$response['port']); imagefttext($im, 15, 0, 30, 110, $green2, $font_file, 'Hraci: '.$response['players'].'/'.$response['maxplayers']); imagefttext($im, 15, 0, 30, 130, $green2, $font_file, 'Verzia: '.$response['version']); ;// nastav HTTP hlaviÄŤku header('Content-Type: image/png'); // odešli png obrázek imagepng($im); // vyÄŤisti cache imagedestroy($im); } ?> Něco špatně? Ještě jsem změnil atribut všeho na 777 |
||
DarkMeni Profil |
sitole:
„ $im = imagecreatefrompng("signa2.png"); “
Jen tak od pohledu, tak 9. řádek, tahle funkce imageCreateTrueColor() předpokládá dva argumenty (šířku a výšku obrázku, a ne adresu jinýho obrázku). Abys tam měl nějakej obrázek jako pozadí by se muselo řešit jinak (přes imageCreateFromPNG() a imageCopy() ).
Ale jednodušší bude to udělat přes HTML, z PHP si do stránky necháš vypsat třeba tabulku s těmi informacemi (status, počet hráčů atd...) a v HTML si ji pak nastyluješ přes CSS - a jako pozadí dáš ten obrázek, akorát bez toho vyplněnýho textu. |
||
sitole Profil |
#22 · Zasláno: 30. 10. 2013, 20:33:51
Ok ja o chapem ale ja jsem opravdu lamka sotva jsem udělal web v HTML není možé mě polat upravený souor jak to má být vše natavené? Je mě trapně že to neumí ale hold jsem takovej.. nechápu to prosím pomozte mě pošlete mě jsem celý soubor už upravený jako text budu moc moc děkovat...
|
||
DarkMeni Profil |
#23 · Zasláno: 30. 10. 2013, 20:46:50
Jako sorry, ale nepřekládáš si to náhodou Google Translatem z češtiny do angličtiny a pak zpátky do češtiny? :D
No dobře, když říkáš že HTML umíš, tak bys tohle mohl částečně pochopit a poupravit si to: <?php include "status.class.php"; $status = new MinecraftServerStatus(); $response = $status->getStatus("mc27.crew.sk", 25580); if($response){ $ip = $response['hostname'].':'.$response['port']; $players = $response['players'].'/'.$response['maxplayers']; $version = $response['version']; echo "<table id=\"status\"> <tr><td>IP: $ip</td></tr> <tr><td>Hráčů: $players</td></tr> <tr><td>Verze: $version</td></tr> <tr><td>Třeba název serveru...</td></tr> </table>"; }else{ echo "Server je Offline"; } ?> |
||
sitole Profil |
Panebože já snad neumím ani to HTML :D
Ne ted vážně... Ja to absolutn nechapu prosím vypuste to že umím HTML podle tohoto umím je 1% :D potřebuju jakože celý scriptne jen kousek ja nevím ka to přesně dát hází to error! :( |
||
Petr ZZZ Profil |
#25 · Zasláno: 30. 10. 2013, 21:06:32 · Upravil/a: Moderátor (editace znemožněna) 2. 11. 2013, 11:08:25
Kategorii PHP nikdo nemoderuje, nebo jak je možné, že sitoleti ještě nikdo nevynadal, že nemá psát jak čuně?
Moderátor jenikkozak: Odstraněn přivolávač moderátorů.
|
||
DarkMeni Profil |
HTML je jen ta část za echo, takže začíná značkou <table> a končí značkou </table>, to ostatní je PHP kód.
Jakou chybu to hází? sitole: „ja nevím ka to přesně dát“ Do stránky ve který chceš nechat vypsat status a tý stránce pak dej koncovku php <!DOCTYPE html> <html> <head> <title>Online Status</title> <style type="text/css"> #online_status { background: url("obrazek_na_pozadi.png"); width: 550px; height: 300px; } #status_table { /*nějaký nastylování...*/ } </style> </head> <body> Nějaký logo, navigace, panely... <div id="online_status"> <?php include "status.class.php"; $status = new MinecraftServerStatus(); $response = $status->getStatus("mc27.crew.sk", 25580); if($response){ $ip = $response['hostname'].':'.$response['port']; $players = $response['players'].'/'.$response['maxplayers']; $version = $response['version']; echo "<table id=\"status_table\"> <tr><td>IP: $ip</td></tr> <tr><td>Hráčů: $players</td></tr> <tr><td>Verze: $version</td></tr> <tr><td>Třeba název serveru...</td></tr> </table>"; }else{ echo "<span id=\"offline\">Server je Offline</span>"; } ?> </div> Nějaká patička... </body> </html> Jestli chceš hotový řešení, tak napiš do prací a zakázek, ale bude tě to asi něco stát |
||
sitole Profil |
#27 · Zasláno: 30. 10. 2013, 21:27:23
http://sitole.tk/Banner/status.php?server=mc27.crew.sk&port=25580
kuju funguje ale neukazujou se udaje...... |
||
Davex Profil |
#28 · Zasláno: 30. 10. 2013, 21:29:09
Petr ZZZ:
„jak je možné, že sitoleti ještě nikdo nevynadal, že nemá psát jak čuně?“ Já vážně nevím. Kategorii PHP asi vládnou hodní moderátoři, kteří chápou ty mladé programátory, co si ve dvanácti letech myslí, že jim patří svět a kteří budou jednou ty pravidla pravopisu a slovník spisovných slov psát. Oni takhle nesrozumitelně nejenom píšou, ale i mluví. sitole: Nepiš prosím jako čuně. Asi málo čteš knížky a měl bys to dohnat. „kuju“ Hupateto? |
||
sitole Profil |
#29 · Zasláno: 30. 10. 2013, 21:33:31
Davex
Dobře, omlouvám se :) Už budu dvat pozor a nevím proč ale blbne mě klávesnice proto si vše musím kontrolovat :) Jo a knížky čtu... |
||
DarkMeni Profil |
#30 · Zasláno: 30. 10. 2013, 21:34:41
sitole:
Jedou ti na hostingu PHPka? Máš povolenej výpis chyb? (v php.ini -> display_errors = 1) |
||
Téma pokračuje na další straně.
|
0