Что нового

Майнинг Бот By Zuzik

Zuzik

Знающий
Сообщения
45
Репутация
5
[me=Zuzik]подумывает а не выложить ли мне своего недобота на суд людской...[/me]
А если и выкладывать до или после исправления найденых мной недоработок) :whistle:


Добавлено:
Сообщение автоматически объединено:

Сосбтвенно вот, тупо летит в белт и тупо копает.
Вроде работает отостиельно неплохо,
НО главный враг - лаг -> буду увеличивать кол-во датчиков, тк из за лага при открытии овервью порой пытается апрочить соседний белт)(в худшем случае)
Плюс сейчас скрипт интегрирован в гуи(думал так его связать, но сейчас нажимая по 10 раз на кнопку стоп понимаю, что зря)

Так что буду совершенствовать датчики + распаралеливание датчиков гуи и бота через флаги.

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ICQ.au3>
#include <WindowsConstants.au3>
;Флаги
$eve="Выключен"
$st=0
;Рабочие переменные
$t=0
$wh=0
$cg=0
$belt=0
$mine=0
$lock=0
$mineactive=0
;настройки
dim $winp[4]
Opt("MouseCoordMode", 2)
Opt("PixelCoordMode", 2)
$winn="EVE" ; название окна с которм работаем, задел на много окнность если будет таковая
$tdelta=5000;период работы бота
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("EvE bot by Zuzik", 187, 640, 0, 0)
$Group1 = GUICtrlCreateGroup("Аська", 8, 80, 169, 129)
$Label1 = GUICtrlCreateLabel("Хост", 16, 96, 68, 17)
$Checkbox1 = GUICtrlCreateCheckbox("Подключён", 16, 142, 97, 17)
GUICtrlSetState($Checkbox1, $GUI_DISABLE)
$Input1 = GUICtrlCreateInput("номер хоста, тут должен быть мой номер но не скажу =Р", 16, 117, 121, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Аська", 96, 168, 75, 25)
$Button2 = GUICtrlCreateButton("Отключить", 16, 168, 75, 25)
GUICtrlSetState($Button2, $GUI_DISABLE)
$Edit1 = GUICtrlCreateEdit("", 8, 544, 161, 81)
GUICtrlSetData(-1, "")
$Button3 = GUICtrlCreateButton("Запуск", 8, 8, 75, 25)
$Group2 = GUICtrlCreateGroup("Настройки", 8, 208, 169, 81)
$Radio1 = GUICtrlCreateRadio("Radio1", 16, 232, 57, 17)
$Radio2 = GUICtrlCreateRadio("Radio2", 16, 256, 113, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Progress1 = GUICtrlCreateProgress(8, 512, 158, 17)
$Group3 = GUICtrlCreateGroup("Инфа", 8, 304, 169, 201)
$Label2 = GUICtrlCreateLabel("Статус:", 16, 320, 41, 17)
$Label3 = GUICtrlCreateLabel("Где:", 16, 344, 25, 17)
$Label4 = GUICtrlCreateLabel("Карго:", 16, 368, 37, 17)
$State = GUICtrlCreateInput($eve, 72, 320, 97, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$Where = GUICtrlCreateInput("", 72, 344, 97, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$Cargo = GUICtrlCreateInput("", 72, 368, 97, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$Input5=GUICtrlCreateInput("", 72, 392, 97, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$Label5 = GUICtrlCreateLabel("Локал", 16, 392, 36, 17)
$Input6=GUICtrlCreateInput("", 72, 416, 97, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$Label6 = GUICtrlCreateLabel("Модули", 16, 416, 42, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button4 = GUICtrlCreateButton("Стоп", 104, 8, 75, 25)
GUICtrlSetState($Button4, $GUI_DISABLE)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$status = 0
$i=0
Func Calibr($win);функция калибровки окна, аппендиск до работы с opt
	WinActivate($win)
	dim $find[4]
	$find=WinGetPos($win)
	$find[0]=$find[0]+4
	$find[1]=$find[1]+28
	return $find
EndFunc
Func tabelect($tab); переход по табам в овервью, табы пронумерованны соответсвующим образом
	MouseClick("left",625+18*($tab-1),147)
EndFunc
Func ClearCargo($win); очистка карго
	WinActivate($win)
	MouseClick("left",540,470)
	Send("^a")
	MouseClickDrag ( "Left", 540, 470, 510, 677) 
EndFunc	
Func DockCheck($win);проверка дока по кнопке андока
	WinActivate($win)
	$c=PixelSearch (13,736,18,741,16765499,50)
	If Not @error Then
		return $c
	Else
		Return 0
	EndIf
EndFunc
Func minecheck($win) ; проверка активности копательных модулей по иконке возле лока, до этого проверялось по иконке но глючило
	WinActivate($win)
	$c=PixelSearch (543,46,547,50,0xbe9253,10)
	If Not @error Then
		return 1
	Else
		Return 0
	EndIf
EndFunc
Func SpaceState($win) ; проверяем у белта мы или у станции, 
	; в случае первого в закладке будет равномерный серый цвет в зоне поиска, а если там что-то есть то выводит ошибку. 
	;Подобный  способ также работает если белт скопан в ноль
	WinActivate($win)
	tabelect(3)
	sleep(2000)
	$c=PixelSearch (690,164,695,169,0xbbbcbe,10)
	If Not @error Then
		return 1
	Else
		Return 0
	EndIf
EndFunc
Func CargoCheck($win) ; проверка трюма, значения выводятся в процентах, нужно для дальнейших идей
	WinActivate($win)
	$c=PixelSearch (650,432,747,433,0x081919,50)
	If Not @error Then
		$f=Round ((($c[0]-650)/98)*100)
		Return $f
	Else
		Return 100
	EndIf
EndFunc
Func beltcount($win) ; считаем белты в системе
	WinActivate($win)
	$hstart=179
	$m=0
	$i=0
	While $m=0
		$x=PixelSearch (617,$hstart,631,$hstart+13,0xffffff,20)
		If Not @error Then
			$i=$i+1
			$hstart=$hstart+20
		Else
			$m=1
		EndIf
	WEnd
	return $i
EndFunc
Func UnDock($win) ; ищем кнопку андока и нажимаем её, сама старая функция, единственная что осталась от макроса, работает и её не трогаю
	WinActivate($win)
	$c=PixelSearch (13,736,18,741,16765499,50)
	If Not @error Then
		MouseClick("left",$c[0],$c[1])
		return 1
	Else
		Return 0
	EndIf
EndFunc
Func itemclick($win,$to,$item) ; гибридизировная функция для работы с овервью и селектед итемс, в зависимости от параметра $to
	if $to=0 then
		MouseClick("left",630+33*($item-1),90)	
	Else
		MouseClick("left",710,185+20*($to-1))
		Sleep(500)
		GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"to "&$to&" item "&$item&@CRLF, 1)
		MouseClick("left",630+33*($item-1),90)
	EndIf	
EndFunc
Func itemactive($win, $item) ; проверка доступности пунктов меню селектед итемс
	WinActivate($win)
	$c=PixelSearch (625+33*($item-1),85,640+33*($item-1),105,0x959595,10)	
	If Not @error Then
		return 1
	Else
		Return 0
	EndIf
EndFunc
Func checkspaceun($win) ; проверка дока андока
	; сделана так потому, после исчезновения черноты какое-то время ещё не работает гуи, он выходит постепенно
	; на андоке работает, но с доком пока нет, проверяет по элементу на левом меню, которое во время дока появляется раньше
	; полной загрузки, введу доп проверку на черноту в рабочей области
	$y=PixelSearch (14,12,16,14,0xdedede,10)
	if Not @error Then
		return 1
	Else
		Return 0
	EndIf
EndFunc
Func warptest($win)
	; проверка варпа по надписи варпа, немного глючит при доке на станцию, тк надпись варпа появлется не сразу
	; но глючит терпимо, в стиле нервоза, те пытается повтороно отправить корабль на станцию, куда он летит
	WinActivate($win)
	$y=PixelSearch (441,539,443,541,0xbbbcbe,10)
	if Not @error Then
		return 1
	Else
		Return 0
	EndIf
	
EndFunc
Func chat($host) ; управление ботом через аську, простите но тут не покажу)
; лишь один пункт для понятия принципа работы
$msg = ICQReadMsg()
    If $msg<>0 Then
		if $msg[0]=$host Then
		Select
            Case $msg[1]="/h"
                ICQSendMsg($msg[0],"Справка")
            
            Case Else
                ICQSendMsg($msg[0],"[" & "Команда не найдена" & "]: " & $msg[1])
			EndSelect
		Else
			ICQSendMsg($host,"Внимание Чужак!!! В аське ->"&$msg[0]&" -> "&$msg[1])
			GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Чужак в аське!!!!!"&@CRLF&"--------------"&@CRLF&$msg[0]&" -> "&$msg[1]&@CRLF&"--------------"&@CRLF, 1)
		EndIf	
	EndIf
EndFunc

Func Terminate($host)
    ICQSendMsg($host,"Закрываю соединение - 2 секунды")
    Sleep(2000)
    ICQSendMsg($host,"Закрыто")
    ICQClose()
EndFunc

While 1 ; бот интегрирован в цикл гуи, но как оказалось ошибочно. 
	; на данном этапе датчики и выполнение скрипта свзяанны, но теперь хочу чтоб работали паралельно
	$nMsg = GUIGetMsg()
	Switch $nMsg
	Case $GUI_EVENT_CLOSE ; начало обработки гуи
			$status=0
			Exit
		Case $Button1
			$status = ICQConnect('login.icq.com:5190','*******2','пароль',0)
			GUICtrlSetState($Input1, $GUI_DISABLE)
			GUICtrlSetState($Button1, $GUI_DISABLE)
			GUICtrlSetState($Button2, $GUI_ENABLE)
			$Host=GUICtrlRead($Input1)
			GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Аська включена"&@CRLF, 1)
			ICQSendMsg($host,"я вошёл")
		Case $Button2
			GUICtrlSetState($Button2, $GUI_DISABLE)
			GUICtrlSetState($Button1, $GUI_ENABLE)
			GUICtrlSetState($Input1, $GUI_ENABLE)
			Terminate($host)
			$status=0
			GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Аська Отключена"&@CRLF, 1)
		Case $Button3
			If ProcessExists ( "ExeFile.exe" )=0 Then
				GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"EVE незапущена"&@CRLF, 1)
			Else
				GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"EVE запущена"&@CRLF, 1)
				$eve="Включён"
				$st=1
				GUICtrlSetState($Button3, $GUI_DISABLE)
				GUICtrlSetState($Button4, $GUI_ENABLE)
				GUICtrlSetData($State,$eve, "")
				WinMove($winn,"",204,0)
				GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Калибровка"&@CRLF, 1)
				$winp=Calibr($winn)
				$st=1
				$x=DockCheck($winn)
				if  $x=0 Then
					$wh="в космосе"
					
				Else
					$wh="в доке"
				EndIf
				GUICtrlSetData($Where,$wh, "")
				$cg=CargoCheck($winn)
				GUICtrlSetData($Cargo,$cg&"%", "")
				$t=TimerInit()
				GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Откалиброванно"&@CRLF, 1)
				GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Бот включён"&@CRLF, 1)
			EndIf
			Case $Button4
				GUICtrlSetState($Button4, $GUI_DISABLE)
				GUICtrlSetState($Button3, $GUI_ENABLE)
				$eve="Выключен"
				$st=0
				GUICtrlSetData($State,$eve, "")
				GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Бот отключён"&@CRLF, 1)
	EndSwitch ; конец обработки
If $status=1 Then ; запуска торможение аськи
	GUICtrlSetState($Checkbox1, $GUI_CHECKED)
	chat($host)
Else
	GUICtrlSetState($Checkbox1, $GUI_UNCHECKED)
EndIf
If $st=1 Then ;собственно сам бот
	if TimerDiff($t)>=$tdelta Then
		$t=TimerInit()
		$cg=CargoCheck($winn) ; 1-ый параметр который командует балом
		GUICtrlSetData($Cargo,$cg&"%", "")
		$x=DockCheck($winn) ; 2-ой 
				if ($x=0) Then ; обработка если мы в космосе
					$wh="в космосе"
					$t=warptest($winn) ; проверяем в прыжке мы или нет
					$y=checkspaceun($winn) ; проверяем докаемся или андокаемся
					if $y=1 And $t=0 then
						If $belt=0 then ; если мы ещё не в белте
						$y=SpaceState($winn) ; то проверяем в белте ли мы
						If $y=1 then 
							$belt=1
							GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"В белте,"&@CRLF&"астероиды есть"&@CRLF, 1)
						EndIf
						EndIf
						if $cg<90 Then ; если трюм ещё не заполнен то вылетаем, делаем запас на последний неполный цикл лазеров 
							; плюс место стыковки ещё нереализованной задумки
							If	$belt=0 Then ; если мы не в белте
								GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Возле станции,"&@CRLF&"пояса не обнаружены"&@CRLF, 1)
								tabelect(2) ; открываем вкладку с белтами
								sleep(1000)
								$c=beltcount($winn) ;считаем пояса, тут честно скажу что ф-ция может считать не только пояса =З
								GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"В системе "&$c&" белтов"&@CRLF, 1)
								$w=Random(1,$c,1) ; выбираем случайный белт
								GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Варпаем на"&$w&@CRLF, 1)
								itemclick($winn,$w,2) ; прыгаем на него
							Else
								If $mine=0 Then ; если ещё не копаем то летим к первому астероиду, самому близкому
									tabelect(3)
									Sleep(3000)
									itemclick($winn,1,1)
									$mine=1
								EndIf
								$f=itemactive($winn,5) ; проверяем в зоне ли действия лока
								if $f=1 And $lock=0 then
									itemclick($winn,0,5) ;лочим выбранный астероид
									$lock=1
								EndIf
								$d=minecheck($winn) ;проверяем включены ли у нас лазеры
								GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Копаем"&$d&@CRLF, 1)
								If $d=0 and $lock=1 Then ; если нет то включаем, тут есть недоработка которую не знаю как решить
									; не знаю как проверить в радиусе ли мы действия лазеров, поэтому тупо спамим пока не заработает
									; но надеюсь когда пересяду на баржу проблема частично снимется
									Send("{F2}{F1}")
								EndIf
							EndIf
						Else
						tabelect(1) ; если трюм полон возвращаемся на базу. первую станцию в овервью
						Sleep(1000)
						itemclick($winn,1,3)
						GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Летим на базу"&@CRLF, 1)
						EndIf
					EndIf
				Else
					$belt=0 ; если на станции сбрасываем флаги
					$mine=0
					$lock=0
					$wh="в доке"
					sleep(3000) ; время для прогрузки полной
					if $cg>0 Then  ; если в трюме что-то есть выгружаем
						ClearCargo($winn)
						Sleep(500)
						UnDock($winn) ; и андкоаемся
						GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Андок"&@CRLF, 1)
						
					Else
						UnDock($winn) ; если ничего нет андокаемся
						GUICtrlSetData($Edit1,@HOUR&":"&@MIN&":"&@SEC&"->"&"Андок"&@CRLF, 1)
						
					EndIf
				EndIf
		GUICtrlSetData($Where,$wh, "")
	EndIf
EndIf

WEnd



Добавлено:
Сообщение автоматически объединено:

ах да насчёт пкм меню согласен, но тут дело принципа каов программер таков и бот :smile:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
С этого и надо было начинать, я вот вобще например в той теме не видел этого поста вроде :smile:. А этот макрос вполне достоин отдельного обсуждения.


Добавлено:
Сообщение автоматически объединено:

В целом выглядит достаточно красиво, если работает конечно же. Понравилось отсутствие рекурсии. Но тема автономности работы и запуска в боте не раскрыта, а так зачот
. Так же повторюсь, если ты будешь смешивать проверочные функции(узнать где ты, проверить наличие астероида и тд) и операционные функции(андокнуться, прицелиться в астероид). Это станет твоим главным камнем преткновения на пути к многооконности и разумности ИИ бота. Ибо пока скрипт не способен реагировать независимо на любые ситуации, в каком порядке они бы не происходили это не бот, это макрос и в агрессивной среде обитания он не жизнеспособен.


Добавлено:
Сообщение автоматически объединено:

Zuzik сказал(а):
Но ошибки посмотреть тоже хотелось бы, тк это скелет вокруг которого всё будет наращиваться.
начало хорошее, но если это скелет финального бота - пациент скорее мертв чем жив. А так для первого бота - очень даже тру.
 
Автор
Z

Zuzik

Знающий
Сообщения
45
Репутация
5
я думаю бот одна из тех вещей, у которой нет финальной версии, но есть та которая удовлетворяет потребности.

Одно из направлений которые хочу взять, это распаралеливание датчиков и бота.
Вообщем в итоге приду к нечто подобному, что ты советуешь(хотя думал, что лесенкой будет меньше ресурсов есть, но в этом есть и куча минусов(которые вспыли неожаианно)).

А так как оказалось это больше тестирование работы функций. чем бота)
Ну и как распаралелю, научу пользоваться дронами боевыми.)
И мб выложу без дронов
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Просто у вермишели и бота реагирующего на окружающий вид - два совершенно разных пути развития, вермишель - тупиковый вариант к которому в окончании можно все подставлять и подставлять костыли но переделать его в бота реагирующего на ситуацию - не то что невозможно, но проще будет написать по новой. Но для изучения синтаксиса вермишель конечно подходит как нельзя лучше.
 
Автор
Z

Zuzik

Знающий
Сообщения
45
Репутация
5
Belfigor сказал(а):
написать по новой
Я думаю, что датчики которые есть(некоторые немного усовершенствую) и операционные функции оставлю, тк работают, пересмотрю сам алгоритм работы. Разобъю датчики на разные конутр, с разным периодом обновления, и в соответсвии с этим буду работать. а с опереционной частью свяжу с твоим же кейзе, который будет пробегать с периодом самого быстрого датчика
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Ну да, так и есть, главное избегать смешения этих двух различных по природе видов функций, это приводит к хаосу :smile:
 

DJ_Tommy

Продвинутый
Сообщения
235
Репутация
57
А последние несколько сообщений на русском можно?
 
Автор
Z

Zuzik

Знающий
Сообщения
45
Репутация
5
Если в кратце, то в некоторых местах оплошал, но представляю как отуда вылезать
-------------
а теперь собственно вопрос такого плана
Belfigor сказал(а):
Точно так же используя эту логику ты можешь прописать спектр решаемых ситуаций для каждого отдельного окна или для группы окон, тоесть в ситуации "Какие-то окна копают" "какие то возят" "какие-то занимаются чем-то еще" эта схема очень даже актуальна.
Не буду полностью цитировать, но суть думаю ясна(если в кратце приводилось состояние).
Интересует, почему мы состояния группируем?
Вопрос вытекает из, того, что если мы будем собирать все сведения с датчиков, то допустим в доке часть датчиков может выдавать рандомные результаты(отсутсвует овервью, хад, и часть других компонентов, а на их месте могут быть случайные пиксели.) Я ктому что всё равно придётся выбирать ведущие датчики(в космосе/в доке и др.) и делать ветвление. Там правда отрывок возможно оно и было, но я такого не заметил.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Нет там нету никакого выделения. В доке пресет датчикиков предназначенных для космоса всегда покажет один и тот же результат, рандомных пикселей быть не может если ты используешь черный фон.
 

