[Движок] Ищу движок мастер сервера на PHP для cs 1.6

Тема в разделе "Игровые движки", создана пользователем new_forward, 12 июл 2012.

  1. new_forward

    new_forward

    Регистр.:
    5 май 2008
    Сообщения:
    668
    Симпатии:
    44
    Доброго времени суток!

    Ищу движок мастер сервера на PHP для cs 1.6 если есть такой....

    Если кто продает пишите...
     
  2. N3XTG3N

    N3XTG3N Писатель

    Регистр.:
    30 ноя 2012
    Сообщения:
    2
    Симпатии:
    0
    See this... :)

    <?php
    error_reporting(E_ALL);
    function outs(&$string,$del=1){
    $c=strpos($string,0);
    if($c===false)
    return false;
    else{
    $r=substr($string,0,$c);
    if($del)
    $string=substr($string,$c+1);
    return $r;
    }
    }
    function outsn(&$string,$n=1,$del=1){
    $c=substr($string,0,$n);
    if($del)
    $string="".substr($string,$n);
    return $c;
    }
    function outb(&$string,$del=1){
    if(!strlen($string))
    return $string;
    else{
    $r=ord($string[0]);
    if($del)
    $string=substr($string,1);
    return $r;
    }
    }
    function outi(&$string,$del=1){
    if(strlen($string)<2)
    return $string;
    else{
    $r=unpack('s',$string[0].$string[1]);
    if($del)
    $string=substr($string,2);
    return $r[1];
    }
    }
    function outl(&$string,$del=1){
    if(strlen($string)<4)
    return $string;
    else{
    $r=unpack('L',$string[0].$string[1].$string[2].$string[3]);
    if($del)
    $string=substr($string,4);
    if($r[1]<0){
    $r[1]+=pow(2,32);
    }
    return $r[1];
    }
    }
    function outf(&$string,$del=1){
    if(strlen($string)<4)
    return $string;
    else{
    $r=unpack('f',$string[0].$string[1].$string[2].$string[3]);
    if($del)
    $string=substr($string,4);
    return $r[1];
    }
    }


    function svhl($hostname,$port=27015,$gethost=false,$socket=false){
    $maxlen = 65536;
    $host=$hostname;
    if($host===false){
    return false;
    }
    $sig = "\xFF\xFF\xFF\xFF";
    $q_info = $sig."TSource Engine Query\x00";
    $q_ping = $sig."i";
    $q_players = $sig."U";
    $q_rules = $sig."V";
    $response = "";
    $ret['ping']='?';
    $ret['type']=false;
    $resp_info1=$resp_info2=$resp_player=$resp_rules=$challenge=false;
    if(gettype($socket)!=='resource')
    $socket=@fsockopen('udp://'.$host, $port, $errno, $errstr, 1);
    if(gettype($socket)!=='resource'){
    return false;
    }
    stream_set_timeout($socket,1);
    //ping
    $st=microtime(true);
    $snt=fwrite($socket,$q_ping);
    if($snt)
    $response=fread($socket,$maxlen);
    if($snt&&$response){
    $response=substr($response,4);
    $en=microtime(true);
    if($response[0]=="j"){
    $ret['ping']=round(($en-$st)*1000);
    }else{
    //return false;
    }
    }
    //A2S_INFO
    $st=microtime(true);
    $snt=fwrite($socket,$q_info);
    if($snt)
    $response=fread($socket,$maxlen);
    else{
    echo 'cant send a2s_info';
    return false;
    }
    if($snt&&strlen($response)){
    $response=substr($response,4);
    $en=microtime(true);
    if($ret['ping']=='?'){
    $ret['ping']=round(($en-$st)*1000);
    }
    $rep=outb($response);
    switch($rep){
    case ord('I':(
    $resp_info2=$response;
    $ret['type']='48';
    break;
    case ord('m':(
    $resp_info1=$response;
    $ret['type']='47';
    if($response2=@fread($socket,$maxlen)){
    $response2=substr($response2,4);
    $rep2=outb($response2);
    switch($rep2){
    case ord('I':(
    $resp_info2=$response2;
    $ret['type']='47+48';
    break;
    case ord('D':(
    $resp_player=$response2;
    break;
    default:
    break;
    }
    if($resp_info2||$resp_player){
    if($response3=@fread($socket,$maxlen)){
    $response3=substr($response3,4);
    $rep3=outb($response3);
    if($resp_player&&$rep3==ord('I')){
    $resp_info2=$response3;
    $ret['type']='47+48';
    }elseif($resp_info2&&$rep3==ord('D')){
    $resp_player=$response3;
    }
    }
    }
    }
    break;
    default:
    return false;
    break;
    }
    }else{
    return false;
    }
    if(!$resp_player){
    //A2S_PLAYER (+challenge)
    fwrite($socket,$q_players.$sig);
    $response=substr(fread($socket,$maxlen),4);
    $rep=outb($response);
    if($rep==ord('A')){
    $challenge=$response;
    fwrite($socket,$q_players.$challenge);
    $response=substr(fread($socket,$maxlen),4);
    $rep=outb($response);
    }
    if($rep==ord('D')){
    $resp_player=$response;
    if($ret['type']=='47'){
    fwrite($socket,$q_players);
    $response=fread($socket,$maxlen);
    if(substr($response,4,1)=='I'){
    $ret['type']='47+48';///NOT NEEEED!!! 28.04.2011
    }
    }
    }
    }
    //A2S_RULES
    $tose=$q_rules.($challenge===false?($ret['type']=='47+48'?$sig:'':($challenge);//?why? 28.04.2011
    fwrite($socket,$tose);
    $response=fread($socket,$maxlen);
    $qq=outl($response);
    if($qq==4294967294){
    outb($response);outb($response);outb($response);outb($response);
    $i=outb($response);
    outb($response);outb($response);outb($response);outb($response);
    $rep=outb($response);
    if($rep==ord('E')){
    $resp_rules=$response;
    $i--;
    }else{
    $i=0;
    }
    while($i>0){
    if($response2=@fread($socket,$maxlen)){
    outl($response2);outb($response2);outb($response2);outb($response2);outb($response2);outb($response2);
    $resp_rules.=$response2;
    }else{
    break;
    }
    $i--;
    }
    }
    if($qq==4294967295){
    $rep=outb($response);
    if($rep==ord('E'))
    $resp_rules=$response;
    }
    fclose($socket);
    //Processing datas
    if($resp_info1){
    $ret['gameip']=outs($resp_info1);
    $ret['name']=outs($resp_info1);
    $ret['map']=outs($resp_info1);
    $ret['gamedir']=outs($resp_info1);
    $ret['gamedescription']=outs($resp_info1);
    $ret['num_players']=outb($resp_info1);
    $ret['max_players']=outb($resp_info1);
    $ret['vers']=outb($resp_info1);
    $ret['dedicated']=chr(outb($resp_info1));
    $ret['os']=chr(outb($resp_info1));
    $ret['password']=outb($resp_info1);
    $ret['ismod']=outb($resp_info1);
    if($ret['ismod']){
    $ret['urlinfo']=outs($resp_info1);
    $ret['urldl']=outs($resp_info1);
    outb($resp_info1);
    $ret['modvers']=outl($resp_info1);
    $ret['modsize']=outl($resp_info1);
    $ret['svonly']=outb($resp_info1);
    $ret['cldll']=outb($resp_info1);
    }
    $ret['secure']=outb($resp_info1);
    $ret['bots']=outb($resp_info1);
    }
    if($resp_info2){
    $ret['vers']=outb($resp_info2);
    $ret['name']=outs($resp_info2);
    $ret['map']=outs($resp_info2);
    $ret['gamedir']=outs($resp_info2);
    $ret['gamedescription']=outs($resp_info2);
    $ret['appid']=outi($resp_info2);
    $ret['num_players']=outb($resp_info2);
    $ret['max_players']=outb($resp_info2);
    $ret['bots']=outb($resp_info2);
    $ret['dedicated']=chr(outb($resp_info2));
    $ret['os']=chr(outb($resp_info2));
    $ret['password']=outb($resp_info2);
    $ret['secure']=outb($resp_info2);
    //Don't know if is source server or ship server, so stop parsing here. MUNTY
    }
    if($resp_player){
    $num_players=outb($resp_player);
    $players_on=array();
    for($i=1;$i<=$num_players;$i++){
    $players_on[$i]['i']=outb($resp_player);
    $players_on[$i]['name']=outs($resp_player);
    $players_on[$i]['frags']=outl($resp_player);
    $players_on[$i]['time']=outf($resp_player);
    }
    $ret['players']=$players_on;
    }
    if($resp_rules){
    $num_rules=outb($resp_rules);
    $ret['num_rules']=$num_rules;
    outs($resp_rules);
    $a=array();
    for($i=0;1;$i++){
    $j1=outs($resp_rules);
    $j2=outs($resp_rules);
    if($j1===false&&$j2===false)
    break;
    else
    $a[$i]=array($j1,$j2);
    }
    $ret['rules']=$a;
    }
    return $ret;
    }
    ?>
     
  3. HENRI

    HENRI Создатель

    Регистр.:
    17 янв 2013
    Сообщения:
    13
    Симпатии:
    6
    Не знаю, что он тебе скинул..
    Перейти по ссылке, должно помочь, а так в сети пишут, что такое удовольствие стоит примерно 300$, не знаю вранье или нет..
    Нашел бесплатный, но в нем так и не разобрался т.к. он написан через заднее место..(