Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] RCON - nie wysyła komend.


Rekomendowane odpowiedzi

Opublikowano

Cześć,

 

ogarnąłem sobie sklep SMS - połączenie RCON z serwerem, wszystko ładnie śmiga, jedyny problem, to wywołanie komendy.

Sam serwer łączy się bez żadnego problemu, komendy bukkitowe (tzn. te, które już są w silniku domyślnie) wykonuje bez problemu, ale komend z pluginów (autorskich i zwykłych, nawet WorldGuarda etc.) nie ma szans, w ogóle nie wysyła ich na konsolę. O co tu chodzi? :O

 

Pozdrawiam.

Opublikowano

ciekawe, nigdy tak nie mialem

zadnego errora nie wywala ?

 

Errorów w PHP - nie, tak samo w konsoli nie, bo komenda w ogóle nie jest wysyłana. ;)

 

Opublikowano

SMS shop by płatności-online.pl!!

Złe dane podałeś i tyle!

Na czym masz strone www?

 

 

Żaden SMS-SHOP z platnosci-online.pl, ten ich skrypt to gówno, zresztą same płatnosci-online tez, okradają ludzi, nie polecam. ;)

Skrypt jest pod ProfitSMS, kod mogę podać na PW. :-)

Opublikowano

 

 

ogarnąłem sobie sklep SMS

czy działało przed "ogarnieciem" sklepu ?

jeśli tak, to masz już przyczynę :* 




Opublikowano

czy działało przed "ogarnieciem" sklepu ?

jeśli tak, to masz już przyczynę :* 

 

Czytaj ze zrozumieniem, 2 skrypty, które posiadam nie działają z moim serwerem (testowałem też na innych maszynach, też nie działało), jeden z nich na innym serwerze normalnie działał. ;)

Opublikowano



Proszę jakieś wygrzebane moje gówno z 2013 roku.
Od razu pod profit :)

index.php

<?php
				if(isset($_POST['ok'])) {

					$apiKey = '677ee5e210d769fb6b7e35de0f2140d8';
					$number = '7936';
					$nick=$_POST['nick'];
					$kod=$_POST['kod'];
					
					function getStatus($url) {
						if(in_array('curl', get_loaded_extensions())) {
							$curl = curl_init($url) ;
							curl_setopt( $curl, CURLOPT_URL , $url );
							curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
							$source = curl_exec( $curl );
							curl_close( $curl );
						} else {
							$source = file_get_contents($url);
						}
							
							return $source;     
					}

					$status = getStatus('http://profitsms.pl/check.php?apiKey='.$apiKey.'&code='.$_POST['kod'].'&smsNr='.$number,'r'); 
					$raport = explode('|', $status); 
					switch($raport['0']) {  
					case 1: 
						echo '<p style="color: green; font-style:font1;text-align: center;">Poprawny kod nick: .$nick</p>';
						define( 'MQ_SERVER_ADDR', '127.0.0.1' ) ; 
						define( 'MQ_SERVER_PORT', 25565 ); 
						define( 'MQ_SERVER_PASS', 'zecznyfonsz' );
						define( 'MQ_TIMEOUT', 2 );
						
						require __DIR__ . '/rcon.class.php';
						
						echo "<pre>";
						
						try
						{
							$Rcon = new MinecraftRcon;
							
							$Rcon->Connect( MQ_SERVER_ADDR, MQ_SERVER_PORT, MQ_SERVER_PASS, MQ_TIMEOUT );
							
							$Data = $Rcon->Command( "say Gracz $nick kupic supervip'a" ); 
							$Rcon->Disconnect();
						}
						catch( MinecraftRconException $e )
						{
							echo $e->getMessage( );
						}						
					
					break;
					
					case 0:
						echo '<p style="color: red; text-align: center;">Błędny kod</p>';  
					break;  
					}
				}
			?>


rcon.class.php

<?php
class MinecraftRconException extends Exception
{
	// Exception thrown by MinecraftRcon class
}

class MinecraftRcon
{

	// 
	const SERVERDATA_EXECCOMMAND    = 2;
	const SERVERDATA_AUTH           = 3;
	
	// 
	const SERVERDATA_RESPONSE_VALUE = 0;
	const SERVERDATA_AUTH_RESPONSE  = 2;
	
	private $Socket;
	private $RequestId;
	
	public function __destruct( )
	{
		$this->Disconnect( );
	}
	
	public function Connect( $Ip, $Port = 25565, $Password, $Timeout = 3 )
	{
		$this->RequestId = 0;
		
		if( $this->Socket = FSockOpen( $Ip, (int)$Port ) )
		{
			Socket_Set_TimeOut( $this->Socket, $Timeout );
			
			if( !$this->Auth( $Password ) )
			{
				$this->Disconnect( );
				
				throw new MinecraftRconException( "Authorization failed." );
			}
		}
		else
		{
			throw new MinecraftRconException( "Can't open socket." );
		}
	}
	
	public function Disconnect( )
	{
		if( $this->Socket )
		{
			FClose( $this->Socket );
			
			$this->Socket = null;
		}
	}
	
	public function Command( $String )
	{
		if( !$this->WriteData( self :: SERVERDATA_EXECCOMMAND, $String ) )
		{
			return false;
		}
		
		$Data = $this->ReadData( );
		
		if( $Data[ 'RequestId' ] < 1 || $Data[ 'Response' ] != self :: SERVERDATA_RESPONSE_VALUE )
		{
			return false;
		}
		
		return $Data[ 'String' ];
	}
	
	private function Auth( $Password )
	{
		if( !$this->WriteData( self :: SERVERDATA_AUTH, $Password ) )
		{
			return false;
		}
		
		$Data = $this->ReadData( );
		
		return $Data[ 'RequestId' ] > -1 && $Data[ 'Response' ] == self :: SERVERDATA_AUTH_RESPONSE;
	}
	
	private function ReadData( )
	{
		$Packet = Array( );
		
		$Size = FRead( $this->Socket, 4 );
		$Size = UnPack( 'V1Size', $Size );
		$Size = $Size[ 'Size' ];
		
		// TODO: Add multiple packets (Source)
		
		$Packet = FRead( $this->Socket, $Size );
		$Packet = UnPack( 'V1RequestId/V1Response/a*String/a*String2', $Packet );
		
		return $Packet;
	}
	
	private function WriteData( $Command, $String = "" )
	{
		// Pack the packet together
		$Data = Pack( 'VV', $this->RequestId++, $Command ) . $String . "\x00\x00\x00"; 
		
		// Prepend packet length
		$Data = Pack( 'V', StrLen( $Data ) ) . $Data;
		
		$Length = StrLen( $Data );
		
		return $Length === FWrite( $this->Socket, $Data, $Length );
	}
}

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...