Archy26

EVE DEVE eve bot development group
Сообщения
60
Репутация
42
Belfigor сказал(а):
Нет там нету никакого выделения. В доке пресет датчикиков предназначенных для космоса всегда покажет один и тот же результат, рандомных пикселей быть не может если ты используешь черный фон.
Ты не прав, либо аргументируй лучше. На месте худа и овервью в доке может быть что угодно.
А ветвление на состояния - способ сокращения кода в ИИ бота.
В доке, в белте, на ПОСе, в варпе.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Ну я говорил про своего майнера :smile:. У меня все построено на пресетах со всех датчиков, работает как часы ибо нормально написанный датчик, не увидет в доке худ или же открытое овервью и цели в нем, не увидит стрипы и тд. Нормально написанный датчик для худа выдаст что "Я худа не вижу" Датчик для овервью скажет "Цель не найдена", на стрипы скажет "Я стрипы не вижу", датчик на положение корабля скажет "Мы на станции", а датчик на карго скажет "Трюм полон", далее по пресету
"Худ: Не вижу | Овервью: Цель не найдена | Стрипы: Нету | Положение: На станции | Трюм: Полный" бот поймет что ему надо разгрузиться, и так же в остальных ситуациях исходя из того какую инфу бот получает с датчиков он понимает что ему нужно делать. Ибо нормально накоденный датчик никогда не выдаст вам что он видит что-то если этого чиво-то там нету.
 

