27

» WarCraft 3 / Ломается система динамичной цены найма юнита

Данная система даёт сбой если юнит типа пехотинец был в очереде а денег не хватает
То есть я могу бесконечно нанимать их даже при не хватки денег. Есть идеи как решить?
Ну, ивент "начинает подготовку юнита". Это отслеживаем, когда начинается обучение юнита. А отследить последующих в очереди не удаться, только с помощью приказа, когда нанимаете бойца, бараки получают приказ. Приказ, еще можно отменить. Помню как то делал. Поищи приказ "отмена", не путай с приказом "стоп". При проверке, если у игрока нет ресурсов, то отдавай баракам приказ отмены, и последний в очереди отменяется. Если я там помню

27

» WarCraft 3 / Ломается система динамичной цены найма юнита

nazarpunk,
Я так понял, что бесплатные юниты не с проста, тк у автора собственная система ценника. Задай ему фиксированную цену в ро, и игрок не всегда сможет купить даже за скидку, и юнит не появится в бараках. Вот реализовал, точнее, это еще полдело, тк ивент триггера ловит только обучение, а не заказ всех юнитов в казарму. Надо с ивентом приказа для бараков ловить очередь. а теперь, он не может придумать как ограничить наем. Я предлагаю просто приказом отмены из очереди баракам удалять, если не прошел требование по ресурсам
27

» WarCraft 3 / Ломается система динамичной цены найма юнита

Изменить никак стандартным способом. Не помню, можно ли изменять в рефоге цены, тк там тоже завезли функции, и если да, как там работает.
Можно либо фреймами, либо ujapi
Фреймы на рефордже: Ты просто переделываешь стандартный интерфейс, и меняешь кнопки. Но это большая работа, но я уже разжевал для новых верущих, все что остается практика. Ах, да там требует понимание хотя бы jass. Я что то в гуи не находил ни ивентов, ни команд, когда начинал. Это уже сейчас ввели. Хотч, если честно, может большой работы и не потребуется, написать какой-нибудь костыль, и визуально прикрыть дефолтный тултип с ценником, но заморачиваться не хочется
ujapi : сейчас там больше функции, и активно поаолняется. Возможно, там вам не нужно будет изучать фреймы, достаточно будет изменить цены напрямую, если нет, к автору. Тут тоже надо jass изучать
27

» WarCraft 3 / Воскрешение ломает счетчик юнита/цену юнита

Ну, что вас всех триггерит на одни и те же вопросы. Попробуйте перебрать все события, и выводить на экран имена кастера/сумонера/сумона
Посмотрите здесь все способности с призывами, здесь подробно описал каждый скилл, и каким ивентом можно это отследить
Есть события - юнит призывает. Ивент замечателен тем, что ловит не только призыв, но и воскрешение. Однако, не все абилки призыва можно словить, вроде ульту рыцаря смерти.
Есть событие - юнит входит в область (игровая карта). Можно ловить приход новых юнитов. Правда, надо отсеивать, иногда москитов тролля ловит.
Есть событие - юнит получает приказ. Интересно, суммоны вроде ульты рыцаря смерти могут ли получать приказы. Можно попробовать отслеживать изменение каких то данных
Еще была абилка Adef ее надо попробовать проверить на воскрешение. Там абилка дает приказы даже трупам. Пример разъяснения работы я вот не помню, когда юнит воскрешает получает ли приказ
27

» Администрация XGM / Ошибка при заходе

У меня мобильник дохлый, хром. Хром обновляется
Драйвера андроид какие то обновляет.

Мб память телефона перегружена.. после перезагрузке все нормально работает
27

» WarCraft 3 / GetLocalPlayer()

