06.02.2016, 03:48
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
06.02.2016, 13:01
igrik, триггер (и пост-триггер) посещения объекта таким образом срабатывают?
16.02.2016, 17:57
(06.02.2016 13:01)Algor Wrote: [ -> ]igrik, триггер (и пост-триггер) посещения объекта таким образом срабатывают?Да: и триггер и пост-триггер, и с HD тоже работает.
17.04.2016, 17:23
Может у кого и структура def в памяти случайно есть?
17.04.2016, 21:27
Из HD (кстати, по какой причине те сорцы были выпилены?)
Code:
NOALIGN struct _BinTreeItem_ : public _Struct_ // size = 28
{
_ptr_* v_table; // + 0
_char_ name[12]; // + 4
_dword_ name_end; // + 16
_dword_ type; // + 20
_int_ ref_count; // + 24
void DerefOrDestruct() { CALL_1(void, __thiscall, this->v_table[1], this); }
};
NOALIGN struct _Def_ : public _BinTreeItem_
{
_DefGroup_** groups; // + 28
_Palette16_* palette16;
_Palette24_* palette24;
_dword_ groups_count;
_ptr_ active_groups;
_dword_ width;
_dword_ height;
};
NOALIGN struct _DefGroup_
{
_dword_ frames_count;
_dword_ frames_size;
_DefFrame_** frames;
};
NOALIGN struct _DefFrame_ : public _BinTreeItem_
{
_dword_ frm_size; // + 28
_dword_ buf_size;
_dword_ compression_type;
_dword_ def_width;
_dword_ def_height;
_dword_ frame_width;
_dword_ frame_height;
_dword_ frame_left;
_dword_ frame_top;
_dword_ unknown_40;
_ptr_ buffer;
};
18.04.2016, 13:59
Благодарю. Я и не знал, что сорцы HD выкладывались в открытый доступ.
17.10.2016, 11:35
17.10.2016, 14:52
Здоровская примочка! Жаль, что вылетает на третьем.
Соглашусь, ЕРМ неудобен для такого кода.
Соглашусь, ЕРМ неудобен для такого кода.
21.03.2017, 17:45
Накопал я довольно таки интересную вещь в сетевом режиме (LAN). Итак, при генерации карты в триггере !?PI, пользуясь функцией удаления объекта (при замене оных) мы получаем гарантированный вылет. Это происходит вследствие того, что в геройской функции удаления объектов есть функция "звукового сопровождения". Если ее занопить на момент генерации карты, то вылета игры не будет. А т.к. на этот момент передача сетевых данных еще не происходит, то мы получаем рабочий код замены объектов, не требующий использования таймеров и других плюх. Плюс при показе карты приключений как на стороне сервера, так и на стороне клиента мы уже имеем замененные объекты. Т.е. 1 часть рассинхрона мы вылечили (остается еще решить рассинхрон в битве. Тут у меня уже тоже есть кое-какие наблюдения и как это лечить).
И ещё, я не использовал функцию UN:U [сосчитать все объекты на карте], потому что при передаче хода от клиента серверу происходит непонятный вылет, связанный с библиотекой "kernel32.dll" и не связанный с этим патчем.
Код выглядит так (на примере замены двусторонних монолитов на мельницы) (Click to View)
(скрин) (Click to View)

25.03.2017, 17:25
хм, очень интересно.
Т.е. по сути можно уже щас взять оф.скрипты из WoG и "вылечить" их, обозвав это тестингом на стабильность и выложить для массового тестинга людям?
P.S.
вдруг там будут разные "грабли"?
Т.е. по сути можно уже щас взять оф.скрипты из WoG и "вылечить" их, обозвав это тестингом на стабильность и выложить для массового тестинга людям?
P.S.
(21.03.2017 17:45)igrik Wrote: [ -> ]И ещё, я не использовал функцию UN:U [сосчитать все объекты на карте], потому что при передаче хода от клиента серверу происходит непонятный вылет, связанный с библиотекой "kernel32.dll" и не связанный с этим патчем.а ты не проверял этот момент на разных ОС (Xp, win7+)
вдруг там будут разные "грабли"?
26.03.2017, 14:03
(25.03.2017 17:25)Bes Wrote: [ -> ]хм, очень интересно.Проверял на XP и на Win7_x64.
Т.е. по сути можно уже щас взять оф.скрипты из WoG и "вылечить" их, обозвав это тестингом на стабильность и выложить для массового тестинга людям?
а ты не проверял этот момент на разных ОС (Xp, win7+)
вдруг там будут разные "грабли"?
Да, можно. И я бы даже сказал - что нужно. Но у меня совершенно нет желания перелопачивать тонну оф.скриптов. Вообще.
26.03.2017, 16:51
igrik, могу потихоньку начать... по порядку.
я правильно понял, что эту махинацию надо делать каждый раз при замене объкта на карте в скрипте (или удалении)?
буду не спеша, чтобы лишних багов не натворить по невнимательности.
в отдельной теме выкладывать До и ПОСЛЕ файл с описанием что заменял.
дабы была и сторонняя модерация подмены кода.
я правильно понял, что эту махинацию надо делать каждый раз при замене объкта на карте в скрипте (или удалении)?
буду не спеша, чтобы лишних багов не натворить по невнимательности.
в отдельной теме выкладывать До и ПОСЛЕ файл с описанием что заменял.
дабы была и сторонняя модерация подмены кода.
27.03.2017, 13:03
(26.03.2017 16:51)Bes Wrote: [ -> ]igrik, могу потихоньку начать... по порядку.Не совсем. Этот код расчитан только на момент действия триггера !?PI. Вся суть заключается в том, что (для LAN):
я правильно понял, что эту махинацию надо делать каждый раз при замене объкта на карте в скрипте (или удалении)?
1. Хост нажимает кнопку "Начать"
2. Происходит генерация (для случайных) а потом загрузка карты.
2а. Тут вызывается триггер !?PI и в данном случае наша подмена объектов
3. Происходит передача сетевых данных клиенту, в том числе и карты (в нашем случае уже с измененными объектами).
В итоге: у обоих игроков при первом показе карты приключений все объекты идентичны.
Данный скрипт актуален для всех скриптов, которые заменяют объекты только в первый день. Например: замены картографов, улиев, и весь комплекс опций от "Замена объектов во время WoG'ификации.
На счет замены в другие игровые дни не скажу. Да и сейчас для этого нет достаточного запаса времени.
(26.03.2017 16:51)Bes Wrote: [ -> ]буду не спеша, чтобы лишних багов не натворить по невнимательности.Было бы конечно отлично, но спрошу ещё раз: стоит ли игра свечь?
в отдельной теме выкладывать До и ПОСЛЕ файл с описанием что заменял.
дабы была и сторонняя модерация подмены кода.
27.03.2017, 13:16
igrik, я на больничный пошёл... могу сидеть смотреть сериалы, порно кино, или же таки открыть скрипты и прогнать всю эту тему по мере возможного.
вроде бы замена wog'ификацией идёт в теле таймера... не?
вроде бы замена wog'ификацией идёт в теле таймера... не?
27.03.2017, 14:57
(27.03.2017 13:16)Bes Wrote: [ -> ]вроде бы замена wog'ификацией идёт в теле таймера... не?Так о том и речь. Если замена в начале игры, то перенести её в !?PI.