Ну камон в ск2 напилили непонятной компонентной структуры в которой черт ногу сломит, думаю многие начинали моддинг вк3 с поиграшек в редакторе объектов, в ск2 там все супер мега абстрактно модульно расширяемо сложно, зачем - непонятно. Чтобы можно было все делать в обжект эдиторе? По сути то все такое же программирование мышкой, да только через пень-колоду. У людей гуи намного лучше в голове укладывалось. Вторая попытка сделать нормальный скриптовый язык тоже обосралась - этот гелекси скрипт ну говнище говнищем, зачем вообще делать свое уже в таком то году - непонятно. Не нужно говорить что что-то там усложнение неизбежно. В той же доте как-то же обошлись без подобных мега-архитектур. Функция всегда будет лучшей компонентой. Больше функций в апи - больше возможностей, точка.
Ты всегда можешь все хендлы рассматривать как интежеры.
в реальности мне будут нужны
Я очень сомневаюсь в твоих супер-теориях. Говорю по опыту: проект на 50 000 строк, использований подобной функции: 1. Проект на 1 400 000 строк, использований подобной функции: 18.
Группируя данные в структуры ты опять же получаешь поиск по интежерам.
Пример невалидный.
Ну и я это предложение уже оформил несколько дней назад с валидными примерами :)
Да в вурсте есть нормальная поддержка дженериков и вообще человеческих фич.
Еще раз спрашиваю, зачем тебе функция с обобщенными типами если в реальности ты ее будешь использовать с 2-3 типами? Напиши 2-3 функции.
Дженерики - фича нужная, но твой пример инвалиден.
Ты сам такую функцию написать не можешь или что?
То что ты предлагаешь требует поддержки дженерик типов. В реальности сколько тебе бы пришлось написать таких функций, напиши их ты вручную. Три? Каждая по 6 строчек?
Doc, уж проще сделать на хт, побыстрее перебора будет.
В хештаблице ключи - интежеры, ты как собрался по строке-имени без перебора доставать их хештаблицы триггер? Можно организовать благодаря вторичному ключу и хешированию строки "массив" и получить реальную хештаблицу строка - триггер, но это уже никак не подходит под "проще".
name_to_trigger(string name) {
for (integer index = 0; index < name_array_index; index++) {
if name_array[index] == name {
return trigger_array[index];
}
}
}
Затем регистрируем все триггеры через register_trigger.
А после этого думаем, реально ли у нас столько абилок, что простая последовательность if name == "my_ability" then RunTrigger(my_ability) хуже этого решения
80 т.р. - месячная зарплата мидл программиста. Мидл програмист по определению не тот, кто может проект довести с нуля до конца. Что может сделать 1 человек за месяц - думайте сами.
Жасс код компилируется в инструкции для жасс машины, но уже при запуске карты, разумеется чтобы нельзя было с ним поиграться до этого самого запуска. Этот процесс необратимый. Дерево выражений превращается в линейную последовательность инструкций.
Код на С++ тоже компилируется в инструкции (машинный код) для твоего процессора. Его посмотреть можно, но там нет ни имен переменных, ни control structures, ни "функций" в обычном понимании, чистый assembly. Читать такое тяжеловато.
Хорошие или плохие - пользоваться ими на джассе никто особо не будет, большинство функций бж - однострочные врапперы. Весь их смысл - поддерживать гуи со всяким говном типа lastCreatedUnit етц. Твои старания будут тратой времени, т.к. ничего лучше и менее костыльнее чем all.j ты по факту не сделаешь.
all.j требует обрамления всех глобалок и мест где есть ожидание в ALL_REMOVE = false/true. Т.е. ты не можешь просто вставить её в карту и наслаждаться меньшим количеством утечек. Но по-другому просто не получится на клиентском уровне, лучшее решение - написать тулзу которая парсит жасс и анализирует скоуп переменных в коде, автоматически удаляя те, что не выходят из локальных скоупов. Прямо как делает компилятор для нормальных языков.
» WarCraft 3 / Новые нативные функции в 1.29
» WarCraft 3 / Патч 1.29 вышел на основных серверах
» WarCraft 3 / Патч 1.29 вышел на основных серверах
» WarCraft 3 / Проверка заполненности логического массива
Ред. Doc
» Мир безумного / Слух: Blizzard в конце февраля что то готовят
» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3
Ред. Doc
» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3
Но я не очень разбираюсь.
Ред. Doc
» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3
» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3
Дженерики - фича нужная, но твой пример инвалиден.
Ред. Doc
» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3
То что ты предлагаешь требует поддержки дженерик типов. В реальности сколько тебе бы пришлось написать таких функций, напиши их ты вручную. Три? Каждая по 6 строчек?
» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3
» WarCraft 3 / Вызов триггера через строчную переменную...
Ред. Doc
» WarCraft 3 / Вызов триггера через строчную переменную...
Ред. Doc
» WarCraft 3 / Вызов триггера через строчную переменную...
Создаем массив триггеров trigger_array;
Создаем инт name_array_index;
Создаем функцию
А после этого думаем, реально ли у нас столько абилок, что простая последовательность if name == "my_ability" then RunTrigger(my_ability) хуже этого решения
» Программирование / Аутентификация с нуля. Предотвратить подмену записей.
» WarCraft 3 / Кастом гуи и прочие говно функци UMSWE
» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3
» Game Dev / Многопольз. онлайн сервер. Плачу за разработку.
» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3
Ред. Doc
» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3
» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3
Ред. Doc
» WarCraft 3 / Blizzard готовят Producer Update для Warcraft 3
» WarCraft 3 / Как сделать условие?
» WarCraft 3 / Какие вещи в Warcraft 3 требуют вмешательство хака?
Ред. Doc
» WarCraft 3 / Как заменить BJ-функции?