Current time: 25.11.2024, 13:25 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERA II
» WoG Era 2: Русская и Английская версии
Author Message
igrik Offline

Posts: 2819
Post: #2506

Quote:Так мы просто не включим моды по умолчанию. А указанные плагины ставит себе продвинутый разработчик или модостроитель, каковых меньшинство. Скачать же 100 МБ для сегодня нигде не проблема. Верно ведь? )
   Только настроенные в менеджере модов с правилами совместимости и отключённые по умолчанию.
100 МБ не проблема, это верно. Если конечно их совместимость настроить понимающему в этом деле человеку - то да, это дело.

Quote:Я пока переместил око Саурона на сетевую игру. Две фишки нужно исправить/обработать и вроде бы должна быть базовая сетевая стабильность, как была в ТЕ.
Очень важный шаг. Давно пора бы.

Quote:!!FU(НайдиМнеПустойСлотВОтрядеПожалуйста):Py1; ))
Я уже успел оценить когда читал про новый хукер. Это нечто!! 132


game bug fixes extended.dll || My Plugins || My GitHub
(This post was last modified: 12.11.2017 19:10 by igrik.)
12.11.2017 19:10
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2507

Quote:Я уже успел оценить когда читал про новый хукер. Это нечто!!
Rolleyes

Циклы на SN:G тоже симпатичнее:
12.11.2017 19:30
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #2508

(12.11.2017 19:30)Berserker Wrote:  Циклы на SN:G тоже симпатичнее
Афигеть!! Так они не просто симпатичнее, они намного удобнее. Теперь не надо париться с номером строки! А то когда циклы находятся в другом цикле нередко вешаешь комп при написании скрипта. Даже в таком простом примере:

Это я когда то пробовал решать рассинхронизацию при старте сетевой игры, чтобы замена объектов происходила в триггере PI (т.е. до передачи данных от сервера клиенту), а не в таймере при уже созданной, переданой и загруженой на удаленном ПК карте.


game bug fixes extended.dll || My Plugins || My GitHub
(This post was last modified: 12.11.2017 19:47 by igrik.)
12.11.2017 19:41
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2509

Да, для этого именованные метки и служат Ab Вечные циклы и некорректная работа при смещение строк — классика SN:G, который был JUMP уровня OllyDebugger.

Мы о той же задаче думаем. Только удаление объектов синхронизируется, а вот создание — нет. Подскажи, тебе удалось решить задачу с первым ходом в !?PI?
12.11.2017 20:05
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #2510

(12.11.2017 20:05)Berserker Wrote:  Мы о той же задаче думаем. Только удаление объектов синхронизируется, а вот создание — нет. Подскажи, тебе удалось решить задачу с первым ходом в !?PI?
Что конкретнее ты имеешь ввиду?
Если коротко, то да, у меня объекты нормально удалялись, создавались и посещались корректно обоими игроками. И в первый день включительно.

Вот тут более подробно я рассказывал (link)


game bug fixes extended.dll || My Plugins || My GitHub
(This post was last modified: 12.11.2017 20:32 by igrik.)
12.11.2017 20:29
Visit this user's website Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3881
Post: #2511

(12.11.2017 18:51)Berserker Wrote:  !!FU(НайдиМнеПустойСлотВОтрядеПожалуйста):Py1; ))

Просто уточню, будет ли работать:

!!DO(НайдиМнеПустойСлотВОтрядеПожалуйста)/i/j/k:Py1; ))

и

!!VRy1:S14;
!!VRz1:S^ФункцияНомер%Y1^;
!!FU(z1):P;

?


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
12.11.2017 21:11
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2512

Quote:!!DO(НайдиМнеПустойСлотВОтрядеПожалуйста)/i/j/k:Py1; ))

Будет.
Quote:!!VRz1:S^ФункцияНомер%Y1^;
!!FU(z1):P;
нет.

!!VRy1:S(имя);
!!FUy1:P;
да

Работает это так: как только встретили не в строке, но в ЕРМ коде (...) выделить под это имя номер функции или взять уже выделенный ранее, после чего вставить.
!!VRy1:S(имя);
!!FU(имя):P;
...
позже:
!!SN:W^имя^/?y1; // сюрприз, но каждая такая функция создаёт SN:W переменную

igrik, «остается еще решить рассинхрон в битве.»
Отыграваю битвы спокойно сейчас. В чём рассинхрон?
12.11.2017 22:05
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2513

Алгор, пишешь микро-кусок кода. F11 в папке Debug\Era\Scripts эскпортирует скрипты. Там номера функций и меток уже заменены на числа.
Метки локальные в рамках триггера. Можно сослаться на метку до её описания, если не изменяет мне память.

!!SN&y1=100500:G[дальше];
...
[:дальше]
...
12.11.2017 22:19
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #2514

(12.11.2017 22:05)Berserker Wrote:  igrik, «остается еще решить рассинхрон в битве.»
Отыграваю битвы спокойно сейчас. В чём рассинхрон?
Самый простой способ - наложи щит на стек через BM:М и все увидишь))
Но я получал рассинхроны с идентичными копиями игры вообще без скриптов (т.е. все скрипты были удалены из папки data/s)


game bug fixes extended.dll || My Plugins || My GitHub
12.11.2017 22:51
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2515

Рассинхронизация будет, если скрипт реагирует на событие интерфейса и не вызывает команду удалённого события, которая бы повторила те же действия BM:M, например. В Yona же нет такой проблемы, а там при использовании способности «Меткий выстрел» на удалённом компе вызывается триггер 89999, который там же обрабатывается.
При !?BG !!BM:M рассинхронизации не будет, поскольку событие произойдёт на двух концах. И так во всех играх.

А в !?PI не пробовал просто обнулять громкость звука, а не патчить функцию?
0x6987B4 хранится громкость звука, не музыки
12.11.2017 23:39
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2516

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 я пришлю. Эру обновим на двух сторонах, список модов сделаем одинаковым.
13.11.2017 00:22
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2517

Update. Словил вылет на удалённой стороне при передаче хода, модуль Stores. Вникаю.
13.11.2017 00:29
Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #2518

Я бы попробовал покатать. Только время нужно выбрать для этого.


game bug fixes extended.dll || My Plugins || My GitHub
13.11.2017 13:46
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2519

Есть определённые успехи, но для них пришлось полностью выпилить создание diff-файлов сохранений и пересылать полностью файлы сейвов в сжатом виде. Сразу же исключается тьма вылетов. Не тестировал ещё трёх игроков, но попробую. И карту побольше. Код синхронизации создания объектов работает. В теории это может замедлить процесс вогификации очень сильно.
13.11.2017 19:04
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #2520

XL-карта отлично зашла, объекты заменились быстро. Правда, это даже не локальная сеть, а один компьютер, но всё же.
13.11.2017 22:36
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group