IceFog, В общем надо дорабатывать проект. Остановился пока на файле hook.hpp там большая ассемблерная вставка. Там нужен результат. И весь проект надо проверять. Если добьёшь выкладывай новый. Я пока не буду его дорабатывать.
Такая же ошибка на Фрозен Троне. Если ты файл редактора не изменяешь в архиве карты. А внедряешь в него только новый jass код. А потом сразу лезешь запускать карту в игре, после сохранения архива. То вар может зависнуть, что даже диспетчер задач не поможет. Лучше скопируй джасс куски кода в блокнот. И открой редактор карт. Открой карту. Вставь из блокнота куски кода. Или тебе придётся удалять файл редактора из архива. Как это делают на протекте карт. Но потом карту не открыть пока не найдёшь этот файл и не вставишь его обратно в архив карты. Можно из других карт его брать. Пробуй.)
А бывает, что и сам редактор вылетает при сохранении, но оставляет папку темп в виде архива. Если открыть фар менеджер. То можно зайти в папку и увидеть твои файлы проекта. Это связано вроде бы с ошибками в jass коде. Или в самом редакторе близардовском.
Какой вопрос и всё деньги платишь. Неужели мемхак тебе прибыль сделает. Посмотри ресурс Пятиминутка в вампов там есть способ через мемхак загрузить библиотеку. Модельки должны быть загружены или сразу в карте или через библиотеку для открытия mpq архивов. Но этот мемхак это доступ к твоему компьютеру. Так что кто этим будет пользоваться?
Создай массив из координат, где должны стоять юниты. А в другом массиве умер юнит или нет. И при смерти спавни снова. С помощью функции создать юнита. И ещё при смерти юнита создать триггер и вызывать функцию РемовеЮнит(ТриггерЮнит()). А то вроде бы память засоряется, как с поднятием монеток в некоторых картах, но может я ошибаюсь.
ScorpioT1000, мне таймер останавливать не надо. Он у меня каждую 0.1 секунду запускается. Если процесс не выполнен он проверит данные в хеш таблице и пойдёт дальше обрабатываться в зависимости от результатов.
Каждую 0.1 секунду проверяй стремительность на юните.)
Запусти таймер игрового времени. При уходе в стремительность засеки время. Если юнит атакован и получает дамаг я не знаю, что там по бафам. Если юнит каким то образом вышел из стремительность можно проверить по таймеру. И если время ухода в стремительность плюс время до выхода из стремительности меньше текущего времени, то кради золото.
Выбери в группу всех юнитов около точки в радиусе, пока не за компом функцию не помню. Помню что рейдж там есть. Перебери всех инитов в группе с первого по последний по своим критериям например радиус наименьший или мало хп и атакуй выбранного одного юнита через команду атака. Второй триггер напиши по смерти вражеского юнита повторить первый триггер или при определённых условиях, например, вражеский юнит входит в регион или подходит к твоему юниту в радиусе. И получится в итоге милишный бот.) Потом будешь узнавать как пройти к юниту и закричишь караул?
Моя задача. Пока выполняется триггер по времени. В нем обрабатывать другой поток для анализа проходимости юнитов. Я так понимаю потребуется хеш-таблица глобальная куда хендл от таймера помещю. Забью параметры. А в потоке возьму текущий таймер и заберу параметры.
Создаёшь глобалку SyncCache тип буфер игры.
Инициализируешь кэш
set udg_SyncCache = InitGameCacheBJ("Sync")
Пишешь первый триггер на отправку числа в кэш и синхронизацию значения в кэше. Который реагирует на событие выбор пехотинца в центре карты.
local string vKeyLocalPlayer
set vKeyLocalPlayer = I2S(GetPlayerId(GetLocalPlayer()))
call StoreInteger(udg_SyncCache ,"Select",vKeyLocalPlayer,1)
call SyncStoredInteger(udg_SyncCache ,"Select",vKeyLocalPlayer)
call DisplayTextToForce( GetPlayersAll(), vKeyLocalPlayer)
Пишешь второй триггер на перебор всех игроков в кэше и если значение получено по выводишь сообщение. Триггер реагирует на событие таймер каждую секунду.
local integer vvi = 0
local integer MAX_PLAYERS = 2
local string vKeyLocalPlayer
loop
exitwhen vvi>=MAX_PLAYERS
set vKeyLocalPlayer = I2S(vvi)
if (GetStoredInteger(udg_SyncCache,"Select",vKeyLocalPlayer ) == 1) then
call DisplayTextToForce( GetPlayersAll(), "NPlayer = " + vKeyLocalPlayer )
call StoreInteger(udg_SyncCache ,"Select",vKeyLocalPlayer,0)
endif
set vvi = vvi + 1
endloop
Первое сообщение появляется сразу по выбору пехотинца. Второе через секунду как придёт синхронизация данных в кэше.
Прикрепляю тестовую карту.
Наверное только Шелдан сможет найти ошибки по рассинхронизации в этой карте. Самый умный парень на земле, как он говорит.) Обновил ещё раз проект. Одиночка работает нормально. Исправил зависание при убийстве рабочих. Убрал спящий режим в начале игры. Начало хорошее. Но потом, где-то в коде есть нюанс, который мне мешает синхронизировать сетевую игру. Блинки исправил на таймер. Был триггер. Теперь вроде меньше рассинхронов стало. Из-за этих блинков мейн хуманов. Выкладываю новый архив с теме же программами для тестирования. Но плюс одна для сверки логов для игроков. Тестил через программу 2 окна. Добавил в папку с картой JassApi.dll файл для тестирования через два окна. Потому что не всегда подхватывает эту dll'ку другая dll'кa Vampirism_fire.dll, когда тестируешь через два окна. И приходится из корня Warcraft'a доставать эту dll.
Вот новый архив:
Модернизировал проект. Одиночка работает нормально. Прошу поискать ошибку в проекте по рассинхронизации в сетевой игре. А, то двигаться дальше пока не хочется пока не исправлю эту ошибку. Выкладываю проект для создания dll'ки Vampirism_fire.dll, программу 2 окна для Warcraft'a, что бы потестить сетевую игру, программу winmpq для внедрения dll'ки в карту, карту и dll'ки для Visual Studio 2010, которые нужно разместить в корне папки с Warcraft'ом. Версия Warcraft'a таже (1.26a).
Архив:
» WarCraft 3 / Строительство зданий в редакторе
» WarCraft 3 / constant real wv=500.*.1
» WarCraft 3 / Открытая виртуальная машина
» WarCraft 3 / Открытая виртуальная машина
» WarCraft 3 / Вылет редактора при сохранении
» WarCraft 3 / Вылет редактора при сохранении
» WarCraft 3 / Ищу программиста кто шарит за оффсеты и C
» WarCraft 3 / Отслеживание юнитов
» WarCraft 3 / Городские жители
Ред. Vampir_kolik
» WarCraft 3 / бесконечная молния
» WarCraft 3 / ExecuteFunc и параметры
» WarCraft 3 / Как отследить удар из невидимости?
» WarCraft 3 / "Пустая" карта, созданная в редакторе
» WarCraft 3 / Название команды
» WarCraft 3 / ExecuteFunc и параметры
» WarCraft 3 / Как отследить какой игрок нажал кнопку?
Инициализируешь кэш
Прикрепляю тестовую карту.
» WarCraft 3 / ExecuteFunc и параметры
» Администрация XGM / Контекстное меню в мобилках
» Unryze Jass API / UjAPI - AngelScript
Ред. Vampir_kolik
» Unryze Jass API / UjAPI - AngelScript
» WarCraft 3 / Открытая виртуальная машина
» WarCraft 3 / Пятиминутка в вампов
Вот новый архив:
» WarCraft 3 / Пятиминутка в вампов
Архив:
» WarCraft 3 / Генератор карт VF
» WarCraft 3 / Генератор карт VF