Author Topic: Связь кликеров в нескольких виртуальных машинах  (Read 4977 times)

0 Members and 1 Guest are viewing this topic.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Устал об стену головой биться...
« Reply #15 on: March 06, 2019, 12:49:28 AM »
Это если только зодавать еще один ини, в который кликер будет вносить данные для длл, Потом запускать эту длл, а длл будет брать данные из того ини и тогда уже вносить их в другой ини, но это уже что-то даже не смешно...

Ну почему же? Мы же научились передавать в длл все что можно и не можно.  Пожалуйста, передаем строку с путем к ини файлу (что не обязательно, можно прописать в длл). , далее идет пару строковых параметров (имя параметра, значение и тд....), как и обсуждали ранее, каждую строку можно разделить каким-нибудь разделителем, и в конце метка конца последнего параметра. Ничего сложного  ;)


Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Устал об стену головой биться...
« Reply #16 on: March 06, 2019, 01:13:39 AM »
Это если только зодавать еще один ини, в который кликер будет вносить данные для длл, Потом запускать эту длл, а длл будет брать данные из того ини и тогда уже вносить их в другой ини, но это уже что-то даже не смешно...

Ну почему же? Мы же научились передавать в длл все что можно и не можно.  Пожалуйста, передаем строку с путем к ини файлу (что не обязательно, можно прописать в длл). , далее идет пару строковых параметров (имя параметра, значение и тд....), как и обсуждали ранее, каждую строку можно разделить каким-нибудь разделителем, и в конце метка конца последнего параметра. Ничего сложного  ;)
40мс на всю эту байду уходит. Что не допустимо...
Я не ду... Потому и не бу...

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Re: Устал об стену головой биться...
« Reply #17 on: March 06, 2019, 09:37:31 AM »
Нафиг ini. Работай с названиями каталогов в шаре. Там возможен затык только если 2 кликера изменяют название одновременно.

Code: (clickermann) [Select]
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

Пример каталога во вложении.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Устал об стену головой биться...
« Reply #18 on: March 06, 2019, 09:49:35 AM »
Там возможен затык только если 2 кликера изменяют название одновременно.
Уже не подходит. У меня, как минимум, 15 кликеров одновременно работают в 15-ти виртуалках. В том-то и суть, что эти 15 кликеров должны "общаться" между собой...
Я не ду... Потому и не бу...

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Re: Устал об стену головой биться...
« Reply #19 on: March 06, 2019, 09:53:02 AM »
Значит нужно 2 каталога на 1 изменяемую запись. В первом флаг записи, во втором значение.
А читать они могут одновременно.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Устал об стену головой биться...
« Reply #20 on: March 06, 2019, 09:58:10 AM »
Значит нужно 2 каталога на 1 изменяемую запись. В первом флаг записи, во втором значение.
А читать они могут одновременно.
Там все не так просто... Есть записи, которые один кликер делает, а другой их принимает и изменяет.
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Устал об стену головой биться...
« Reply #21 on: March 06, 2019, 10:07:16 AM »
Объясню, как один из примеров... Бывает, что окна игры ловят дисконект и тогда в тех окнах, где персы что-то делают, вылазиет оповещение об этом, но есть одно окно, в котором перс просто стоит и ничего не делает. Не смотря на то, что он ничего не делает, если он не будет находится в онлайне в определенных координатах, то все остальные окна будут грузить процессор в холостую - боты в них ничего не смогут сделать. Так как перс в этом окне ничего не делает, в нем очень часто оповещение о дисконекте не появляется. Визуально перс просто стоит, как стоял и ни по каким параметрам не понять, что на самом деле перс уже не онлайн. В таком случае у меня каждое окно, которое поймало дисконект, делает запись в ини, что оно дисконектнулось. Скрипт того перса, что стоит на месте, ловит эту запись и изменяет опять на ноль, так как он ее уже поймал, а перс начинает юзать банку хп в течении 10 секунд. Если в эти 10 секунд банка юзнется, то перс просто продолжает стоять, а если нет, то перезапуск игры. Вот эта метка о дисконекте одна на всех. То есть, все окна, которые ловят дисконект, в одну и ту же строку в ини делают запись об этом, а главное окно просматривает эту запись и правит.
« Last Edit: March 06, 2019, 10:10:13 AM by Hito »
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Устал об стену головой биться...
« Reply #22 on: March 06, 2019, 10:14:51 AM »
То же самое, если персы погибают. Просто они могут погибать в нескольких случаях, одним из которых является - отсутствие стоящего перса на месте. Если рабочий перс погибает, он делает метку в ини, а стоящий перс проверяет - онлайн он, или нет. Ну, и соответственно правит метку.
Я не ду... Потому и не бу...

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Re: Устал об стену головой биться...
« Reply #23 on: March 06, 2019, 10:21:35 AM »
Делай метку не 1 на всех, а у каждого. Сделай 1 управляющий центр.

