PT153, ну у меня тоже дофига, правда я разделил добавление таймером - можно уперется в лимит операций.
Можно схитрить, сделать по pld скрипту для каждого героя, а в таверне продавать пустышки - при выборе героя, вызываем pld скрипт, после подгрузки - секунды 3, создаем героя для игрока.
ScopteRectuS, нет, это просто ничего не дает - constant служебный оператор для интерпретатора, он не оказывает никакого влияния на работу функции, нужен этот оператор только чтобы защитить себя от ошибок в коде - не дать сменить значение переменной.
constant function name... юзали для того чтобы показать где настраивать значения, поиск в коде по слову constant вполне удобный.
conatant не стирают оптимизаторы, сразу видно какая переменная или функция отвечает за настройки, допусти строки которая выводится на экран.
Как все запущено...
Id абилки это именно целое число, в 256'ричной системе счислений он выглядит как 'ANeg' к примеру, а как число в десятичной системе - 1095656807 вот так, ну или вот так 414E6567 как шестнадцатеричное.
Делаешь базу данных, всех абилок и всех пустышек, либо через хештаблицу - первое число луюбое, второе твоя пустышка, сохраненное значение - твой ид абилки.
Либо 2 массива, в первом id пустышек, во втором абилок и перебор циклом, пока число в ячейке n массива пустышек не будет равно id текущей пустышки (ту которую купил юнит), ну а потом вручаем юниту абилку из массива абилок из ячейки n. Способов как сопоставить 2 массива чисел не мало, так что мб подумаешь о завязывании с ГУИ, говорят он вызывает рак мозга..
ScopteRectuS, вот тут есть пример перебора структуры с пояснениями ссылка
И вот тут ссылка.
Но особо увлекаться этим не вижу смысла, ну только если у вас не 300+ объектов для перебора..
ScopteRectuS, Скорее его там нет, это просто свойство интерпретатора, как и тип nothing, который объявить нельзя, так вероятно и constant - просто дает понять интерпретатору что эту переменную вынести в отдельное место, так же проверить код- нет ли операции присвоение этой переменной.
Если есть - выдать ошибку. Обращение к переменной медленнее обращение к конкретному значению, указанному в месте использования.
call CreateUnit( pl, 'hpea', x, y, bj_unitFacing) медленнее call CreateUnit( pl, 'hpea', x, y, 270.00 ).
Потому что движок сначала ищет переменную, потом берет из нее значение, иначе сразу вводит значение.
т.к есть макросы, дефайны, всякие фитчи тулов векса по замене констант, это все нафиг никому не упало. Софт все сделает за вас.
Карту в студию, судя по вашему коду там все печально.
Иллюзия такой же юнит, как и остальные, но её отличает то что на нее не работает событие смерти (ну когда иллюзия умирает в доте же нам не пишут дабл килл или так далее) ну и проверка IsUnitIllusion().
Так же у вас в коде полно утечек.
Разумеется есть, GetUnitItemByTypeBj или как то так, это бж функция, суть в цикле перебирает слоты инвентаря, если предмет в слоте N равен по типу заданному, возвращает ссылку на этот предмет, иначе возвращает null.
В папку save внутри варкравта
Где 2 тебя папка вара? В ней будет папка save ( там данные кампаний хранятся, типо сколько игрок пошел, че есть у героя). Ну туда сохранит, а так путь можно указать любой, который вздумается, т.к прилоду пофиг, хоть в раздел с виндой...
Вызываем этот код пред созданием героя, чуствуем просадку фпс, побегали, покастовали спеллы (вейт нужно подольше). Идем смотреть что в текстовик сохранилось, там будет полный список того что загружал движок.
Затем Preloader("save//mydata.pld") - это вызов этого скрипта, который загрузит в память все что указанно в этом скрипте.
Это используется в кампаниях.
Кривоватая подгрузка, удалять не обязательно. Лучше юзать preload без этаких костылей, темболее в JASS есть механизмы автоматического создания pld скриптов.
У пассивок кроме креста перерождения и эксгумации труповозки нет кулдауна, ну совсем нет! Так что берем перерождение и рисуем на нем кулдаун мемхаком, а чем эффект крита или блока изображаем триггерно ну или вручаем, удаляем эти пассивки в заблочннном спелбуке юниту.
Есть одна наработка - Dota helper, это dll которая подключается мемхаком к карте, дает много чего (в основном для доты), но там есть дабл клик, который реализован так: когда игрок нажал способность и пытается её кликнуть в область инетфейса, код из библиотеки мгновенно переносят курсор в позицию портрета, так как определение координат виджетов на экране уже есть, думаю автонаведение сделать вполне можно.
Но это уже C++ и поддержки нету, думайте и решайте все сами.
» WarCraft 3 / PreloadAbility( integer )
Но важно чтобы юнита видели игроки - иначе модели и звуки с иконками и текстом не подгрузятся...
» WarCraft 3 / PreloadAbility( integer )
Можно схитрить, сделать по pld скрипту для каждого героя, а в таверне продавать пустышки - при выборе героя, вызываем pld скрипт, после подгрузки - секунды 3, создаем героя для игрока.
» WarCraft 3 / constant function
constant function name... юзали для того чтобы показать где настраивать значения, поиск в коде по слову constant вполне удобный.
conatant не стирают оптимизаторы, сразу видно какая переменная или функция отвечает за настройки, допусти строки которая выводится на экран.
» WarCraft 3 / constant function
» WarCraft 3 / Последний вопрос в рубрике: джассеры, помогите с оптим. кода. =)
Id абилки это именно целое число, в 256'ричной системе счислений он выглядит как 'ANeg' к примеру, а как число в десятичной системе - 1095656807 вот так, ну или вот так 414E6567 как шестнадцатеричное.
Делаешь базу данных, всех абилок и всех пустышек, либо через хештаблицу - первое число луюбое, второе твоя пустышка, сохраненное значение - твой ид абилки.
Либо 2 массива, в первом id пустышек, во втором абилок и перебор циклом, пока число в ячейке n массива пустышек не будет равно id текущей пустышки (ту которую купил юнит), ну а потом вручаем юниту абилку из массива абилок из ячейки n.
Способов как сопоставить 2 массива чисел не мало, так что мб подумаешь о завязывании с ГУИ, говорят он вызывает рак мозга..
» WarCraft 3 / структура и перебирание данных в ней
И вот тут ссылка.
Но особо увлекаться этим не вижу смысла, ну только если у вас не 300+ объектов для перебора..
» WarCraft 3 / структура и перебирание данных в ней
» WarCraft 3 / constant function
Если есть - выдать ошибку. Обращение к переменной медленнее обращение к конкретному значению, указанному в месте использования.
call CreateUnit( pl, 'hpea', x, y, bj_unitFacing) медленнее call CreateUnit( pl, 'hpea', x, y, 270.00 ).
Потому что движок сначала ищет переменную, потом берет из нее значение, иначе сразу вводит значение.
т.к есть макросы, дефайны, всякие фитчи тулов векса по замене констант, это все нафиг никому не упало. Софт все сделает за вас.
» WarCraft 3 / баг компиляции
» WarCraft 3 / Событие с иллюзией.
Иллюзия такой же юнит, как и остальные, но её отличает то что на нее не работает событие смерти (ну когда иллюзия умирает в доте же нам не пишут дабл килл или так далее) ну и проверка IsUnitIllusion().
Так же у вас в коде полно утечек.
» WarCraft 3 / Как сделать модель лежащего предмета.
Настройки предмета ни о чем не говорят?
» WarCraft 3 / Как сделать модель лежащего предмета. Warcraft 3
» WarCraft 3 / Способность с указанием цели, без анимации каста
» WarCraft 3 / Проблема с ИИ
» WarCraft 3 / Определённый предмет с инвентаря
» WarCraft 3 / PreloadAbility( integer )
Где 2 тебя папка вара? В ней будет папка save ( там данные кампаний хранятся, типо сколько игрок пошел, че есть у героя). Ну туда сохранит, а так путь можно указать любой, который вздумается, т.к прилоду пофиг, хоть в раздел с виндой...
» WarCraft 3 / PreloadAbility( integer )
Затем Preloader("save//mydata.pld") - это вызов этого скрипта, который загрузит в память все что указанно в этом скрипте.
Это используется в кампаниях.
» WarCraft 3 / PreloadAbility( integer )
» WarCraft 3 / Воскрешение декораций
» WarCraft 3 / Реализация квиккастов
» WarCraft 3 / Как сделать пассивку с перезарядкой?
» WarCraft 3 / Как сделать пассивку с перезарядкой?
» WarCraft 3 / Реализация квиккастов
Но это уже C++ и поддержки нету, думайте и решайте все сами.
» WarCraft 3 / Не обновляется ячейка мультиборда
» WarCraft 3 / Подскажите спеллмейкеры...
В статьях описано че и как делать.