[Размышления] А что, если реабилитировать GUI?
|
|
Extremator | Дата: Вторник, 28 Мая 2013, 13:27:50 | Сообщение # 26 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Цитата (sumert) Самой основной причиной переходить на jass - это замена wait на таймеры. Вот можно было бы написать хоть на jass функцию-альтернативу - jass-еров было бы поменьше. Но увы, написать альтернативу wait невозможно. Можно...
можно сделать чуть сложнее чем просто ждать окончание таймера, и тем самым сделать работу по своему "точнее"... но никто не юзает такое (кроме меня :с )
|
|
|
|
Ty3uK | Дата: Вторник, 28 Мая 2013, 13:31:57 | Сообщение # 27 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Extremator, что ты имеешь в виду?
|
|
|
|
Extremator | Дата: Вторник, 28 Мая 2013, 14:03:45 | Сообщение # 28 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Цитата (Ty3uK) что ты имеешь в виду? MUIфикацию вплоть до "времени" забитого в переменную типа "реальная", и уменьшаемое на 0.1 каждые 0.1 сек (одним общим таймеров по всему массиву) я уже давно это юзают... в на GUI реализовываю чище те скилы, которые многие делают на жассе грязнее... (визуально и технически)
я к тому что юзать альтернативу таймеру МОЖНО... но не все знают как... или просто не хотят брать что то более сложное чем "таймер" или "ваит"
Сообщение отредактировал Extremator - Вторник, 28 Мая 2013, 14:04:58 |
|
|
|
sumert | Дата: Вторник, 28 Мая 2013, 14:44:22 | Сообщение # 29 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| Ну, хорошо, раз ты так говорищь Опровергни тогда то, что я знаю. Весь смысл wait заключается в том, что она приостанавливает для триггера дальнейшие действия. TriggerSleepAction - единственная функция, обладающая данным свойством. Таймеры не приостанавливают поток действий в триггере. Но можно подождать истечение таймера и сделать свое дело именно тогда. Третьего способа не дано. Можно конечно усложить PolledWait и сделать нечто вроде: Код function WaitAlternative takes real duration returns nothing local timer t local real y if (duration>0.1) then set y = duration-0.1 set t=CreateTimer() call TimerStart(t,y,false,null) loop exitwhen (TimerGetRemaining(t)<=0.0) call TriggerSleepAction(0.01) endloop call DestroyTimer(t) set t=null else call TriggerSleepAction(duration) endif endfunction Однако погрешности все равно есть.
|
|
|
|
Extremator | Дата: Вторник, 28 Мая 2013, 15:11:34 | Сообщение # 30 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Цитата (sumert) Ну, хорошо, раз ты так говорищь Опровергни тогда то, что я знаю. Я не говорю юзать ваит Я говорю о том что можно поставить всё на один таймер... а не создавать каждый раз новый локальный таймер, и использовать для этого Jass или горы CS
можно обойтись GUI, если сделать по другому... при этом хуже не будет, а может даже будет лучше
|
|
|
|
sumert | Дата: Вторник, 28 Мая 2013, 15:31:08 | Сообщение # 31 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| Но ведь придется в Хеше запоминать некоторые данные и переемнные. Все равно придется. Тогда уж лучше реально на Jass сделать. К тому же тогда уж лучше вообще без таймера, а периодическим триггеров в 0.01 сек. А Wait тем и был ценен, что все данные и переменные объявляются один раз и возможно изменяются в цикле.
|
|
|
|
Extremator | Дата: Вторник, 28 Мая 2013, 16:43:00 | Сообщение # 32 |
10 уровень
Группа: Проверенные
Сообщений: 3199
Награды: 0
Репутация: 1018
Блокировки:
| Цитата (sumert) Но ведь придется в Хеше запоминать некоторые данные и переемнные. Все равно придется. Тогда уж лучше реально на Jass сделать. Нет же ._. я делал скиллы инвокера (деф.бласт / метеорит / снейп / ЭМП) без каких либо там Хэшей, с одним таймером на скилл, без жасса (ну только КС для точек и там по мелочи), при этом полностью MUI и в общм виде на GUI (с CS вставками, которых не так их и много).
Цитата (sumert) К тому же тогда уж лучше вообще без таймера, а периодическим триггеров в 0.01 сек. Я не могу утверждать 100% следующего что скажу, но... мне кто-то так сказал, и я не решаюсь это опровергать (ибо не шарю в начинке функций)...
НО, я не считаю рациональным использование триггеров с 0.01 пероидом срабатывания, даже если их вовремя Вкл/Выкл Мне говорили что он продолжают работать ВСЕГДА (постоянно тикает), но действия выполняются только если он в состоянии ВКЛ Поэтому я использую таймер, запускаю его и он инициирует срабатывание этого триггера до тех пор пока это нужно, а потом "Stop Timer".
Цитата (sumert) . А Wait тем и был ценен А ваит я не юзаю хотя бы только потому, что простой скилл суть которого "дать 50%-й спшел на 10 секунд" будет багать, если его КД меньше этих самых 10 сек...
Обычно триггеры с ним делают так - каст, дать бонус, ждать, отнять бонус, всё. А если за время каста я "обновлю время действия" скилла? В доте такая ж хрень со 2й абилкой Магнуса... длится 25 сек, кд 12 сек, кидаешь 2й раз до окончания, и гер раньше времени теряет сплеш... но бонус атаки висит...
А когда я делаю скиллы - я сношу "время" в переменную и обновляю именно его... или изменяю... или можно вообще приплюсовать время... Или задать гибое время действия (например каждые 10 инты дают +1 сек длительности, а например бафф от Ярости вообще заставляет время не уменьшаья пока оно действует ).
. . .
Но вообще мы отошли от темы треда... хД Я хотел поговорить об модернизации GUI за счёт вычленения из него откровенного ХЛАМА... а не перевода 100500 плюшек jass'а прямо в GUI :DD
|
|
|
|
Bru | Дата: Среда, 29 Мая 2013, 09:27:29 | Сообщение # 33 |
i<3bo4k@
Группа: Акулы
Сообщений: 4750
Награды: 2
Репутация: 1960
Блокировки:
| А почему не делать так, вместо таймеров: Код local real time = 10. //DO WHAT WE WANT loop set time == time-0.01 exitwhen time == 0 endloop //DO WHAT WE WANT
|
|
|
|
sumert | Дата: Среда, 29 Мая 2013, 09:41:28 | Сообщение # 34 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| Bru, по-твоему оно будет ждать 10 секунд? Это же просто в цикле уменьшение переменной.
|
|
|
|
Ty3uK | Дата: Среда, 29 Мая 2013, 09:47:13 | Сообщение # 35 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| sumert, а если я захочу заюзать timer exploit и сохранить инт в TimerGetRemaining()?
|
|
|
|
sumert | Дата: Среда, 29 Мая 2013, 10:12:56 | Сообщение # 36 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| Ty3uK, в этом нет смысла. Все равно ведь придется использовать TriggerSleepAction, потому сильно точной алтернативную функцию wait не сделаешь. Так вот и получается, что ради точности уж лучше сразу в триггере использовать таймеры.
|
|
|
|
Ty3uK | Дата: Среда, 29 Мая 2013, 10:43:55 | Сообщение # 37 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| sumert, в смысле "нет смысла"? Я хочу сохранить структуру на таймер, чтобы не юзать для ее сохранения хэш. Я сохраняю этот инт в TimerGetRemaining(), а потом ты решаешь, заюзав эту наработку, к примеру, делать такой цикл по таймеру. Что получится?
|
|
|
|
sumert | Дата: Среда, 29 Мая 2013, 10:51:03 | Сообщение # 38 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| Цитата (Ty3uK) Что получится? Мы оба знаем что получится. И оба знаем, что единственный выход - переписать код под этот таймер. Только стоит ли оно того? P.S. ты вед о посте 29
|
|
|
|
Ty3uK | Дата: Среда, 29 Мая 2013, 19:49:48 | Сообщение # 39 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Цитата (sumert) P.S. ты вед о посте 29 Угу. Цитата (sumert) И оба знаем, что единственный выход - переписать код под этот таймер. Только стоит ли оно того? Я к тому и веду - цикл и TimerGetRemaining() - не панацея.
|
|
|
|
sumert | Дата: Четверг, 30 Мая 2013, 08:02:09 | Сообщение # 40 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| Ty3uK, ладно, а как же тогда этот таймер может решить проблему заменой функции wait? Лично у меня изначально стояла цель - сделать альтернативную wait, хотя бы с меньшей погрешностью, а ты зачем предлагаешь это использовать?
|
|
|
|
Ty3uK | Дата: Четверг, 30 Мая 2013, 16:07:11 | Сообщение # 41 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Это я к тому, что твое предложение может сломать не одну систему.
|
|
|
|
sumert | Дата: Четверг, 30 Мая 2013, 17:38:16 | Сообщение # 42 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| Ty3uK, да, понимаю. Ну, что ж. Увы, с этим я ничего не смогу поделать.
|
|
|
|
Goodie | Дата: Пятница, 28 Июня 2013, 12:50:07 | Сообщение # 43 |
4 уровень
Группа: Проверенные
Сообщений: 84
Награды: 0
Репутация: 57
Блокировки:
| Решил восстановить тему, показалась интересной) Код с одним таймером на скилл Пфф..Один таймер на все скиллы юзаю=) Кстати без хешей, хеш нигде не использую в периодиках,все на структурах (30 скиллов, все триггерные)Добавлено (28 Июня 2013, 12:50:07) --------------------------------------------- Предлагаю сделать новые действия в триггерах, юзабельные гибкие if как в жассе
cJass рулит! Power of Mighty[Work In Progress]
Сообщение отредактировал Goodie - Пятница, 28 Июня 2013, 12:48:28 |
|
|
|
Ty3uK | Дата: Пятница, 28 Июня 2013, 12:51:25 | Сообщение # 44 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Goodie, ты думаешь, сруктуры сильно отличаются от хэша? Добавлено (28 Июня 2013, 12:51:25) --------------------------------------------- Или ты предлагаешь реабилитировать ГУИ путем подсаживания его на vJASS'овые фичи?
|
|
|
|
Goodie | Дата: Пятница, 28 Июня 2013, 12:52:28 | Сообщение # 45 |
4 уровень
Группа: Проверенные
Сообщений: 84
Награды: 0
Репутация: 57
Блокировки:
| Ty3uK, Они явно быстрее и как то гибче чтоле Добавлено (28 Июня 2013, 12:52:28) ---------------------------------------------
Тема идет о том, как бы сделать нормальные ифы
cJass рулит! Power of Mighty[Work In Progress]
|
|
|
|
Ty3uK | Дата: Пятница, 28 Июня 2013, 12:52:56 | Сообщение # 46 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Goodie, "явно быстрее"? Жду бенчмарки, доказывающие это.
|
|
|
|
Goodie | Дата: Пятница, 28 Июня 2013, 12:59:04 | Сообщение # 47 |
4 уровень
Группа: Проверенные
Сообщений: 84
Награды: 0
Репутация: 57
Блокировки:
| Ty3uK, Они быстрее из за того,что натив вызов долгий
cJass рулит! Power of Mighty[Work In Progress]
|
|
|
|
Ty3uK | Дата: Пятница, 28 Июня 2013, 12:59:58 | Сообщение # 48 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Goodie, ну-ну. А методы ты не забыл?
|
|
|
|
Goodie | Дата: Пятница, 28 Июня 2013, 13:08:15 | Сообщение # 49 |
4 уровень
Группа: Проверенные
Сообщений: 84
Награды: 0
Репутация: 57
Блокировки:
| Стой опта. у вас всегда так, от темы отходим. Extremator предложил реабилитировать GUI. Вот моё предложение Создать отделный блок в меню редактора, где стоят блоки cJass и прочие. Там при включении мы будем включать новые действия Что они будут делать? Добавлять фичи такие как гибкий иф,с действиями ( if,elseif,endif)Добавлено (28 Июня 2013, 13:02:47) --------------------------------------------- Ty3uK, Потом создашь эту тему, там будешь выяснять Добавлено (28 Июня 2013, 13:08:15) ---------------------------------------------
Цитата А методы ты не забыл? метод - это функция, у которой первый аргумент this - айди конкретного экземпляра, у которого ты ставишь .точку Первый аргумент скрывает векс
cJass рулит! Power of Mighty[Work In Progress]
|
|
|
|
Ty3uK | Дата: Пятница, 28 Июня 2013, 13:19:49 | Сообщение # 50 |
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
| Goodie, спасибо, узнал наконец-то. А вообще, я веду к тому, что ты один фиг пишешь юзерфунки. Ты смотрел тна начинку геттеров\сеттеров?Добавлено (28 Июня 2013, 13:19:49) --------------------------------------------- Ты уверен, что вызов из байткода работает быстрее вызова из DLL?
|
|
|
|