Полная Версия: (sfall) дополнения
Страницы: 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
Foxx
Я так понял, что динамит сейчас можно подкладывать и уйти на другую карту без "вылета"?
Fakeman
Как писал крафти вылеты были после повторного выхода из карты.
- сейчас их нету.
Crafty
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).
Но потом я обнаружил ещё один крашевый баг со специфическими условиями проявления, его-то и допиливали последние дни.
Fakeman
QUOTE
ушёл с карты и не при делах, кто там и от чего умер

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

Ни при каких условиях в тестах не возвращает истину.
в фоле в некоторых скиптах эта функция используется.
Crafty
QUOTE
Ни при каких условиях в тестах не возвращает истину.
Исправил ;)
Fakeman
CODE
Исправил;)

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

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

Подобные исправления попахивают отсебятиной :)
Fakeman
QUOTE
Любопытно, как именно вы исправили obj_can_see_obj

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

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

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

Механика Слуха — реализация ее очень проста, некий радиус вокруг криттера с учетом на карте блокирующих объектов типа 'WALL'.
Crafty
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 ;)
Fakeman
QUOTE
Угу, тоже так думал (хотя нужно ещё is_within_perception_ поразглядывать, что-то она меня беспокоит... ;)). Нужен только хороший скрипт, что-то вроде хукового mouseclick, чтобы внутри можно было узнать указатель на кликнутого критера.

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

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

негодяй! ))
Crafty
Новая версия ;)

- Добавлены режимы возвращаемые функцией get_game_mode: INTFACEUSE (открыто окно инвентаря при курсорном использовании предмета из рюкзака), INTFACELOOT (открыто окно обшаривания ящиков/трупиков) и BARTER (открыто окно торговли).
- Исправлен функционал hs_ammocost и CheckWeaponAmmoCost — теперь они функционируют независимо друг от друга.
- Добавлена переменная CarryWeightLimit для изменения лимита веса.
- Переписан, исправлен и доведён до ума CritterInvSizeLimitMode — теперь это полностью функциональное и интересное расширение. Значение переменной CritterInvSizeLimit применяется ко всем персонажам и для его хранения используется STAT_unused этого персонажа, что позволяет изменять значение с помощью set_critter_stat. На экране снаряжения игрока, а также в окне настроек сопартийца в поле "Несёт" кроме "общий вес/максимальный вес" показывается (при соответствующем режиме) дополнительно "общий размер/максимальный размер".
- Теперь FreeWeight поддерживает любой режим CritterInvSizeLimitMode, но чтобы не возникла путаница пришлось изменить формат отображения отказавшись от показа максимального значения. Сейчас формат — "свободный вес" для персонажей и "свободный размер" для контейнеров, а при включённом режиме CritterInvSizeLimitMode для заданных персонажей — "свободный вес/свободный размер". (в F1-версии изменился формат отображения).
- Исправлен hs_invenwield.
- Добавлена переменная CarChargingFix для изменения возможности зарядки автомобиля с помощью использования топливных элементов на других объектах.
- Доработано исправление бага "форсированного использования взрывчатки если взрыв задевает кого-либо рядом, возврата на карту и снова выхода с карты". (в F1-версии тоже).
- Исправлено неправильное определение пути при чтении/записи файлов sfallgv.sav и sfallfs.sav.
- Исправлен obj_can_hear_obj и чутка подправлен obj_can_see_obj. (в F1-версии тоже).
- Теперь при включённой переменной UseScrollWheel можно прокручивать инвентарь цели в окне обшаривания ящиков/трупиков или окне торговли. (в F1-версии тоже).


Отправлено: 20 мар 16 02:07
Fakeman
QUOTE
Жаль, но она чего-то работает также как и obj_can_see_obj — можно позади криттера бегать он и не узнает.
А как проверял?
Если цель расположена перед лицом проверяющего, то проверяющий "видит"/"слышит" цель в пределах своего восприятия*5 (это без учёта рабочего режима Скрытности и наличия режима невидимости у цели если это игрок), а если сзади/сбоку то пределы ограничены значением восприятия (опять же без учёта рабочего режима Скрытности для игрока; А если в бою, то восприятие умножается на 2). При этом у "видимости" не должно быть препятствий на пути, а у "слышимости" препятствия на пути могут быть.

