Клики мыши

Версия Minecraft
1.7.10
372
0
Как можно запретить кликать мышкой больше чем 2 раза в секунду?
 
372
0
AlexSocol написал(а):
Делаешь эвентхандлер, в нём таймер.
Если таймер равен нулю, по нужному клику сетишь таймер на 10 тиков, иначе отменяешь эвент;
алсо раз в тик декрементишь таймер.

пробовал так, но с этим небольшой баг. И какой тик эвент в этом случаи использовать? 
И еще, если завершить эвент клика то мышка больше кликать не станет)
 

Icosider

Kotliner
Администратор
3,603
99
664
RaDiC написал(а):
AlexSocol написал(а):
Делаешь эвентхандлер, в нём таймер.
Если таймер равен нулю, по нужному клику сетишь таймер на 10 тиков, иначе отменяешь эвент;
алсо раз в тик декрементишь таймер.

пробовал так, но с этим небольшой баг. И какой тик эвент в этом случаи использовать? 
И еще, если завершить эвент клика то мышка больше кликать не станет)
Не тик эвент, а mouseinput event.
 
372
0
Ivasik написал(а):
RaDiC написал(а):
AlexSocol написал(а):
Делаешь эвентхандлер, в нём таймер.
Если таймер равен нулю, по нужному клику сетишь таймер на 10 тиков, иначе отменяешь эвент;
алсо раз в тик декрементишь таймер.

пробовал так, но с этим небольшой баг. И какой тик эвент в этом случаи использовать? 
И еще, если завершить эвент клика то мышка больше кликать не станет)
Не тик эвент, а mouseinput event.

тик эвент для того что бы считать количество кликов в секунду
 

Icosider

Kotliner
Администратор
3,603
99
664
RaDiC написал(а):
Ivasik написал(а):
RaDiC написал(а):
AlexSocol написал(а):
Делаешь эвентхандлер, в нём таймер.
Если таймер равен нулю, по нужному клику сетишь таймер на 10 тиков, иначе отменяешь эвент;
алсо раз в тик декрементишь таймер.

пробовал так, но с этим небольшой баг. И какой тик эвент в этом случаи использовать? 
И еще, если завершить эвент клика то мышка больше кликать не станет)
Не тик эвент, а mouseinput event.

тик эвент для того что бы считать количество кликов в секунду

Для таких целей есть mouseinput event, даешь переменную, при клике прибавляешь клики, если кликов == 2, то запускаешь таймер. И ещё, в одной секунде 20 тиков.
 
372
0
Ivasik написал(а):
RaDiC написал(а):
Ivasik написал(а):
RaDiC написал(а):
AlexSocol написал(а):
Делаешь эвентхандлер, в нём таймер.
Если таймер равен нулю, по нужному клику сетишь таймер на 10 тиков, иначе отменяешь эвент;
алсо раз в тик декрементишь таймер.

пробовал так, но с этим небольшой баг. И какой тик эвент в этом случаи использовать? 
И еще, если завершить эвент клика то мышка больше кликать не станет)
Не тик эвент, а mouseinput event.

тик эвент для того что бы считать количество кликов в секунду

Для таких целей есть mouseinput event, даешь переменную, при клике прибавляешь клики, если кликов == 2, то запускаешь таймер. И ещё, в одной секунде 20 тиков.

а я о чем?


На самом деле я пробовал так, но не работает почему то. После двух кликов эвент не останавливается, мышка клацает сама по себе а потом даже если таймер прошел кликнуть вообще нельзя.

Код:
@SubscribeEvent
 public void rightClick(MouseEvent event) {
   if (event.button == 0) {
      if (time == 0) time = 10;
      else event.setCanceled(true);
   }
 }
 
 @SubscribeEvent
 public void tick(TickEvent.ClientTickEvent event) {
   if (time > 0) time--;
 }
 

timaxa007

Модератор
5,831
409
672
Ты уверен что ты регистрировал один и тоже объект этого класса в разных шинах или у тебя переменная time имеет модификатор static и использоваться обе шины?
 

Icosider

Kotliner
Администратор
3,603
99
664
RaDiC написал(а):
Ха... точно, но один косяк остался, после остановки эвента, кликать я не могу, он просто кликает сам))


Как будто кнопка зажата


Так ты после окончания таймера ставь false, и будет всё работать.
 
372
0
Ivasik написал(а):
RaDiC написал(а):
Ха... точно, но один косяк остался, после остановки эвента, кликать я не могу, он просто кликает сам))


Как будто кнопка зажата


Так ты после окончания таймера ставь false, и будет всё работать.



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

Icosider

Kotliner
Администратор
3,603
99
664
RaDiC написал(а):
Ivasik написал(а):
RaDiC написал(а):
Ха... точно, но один косяк остался, после остановки эвента, кликать я не могу, он просто кликает сам))


Как будто кнопка зажата


Так ты после окончания таймера ставь false, и будет всё работать.



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


Ну так естественно работает, но тебе нужно ещё и возвращать событие в исходное положение, setCanceled = false;
 
372
0
Ivasik написал(а):
RaDiC написал(а):
Ivasik написал(а):
RaDiC написал(а):
Ха... точно, но один косяк остался, после остановки эвента, кликать я не могу, он просто кликает сам))


Как будто кнопка зажата


Так ты после окончания таймера ставь false, и будет всё работать.



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


Ну так естественно работает, но тебе нужно ещё и возвращать событие в исходное положение, setCanceled = false;



не помогает
 

Icosider

Kotliner
Администратор
3,603
99
664
RaDiC написал(а):
Ivasik написал(а):
RaDiC написал(а):
Ivasik написал(а):
RaDiC написал(а):
Ха... точно, но один косяк остался, после остановки эвента, кликать я не могу, он просто кликает сам))


Как будто кнопка зажата


Так ты после окончания таймера ставь false, и будет всё работать.



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


Ну так естественно работает, но тебе нужно ещё и возвращать событие в исходное положение, setCanceled = false;



не помогает


Код в студию!
 

Icosider

Kotliner
Администратор
3,603
99
664
RaDiC написал(а):
Код:
@SubscribeEvent
 public void rightClick(MouseEvent event) {
   if (event.button == 0) {
      if (time == 0) time = 500;
      else event.setCanceled(true);
   }
 }
 
 @SubscribeEvent
 public void tick(TickEvent.ClientTickEvent event) {
   if (time > 0) time--;
 }
Эм, 
if (time == 0) 
{
     event.setCanceled(false);
     time = 500;
}
 
372
0
Ivasik написал(а):
RaDiC написал(а):
Код:
@SubscribeEvent
 public void rightClick(MouseEvent event) {
   if (event.button == 0) {
      if (time == 0) time = 500;
      else event.setCanceled(true);
   }
 }
 
 @SubscribeEvent
 public void tick(TickEvent.ClientTickEvent event) {
   if (time > 0) time--;
 }
Эм, 
if (time == 0) 
{
     event.setCanceled(false);
     time = 500;
}

Было, тольку ноль
 

Icosider

Kotliner
Администратор
3,603
99
664
У тебя в начале проверка на нажатие кнопки, а потом уже таймер...
if (event.button == 0)
{
if (time == 0) time = 500;
else event.setCanceled(true);
}
ты проверку таймера на ноль вынеси за проверку нажатой кнопки и там же event.setCanceled(false);
 
Сверху