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

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

Закрытая тема
 
vfinsider

offline
Опыт: 740
Активность:
Оптимизация
У меня вопрос. Известно что TriggerRegisterAnyUnitEventBJ работает циклом и проверяет по циклу для
всех игроков
function TriggerRegisterAnyUnitEventBJ takes trigger trig, playerunitevent whichEvent returns nothing
local integer index
set index = 0
loop
call TriggerRegisterPlayerUnitEvent(trig, Player(index), whichEvent, null)
set index = index + 1
exitwhen index == bj_MAX_PLAYER_SLOTS
endloop
endfunction
Как вы думаете если мне в карту сразу занести некую функцию подобную этому типа
function TROLOLO2 takes nothing returns boolean
return true
endfunction
function TROLOLO takes trigger t,playerunitevent pe returns nothing
local integer i=0
loop
call TriggerRegisterPlayerUnitEvent(t,Player(p),pe,Condition(function TROLOLO2))
set i=i+1
exitwhen i==16
endloop
endfunction
И будет в итого везде писатся так
local trigger t=CreateTrigger()
call TROLOLO(t,EVENT_PLAYER_HERO_SKILL)
call TriggerAddCondition(t,Condition(function TROLOLO3))
Имеет ли какой то положительный эффект?!
Старый 16.06.2011, 18:42
Dreii
define{name=Dreii age=17}
offline
Опыт: 5,246
Активность:
Цитата:
Сообщение от vfinsider
exitwhen i==16

Поставь после лупа exitwhen i>11(16)

Думаю ф-ией лучше
Старый 16.06.2011, 18:50
Helpmeplz

offline
Опыт: 11,738
Активность:
так как написал ты - нет
если цикл будет непосредственно в функции инициализации триггера, выигрыш будет ровно в один вызов функции
единственное что можно оптимизировать - добавлять события только для играющих игроков, которые были предварительно занесены в какой нибудь массив.
толку от этого всеравно никакого
Старый 16.06.2011, 18:52
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
стандартная функция не вызывает утечек, но, если ты извращенец, то велком:
    trigger trig = CreateTrigger()
    call TriggerRegisterPlayerUnitEvent(trig,Player(0),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
    call TriggerRegisterPlayerUnitEvent(trig,Player(1),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
    call TriggerRegisterPlayerUnitEvent(trig,Player(2),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
    call TriggerRegisterPlayerUnitEvent(trig,Player(3),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
    call TriggerRegisterPlayerUnitEvent(trig,Player(4),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
    call TriggerRegisterPlayerUnitEvent(trig,Player(5),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
    call TriggerRegisterPlayerUnitEvent(trig,Player(6),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
    call TriggerRegisterPlayerUnitEvent(trig,Player(7),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
    call TriggerRegisterPlayerUnitEvent(trig,Player(8),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
    call TriggerRegisterPlayerUnitEvent(trig,Player(9),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
    call TriggerRegisterPlayerUnitEvent(trig,Player(10),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
    call TriggerRegisterPlayerUnitEvent(trig,Player(11),EVENT_PLAYER_UNIT_SPELL_EFFECT,null)
так "быстрее всего"
ну, алсо, так в ТсХ сделано
Старый 16.06.2011, 18:55
vfinsider

offline
Опыт: 740
Активность:
дык я тоже самое выше написал просто все сделал в цикл и все в отдельную функцию которую в последствии засуну в costim script и по написанию буду на него ссылатся
даст ли она какую то пользу или нет вот в чем вопрос
Старый 16.06.2011, 19:05
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
vfinsider, ты занимаешься абсолютно бесполезным дрочингом на биты оперативки.
я написал тебе САМЫЙ быстрый вариант, успокойся
Старый 16.06.2011, 19:11
Doc

offline
Опыт: 63,163
Активность:
Clamp, НЕТ НЕ САМЫЙ.
вариант еще быстрее: заносим игроков в массив и используем не Player[0], а, например PlayerX[0]. Ах, да:
абсолютно бесполезным дрочингом на биты оперативки
Старый 16.06.2011, 19:46
Закрытая тема

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

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

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

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



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