QUOTE
Я то думал что радиус будет круговой — со всеми этими случайными проверками.
Поразглядывал is_within_perception_, и как раз исправленный obj_can_hear_obj работает в некоторой степени правильно с круговой проверкой, а вот obj_can_see_obj логически сделан неправильно — можно "видеть" (глазами на затылке?) цель сзади. Детально чё-то лень расписывать, потому как движок поправить можно, но в обязательном порядке придётся править все скрипты с содержимым вида "obj_can_see_obj(self_obj,dude_obj)" на "(obj_can_see_obj(self_obj,dude_obj) or obj_can_hear_obj(self_obj,dude_obj))".
Fakeman
QUOTE
и чутка подправлен obj_can_see_obj.

Так и что ты там чутка подправил????

QUOTE
А как проверял?

Легко) Подцепил скрипт к собаке поставил ей 10 восприятие и бегал во круг нее) как тока она "слышала" сразу сообщалось в логе.

QUOTE
а вот obj_can_see_obj логически сделан неправильно — можно "видеть" (глазами на затылке?) цель сзади.

Все правильно там сделано!
оно то видит не на 10 гексов) а когда подходишь сзади практически в упор криттер начинает видеть игрока — аля чувствует что сзади подошли :)
это нормально и правильно, так что obj_can_see_obj не надо трогать иначе криттеры вообще ослепнут!

QUOTE
При этом у "видимости" не должно быть препятствий на пути, а у "слышимости" препятствия на пути могут быть.

тут тоже ты чего напутал!
obj_can_see_obj не должен видеть через объекты и блокираторы типа Scenery/Walls.
а obj_can_hear_obj по идеии должен "слышать" только через объекты/блокираторы типа Scenery, а тип Walls должны блокировать.
А еще у объектов есть флаг видимости через них! это тоже должно учитываться.

QUOTE
UseScrollWheel

Вот за вот это спасибо!
Как работает без глюков? :)
Crafty
QUOTE
Так и что ты там чутка подправил????
Чуть выше же Phobos'у отвечал на этот вопрос с примерами.
QUOTE
тут тоже ты чего напутал!
Ничего не путал — говорю как это сделано в движке. Что за собака у тебя такая, что при 10 восприятия (как устанавливал?) не слышит? Я особо не мудрствовал — пошёл в Дыре к Мецгеру и сохранился, чтобы был готовый сейв. Потом декомпильнул DCMETZGE.int и добавил в конец critter_p_proc:
CODE
set_npc_stat_max(1, 1); // восприятие = 1
display_msg("hear, see="+obj_can_hear_obj(self_obj,dude_obj)+", "+obj_can_see_obj(self_obj,dude_obj));

Компильнул обратно, забросил в \scripts и загрузил подготовленный сейв. Стою сзади Мецгера — видит и слышит, отхожу на гекс — не видит и не слышит. Становлюсь у него перед лицом — видит и слышит в пределах 5 гексов.
Перекомпилил скрипт с set_npc_stat_max(1, 2) (восприятие = 2) — сзади видит и слышит в пределах 2 гексов, впереди слышит на 10 гексов, через стену не видит, через окно/дверной проём видит при ObjCanSeeObj_ShootThru_Fix=1. Притащил Сулика, ставлю сзади/впереди Мецгера — слышит, но не видит.

Я согласен, что несмотря на своё название obj_can_see_obj задействует и глаза, и уши. Но считаю что реализация не совсем правильная. И влияет на воровство:
QUOTE
the scripts for using the Steal skill. In both F1 and F2 Steal detection is on a line-of-sight basis. IE if you have an NPC and you stand near Killian the NPC will be near by. You can then tell the NPC to leave the party and if he blocks Killian's line-of-sight you can just steal every item on Killian's desks with 100% immunity and a Steal skill of 0. The F2 engine should mean you can now push an NPC right next to Killian with no trouble. (In F2 you can do this with Metzger's fridge and room, Stark's desk, the downstairs room in the Mordino's club to get the Bullets magazine, etc. There seem to be some tough scripts in Buster's tent in F2 so maybe those can be applied to F1 Fixt.
Даже замена в скриптах конструкций "obj_can_see_obj(self_obj,dude_obj)" на "(obj_can_see_obj(self_obj,dude_obj) or obj_can_hear_obj(self_obj,dude_obj))" криво, но поможет.

QUOTE
Как работает без глюков? :)
Вроде, а ещё пока делал так разобрался с совместимостью со старыми версиями HRP.
Fakeman
QUOTE
Чуть выше же Phobos'у отвечал на этот вопрос с примерами.

