Что нового

[Moswar] Бот от zlo

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Уже почти 2 месяца не улучшал бота, не добавлял новых функций решил выложить авось кому пригодится или возьмет его за основу и напишет своего.

1. Лечиться.
2. Определять свою курутость. (без учета харизмы, суб-статов, питомца)
3. Нападать на указаный уровень.(учитывает сколько выпало. и либо добавляет ли удаляет из жертв. Фармит только тех, кто спит. Фармит не больше 140 жертв в день, чтобы не получить травму.)
4. Нападать на NPC. (Обновленное противостояние)
5. Патруль.(между часами, когда может начаться стенка в Кланваре)
6. Шаурма.(не дописана)
7. Прокачивать питомца.(указывать до каких статов качаться. Приоритет на Атаку)
8. Проходить Нефть.
9. Продлевать "Высокие связи".
10. Играть с Моней.
11. Варить петрики.
12. Нападать в ОК.(не доработанно до конца, нападает, но процесс долгий, требуется оптимизация)
13. Бункер.(Но только его старая версия 4х4)
14. Играть с Кубовичем.
15. Покупать и забирать спортлото.
Клан
16. Добавлять в фарм лист если война в 1-й фазе.
17. Записываться во все клановые стенки. При 2-й фазе.
18. Для дипломата отдельно дописал поиск нужного клана.

Код:
#include <IE.au3>
#include <Inet.au3>
#include <Array.au3>
Global $status="запуск скрипта"
Global $text_search="123" ;текст который ищем
AdlibRegister("TT",100)
DirCreate(@ScriptDir & "\temp")
DirCreate(@ScriptDir & "\temp1")
$all= 50
dim $DW[$all+1]
dim $text[$all+1]
dim $oIE3[$all+1]
$timerInetGet=0
$timerWinHTTP=0
$timerIE1=0
$timerIE2=0

global $max_LVL=5 ;Уровень клана
global $max_LVL_glava=12 ;Уровень главы клана
global $max_LVL_top=12 ;Уровень сильнейшего игрока

$i=1
global $f_all=50
;~ 	$text1=_txt_read2(830);UBound($arr)-1)
;~ 	_ArrayDisplay($text1)
;~ 	$test1=_text_Search2(830, $text1);UBound($arr)-1, $text1)
;~ 	_ArrayDisplay(Arr5v1($test1))

$arr=Search_inet($all)
$arr2=Search_inet2($arr)

;~ Search_WinHTTP($all)
;~ Search_IE1($all)
;~ Search_IE2($all)

msgbox(64,"Скорость обработки", _ 
"Через IE= " & $timerIE1 & "сек" & @CRLF & _
"Через IE в скрытом режиме= " & $timerIE2 & "сек" & @CRLF & _
"Через WinHTTP= " & $timerWinHTTP & "сек" & @CRLF & _
"Через InetGet в фоновом режиме используя мультипоточность= " & $timerInetGet & "сек" & @CRLF)


; Сбор страниц через InetGet
Func Search_inet($all)
	$Timer=TimerInit()
	For $i=1 to $all
	$status="загрузка " & $i & "/" & $all

	$link="http://www.moswar.ru/rating/clans/arrived/"&$i&"/"
	$DW[$i]=InetGet($link, @ScriptDir & "\temp\" & $i &".txt", 1, 1)
	Next
	Do
		Sleep(250)
		If TimerDiff($Timer)>60*1000 Then ExitLoop
	Until chek_inetgetinfo($all)
	For $i=1 to $all
		InetClose($DW[$i])
	Next
	$text=_txt_read($all)
	$test1=_text_Search($all, $text)
	$timerInetGet=round(TimerDiff($timer)/1000, 2)
	;~ msgbox(0,"Search_inet", "Потрачено: " & round(TimerDiff($timer)/1000, 2) & " сек")
	Return Arr3v1($test1)
EndFunc

; Сбор страниц через InetGet
Func Search_inet2($arr)
	redim $arr[UBound($arr)][6]
	Dim $DW[UBound($arr+1)]
	$Timer=TimerInit()
	$f_all=UBound($arr)-1
	$z=(UBound($arr)-1)/50
	For $n=0 to $z+1
		$full=50+$n*50
		$ind=1+$n*50
		If $full>UBound($arr)-1 then $full=UBound($arr)-1
		For $i=$ind to $full
;~ 			$status="загрузка " & $i & "/" & UBound($arr)-1
			$link="http://www.moswar.ru/clan/"& $arr[$i][0] &"/"
			$DW[$i]=InetGet($link, @ScriptDir & "\temp1\" & $i &".txt", 1, 1)
		Next
		Do
			Sleep(250)
			If TimerDiff($Timer)>2*60*1000 Then ExitLoop
		Until chek_inetgetinfo($full,$ind)
		For $i=$ind to $full
			InetClose($DW[$i])
		Next
	Next
	$text1=_txt_read2(UBound($arr)-1);UBound($arr)-1)
	$test1=_text_Search2(UBound($arr)-1, $text1);UBound($arr)-1, $text1)
;~ 	_ArrayDisplay($test1)
	$timerInetGet=round(TimerDiff($timer)/1000, 2)
;~ msgbox(0,"Search_inet", "Потрачено: " & round(TimerDiff($timer)/1000, 2) & " сек")
	_ArrayDisplay(Arr5v1($test1))
EndFunc

;обработка массив страниц.
Func _text_Search($all, $text)
    local $k=0
    dim $test_all[1]
    For $i=1 to $all
        $status="сверка " & $i & "/" & $all 
        if StringRegExp($text[$i], '(?si)href=.*?clan/([\d]{1,10})/.>(.*?)</a>.*?\[([\d]{1,2})')=0 then ContinueLoop
        $test=StringRegExp($text[$i], '(?si)href=.*?clan/([\d]{1,10})/.>(.*?)</a>.*?\[([\d]{1,2})', 3)
        ReDim $test_all[$k+Ubound($test)+1]
        For $j=0 to UBound($test)-1
            $k+=1
            $test_all[$k]=$test[$j]
        Next
    Next
    return $test_all
EndFunc

;обработка массив страниц.
Func _text_Search2($all, $text)
    local $k=0
    dim $test_all[1]
    For $i=1 to $all
        $status="сверка " & $i & "/" & $all 
        if StringRegExp($text[$i], '(?si)Глава:.*?clan.([\d]{1,5}).*?title="(.*?)".*?level">\[([\d]{1,2}).*?Кланеры:.*?input">([\d]{1,2}).*?player.*?level">\[([\d]{1,2})')=0 then ContinueLoop
			;Глава:.*?clan.([\d]{1,5}).*?title="(.*?)".*?level">\[([\d]{1,2}).*?Кланеры:.*?input">([\d]{1,2}).*?player.*?level">\[([\d]{1,2})
        $test=StringRegExp($text[$i], '(?si)Глава:.*?clan.([\d]{1,5}).*?title="(.*?)".*?level">\[([\d]{1,2}).*?Кланеры:.*?input">([\d]{1,2}).*?player.*?level">\[([\d]{1,2})', 3)
        ReDim $test_all[$k+Ubound($test)+1]
        For $j=0 to UBound($test)-1
            $k+=1
            $test_all[$k]=$test[$j]
        Next
    Next
    return $test_all
EndFunc

