Просмотр полной версии : Бот для онлайн игрухи.
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, легче станет
Элементарно почитай для начала о функциях 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
окей окей уже разбираюсь
примерами реализации не поделитесь? кто нибудь писал? на что обратить внимание....
обрати внимание на то, что если это крупная онлайн игруля, то там наверняка предотвращают подобного рода баловство с ботами. Иначе сам подумай.. наверняка не ты первый, не ты последний, кому подобная идея пришла в голову -).
blood-looney
24.07.2008, 12:10
нет, не крупная
интересен сам процесс
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
сам хотел написать бота для Грез Войны, но мозгов не хватило)))
Мдя, что бы писать бот под онлайн игру, надо достаточно хорошо знать 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
дальше сам разберусь, буду изучать принципы работы этого премудрого языка.
;) главное есть точка отрыва
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot