Skip to content

Instantly share code, notes, and snippets.

@Neznakomec
Created January 31, 2015 21:30
Show Gist options
  • Select an option

  • Save Neznakomec/f16a95eb23bb32b49571 to your computer and use it in GitHub Desktop.

Select an option

Save Neznakomec/f16a95eb23bb32b49571 to your computer and use it in GitHub Desktop.

Revisions

  1. Neznakomec created this gist Jan 31, 2015.
    254 changes: 254 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,254 @@
    <?
    //трудоустраивает на предприятие

    $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;

    }

    }
    ?>