Сейчас 03:00:20 Суббота, 23 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Хрень] Ловим двойной клик в магазине
Ty3uKДата: Четверг, 04 Октября 2012, 22:52:48 | Сообщение # 1
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Типа "система" для отлова двойного нажатия на предмет в магазине. Предмет делается на основе руны.
Code
library DoubleClick initializer Init {

  #define <trigger gg_trg_DoubleClick = null>;
  #include "cj_types_priv.j";
   
  private int array clicks[12];
   
  private void Timer() {
   timer t = GetExpiredTimer();
   int id = R2I(TimerGetRemaining(t));
   if (clicks[id] == 2) {
    BJDebugMsg(GetPlayerName(Player(id)));
   }
   clicks[id] = 0;
   DestroyTimer(t);
   t = null;
  }
   
  private void Act() {
   int id = GetPlayerId(GetOwningPlayer(GetBuyingUnit()));
   timer t;
   clicks[id]++;
   if (clicks[id] < 2) {
    t = CreateTimer();
    TimerStart(t, I2R(id), false, null);
    PauseTimer(t);
    TimerStart(t, .25, false, function Timer);
   }
  }
   
  private void Init() {
   trigger t = CreateTrigger();
   TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SELL_ITEM);
   TriggerAddAction(t, function Act);
   t = null;
  }

}

Иногда не срабатывает - покупка идет с микрозадержкой + время таймера не смог толково подобрать.

Можно и скачать


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек


Сообщение отредактировал Ty3uK - Пятница, 05 Октября 2012, 19:13:31
 

NaturekidДата: Пятница, 05 Октября 2012, 11:30:43 | Сообщение # 2
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
А посмотреть?

 

Ty3uKДата: Пятница, 05 Октября 2012, 11:45:25 | Сообщение # 3
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
код есть
и что смотреть?


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Пятница, 05 Октября 2012, 13:16:17 | Сообщение # 4
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Ty3uK)
#define private <trigger gg_trg_DoubleClick = null>;
fail.
Quote (Ty3uK)
private int array clicks[11];
Тоже fail, но на данный момент ошибок не вызовет.
Quote (Ty3uK)
Code
t = CreateTimer();
TimerStart(t, I2R(id), false, null);
PauseTimer(t);
TimerStart(CreateTimer(), .25, false, function Timer);
Можно нескромный вопрос: в каком состоянии ты это писал? :)
Quote (Ty3uK)
int id = R2I(TimerGetRemaining(t));
Если таймер истек, его оставшееся время равно нулю, не так ли?


 

Ty3uKДата: Пятница, 05 Октября 2012, 13:25:28 | Сообщение # 5
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
открой гугл и напиши timer exploit

до этого про приватные дефайны ты меня не поправлял


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Пятница, 05 Октября 2012, 13:34:21 | Сообщение # 6
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Прочитал, спасибо большое.
Но в примере запускался один и тот же таймер, а ты создаешь два разных.

Если ты объявляешь дефайн вырезания триггера приватным, он будет пытаться вырезать только из текущей библиотеки. А нужно-то из globals.

Ну и размерность массива должна быть равна 12.


 

Ty3uKДата: Пятница, 05 Октября 2012, 13:36:59 | Сообщение # 7
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
фу, я не заменил
слепой
прийду домой и поправлю


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

NaturekidДата: Пятница, 05 Октября 2012, 17:29:02 | Сообщение # 8
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
Ty3uK, карту пример, что ж ещё. :p

 

Ty3uKДата: Пятница, 05 Октября 2012, 19:14:09 | Сообщение # 9
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
я где-то писал, что это наработка?

Добавлено (05 Октября 2012, 19:14:09)
---------------------------------------------
Обновил код, для страждущих добавил ссылку на карту


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

lawsonДата: Понедельник, 08 Октября 2012, 12:53:55 | Сообщение # 10
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Ty3uK, Туз красавчик, очень оригинально, где идею взял? Я бы просто вместо click int взял бы click bool.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

SirNikolasДата: Понедельник, 08 Октября 2012, 17:21:09 | Сообщение # 11
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (lawson)
очень оригинально, где идею взял?
Ну, [DUОS] говорил, что собирается реализовывать в OaD'е.
Quote (lawson)
Я бы просто вместо click int взял бы click bool.
Да и второе нажатие надо проверять по нажатию, а не по таймеру.


 

lawsonДата: Понедельник, 08 Октября 2012, 17:24:52 | Сообщение # 12
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (SirNikolas)
Да и второе нажатие надо проверять по нажатию, а не по таймеру.

нажал - true, запустил таймер, если игрок нажал еще раз и значение true то значит - двойное нажатие, если таймер истек то того как можно нажать еще раз то значение false, и опять по новой.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Понедельник, 08 Октября 2012, 17:45:04
 

ExtrematorДата: Понедельник, 08 Октября 2012, 19:16:00 | Сообщение # 13
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
Quote (SirNikolas)
Если таймер истек, его оставшееся время равно нулю, не так ли?

