Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Hito on March 05, 2019, 09:19:47 PM
-
Ребят, можно как-то с кликера, запущенного с виртуалки (не из расшаренной папки, а именно - расположенного в виртуалке), получить данные, или записать данный в ини-файл, расположенный уже в расшаренной папке...? Это очень нужно, но у меня что-то нифига не получается...
-
А через сетевой диск пробовал?
-
А через сетевой диск пробовал?
Так расшаренная папка на сетевом диске же и находится...
-
ААА, я подумал ты про обычный общий длоступ
(https://i.imgur.com/1A5KE7o.png)
И далее както там через сеть, рабочая группа или както уже непомню как.
Через сетевой диск должно работать ???
-
Просто как бы у меня во всех виртуалках скрипт запускается сейчас с расшаренной папки и все картинки, которые нужны для работы скрипта, естественно находятся в этой же директории, но + еще папка. Вот если с виртуалки запустить этот скрипт, то все нормально работает, но цикл скрипта очень долгий и проц виртуалки он грузит не слабо. Но если всю папку со скриптом и прочим барахлом перенести на виртуалку, то скрипт работает в разы быстрее и проц практически не грузит, но возникает проблема - он не работает с ини-файлами, которые лежат в расшаренной папке, а ини эти переносить на виртуалку нельзя, так как через эти ини скрипты в разных виртуалках "общаются".
-
ААА, я подумал ты про обычный общий длоступ
(https://i.imgur.com/1A5KE7o.png)
И далее както там через сеть, рабочая группа или както уже непомню как.
Через сетевой диск должно работать ???
Я что-то не пойму - о чем ты... У меня сетевой диск на виртуалке выглядит вот так:
(http://imglink.ru/pictures/05-03-19/deea89a6ae68ec09a41aabff7b561214.jpg)
-
но возникает проблема - он не работает с ини-файлами, которые лежат в расшаренной папке, а ини эти переносить на виртуалку нельзя, так как через эти ини скрипты в разных виртуалках "общаются".
Может дело в неправильном написании пути к этим ини файлам?
-
Я что-то не пойму - о чем ты... У меня сетевой диск на виртуалке выглядит вот так:
(http://imglink.ru/pictures/05-03-19/deea89a6ae68ec09a41aabff7b561214.jpg)
Я просто по началу подумал что ты не используешь сетевой диск, а просто разрешаешь доступ в сети к отдельным папкам.
С сетевым диском все должно работать, главно путь к файлу ини правильно прописать. Я конечно не пробовал, но должно работать. Ну и в настройках ВМ не забудь разрешить запись в этих папках, может стоять только чтение.
-
С сетевым диском все должно работать, главно путь к файлу ини правильно прописать. Я конечно не пробовал, но должно работать.
Должно, но не работает... В том-то и проблема... Выдает ошибку интерпритации строки, которая обращается к ини-файлу.
Ну, например - INIWRITE("Z:\variables.ini", "2", "3", "1")
Ну и в настройках ВМ не забудь разрешить запись в этих папках, может стоять только чтение.
Все разрешено.
-
Тут дело и не в сетевом диске, кликерман походу вообще не хочет писать в ини по полному пути к нему.
К примеру попробуй так INIWRITE("C:\variables.ini", "2", "3", "1"), тоже ошибка :(
Гдето уже было упомянуто на форуме об этом...
-
Тут дело и не в сетевом диске, кликерман походу вообще не хочет писать в ини по полному пути к нему.
К примеру попробуй так INIWRITE("C:\variables.ini", "2", "3", "1"), тоже ошибка :(
Очень плохо...
-
Я мог бы оставить скрипт в расшаренной папке, а вот картинки вынести на диск "С" виртуалки, но тогда ошибки лезут при IF_PICTURE_IN... :'(
-
Я мог бы оставить скрипт в расшаренной папке, а вот картинки вынести на диск "С" виртуалки, но тогда ошибки лезут при IF_PICTURE_IN... :'(
;D ;D ;D И снова ищем костыли. Пишем ДЛЛ для записи в ини на сетевом диске ;D
А чтение, интересно, работает, если путь полный к ини?
-
;D ;D ;D И снова ищем костыли. Пишем ДЛЛ для записи в ини на сетевом диске ;D
В попу это костыль... Я его уже намутил, но он запись делает за 30-40мс... При чем бОльшее время уходит на формирование массива, передающего строку в длл...
А чтение, интересно, работает, если путь полный к ини?
Естественно нет.
-
;D ;D ;D И снова ищем костыли. Пишем ДЛЛ для записи в ини на сетевом диске ;D
В попу это костыль... Я его уже намутил, но он запись делает за 30-40мс... При чем бОльшее время уходит на формирование массива, передающего строку в длл...
Это если только зодавать еще один ини, в который кликер будет вносить данные для длл, Потом запускать эту длл, а длл будет брать данные из того ини и тогда уже вносить их в другой ини, но это уже что-то даже не смешно...
-
Это если только зодавать еще один ини, в который кликер будет вносить данные для длл, Потом запускать эту длл, а длл будет брать данные из того ини и тогда уже вносить их в другой ини, но это уже что-то даже не смешно...
Ну почему же? Мы же научились передавать в длл все что можно и не можно. Пожалуйста, передаем строку с путем к ини файлу (что не обязательно, можно прописать в длл). , далее идет пару строковых параметров (имя параметра, значение и тд....), как и обсуждали ранее, каждую строку можно разделить каким-нибудь разделителем, и в конце метка конца последнего параметра. Ничего сложного ;)
-
Это если только зодавать еще один ини, в который кликер будет вносить данные для длл, Потом запускать эту длл, а длл будет брать данные из того ини и тогда уже вносить их в другой ини, но это уже что-то даже не смешно...
Ну почему же? Мы же научились передавать в длл все что можно и не можно. Пожалуйста, передаем строку с путем к ини файлу (что не обязательно, можно прописать в длл). , далее идет пару строковых параметров (имя параметра, значение и тд....), как и обсуждали ранее, каждую строку можно разделить каким-нибудь разделителем, и в конце метка конца последнего параметра. Ничего сложного ;)
40мс на всю эту байду уходит. Что не допустимо...
-
Нафиг ini. Работай с названиями каталогов в шаре. Там возможен затык только если 2 кликера изменяют название одновременно.
THREAD(udal_uprav, 0) //удаленное управление
UNDEFINE($arr2)
getdirlist($arr2, "ini\gnom*")
for($ia2=0, $ia2< arrsize($arr2))
if($arr2[$ia2]="gnom_b-0") //назад
$_gnom_b = 0
end_if
if($arr2[$ia2]="gnom_b-1") //вперед
$_gnom_b = 1
$_baf20 = 0
end_if
if($arr2[$ia2]="gnom_b-8") //test
$_gnom_b = 8
SETTHREAD(beg_8, 1)
end_if
if($arr2[$ia2]="gnom-9") //halt
EXECUTE("nircmd.exe", " execmd ren ini\gnom-9 gnom-0")
#include "otp_kn.cms"
halt
end_if
if($arr2[$ia2] = "gnom-1") //пати
EXECUTE("nircmd.exe", " execmd ren ini\gnom-1 gnom-0")
m_MOVE($_patyX,$_patyY)
LDOWN($_patyX,$_patyY)
waitms(RND(200,220))
LUP($_patyX,$_patyY)
waitms(RND(200,220))
end_if
end_cyc
if(($_gnom_b=1)and($_gnom_b2=0)) //вперед по точкам
$_gnom_b2 = 1
print("--------------------START")
$start = $_ms
SETTHREAD(boy, 1) // 0 - Пауза, 1 - Старт, 2 - Стоп
SETTHREAD(vpered, 1)
SETTHREAD(nazad, 1)
SETTHREAD(tab_mob, 1) //выборка из памяти таблицы мобов и подтягивание ближайшего из списка
END_IF
if(($_gnom_b = 0) & ($_gnom_b2 = 1)) //назад по точкам
$_gnom_b2 = 0
$_VpN = 0 - 1
print("<-------------------НАЗАД<-------------------")
BEEP(800,200)
end_if
wait(5)
END_THREAD
Пример каталога во вложении.
-
Там возможен затык только если 2 кликера изменяют название одновременно.
Уже не подходит. У меня, как минимум, 15 кликеров одновременно работают в 15-ти виртуалках. В том-то и суть, что эти 15 кликеров должны "общаться" между собой...
-
Значит нужно 2 каталога на 1 изменяемую запись. В первом флаг записи, во втором значение.
А читать они могут одновременно.
-
Значит нужно 2 каталога на 1 изменяемую запись. В первом флаг записи, во втором значение.
А читать они могут одновременно.
Там все не так просто... Есть записи, которые один кликер делает, а другой их принимает и изменяет.
-
Объясню, как один из примеров... Бывает, что окна игры ловят дисконект и тогда в тех окнах, где персы что-то делают, вылазиет оповещение об этом, но есть одно окно, в котором перс просто стоит и ничего не делает. Не смотря на то, что он ничего не делает, если он не будет находится в онлайне в определенных координатах, то все остальные окна будут грузить процессор в холостую - боты в них ничего не смогут сделать. Так как перс в этом окне ничего не делает, в нем очень часто оповещение о дисконекте не появляется. Визуально перс просто стоит, как стоял и ни по каким параметрам не понять, что на самом деле перс уже не онлайн. В таком случае у меня каждое окно, которое поймало дисконект, делает запись в ини, что оно дисконектнулось. Скрипт того перса, что стоит на месте, ловит эту запись и изменяет опять на ноль, так как он ее уже поймал, а перс начинает юзать банку хп в течении 10 секунд. Если в эти 10 секунд банка юзнется, то перс просто продолжает стоять, а если нет, то перезапуск игры. Вот эта метка о дисконекте одна на всех. То есть, все окна, которые ловят дисконект, в одну и ту же строку в ини делают запись об этом, а главное окно просматривает эту запись и правит.
-
То же самое, если персы погибают. Просто они могут погибать в нескольких случаях, одним из которых является - отсутствие стоящего перса на месте. Если рабочий перс погибает, он делает метку в ини, а стоящий перс проверяет - онлайн он, или нет. Ну, и соответственно правит метку.
-
Делай метку не 1 на всех, а у каждого. Сделай 1 управляющий центр.
ps В линейке фигня с отсутствием сообщения дисконекта не активного перса тоже есть, но там достаточно открыть рюкзак. Клиент запрашивает сервер, не получает данных и дисконектится.
-
Делай метку не 1 на всех, а у каждого.
Тогда персу, который стоит, за раз не один параметр смотреть, а уже 15 парметров в ини...
ps В линейке фигня с отсутствием сообщения дисконекта не активного перса тоже есть, но там достаточно открыть рюкзак. Клиент запрашивает сервер, не получает данных и дисконектится.
Я не в линейке...))) У меня не достаточно - открыть рюкзак )
-
У верблюда 2 горба потому, что жизнь борьба.
Должен быть способ определения дисконекта попроще. Типа взять что-нибудь в таргет, написать в чат, узнать текущее время и координаты. В общем сделать что нибудь не обременительное, что потребует ответа от сервера. Ответа нет ловишь дисконект.
-
Типа взять что-нибудь в таргет, написать в чат, узнать текущее время и координаты. В общем сделать что нибудь не обременительное, что потребует ответа от сервера. Ответа нет ловишь дисконект.
Стоять и каждую секунду брать в таргет и отменять таргет, чтобы понять - онлайн бот, или нет... Как-то гниленько... Каждую секунду писать в чат - то же самое... И я напоминаю, что я привел ОДИН из примеров...
-
И кстати... В таргет брать мобов перс может, даже если он на самом деле поймал дисконект. Дисконект проявится, если перс попытается ударить, взятого в таргет, моба, но ему этого делать нельзя. Я же говорил, что когда он стоит в дисконекте, картинка ничем не отличается. Те мобы, которые стояли рядом, так и стоят. И даже персы, которые были в онлайне в других окнах, в этом окне визуально продолжают работать.
-
Вернемся к общению между кликерами между виртуальными машинами.
А может стоит попробовать FWRITEDATA/FREADDATA ? там с полным путем к файлу проблем нет. Когда я тестил его (с большими файлами), работал шустро.
Разделишь этот файл на нужные секции и пиши-читай. Если нужное значение для записи превышает 255, то можно и два байта задействовать для него.
-
Я все же попробую сегодня перевести скрипт на запись в ини через длл. Вроде удалось снизить время записи до 10-15мс... Скрипт пишет данные для длл в текстовый файл. Длл считывает строки из этого файла и уже пишет в ини.
-
В общем если кому понадобится вдруг...
//============================================= Запись в ини
SUB(INI_WRITE, $file, $identifikator, $znachenie, $razdel)
TFCLEAR("working_ini.txt", 0)
STRWRITELN ("working_ini.txt", "write")
STRWRITELN ("working_ini.txt", $file)
STRWRITELN ("working_ini.txt", $razdel)
STRWRITELN ("working_ini.txt", $identifikator)
STRWRITELN ("working_ini.txt", $znachenie)
CALL ("working_ini.dll")
END_SUB
//============================================= Чтение из ини (ТОЛЬКО числовые значения)
SUB(INI_READ, $file, $identifikator, $razdel)
TFCLEAR("working_ini.txt", 0)
STRWRITELN ("working_ini.txt", "read")
STRWRITELN ("working_ini.txt", $file)
STRWRITELN ("working_ini.txt", $razdel)
STRWRITELN ("working_ini.txt", $identifikator)
CALL ("working_ini.dll")
END_SUB
//============================================= Запись в ини
INI_WRITE("C:\variables.ini", "identifikator", "1", "razdel")
//============================================= Чтение из ини (ТОЛЬКО числовые значения)
INI_READ("C:\variables.ini", "identifikator", "razdel")
LOGWRITE ($_return1)
HALT
dll-ку в папку со скриптом - https://yadi.sk/d/w_pOKkyzD-WHOQ (https://yadi.sk/d/w_pOKkyzD-WHOQ)
Если нужен $_return1 от какой-либо предыдущей процедуры, то сохраняйте его в какую-либо переменную, до использования INI_WRITE или INI_READ!
-
Забыл сказать... Ну, и естественно 32-битную версию кликера.