Добавлен , опубликован
Если данная тема уже существует, или я её создал не в том месте - укажите мне на ошибку, пожалуйста.
Здесь я бы хотел поделиться найденными багами. Возможно Вы пожелаете дополнить этот список. Далее список можно будет перевести и отправить разработчикам.
call SetUnitDiceSides( GetTriggerUnit(), 1, 0 )
в GUI редакторе в качестве индекса атаки можно выбрать только значение 0. Хотя первая аткака начинается не с 0 а с 1
call UnitAddAbilityBJ( udg_lSpell, GetTriggerUnit() )
call UnitHideAbility( GetTriggerUnit(), udg_lSpell, true )
call UnitHideAbility( GetTriggerUnit(), udg_lSpell, false )
Если герою дать обилку, сначала его спрятать, а потом отобразить - то абилке скроется, но не отобразится вновь
call UnitDisableAbility( GetTriggerUnit(), udg_lSpell, true, true )
call UnitDisableAbility( GetTriggerUnit(), udg_lSpell, false, false )
если абилку сначала заблочить, потом отобразить - то абилка не отобразится
call SetItemName( GetLastCreatedItem(), "test name" )
call DisplayTextToForce( GetPlayersAll(), GetUnitName(GetTriggerUnit()) )
если юниту поменять имя, а потом попытаться это имя узнать - то вернётся дефолтное имя юнита, а не установленное триггером
call SetItemName( GetLastCreatedItem(), "item name" )
call SetItemTooltip( GetLastCreatedItem(), "tooltip" )
если попытаться присвоить предмету уникальное имя или описание - то имя и описание поменяется у ВСЕХ предметов данного типа (а не одного лишь
call SetAbilityResearchTooltip( udg_lSpell, "test value 1", 1 )
call SetAbilityResearchTooltip( udg_lSpell, "test value 2", 2 )
не работает изменение описания для указанного уровня в окне изучения героических способностей
Следующий баг не до конца изучен:
Когда пытаюсь вывести строку, в которой используется символ % - вместо этого символа и символов рядом стоящих - подставляются странные значения, похожие на адреса данных.
set udg_itemStatASpd[i] = 0.05 * (1 + 0.1 * I2R(level-1))
set udg_items_descr[i] = name + " |cffffcc33(L" + I2S(level) + ")|r\n"
set udg_items_descr[i] = udg_items_descr[i] + "+" + I2S(udg_itemStatHp[i]) + " HP\n"
set udg_items_descr[i] = udg_items_descr[i] + "+" + I2S(R2I(udg_itemStatASpd[i] * 100)) + "% attack speed\n"
Т е вместо "% a" подставилась какая-то херь
Комментарий пользователя Sergarr, :
Возможно, это связано с недокументированной добавленной функцией целого деления (a % b), и интерпретатор делает черт знает что, когда он видит этот процент в строке.
Попробуй поставить два процента подряд вместо одного: %%. Обычно в языках программирования это работает с подобного рода символами.
Хотя, конечно, это очень сильная хрень.

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
13
6 лет назад
0
Clamp, чем твоё решение системнее? ТЕм что создаёт юнита и кучу информации, связанную с этим?
0
30
6 лет назад
0
Тем, что его можно просто вставить в код любой карты и оно сразу же будет работать, без плясок с бубном и левых операций в РО?
0
13
6 лет назад
0
Clamp, тебе в каждой карте нужно узнавать классификацию типа объекта? У меня проблема другого рода - при игре по сети очень сильные задержки при общении клиентов. Поэтому я стараюсь как можно меньше давать нагрузки на сеть (а значит - на создание данных, которые должны синхронизироваться между клиентами). Создавать юнита, чтобы узнать свойство его типа - непозволительная роскошь, я лучше для такой узкой задачи не поленюсь, и вложу свойства в флаги имени
0
29
6 лет назад
0
Я очень сомневаюсь что данные каждого юнита отдельно синхронизируются. Решение клампа можно было бы здорово улучшить кешем.
0
13
6 лет назад
0
Doc, подумай сам - если юнит создаётся - об этом должен узнать каждый клиент, в том числе узнать все параметры созданного юнита. Тоже самое когда юнит удаляется.
И тут всё зависит от того, как часто эта функция вызывается - если на этапе инициализации, чтобы узнать и сохранить параметр - то ок, а если в событии малой переодичности - то дорого выходит
2
29
6 лет назад
Отредактирован Doc
2
Нет, не должен. Учите матчасть. Локстеп работает не так. Юнит создается одновременно у всех потому что у всех выполняется один и тот же код. Синхронизация конкретного юнита тут не нужна. Десинк можно определить прохешировав весь стейт (хендлы) и сравнив его с клиентами.
0
13
6 лет назад
0
Doc, да ну, а как?
2
29
6 лет назад
Отредактирован Doc
2
Иначе никаких баталий 300 на 300 игра бы не потянула, тем более в 2003 году.
0
13
6 лет назад
0
Doc, скажи, в Warcraft скрипт отрабатывается на сервере, или на всех клиентах?
0
30
6 лет назад
0
Решение клампа можно было бы здорово улучшить кешем.
Если не сложно, можешь пояснить кодом?

4
29
6 лет назад
4
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.