GTAvision.com - Forum - Grand Theft Auto News, Downloads, Community and more...

Position: Grand Theft Auto: San Andreas » Multiplayer » Scripte und kleine Codes » Server - Monitor » Druckansicht
TrexXx, 29.09.2008, 17:49
Also, ich bin wieder aus dem Urlaub zurück (mit meinen tollen fragen :D )

Ich bin wieder mal bei php angelangt, da ich eine art server-monitor fake machen möchte, ich habe
danach gesucht, habe aber nichts gefunden, desshalb habe ich es selbst probiert, da ich aber ka
habe wie das gehen soll, habe ich es aus meinem Interface geholt, und das sieht so aus(geht aber
nicht):

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php

$ip = "xxx.xxx.xxx.xxx";
$port = "xxxx";

if(SampStatsCore::IsServerActive($ip, $port)) { 

echo 'SampStatsCore::GetServerStats(_HOST, $port)';

} else {
echo '<img src="offline.jpg" alt="Bild">';
}

class SampStatsCore
{
   function IsServerActive($ip, $port)
   {
      $fp = @fsockopen('udp://'.$ip, $port, $errno, $errstr, 0);
      @socket_set_timeout($fp, 1);
      $packet = 'SAMP';
      $packet .= chr(strtok($ip, '.'));
      $packet .= chr(strtok('.'));
      $packet .= chr(strtok('.'));
      $packet .= chr(strtok('.'));
      $packet .= chr($port & 0xFF);
      $packet .= chr($port >> 8 & 0xFF);
      
      @fwrite($fp, $packet.'i');
      if(@fread($fp, 11)) { fclose($fp); return true; }
      else { return false; }
   }
      
   function GetServerStats($ip, $port)
   {
      if(!SampStatsCore::IsServerActive($ip, $port)) { $return = "I can't connect to the server. Ple
ase check the configuration."; return $return; }
      $return .= '<table width="350" bgcolor="#000000" cellpadding="4" cellspacing="1" align="center" 
style="font-size: 11px;">';

      $fp = @fsockopen('udp://'.$ip, $port, $errno, $errstr, 0);
      socket_set_timeout($fp, 1);
      
      if(!$fp)
      {
         $return .= '<tr><td bgcolor="#CCCCCC">Socket Error: '.$errno.' - '.$errstr.'</td></tr>\n';
      }
      else
      {
         $packet = 'SAMP';
         $packet .= chr(strtok($ip, '.'));
         $packet .= chr(strtok('.'));
         $packet .= chr(strtok('.'));
         $packet .= chr(strtok('.'));
         $packet .= chr($port & 0xFF);
         $packet .= chr($port >> 8 & 0xFF);

         fwrite($fp, $packet.'i');
         fread($fp, 11);
         $is_passworded = ord(fread($fp, 1));
         $plr_count     = ord(fread($fp, 2));
         $max_plrs      = ord(fread($fp, 2));
         $strlen        = ord(fread($fp, 4));
         $hostname      = fread($fp, $strlen);
         $strlen        = ord(fread($fp, 4));
         $gamemode      = fread($fp, $strlen);
         $strlen        = ord(fread($fp, 4));
         $mapname       = fread($fp, $strlen);

         $return .= '      <tr><td bgcolor="#CCCCCC" colspan="2" align="center"><b>'.$hostname.'</b><
/td></tr>'."\r\n";
         $return .= '      <tr><td bgcolor="#CCCCCC" width="100">Players: </td><td bgcolor="#CCCCCC" 
width="250">'.$plr_count.' / '.$max_plrs.'</td></tr>'."\r\n";
         $return .= '      <tr><td bgcolor="#CCCCCC">GameMode: </td><td bgcolor="#CCCCCC">'.$gamemod
e.'</td></tr>'."\r\n";
         $return .= '      <tr><td bgcolor="#CCCCCC">MapName: </td><td bgcolor="#CCCCCC">'.$mapname.'<
/td></tr>'."\r\n";
         if($is_passworded) $return .= '<tr><td bgcolor="#CCCCCC">Passworded: </td><td bgcolor="#CCC
CCC">Yes</td></tr>'."\r\n";
         else $return .= '      <tr><td bgcolor="#CCCCCC">Passworded: </td><td bgcolor="#CCCCCC">No<
/td></tr>'."\r\n";

         fwrite($fp, $packet.'c');
         fread($fp, 11);
         $plr_count = ord(fread($fp, 2));
         if($plr_count > 0)
         {
            $return .= '    </table><br>'."\r\n";
            $return .= '    <table width="350" bgcolor="#000000" cellpadding="4" cellspacing="1" ali
gn="center">'."\r\n";
            $return .= '      <tr><td bgcolor="#CCCCCC" align="center" width="250"><b>Player</b></td><
td bgcolor="#CCCCCC" align="center" width="100"><b>Score</b></td></tr>'."\r\n";
            for($i=0; $i<$plr_count; $i++)
            {
               $strlen = ord(fread($fp, 1));
               $plrname = fread($fp, $strlen);
               $score = SampStatsCore::GetLong(fread($fp, 4));
               
               $return .= '      <tr><td bgcolor="#CCCCCC">'.$plrname.'</td><td bgcolor="#CCCCCC">'.
$score.'</td></tr>'."\r\n";
            }
         }
         fclose($fp);
      }
      $return .= "</table><br />";
      return $return;
   }
}
?>



PROBLEM: Es wirt mir immer angezeigt, dass der Server Off seie, hat jemand eine Idee, oder vllt.
eins das funktioniert?
dödel, 29.09.2008, 18:09
Entweder ist die IP und Port falsch oder dein Host lässt kein fsockopen zu, solltest vllt. mal
überprüfen ob fsockopen und alle anderen genutzen Funktionen verfügbar sind

//Edit:

socket_set_timeout($fp, 1);


die Zeit ist aber viiel zu gering o0
liegt vllt. auch daran :P
Rafioso, 29.09.2008, 18:12
ZitatTrexXx hat folgendes geschrieben:
Code:
1
2
3
<?php
echo 'SampStatsCore::GetServerStats(_HOST, $port)';
?>


Kannste vergessen ;)
TrexXx, 29.09.2008, 18:13
Sorry, dass ich so doof frage, aber ich habe kp was ich machen soll,

ZitatZitat:
Die zeit ist zu Kurz


Welche Zeit?

Und wo kann ich sockets zulassen?
dödel, 29.09.2008, 18:16
Achte lieber auch auf Rafis beitrag, die Funtkion fsockopen kannst du nicht zulassen, das kommt auf
deinen Hoster an, ob er diese Funktion erlaubt.
TrexXx, 29.09.2008, 19:39
ZitatRafioso hat folgendes geschrieben:
ZitatTrexXx hat folgendes geschrieben:
Code:
1
2
3
<?php
echo 'SampStatsCore::GetServerStats(_HOST, $port)';
?>


Kannste vergessen ;)


Wenn mein Anbieter die Funktion zulest, was er tut, da es in meinem Interface läuft, wieso geht das
nicht: echo 'SampStatsCore::GetServerStats(_HOST, $port)'; ?
Rafioso, 29.09.2008, 20:26
Weil du genauso
Code:
1
2
3
<?php
echo 'Ich heiße nicht wie du, denn was hier steht, interessiert keine Sau!';
?>

dort stehen haben könntest.

Kappiert?

TrexXx, 30.09.2008, 19:22
Jo! Thx, mal gucken obs funzt!
AndyAHg, 09.03.2009, 23:22
gegenfrage warum machst dus nicht so?

http://upload-ahg.de/hihi.php

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php

$ip = "195.34.83.80"; //schreib hier deine ip rein
$port = "7778"; // schreib hier dein port rein
//und gut is :D

if(SampStatsCore::IsServerActive($ip, $port)) { 

echo SampStatsCore::GetServerStats($ip, $port);

} else {
echo '<img src="offline.jpg" alt="Bild">';
}

class SampStatsCore
{
    function IsServerActive($ip, $port)
    {
        $fp = @fsockopen('udp://'.$ip, $port, $errno, $errstr, 0);
        @socket_set_timeout($fp, 1);
        $packet = 'SAMP';
        $packet .= chr(strtok($ip, '.'));
        $packet .= chr(strtok('.'));
        $packet .= chr(strtok('.'));
        $packet .= chr(strtok('.'));
        $packet .= chr($port & 0xFF);
        $packet .= chr($port >> 8 & 0xFF);
        
        @fwrite($fp, $packet.'i');
        if(@fread($fp, 11)) { fclose($fp); return true; }
        else { return false; }
    }
        
    function GetServerStats($ip, $port)
    {
        if(!SampStatsCore::IsServerActive($ip, $port)) { $return = "I can't connect to the server. P
lease check the configuration."; return $return; }
        $return .= '<table width="350" bgcolor="#000000" cellpadding="4" cellspacing="1" align="cent
er" style="font-size: 11px;">';

        $fp = @fsockopen('udp://'.$ip, $port, $errno, $errstr, 0);
        @socket_set_timeout($fp, 1);
        
        if(!$fp)
        {
            $return .= '<tr><td bgcolor="#CCCCCC">Socket Error: '.$errno.' - '.$errstr.'</td></tr>\n'
;
        }
        else
        {
echo "geht doch mfg [RSD]Andy";
            $packet = 'SAMP';
            $packet .= chr(strtok($ip, '.'));
            $packet .= chr(strtok('.'));
            $packet .= chr(strtok('.'));
            $packet .= chr(strtok('.'));
            $packet .= chr($port & 0xFF);
            $packet .= chr($port >> 8 & 0xFF);

            fwrite($fp, $packet.'i');
            fread($fp, 11);
            $is_passworded = ord(fread($fp, 1));
            $plr_count     = ord(fread($fp, 2));
            $max_plrs      = ord(fread($fp, 2));
            $strlen        = ord(fread($fp, 4));
            $hostname      = fread($fp, $strlen);
            $strlen        = ord(fread($fp, 4));
            $gamemode      = fread($fp, $strlen);
            $strlen        = ord(fread($fp, 4));
            $mapname       = fread($fp, $strlen);

            $return .= '      <tr><td bgcolor="#CCCCCC" colspan="2" align="center"><b>'.$hostname.'<
/b></td></tr>'."\r\n";
            $return .= '      <tr><td bgcolor="#CCCCCC" width="100">Players: </td><td bgcolor="#CCCC
CC" width="250">'.$plr_count.' / '.$max_plrs.'</td></tr>'."\r\n";
            $return .= '      <tr><td bgcolor="#CCCCCC">GameMode: </td><td bgcolor="#CCCCCC">'.$game
mode.'</td></tr>'."\r\n";
            $return .= '      <tr><td bgcolor="#CCCCCC">MapName: </td><td bgcolor="#CCCCCC">'.$mapna
me.'</td></tr>'."\r\n";
            if($is_passworded) $return .= '<tr><td bgcolor="#CCCCCC">Passworded: </td><td bgcolor="#
CCCCCC">Yes</td></tr>'."\r\n";
            else $return .= '      <tr><td bgcolor="#CCCCCC">Passworded: </td><td bgcolor="#CCCCCC">
No</td></tr>'."\r\n";

            fwrite($fp, $packet.'c');
            fread($fp, 11);
            $plr_count = ord(fread($fp, 2));
            if($plr_count > 0)
            {
                $return .= '    </table><br>'."\r\n";
                $return .= '    <table width="350" bgcolor="#000000" cellpadding="4" cellspacing="1" 
align="center">'."\r\n";
                $return .= '      <tr><td bgcolor="#CCCCCC" align="center" width="250"><b>Player</b><
/td><td bgcolor="#CCCCCC" align="center" width="100"><b>Score</b></td></tr>'."\r\n";
                for($i=0; $i<$plr_count; $i++)
                {
                    $strlen = ord(fread($fp, 1));
                    $plrname = fread($fp, $strlen);
                    $score = SampStatsCore::GetLong(fread($fp, 4));
                    $return .= '      <tr><td bgcolor="#CCCCCC">'.$plrname.'</td><td bgcolor="#CCCCC
C">'.$score.'</td></tr>'."\r\n";
                }
            }
            fclose($fp);
        }
        $return .= "</table><br />";
        return $return;
    }
   function GetLong($dat)
   {
      $num=0;
      if((ord(substr($dat,3,1)) & 128) > 0)
      {
         for($i = 0; $i < strlen($dat); $i++) $num -= ((255 - ord(substr($dat, $i, 1))) << 8 * $i);
         $num--;
      }
      else for($i = 0; $i < strlen($dat); $i++) $num += (ord(substr($dat, $i, 1)) << 8 * $i);
      return $num;
   }

}
?>


mfg andy
GTAvision.com :: Forumregeln :: FAQ :: Impressum :: Kontakt :: RDRvision.com :: LANOIREvision.com :: MaxPayneVision.com
NetVisionWork.NET
.: © 2006-2014 by GTAvision.com :.

Rockstar GamesTake-Two Interactive Deutschland

Free Grand Theft Auto Downloads