nazarpunk, тут знаешь, дело в знаниях и опыте, на них будет строится твоя уверенность. Ты же не сможешь разбить в пух и прах аргументом чужой без определенных знании. Вторая причина, что ты можешь внести туда? Методичка должна быть какую то информацию новую. Тут Док все кратко рассказал, мне даже, нечего добавить.
Выше я писал, что хотел привести уйма тестов с примерами с мультибордом, спецэффектом, юнитом итд. Разобрать всякие часто встречаемые ошибки (загуглить на хгм все темы с десихронамм), придумать какие нибудь локальные фишки вроде примера Дока про мафию выше, где каждый локально видит граждана, что-нибудь такое-придумать. мб можна какие то данные юнита подергать.
Если честно, у меня не было энтузиазма делать тесты, чтобы написать статью подобие фреймам. У меня нет понимания как работает, но есть знание то, чего не надо делать. По фреймам это не моя работа, я ее украл с хайва, перевел, и потом что то добавил, улучшил, переделал
Самое главное, что фишка статей, это можно рассказать, но не показать. Пример карты "мафия" каждый локально видит своего граждана, но есть определенное НО. Подводные камни, если будут сравнивать типы, и др данные юнита, у меня просто может вылетить?
27

» Администрация XGM / Приглашение

Потому, что приглОтить?
пригласить, приглушить, придушить, проглотить
27

» WarCraft 3 / Задания в редакторе отобразить определенным игрокам

кстати, а Get Local Player можно ли сохранять в глобалку на старте игры, чтобы не вызывать команду каждый раз?
Можно. Я так когда то делал. Без проблем. Заводил глобалку на старте и писал GetLocalPlayer = GetLocalPlayer()
Вдруг там движок сравнивает значения одинаковых переменных по всем игрокам в сетевой игре, и выдаёт десинк при несоответствии
Такое логически невозможна. Значение в глобалке у каждого игрока на своей машине будет свое. Пример глобалка GetLocalPlayer у красного хранит значение, что он локальный игрок, у синего GetLocalPlayer будет показывать что он.
Можно еще локально узнвть номер локального игрока, и его брать.
Хотя, мне без разницы. Позже я отказался от глобалок. Я на фреймах кстати хранил данные квждого игрока локально в массивах
На самом деле, я не специалист по десинхам, тк у меня карты нк доходили до этапа мульплеерной игры. Но вот часто тестил, и ни разу не бывало десинхов, а если бывали, то я устранял. Нужно знать как правильнее делать или устранять
27

» WarCraft 3 / Задания в редакторе отобразить определенным игрокам

Вам поможет эта статья
Эта команда GetLocalPlayer() дает узнать, какая машина является локальной. Если ты играешь за красного игрока, у тебя покажет, что ты локальный игрок. Если твой сосед играет за синего, у него отображается, что синий это локальный, а не красный. У каждой машины будет свой игрок.
В начале игры или в какой то момент игры (не обязательно со старта) ты создаешь для всех общее задание, и скрываешь. Статья учит, что нельзя создать локально данные, иначе это будет плохо. Я вот не знаю, как с квестами, можно ли их локально создавать, ведь это относится к части интерфейса, а там все локально можно сделать.
Можно проверить у каких игроков (допустим красный и синий), локальная машина, и добавить/изменить задание.
if GetLocalPlayer() == Красный ИЛИ GetLocalPlayer() == Синий then
Показать квест
end
27

» WarCraft 3 / Не скрываются Tooltip-фреймы

Я немного не понял ваш вопрос.
Сначала я думал, что вам нужно скрыть дефолт тултип
Как скрыть / убрать дефолтный tooltip
Посмотрел, и понял в чем проблема. Вы кажется использовали пример 1 на backdrop
У StatIconPlayer1 (backdrop) не может быть подсказок, ни событии, это особый фрейм с изобрвжением. Чтобы у этого фрейма была какая реакция, сверху на этом фрейме создают пустышку StatFramePlayer1 (FRAME), тип frame можно накинуть tooltip, мы как раз и прикрепляем подсказку
BlzFrameSetTooltip(StatFramePlayer1,StatTextPlayer1)
Чтобы отключить показ подсказки, достаточно выключить StatFramePlayer1 (frame), а вы прячете иконку StatIconPlayer1 (см. код ниже), с этого ничего не будет. сам фрейм-виновник SetFramePlayer1 невидим, но еще существует, его то и надо выключить.
BlzFrameSetSize(BlzGetFrameByName("StatIconPlayer1",0),0,0)

Теперь надо понять почему у вас текст не меняетс

Возможно потому что дело в этом
call BlzFrameSetText(BlzGetFrameByName("BoxedTextValue_Player1",0), s)
call BlzFrameSetText(BlzGetFrameByName("BoxedTextTitle_Player1",0), "Дополнительные характеристики")
Ты сначало меняет описание на строку s, а потом повторно меняешь на "доп характеристики"
27

» WarCraft 3 / Можно ли отследить конец разложения юнита?

nazarpunk, когда труп разложился, окончательно, т.е. время истекло, ему игра отдает приказ undefend. А через 0.00 сек он уже окончательно удален что не понятно? Его уже нет в игре. Воскресить ничего не может трупа то нет.
Смотрел наработку
Воскрешение как раз можно отследить. Тем более паладоса. Не понимаю в чем проблема. Вроде через как ивент призыва.
27

» WarCraft 3 / Можно ли отследить конец разложения юнита?

Была одна наработка как отследить реинкарнацию/трансформацию (морф)/и конец разложения (удаление) ссылка
Есть способности вроде укрыться щитом Adef. И в игре есть занимательная особенность: при смерти юниту зачем то отдают приказ undefend. Возможна, связано с моделью, я не знаю, зачем игра отдает приказ. Но замечано не только при смерти, но и при трансформации (морфе), даже, разлагающему трупу (юниту) перед удалением отдает приказ undefend. По моему мнению, это позволяет юниту убирать щит, переключить из активного режима в выключенный, наверняка какая нибудь защита от багов. Абилка Adef просто универсальна в отлове, об этом оаишу ниже.
Что же там с реинкарнацией? В чем проблема реинкарнации?
При наличии абилки реинкарнации "событие - юнит умирает" не засчитывало, что юнит умер, это было проблемой отследить. Но отследить можно было с помощью Adef и отловом приказа "undefend", но с задержкой таймером через 0.00 сек чекаем мертв ли он
бесполезная инфа
К слову немного информации: Крест реинкарнации героя (труп) это типа крест, который можно выделить, и можно отдавать приказы defend/undefend, таким образом, скилл может переходить в включенное состояние, и выключенное. Но кресту в здравом уме никто же не отдаст приказ undefend, но такие картоделы были. Удивительно, что обычные трупы (не говорю про геройские кресты, которые можно выделить на карте) тоже могу получать приказы, правда, от специальных абил вроде Adef.
Насчет морфа, как отследить трансформацию юнита?
Такого события тоже в игре нету, можно было отслеживать через "юнит приводит способность в действие", либо "юнит получает приказ", или другими подручными средствами. Но эти все проверки ссылались на один конкретный скилл/морф, мб никому не составит это проблему (даже для меня). а вот если у кого-то сотня морфов происходит, при чем от разных скиллов, как тут узнать, что морф произошел? Все делается также как и в реинкарнации, но с некоторым отличием. При морфе игра юниту тоже отдает приказ undefend, убрать щит. Зачем? Тоже не понятно. Хитрый автор системы сделал одну фишку, можно вручить какую нибудь "временную абилку".
Зачем вручать временную абилку? Как это поможет отследить морф?
При морфе юнит перевоплощается из одного в другого, меняется, но и может УТРАЧИВАТЬ ЭФФЕКТЫ, АБИЛКИ. Если в игре вы давали ее кодом, то при морфе эта абилка исчезала, и уже не сохранялась. Надеюсь объяснил. В чем же отличие системы реинкарнации от этой? Здесь мы даем какую нибудь "временную абилку" (можно пустышку), тк она не является пермаментной, и это позволяло фиксировать то что юнит трансформировался. При получении приказа undefend таймером через 0.00 сек чекаем наличие временной абилки, осталась ли она
Насчет удаления юнита из игры. Как отследить конец разложения, и удаления юнита. И что юнит окончательно разложился и удалится.
Можно просто использовать аналогичную систему реинкарнации, но с проверкой, что юнит уничтожен.
GetUnitTypeId == 0 //его больше не существует
Несмотря на то, что юнит мертв (разлагающий труп), зачем то игра перед удалением отдает ему приказ undefend, будто говорит ему : "дорогой юнит, убери пожалуйста щит от всяких багов перед удалением. Приятной игры". Тут точно также как и с реинкарнацией, только проверяем, что юнит удален. Таймером через 0.00 сек (через 0.00 сек будет удален) после получения приказа
27

» WarCraft 3 / Как изменить "иконку нейтрального здания"

В рефе нативки (заглянул в статью). Мб эти нативки еще есть и в 1.26 (я не знаю)
---@param whichUnit unit 
---@param red integer
---@param green integer
---@param blue integer
---@param pingPath string
---@param fogVisibility fogstate
---@return minimapicon
function CreateMinimapIconOnUnit(whichUnit, red, green, blue, pingPath, fogVisibility)


---@param where location 
---@param red integer
---@param green integer
---@param blue integer
---@param pingPath string
---@param fogVisibility fogstate
---@return minimapicon
function CreateMinimapIconAtLoc(where, red, green, blue, pingPath, fogVisibility)

---@param x real 
---@param y real 
---@param red integer
---@param green integer
---@param blue integer
---@param pingPath string
---@param fogVisibility fogstate
---@return minimapicon
function CreateMinimapIcon(x, y, red, green, blue, pingPath, fogVisibility)

---@param whichMinimapIcon minimapicon 
---@return nothing
function DestroyMinimapIcon(whichMinimapIcon)

---@param whichMinimapIcon minimapicon 
---@param visible boolean 
---@return nothing
function SetMinimapIconVisible(whichMinimapIcon, visible)

---@param whichMinimapIcon minimapicon 
---@param doDestroy boolean 
---@return nothing
function SetMinimapIconOrphanDestroy(whichMinimapIcon, doDestroy)

Но я этими функциями не пользовался, поэтому не знаю, будут ли работать. но отсортировал по группам
27

» WarCraft 3 / Скрытие иконки приказа

Гогонаш, попробуйте ujapi. Загуглите, это наработку сожно скачать на хгм. Эта наработка, где введено много функции. Она открывает работу на патче 1.26. И она лучше рефа, постоянно автор вносит много функции, изменении и правок. Можно даже с автором напрямую связаться, если не хватает каких то функции. Автор русскоязычный.
Функции даже больше чем в поганном рефе. Реф вышел не доработанным, функционал хреново работал, не так как надо итд. Я реф полюбил из за новых инстрцментов, но быстро опомнился, когда все это не работало. Ujapi даже больше функции стало.
27

» WarCraft 3 / Скрытие иконки приказа

Выше бот тебе ответы дал.
Ладно, дам ответ. Можно скрыть эти командЫ через файлик (не через спеллбук, спеллбуком нельзя командные скилы никак спрятать). Так делали в 1.26 патче
В комментариях под статьей есть еще примеры разборов как скрыть. Задавали координаты кнопки (0,-11).

В этой теме найди интерфейс = команды приказов
27

» WarCraft 3 / Скрытие иконки приказа

А как вообще взаимодействовать с этими кнопками?
Ну, это надо с фреймами работать. В 1.26 патче нет таких функции, их завезли в рефордже. Об этом написано в моей статье.
Что можно с кнопками делать? Можно форсить горячими клавишами. У игрока есть функция вызова горячей клавиши ForceKey. Ты можешь прожать (зафорсить) кнопку у выделенного тобой юнита
Самый главный пример на фреймах это с инвентарем главная фишка, можно создать кнопки, либо заюзать способности приказом или другим способом. Возникли проблемы с активацией прицела, в варе не было возможностей вызывать прицелы, форсил горячую кнопку
Например: хоткей поменять
Хоткей ты никак не поменяешь динамично. В 1.26 патче точно такого не было, да и смысла было ноль. Мало, возможностей. Только с фреймами что то можно было закостылить
В рефордже завезли набор нативок. Смотри там, если что. Я если честно, все не помню, какие там, есть ли, там было очень много нативок, еще можно было менять филды. Недавно понял как работают филды по одной статье. Оказывается, можно филды изменять до получения абилки, порядок такой, пример:
  1. редактируем филд абилки у юнита, которой нет.
  2. даем абилку юнита.
Работает. Правда, не всегда, и не у всех. Ладно, не знаю, зачем тебе пишу.
Может быть там да найдется ативка или филд изменить (задать) абилке хоткей
В ujapi можно. Наверное, можно все.
Либо можно в рефе систему отлова нажатие сделать. Если вы делаете не скилы с прицелами, иначе прицелы не вызвать, то можно обойтись, и сделать триггерный скилл, чистым кодом
27

» WarCraft 3 / Скрытие иконки приказа

Вы не сможете так сделать. Горячие клавиши (hot key , хоткеи) не работают, если иконки скрыты, так сделана игра, интерфейс.
Я бы тоже хотел бы вызывать в своей системе скрытые скилы хоткеями, но к сожалению, так не будет работать. Я сколько мучался, так не получалось, игре важно, чтобы кнопки были видимы/скилы были выданы/не спрятаны
Вот возьми универсальную абилку - канал. У нее можно скрыть иконку в настройках ро. И вот, что получается, горячая клава не работает, если ты скроешь. Аналогично, в рефордже есть нативки, которые скрывают иконки абил/либо блокируют (при дизейбле исчезает иконка куда то).
сокрытие кнопок юнита
В рефордже перестают адекватно работать сокрытие через импорт, или ро работает 0,-11 (но не всегда). Я уже не помню, что там. Помню, что я другое решение нашел - через нативку.
В свое время у меня не работала, там импортировал файл блокнота с изменными данными абилки, сейчас не знаю. Это пишу по опыту старому. Реф сделали через жопу, и некоторые нативки плохо работали, или мы не понимали, что делвли. Я какой странный способ сокрытия нашел. Мб не идеальным
Можно спрятать этими нативками в рефе. Однако, они тоже не всегда адекватно работают. Можно спрятать на совсем, и обратно не хотят отображаться. У меня было так, что никак не хотела кнопка обратно отображаться. Мб дело в моих кривых руках. чисто спрятать и показать => работает
native BlzUnitHideAbility takes unit whichUnit, integer abilId, boolean flag returns nothing
или это. выключать их мб и не стоит, но вот второй параметр отвечает за сокрытие. Но работает и багуется также.
function BlzUnitDisableAbility takes unit whichUnit, integer abilId, boolean flag, boolean hideUI returns nothing
native BlzUnitDisableAbilitytakes unit whichUnit, integer abilId, boolean flag, boolean hideUI returns nothing
Единственный нормальный способ сокрытия:
BlzUnitDisableAbility(u,id2,false,hideUI) => флаг hideUI меняешь, а первый не трогаем
В рефордже другой способ нашел - фреймы. Я перетащил иконки за пределы экрана. На экране иконок не видно, но система считает, что они в игре, и хоткей работают
27

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

