Их может быть 100500, карту в студию и файлы ошибки. Мемхак может быть причиной фаталов.
Это может быть из-за 100-200 вызовов ExecuteFunc в одном фрейме? У меня создаётся большой отряд из 100-200 юнитов, я юзаю тяжёлые функции мемхака по типу SetUnitDamage, SetUnitAttackRange и т.д. для этого отряда, и у меня обрывается поток на ~100 юнитах, поэтому заменил прямой вызов на ExecuteFunc. Стоит ли выполнять вызовы параллельно через таймер с малой периодичностью?
JackFastGame, а какой не мусорный?) который пускает такие трояны? (с технической точки зрения это троян - он внедряется в память игры)
Мусорный, потому что штатными способами его не отключить. Лично у меня жопа горит с тем, как десятка навязывает пользователю свои ненужные службы и программы.
JackFastGame, просто без синхры ставишь всем героям нужное кол-во опыта, т.к у тебя одна машина и нет живых игроков, ты 1 зритель, остальные все боты и действия синхронизации не требуются для реплея, просто выставление напрямую всем игрокам експы.
Всё работает, спасибо. Только TriggerSleepAction( 2.00 ) и TriggerSyncReady() в реплее обязательно должны выполняться. А вот SyncStoredInteger и прочие не нужны.
Хотя скорее всего без слипа ломается из-за того, что у меня после него идут ещё действия.
Проверять на реплей, мемхак вроде у тебя в карте есть? Ну и делать ветвление, ибо локальные действия происходят в реплее только у хоста.
А что делать в случае успешной проверки на реплей? Просто проигнорить часть кода, где идёт сохранение в кэш? В реплей вообще запоминается инфа о том, какие данные игроками были загружены в кэш?
На момент написания этого коммента онлайн рефа 17.10.2021 - 298 подсчитано руками с сайта wc3maps.com/live, но если ты делаешь карту на русском, ты там не нужен
Онлайн ирины irinabot.ru414 человек - твой выбор
Онлайл иккапа iccup.com9000 но не уверен в правдивости этой цифры 200%
Так на wc3maps онлайн именно в лобби, а на Ирине и те кто в лобби, и те кто в игре. Сколько в Рефорджеде в катках людей навряд ли можно узнать.
Ещё я бы лучше смотрел с этого сайта стату wc3stats.com/gamelist, wc3maps почему-то иногда не все хосты отображает. Один раз сравнивал, на Америке половину хостов не отображал.
Есть два пруда: в одном онлайн низкий, но люди нормальные, в другом онлайн высокий, но куча узбеков)
А как заставить игрока отправить сообщение мемхаком (без использования сторонних dll)? Или как синхронизировать локальные данные, полученные из файла? Через игровой кэш?
Разница настолько мала, что лучше вообще так не делать.
Не убивайте читабельность в угоду мнимой производительности. Оптимизация и архитектура проекта эффективны по Парето, поэтому ищите золотую середину.
С технической точки зрения ничего не скажу, но одним из важных аспектов программирования является соблюдение единого стиля кода и написание легко читаемого кода. Поэтому дам пару советов.
Следует избегать подобных названий:
private struct SpellStruct
Если вы объявляете переменную типа Spell, то и так понятно, что это структура, поэтому суффикс Struct здесь лишний.
Разделяйте логические блоки кода пустой строкой:
private struct SpellStruct
unit Caster
unit Target
real Damage
real Speed
real Angle
method Destroy takes nothing returns nothing
set this.Caster = null
set this.Target = null
call this.destroy()
endmethod
endstruct
В этом примере явно не хватает пустой строки между полем Angle и методом Destroy. Набор полей структуры и тело метода — два логических блока, которые нам гораздо легче отделять друг от друга, если между ними пустая строка.
Здесь проблема с именованием локальных переменных:
local timer Timer = CreateTimer()
local SpellStruct s = SpellStruct.create()
timer объявлен в PascalCase, а SpellStruct в camelCase. Определите для себя единую конвенцию именования переменных. Как правило, локальные переменные в функциях и приватные поля структур именуются в camelCase, а публичные поля структур и функции именуются в стиле PascalCase.
Подобные расхождения в стиле написания кода тоже стоит избегать:
Пробелы между аргументами во всех вызовах должны соблюдаться одинаково. Либо вы не ставите пробелы везде, либо ставите везде. Лучше, конечно, ставить, т.к. это читабельнее. Старайтесь придерживаться одного стиля написания кода, тогда он будет легко читаем, т.к. мозг хорошо распознаёт закономерности.
Также избегайте такого:
globals
private integer SpellID = 'A001'// Код способности
endglobals
Во-первых, комментарии следует оставлять на пустой строке, а не впихивать в конец какой-то инструкции. Во-вторых, комментарии необходимы для пояснения каких-то сложных моментов в коде. Здесь пример плохого комментария: он поясняет очевидное. По названию переменной и так понятно, что это айди способности, поэтому и нужды что-либо комментировать нет. Называйте свои переменные, функции и методы так, чтобы их не приходилось комментировать.
Вот-вот, тоже хотелось бы узнать. Я сейчас использую vJass + cJass (пишу первый раз на них), т.к. после C# хочется писать код без особого синтаксического мусора.
ArhiMEN, а что за код, я чето не понял что это за триггер с переодическим таймером 100 раз в сек, чето делает. Каждый раз создается новая группа, зачем? Обьясни что собрался делать?
Я делал бенчмарк (на попугаях Анрайза) прохода по глобальной группе и локально создаваемой группе, разницы практически нет.
ссылаются на свою, меняй описание в завимисоти от выделенного юнита локальным игроком по таймеру
Я хочу реализовать систему, чтобы в описании предмета показывалось, сколько игрок нанёс этим предметом урона, сколько раз использовал и т.д.
В процессе вспомнил, что Варкрафт не чистит строки, а записывает их в какую-то таблицу со всеми строками, и при создании новой строки проверяет, существует ли такая же в таблице. Если да, то возвращает указатель на неё, если нет, то записывает новую строку в таблицу. Строки в таблице не удаляются до конца игры. Получается, если постоянно динамически менять описание предмета, то игра будет хранить кучу мусорных строк? Допустим у предмета за игру описание сменится 500 раз, и каждый раз строка будет уникальной, описание предмета весит 1 килобайт, значит на каждый такой предмет в процессе игры сгенерится 500 килобайт мусора. Я правильно рассуждаю? Есть лечение?
Привет. Интересно было почитать. А что можно сказать насчет юнитов? Решил провести свой эксперимент, но с юнитами.
Начал с гуишных функций и глобалок, закончил этим. Все возможные проделанные мною варианты утекают, включая этот
Знаю, что некропостинг, но тут локация p не удаляется.
» RenderEdge / [RenderEdge] Графическая модификация для WarCraft III
Понимаю, что Варкрафт однопоточный, но всё же.
Ред. JackFastGame
» WarCraft 3 / unknown software exception
» WarCraft 3 / Крашит варкарфт
» IrInA Host Bot / Почему при запуске файла irina_connector_v5 удаляеться
» WarCraft 3 / Разнообразие save/load кода
Ред. JackFastGame
» WarCraft 3 / Рассинхронизация в реплее из-за использования кэша
» IrInA Host Bot / Почему при запуске файла irina_connector_v5 удаляеться
» WarCraft 3 / Неизвестная причина критов.
» WarCraft 3 / Рассинхронизация в реплее из-за использования кэша
Ред. JackFastGame
» WarCraft 3 / Какая версия варкрафта сейчас актуальна?
Ещё я бы лучше смотрел с этого сайта стату wc3stats.com/gamelist, wc3maps почему-то иногда не все хосты отображает. Один раз сравнивал, на Америке половину хостов не отображал.
» WarCraft 3 / Point Tag v0.3.6
Ред. JackFastGame
» WarCraft 3 / Карта не запускается: распространённые причины
Удивительно, но на Ирине много людей, играющих с лаунчера Ракапа.
» WarCraft 3 / Как сделать подгрузку текстовой команды из папки с вариком
» WarCraft 3 / Что меньше влияет на память?
Не убивайте читабельность в угоду мнимой производительности. Оптимизация и архитектура проекта эффективны по Парето, поэтому ищите золотую середину.
» WarCraft 3 / Как отловить то что юнит находится в движение?
Так реализовано в Desert Fury)
» WarCraft 3 / Просьба проверить мой код
Ред. JackFastGame
» WarCraft 3 / Как через условие подключить звуковой патч mix?
» WarCraft 3 / Как через условие подключить звуковой патч mix?
» WarCraft 3 / Хэш-таблицы в vJass
» WarCraft 3 / кое что о джассе
» WarCraft 3 / Утечки в коде
» WarCraft 3 / 20. Оптимизация
» WarCraft 3 / Вопросы по мемхаку
В процессе вспомнил, что Варкрафт не чистит строки, а записывает их в какую-то таблицу со всеми строками, и при создании новой строки проверяет, существует ли такая же в таблице. Если да, то возвращает указатель на неё, если нет, то записывает новую строку в таблицу. Строки в таблице не удаляются до конца игры. Получается, если постоянно динамически менять описание предмета, то игра будет хранить кучу мусорных строк? Допустим у предмета за игру описание сменится 500 раз, и каждый раз строка будет уникальной, описание предмета весит 1 килобайт, значит на каждый такой предмет в процессе игры сгенерится 500 килобайт мусора. Я правильно рассуждаю? Есть лечение?
» WarCraft 3 / Утекают ли не обнулённые переменные типа handle
» WarCraft 3 / Утекают ли не обнулённые переменные типа handle