; чтение txt-файлов из temp
Func _txt_read($all)
	dim $text[$all+1]
	For $i=1 to $all
		$status="читаем " & $i & "/" & $all
		$text[$i]=FileRead(@scriptdir & "\temp\" & $i & ".txt")
	Next
	return $text
EndFunc

; чтение txt-файлов из temp
Func _txt_read2($all)
	dim $text[$all+1]
	For $i=1 to $all
		$status="читаем " & $i & "/" & $all
		$text[$i]=FileRead(@scriptdir & "\temp1\" & $i & ".txt")
	Next
	return $text
EndFunc

; в этой функции проверяются все закачки и ждем пока все докачается.
Func chek_inetgetinfo($all,$ind=1)
	local $k=0
	for $i=$ind to $all
	if InetGetInfo($DW[$i], 2)=True then $k+=1
	Next
	$status="загруженно " & $ind-1+$k & "из" & $f_all
	if $k=$all-$ind+1 then 
	;~  msgbox(0,"",$k)
		Return True
	Else
		Return False
	EndIf
EndFunc

; отдельно вынес ToolTip со статусом
Func TT()
    ToolTip("Статус: " & $status,0,0) 
EndFunc

Func Arr3v1($massiv)
	Dim $arr[UBound($massiv)/3+1][3]
	For $i=3 to UBound($massiv)-1 step 3
		$arr[$i/3][0]=$massiv[$i-2]
		$arr[$i/3][1]=$massiv[$i-1]
		$arr[$i/3][2]=$massiv[$i-0]
	Next
	
	$k=1
	Dim $arr2[$k+1][3]
	For $i=1 to UBound($arr)-1
		If $arr[$i][2]<$max_LVL then
			redim $arr2[$k+1][3]
			$arr2[$k][0]=$arr[$i][0]
			$arr2[$k][1]=$arr[$i][1]
			$arr2[$k][2]=$arr[$i][2]
			$k+=1
		EndIf
	Next
	Return $arr2
EndFunc

Func Arr5v1($massiv)
	Dim $arr[UBound($massiv)/5+1][5]
	For $i=5 to UBound($massiv)-1 step 5
		$arr[$i/5][0]=$massiv[$i-0]
		$arr[$i/5][1]=$massiv[$i-1]
		$arr[$i/5][2]=$massiv[$i-2]
		$arr[$i/5][3]=$massiv[$i-3]
		$arr[$i/5][4]=$massiv[$i-4]
	Next
	$k=1
	Dim $arr2[$k+1][6]
	For $i=1 to UBound($arr)-1
		If $arr[$i][2]<$max_LVL_glava and $arr[$i][0]<$max_LVL_top then
			redim $arr2[$k+1][6]
			$arr2[$k][0]=$arr[$i][0]
			$arr2[$k][1]=$arr[$i][1]
			$arr2[$k][2]=$arr[$i][2]
			$arr2[$k][3]=$arr[$i][3]
			$arr2[$k][4]=$arr[$i][4]
			$arr2[$k][5]= "http://www.moswar.ru/clan/" & $arr[$i][4] & "/"
			$k+=1
		EndIf
	Next
	Return $arr2
EndFunc

P.S. За счет него прокачался с 1 до 14-го уровня за ~ 6 месяцев не получив бана и имея статы выше среднего. (Перса продаю)

P.S.S. Файл http://file.qip.ru/file/XlcVLYOM/kill_msgbox.html
нужен, чтобы убивать всплывающие окошки при удалении из контакт листа. (найду его исхдник выложу)
 
Автор
zlo-kazan

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Чего то не разобрался я как работает скрипт! точнее куда и чего нужно заносить и как выгядит результат. Не поможешь? пошагово )))
1. Задать нужно эти 3 параметра:
Код:
global $max_LVL=5 ;Уровень клана
global $max_LVL_glava=12 ;Уровень главы клана
global $max_LVL_top=12 ;Уровень сильнейшего игрока

2. Запустить.

Т.е. он найдет все кланы которые есть в рейтинге кланов уровень которых 5-й и ниже... глава клана имеет 12-й уровень и ниже... и самый высокий ЛВЛ в клане 12-й и ниже...
Результат выдает массивом...

P.S. Работает без залогинивания в Moswar.
 
Автор
zlo-kazan

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Все... Мосвар окончательно надоел... отдам персонажа в хорошие руки. :laugh:
14-й лвл... настроенный бот в придачу... :smile:
Писать в личку...
 
Верх