Простые вопросы #2

Статус
В этой теме нельзя размещать новые ответы.
Разобрал чужую кастомку чтобы посмотреть как реализован интерфейс, но столкнулся с такой проблемой - например есть файл стилей dota_hud_health_mana.vcss_c и по коду видно что он нужный, без него ни как, но он нигде не подключается! Я шел абсолютно по всей цепочке подключений всех файлов, искал через нотпад++ по содержимому во всех файлах этой кастомки.
И это не единственный такой файл, их несколько, которые ни где не подключаются, но они важны.
Некоторые файлы отсутствуют, в xml подключается 2 css файла, которых просто нет в указанной директории.
А что самое интересное, если создать карту на основе этой кастомки, то все работает! Как это возможно?
 
Последнее редактирование:
Некоторые файлы отсутствуют, в xml подключается 2 css файла, которых просто нет в указанной директории.
Ты можешь подключать в xml уже существующие стили (написанные разрабами доты) из pak01_dir
 
  • Нравится
Реакции: Hulimontana
Ты можешь подключать в xml уже существующие стили (написанные разрабами доты) из pak01_dir
Спасибо! А что с файлами панорамы, которые ни где не подключаются, но они важны? Я реально вчера убил очень много времени на поиски, как же они подключаются и где, искал несколько часов, все перепроверил. В распакованной кастомке чего-то не хватает? Но ведь она работает если запустить.
 
Подскажите, пожалуйста, как при поведении "DOTA_ABILITY_BEHAVIOR_TOGGLE" менять иконки предмета( вкл. - 1, выкл. - 2)
 
точно не знаю как поставить вопрос, в общем, для всех кнопок (итерации для кнопок проходят нормально) ставится ивент исходя из индекса последней итерации на onactivate, а мне надо чтобы ставился ивент по своему индексу, вот цикл, в котором я все это обрабатываю
Код:
counter = 0;
for (tab in tabs) {
              /* тут он берет нужный tab*/  tab.SetPanelEvent("onactivate", function () { /* а вот уже внутри этой функции counter берется с моей последней итерации, в моем случае - 1 */
                    end = 0;
                    if ((counter) * 3 > panels_content_item_row.length) { end = panels_content_item_row.length; } else { end = (counter) * 3; }
                    for (row = (counter - 1) * 3; row < end; row++) {
                        panels_content_item_row[row].AddClass("active");
                    }
                });
                counter = counter + 1;
            }
как это можно поправить?
 
точно не знаю как поставить вопрос, в общем, для всех кнопок (итерации для кнопок проходят нормально) ставится ивент исходя из индекса последней итерации на onactivate, а мне надо чтобы ставился ивент по своему индексу, вот цикл, в котором я все это обрабатываю
Код:
counter = 0;
for (tab in tabs) {
              /* тут он берет нужный tab*/  tab.SetPanelEvent("onactivate", function () { /* а вот уже внутри этой функции counter берется с моей последней итерации, в моем случае - 1 */
                    end = 0;
                    if ((counter) * 3 > panels_content_item_row.length) { end = panels_content_item_row.length; } else { end = (counter) * 3; }
                    for (row = (counter - 1) * 3; row < end; row++) {
                        panels_content_item_row[row].AddClass("active");
                    }
                });
                counter = counter + 1;
            }
как это можно поправить?
После установки ивентов counter равен кол-ву tab'ов.
Чтобы всё работало как ты хочешь тебе нужно получать индекс в самой функции или передавать индекс в функцию.
Я обычно делаю так:
XML:
Код:
onactivate="OnSelect(1)"
JS:
Код:
function OnSelect(num) {
//num == индекс
}
 
точно не знаю как поставить вопрос, в общем, для всех кнопок (итерации для кнопок проходят нормально) ставится ивент исходя из индекса последней итерации на onactivate, а мне надо чтобы ставился ивент по своему индексу, вот цикл, в котором я все это обрабатываю
Код:
counter = 0;
for (tab in tabs) {
              /* тут он берет нужный tab*/  tab.SetPanelEvent("onactivate", function () { /* а вот уже внутри этой функции counter берется с моей последней итерации, в моем случае - 1 */
                    end = 0;
                    if ((counter) * 3 > panels_content_item_row.length) { end = panels_content_item_row.length; } else { end = (counter) * 3; }
                    for (row = (counter - 1) * 3; row < end; row++) {
                        panels_content_item_row[row].AddClass("active");
                    }
                });
                counter = counter + 1;
            }
как это можно поправить?
Тебе нужно использовать замыкание. Дело в том, что ты объявляешь counter 1 раз, а функция вызывается, когда этот counter уже прибавился, переменная не сохраняет значение внутри функции, а берет уже его из наружной переменной
 
как отключить возможность перемещения по нажатию ПКМ? чтобы выделение героя осталось, но он не реагировал на команду
 
Кто-нибудь знает где находится файл addon_english или addon_russian в доте?
 
Как сделать неограниченный пик героев (в herolist.txt -1 не работает)
 
Статус
В этой теме нельзя размещать новые ответы.
Реклама: