Для этого кастомные сборщики, чтобы как можно меньше работать в we, и всякий раз запускать карту за 15 сек, ради любого мелкого теста
ты напиши как это ускорить. Мне кажется чатом как-то не привычно пользоваться, чтобы проверять многие вещи. По старинке лучше. Загрузил быстро проверил, закрыл. Что 2 мин ждать? И там наверное выходить из игры 5 мин? А если ты написал второпях и запустил, а потом вспомнил, что забыл юниту дать абилку в ро, и приходится ждать пока игра загрузится. Потом выйти в меню, а затем из игры
Yury13, вроде должно нормально работать в мультиплеере. Но возможны подводные камни.
Вот отредактировал, откомментировал каждую строчку. Красиво и норм. Теперь можно отследить открытие меню или закрытие (сворачивание). Если переделать хэш-таблицу и на хэндл записывать данные. Есть недостаток с отрядами: когда выделяешь несколько юнитов, и переключаешь на раба. То рабом можно вызвать меню. А затем если взять и кнопкой Tab переключить например на след выделенного в отряде, то система до сих пор будет считать, что меню остается открытой (система: юнит то выделен, все впорядке). Тогда у вас работник будет подсвечиваться радиус, в то же время вы переключены на другого юнита в отряде - что есть не очень хорошо. Я не смог ничего такого найти с переключениями, даже не знаю как это исправить (возможно придется отказаться работать в группе во время стройки). Вроде драколич в мемхаке давно скидывал код на выделенного юнита, могу скинуть? но мемхаком больше не хочу заниматься
pro100master, я пробовал дебагом выводить GetTriggerUnit GetTriggerPlayer. И ничего не отображает. Видимо это нельзя сделать
Yury13, можно было бы пустышку сделать. И при нажатии на кнопку, вызвать меню строительства. Это в теории.
теория №1
знаю, что на рефордже завезли нативки, чтобы прятать икону AHbu (хуман). А при активации пустышки, убираем пустышку, и показываем иконку AHbu ( скрытую абилу посредством forcekey не открыть, иконка не отбражается, и, следовательно, горячие клавиши тоже не работают. поэтому надо каким-то способом временно показать.поэтому показываем ), открываем через forcekey на букву B.
Обычно приказами можно открыть (даже скрытое меню пример ), но это сбивает приказы, а forcekey не сбивает. Вторая проблема - надо вернуть все на место, когда меню закрываем. проблема вот в чем: трудно отследить, когда менюшку строительства закрывают. Частичное решение здесь
Можно еще удалить абилу AHbu, и меню пропадает из панели строителя, но потом это не вернуть никак. Не добавляется обратно
Это такое решение, возможно в рефордже есть и получше инструменты
теория 2 -метод ~~quq_CCCP~~ с переключениями
Этот метод не сбивает текущий приказ (если в качестве активируемой кнопки берем не сбивающий приказ - абилу "безумие"). И еще возможно может открывать скрытые менюшки рабочего.
рабочим активируем пустышку
можно создать где-нибудь в углу точно какого-нибудь даймика с возможностью строить (не обязательно одинакового, главное, чтобы у него было меню строить)
выбор переключения кидаем на нашего даймика
заставляем даймика - открыть меню. Можно открыть через forcekey, но че-то тупит. Лучше вызывать меню через приказ.
И тут же выбор переключаем обратно на нашего рабочего ( или на выделенную группу юнитов, если ранее у вас была выделена группа. тогда надо сохранить. Тут и проблема: если кинуть выделение на группу, то переключение может сбиться. У вас может быть отображена панель не раба, а например панель героя. А как нормально сделать переключение я не знаю ). То все происходит как и сказал quq_CCCP
вот карта теории 2теория 1 не получилась из-за многих проблем. Но вот теория 2 норм работает, решил проблему с выделением группы, когда панель может переключить не на кастера, и еще данный метод не сбивает ордер раба. вам еще надо таймером проверять закрыта ли меню, чтобы закрыть. пример //если будет не понятно, подскажу и доработаю наработку.
Простите, есть событие. Не знал. Похоже что можно отследить, пробовал и работает все ок. это на 1.26 патче еще есть.
Это с интерфейсом игрока как-то связано: изучение навыков (такое событие тоже есть Hero Abilities buton click), открытие спелбука. Ссылается наверное на GetTriggerPlayer(), если не ошибаюсь
похоже нельзя отследить GetTriggerPlayer(), проблема та еще. Отследить кто из игроков нажал на кнопку
в гуи написано, что это событие используется только в сингл плеере. просто отследить в мультиплеере кем было совершено нажатие из игроков невозможно. библиотеку функции просмотрел, все на этом закончим.
для чего вам это нужно?
к сожалению стандартными способами никак не отслеживается на 1.26. приказом отследить никак
но можно попробовать несколько идей на этот счет
лицензия работает на правительство.
какие нибудь чиновники из роскомнадзора придумают такую схему: запретить и заблочить все бесплатные аниме-сайты, и запустят лицензионный сайи со всеми платными фильмами и аниме. И даже не знаешь, рабочий этот сайт или нет. Проще посмотреть и покупать на сайте провайдера
щас можно только скачать только пропатченные игры: скачать вар 1.26а, качать вар 1.27, скачать вар 1.28 и так далее
Extremator предлагает делать переключение через выделения таверн через триггеры. Выделение с одной снял, выделение на другую переключил.
Хоттаб, предлагаю другой вариант - ОДНУ таверну со всеми героями. пример с итемами, там переключение система 14 верс
есть пример, тоже самое можно сделать например для героев. По идее можно всех-всех героев заранее забить в таверну. Так можно сделать ОДНУ таверну со всеми героями, но с переключением списков. Так можно сделать, это надо в РО забить всех героев в таверну, если не получается пробуйте через клавишу Shift. Но будет отображаться только первые 10-12, остальные не вместятся на панеле. Поэтому надо разбить героев на списки.
Можно спрятать всех героев, кроме определенных героев, находящей на первой странице. А когда нажимаешь, то прячешь для игрока одних героев на 1 странице, и показываешь других героев на след странице.
как прятать героев вот ссылкакогда задаешь лимит обучения данного типа ноль, то иконка этого героя исчезает. прячешь одних. разблокируешь других.
Хоттаб, значения золота и дерева используют целые числа, сохраняй целые числа. Вот посмотри пример кампании рексара, там переносят опыт, уровень - все целые числа, артефакты (тип, заряды, номер слота - все можно целые числа)
Ельнур, да
local data = { caster = GetSpellAbilityUnit(), target = GetSpellTargetUnit()}
prog, а если надо 3 значения привязать это надо писать так (чем больше параметров, тем больше аргументов? а как типы данных здесь?):
local data = { caster = GetSpellAbilityUnit(), target = GetSpellTargetUnit(), A = 0} A - целое число
я вот тоже думаю от локалок уйти в 1.26. и использовать чисто темповые глобалки для временных ссылок. и удобно, можно вызывать несколько функции посредством ExcecuteFunc (там где мб лимит ОП). Просто получается личное удобство, не надо в каждой функции объявлять тысячи лок по новой. Локалки работают только внутри функции, а использовались изначально как для мультиплеера, ну и для удобства конечно совместно с хэш-таблицей. инфа просто немного исказилась, их использовать можно только с вэйтами. Мне еще казалось, что локалки тратят и на создание, и на обнуление. А щас вот как Никакой разницы?
А может ли быть дело не в триггерах, а к примеру в моделях? Кто нибудь когда нибудь сталкивался с фризами из-за используемых моделей?
Это звучит глупа... Фризы из-за модели...
я сталкивался с подобным из-за строк, правда на патче 1.26. инфа 100%. там если создать тысячи строк за одну сек, потом анимации модели юнитов (пример анимации ходьбы) просто подлагивает, замедляются или как это объяснить (мне казалось даже игра подлагивает, а на самом то деле модели одновременно просто дергались). Короче анимация ходьбы например тупо тормозит 1-3 сек, а на след моменте он еще завершает. И чем больше строк создашь, тем больше и фризы с моделями (не с игрой, а моделями). решение: создать массив глобалки string и засунуть все тексты заранее в этот массив, думаю не зря так на гуи сделано, и лаги с моделями перестали мучать. как я понял: в игре одна строка, и тем больше текстов создаешь, тем больше строка
Берете пассивку-пустышку с описанием и иконкой (в рефордже и снаряды менять). Задаете икону и описание: "Шанс 40% при уроне получить 30% от дамага хп". Можно триггерный вампиризм сделать.
триггер A - входа юнита на карту
Событие - Юнит входит в карту
Условие - состоит ли входящий юнит в группе G
Действие - Добавить регистр - события на триггер B получения дамага (в разделе триггер, можно на триггер нацепить новое событие. так вот вешаем регистр собыия дамага на входящего юнита)
Действие - Добавить входящего юнита в группу G
триггер B - получения урона
условие - шанс 40% и (нужно проверять обладает ли дамагер абилкой, это надо делать сравнением уровня. если равно ноль, то абилки либо нет или не выучена, короче это не наш дамагер: LV>0)
действие - set hp = 0.3*damage
действие: set life of дамагера (тек здороаье+hp)
Ауру вампиризма можно делать подобным способом (предметная маска смерти действует на ренжевиков): Периодически каждую 0.5-2 сек удаляем всех из группы, но перед этим удаляем маску смерти (некоторые юниты могут выйти за пределы действия ауры). Примечание: Можно было бы и не удалять, но тогда надо было бы сравнивать расстояние между выбранным и кастером. Или можно использовать ауру пустышку, но тогда проверяешь всех с наличием баффа ауры. Далее: выделяем всех вокруг кастера, даем маску смерти, и добавляем в группу.
triggering unit - юнит-инициатор, в зависимости от события триггера
измени переменную triggering unit на matching unit. Неудивительно, что оно срабатывает, там фильтр принимает истину для каждого matching unit matching unit - работает в фильтре, который отсеивает всех выбранных по условию. если условие вернет истину, значит, добавляет в группу. если не подходит, отсеивает. picked unit - выбранный юнит
даем героям опыт, которые еще живы. +еще какие-то условия
объяснение (если раскрыть обертку)
вот тут выбирает всех юнитов в группу g с необходимым условием f. Внутри фильтра matching unit (на jass GetFilterUnit)
call GroupEnumUnitsInRect(g,bj_mapInitialPlayableArea ,f) далее перебираете каждого PickedUnit (GetEnumUnit), и что то делаете с ними
call ForGroup(g,function ....)
» WarCraft 3 / Warcraft 3 Reforged: Патч 1.32.9
Ред. MpW
» WarCraft 3 / Warcraft 3 Reforged: Патч 1.32.9
Ред. MpW
» WarCraft 3 / Отследить нажатие кнопки "Строительство"
Вот отредактировал, откомментировал каждую строчку. Красиво и норм. Теперь можно отследить открытие меню или закрытие (сворачивание). Если переделать хэш-таблицу и на хэндл записывать данные.
Есть недостаток с отрядами: когда выделяешь несколько юнитов, и переключаешь на раба. То рабом можно вызвать меню. А затем если взять и кнопкой Tab переключить например на след выделенного в отряде, то система до сих пор будет считать, что меню остается открытой (система: юнит то выделен, все впорядке). Тогда у вас работник будет подсвечиваться радиус, в то же время вы переключены на другого юнита в отряде - что есть не очень хорошо. Я не смог ничего такого найти с переключениями, даже не знаю как это исправить (возможно придется отказаться работать в группе во время стройки). Вроде драколич в мемхаке давно скидывал код на выделенного юнита, могу скинуть? но мемхаком больше не хочу заниматься
Ред. MpW
» WarCraft 3 / Отследить нажатие кнопки "Строительство"
Обычно приказами можно открыть (даже скрытое меню пример ), но это сбивает приказы, а forcekey не сбивает. Вторая проблема - надо вернуть все на место, когда меню закрываем. проблема вот в чем: трудно отследить, когда менюшку строительства закрывают. Частичное решение здесь
Ред. MpW
» WarCraft 3 / Отследить нажатие кнопки "Строительство"
» WarCraft 3 / Отследить нажатие кнопки "Строительство"
к сожалению стандартными способами никак не отслеживается на 1.26. приказом отследить никак
но можно попробовать несколько идей на этот счет
» Лучший блог / Крестьянин и банкир
Ред. MpW
» Администрация XGM / Как пропатчить пиратку.
какие нибудь чиновники из роскомнадзора придумают такую схему: запретить и заблочить все бесплатные аниме-сайты, и запустят лицензионный сайи со всеми платными фильмами и аниме. И даже не знаешь, рабочий этот сайт или нет. Проще посмотреть и покупать на сайте провайдера
щас можно только скачать только пропатченные игры: скачать вар 1.26а, качать вар 1.27, скачать вар 1.28 и так далее
Ред. MpW
» WarCraft 3 / Таверна и Герои в ней
есть пример, тоже самое можно сделать например для героев. По идее можно всех-всех героев заранее забить в таверну. Так можно сделать ОДНУ таверну со всеми героями, но с переключением списков. Так можно сделать, это надо в РО забить всех героев в таверну, если не получается пробуйте через клавишу Shift. Но будет отображаться только первые 10-12, остальные не вместятся на панеле. Поэтому надо разбить героев на списки.
Можно спрятать всех героев, кроме определенных героев, находящей на первой странице. А когда нажимаешь, то прячешь для игрока одних героев на 1 странице, и показываешь других героев на след странице.
Ред. MpW
» WarCraft 3 / Помогите с Jass (novic)
скобки пишут только для функции и константных функции вроде GetTriggerUnit()
Ред. MpW
» WarCraft 3 / как сделать стан мгновенно без даммикаста
интересно, когда юнит застанен, то может работать руна?
Ред. MpW
» WarCraft 3 / Система перехода с карты на карту
Ред. MpW
» WarCraft 3 / [lua] BonusMod
Ред. MpW
» WarCraft 3 / Hash в луа
local data = { caster = GetSpellAbilityUnit(), target = GetSpellTargetUnit()}
local data = { caster = GetSpellAbilityUnit(), target = GetSpellTargetUnit(), A = 0} A - целое число
» WarCraft 3 / Hash в луа
» WarCraft 3 / Hash в луа
Ред. MpW
» WarCraft 3 / Hash в луа
Ред. MpW
» WarCraft 3 / конверт ордер defend в луа
Ред. MpW
» WarCraft 3 / Утечки памяти и фризы в 1.32, которых нет в 1.26
Ред. MpW
» WarCraft 3 / Как сделать вампиризм для дальников?(я не знаю)
Условие - состоит ли входящий юнит в группе G
Действие - Добавить регистр - события на триггер B получения дамага (в разделе триггер, можно на триггер нацепить новое событие. так вот вешаем регистр собыия дамага на входящего юнита)
Действие - Добавить входящего юнита в группу G
действие - set hp = 0.3*damage
действие: set life of дамагера (тек здороаье+hp)
Ред. MpW
» WarCraft 3 / Платные герои
https://www.xgm.guru/p/100/181646/comments?postid=339499#comment...
Ред. MpW
» WarCraft 3 / Выдача опыта всем игрокам (проблема)
измени переменную triggering unit на matching unit. Неудивительно, что оно срабатывает, там фильтр принимает истину для каждого matching unit
matching unit - работает в фильтре, который отсеивает всех выбранных по условию. если условие вернет истину, значит, добавляет в группу. если не подходит, отсеивает.
picked unit - выбранный юнит
call GroupEnumUnitsInRect(g,bj_mapInitialPlayableArea ,f)
далее перебираете каждого PickedUnit (GetEnumUnit), и что то делаете с ними
call ForGroup(g,function ....)
» WarCraft 3 / Убей моего пеона
» Слёзы Бога / Слёзы Бога. Первый сезон. Первая серия.