Author Topic: Отправка на сервер двух команд одновременно  (Read 3456 times)

0 Members and 1 Guest are viewing this topic.

Riisk

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Народ, подскажите!
Играю в он-лайн игру. Хочу сделать так, чтобы с моего компа на сервер пошли две команды одновременно, как будто я одновременно кликнул мышкой в два разных места.
Например:
допустим на экране две активные кнопки. Нажимаешь на одну - устраиваешься на работу рубить дрова, вторая перестает быть активной. Нажимаешь на вторую, копаешь руду, но первая кнопка, соответственно, становится не активной.
Как сделать так, чтобы сервер получил сразу две команды и проверив, что ты нигде не работаешь, устроил тебя сразу на две работы?
Или так быстро послать одну команду за другой, что сервер, получив первую команду, не успел отметить, что ты уже устроился на работу, как пришла вторая команда?
Получится, как будто ты одновременно кликнул мышкой по двум разным местам на экране. Попробовал автокликером (от ультимы он-лайн) с минимальным временем между кликами, но ничего не получилось.
Подскажите, реально ли такое сделать?

П.С. В программировании ничего не смыслю.

Riisk

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Это реально, но в начале вам нужно одновременно выйти замуж в двух разных загсах,
дождаться когда на промежуточной станции встретятся два поезда идущих в противоположных направлениях и одновременно отправится на них в свадебное путешествие, в принципе невижу в этом ничего невозможного.
Спасибо.

Может у кого-нибудь есть другие варианты ответа? Без лишнего пафоса.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Вот самый быстрый возможный клик
Code: (clickermann) [Select]
LDOWN(10,10) // кнопка 1 нажать
LUP(10,10) // отпустить

LDOWN(20,20) // кнопка 2 нажать
LUP(20,20) // отпустить

время между кликами будет 1 миллисекунда, что вообще ничто, так как минимальный пинг между серверами 40-50 миллисекунд.
Но! Игра может просто "не заметить" эти клики.

Riisk

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Вот самый быстрый возможный клик
Code: (clickermann) [Select]
LDOWN(10,10) // кнопка 1 нажать
LUP(10,10) // отпустить

LDOWN(20,20) // кнопка 2 нажать
LUP(20,20) // отпустить

время между кликами будет 1 миллисекунда, что вообще ничто, так как минимальный пинг между серверами 40-50 миллисекунд.
Но! Игра может просто "не заметить" эти клики.

А так не быстрее будет:
Code: [Select]
LCLICK(x1, y1)
LCLICK(x2, y2)


игра заметит, но реагировать будет только на последний принятый, это как в пафосном поезде, куда бы ты не садился и сколько раз молниеносно не пересаживался, но реально действующим направлением движения будет только последнее.
Это если команды на сервер уйдут последовательно. А если одновременно?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
А так не быстрее будет:
Code: [Select]
LCLICK(x1, y1)
LCLICK(x2, y2)

В команде LCLICK кликер сам делает задержку во время клика 30 миллисекунд

Похоже на это
Code: (clickermann) [Select]
LDOWN(10,10)
WAITMS(30)   
LUP(10,10)
     
LDOWN(20,20)
WAITMS(30) 
LUP(20,20)
То есть на 60 миллисекунд медленнее





Riisk

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
А так не быстрее будет:
Code: [Select]
LCLICK(x1, y1)
LCLICK(x2, y2)

В команде LCLICK кликер сам делает задержку во время клика 30 миллисекунд

Похоже на это
Code: (clickermann) [Select]
LDOWN(10,10)
WAITMS(30)   
LUP(10,10)
     
LDOWN(20,20)
WAITMS(30) 
LUP(20,20)
То есть на 60 миллисекунд медленнее
Ясно. Спасибо.

ezfalcon

  • Освоившийся
  • **
  • Posts: 30
    • View Profile
Как сделать так, чтобы сервер получил сразу две команды
"одновременно" не существует для сервера. Каждое действие в игре влечет отправку пакета на сервер. От сервера следует ответ. Как бы быстро не производились действия в игре, все события будут отправлены цепочкой пакетов, на каждый придет свой ответ.

Это общее правило, разработчики могли реализовать что-то иное. Например в зомби ферме 2 года назад превосходно дюпались коллекции. Но это, как и твоя задача - из раздела "багов" на стороне сервера. Чтобы их найти нужно поиграться со сниффером пакетов. У каждой игры свои баги.

Эксплуатация багов может повлечь перманентный бан в игрушке. Тоже относится и к поддающемуся статистическому анализу скрипту кликера.
Баги лучше не юзать, по крайней мере, связанные с подменой пакетов, а ботов делать не просчитываемых - использовать побольше rnd(a, b), варьируя задержки перед кликами, порядок действий и координаты нажатий.