Бот для онлайн игрухи.

Discussion in 'PHP' started by blood-looney, 23 Jul 2008.

  1. blood-looney

    blood-looney Elder - Старейшина

    Joined:
    21 May 2008
    Messages:
    2
    Likes Received:
    4
    Reputations:
    -5
    Создание бота на php для он-лайн игры
    я думаю не мне одному новичку будет это интересно. Спасибо всем помогающим!
    ------------------------------------------
    Интересуют примеры ботов.
    Полный новичок.
    Мои представления:
    Хочу написать на php. Бот должен аутефицироваться в игре, ходить по локациям : переход к новой локацией осуществляется: world.php?d=1&r=(номер локации)
    атаковать противника world.php?a=am&mid=(номер противника)
    а дальше как я понимаю нужен парсер, чтобы действовать во время боя.
    Вообщем хотяб линками посоветуйте где что почитать можно =)
     
    #1 blood-looney, 23 Jul 2008
    Last edited: 27 Jul 2008
  2. mouse.pro

    mouse.pro Elder - Старейшина

    Joined:
    6 Dec 2006
    Messages:
    113
    Likes Received:
    73
    Reputations:
    14
    Элементарно почитай для начала о функциях php, легче станет
     
    1 person likes this.
  3. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    +1.

    ТС, там парсить многоч чего нужно будет. почитай про регулярные выражения и сокеты в php, думаю нагуглить сможеш сам.
     
    #3 mr.The, 23 Jul 2008
    Last edited: 23 Jul 2008
  4. blood-looney

    blood-looney Elder - Старейшина

    Joined:
    21 May 2008
    Messages:
    2
    Likes Received:
    4
    Reputations:
    -5
    ок, буду разбираться
     
  5. Carnivore.Sys

    Carnivore.Sys Elder - Старейшина

    Joined:
    12 Jul 2008
    Messages:
    50
    Likes Received:
    140
    Reputations:
    -5
    Да без этого уж никуда)))
     
  6. blood-looney

    blood-looney Elder - Старейшина

    Joined:
    21 May 2008
    Messages:
    2
    Likes Received:
    4
    Reputations:
    -5
    окей окей уже разбираюсь
    примерами реализации не поделитесь? кто нибудь писал? на что обратить внимание....
     
  7. Rebz

    Rebz Super Moderator
    Staff Member

    Joined:
    8 Nov 2004
    Messages:
    4,055
    Likes Received:
    1,532
    Reputations:
    1,128
    обрати внимание на то, что если это крупная онлайн игруля, то там наверняка предотвращают подобного рода баловство с ботами. Иначе сам подумай.. наверняка не ты первый, не ты последний, кому подобная идея пришла в голову -).
     
  8. blood-looney

    blood-looney Elder - Старейшина

    Joined:
    21 May 2008
    Messages:
    2
    Likes Received:
    4
    Reputations:
    -5
    нет, не крупная
    интересен сам процесс
     
  9. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    Rebz, хооршую эмуляцию работы пользователя можно сделать всегда)

    я не писал. но по опыту написания автокликеров скажу: обязательно делай рандомные паузы между запросами на сервер. 5-30 секунд думаю подойдёт. в некоторых случаях нужно загружить картинки со страницы. я видел подобного рода проверку.
    незвбывай проверять не установила ли страница куки. и передавать их дальше. и самостоятельно разберись со всеми Java скриптами на страницах.
     
  10. blood-looney

    blood-looney Elder - Старейшина

    Joined:
    21 May 2008
    Messages:
    2
    Likes Received:
    4
    Reputations:
    -5
    Нужна Ваша помощь.
    Вот всё что наклипал. Делаю на примерах.
    Хочу для начала пройти авторизацию, и перейти по локации.
    Может быть в регулярном выражении preg_match дело? Не совсем понимаю как принять куки и проверить их.

    Перс нулённый chi прописан.


    PHP:
    <?
    error_reporting(0); 
    set_time_limit(0); 
    # Переменные 
    $user_agent "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"

    $name strip_tags($_POST['name'], ""); 
    $password strip_tags($_POST['password'], ""); 

    ?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
    <title>Бот</title> 
    </head> 
    <?php 
    if ($_POST['submit']) { 
    # соедининение с ксином
    $fp=fsockopen("xin.ru",80,$errno,$errstr,10); 
    if (!
    fp) {die();} 
    # Авторизуемся 
    $out "GET /login.php?name=chi&password=123456 HTTP/1.0\r\n"
    $out .= "Host: xin.ru\r\n"
    $out .= "User-Agent: ".$user_agent."\r\n"
    $out .= "Cookie: income=1\r\n"
    $out .= "Content-Type:text/xml; charset=windows-1251\r\n\r\n"
    fwrite($fp,$out); 
    $ans=''
    while(!
    feof($fp))  

        
    $ans.=fgets($fp,128); 

    fclose($fp); 
    # вытаскивание куков 
    preg_match_all("/Set-Cookie\: (\S*)=(\S*)(|;)/"$res$cookie); 
        for ( 
    $i=0$i<count($cookie[0]); $i++ ) 
        { 
            
    $cookie[0][$i] = str_replace("Set-Cookie: """$cookie[0][$i]); 

            if ( !
    strpos($cookies$cookie[0][$i]) ) 
            { 
                
    $cookies .= $cookie[0][$i].' '
            } 
        } 
    # новое соединение 
    for($i=$begin;$i<$end;$i++) { 
    $fp=fsockopen("xin.ru",80,$errno,$errstr,10); 
    $out  "GET /world.php?d=3&r=18 HTTP/1.0\r\n";   
    $out .= "Host: xin.ru\r\n";  
    $out .= "User-Agent: ".$user_agent."\r\n";  
    $out .= "Cookie: ".$cookies."\r\n\r\n"
    fwrite($fp$out); 
    $ans=''
    while(!
    feof($fp)) 

        
    $ans.=fgets($fp,128); 

    ?> 
    </html>
     
    #10 blood-looney, 27 Jul 2008
    Last edited: 27 Jul 2008
  11. blood-looney

    blood-looney Elder - Старейшина

    Joined:
    21 May 2008
    Messages:
    2
    Likes Received:
    4
    Reputations:
    -5
    подскажите в чём проблема? нихрена не работает
    завтра пойду за книжкой и буду учить все эти трахнутые функции....
    посмотрите код, кому не лень!
    херово кукисы вытащены, да?
     
  12. ZloY_MakcNM

    ZloY_MakcNM Elder - Старейшина

    Joined:
    29 May 2008
    Messages:
    71
    Likes Received:
    14
    Reputations:
    0
    сам хотел написать бота для Грез Войны, но мозгов не хватило)))
     
  13. Solker

    Solker Elder - Старейшина

    Joined:
    4 May 2006
    Messages:
    175
    Likes Received:
    53
    Reputations:
    18
    Мдя, что бы писать бот под онлайн игру, надо достаточно хорошо знать PHP и хотя бы иметь представление о сокетах и их работе.
    Ты скинул код - это абсолютная лажа. Ты просто, где-то нашел куски и начал их вставлять, как и ожидалось, получился бред.

    Вот, это код авторизации, попробуй понять его.

    PHP:
    <?php  

    set_time_limit
    (0);  

    $user_agent "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11";  
    $host 'www.xin.ru';

    $name 'Funikuler';  
    $password 'Funt321';  

    $fp fsockopen($host80$errno$errstr30);
    if (!
    $fp) {
        echo 
    "$errstr ($errno)<br />\n";
    } else {
        
    $date "name=$name&password=$password";

        
    $out "POST /login.php HTTP/1.1\r\n";
        
    $out .= "Host: $host\r\n";
        
    $out .= "User-Agent: $user_agent\r\n";
        
    $out .= "Connection: keep-alive\r\n";
        
    $out .= "Keep-Alive: 300\r\n";
        
    $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
        
    $out .= "Content-Length: ".strlen($date)."\r\n\r\n";

        
    fwrite($fp$out.$date);
        while (!
    feof($fp)) $result .= fgets($fp1024);
        
    fclose($fp);
    }

    preg_match('#Set-Cookie: PHPSESSID=([^;]+);#i'$result$matches); // matches[1] - Cookies

    $fp fsockopen($host80$errno$errstr30);
    if (!
    $fp) {
        echo 
    "$errstr ($errno)<br />\n";
    } else {
        
    $out "GET /world.php HTTP/1.1\r\n";
        
    $out .= "Host: $host\r\n";
        
    $out .= "User-Agent: $user_agent\r\n";
        
    $out .= "Connection: keep-alive\r\n";
        
    $out .= "Cookie: PHPSESSID={$matches[1]}\r\n";
        
    $out .= "Cookie2: \$Version=1\r\n\r\n";

        
    fwrite($fp$out);
        while (!
    feof($fp)) echo fgets($fp1024);
        
    fclose($fp);


    ?> 
     
  14. blood-looney

    blood-looney Elder - Старейшина

    Joined:
    21 May 2008
    Messages:
    2
    Likes Received:
    4
    Reputations:
    -5
    CПАСИБО тебе, solker
    дальше сам разберусь, буду изучать принципы работы этого премудрого языка.
    ;) главное есть точка отрыва
     
    #14 blood-looney, 27 Jul 2008
    Last edited: 27 Jul 2008