XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
LostCoast, угу
ADOLF, создать глобалку какого типа? что в нее занести?
если я правильно ткнул пальцем в небо то наверно globals unit Caster end globals

Вай вай вай как вы этому научились? неможет же быть что также пальцем в небо О.О
Старый 31.01.2010, 00:41
Garret
Недоброе творится
offline
Опыт: 3,893
Активность:
задроты такие задроты...
Раз этот цикл выполняется "чуточку быстрее", то также можно было избавиться и от квадратного корня...
А вообще я предпочитаю (фанфары! сейчас польются ушаты... кхм, нелицеприятной жидкости) просто создавать событие на на вхождение юнита в радиус и делать всё в нём... (сейчас даже сделал тестик на ста юнитах - с событием 50-60 фпс, с пиком посекундным 40-50 фпс, а при добавлении действия к триггеру / добавления буллэкспа с простым возвращением лжи фпс падал аж до 50-60 фпс в первом случае и до (омг!) 0.5 во втором случае). Хотя мб у меня просто руки кривые и я не прав, мб умные люди пояснят. Именно! Был хитрый тест. Юниты двигались параллельно, благодаря чему постоянно пикались. В условиях, когда никто постоянно не пикается (как в первом случае и как у автора темы), фпс примерно один и тот же, разве что (на мой хитрый взгляд :D) во втором способе чуть-чуть медленнее. Однако данные условия могут вдруг окзазаться не искусственными, к примеру, для создания какого-либо спецэффекта с множеством маленьких снарядов.
А ещё лучшим я считаю сделать группу / массив (надо будет проверить, что быстрее), которая по одному таймеру будет пикаться и юниты в ней будут перемещаться. (для группы вешание аттачей идёт также через массивы, а индекс массива через юзердату)
Жду злостного мочилова моих решений xD
Старый 31.01.2010, 03:37
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Garret, друг я тя оч прошу тема для обьяснения, а не для сравнения что быстрее, длиннее или еще что-то подобное -.-
Старый 31.01.2010, 11:04
SRes
1110101000
offline
Опыт: 9,997
Активность:
Перебор через цикл - удобно, по скорости явно не тормознуто, гемороя в 100500 раз меньше.
Прошу кого-либо провести ТОЧНЫЕ тесты скорости ForGroup и цикл. Если разница будет в бедные 10 милисек, то задумайтесь, господа, это давно неважно.
Старый 31.01.2010, 11:36
DioD

offline
Опыт: 45,134
Активность:
Самый предельно быстрый способ это невыбор юнитов в статичную группу через подгружаемые функции.
хотелось бы отметить что нативки быстрее переменных (касается статичных вроде Filter Condition Player)
при триггере с событиями на вхождение в радиус вы теряете как минимум 50% производительности так как события будут срабатывать всегда по два нагружая ядро.
если тебе нужны точные результаты сам и протестируй.
Старый 31.01.2010, 12:04
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
через цикл разобрался как делать, а через дополнительную функцию Энейна чет не выходит =\
+ и слова Адольфа:"дейсвия тригера переноси через глобалки ", тоже не дохоят до моей тугодоходящей головы
Ну да ладно думаю через месяцок другой поближе узнаю jass и вернусь к этому вопросу, а пока буду использовать циклы.
Думаю тему можно закрывать. Спасибо всем за помощь
Старый 31.01.2010, 13:23
Enein
Silenced by ZlaYa1000
offline
Опыт: 43,453
Активность:
Перебор через цикл - удобно, по скорости явно не тормознуто, гемороя в 100500 раз меньше.
цикл как минимум намного медленней
нативки быстрее переменных (касается статичных вроде Filter Condition Player)
да?.. :/
Старый 31.01.2010, 13:46
SRes
1110101000
offline
Опыт: 9,997
Активность:
Цитата:
цикл как минимум намного медленней

Допустим, откуда такая инфа ? Поэтому я и попросил дать точные цифры, мне это не надо - но чтобы вы убедились.
Цитата:
нативки быстрее переменных (касается статичных вроде Filter Condition Player)

Нелогично, переменная жрет немного памяти, а нативка вызывает функцию.
Старый 31.01.2010, 14:33
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
что б не плодить тем
при создании контейнера globals endglobals, внутри записывая переменные, их нужно предварительно создать в редакторе триггеров?
Старый 31.01.2010, 16:03
XOR

offline
Опыт: 38,159
Активность:
Нет разумеется, оно наоборот предназначенно для удобства
Старый 31.01.2010, 16:09
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
ясно спасибо
Старый 31.01.2010, 16:10
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Извиняюсь если для этого не создал тему(думаю что это продолжение этой)
Вот при этом таймере с циклом
» раскрыть
ffunction JTKTimerMove takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer i = GetHandleId(t)
local unit Dummy = LoadUnitHandle(udg_Hash,i,2)
local group gr = CreateGroup()
local real XC = LoadReal(udg_Hash,i,0)
local real YC = LoadReal(udg_Hash,i,1)
local real Angle = LoadReal(udg_Hash,i,3)
local real XN = GetUnitX(Dummy)
local real YN = GetUnitY(Dummy)
local effect e=AddSpecialEffect("Abilities\\Spells\\Human\\FlameStrike\\FlameStrike1.mdl",XN+20*Cos(Angle),YN+20*Cos(Angle))
local unit tr
call SetUnitX(Dummy, XN+30*Cos(Angle))
call SetUnitY(Dummy,YN+30*Sin(Angle))
call SaveReal(udg_Hash,i,4,XN)
call SaveReal(udg_Hash,i,5,YN)
call GroupEnumUnitsInRange(gr,XN,YN,300,null)
loop
set tr = FirstOfGroup(gr)
exitwhen tr == null
if IsUnitEnemy(tr,Player(0)) then
call UnitDamageTarget(Dummy,tr,5,true,false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
call GroupRemoveUnit (gr, tr)
else
call GroupRemoveUnit (gr, tr)
endif
endloop
if SquareRoot((XN-XC)*(XN-XC)+(YN-YC)*(YN-YC))>3000 then
call DestroyEffect(e)
set e = null
call KillUnit(Dummy)
call DestroyGroup(gr)
set gr = null
call FlushChildHashtable(udg_Hash, i)
call PauseTimer(t)
call DestroyTimer(t)
set t = null
endif
call TriggerSleepAction(1)
call DestroyEffect(e)
set e = null
endfunction

боже какой я кривой код слепил
как проверить удалился ли эффект?
Старый 31.01.2010, 22:38
XOR

offline
Опыт: 38,159
Активность:
Принтф. Проверка не убил ли слип поток выводом текста.
Старый 31.01.2010, 22:48
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
XiMiKs, Принтф это что?
тоесть сделать текстовое сообщение после вейта?
эх ;( не удалился
Старый 31.01.2010, 22:53
XOR

offline
Опыт: 38,159
Активность:
Да
Старый 31.01.2010, 22:55
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
омг омг омг
спасибо всем за большую помощь
задержка какая у меня =))
Энейн очень помог спасибо тебе да и всем остальным
Карта не запускалась ТУПО из-за того что я не сохранял ее перед запуском
;) незнаю может лишнее, мне кажется это тонкую часть обьявления глобалок как сохранение кинуть в статью если не ошибаюсь ADOLF'a
Старый 05.02.2010, 00:09
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 19:06.