из тех примеров я понял что добавилась такая конструкция к проверке and (source.tile_num != -1)
все? или что то еще.

имхо, obj_can_see_obj лучше не трогать сильно.
можно конечно внести какие-либо изменения но только с вкл/выкл через ini.

Отправлено: 20 мар 16 17:13
по тестил я еще раз obj_can_hear_obj
у "собаки" спереди c восприятием 6 слышит ГГ через здание(блокираторы стены) на расстояние от нее в 25 гексов при этом подхожу сзади на расстоянии в ~5 гексов не слышит ГГ — да ну это не правильно!
еще радиус слышимости должен быть намного меньше чем дальность самого обзора(видимости) нпс.
и если гг стоит(не шевелится) то НеПеСь не должен его слышать.
Fakeman
Есть какая-то странность при пере компиляции проекта начиная с версии 1.5.7(и выше) в игре возникают баги, а именно при подключенном файле Stats.ini(даже пустом) в инвентаре не отображаются некоторые итемы(нет картинки). при выходе из игры возникает стандартная ошибка "память не может ляляля", возможно еще есть какие-то сопутствующие баги, заметил только это.
При этом на твоих скомпилированных дллках бага не возникает.
Изменения в код проекта не вносил, и без разницы какую версию создаешь TRACE/RELEASE, при компиляции никаких ошибок не возникает.
В чем такой косяк при компиляции на другой системе/машине?
все младшие версии компилируются без бага.

Где-то ты допустил ошибку в stats.cpp
Fakeman
в общем не "хитрыми" манипуляциями удалось выявить баг
вернул старые процедуры из 1.5.6

CODE
static void __declspec(naked) _stdcall ProtoPtr(DWORD pid, int** proto) {
__asm {
 mov eax, [esp+4];
 mov edx, [esp+8];
 call proto_ptr_
 retn 8;
}
}
static void __declspec(naked) stat_recalc_derived_hook() {
__asm {
 push edx;
 push ecx;
 push eax;
 call StatRecalcDerived;
 pop ecx;
 pop edx;
 retn;
}
}

и чутка подправил эту процедуру
CODE

static void _stdcall StatRecalcDerived(DWORD* critter) {
int basestats[STAT_lu+1];
for (int stat = STAT_st; stat <= STAT_lu; stat++) {
 basestats[stat] = stat_level(critter, stat);
}
int* proto;
ProtoPtr(critter[25], &proto);
for (int i = STAT_max_hit_points; i <= STAT_max_derived; i++) {
 if (i >= STAT_dmg_thresh && i <= STAT_dmg_resist_explosion) continue;
 double sum = 0;
 for (int j = STAT_st; j <= STAT_lu; j++) {
  sum += (basestats[j] + StatShifts[i][j]) * StatMulti[i][j];
 }
 proto[i+9] = StatFormulas[i].base + (int)floor(sum);
 if (proto[i+9] < StatFormulas[i].min) proto[i+9] = StatFormulas[i].min;
}
}

Не знаю чего изменилось, но теперь вроде все работает)

я думаю баг где то здесь зарыт.
CODE
static void __declspec(naked) stat_recalc_derived_hook() {
__asm {
 pushad
 sub  esp, 4
 mov  edx, esp
 push eax
 mov  eax, [eax+0x64]                     // eax = pid
 call proto_ptr_
 push [edx];
 call StatRecalcDerived
 add  esp, 4
 popad
 retn
}
Crafty
QUOTE
Где-то ты допустил ошибку в stats.cpp
Верно, исправил. Спасибо ;)
QUOTE
При этом на твоих скомпилированных дллках бага не возникает.
А вот это странно.
Foxx
Crafty можно ли изменить клавиши "Быстрое сохранение" на F5, а "Быструю загрузку" на F9.
Fakeman
QUOTE
А вот это странно.

