Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сетевые скрипты
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
ERMMASTER
Писал тут разные скрипты понимаешь, все нормально работало, но тестилось на хотсите. Решил испытать на мультиплэйере и тут низверглось небо и посыпало багами)

Кода оч. много поэтому у меня вопрос, достаточно ли поменять триггеры !?BA0 !?BA1 и им подобные на !?BA51 !?BA52/ Кто сталкивался с сетевыми проблемами просьба отписаться с какими и как их править буду оч. благодарен.
DracoLich
хот-сит == одиночная игре
Цитата
достаточно ли поменять триггеры !?BA0 !?BA1 и им подобные на !?BA51 !?BA52
в теории да. на практике, все боевые скрипты требует тонны синхронизации через IP.
ERMMASTER
Очень жаль... Тонны работы перерабатывать тонной синхронизации...
Что-ж буду пробовать, если нет , забью на multiplayer

Добавлено ([mergetime]1276785157[/mergetime]):
И еще, достаточно ли синхронизировать только битвы хуман vs хуман?
Berserker
ERMMASTER, всё элементарно. Просто все скрипты для боя помещаешь в функции. И на источники события вроде мыши или кнопки вызываешь функцию обработки события два раза:
!!FU...: P; // локально
!!FU...: D; // удалённо.
Всё.
DracoLich
[
я думал это что-то большее.
MasterOfPuppets
Цитата(EtherniDee @ 17 Jun 2010, 17:52)
всё элементарно.

Угу. Элементарно невозможно передать по сетке удаление объекта из-под героя при посещении. Как ни мучай, исход один - сброс игроков с сервака.
Berserker
А зачем? Объекты синхронизируются при передаче хода автоматически.
MasterOfPuppets
Если бы не было сброса СРАЗУ при удалении объекта, я бы и вовсе не мучал FU:D/IP.
Цитата(EtherniDee @ 22 Jul 2010, 20:05)
А зачем? Объекты синхронизируются при передаче хода автоматически.

Это не тот случай. Просто удалить объект и удалить при посещении - разные вещи. Последнее вечно вызывает выкидыш.
В общем, это нужно протестировать на реальной TCP/IP. А игра между двумя копиями на одном компе - недо-сеть.
sergroj
Может, на том компе дублируется удаление, но удаляется герой? Для Эры могу сделать код для проверки, если вспомню, как там вызываются функции по адресу.

Вот у меня, кстати, 2 копии на 1 компе вообще между собой не играют. Даже в СоДе все заканчивается на ходе последнего компа.

EtherniDee, если вызываются некоторые команды типа каста магии, такое не сработает?
MasterOfPuppets
Цитата(sergroj @ 30 Jul 2010, 01:42)
Для Эры могу сделать код для проверки, если вспомню, как там вызываются функции по адресу.

Если не затруднит - то, да, пожалуйста. Собственно, это единственный момент, из-за которого я впал в тоску и забил на сеть.
Цитата(sergroj @ 30 Jul 2010, 01:42)
Вот у меня, кстати, 2 копии на 1 компе вообще между собой не играют. Даже в СоДе все заканчивается на ходе последнего компа.

Так это с любой версией так. А тестеры "сети без сети" используют лишь первый игровой день. sorry.gif
sergroj
Я был прав.
Попробуй:
Код
при посещении:

!!HE-1:N?v1;
!!IP:D-1; [send to all players]
!!FU111:Dv1/0; [hide hero]
!!UN:Ov998/v999/v1000/1; [удаление объекта]
!!FU111:Dv1/1; [show hero]

!?FU111;
!!UN:C6919480/4/?y1;
!!VRy1:+136736;
!!VRy2&x1=0:S5077328;
!!VRy2&x1<>0:S5077056;
!!SN:Ey2/2/y1;
MasterOfPuppets
По-моему, тут что-то надо поправить... Например, вместо x1 в проверке должна быть вроде x2.
В ecx ведь перед вызовом кладётся адрес структуры героя? А что если так?

!?FU111;
!!UN:C6933756/4/?y5;
!!VRy1:S$color$*360;
!!VRy5:-y1;
!!VRy1:Sx1*1170+y5+2896;
!!VRy2&x2=0:S5077328;
!!VRy2&x2<>0:S5077056;
!!SN:Ey2/2/y1;

Мне кажется, вернее.
sergroj
Нет, ты пытаешься искать героя в структуре игрока.
Код
!?FU111;
!!UN:C6919480/4/?y1;
!!VRx1:*1170 +y1 +136736;
!!VRy1&x2=0:S5077328;
!!VRy1&x2<>0:S5077056;
!!SN:Ey1/2/x1;


Добавлено ([mergetime]1280669621[/mergetime]):
!!IP:D-1; не обязателен
MasterOfPuppets
Да нет, я же использую смещение не от начала структуры текущего игрока, а от начала структур всех игроков. Оно постоянно и никогда не подводит.

!!UN:C6933756/4/?y5; //получили указатель на структуру текущего игрока
!!VRy1:S$color$*360; //умножили текущего игрока на размер структуры
!!VRy5:-y1; //отняли и переместились в начало структур игроков
!!VRy1:Sx1*1170+y5+2896; //припёрлись к структуре данного героя

Ладно. у меня тоже правильно, но у тебя проще. smile.gif
sergroj
Ха, точно. Сработало?
MasterOfPuppets
Да, всё отлично.
Bes
Подскажите, как вести проверку во время боя при сетевом режиме, чья сторона щас ходит?
Необходимо блокировать возможность ждущему игроку пользоваться втроенными фичами по ПКМ.

Флаг 999 указывает лиш на то,на чьём ходе была инициирована битва..
А вот как уже во время вести контроль, я не знаю sad.gif
Ведь BG:Q для каждой стороны даёт то,что "ОН" текущий sorry.gif
Aleee
Можно попробовать BG:N. Если возвращаемое значение больше 20, то ходит существо второго игрока.
Bes
Ой, я извиняюсь, неправильно написал вопрос sorry.gif

Как узнать какая сторона щас ожидает, пока ходит другая сторона.. Т.е. как мне контролировать нажатие мышью неактивного игрока в битве???
Ведь BG:Q для всех сторон показывает только активную сторону sad.gif
Aleee
Если клик совершается не по монстру, то никаких идей.
tolich
Чисто мысли, не проверял.
1) Текущая сторона -> левая (атакующая) или правая (защищающаяся) 0/1.
2a) Активна атакующая сторона -> атакующий герой.
2b) Активен защищающийся герой -> герой-хозяин.
3) Найденный Герой -> Игрок-владелец героя.
4) Если цвет текущего игрока совпадает с цветом игрока-владельца героя, значит именно он сейчас ходит.
Aleee
Скрипт должен начинаться с !?CM4. В этом и вопрос: как в таком случае получить любую информацию об игроке, который совершил нажатие? В твоем списке это "Найденный герой". Как его найти? Попробуешь взять номер через !!HE-1:... - всегда вернет атаковавшего (если я не ошибаюсь).
tolich
!!OW:G ??
feanor
В начале хода существа (!?77007 в эре) на обеих сторонах устанавливать какую-нить переменную в номер стороны. В !?СM4 ее проверять.
Aleee
!!OW:G... гениально. Первый раз о таком слышу, кстати.
Bes
tolich, спасибо огромное, тоже незнал о такой команде..
Проверил только что - работает так, как и требовалось smile.gif
tolich
smile.gif Я тоже не знал. blush.gif

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.