Om3n 78 Odesláno: 29. Prosinec, 2009 Share Odesláno: 29. Prosinec, 2009 vydel sem tu nekolik helpu a i ja sam sem chtel mit vlastni generator statusu s vlastnim obrazkem...tak sem se rozhodl ze tady zverejnim zdrojak toho sveho...dekuji chytrakovi ze mi pomohl se zacatkem toho generatoru...a dale uz zdrojak toho generatoru... tohle si uložte jako soubor samp_query.php..a musite to umistit primo k vasemu generatoru statusu: <?php /********************************************* * * SA-MP Query Server Version 0.3 * * This class provides you with an easy to use interface to query * your SA-MP 0.2 servers. Usage is simple, but has changed a bit * since the last version, so be sure to check out the examples * that come along with this script. It is updated with some of * the new SA-MP 0.2 query-techniques that can be used. * * Author: Peter Beverloo * [email protected] * Ex SA-MP Developer * * Updated: Wouter van Eekelen * [email protected] * SA-MP Betatester *********************************************/ class QueryServer { // Private variables used for the query-ing. private $szServerIP; private $iPort; private $rSocketID; private $bStatus; // The __construct function gets called automatically // by PHP once the class gets initialized. function __construct( $szServerIP, $iPort ) { $this->szServerIP = $this->VerifyAddress( $szServerIP ); $this->iPort = $iPort; if (empty( $this->szServerIP ) || !is_numeric( $iPort )) { throw new QueryServerException( 'Either the ip-address or the port isn\'t filled in correctly.' ); } $this->rSocketID = @fsockopen( 'udp://' . $this->szServerIP, $iPort, $iErrorNo, $szErrorStr, 5 ); if (!$this->rSocketID) { throw new QueryServerException( 'Cannot connect to the server: ' . $szErrorStr ); } socket_set_timeout( $this->rSocketID, 0, 500000 ); $this->bStatus = true; } // The VerifyAddress function verifies the given hostname/ // IP address and returns the actual IP Address. function VerifyAddress( $szServerIP ) { if (ip2long( $szServerIP ) !== false && long2ip( ip2long( $szServerIP ) ) == $szServerIP ) { return $szServerIP; } $szAddress = gethostbyname( $szServerIP ); if ($szAddress == $szServerIP) { return ""; } return $szAddress; } // The SendPacket function sends a packet to the server which // requests information, based on the type of packet send. function SendPacket( $cPacket ) { $szPacket = 'SAMP'; $aIpChunks = explode( '.', $this->szServerIP ); foreach( $aIpChunks as $szChunk ) { $szPacket .= chr( $szChunk ); } $szPacket .= chr( $this->iPort & 0xFF ); $szPacket .= chr( $this->iPort >> 8 & 0xFF ); $szPacket .= $cPacket; return fwrite( $this->rSocketID, $szPacket, strlen( $szPacket ) ); } // The GetPacket() function returns a specific number of bytes // read from the socket. This uses a special way of getting stuff. function GetPacket( $iBytes ) { $iResponse = fread( $this->rSocketID, $iBytes ); if ($iResponse === false) { throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' ); } $iLength = ord( $iResponse ); if ($iLength > 0) return fread( $this->rSocketID, $iLength ); return ""; } // After we're done, the connection needs to be closed using // the Close() function. Otherwise stuff might go wrong. function Close( ) { if ($this->rSocketID !== false) { fclose( $this->rSocketID ); } } // A little function that's needed to properly convert the // four bytes we're recieving to integers to an actual PHP // integer. ord() can't handle value's higher then 255. function toInteger( $szData ) { $iInteger = 0; $iInteger += ( ord( @$szData[ 0 ] ) ); $iInteger += ( ord( @$szData[ 1 ] ) << 8 ); $iInteger += ( ord( @$szData[ 2 ] ) << 16 ); $iInteger += ( ord( @$szData[ 3 ] ) << 24 ); if( $iInteger >= 4294967294 ) $iInteger -= 4294967296; return $iInteger; } // The GetInfo() function returns basic information about the // server, like the hostname, number of players online etc. function GetInfo( ) { if ($this->SendPacket('i') === false) { throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' ); } $szFirstData = fread( $this->rSocketID, 4 ); if (empty( $szFirstData ) || $szFirstData != 'SAMP') { throw new QueryServerException( 'The server at ' . $this->szServerIP . ' is not an SA-MP Server.' ); } // Pop the first seven characters returned. fread( $this->rSocketID, 7 ); return array ( 'Password' => ord( fread( $this->rSocketID, 1 ) ), 'Players' => $this->toInteger( fread( $this->rSocketID, 2 ) ), 'MaxPlayers' => $this->toInteger( fread( $this->rSocketID, 2 ) ), 'Hostname' => $this->GetPacket( 4 ), 'Gamemode' => $this->GetPacket( 4 ), 'Map' => $this->GetPacket( 4 ) ); } // The GetRules() function returns the rules which are set // on the server, e.g. the gravity, version etcetera. function GetRules( ) { if ($this->SendPacket('r') === false) { throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' ); } // Pop the first 11 bytes from the response; fread( $this->rSocketID, 11 ); $iRuleCount = ord( fread( $this->rSocketID, 2 ) ); $aReturnArray = array( ); for( $i = 0; $i < $iRuleCount; $i ++ ) { $szRuleName = $this->GetPacket( 1 ); $aReturnArray[ $szRuleName ] = $this->GetPacket( 1 ); } return $aReturnArray; } // The GetPlayers() function is pretty much simelar to the // detailed function, but faster and contains less information. function GetPlayers( ) { if ($this->SendPacket('c') === false) { throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' ); } // Again, pop the first eleven bytes send; fread( $this->rSocketID, 11 ); $iPlayerCount = ord( fread( $this->rSocketID, 2 ) ); $aReturnArray = array( ); for( $i = 0; $i < $iPlayerCount; $i ++ ) { $aReturnArray[ ] = array ( 'Nickname' => $this->GetPacket( 1 ), 'Score' => $this->toInteger( fread( $this->rSocketID, 4 ) ) ); } return $aReturnArray; } // The GetDetailedPlayers() function returns the player list, // but in a detailed form inclusing the score and the ping. function GetDetailedPlayers( ) { if ($this->SendPacket('d') === false) { throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' ); } // Skip the first 11 bytes of the response; fread( $this->rSocketID, 11 ); $iPlayerCount = ord( fread( $this->rSocketID, 2 ) ); $aReturnArray = array( ); for( $i = 0; $i < $iPlayerCount; $i ++ ) { $aReturnArray[ ] = array( 'PlayerID' => $this->toInteger( fread( $this->rSocketID, 1 ) ), 'Nickname' => $this->GetPacket( 1 ), 'Score' => $this->toInteger( fread( $this->rSocketID, 4 ) ), 'Ping' => $this->toInteger( fread( $this->rSocketID, 4 ) ) ); } return $aReturnArray; } function RCON($rcon, $command) { echo 'Password '.$rcon.' with '.$command; if ($this->SendPacket('x '.$rcon.' '.$command) === false) { throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' ); } // Pop the first 11 bytes from the response; $aReturnArray = fread( $this->rSocketID, 11 ); echo fread( $this->rSocketID, 11 ); return $aReturnArray; } } /********************************************* * * The QueryServerException is used to throw errors when querying * a specific server. That way we force the user to use proper * error-handling, and preferably even a try-/catch statement. * **********************************************/ class QueryServerException extends Exception { // The actual error message is stored in this variable. private $szMessage; // Again, the __construct function gets called as soon // as the exception is being thrown, in here we copy the message. function __construct( $szMessage ) { $this->szMessage = $szMessage; } // In order to read the exception being thrown, we have // a .NET-like toString() function, which returns the message. function toString( ) { return $this->szMessage; } } ?> a tohle si ulozte treba jako generator.php a ulozte tam kde je samp_query.php: <?php header("Content-type: image/png"); $ip = $_GET["ip"]; $port = $_GET["port"]; $bg = $_GET["bg"]; require "samp_query.php"; $img = ImageCreateFrompng("./img/nic.png"); $bila = ImageColorAllocate($img, 255, 255, 255); $modra = ImageColorAllocate($img, 0, 20, 255); $cerna = ImageColorAllocate($img, 255, 0, 0); if (!empty( $ip ) && !empty( $port ) && !empty( $bg )) { if($bg == "1") { $img = ImageCreateFrompng("./img/1.png"); } else if($bg == "2") { $img = ImageCreateFrompng("./img/2.png"); } else if($bg == "3") { $img = ImageCreateFrompng("./img/3.png"); } else if($bg == "4") { $img = ImageCreateFrompng("./img/4.gif"); } else if($bg == "5") { $img = ImageCreateFrompng("./img/5.png"); } else if($bg == "6") { $img = ImageCreateFrompng("./img/6.png"); } else if($bg == "7") { $img = ImageCreateFrompng("./img/7.png"); } else if($bg == "8") { $img = ImageCreateFrompng("./img/8.png"); } try { $rQuery = new QueryServer( $ip, $port ); $aInformation = $rQuery->GetInfo( ); $aServerRules = $rQuery->GetRules( ); $aBasicPlayer = $rQuery->GetPlayers( ); $aTotalPlayers = $rQuery->GetDetailedPlayers( ); $rQuery->Close( ); } catch (QueryServerException $pError) { ImageString($img, 3, 5, 5, "IP: $ip:$port", $cerna); ImageString($img, 3, 5, 17, "Tento server není aktuálně zapnutý.", $cerna); } if(isset($aInformation) && is_array($aInformation)) { $hostname = $aInformation['Hostname']; $maxplayers = $aInformation['MaxPlayers']; $ping = $aInformation['Ping']; $players = $aInformation['Players']; $map = $aInformation['Map']; $gamemode = $aInformation['Gamemode']; $mapname = $aInformation['Map']; $verze = $aServerRules['version']; $pocasi = $aServerRules['weather']; $cas = $aServerRules['worldtime']; $gravity = $aServerRules['gravity']; $web = $aServerRules['weburl']; $pass = $aInformation['Password'] ? 'Zamčeno' : 'Odemčeno'; //atd ImageString($img, 3, 10, 5, "$hostname", $bila); ImageString($img, 3, 10, 20, "Gamemode:", $modra); ImageString($img, 3, 80, 20, "$gamemode", $bila); ImageString($img, 3, 10, 35, "Mapname:", $modra); ImageString($img, 3, 80, 35, "$mapname", $bila); ImageString($img, 3, 10, 50, "Hráči:", $modra); ImageString($img, 3, 80, 50, "$players/$maxplayers", $bila); ImageString($img, 3, 10, 65, "IP:", $modra); ImageString($img, 3, 80, 65, "$ip:$port", $bila); ImageString($img, 3, 270, 20, "Počasí / Čas:", $modra); ImageString($img, 3, 370, 20, "$pocasi / $cas", $bila); ImageString($img, 3, 270, 35, "Verze:", $modra); ImageString($img, 3, 320, 35, "$verze", $bila); ImageString($img, 3, 270, 50, "Gravity:", $modra); ImageString($img, 3, 330, 50, "$gravity", $bila); ImageString($img, 3, 270, 65, "Web:", $modra); ImageString($img, 3, 310, 65, "$web", $bila); if($pass == 'Zamčeno') { ImageString($img, 3, 460, 5, "LOCK", $cerna); } } } else { ImageString($img, 3, 5, 5, "Nevyplnil si port, adresu atd", $cerna); } imagepng($img); imagedestroy($img); ?> potom si na webu kde mate tento generator statusu vytvorte slozku img a do ni si vkladejte obrazky jako 1.png , 2.png , atd...a pak si tam dejte nic.png , a ten udeletje jenom cerny...ten se vam bude zobrazovat kdyz bude treba server vypnutej...pokud mate nejaky dotazy tak se ptejte...jo a je to delany na obrazky velikosti 500x85 Link to comment Share on other sites More sharing options...
AvestX 5 Odesláno: 29. Prosinec, 2009 Share Odesláno: 29. Prosinec, 2009 Jéé ty si hodnej, děkuju . . . . Link to comment Share on other sites More sharing options...
tyran 0 Odesláno: 29. Prosinec, 2009 Share Odesláno: 29. Prosinec, 2009 oO první problém,jsem na php levej http://www.enduro.wu.cz/gen/generator.php nefunguje Link to comment Share on other sites More sharing options...
Om3n 78 Odesláno: 29. Prosinec, 2009 Author Share Odesláno: 29. Prosinec, 2009 na ic.cz ti to nepujde...sezen si webhosting na php5.cz nebo sk Link to comment Share on other sites More sharing options...
StarsCream_Cze 1 Odesláno: 29. Prosinec, 2009 Share Odesláno: 29. Prosinec, 2009 ten script mám už několik hodin a několik hodin se s tím s*ru. Ať to dám na loclahost, hostuju, nebo klenot, píše mi server is offline. Zapnu SA-MP client a hele copak je online... php 5 mám, funkce povolený všechny a prostě nic Link to comment Share on other sites More sharing options...
Om3n 78 Odesláno: 29. Prosinec, 2009 Author Share Odesláno: 29. Prosinec, 2009 tak zkus primo ten muj...je to presne ten co mam v podpisu...je to uplne ten samej zdrojak Link to comment Share on other sites More sharing options...
StarsCream_Cze 1 Odesláno: 29. Prosinec, 2009 Share Odesláno: 29. Prosinec, 2009 díky za kód, tak sem si to jenom upravil, ať to není obrázek, ale echo a pořád to končí u offline: http://sc.cholerik.cz/ss.php Link to comment Share on other sites More sharing options...
Guest BrayenCZE Odesláno: 29. Prosinec, 2009 Share Odesláno: 29. Prosinec, 2009 Tvůj Zdroják jako že sis ho udělal? není to náhodou? http://forum.sa-mp.com/index.php?topic=124645.0 Link to comment Share on other sites More sharing options...
StarsCream_Cze 1 Odesláno: 29. Prosinec, 2009 Share Odesláno: 29. Prosinec, 2009 je tu 5 minut a už bu*er*je... základ zdrojového kódu je z forum.sa-mp.com, ale generator.php je už upravený -> zdroják jeho generátoru = jeho zdroják kapiš? Link to comment Share on other sites More sharing options...
Sany 2 Odesláno: 1. Prosinec, 2010 Share Odesláno: 1. Prosinec, 2010 hele jak podto mam napsat nejakej text mne se nezobrazi Link to comment Share on other sites More sharing options...
cniry 0 Odesláno: 1. Prosinec, 2010 Share Odesláno: 1. Prosinec, 2010 Tvůj Zdroják jako že sis ho udělal? není to náhodou? http://forum.sa-mp.com/index.php?topic=124645.0 to na co linkuješ je PHP Query... on to PHP Samp Query jen použil ve své aplikaci. neříká že postavil PHP Samp Query, ale že postavil ten generátor co ho používá, takže příště prosím ten rozdíl rozlišuj Link to comment Share on other sites More sharing options...
NurofeN-Cz 0 Odesláno: 1. Prosinec, 2010 Share Odesláno: 1. Prosinec, 2010 Pujde to na endore? :-o Link to comment Share on other sites More sharing options...
NurofeN-Cz 0 Odesláno: 1. Prosinec, 2010 Share Odesláno: 1. Prosinec, 2010 Mmm, ze mi to nejde, proto se ptam. Pise ze Obrázek “http://pawno.g6.cz/generator.php” nelze zobrazit, protože obsahuje chyby. Link to comment Share on other sites More sharing options...
cniry 0 Odesláno: 1. Prosinec, 2010 Share Odesláno: 1. Prosinec, 2010 Mmm, ze mi to nejde, proto se ptam. Pise ze Obrázek “http://pawno.g6.cz/generator.php” nelze zobrazit, protože obsahuje chyby. jestli ti to nejde, tak v souboru generator.php zakomentuj řádek č.2 a hned uvidíš v čem je chyba. -- čtv 02. pro 2010 2:40:10 -- edit: tak na endoře to nejde. endora se tam snaží nacpat svoji patičku a tím to rozesere Link to comment Share on other sites More sharing options...
jizino 0 Odesláno: 4. Prosinec, 2010 Share Odesláno: 4. Prosinec, 2010 nejde mi to pls poradte http://www.gamer-city.g6.cz/samp_query.php Link to comment Share on other sites More sharing options...
Majitel ffredyk 167 Odesláno: 4. Prosinec, 2010 Majitel Share Odesláno: 4. Prosinec, 2010 nejde mi to pls poradte http://www.gamer-city.g6.cz/samp_query.php -- sob 04. pro 2010 11:36:38 -- nejde mi to pls poradte http://www.gamer-city.g6.cz/samp_query.php Chybí maincore.php Link to comment Share on other sites More sharing options...
gledy 1 Odesláno: 4. Prosinec, 2010 Share Odesláno: 4. Prosinec, 2010 konkretne pouzij tohle: http://www.iphpfusion.sk/articles.php?article_id=19 Link to comment Share on other sites More sharing options...
jizino 0 Odesláno: 9. Prosinec, 2010 Share Odesláno: 9. Prosinec, 2010 to je odkaz na vytvorenie vlastnych stranok Link to comment Share on other sites More sharing options...
Daffy 8 Odesláno: 15. Leden, 2011 Share Odesláno: 15. Leden, 2011 jak tak koukám tak si myslím že je zbytečně dlouhé toto if($bg == "1") { $img = ImageCreateFrompng("./img/1.png"); } else if($bg == "2") { $img = ImageCreateFrompng("./img/2.png"); } else if($bg == "3") { $img = ImageCreateFrompng("./img/3.png"); } else if($bg == "4") { $img = ImageCreateFrompng("./img/4.gif"); } else if($bg == "5") { $img = ImageCreateFrompng("./img/5.png"); } else if($bg == "6") { $img = ImageCreateFrompng("./img/6.png"); } else if($bg == "7") { $img = ImageCreateFrompng("./img/7.png"); } else if($bg == "8") { $img = ImageCreateFrompng("./img/8.png"); } udělla bych to jednoduše, $img = ImageCreateFrompng("./img/$bg.png"); a pokud je to $bg třeba 0, 9, ABŽN..prostě pokud obrázek neexistuje ( tak takto ) if(!file_exists("./img/$bg.png")) {$img = ImageCreateFrompng("./img/1.png");} else {$img = ImageCreateFrompng("./img/$bg.png");} Link to comment Share on other sites More sharing options...
cniry 0 Odesláno: 15. Leden, 2011 Share Odesláno: 15. Leden, 2011 daffy to myslel takhle: //bereme jen cisla $bg = (int) $bg; //pokud soubor neexistuje, tak zobrazime 1.png if( !file_exists("img/" . $bg . ".png") ) $bg = 1; //nacteme si obrazek $img = ImageCreateFrompng("img/" . $bg . ".png"); Link to comment Share on other sites More sharing options...
Daffy 8 Odesláno: 15. Leden, 2011 Share Odesláno: 15. Leden, 2011 daffy to myslel takhle: //bereme jen cisla $bg = (int) $bg; //pokud soubor neexistuje, tak zobrazime 1.png if( !file_exists("img/" . $bg . ".png") ) $bg = 1; //nacteme si obrazek $img = ImageCreateFrompng("img/" . $bg . ".png"); né ja to myslel tak jak jsem to napsal. // jo, i tak :D Link to comment Share on other sites More sharing options...
Guest KingOfTheRing Odesláno: 15. Březen, 2011 Share Odesláno: 15. Březen, 2011 Viem že píšem do starej temy ale Aký je link ? /generator.php ip= port ????? mohli bz ste mi pomôčť pls Link to comment Share on other sites More sharing options...
HardLock 1 Odesláno: 15. Březen, 2011 Share Odesláno: 15. Březen, 2011 tenhle generátor se mi bude k něčemu hodit Link to comment Share on other sites More sharing options...
hospoda96 31 Odesláno: 15. Březen, 2011 Share Odesláno: 15. Březen, 2011 nezdá se vám že píšete trochu do starýho téma Link to comment Share on other sites More sharing options...
Guest KingOfTheRing Odesláno: 15. Březen, 2011 Share Odesláno: 15. Březen, 2011 Písal som že píšem a kurwa nespamuj ale porad Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now