Тебя это может сильно удивить, но при определённом подходе количество экземпляров одной структуры может оказаться сильно больше 8190 (что и так само по себе гигантское количество).
В таком случае название "БД" неуместно, в рантайме из базы данных значения только выгружаются.
Делай структурами и храни данные в них, это будет и удобнее, и проще.
Кроме того, при заполнении можно создавать каждому магазину/инвентарю свой пул всех доступных предметов и переносить предметы из него, а не копировать.
Что мешает использовать сами эти числа в качестве childKey и просто сохранять туда boolean true? Тогда можно добавлять сколько угодно раз, по сути будет перезаписыватся единственная ячейка.
Как и указал нвц
Не портите мне настроение своим неумелым расходованием времени процессора с помощью создания таймеров.
Пустой таймер расходует ничего. Основная проблема с вычислительной мощностью всегда состоит в неоптимальном алгоритме, а как он запускается - по таймеру или триггером - вторично.
avuremybe, хеш-таблица позволяет сохранять данные, как эти данные в таблице организованы определяет только сам разработчик.
Кроме того, функция StringHash() весьма медленная, лучше использовать GetHandleId() от контекстной сущности.
Касательно вопроса. Как вариант - можно завести массив, который будет хранить каждый childKey и бегать с проверкой по нему.
Делается таймер с относительно низким периодом, к каждой молнии лепится float, и каждый тик таймер проходится по списку структур и уменьшает все эти float на свой период. Если после уменьшения float <= 0, то структура вместе с молнией исключается из списка обходимых таймером и уничтожается.
Sergey105, советую почитать какие-нибудь общепринятые гайдлайны по оформлению кода. Так как cJass эмулирует C++, сойдёт общий набор рекомендаций по нему от Google.
Sergey105, касательно кода замечу, что перезапускать таймер при каждом добавлении структуры нецелесообразно, лучше запустить его единожды и просто бегать по статическому массиву структур.
pro100master, своё с нуля писать это гиблое дело, потому что ты будешь вместо разработки игры разрабатывать инструменты для разработки игры. FrigatPlay:
что прикажеш делать если человек у нас простой смертный и не знает JASS и другие языки програмирования.
Maniac_91, нет, не самый простой, для реализации телепорта туда-обратно (как на некоторых мили-картах) достаточно указать две области, в которых будут стоять телепорты, поставить здания телепортов на эти области и указать эти области в настройках телепортов, открываемых при двойном клике на них.
» WarCraft 3 / Поиск элемента БД
» WarCraft 3 / Поиск элемента БД
» WarCraft 3 / Поиск элемента БД
» WarCraft 3 / Поиск элемента БД
» WarCraft 3 / Поиск элемента БД
» WarCraft 3 / Поиск элемента БД
Делай структурами и храни данные в них, это будет и удобнее, и проще.
Кроме того, при заполнении можно создавать каждому магазину/инвентарю свой пул всех доступных предметов и переносить предметы из него, а не копировать.
» WarCraft 3 / Поиск элемента БД
Как и указал нвц
» WarCraft 3 / Поиск элемента БД
» WarCraft 3 / Система общего здоровья.
» WarCraft 3 / Поиск элемента БД
Кроме того, функция StringHash() весьма медленная, лучше использовать GetHandleId() от контекстной сущности.
Ред. Clamp
» WarCraft 3 / Один таймер
» WarCraft 3 / Иногда хеш таблица запаздывает???
» Game Dev / Какой движок выбрать?
FrigatPlay:
» Проект Z / Зона поражения. Режим выживания - видео.
» Проект Z / Зона поражения. Режим выживания - видео.
В видео видны лаги, это игра или само видео?
» WarCraft 3 / Хеш таблица, childKey?
.z можно выпилить, само собой.
» Мир безумного / Обноление 0.8 | Crossout
Инсайдерская информация.
» WarCraft 3 / Двухсторонний телепорт
» Мир безумного / Обноление 0.8 | Crossout
» WarCraft 3 / Конкурс ландшафтеров Средиземья
» WarCraft 3 / Искусственный интеллект
» Game Dev / Выбор движка
» Game Dev / Выбор движка
» WarCraft 3 / Искусственный интеллект
Вопрос про самообучение не заметил, да. Тем не менее, оно реализуемо без прелоада/нейросетей, но будет работать только в рамках сессии.
» WarCraft 3 / Искусственный интеллект