Это древний вопрос, его сколько раз задавали. Заполню подробной информацией
В свое время в 1.26 патче не было такой функции, чтобы задавать максимальный запас здоровья. Приходилось мучится, ну не так уж критично это было, решение там было.
Ну решение нашлось сразу же на форуме хгм. Решалось через костыль - давали способность предмета, которая увеличивала максимальный запас здоровье. Это одно из решении. Я тогда знал, что использовать пассивные абилки это решение, какой я бы хитрым. Но, мне не нрав забивать поле навыков пассивками, даже, если это было рабочим вариантом. к тому же было много проблем с этим пример при морфе юнит утрачивал пассивки итд. Ладно не буду пиздеть, но мне просто не нрав все делать на абилках, хотелось прямо изменять
Есть костыль (выше вам скинули пример), позволявший сохранять измененик макс запаса ПОСТОЯННЫМ. Умельцы нашли баг с абилкой макс запаса хп, при получении можно сразу дать, тут же изменить, и сразу же удалить абилку. Но: результат сохранится, так будто, у юнита это свой макс запас хп
Но, что если вам захочется динамичной системы изменения, для этого вам приходилось бы придумывать для каждого свою систему. Есть решение - использовать набор абил со степенью двойки. На правах рекламы покажу, что есть система Bonus mode Эта система не единственная, можете загуглить и найти на гуи, jass, так сказать аналоги есть, и можно подобрвть для 1.26 патча конечно, система сделана для рефорджа, на луа язык. Но, не сложно переделать на jass для 1.26. Но считаю мазохизмом этим заниматься, если есть ujapi. Можно сразу перейти на ujapi
К кстати, в рефордже, уже ввели новые нативки. И есть функция изменения запаса макс хп
27

» WarCraft 3 / Нюанс нестандартных способностей

Автокаст от спеллбрейкера работает, если обнаруживает у врага положительный buff. Или у союзника отрицательный buff. Главное условие: нужно чтобы был рядом в поле действия скила тот, кому можно передать это. Наверное самому себе можно передать положительные баффы, так сказать отбирать у всех, не тестил.
Похищение магии 'Asps' - ворует полезное заклинание у врага, и передает его ближайщему союзнику (или наоборот). Короче понял это так, вражеский юнит может повесить положительный бафф на себя или получить его от своего соратника, а похититель берет и передает его себе или другим союзникам. Или забрать у себя или союзника отрицательный дебафф и передать его врагу. Очень полезная штука. И уникальная.
Есть у всех абилок приоритет в РО для кражи заклинания (поле "приоритет кражи для заклятия": 0-заклинание не подлежит краже, 1- наивысший приоритет кражи, 2,3.. - более низкие приоритеты).
стандартный список приоритета (что-то очень мало, всего шесть заклинаний, которые можно украсть. У остальных в поле = 0, надо самим тогда настраивать):
Список ниже, это то, что видел в настройках ро, в то же время как у остальных заклятий (вернее большей части скилов) стоит 0:
духовное пламя = 10
замедление = 3
кровожадность = 11
проклятие = 1
волшебный огонь = 2
ярость = 11
на самом деле этот не весь список. buff должен быть магическим. если что, можно вот здесь посмотреть список buff тема
кстати, где-то читал, что эта способность относится что-то типа диспела. сайт
27

» Блог им. TerrorGold / ПЕРВЫЙ СЕЗОН НАРУТО - ШЕДЕВР?

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

» WarCraft 3 / Как сделать бесконечную дальность прорисовки?

За это отвечает одна из функции камеры

CAMERA_FIELD_FARZ - дальность по оси Z - так понял это определяет как далеко видит камера, объекты прорисовывают и так далее. Если значение прописать слишком маленькие, то это у вас уйдет за черный экран (то есть вообще ничего не видит, обычно дальние объекты за черный туман уходят, даже если у вас карта открыта). По умолчанию значение равно 5000. Еще раз

Но на ваш вопрос я ответить не могу. Можно ли снять ограничения, введя другие значения в константы, или нельзя. Тут в варкрафте могут быть лимиты, хоть миллион поставь, настройка сбросится, тут мб своего рода защита. Можно ввести больше значения, пишут что макс 10000. Но большие не рекомендуются, и уогда на камеру прорисовываются очень много объектов, может подлагивать. И может даже вылететь. ведь надо самому пробовать, тыкать, тестить. Варкрафта сейчас больше нету, ушел в юнити. Неизвестно можно ли прорисовывать объекты без лагов? Можна.. так и не узнаешь

Спроси, Unryze. Он точно больше знает про возможности движка, внутренности игры ковырял