Archy26

EVE DEVE eve bot development group
Сообщения
60
Репутация
42
Belfigor сказал(а):
Ну я говорил про своего майнера :smile:. У меня все построено на пресетах со всех датчиков, работает как часы ибо нормально написанный датчик, не увидет в доке худ или же открытое овервью и цели в нем, не увидит стрипы и тд. Нормально написанный датчик для худа выдаст что "Я худа не вижу" Датчик для овервью скажет "Цель не найдена", на стрипы скажет "Я стрипы не вижу", датчик на положение корабля скажет "Мы на станции", а датчик на карго скажет "Трюм полон", далее по пресету
"Худ: Не вижу | Овервью: Цель не найдена | Стрипы: Нету | Положение: На станции | Трюм: Полный" бот поймет что ему надо разгрузиться, и так же в остальных ситуациях исходя из того какую инфу бот получает с датчиков он понимает что ему нужно делать. Ибо нормально накоденный датчик никогда не выдаст вам что он видит что-то если этого чиво-то там нету.
Ах ну да, о чём я собственно и говорил =)))
ветвление на состояния сокращает количество вермишельных кусков. И вообще, количество кода. Работа по пресетам, так же сократит количество кода...
 
Автор
Z

Zuzik

Знающий
Сообщения
45
Репутация
5
Бот потихоньку переписывается(потихоньку, тк сессия близится :'()

А старый копает. Запускаю через удалённй комп(на нём динамический айпишник) с помощью тимвивера. В самостоятельном полёте работает почти без сбоев(пока ставит в тупик что делать если астроид диплтед, что бывает очень редко, но конретно это макаронину уже трогать не буду, в новом боте есть идейки как исправить).

А вот вторая проблема не получается не игнорировать. После завершения сеанса с помощью тиамвивера вылазит окно о том что сеанс спонсировался командой тимвивера. Окно поверх всех окон и фокуса первоначально не имеет. появляется в одном и том же месте и одинакового размера. Эта зараза перекрывает некоторые датчики, и при этом сама здоровенная. Вообщем пытаюсь придумать простенький костыль. Просто отсылать энтер не получится тк окно не имеет фокуса при создании(
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Окно должно иметь какое-то название или процесс.
If WinExists then
If ProcessExists then
Дальше думаю сам разберешься :smile:
 
Верх