ps В линейке фигня с отсутствием сообщения дисконекта не активного перса тоже есть, но там достаточно открыть рюкзак. Клиент запрашивает сервер, не получает данных и дисконектится.
« Last Edit: March 06, 2019, 10:33:03 AM by ya12 »

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Устал об стену головой биться...
« Reply #24 on: March 06, 2019, 10:40:01 AM »
Делай метку не 1 на всех, а у каждого.
Тогда персу, который стоит, за раз не один параметр смотреть, а уже 15 парметров в ини...
ps В линейке фигня с отсутствием сообщения дисконекта не активного перса тоже есть, но там достаточно открыть рюкзак. Клиент запрашивает сервер, не получает данных и дисконектится.
Я не в линейке...))) У меня не достаточно - открыть рюкзак )
Я не ду... Потому и не бу...

ya12

  • Активный участник
  • ***
  • Posts: 165
    • View Profile
Re: Устал об стену головой биться...
« Reply #25 on: March 06, 2019, 10:51:46 AM »
У верблюда 2 горба потому, что жизнь борьба.

Должен быть способ определения дисконекта попроще. Типа взять что-нибудь в таргет, написать в чат, узнать текущее время и координаты. В общем сделать что нибудь не обременительное, что потребует ответа от сервера. Ответа нет ловишь дисконект.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Устал об стену головой биться...
« Reply #26 on: March 06, 2019, 11:09:16 AM »
Типа взять что-нибудь в таргет, написать в чат, узнать текущее время и координаты. В общем сделать что нибудь не обременительное, что потребует ответа от сервера. Ответа нет ловишь дисконект.
Стоять и каждую секунду брать в таргет и отменять таргет, чтобы понять - онлайн бот, или нет... Как-то гниленько... Каждую секунду писать в чат - то же самое... И я напоминаю, что я привел ОДИН из примеров...
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Устал об стену головой биться...
« Reply #27 on: March 06, 2019, 11:15:05 AM »
И кстати... В таргет брать мобов перс может, даже если он на самом деле поймал дисконект. Дисконект проявится, если перс попытается ударить, взятого в таргет, моба, но ему этого делать нельзя. Я же говорил, что когда он стоит в дисконекте, картинка ничем не отличается. Те мобы, которые стояли рядом, так и стоят. И даже персы, которые были в онлайне в других окнах, в этом окне визуально продолжают работать.
Я не ду... Потому и не бу...

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Устал об стену головой биться...
« Reply #28 on: March 06, 2019, 11:26:42 AM »
Вернемся к общению между кликерами между виртуальными машинами.

А может стоит попробовать FWRITEDATA/FREADDATA ? там с полным путем к файлу проблем нет. Когда я тестил его (с большими файлами), работал шустро.
Разделишь этот файл на нужные  секции и пиши-читай. Если нужное значение для записи превышает 255, то можно и два байта задействовать для него.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Я все же попробую сегодня перевести скрипт на запись в ини через длл. Вроде удалось снизить время записи до 10-15мс... Скрипт пишет данные для длл в текстовый файл. Длл считывает строки из этого файла и уже пишет в ини.
Я не ду... Потому и не бу...