Автор Тема: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()  (Прочитано 524 раз)

0 Пользователей и 1 Гость просматривают эту тему.

EGGGOOSE

  • Зашел в гости
  • *
  • Сообщений: 9
  • Глупец
    • Просмотр профиля
Когда я только начал, я вообще не понял - почему этого метода не имеется в наличии?
Как мне кажется его присутствие вполне закономерно, логично и интуитивно понятно. Почему я, чтобы написать обычный переключатель (включение/выключение чего-либо(скрипта)), должен лезть в дебри этого кликерманна, думать над многопоточностью и другой ерундистикой.

К слову о ерундистике, так как если и введут эту фичу, то довольно-таки нескоро, то уж извольте, пожалуйста, форумчане, помочь мне с возникшей трудностью.
Пишу я скрипт для пвп в игре майнкрафт))) В новой версии игры, максимальный урон оружие наносит, только после небольшого кулдауна - приблизительно 550мс. В идеале скрипт должен работать так: нажал я кнопку "V" на клавиатуре, скрипт включился, и если я зажимаю ЛКМ, то скрипт жмет на ЛКМ раз в 550мс, если отпускаю, то ничего не делает. Повторное нажатие "V" останавливает скрипт. Не знаю реализуема ли вообще фишка с тем, чтобы просто зажать кнопку мыши, но если нет,
то мне достаточно будет того, что если я нажму "V" скрипт прожимал ЛКМ раз в 550мс. Собственно, что я и пытался реализовать.