а вот не всегда... =/

я как-то проводил тесты... не помню что хотел сделать... но тогда я узнал что время на таймере при его истечении равно стартовому времени на нём =/
вот тогда для меня это и стало фэйлом... ((
 

NaturekidДата: Понедельник, 08 Октября 2012, 19:39:00 | Сообщение # 14
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
Quote (Extremator)
а вот не всегда... =/

this
Quote (Extremator)
при его истечении равно стартовому времени на нём =/

бред.
Я юзаю цикл восерешения героев по таймерам, сравнивая оставшееся время. И знаете... хрень какя-то.
Мне пришлось поместить событие для 1 и 10 игрока в отдельные триггеры а в цикле оставить со 2 по 9 и поставить условие "Оставшееся время меньше 0.3".
Герои не воскрешаются блин потому что, не срабатывает какого-то хрена время от времени. На 0.1 - несколько раз за игру, на 0.2 - пару раз, на 0.3 вроде норм.


 

Ty3uKДата: Понедельник, 08 Октября 2012, 19:47:12 | Сообщение # 15
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
SirNikolas, все клики ловятся по событию, в таймере я их плюсую для того, чтобы можно было регулировать время между кликами. Да и булькой не сильно изящно и настраиваемо - а если время между кликами больше .5? Обычный юзер стандартным виндовым даблкликом так сможет раза три-четыре брякнуть.

Quote (SirNikolas)
Ну, [DUОS] говорил, что собирается реализовывать в OaD'е.

Оттуда и скомуниздил идею, мне было нечего кодить для карты. Но Андреич подкинул работы и я снова счастлив :3


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

lawsonДата: Понедельник, 08 Октября 2012, 20:32:44 | Сообщение # 16
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Ty3uK, Ну как всегда, я ведь все проверил, я специально такую последовательность сделал.

Добавлено (08 Октября 2012, 20:31:31)
---------------------------------------------
И вроде ты хотел сделать дабл клик, а не трипл, так что все норм не надо делать таймер между действиями больше .25!

Добавлено (08 Октября 2012, 20:32:44)
---------------------------------------------
Ty3uK, и кстати было бы не плохо добавить возможность в жаспе или просто жассе функцию return пустой, чтобы функция дальше не выполнялась, просто в моем случае с булькой это было просто идеально.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Понедельник, 08 Октября 2012, 20:34:13
 

Ty3uKДата: Понедельник, 08 Октября 2012, 20:37:18 | Сообщение # 17
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
lawson, я не уверен насчет последующей поддержки JASP, Ник пилит свой парсер, который как часть функционала будет содержать тип auto (var в C++) и delete

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

Что делать?


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ExtrematorДата: Понедельник, 08 Октября 2012, 20:38:53 | Сообщение # 18
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
тебе время дабл-клика нужно?)

поставил юнита на карту... сделал тригг на отдачу приказа...
при отдаче выводи время с таймера на экран и перезапускай его...

два раза шлёпает мышью... смотришь время ))
 

lawsonДата: Понедельник, 08 Октября 2012, 20:40:04 | Сообщение # 19
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Ty3uK)
Что делать?

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


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Понедельник, 08 Октября 2012, 20:40:19
 

Ty3uKДата: Понедельник, 08 Октября 2012, 20:40:23 | Сообщение # 20
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Extremator,у всех юзеров это время может различаться

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ExtrematorДата: Понедельник, 08 Октября 2012, 20:46:16 | Сообщение # 21
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
Quote (Ty3uK)
,у всех юзеров это время может различаться

ну ты примерно так... шлёп-шлёп...

чуть больше сделай...

вообще мне кажется что 0.5 сек на двойной клик это ок... попробуйте хд
 

Ty3uKДата: Понедельник, 08 Октября 2012, 20:47:12 | Сообщение # 22
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Extremator, много, даже .3 дофига получается

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ExtrematorДата: Понедельник, 08 Октября 2012, 21:01:51 | Сообщение # 23
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
Quote (Ty3uK)
много, даже .3 дофига получается

ну так определи сколько норм =_= серьёзно... это же просто
 

Ty3uKДата: Понедельник, 08 Октября 2012, 21:11:53 | Сообщение # 24
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Extremator, я и определил же

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ImpregnableДата: Понедельник, 08 Октября 2012, 21:28:17 | Сообщение # 25
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Не знаю, может так задумано, ошибки, или я не понял, но:
    Почему именно 2 клика?!

    Почему я должен ждать оставшееся время, если нажал быстрее? Например - сделал 2 клика за .05 секунды, а предмет получу лишь через .20

    Если я за .25 секунды успею кликнуть по 2 предметам, какой мне продадут?

    Как узнать какой предмет был продан?

    И куда вставлять свой код? Заместо BJDebugMsg в середину системы? Это некрасиво и неудобно.


Если долго мучиться, то может,
все равно нихуя не получится.
 

  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz