Перейти к содержимому


Фотография

(sfall) дополнения


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 1246

#341 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 12 марта 2016 - 23:34

QUOTE
в 3.7 там в 1 поставлено.
0 — backward compatible with pre-3.4, 1 — permanent arrays don't get stored in savegames by default ©.


#342 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 12 марта 2016 - 23:48

QUOTE
1 — permanent arrays don't get stored in savegames by default ©.

чаво?
>>> Обратной совместимости ПРИМЕЧАНИЯ <<<
Для тех, кто использовал массивы в своих модов перед sfall 3.4:
1) Существует параметр INI "arraysBehavior" в разделе "Разное" в ddraw.ini. Если установлено в 0, все сценарии, которые используются массивы, прежде чем sfall должно работать. В основном это изменения, которые "create_array" будет создавать постоянные массивы, которые "сохраненные" по умолчанию и их ID также постоянным. Это по умолчанию 1.
2) Как сохраненных игр Совместимость обрабатывается?
Сохраненные массивы хранятся в sfallgv.sav файла (в сохраненной игры) в новом (более гибкого) формате, сразу после старых массивов. Так в основном, когда вы загружаете старую сохраненную игру, sfall будет загружать массивы из старого формата и сохранять их в новом формате на следующей игре энергосбережения. Если вы загрузите сохраненную игру, сделанное с использованием sfall 3.4 sfall 3.3 (например), игра не должна врезаться, но все массивы будут потеряны.
3) Ранее вы были указать размер в байтах для элементов массива. Этот параметр в настоящее время игнорируются, и вы можете хранить строки произвольной длины в массивах.

Отправлено: 13 мар 16 00:15
QUOTE
Реально ты там что-то серьёзно все поломал! :)
Пока отключил, проверяй. Потом перепишу.
Переписал, включил (в F1-версии тоже).

Вырубай эту бяку — теперь после загрузки они просто стоят)
По ощущении после загрузки как будто игра принудительно ГГ выводит из боя и потом снова входит в бой. и можно закончить бой.
В чем фишка этого фикса — недать гг положить бомбу и смыться?

Это сообщение отредактировано Fakeman - 13 марта 2016 | 00:28


#343 kotmatposkin

kotmatposkin

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений

Отправлено 13 марта 2016 - 00:32

Само собой не из debugging добавил) Прошу покорно меня простить))).

Лог такой In DllMain2

Leave DllMain2

Loading save game: patch000.dat\savegame\slot21\sfallgv.sav

Cannot read sfallgv.sav — assuming non-sfall save.

Global script 5bc0390 registered as hook id 20 Global script 5bc0390 registered as hook id 10 Global script 5bc0390 registered as hook id 21 Saving game: patch000.dat\savegame\slot28\sfallgv.sav

ERROR creating sfallgv!

sfallgv.sav: 3

sfallfs.sav: 3

Заранее, огромнейшее спасибо!!!


#344 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 13 марта 2016 - 00:57

QUOTE
Loading save game: patch000.dat\savegame\slot21\sfallgv.sav

patch000.dat чего это за путь такой дебильный?
должен быть
Loading save game: data\savegame\slot05\sfallgv.sav

Это сообщение отредактировано Fakeman - 13 марта 2016 | 01:06


#345 kotmatposkin

kotmatposkin

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений

Отправлено 13 марта 2016 - 01:10

Проблема оказалась простой, вернее решение) Просто удалил patch000.dat.
Спасибо большое всем в решении проблемы)

Это сообщение отредактировано kotmatposkin - 13 марта 2016 | 01:13


#346 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 13 марта 2016 - 01:41

QUOTE
Проблема оказалась простой, вернее решение) Просто удалил patch000.dat.

Создал такую папку и получил ошибку при записи.
Тут вопрос почему сфалл пишет в папку patch000.dat а не в data ?


Это сообщение отредактировано Fakeman - 13 марта 2016 | 01:46


#347 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 13 марта 2016 - 02:47

Fakeman
QUOTE
>>> Обратной совместимости ПРИМЕЧАНИЯ <<<
Проще на английском прочитать, чем после гугл-транслейт :)
QUOTE
Вырубай эту бяку — теперь после загрузки они просто стоят)
Сейчас точно исправил, зуб даю :-p
QUOTE
В чем фишка этого фикса — недать гг положить бомбу и смыться?
Устанавливаешь таймер на динамите, подкладываешь жертве, возле которой есть кто-то ещё и его заденет взрыв и он останется жив (я для тестов использовал девицу-крупье в баре-казино Бекки, что в Дыре. Ту, которая ближе к входу в подвал, к ней ещё охранник ходит. Чтобы взрывом задевало всех вокруг, но охранница в углу живой оставалась). После подкладывания бомбы, до взрыва, делаешь ноги в другую зону, возвращаешься назад и снова выбегаешь — ловишь краш.

kotmatposkin
QUOTE
Saving game: patch000.dat\savegame\slot28\sfallgv.sav
ERROR creating sfallgv!
sfallgv.sav: 3
sfallfs.sav: 3
> 3: Системе не удается найти указанный путь.©
А в fallout2.cfg какие строки в critter_patches и в master_patches? (у меня там D:\Games\Fallout2\data).


#348 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 13 марта 2016 - 03:21

QUOTE
- Исправлен приводящий к крашу баг с форсированным (подбросить взрывчатку и покинуть карту до взрыва) использованием взрывчатки если взрыв задевает кого-либо рядом, возвратом на карту и снова выходом с карты.

Я тут потестил бомбочки (с подкидыванием и покиданием карты до взрыва) выяснилось что у уничтоженного непеся при выходе из карты не срабатывает damage_p_proc(и соответственно не извещает столько ему нанесло повреждений) — но срабатывает destroy_p_proc.
Тебе тут еще по хорошему нужно в source_obj передавать указатель, чтобы в обработчике destroy_p_proc это можно было получить его, и узнать отчего умер непесь.
только я во тут даже не знаю какой указатель передавать предмета или самого гг, надо логически подумать... Правильнее будет указатель на ГГ.

Это сообщение отредактировано Fakeman - 13 марта 2016 | 14:24


#349 kotmatposkin

kotmatposkin

    Новичок

  • Пользователи
  • Pip
  • 8 сообщений

Отправлено 13 марта 2016 - 13:01

critter_patches=data и master_patches=data (указал точный путь до игры, все равно ошибка если не удалять patch000.dat)
Так и не понял, new arrays behavior ставить единицу?) Или оставить по умолчанию как и есть ноль?

Это сообщение отредактировано kotmatposkin - 13 марта 2016 | 13:11


#350 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 13 марта 2016 - 14:31

Чего напали на crafty — Папки патчдат не должно быть в игре, возьмите sfall оригинала и получите такую же ошибку при сохранении.

QUOTE
Вырубай эту бяку — теперь после загрузки они просто стоят)
Сейчас точно исправил, зуб даю :-p

Ну бой больше не глючит.
НО 1 раз было такое, что во время загрузки нпс "отошел по своим делам" — т.е. у нпс в скрипте указано вернуться на свое место на карте, и пока там что-то происходит(во время загрузки как будто игра принудительно ГГ выводит из боя и потом снова входит в бой) в этот момент нпс успел отойти от меня на некоторое расстояние, пока игра опять не вошла в режим боя.
может конечно это сам двиг так иногда глючит — по крайней мере больше такого эффекта не появлялось.

Это сообщение отредактировано Fakeman - 13 марта 2016 | 16:15


#351 Foxx

Foxx

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 120 сообщений

Отправлено 13 марта 2016 - 23:15

Я так понял, что динамит сейчас можно подкладывать и уйти на другую карту без "вылета"?


#352 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 14 марта 2016 - 01:01

Как писал крафти вылеты были после повторного выхода из карты.
- сейчас их нету.

Это сообщение отредактировано Fakeman - 14 марта 2016 | 16:26


#353 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 15 марта 2016 - 01:18

Fakeman
QUOTE
Я тут потестил бомбочки (с подкидыванием и покиданием карты до взрыва) выяснилось что у уничтоженного непеся при выходе из карты не срабатывает damage_p_proc(и соответственно не извещает столько ему нанесло повреждений) — но срабатывает destroy_p_proc.
Так и задумано:
QUOTE
! Теперь при форсированном использовании взрывчатки и смерти жертвы вызывается destroy_p_proc.
В оригинальном коде при форсированном использовании взрывчатки вообще ничего не вызывается — ни damage_p_proc, ни destroy_p_proc. Что делает использование взрывчатки таким способом вообще бесполезным и даже опасным (без destroy_p_proc не будут выполнены некоторые важные/квестовые вещи — смерть Джои не оставит на его трупике кулон Анны, или не будет засчитана смерть Мецгера, ну и тому подобное). Что касается damage_p_proc, то тоже всё логично — ушёл с карты и не при делах, кто там и от чего умер, и опыт за них не получишь. Так в движке работает использование суперстимуляторов — source_obj не инициализируется, вызывается destroy_p_proc и жертва убивается.
QUOTE
Папки патчдат не должно быть в игре, возьмите sfall оригинала и получите такую же ошибку при сохранении.
Как оказалось это действительно баг сфалла, только ноги растут ещё из оригинальной версии. Для определения пути при чтении/сохранении файлов sfallgv.sav/sfallfs.sav текущей игры используется какой-то адски странный способ. И он даже работает в комфортной ситуации, но шаг влево-вправо (каталог патчдат) и башня падает. Переписал ;)
QUOTE
НО 1 раз было такое, что во время загрузки нпс "отошел по своим делам"
Это движок :-p

kotmatposkin
QUOTE
Так и не понял, new arrays behavior ставить единицу?) Или оставить по умолчанию как и есть ноль?
Ставь единицу, но нельзя будет использовать сейвы с sfall версией < 3.4.

Foxx
QUOTE
Я так понял, что динамит сейчас можно подкладывать и уйти на другую карту без "вылета"?
Да. В принципе и раньше можно было — в оригинальном sfall этот баг исправили ещё в версии 3.1 (>Added a fix for a crash when killing critters with explosives).
Но потом я обнаружил ещё один крашевый баг со специфическими условиями проявления, его-то и допиливали последние дни.


#354 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 15 марта 2016 - 02:11

QUOTE
ушёл с карты и не при делах, кто там и от чего умер

Ну да верно))
А еще не увеличивается счетчик убитых таким способом.
А еще в режиме боя заложить взрывчатку намного легче чем в реалтайме.
А еще... в общем в двиге багов как вшей у бродячей собаки)
Поэтому не могли бы вы посмотреть почему не работает функция
obj_can_hear_obj :)
CODE
Проверка, может ли один объект слышать другой
Возвращаемое значение:
TRUE - если src_obj слышит dst_obj, иначе - FALSE
При проверке учитывается расстояние, текущее состояние (стоит/идёт/бежит), использование умений скрытность и др.

Ни при каких условиях в тестах не возвращает истину.
в фоле в некоторых скиптах эта функция используется.

Это сообщение отредактировано Fakeman - 15 марта 2016 | 02:13


#355 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 15 марта 2016 - 03:52

QUOTE
Ни при каких условиях в тестах не возвращает истину.
Исправил ;)


#356 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 15 марта 2016 - 15:06

CODE
Исправил;)

Жаль, но она чего-то работает также как и obj_can_see_obj — можно позади криттера бегать он и не узнает.
Я то думал что радиус будет круговой — со всеми этими случайными проверками.

Кстати эта функция используется у слепого повара в Наварро — и он должен реагировать на гг в помещении.

Это сообщение отредактировано Fakeman - 15 марта 2016 | 15:24


#357 Phobos

Phobos

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 16 марта 2016 - 16:13

Любопытно, как именно вы исправили obj_can_see_obj и obj_can_hear_obj? Если не ошибаюсь, первая используется повсеместно (враждебность любого криттера) и менять её поведение как бы не стоит (если только опционально), а вторая судя по коду вообще не доделана, т.е. отдельной механики слуха в игре просто нет.

Подобные исправления попахивают отсебятиной :)


#358 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 16 марта 2016 - 19:35

QUOTE
Любопытно, как именно вы исправили obj_can_see_obj

ее вообще никто не трогал. читайте внимательнее.

QUOTE
obj_can_hear_obj по коду вообще не доделана, т.е. отдельной механики слуха в игре просто нет.

да, она в двиге не работает, но используется в некоторых скриптах фола.

Механика Слуха — реализация ее очень проста, некий радиус вокруг криттера с учетом на карте блокирующих объектов типа 'WALL'.

Это сообщение отредактировано Fakeman - 16 марта 2016 | 19:48


#359 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 16 марта 2016 - 23:20

Phobos
QUOTE
Любопытно, как именно вы исправили obj_can_see_obj и obj_can_hear_obj? Если не ошибаюсь, первая используется повсеместно (враждебность любого криттера) и менять её поведение как бы не стоит (если только опционально), а вторая судя по коду вообще не доделана, т.е. отдельной механики слуха в игре просто нет.
У них одинаковый код, но у obj_can_see_obj дополнительно ещё будет вызов функции проверки препятствий для цели. Вероятно функции писались под чем-то, и больше всего досталось obj_can_hear_obj. Вот так должен выглядеть правильный код:
CODE
if (target != 0) and (source != 0) then begin
 if (target.elev == source.elev) then begin
  if (target.tile_num != -1) and (source.tile_num != -1) then begin
   is_within_perception_(source, target);
...

Вот так сделан obj_can_hear_obj:
CODE
if ((target == 0) or (source == 0)) then begin
 if (target.elev == target.elev) then begin
  if (target.tile_num != -1) and (target.tile_num != -1) then begin
   is_within_perception_(source, target);
...

Вот так сделан obj_can_see_obj:
CODE
if (target != 0) and (source != 0) then begin
 if (target.elev == target.elev) then begin
  if (target.tile_num != -1) then begin
   if (target == _obj_dude) then begin      // *********
    is_pc_flag_(Sneak_);                    //   блок
   end                                      // пустышка
   stat_level_(source, STAT_pe);            // *********
   is_within_perception_(source, target);
...

Сейчас у них правильный код :-p

Fakeman
QUOTE
Я то думал что радиус будет круговой — со всеми этими случайными проверками.
Угу, тоже так думал (хотя нужно ещё is_within_perception_ поразглядывать, что-то она меня беспокоит... ;)). Нужен только хороший скрипт, что-то вроде хукового mouseclick, чтобы внутри можно было узнать указатель на кликнутого критера.
QUOTE
ее вообще никто не трогал. читайте внимательнее.
Я потом потрогал, keke ;)


#360 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 16 марта 2016 - 23:46

QUOTE
Угу, тоже так думал (хотя нужно ещё is_within_perception_ поразглядывать, что-то она меня беспокоит... ;)). Нужен только хороший скрипт, что-то вроде хукового mouseclick, чтобы внутри можно было узнать указатель на кликнутого критера.

Да брось это дело.
Я так понял надо конкретно переписывать код ибо у нее угловой обзор, т.е. куда смотрит криттер там и "слышит", а нужно 360гр.
У меня самописная процедура есть для моих нужд, эмулирующая "слух" — просто думалось что движковая рабочая и просто багнута, а тут не все так просто.

QUOTE
Я потом потрогал, keke ;)

негодяй! ))




Похожие темы Свернуть

  Название темы Форум Автор Статистика Последнее сообщение


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных

Рейтинг@Mail.ru