Код: Clickermann
  1. THREAD(t)
  2.   IF(iskeydown(#V) = 1)
  3.      WHILE(iskeydown(#V) = 1)
  4.      END_CYC
  5.  
  6.      IF(iskeydown(#V) = 0)
  7.         $a = 1
  8.      END_IF
  9.         // включение
  10.      If(iskeydown(#V) = 1)
  11.         $a = 0
  12.         // выключение
  13.      END_IF
  14.   ELSE
  15.  
  16.   END_IF
  17. END_THREAD
  18.  
  19. If($a = 1)
  20.   lclick($_xmouse, $_ymouse)
  21.   WAITMS(500)      
  22. End_If
  23.  

Когда запускаешь мою писанину, то кликерманн просто зависает. Скорее всего из-за While в начале, хотя фиг его знает. Этот While нужен был для того, чтобы тред не закончился сразу же как начался, ведь, когда выполняется проверка на нажатость кнопки, сразу за ней идет еще одна проверка зажатости этой кнопки. Сейчас я проверил, и поставил вместо While KeyUp(#V), и все равно кликерманн завис намертво. Так что проблема, думаю, не в While.

EGGGOOSE

  • Зашел в гости
  • *
  • Сообщений: 9
  • Глупец
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #1 : Июль 12, 2019, 12:47:43 pm »
Если кто-нибудь мне пояснит, как можно реализовать этот переключатель, то думаю, что надобность в KeyPressed() отпадает.

kiril

  • Герой форума
  • *****
  • Сообщений: 754
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #2 : Июль 12, 2019, 12:53:30 pm »
Если кто-нибудь мне пояснит, как можно реализовать этот переключатель, то думаю, что надобность в KeyPressed() отпадает.
Извините-конечно но в вашем сообщении сплошной сумбур.
 Может, Вы как-то коротко перефразируете свою задачу, без эмоций и вас можно будет понять?

kiril

  • Герой форума
  • *****
  • Сообщений: 754
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #3 : Июль 12, 2019, 01:13:46 pm »
после нажатия клавиши V, ваш скрипт каждые полсекунды начинает кликать в место нахождения курсора и повторными нажатиями он не останавливается, только выключением программы.

EGGGOOSE

  • Зашел в гости
  • *
  • Сообщений: 9
  • Глупец
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #4 : Июль 12, 2019, 01:42:22 pm »
после нажатия клавиши V, ваш скрипт каждые полсекунды начинает кликать в место нахождения курсора и повторными нажатиями он не останавливается, только выключением программы.
Ничего он не кликает. Просто зависает программа. Закрывается только через диспетчер.

EGGGOOSE

  • Зашел в гости
  • *
  • Сообщений: 9
  • Глупец
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #5 : Июль 12, 2019, 01:51:43 pm »
Если кто-нибудь мне пояснит, как можно реализовать этот переключатель, то думаю, что надобность в KeyPressed() отпадает.
Извините-конечно но в вашем сообщении сплошной сумбур.
 Может, Вы как-то коротко перефразируете свою задачу, без эмоций и вас можно будет понять?

Если вы про IsKeyPressed, то я хочу чтобы был такой метод, который выводил 1, в момент, когда клавиша была нажата(предварительно опущена, а после поднята), и выводил 0, во всех остальных случаях.
Если вы про мой скрипт, то я хочу, чтобы при нажатии кнопки запускался скрипт:
Код: Clickermann
  1.   lclick($_xmouse, $_ymouse)
  2.   WAITMS(550)
  3.  
При повтороном, скрипт выключался, и ждал, пока его снова вызовут.

kiril

  • Герой форума
  • *****
  • Сообщений: 754
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #6 : Июль 12, 2019, 02:15:18 pm »
Ничего он не кликает.
THREAD(t,1)  вы забыли указать состояние потока, чтоб начал работать придуманный вами скрипт.

kiril

  • Герой форума
  • *****
  • Сообщений: 754
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #7 : Июль 12, 2019, 02:23:08 pm »
Код: Clickermann
  1. // 12.07.2019
  2. #name "управление"
  3.  
  4. THREAD(t,1)
  5.   IF(iskeydown(#V) = 1)
  6.      LOGWRITE ("нажато")
  7.      WHILE(iskeydown(#V) = 1)
  8.         WAITMS(10)
  9.      END_CYC        
  10.  
  11.      If($a = 0)
  12.         LOGWRITE ("запущено")
  13.         $a = 1    // включение
  14.      ELSE
  15.         LOGWRITE ("отключено")
  16.         $a = 0  // выключение
  17.      END_IF
  18.   END_IF
  19.   WAITMS(10)
  20. END_THREAD
  21.  
  22. If($a = 1)
  23.   lclick($_xmouse, $_ymouse)
  24.   WAITMS(500)
  25. End_If
  26.  
  27.  
удачи в minecraft

Космич

  • Активный участник
  • ***
  • Сообщений: 195
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #8 : Июль 12, 2019, 02:37:22 pm »
Метод над чем? у нас даже пользовательских функций нет)

kiril

  • Герой форума
  • *****
  • Сообщений: 754
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #9 : Июль 12, 2019, 02:39:01 pm »
Метод над чем? у нас даже пользовательских функций нет)
они называются подпрограммы  ;)

Космич

  • Активный участник
  • ***
  • Сообщений: 195
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #10 : Июль 12, 2019, 02:45:30 pm »
подпрограмма, процедура, но точно не функция

kiril

  • Герой форума
  • *****
  • Сообщений: 754
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #11 : Июль 12, 2019, 02:51:53 pm »
подпрограмма, процедура, но точно не функция
Пользовательская функция - это процедура, которая производит заданные вычисления и возвращает полученный результат.  :)

Космич

  • Активный участник
  • ***
  • Сообщений: 195
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #12 : Июль 12, 2019, 03:13:17 pm »
Функции можно использовать в условных операторах, в операторе присвоения и т.д. и т.п Если функция не может вернуть своё значение, то уже по определению не функция
« Последнее редактирование: Июль 12, 2019, 03:14:56 pm от Космич »

kiril

  • Герой форума
  • *****
  • Сообщений: 754
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #13 : Июль 12, 2019, 03:54:44 pm »
Функции можно использовать в условных операторах, в операторе присвоения и т.д. и т.п Если функция не может вернуть своё значение, то уже по определению не функция
https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

Космич

  • Активный участник
  • ***
  • Сообщений: 195
    • Просмотр профиля
Re: Добавьте метод аналогичный IsKeyDown(): IsKeyPressed()
« Ответ #14 : Июль 12, 2019, 05:24:23 pm »
Там примеры сильно и слабо типизированных языков, функции которых могут быть типа Void. Еще я заметил пример на Visual Basic с оператором SUB, который является процедурой. Да и вообще, какой смысл в ссылках как контр аргументах? Нужно было читать до того как вступал в диспут.