Одно событие для нескольких вызовов функций или для каждой отдельной функции своё событие короче как в GUI.
Пример:
================================= 1) Метод
Условие "НЕСКОЛЬКО ФУНКЦИЙ"
If GetSpellAbilityId == A000 then
call первая функция
endif
if GetSpellAbilityUnitId == A001 then
call вторая функция…
Вопрос
7 784
10
quq_CCCP:
jass_dev, Делается не так, уже обсуждали - триггер со всеми возможными событиями и екзекутом функции из базы данных, функция находится по ID. не быстрее чем по 1 триггеру на кадую способность, но экономит оперативку и гораздо удобнее.
можно ссылку на обсуждение?
Принятый ответ
32
jass_dev, Делается не так, уже обсуждали - триггер со всеми возможными событиями и екзекутом функции из базы данных, функция находится по ID. не быстрее чем по 1 триггеру на кадую способность, но экономит оперативку и гораздо удобнее.
10
Nikolay36:
jass_dev, да у меня нет стандартных способностей по ИД есть только 'A000; и дальше. Массив способностей как сделать.?
  1. Создайте масив триггеров
  2. Для каждой способности создайте триггер без событий, но с действием которое нужно выполнить во время каста способности.
  3. Во время инициализации карты, добавьте в массив все такие триггеры, вписав в индекс [Ид способности] - 'A000'.
  1. Создайте триггер с событием UNIT_CASTER_EVENT_SPELL_EFFECT. И в нём запускайте тот триггер, который лежит в массиве по индексу [Ид использованной способности] - 'A000'
18
Есть еще способ, функция call ExecuteFunc( конвертация имени способности в строку). А все способности назвать по вызываемой функции.
Плюс - удобно, просто
Минусы - вроде как, немного медленей. С другими минусами не знаком
2
jass_dev, да у меня нет стандартных способностей по ИД есть только 'A000; и дальше. Массив способностей как сделать.?
10
Торможения будут зависеть от количества таких скилов, если их мало, то особой разницы не будет. Первый способ более производительней чем второй. В первом у тебя вызывается одна функция (условие) для всех ифов, а во втором для каждого ифа вызывается функция (условие).
Но если тебе важна производительность, то тебе не стоит использовать столбы ифов вовсе. Я бы рекомендовал сделать хеш-таблицу, где в качестве основного ключа выступал бы ИД способности. Ты бы сохранял туда триггеры без событий, но с функциями которые нужно выполнить при использовании способности. А потом, в одном триггере с событием UNIT_CASTER_EVENT_SPELL_EFFECT ты доставал по ИД способности нужный триггер и выполнял его. Если у тебя нет стандартных способностей и все ИД ровные 'A000', 'A021'... Можно сделать еще производительней, сохраняя нужный триггер не в хеш-таблицу, а в массив.В таком случае, индекс в массиве для нужной способности будет равен ID - 'A000'.
Есть C# и WinForms, нужно относительно без задержек менять параметры картинок вроде яркости, цветового баланса и т.д., и сразу же смотреть результат. Насколько мне известно, нативный GDI+ работает через GetPixel, это очень медленно. Есть идеи? Напрягать DirectX\WPF\Unity, возможно, излишне для такой маленькой задачи.
Вопрос
2 599
8
Hanabishi, да, Bitmap, альтернатив не знаю. Про LockBits тоже думал, но мало использовал.
25
Под картинкой что подразумевается? Судя по функции GetPixel имеется в виду тип Bitmap. Тогда проще всего вызывать LockBits, выполнять нужные действия с байтовым представлением, а потом UnlockBits.
Пишу бота для своего Discord сервера, с JS и Node знаком 3 дня. По этому наверняка упускаю что-то из внимания или понимания, буду рад если кто-то сможет помочь.
Суть проблемы с получением данных вида JSON. Делаю Get на получение ответа от сервера, записываю в .json файл. Пытаюсь обработать полученные данные, вот в…
Вопрос
1 912
15
Проблема решена, оказывается у fs.appendfilesync есть проблемы с заполнением пустых файлов. Замена на fs.writeFileSync решило проблему.
Принятый ответ