function Decode_Rule_Packet($packet) { $serverrules = array(); $datastart = 0; GetInt32($packet, $datastart); $type = GetInt8($packet, $datastart); $rules = GetInt16($packet, $datastart); if ($rules == 0) { return false; } for ($i = 1; $i <= $rules; $i++) { $rulename = GetString($packet, $datastart); $rulevalue = GetString($packet, $datastart); $serverrules[$rulename] = $rulevalue; } return $serverrules; }
/** * get 32 int * @param string $data * @param int $datastart */ function GetInt32($data, &$datastart) { $temp = ''; $temp = GetInt8($data, $datastart) + (GetInt8($data, $datastart) << 8) + (GetInt8($data, $datastart) << 16) + (GetInt8($data, $datastart) << 24); return $temp; }