Skip to content

Instantly share code, notes, and snippets.

@Neznakomec
Created January 31, 2015 21:30
Show Gist options
  • Save Neznakomec/f16a95eb23bb32b49571 to your computer and use it in GitHub Desktop.
Save Neznakomec/f16a95eb23bb32b49571 to your computer and use it in GitHub Desktop.
bot work module
<?
//трудоустраивает на предприятие
$tp=0;$error_object_go=0;unset($error_object_bad);$error_object_bad[]='x'; //сбрасываем инфу
//общий цикл
for($x6=0;$x6<2;++$x6){
//**********************ДЕЙСТВИЯ В home.php
if(!in_array(2,$m_noacces) and !close_modul(2) and (($tp!=1 and (check_text(1,'object-info.php') || check_text(1,'object_do.php') || (!check_text(1,'home.php') and rand(0,5)==1))) || check_text(1,'home.php'))){
include($dir.'/functions/moduls/home.php'); //подключаем модуль своей страницы
if($expectation_work>0)break;
}
//**********************ДЕЙСТВИЯ В map.php
if(!check_text(1,'map.php')){
loged('переходим на карту');
//переходим на карту
if(!$element->click_on_element_by_inner_text(trans_lang('Карта')))close_modul(6,'Карта',1);
elseif(!go('map.php') || !check_text(1,'map.php')){close_modul(6,'при заходе на карту, перешли на другую страницу');break;}
}
rand_sleep(1,3); //осматриваем производства
if(!in_array(3,$m_noacces) and !close_modul(3) and $emul_map_neytral==1 and $game_neytral_propusk!=0)include($dir.'/functions/moduls/map_neytral.php'); //подключение модуля пропуска нейтралов
$waittime=time(); //подсчет сколько тратится на поиск работы
$work_type_map=1; //сбрасываем инфу на тип карты где больше зарплата
//поиск производства и последующий переход
while($game_work_search_time>(time()-$waittime)){
$tp=0;
if($game_server=='ru'){
$arr_html1=explode('<TD class=wbwhite><B>Тип</B></TD>',$webpage->get_source());
$arr_html2=explode('<a href=\'ecostat.php\'><b>Статистика</b></a>',$arr_html1[1]);
}
else{
$arr_html1=explode('<TD class=wbwhite><B>Type </B></TD>',$webpage->get_source());
$arr_html2=explode('<a href=\'ecostat.php\'><b>Statistics</b></a><BR>',$arr_html1[1]);
}
if($arr_html2[0]==''){close_modul(6,'изменилась навигация для объектов карты');break;}
//берем все предприятия (где >>>) на которые можно перейти
if($game_work_search_object==0 || check_text(0,'<b>'.$ar_map_type[2].'</b>'))preg_match_all('/<b>([0-9]{3,4})<\/b>&nbsp;<\/td><td class=wbwhite >&nbsp;<a href=\'object-info.php\?id=([0-9]{1,4})\' style=\'text-decoration:none;\'>&raquo;&raquo;&raquo;<\/a>&nbsp;<\/td><\/tr>/',$arr_html2[0],$array_url_oject);
$object_good=''; //сбрасываем инфу
//смотрим предприятия по фильтру, отбрасываем все что: в массиве $error_object_bad, по конфигу с маленьким зарплатой, не имеет имени по которой можно нажать
if(count($array_url_oject[2])>0)foreach($array_url_oject[2] as $row)if(!in_array($row,$error_object_bad) and $array_url_oject[1][0]>=$game_work_zarplata_min and preg_match('/<tr><td class=(.*?) >&nbsp;<a href=\'object-info.php\?id='.$row.'\'>(.*?)<\/a>&nbsp;<\/td>/',$arr_html2[0],$array_name_oject)){$object_good=$row;break;}
if($object_good==''){
if($game_work_search_object==0 || check_text(0,'<b>'.$ar_map_type[2].'</b>'))loged('нет свободных для работы объектов');
else loged('такие объекты для работы пока не подходят');
//переход на другой тип карты
if(($game_work_search_object==0 and rand(0,4)!=1) || (($game_work_search_object==1 || $game_work_search_object==2) and !check_text(0,'<b>'.$ar_map_type[2].'</b>'))){
rand_sleep(2,4); //ожидаем
if ($game_work_search_object==1)$work_type_map=0;
if(($game_work_search_object==1 and ($game_work_search_time*0.7)>(time()-$waittime)))$work_type_map=1;
if(($game_work_search_object==1 and ($game_work_search_time*0.4)>(time()-$waittime)) ||$game_work_search_object==2)$work_type_map=2;
loged('меняем тип карты на '.$ar_map_type[$work_type_map]);
$anchor->click_by_inner_text($ar_map_type[$work_type_map],'true'); //переходим на другой тип карты
go('map.php');
}
elseif($anchor->click_by_inner_text($ar_map_type[$work_type_map],'true') and go('map.php')){rand_sleep(4,11);loged('обновили объекты');} //нажимаем на текущий тип карты, для обновления
}
elseif(!$anchor->click_by_inner_text($array_name_oject[2],true)){++$error_object_go;loged('не смогли перейти на объект '.$array_name_oject[2]);}
elseif(go('object-info.php') and check_text(1,'object-info.php')){$tp=1;loged('перешли на объект '.$array_name_oject[2]);break;}
else{++$error_object_go;loged('не смогли зайти на объект '.$array_name_oject[2]);}
if($error_object_go==2){close_modul(6,'постоянные ошибки при переходах на объекты');break;}
elseif((time()-$waittime)>=$game_work_search_time){loged('поиск объектов для работы закончился неудачей');rand_sleep(5,12);} //если достигли конца цикла
}
if(close_modul(6))break; //если в предыдущем цикле был заблокирован модуль, отключаем
//**********************ДЕЙСТВИЯ В object-info.php
if($tp==1){
for($i4=0;$i4<3;$i4++){
if(preg_match('/([.0-9]{3}) '.trans_lang('штраф трудоголика').'/',$webpage->get_source(),$array_shtraf_trudogolik) and $game_work_close_shtraf_trugogolik>$array_shtraf_trudogolik[1]){$x6=2;if($game_work_close_shtraf_trugogolik_stop==1)stop_bot('штраф трудоголика превысил допустимое');else close_modul(6,'штраф трудоголика превысил допустимое');break;}
elseif(check_text(0,trans_lang('Прошло меньше часа с последнего устройства на работу. Ждите.')) || check_text(0,trans_lang('Вы уже устроены.'))){
loged('трудоустройство уже было');
if(!in_array(2,$m_noacces) and !close_modul(2))include($dir.'/functions/moduls/home.php'); //подключение модуля личная страница
else {put_tempfile('data/modul_work_'.$game_server.'_indate.txt',time()+300);}
$x6=2;break;
}
elseif(check_text(0,trans_lang('Нет рабочих мест.'))){$error_object_bad[]=$object_good;$x6=0;loged('нет мест для работы');rand_sleep(2,5);break;}
elseif(check_text(0,trans_lang('На объекте недостаточно золота.'))){$error_object_bad[]=$object_good;$x6=0;loged('у предприятия не хватает золота для работы');rand_sleep(1,2);break;}
elseif(check_text(0,trans_lang('На объекте недостаточно ресурсов для производства.'))){$error_object_bad[]=$object_good;$x6=0;loged('не хватает ресурсов у предприятия');rand_sleep(1,3);break;}
elseif(!check_text(0,'work_codes/')){$x6=2;close_modul(6,'нет подпапки на картинку');break;}
else{
$waittime=time(); //подсчет за сколько разгадала капча код
if(strlen($captcha_kod)==6)loged('взяли недавно разгаданный код капчи');
else{
$captcha_name='work_'.time().'_'.rand(99,10000).'.jpg'; //создаем имя картинке капчи
if(!$image->save_to_file_by_url('work_codes/',$dir.'/temp/captcha/'.$captcha_name,'false')){$captcha_kod='';close_modul(6,'не получилось сохранить картинку');$x6=2;break;}
else{
loged('взяли картинку для разгадывания');
//разгадывание по антикапче
if($game_vvod_kapcha==1 and $anticaptcha_key!=''){
if(rand(0,2)==1)$captcha_kod=anticaptcha_v2_search($dir.'/temp/captcha/'.$captcha_name,6,$object_good);
else $captcha_kod=anticaptcha_v1_sleep($dir.'/temp/captcha/'.$captcha_name,6);
}
elseif($game_vvod_kapcha==2 and $captchabot_key!=''){
$oc=new OCR();
$captcha_kod = $oc->Recognize($dir.'/temp/captcha/'.$captcha_name,$captchabot_key);
}
//разгадывание по капчаботу
else{$keyboard->set_current_language('en');$captcha_kod=$app->dlg_captcha_from_url_exactly('work_codes/',false);} //ручное разгадывание
$captcha_kod=trim($captcha_kod); //убираем лишнее из кода капчи
loged('код '.$captcha_kod.' разгадан за '.(time()-$waittime).' сек.');
}}
if((time()-$waittime)>85 || $captcha_kod=='' || $error_captcha_kod_bad==3){
$x6=2;
if((time()-$waittime)>85)loged('при разгадывании прошло много времени');
elseif($error_captcha_kod_bad==3)loged('при разгадывании прошло много попыток разгадываний');
else loged('код капчи не был разгадан');
loged('блокируем модуль на '.($rand=rand(100,350)).' сек.');
put_tempfile('data/modul_work_'.$game_server.'_indate.txt',(time()+$rand)); //временно блокируем модуль бота из за недоступности сервиса
break;
}
elseif(strlen($captcha_kod)!=6){loged('у кода "'.$captcha_kod.'" неправильное кол-во символов');++$error_captcha_kod_bad;$captcha_kod='';}
elseif(!check_text(0,'work_codes/')){loged('капчи уже нет');break;}
else{
click_work_flash($captcha_kod); //вводим код капчи и нажимаем на флеш кнопку
if($game_minimize_to_tray==1)$app->minimize_to_tray(); //сворачиваем в трей, если в настроках прописано
if(!go('object_do.php') || !check_text(1,'object_do.php')){
++$error_object_flash;
loged('не смогли нажать на кнопку отправки');
if($error_object_flash==3){
put_tempfile('data/modul_work_'.$game_server.'_indate.txt',(time()+rand(50,300))); //блокируем запуск модуля на 30-40 минут
$error_object_flash=0;
$x6=2;
break;
}
}
elseif(check_text(0,trans_lang('Вы устроены на работу'))){
++$num_all_trud;
loged($num_all_trud.' трудоустройство успешно произведено');
put_tempfile('data/modul_work_'.$game_server.'_indate.txt',(time()+rand(1800,2200))); //блокируем запуск модуля на 30-40 минут
@rename($dir.'/temp/captcha/'.$captcha_name,$dir.'/temp/captcha/'.$captcha_kod.'.jpg'); //переименовываем имя картинки капчи на имя с кодом капчи
$error_object_flash=0;$error_captcha_kod_bad=0;$captcha_kod=''; //сбрасываем инфу
$x6=2; //делаем выходит из общего цикла
if(rand(0,5)!=1 and !in_array(2,$m_noacces) and !close_modul(2)){
rand_sleep(1,4);
include($dir.'/functions/moduls/home.php');
}
break;
}
else{
if(check_text(0,trans_lang('Введен неправильный код'))){loged('введен неправильный код');++$error_captcha_kod_bad;$captcha_kod='';}
else loged('выведенa неизвестная информация');
if($i4!=1 and rand(0,2)==1)break; //выходим по рандому
rand_sleep(0,3);
if($anchor->click_by_inner_text(trans_lang('Назад'),'true') and go('object-info.php'))loged('перешли назад на производство');
}
if(file_exists($dir.'/temp/captcha/'.$captcha_name))unlink($dir.'/temp/captcha/'.$captcha_name); //удяляем старую капчу
}}}
}
//если модуль временно не блокирован и уже пошел выход из общего цикла, то временно блокируем модуль работы
if((time()-read_tempfile('data/modul_work_'.$game_server.'_indate.txt'))>=0 and ($x6==1 || $error_captcha_kod_bad==3)){
$error_captcha_kod_bad==0; //сбрасываем инфу
loged('блокируем модуль на '.($rand=rand(40,210)).' сек.');
put_tempfile('data/modul_work_'.$game_server.'_indate.txt',(time()+$rand)); //блокируем запуск модуля
break;
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment