class-call-of-duty-server-stats

Gesponsorde koppelingen

PHP script bestanden

  1. class-call-of-duty-server-stats

« Lees de omschrijving en reacties

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php
   class cod
   {
      private $gamedata;
      public  $error      = false;
      public  $serverip   = '84.244.180.66';
      public  $serverport = 28960;
      public  $player     = Array ();
      public  $score      = Array ();
      public  $ping       = Array ();
      public  $players    = 0;
      public  $errormsg;
      
      
      public function set_ip ($ip, $port, $start = false)
      {

         if (is_numeric (str_replace (".", "", $ip)) && is_numeric ($port))
         {

            $this->serverip   = $ip;
            $this->serverport = $port;
         }

         else
         {
            $this->set_error ("De IP en / of Port is niet geldig.");
         }

         if ($start)
         {

            $this->start ();
         }
      }

      
      
      public function start ()
      {

         if (!empty ($gamedata))
         {

            $this->set_error ("Lees A.U.B. de uitleg onderaan de class.");
         }

        
         $sock = fsockopen ('udp://' . $this->serverip, $this->serverport);
        
            if ($sock && !$this->error)
            {

               fwrite ($sock, 'ÿÿÿÿ getstatus');
               fread  ($sock, 4);
               $status = stream_get_meta_data ($sock);
              
               if ($status['unread_bytes'] == 0)
               {

                  echo "Error reading status";
                  exit;
               }

              
               $data = explode ("\n", fread ($sock, $status['unread_bytes']));
               array_shift ($data);
               $this->gamedata = explode ("\\", array_shift ($data));
              
               foreach ($data as $i => $player)
               {

                  preg_match  ('#([0-9]+) ([0-9]+) "(.*)"#', $player, $stat);
                
                  array_shift ($stat);
                  
                  if (!empty ($stat))
                  {

                     $this->score[$i]  = $stat[0];
                     $this->ping[$i]   = $stat[1];
                     $this->player[$i] = $stat[2];
                  }
               }

              
               $this->players = count ($this->player);
            }

            else
            {
               $this->set_error ("Kon niet verbinden met " . $this->serverip . ":" . $this->serverport . "!");
            }
      }

      
      
      public function get_data ($one)
      {

         for ($i = 1; $i < count ($this->gamedata); $i++)
         {

            if ($this->gamedata[$i] == $one)
            {

               return $this->gamedata[$i + 1];
            }
         }

      
        return "Unknown";      
     }

    
    
     private function set_error ($emsg)
     {

        $this->error      = true;
        $this->errormsg   = $emsg;
     }
   }

  
  
  
   /* UITLEG
    
     Zo roepen we de class aan:
       $cod = new cod ();
    
     Daarna zetten we de IP van de server waar we de status van af gaan halen door dat zo te doen:
       $cod->set_ip ("ip", port);
    
     Omdat we kunnen kiezen of de class meteen de informatie van de server moet halen of niet, kunnen we een 3e parameter toevoegen:
       $cod->set_ip ("ip", port, true); // De class haalt meteen de server info op.
    
     Als we de 3e parameter NIET gebruiken, moeten we zelf de class met de server laten verbinden door dat zo te doen:
       $cod->start ();
    
     Als we geen errors voor onze neus krijgen, worden er een aantal vab. gevult met data over de players & server informatie:
       $cod->player;  (Array, bevat alle players op de server.)
       $cod->ping;    (Array, bevat de ping van alle players op de server.)
       $cod->score;   (Array, bevat de score van alle players op de server.)
       $cod->players; (INT, bevat het aantal players op de server.)
    
     Hieronder staat een voorbeeld hoe het eruit zou moeten zien:
   */

  
  
  
   $cod = new cod ();
  
   // Deze functie is nu weggelaten, zodat de class verbinding maakt met een andere CoD server.
   //$cod->set_ip ("0.0.0.0", 0000);

  
   $cod->start();
  
  
      if (!$cod->error)
      {

         echo "<b>" . $cod->serverip . ":" . $cod->serverport . "</b><br /><br />";
         echo "Player 1 met naam: <b>" . $cod->player[0] . "</b>.<br />";
         echo "Heeft een ping van: <b>" . $cod->ping[0] . "</b>.<br />";
         echo "En z'n score is: <b>" . $cod->score[0] . "</b>.<br /><br />";
         echo "Er zijn(is) <b>" . $cod->players . "</b> player(s) op de server!";
      }

      else
      {
         echo $cod->errormsg;
         exit;
      }

?>

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.