Сейчас 09:24:53 Пятница, 19 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Размышления] А что, если реабилитировать GUI? (Да-да, ведь это возможно!)
[Размышления] А что, если реабилитировать 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, что ты имеешь в виду?

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

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 сек длительности, а например бафф от Ярости вообще заставляет время не уменьшаья пока оно действует :D ).

. . .

Но вообще мы отошли от темы треда... хД
Я хотел поговорить об модернизации GUI за счёт вычленения из него откровенного ХЛАМА... а не перевода 100500 плюшек jass'а прямо в GUI :DD
 

BruДата: Среда, 29 Мая 2013, 09:27:29 | Сообщение # 33
i<3bo4k@
Группа: Акулы
Сообщений: 4750
Награды: 2
Репутация: 1950
Блокировки:
А почему не делать так, вместо таймеров:
Код
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()? :)

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

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(), а потом ты решаешь, заюзав эту наработку, к примеру, делать такой цикл по таймеру. Что получится? :)

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

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() - не панацея. :)


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

sumertДата: Четверг, 30 Мая 2013, 08:02:09 | Сообщение # 40
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
Ty3uK, ладно, а как же тогда этот таймер может решить проблему заменой функции wait? Лично у меня изначально стояла цель - сделать альтернативную wait, хотя бы с меньшей погрешностью, а ты зачем предлагаешь это использовать?
 

Ty3uKДата: Четверг, 30 Мая 2013, 16:07:11 | Сообщение # 41
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Это я к тому, что твое предложение может сломать не одну систему. :)

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

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'овые фичи?


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

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, "явно быстрее"?
Жду бенчмарки, доказывающие это.


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

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, ну-ну.
А методы ты не забыл?


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

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?


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

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [Размышления] А что, если реабилитировать GUI? (Да-да, ведь это возможно!)
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

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