Ну может баг в чем-то другом проявлялся — это же дело такое непредсказуемое)
в моем случае баг вылазил наружу, если при отрытом инвентаре выполнить функцию create_object_sid.
Crafty
Foxx
QUOTE
можно ли изменить клавиши "Быстрое сохранение" на F5, а "Быструю загрузку" на F9.
Конечно. Сделал сначала через правку движка, чтобы через скрытую переменную можно было включать, но потом решил что не очень практично.
А потому подправил обработчик клавиатуры, чтобы с помощью hs_keypress (позже hookscripts.txt отредактирую) можно было менять нажимаемую клавишу на нужную. Вот hs_keypress.ssl:
CODE
procedure start;

procedure start begin
if not init_hook then begin
 variable event := get_sfall_arg, keyDX := get_sfall_arg, keyVK := get_sfall_arg;
 if (keyDX == 64) then set_sfall_return(63);     // F6? Теперь F5
 else if (keyDX == 63) then set_sfall_return(64);// F5? Теперь F6
 else if (keyDX == 67) then set_sfall_return(65);// F9? Теперь F7
 else if (keyDX == 65) then set_sfall_return(67);// F7? Теперь F9
end
end

Fakeman
QUOTE
Ну может баг в чем-то другом проявлялся — это же дело такое непредсказуемое)
в моем случае баг вылазил наружу, если при отрытом инвентаре выполнить функцию create_object_sid.
Я забыл сохранять нужный позже регистр, а тестировал только на игроке (в этом случае регистр не портится). В общем разновидность "комфортной ситуации" ;(
Fakeman
QUOTE
Вот hs_keypress.ssl:

О это ты замечательно придумал!
только я вот думаю что мистер Фокс не понимает в скриптах)

посмотри еще функции get_screen_height/get_screen_width
суть бага, если сменить разрешение без перезагрузки игры, то функции будут возвращать предыдущее разрешение окна/экрана, можно это подправить?
если там придется много ковырять то не надо.
Pyran
Заметил такую вещь — RP ругается на несоответствие ddraw.ini при использовании Crafty 1.6 / 1.6.7 — при использовании 1.5 — молчит.
Fakeman
QUOTE
Заметил такую вещь — RP ругается на несоответствие ddraw.ini при использовании Crafty 1.6 / 1.6.7 — при использовании 1.5 — молчит.

в одной из твоей сборок с 3.6 sfall'ом такая же байда писалась, ini я не трогал.
имхо пусть в самом рп вырубят эту ни к чему ненужную проверку.

Grafty убей этот опкод что-бы больше недоставало никого это сообщение)
хах глянул исходник — да ты его почти убил но этот гад еще полуживой — добей его)))
Для чего ты весь исходный код переписываешь? — это же ты представь сколько ошибок мог наделать!
Foxx
В скриптах я полный ноль, но версия изменилась на .0.7.
Mr. Сталин можешь добавить в версию SE.
Fakeman
QUOTE
Mr. Сталин можешь добавить в версию SE.

это надо отдельный скриптом.
может тогда ф6 на ф8 кинуть?
логично же получается
ф4 — сохран.
ф5 — быстрое сохран.
...
ф8 — загрузка
ф9 — быстрое загрузка
Foxx
Именно, что F5 и F9 стандарт для нынешних игр (палец так и тянется, привычка).
Fakeman
так я тебе про ф6(это загрузка, которая была на ф5) на ф8 перекинуть?
Crafty
Pyran
QUOTE
Заметил такую вещь — RP ругается на несоответствие ddraw.ini при использовании Crafty 1.6 / 1.6.7 — при использовании 1.5 — молчит.
Та то я кастрировал функцию modified_ini и удалил обработку переменной ModifiedIni в ddraw.ini, а RP использует глобальный скрипт (glmodini.int) для проверки значения этой переменной, такая себе псевдозащита (главное чтобы ModifiedIni не равнялось 0) от перезаписи ddraw.ini. Поправил modified_ini для возврата фейкового значения > 0. Может позже верну обработку переменной ModifiedIni (хоть и не вижу в этом смысла)...

Fakeman
QUOTE
посмотри еще функции get_screen_height/get_screen_width
Функции читают фиксированные значения в движке, а вот изменяет их HRP (исходников нет) и видимо только при перезапуске игры, но при смене разрешения об этом забывает. Может позже подробнее гляну.
QUOTE
это же ты представь сколько ошибок мог наделать!
А сколько исправить :-p

Foxx
QUOTE
В скриптах я полный ноль, но версия изменилась на .0.7.
Да там делов-то и без знания скриптов — компильнуть hs_keypress.ssl с приведённым содержимым и скопировать получившийся hs_keypress.int в \data\scripts.
Fakeman
QUOTE
Может позже верну обработку переменной ModifiedIni (хоть и не вижу в этом смысла)...

Верно! нет смысла от этого Modified_Ini, к тому-же есть рабочие аналоги get_ini_*
если бы он дату изменения файла возвращал было бы другое дело.

QUOTE
А сколько исправить :-p

ага и жизни не хватит, что бы избавить фол от багов)
Вот к примеру обработчик damage_p_proc привязанный к объекту двери — если гг по ним промазывает то он все равно гад срабатывает.
Crafty
QUOTE
ага и жизни не хватит, что бы избавить фол от багов)
Не, тут речь именно о коде sfall.

QUOTE
Вот к примеру обработчик damage_p_proc привязанный к объекту двери — если гг по ним промазывает то он все равно гад срабатывает.
Не баг, так задумано.
Если у цели, получившей повреждения, есть скрипт, то сработает damage_p_proc, но функция, которая выводит в монитор сообщения игнорирует цели, если они не являются персонажами и вместо "правильного" промаха ("Ой! Стена получает удар вместо намеченной цели (Нарк)!") сообщает о фальшивом промахе ("Вы : промах").
Подправил, если цель — дверь и у неё есть скрипт , то в мониторе вместо фальшивого промаха будет "правильный" ("Ой! Деревянная дверь получает удар вместо намеченной цели (Нарк)!").

PS. Хотя можно было оставить и первый вариант (цель не персонаж и у неё есть скрипт) без проверки что цель является дверью со скриптом.
Fakeman
QUOTE
но функция, которая выводит в монитор сообщения игнорирует цели, если они не являются персонажами и вместо "правильного" промаха ("Ой! Стена получает удар вместо намеченной цели (Нарк)!") сообщает о фальшивом промахе ("Вы : промах").
Подправил, теперь если цель не персонаж, но у неё есть скрипт , то в мониторе вместо фальшивого промаха будет сообщаться о "правильном".

чево-чево-чево... наркоман!))
пойду на практике проверю)

Отправлено: 2 апр 16 02:57
Проверил ничего не поменялось — игрок бьет кулаком по двери, промахивается но дверь выносит. (можешь даже в неваде проверить на некоторых дверях.)

QUOTE
Подправил, теперь если цель не персонаж, но у неё есть скрипт , то в мониторе вместо фальшивого промаха будет сообщаться о "правильном".

а можно разъяснения, что за 'правильный' промах такой? :)

QUOTE
Не баг, так задумано.

Да ну... наркоманская задумка!
На дверях(объекте) этот как-то вообще странно работает, если игрок бьет по дверям оружием(кувалдой допустим) то это сообщением/звуком вообще никак не проявляется т.е. как удар в никуда, но обработчик на дверях всегда срабатывает, вне зависимости попал ли по двери ГГ.

В общем я понял что ты поправил но я говорил о другом.
Crafty
QUOTE
Проверил ничего не поменялось — игрок бьет кулаком по двери, промахивается но дверь выносит. (можешь даже в неваде проверить на некоторых дверях.)
Всё, на неваде уловил о чём речь ;) В чистом F2 тестировал.

QUOTE
а можно разъяснения, что за 'правильный' промах такой? :)
Выше же написано. Если пулю ловит не главная цель, а случайная и это не персонаж, то движок пишет о "фальшивом" промахе, хотя тут был "правильный" промах.
В твоём примере — если цель стоит рядом со скриптовой дверью, ты стреляешь в цель, но попадаешь в дверь, которая разлетается. Без исправления в движке для игрока это выглядит нелепо — стрелял в персонажа, игра сообщает о промахе ("Вы : промах"), но при этом уничтожается дверь.

QUOTE
QUOTE
Не баг, так задумано.
Да ну... наркоманская задумка!
На дверях(объекте) этот как-то вообще странно работает, если игрок бьет по дверям оружием(кувалдой допустим) то это сообщением/звуком вообще никак не проявляется т.е. как удар в никуда, но обработчик на дверях всегда срабатывает, вне зависимости попал ли по двери ГГ.
Таки ты прав — баг в движке: для не_персонажа перед вызовом damage_p_proc нет проверки что попадание действительно было, а потому damage_p_proc срабатывает и при промахах. Добавил проверку ;)

Ну и при выводе в монитор вернул первый вариант для фальшивых промахов — цель не персонаж и у неё есть скрипт.
Fakeman
CODE
В FID существа используются все поля. ID1 определяет Suffix1, ID2 - Suffix2, ID3 - ExtSuffix.

При ID2 равном 0x1B (27 - ANIM_electrify), 0x1D (29 - ANIM_burned_to_nothing), 0x1E (30 - ANIM_electrified_to_nothing), 0x37 (55 - ANIM_electrify_sf), 0x39 (57 - ANIM_burned_to_nothing_sf), 0x3A (58 - ANIM_electrified_to_nothing_sf), 0x21 (33 - ANIM_fire_dance), 0x40 (64 - called shot interface picture) происходит изменение Индекса в LST-файл.
Индекс меняется на первое число, стоящее после строки с корнем имени файла.

Можно это изменить(хакнуть), чтобы двиг менял индекс но при условии, если такого фрм-файла нет ??? хотя бы для 0x40 (NA — called shot interface picture).
очень надо :)
Garvan
Crafty, я ставлю Вашу последнюю версию sfall на Olympus 2207 и примерно после трети игры появляется такой баг: в случайных встречах все начинают агриться. Приходится убивать всех подряд и становиться злодеем. Особенно это досадно на особых случайных встречах, где бывает и квесты дают.
Порывшись в сети понял, что такая проблема есть не только у меня, просто многие мочат всех кого встретят не особо заморачиваясь.

Проверял три раза играя то с Вашим sfall 1.5.7, то с имеющимся в папке игры sfall 3.4.1.305  — с Вашим sfall этот баг неизбежен, что конечно очень жаль учитывая насколько он удобнее и функциональнее.

С этим можно что-то сделать?
Fakeman
QUOTE
Проверял три раза играя то с Вашим sfall 1.5.7, с Вашим sfall этот баг неизбежен С этим можно что-то сделать?

точно 1.5.7 ? если да то заменить версию на sfall 1.6.7
если можешь выложи свое сохранение.
Garvan
Да, точно, сейчас проверил — 1.5.7. недавно качал отсюда, была самая новая. Скачаю 1.6.5 попробую поиграть и отпишусь.
Сейв сделать нужно, если баг себя проявит в новой версии? По старой, как я понимаю уже не актуально?
Fakeman
да если баг останется то сохранение не важно из какой версии "сделаешь".
Garvan
Словил новый баг в Olimpus 2207 при использовании sfall 1.6.7

Особая случайная встреча "Проход в скале" она же "Пещера в горе" — при выходе с локации оказываешься довольно далеко от нее и прямо в скале — двигаться невозможно.

Оставил sfall 3.4 (который по умолчанию активирован в папке с игрой) загрузил ближайшее сохранение — зашел на локацию, вышел — и оказался точно зеленом кружочке.

Оба сохранения есть, но не знаю как их к сообщению прикрепить. У меня нет такой функции.

И еще странное нечто, не знаю баг или нет — если загрузить сохранение и зайти на любую ранее посещенную карту которую, однако, до этого сохранения не посещал, то на ней все будет так, как после моего посещения осталось. Но я ведь загрузил сейв ДО посещения этой карты.

Касательно агрессивности всех при случайных встречах — пока нет такого. вернее один раз на меня набросился "Одинокий путник", но при следующей встрече с ним же был спокоен и предлагал мне тоже не волноваться.
Надо еще поижграть ,так как этот баг проявляется не сразу.
Fakeman
QUOTE
Особая случайная встреча "Проход в скале" она же "Пещера в горе" — при выходе с локации оказываешься довольно далеко от нее и прямо в скале — двигаться невозможно.
Оставил sfall 3.4 (который по умолчанию активирован в папке с игрой) загрузил ближайшее сохранение — зашел на локацию, вышел — и оказался точно зеленом кружочке.

это баг самого фола, а не сфала.
еще давно я просил этот баг исправить но он так и остался без внимания.

QUOTE
И еще странное нечто, не знаю баг или нет — если загрузить сохранение и зайти на любую ранее посещенную карту которую, однако, до этого сохранения не посещал, то на ней все будет так, как после моего посещения осталось.

чево-чево?
если загрузить и зайти на любую ранее посещенную карту
однако, до этого сохранения не посещал
то на ней все будет так, как после моего посещения
- не баг, это наркоманская галлюцинация))
Garvan
QUOTE
это баг самого фола, а не сфала.

Тогда он проявляется рандомно. Я попробовал пройти это место со старым сфалом, снова встретил пещеру, но на этот раз все было нормально.

QUOTE
еще давно я просил этот баг исправить

Присоединяюсь к просьбе. В модах этот баг может стать критичным для прохождения- как в моем случае.

QUOTE
- не баг, это наркоманская галлюцинация))

Или ясновидение — предвидение будущих событий :)
А если в сейве удалить уже посещенную карту, то все равно зайдешь на старую посещенную. Неотвратимость судьбы видать, реализована. :)
За годы игры в Fаllout столкнулся с этим первый раз в Olympus 2207.

И, кстати, авторы игры адаптировали ее под ту версию сфала которая у них в папке с игрой по умолчанию установлена (во всяком случае так написано в официальном форуме). Так что новые версии вполне могут давать какую-то несовместимость моментами. Переработано то там все основательно.



Fakeman
QUOTE
Или ясновидение — предвидение будущих событий :)
За годы игры в Fаllout столкнулся с этим первый раз в Olympus 2207.

вобще-то я не совсем и понял, что ты там написал: "зайти на ранее посещенную карту, но которую до этого не посещал, и будет так как будто ты ее уже посетил, но загружал то сейв до ее посещения."
сформулировал бы по понятнее.

QUOTE
А если в сейве удалить уже посещенную карту, то все равно зайдешь на старую посещенную.

случится выкидыш.
Garvan
QUOTE
случится выкидыш.

Только если ГГ находится на этой карте. Иначе карта загружается по новой. Во всяком случае F1-2 именно так.

QUOTE
вобще-то я не совсем и понял, что ты там написал

Например я сохраняюсь, потом захожу в первый раз за игру в бар, грохаю кого-то, потом мне этот ход не нравится.
Загружаю свой сейв (до захода в бар), снова захожу в бар и вижу что грохнутый там мирно лежит в образе трупа.
И переиграть ничего нельзя. А должна была бы загрузится свежая, нетронутая и не посещенная еще мною карта. Это явно как-то связано со сфалом.
Fakeman
если ты удалишь файл из сохранения это будет считаться нарушением целостности данных в сохранении и игра вылетит вне зависимости от того где будет гг.

QUOTE
Загружаю свой сейв (до захода в бар), снова захожу в бар и вижу что грохнутый там мирно лежит в образе трупа.

Вот теперь понятно. странная хрень конечно...
Это что за локация? бар в рэйнбоу и ты замочил там негра на входе?
надо проверить!
Foxx
Хотелось бы узнать это баг игры или нет?
Когда начинается бой, то в 1 раунде процент попадания по противнику выше, чем во 2 раунде. Проверил Fallout 1 & 2 и Fallout Nevada.
Скриншоты

Fakeman
не думаю что это баг — скорее бонус для игрока в первом ходу.
хотя может правильнее было если бы этот процент был больше только если ГГ первый начинает бой.
Foxx
Fallout: Nevada очень часто вылетает при смерти ГГ. Пробовал оригинальный sfall 3.7a, такая же фигня. Без sfall'a, нормально дохнет, без вылетов.
Вот сохранка от Невады, там в рюкзаке два яда "Коновал", чтобы смерть тестировать.
Fakeman
протестировал, нормально умирает без бага. без модов попробуй.
у тебя в сохранке в имени слота проставлена дата сохранения, это откуда такая фишка? никогда такого не встречал.
Foxx
По ходу я что-то не то в ddraw.ini включил. Попробывал сейв на сборке от Pyran вылетов нет.
Буду разбираться.
upd: Переустановил игру и глюк пропал.

Дата сохранения. AutoQuickSave у меня стоит 8, вот он по дате и записывает.
Fakeman
QUOTE
По ходу я что-то не то в ddraw.ini включил. Попробывал сейв на сборке от Pyran вылетов нет.
Буду разбираться.

желательно бы выяснить какой параметр на это влияет!
Foxx
Я ещё негров добавлял при выборе персонажа. Начал играть негром, но у него анимации какие-то некачественные оказались, и чтобы не переигрывать я в папку негра закинул анимации лысого.
Ваш ответ: