Code:
function Hook_ZvsPlaceMapObject (Hook: PatchApi.THiHook; x, y, Level, ObjType, ObjSubtype, ObjType2, ObjSubtype2, Terrain: integer): integer; stdcall;
begin
if Heroes.IsThisPcTurn() then begin
Erm.FireRemoteErmEvent(Erm.TRIGGER_ONREMOTEEVENT, [Erm.REMOTE_EVENT_PLACE_OBJECT, x, y, Level, ObjType, ObjSubtype, ObjType2, ObjSubtype2, Terrain]);
end;
result := PatchApi.Call(PatchApi.CDECL_, Hook.GetOriginalFunc(), [x, y, Level, ObjType, ObjSubtype, ObjType2, ObjSubtype2, Terrain]);
end; // .function Hook_ZvsPlaceMapObject
procedure OnRemoteMapObjectPlace (Event: GameExt.PEvent); stdcall;
begin
// Switch event
case Erm.x[1] of
Erm.REMOTE_EVENT_PLACE_OBJECT: begin
Erm.ZvsPlaceMapObject(Erm.x[2], Erm.x[3], Erm.x[4], Erm.x[5], Erm.x[6], Erm.x[7], Erm.x[8], Erm.x[9]);
end;
end; // .switch Network event
end; // .procedure OnRemoteMapObjectPlace
Пока что работает. При создании объекта на одной стороне, он создаётся и на другой. Да, не настроенный. Если скрипт сканирует объекты после боя и полагается на точность настройки, то это плохо кончится для объектов, созданных на том же ходу.
https://yadi.sk/i/5ArdCkAA3PdccJ
Заменил шахты на склепы на первой день, где оба игрока видят друг друга в притык. Посетил склеп, сразился — всё без вылета. Всё путём )))
Фактически удалил настройку SavedGameExtraBlockSize. Теперь в одиночной или хотсит игре размер сохранёнки обычный, а вот в сетевой игре резко растёт на 16 МБ. Поскольку лишнее место — нули, то DIFF-файл Славы получается маленький, поэтому на трафик не влияет. Придётся разве что потерпеть 2-3 временных файла по 20+ МБ в папке Data. Но зато — никаких вылетов, никаких лишних настроек, никаких синхронизаций настроек.
Решительно настроен поиграть с кем-нибудь пару недель в сетевую игру сугубо для тестов. Эм, сборка у меня грязноватая, но ВоГ обычный, файлы Yona я пришлю. Эру обновим на двух сторонах, список модов сделаем одинаковым.