PDA

Просмотр полной версии : Бот для онлайн игрухи.


blood-looney
23.07.2008, 15:55
Создание бота на php для он-лайн игры
я думаю не мне одному новичку будет это интересно. Спасибо всем помогающим!
------------------------------------------
Интересуют примеры ботов.
Полный новичок.
Мои представления:
Хочу написать на php. Бот должен аутефицироваться в игре, ходить по локациям : переход к новой локацией осуществляется: world.php?d=1&r=(номер локации)
атаковать противника world.php?a=am&mid=(номер противника)
а дальше как я понимаю нужен парсер, чтобы действовать во время боя.
Вообщем хотяб линками посоветуйте где что почитать можно =)

mouse.pro
23.07.2008, 16:10
Элементарно почитай для начала о функциях php, легче станет

mr.The
23.07.2008, 16:22
Элементарно почитай для начала о функциях php, легче станет
+1.

ТС, там парсить многоч чего нужно будет. почитай про регулярные выражения и сокеты в php, думаю нагуглить сможеш сам.

blood-looney
23.07.2008, 16:28
ок, буду разбираться

Carnivore.Sys
23.07.2008, 16:30
Элементарно почитай для начала о функциях php, легче станет
Да без этого уж никуда)))

blood-looney
24.07.2008, 09:43
окей окей уже разбираюсь
примерами реализации не поделитесь? кто нибудь писал? на что обратить внимание....

Rebz
24.07.2008, 09:46
обрати внимание на то, что если это крупная онлайн игруля, то там наверняка предотвращают подобного рода баловство с ботами. Иначе сам подумай.. наверняка не ты первый, не ты последний, кому подобная идея пришла в голову -).

blood-looney
24.07.2008, 12:10
нет, не крупная
интересен сам процесс

mr.The
24.07.2008, 12:13
Rebz, хооршую эмуляцию работы пользователя можно сделать всегда)

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

blood-looney
27.07.2008, 02:49
Нужна Ваша помощь.
Вот всё что наклипал. Делаю на примерах.
Хочу для начала пройти авторизацию, и перейти по локации.
Может быть в регулярном выражении preg_match дело? Не совсем понимаю как принять куки и проверить их.

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


<?
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>

blood-looney
27.07.2008, 10:28
подскажите в чём проблема? нихрена не работает
завтра пойду за книжкой и буду учить все эти трахнутые функции....
посмотрите код, кому не лень!
херово кукисы вытащены, да?

ZloY_MakcNM
27.07.2008, 14:11
сам хотел написать бота для Грез Войны, но мозгов не хватило)))

Solker
27.07.2008, 15:26
Мдя, что бы писать бот под онлайн игру, надо достаточно хорошо знать 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($host, 80, $errno, $errstr, 30);
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($fp, 1024);
fclose($fp);
}

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

$fp = fsockopen($host, 80, $errno, $errstr, 30);
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($fp, 1024);
fclose($fp);
}

?>

blood-looney
27.07.2008, 17:13
CПАСИБО тебе, solker
дальше сам разберусь, буду изучать принципы работы этого премудрого языка.
;) главное есть точка отрыва