27

» WarCraft 3 / Как занести в переменную полученное исцеление?

можно сделать магию триггерной. благо все вариковские абилки легко переделать на триггерные пустышки, но местным гуишникам наверное трудно будет переделать. недостаток: это ИИ, можно просто вариковские абилы не менять, а сразу из них делать пустышки, нулить дамаг абилкам, эффекты убрать и создавать триггерно итд. Перед нанесением урона лог глобалке задаем инфу, что сейчас наносится урон:
действие 1: boolean magic = true
действие 2: нанести урон <= сразу же паузится поток, запускается отдельный триггер нанесения урона. после трига с уроном поток продолжает
действие 3: boolean magic = false
ставим можно глобалкой чекать маг/физ.
событие - юнит получает урон
условие magic == false
ваши действия: xxx - типа атака с руки, значит, можно что-то делать.
В рефорджете там можно чекать типы.
27

» WarCraft 3 / Как занести в переменную полученное исцеление?

есть два вида:
исцеление - абилки исцеляют за раз вроде благодать. есть не разовые абилки ежесекудно наполняют запас хп. Некоторые исцеления увеличивают в астрале в несколько 1.66 раз, если константу включить.
реген - он может быть пассивным, так и активным пример бафф "Рев" дает временный реген (по мемхаку смотрел увеличивался реген или нет).
а вот вампиризм можно сделать триггерно, только физ урон отличи. Тогда точно подсчитаешь.
27

» WarCraft 3 / Функция сообщения от игрока

DarkLigthing, че-то это не работает.
---@param whichPlayer player
---@param recipient integer
---@param message string
function BlzDisplayChatMessage(whichPlayer, recipient, message) end    -- (native)
че-то выводит на экран от игрока. Но не в чат. Хотел продебажить.
Загруженные файлы
27

» WarCraft 3 / Soviet Struggle: Весел напев городов и полей!

возможно ли замутить флешмоб? сидят бомжи и рабочие, пропаганда: "ребята, за работу" = все собираются в стаю, и начинают танцевать и петь. и в конец водочка.
пропаганда: "ребята, сегодня 1 мая - валите отсюда"
27

» WarCraft 3 / Как прервать цикл?

exitwhen true

помню с циклами один раз мучился. такая операция была в нахождении точек. когда находим первую точку x[0], y[0], и по условиям цикл должен завершится. когда поиск вернется в первую точку.
условие выхода такое exitwhen Ax == x[0] and Ay == y[0]
но тогда цикл сразу завершался в начале, не успев начаться и найти остальные точки. надо было еще по счетчику "кол-во точек" проверять Count
условие изменил exitwhen Ax == x[0] and Ay == y[0] and Count > 1
но со временем замечаю, что не всегда работает норм. Точка стоит, часто не успевает рект подвинуть или что? или не сохраняются точки в хэш. ороче работает криво. 80-99% норм а бывает криво.
27

» WarCraft 3 / Капитан Морган HQ

а че это подошва сапог белая? или это носок. не соответствует рисунку рома
27

» WarCraft 3 / Обладая framehandle можно ли узнать, что лежит внутри?

ладно. юнит интерфейса нафиг нужен. решил другим способом. вспомнил - что если буду переключаться, то это можно отследить.
я уже щас свою статью по этим фрэймам стал писать со всеми скринами. Но понял, что это не нужно. Лень. Хотя как сказать... Мне вот помогло в некоторых местах знание того, где лежат и какие фрэймы надо отключать, и заменять новыми. Поизучать побольше стоит.
Была бы норм база. Древовидную ветвь и названия, и что все эти fdf означают. Было бы хорошо. Щас минус, то что рефорджет не очень, мемхак выигрывает.
27

» WarCraft 3 / Обладая framehandle можно ли узнать, что лежит внутри?

Nelloy, понятно. но я этой же аналогичной системой и пользуюсь. но нужно точнее. можно код на jass?
Bergi_Bear, ладно. попробую потыкаюсь еще, и потом к окончательному выводу приду. щас пока что для меня это ново
27

» WarCraft 3 / Как поменять иконку свободный рабочий не у всех расс

можно попробовать найти нужный фрейм и заменить в игре изображение
Children of "ConsoleUI"/ORIGIN_FRAME_SIMPLE_UI_PARENT
Count: 8 to 9
  1. command button Parent
  2. BottomCenter UI parent (unit info- Inventory)
  3. ResourceBarFrame
    1. Mouse Listener (Gold)
    2. Mouse Listener (Lumber)
    3. Mouse Listener (UpKeep)
    4. Mouse Listener (Food)
    ???) Fps/Apm/Ping display
  4. UpperButtonBar
    1. Quest
    2. Menu
    3. Alliance
    4. Log
  5. MiniMapButtonBar
    0-4 ) Buttons 0(Top), 4(Bottom)
  6. command button mouse deadzone
  7. Hero ButtonBar
    0-6 ) HeroButtons
  8. Idle worker Button Container Нам нужна эта кнопка
    1. Button
      1. Charges Box (created with the first idle worker)
  9. World Object Hover info (exist after any object was hovered with the mouse)
--Родительский frame
framehandle OriginFrame = BlzGetOriginFrame(ORIGIN_FRAME_COMMAND_BUTTON,7)
--дочерний frame от OriginFrame
framehandle ChildFrame1 = BlzFrameGetChild(OriginFrame, 0)
--дочерний frame от ChildFrame1
framehandle ChildFrame2 = BlzFrameGetChild(OriginFrame, 0)
Нужно что-то делать с ChildFrame1 или ChildFrame2. К примеру добавить изображение и текст.

Если честно, то что вам нужно это просто переделка интерфейса с разными иконками рас, то есть создать несколько кнопок. Но я еще не пробовал сдвигать.
27

» WarCraft 3 / Мы ждали этого так долго - обновление лаунчера Battle.net 😌

build, можно TESH скачать и норм запускает. Единственное что мне не нрав что долго запускает 2-5 сек. Вот этот запуск. Сначала окошко с мордой льва, затем запуск. Это так не привычно мне.
хотя мне вначале просили при запуске тестов авторизоваться. а потом норм. Но иногда сбиваются настройки авторизации.
Кстати, если вы неправильно написали код, у вас игра все равно запускает игру. И там выкидывает в меню. Это было бы не желательно.
27

» WarCraft 3 / Личный сценарий WE

Обычно в редакторе триггеров в графических менюшках бывает отсутствуют какие-то команды (зависит от редактора и сборки). К примеру удалить точку, как выше примером. Поэтому приходилось скриптовую команду писать.
и некоторые функции есть только в скриптах comon blizzard. Вот их можно вызвать через эту штучку. скажу так что редактор графический сильно ограничен, типа нестандартные циклы, условия не задашь, локалки не запишешь. Только так как есть.
Можно еще написать собственную функцию, и запихать в шапку карты. Очень помогает. К примеру условие
27

» WarCraft 3 / Мы ждали этого так долго - обновление лаунчера Battle.net 😌

И что это там обновление дает?) Больше навигации, но долгую прогрузку? пусть оптимизируют. Или редактор улучшать, баги и не работающие фичи исправить, хватить им баланс править
27

» WarCraft 3 / Двойная угроза

но с моделью тоже сложно будет. как понять какая лучница будет поворачиваться? какая стрелять будет в цель, если игрок укажет? а какая прохлаждаться? а если одновременно, как один юнит, у которого такая модель, как стрелять будет в две цели?
Если что: можно сделать ИИ. Помнится формирование отрядов строится по такому же принципу. Там один капитан, которого можно выделять. И куча невыделяемых отрядов, следующие за капитаном. Эта система крутая.

27

» WarCraft 3 / Можно ли активировать прицел или не закрывать его?

самые странные нативки, которые частично скрывают кнопки. скрывают, но не навсегда?! Если сделать переключение или кликание по кнопкам, то собьет.
call BlzFrameSetVisible(BlzGetOriginFrame(ORIGIN_FRAME_COMMAND_BUTTON, 0), not b)
пробовал скрыть, делая прозрачным фрейм BlzFrameSetAlpha. Они становятся невидимыми кнопки. Но там горячие клавиши работают, и кликнуть можно мышкой. Пробовал заблокировать BlzFrameSetEnable. Ниче не получилось. Наверн не по назначению или че то не так.
только вот такая комбинация работает. чисто случайно открыл через parent
call BlzFrameSetVisible(BlzFrameGetParent(BlzGetOriginFrame(ORIGIN_FRAME_COMMAND_BUTTON,0)), FALSE)

ребята подскажите путь текстурки Cancel
ReplaceableTextures\CommandButtons\BTNCancel.blp
или framehandle к кнопке cancel?
27

» WarCraft 3 / Едкое Дыхание Химеры.

не работает даже на 1.26 у меня, тогда я списки абилки делал. сейчас сижу в рефордже, и не сильно это волнует. А что работало? проще триггерно сделать.
27

» WarCraft 3 / Можно ли активировать прицел или не закрывать его?

Nelloy, ниче страшного, image, так image. я решил эту проблему здесь даже карта есть с примером, там координаты криво выдает, и я понял причину.
27

» WarCraft 3 / Можно ли активировать прицел или не закрывать его?

quq_CCCP, мб фреймы там. Уже изучаю их. Если че мб триггерно: скрываем кнопки комманд (атака, патруль, стоп ид) с кнопками абил. И выдать пустую панель с кнопкой отмена. И курсор поменять. Все. Сам контришь процесс. Просто у меня канал, не знаю как запретить закрывать прицел. Придется кнопку-пустышку делать.
27

» WarCraft 3 / Событие отряд вошёл в зону

только если периодически тикать и чекать всех у кого нет приказа, и отправляем топать дальше. числовой приказ > 0
По идее если создать в зоне, то событие регистра срабатывает. Это означает, что либо юнит остановился под станом, или паузой. То нужно отдать приказ. Застаненный юнит имеет приказ стана, когда стан проходит, бафф снимается. детектится событием урона получение баффа, бафф выдает ноль урона. а вот детектится ли бафф когда урон снимается, не помню??
27

» WarCraft 3 / Можно ли отследить юнита интерфейса? и переключения

Пока это невозможно для меня, но где-то читал в чатике что кто-то нашел в фреймах адрес в рефордже. Ну и ладно, пока это совсем не нужно.
Все отмены нашел, главное завести булеан, где будет показано что маркер включен пример:
  1. скипнуть через отмену можно нажатием клавиши ESC или навести курсор мыши и по кнопке "отмена"
call TriggerRegisterPlayerEventEndCinematic( gg_trg_RegisterCancel, Player(0) )
  1. скипнуть прицел можно нажатием на кнопку мыши. Правая кнопка или левая не важно.
call TriggerRegisterPlayerMouseEventBJ( gg_trg_RegisterCancel, Player(0), bj_MOUSEEVENTTYPE_DOWN )
  1. скипнуть можно прицел select-переключением, когда выделяем другого. Казалось, а что сложного то тут? И вообще, когда у вас в качестве прицела точка выбрана, то вы никак не можете выделить юнита, тк прицел только точку выделяет. Кажется бесполезным этот триггер. Оказалось, что есть быстрые клавиши переключения вроде Ctrl+1, Ctrl+2, F1, иконка раба F8. Вы можете переключиться и никак не скипнете. Поэтому эта проверка полезна
    call TriggerRegisterPlayerSelectionEventBJ( gg_trg_SingleSelection, Player(0), true )
    call TriggerRegisterPlayerSelectionEventBJ( gg_trg_SingleSelection, Player(0), false )
  1. и последнее - скипнуть можно переключением через клавишу Tab. То о чем я говорю. Хоть я и не нашел способа определить юнита интерфейса. Мб попозже разберусь и добавлю. Но сейчас это не главное.
call BlzTriggerRegisterPlayerKeyEvent(gg_trg_group_Tab_switching,Player(0),OSKEY_TAB,0,false)
Мы проверяем число выделенных игроком пример. Обычно мы можем выделить несколько юнитов, только подконтрольным нам. По условию число выделенных > 0
Возможно еще какие нибудь подводные камни есть. И надо еще правок на отмену делать. Это все? есть ли еще какие нибудь моменты по вашему?