Foxx
13 March 2016 | 23:15
Я так понял, что динамит сейчас можно подкладывать и уйти на другую карту без "вылета"?
Fakeman
14 March 2016 | 01:01
Как писал крафти вылеты были после повторного выхода из карты.
- сейчас их нету.
Crafty
15 March 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).
Но потом я обнаружил ещё один крашевый баг со специфическими условиями проявления, его-то и допиливали последние дни.
Fakeman
15 March 2016 | 02:11
QUOTE |
ушёл с карты и не при делах, кто там и от чего умер |
Ну да верно))
А еще не увеличивается счетчик убитых таким способом.
А еще в режиме боя заложить взрывчатку намного легче чем в реалтайме.
А еще... в общем в двиге багов как вшей у бродячей собаки)
Поэтому не могли бы вы посмотреть почему не работает функция
obj_can_hear_obj :)
CODE |
Проверка, может ли один объект слышать другой Возвращаемое значение: TRUE - если src_obj слышит dst_obj, иначе - FALSE При проверке учитывается расстояние, текущее состояние (стоит/идёт/бежит), использование умений скрытность и др. |
Ни при каких условиях в тестах не возвращает истину.
в фоле в некоторых скиптах эта функция используется.
Crafty
15 March 2016 | 03:52
QUOTE |
Ни при каких условиях в тестах не возвращает истину. |
Исправил ;)
Fakeman
15 March 2016 | 15:06
Жаль, но она чего-то работает также как и obj_can_see_obj можно позади криттера бегать он и не узнает.
Я то думал что радиус будет круговой со всеми этими случайными проверками.
Кстати эта функция используется у слепого повара в Наварро и он должен реагировать на гг в помещении.
Phobos
16 March 2016 | 16:13
Любопытно, как именно вы исправили obj_can_see_obj и obj_can_hear_obj? Если не ошибаюсь, первая используется повсеместно (враждебность любого криттера) и менять её поведение как бы не стоит (если только опционально), а вторая судя по коду вообще не доделана, т.е. отдельной механики слуха в игре просто нет.
Подобные исправления попахивают отсебятиной :)
Fakeman
16 March 2016 | 19:35
QUOTE |
Любопытно, как именно вы исправили obj_can_see_obj |
ее вообще никто не трогал. читайте внимательнее.
QUOTE |
obj_can_hear_obj по коду вообще не доделана, т.е. отдельной механики слуха в игре просто нет. |
да, она в двиге не работает, но используется в некоторых скриптах фола.
Механика Слуха реализация ее очень проста, некий радиус вокруг криттера с учетом на карте блокирующих объектов типа 'WALL'.
Crafty
16 March 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 ;)
Fakeman
16 March 2016 | 23:46
QUOTE |
Угу, тоже так думал (хотя нужно ещё is_within_perception_ поразглядывать, что-то она меня беспокоит... ;)). Нужен только хороший скрипт, что-то вроде хукового mouseclick, чтобы внутри можно было узнать указатель на кликнутого критера. |
Да брось это дело.
Я так понял надо конкретно переписывать код ибо у нее угловой обзор, т.е. куда смотрит криттер там и "слышит", а нужно 360гр.
У меня самописная процедура есть для моих нужд, эмулирующая "слух" просто думалось что движковая рабочая и просто багнута, а тут не все так просто.
QUOTE |
Я потом потрогал, keke ;) |
негодяй! ))
Crafty
19 March 2016 | 23:37
Новая версия ;)
- Добавлены режимы возвращаемые функцией 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
20 March 2016 | 03:25
QUOTE |
и чутка подправлен obj_can_see_obj. |
Так и что ты там чутка подправил????
Легко) Подцепил скрипт к собаке поставил ей 10 восприятие и бегал во круг нее) как тока она "слышала" сразу сообщалось в логе.
QUOTE |
а вот obj_can_see_obj логически сделан неправильно можно "видеть" (глазами на затылке?) цель сзади. |
Все правильно там сделано!
оно то видит не на 10 гексов) а когда подходишь сзади практически в упор криттер начинает видеть игрока аля чувствует что сзади подошли :)
это нормально и правильно, так что obj_can_see_obj не надо трогать иначе криттеры вообще ослепнут!
QUOTE |
При этом у "видимости" не должно быть препятствий на пути, а у "слышимости" препятствия на пути могут быть. |
тут тоже ты чего напутал!
obj_can_see_obj не должен видеть через объекты и блокираторы типа Scenery/Walls.
а obj_can_hear_obj по идеии должен "слышать" только через объекты/блокираторы типа Scenery, а тип Walls должны блокировать.
А еще у объектов есть флаг видимости через них! это тоже должно учитываться.
Вот за вот это спасибо!
Как работает без глюков? :)
Crafty
20 March 2016 | 15:37
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
20 March 2016 | 16:21
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
30 March 2016 | 01:35
Есть какая-то странность при пере компиляции проекта начиная с версии 1.5.7(и выше) в игре возникают баги, а именно при подключенном файле Stats.ini(даже пустом) в инвентаре не отображаются некоторые итемы(нет картинки). при выходе из игры возникает стандартная ошибка "память не может ляляля", возможно еще есть какие-то сопутствующие баги, заметил только это.
При этом на твоих скомпилированных дллках бага не возникает.
Изменения в код проекта не вносил, и без разницы какую версию создаешь TRACE/RELEASE, при компиляции никаких ошибок не возникает.
В чем такой косяк при компиляции на другой системе/машине?
все младшие версии компилируются без бага.
Где-то ты допустил ошибку в stats.cpp
Fakeman
30 March 2016 | 17:10
в общем не "хитрыми" манипуляциями удалось выявить баг
вернул старые процедуры из 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
30 March 2016 | 19:56
QUOTE |
Где-то ты допустил ошибку в stats.cpp |
Верно, исправил. Спасибо ;)
QUOTE |
При этом на твоих скомпилированных дллках бага не возникает. |
А вот это странно.
Foxx
30 March 2016 | 20:42
Crafty можно ли изменить клавиши "Быстрое сохранение" на F5, а "Быструю загрузку" на F9.
Fakeman
30 March 2016 | 22:20
Ну может баг в чем-то другом проявлялся это же дело такое непредсказуемое)
в моем случае баг вылазил наружу, если при отрытом инвентаре выполнить функцию create_object_sid.
Crafty
31 March 2016 | 02:51
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
31 March 2016 | 13:54
QUOTE |
Вот hs_keypress.ssl: |
О это ты замечательно придумал!
только я вот думаю что мистер Фокс не понимает в скриптах)
посмотри еще функции get_screen_height/get_screen_width
суть бага, если сменить разрешение без перезагрузки игры, то функции будут возвращать предыдущее разрешение окна/экрана, можно это подправить?
если там придется много ковырять то не надо.
Pyran
31 March 2016 | 16:13
Заметил такую вещь RP ругается на несоответствие ddraw.ini при использовании Crafty 1.6 / 1.6.7 при использовании 1.5 молчит.
Fakeman
31 March 2016 | 16:44
QUOTE |
Заметил такую вещь RP ругается на несоответствие ddraw.ini при использовании Crafty 1.6 / 1.6.7 при использовании 1.5 молчит. |
в одной из твоей сборок с 3.6 sfall'ом такая же байда писалась, ini я не трогал.
имхо пусть в самом рп вырубят эту ни к чему ненужную проверку.
Grafty убей этот опкод что-бы больше недоставало никого это сообщение)
хах глянул исходник да ты его почти убил но этот гад еще полуживой добей его)))
Для чего ты весь исходный код переписываешь? это же ты представь сколько ошибок мог наделать!
Foxx
31 March 2016 | 18:39
В скриптах я полный ноль, но версия изменилась на .0.7.
Mr. Сталин можешь добавить в версию SE.
Fakeman
31 March 2016 | 19:23
QUOTE |
Mr. Сталин можешь добавить в версию SE. |
это надо отдельный скриптом.
может тогда ф6 на ф8 кинуть?
логично же получается
ф4 сохран.
ф5 быстрое сохран.
...
ф8 загрузка
ф9 быстрое загрузка
Foxx
31 March 2016 | 19:59
Именно, что F5 и F9 стандарт для нынешних игр (палец так и тянется, привычка).
Fakeman
31 March 2016 | 20:21
так я тебе про ф6(это загрузка, которая была на ф5) на ф8 перекинуть?
Crafty
1 April 2016 | 00:23
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
1 April 2016 | 03:16
QUOTE |
Может позже верну обработку переменной ModifiedIni (хоть и не вижу в этом смысла)... |
Верно! нет смысла от этого Modified_Ini, к тому-же есть рабочие аналоги get_ini_*
если бы он дату изменения файла возвращал было бы другое дело.
QUOTE |
А сколько исправить :-p |
ага и жизни не хватит, что бы избавить фол от багов)
Вот к примеру обработчик damage_p_proc привязанный к объекту двери если гг по ним промазывает то он все равно гад срабатывает.
Crafty
2 April 2016 | 00:57
QUOTE |
ага и жизни не хватит, что бы избавить фол от багов) |
Не, тут речь именно о коде sfall.
QUOTE |
Вот к примеру обработчик damage_p_proc привязанный к объекту двери если гг по ним промазывает то он все равно гад срабатывает. |
Не баг, так задумано.
Если у цели, получившей повреждения, есть скрипт, то сработает damage_p_proc, но функция, которая выводит в монитор сообщения игнорирует цели, если они не являются персонажами и вместо "правильного" промаха ("Ой! Стена получает удар вместо намеченной цели (Нарк)!") сообщает о фальшивом промахе ("Вы : промах").
Подправил, если цель дверь и у неё есть скрипт , то в мониторе вместо фальшивого промаха будет "правильный" ("Ой! Деревянная дверь получает удар вместо намеченной цели (Нарк)!").
PS. Хотя можно было оставить и первый вариант (цель не персонаж и у неё есть скрипт) без проверки что цель является дверью со скриптом.
Fakeman
2 April 2016 | 02:46
QUOTE |
но функция, которая выводит в монитор сообщения игнорирует цели, если они не являются персонажами и вместо "правильного" промаха ("Ой! Стена получает удар вместо намеченной цели (Нарк)!") сообщает о фальшивом промахе ("Вы : промах"). Подправил, теперь если цель не персонаж, но у неё есть скрипт , то в мониторе вместо фальшивого промаха будет сообщаться о "правильном". |
чево-чево-чево... наркоман!))
пойду на практике проверю)
Отправлено: 2 апр 16 02:57
Проверил ничего не поменялось игрок бьет кулаком по двери, промахивается но дверь выносит. (можешь даже в неваде проверить на некоторых дверях.)
QUOTE |
Подправил, теперь если цель не персонаж, но у неё есть скрипт , то в мониторе вместо фальшивого промаха будет сообщаться о "правильном". |
а можно разъяснения, что за 'правильный' промах такой? :)
QUOTE |
Не баг, так задумано. |
Да ну... наркоманская задумка!
На дверях(объекте) этот как-то вообще странно работает, если игрок бьет по дверям оружием(кувалдой допустим) то это сообщением/звуком вообще никак не проявляется т.е. как удар в никуда, но обработчик на дверях всегда срабатывает, вне зависимости попал ли по двери ГГ.
В общем я понял что ты поправил но я говорил о другом.
Crafty
2 April 2016 | 16:29
QUOTE |
Проверил ничего не поменялось игрок бьет кулаком по двери, промахивается но дверь выносит. (можешь даже в неваде проверить на некоторых дверях.) |
Всё, на неваде уловил о чём речь ;) В чистом F2 тестировал.
QUOTE |
а можно разъяснения, что за 'правильный' промах такой? :) |
Выше же написано. Если пулю ловит не главная цель, а случайная и это не персонаж, то движок пишет о "фальшивом" промахе, хотя тут был "правильный" промах.
В твоём примере если цель стоит рядом со скриптовой дверью, ты стреляешь в цель, но попадаешь в дверь, которая разлетается. Без исправления в движке для игрока это выглядит нелепо стрелял в персонажа, игра сообщает о промахе ("Вы : промах"), но при этом уничтожается дверь.
QUOTE |
QUOTE | Не баг, так задумано. |
Да ну... наркоманская задумка! На дверях(объекте) этот как-то вообще странно работает, если игрок бьет по дверям оружием(кувалдой допустим) то это сообщением/звуком вообще никак не проявляется т.е. как удар в никуда, но обработчик на дверях всегда срабатывает, вне зависимости попал ли по двери ГГ. |
Таки ты прав баг в движке: для не_персонажа перед вызовом damage_p_proc нет проверки что попадание действительно было, а потому damage_p_proc срабатывает и при промахах. Добавил проверку ;)
Ну и при выводе в монитор вернул первый вариант для фальшивых промахов цель не персонаж и у неё есть скрипт.
Fakeman
3 April 2016 | 18:03
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
4 April 2016 | 14:39
Crafty, я ставлю Вашу последнюю версию sfall на Olympus 2207 и примерно после трети игры появляется такой баг: в случайных встречах все начинают агриться. Приходится убивать всех подряд и становиться злодеем. Особенно это досадно на особых случайных встречах, где бывает и квесты дают.
Порывшись в сети понял, что такая проблема есть не только у меня, просто многие мочат всех кого встретят не особо заморачиваясь.
Проверял три раза играя то с Вашим sfall 1.5.7, то с имеющимся в папке игры sfall 3.4.1.305 с Вашим sfall этот баг неизбежен, что конечно очень жаль учитывая насколько он удобнее и функциональнее.
С этим можно что-то сделать?
Fakeman
4 April 2016 | 16:05
QUOTE |
Проверял три раза играя то с Вашим sfall 1.5.7, с Вашим sfall этот баг неизбежен С этим можно что-то сделать? |
точно 1.5.7 ? если да то заменить версию на sfall 1.6.7
если можешь выложи свое сохранение.
Garvan
4 April 2016 | 21:50
Да, точно, сейчас проверил 1.5.7. недавно качал отсюда, была самая новая. Скачаю 1.6.5 попробую поиграть и отпишусь.
Сейв сделать нужно, если баг себя проявит в новой версии? По старой, как я понимаю уже не актуально?
Fakeman
4 April 2016 | 22:12
да если баг останется то сохранение не важно из какой версии "сделаешь".
Garvan
5 April 2016 | 14:46
Словил новый баг в Olimpus 2207 при использовании sfall 1.6.7
Особая случайная встреча "Проход в скале" она же "Пещера в горе" при выходе с локации оказываешься довольно далеко от нее и прямо в скале двигаться невозможно.
Оставил sfall 3.4 (который по умолчанию активирован в папке с игрой) загрузил ближайшее сохранение зашел на локацию, вышел и оказался точно зеленом кружочке.
Оба сохранения есть, но не знаю как их к сообщению прикрепить. У меня нет такой функции.
И еще странное нечто, не знаю баг или нет если загрузить сохранение и зайти на любую ранее посещенную карту которую, однако, до этого сохранения не посещал, то на ней все будет так, как после моего посещения осталось. Но я ведь загрузил сейв ДО посещения этой карты.
Касательно агрессивности всех при случайных встречах пока нет такого. вернее один раз на меня набросился "Одинокий путник", но при следующей встрече с ним же был спокоен и предлагал мне тоже не волноваться.
Надо еще поижграть ,так как этот баг проявляется не сразу.
Fakeman
5 April 2016 | 17:36
QUOTE |
Особая случайная встреча "Проход в скале" она же "Пещера в горе" при выходе с локации оказываешься довольно далеко от нее и прямо в скале двигаться невозможно. Оставил sfall 3.4 (который по умолчанию активирован в папке с игрой) загрузил ближайшее сохранение зашел на локацию, вышел и оказался точно зеленом кружочке. |
это баг самого фола, а не сфала.
еще давно я просил этот баг исправить но он так и остался без внимания.
QUOTE |
И еще странное нечто, не знаю баг или нет если загрузить сохранение и зайти на любую ранее посещенную карту которую, однако, до этого сохранения не посещал, то на ней все будет так, как после моего посещения осталось. |
чево-чево?
если загрузить и зайти на любую ранее посещенную карту
однако, до этого сохранения не посещал
то на ней все будет так, как после моего посещения
- не баг, это наркоманская галлюцинация))
Garvan
5 April 2016 | 21:26
QUOTE |
это баг самого фола, а не сфала. |
Тогда он проявляется рандомно. Я попробовал пройти это место со старым сфалом, снова встретил пещеру, но на этот раз все было нормально.
QUOTE |
еще давно я просил этот баг исправить |
Присоединяюсь к просьбе. В модах этот баг может стать критичным для прохождения- как в моем случае.
QUOTE |
- не баг, это наркоманская галлюцинация)) |
Или ясновидение предвидение будущих событий :)
А если в сейве удалить уже посещенную карту, то все равно зайдешь на старую посещенную. Неотвратимость судьбы видать, реализована. :)
За годы игры в Fаllout столкнулся с этим первый раз в Olympus 2207.
И, кстати, авторы игры адаптировали ее под ту версию сфала которая у них в папке с игрой по умолчанию установлена (во всяком случае так написано в официальном форуме). Так что новые версии вполне могут давать какую-то несовместимость моментами. Переработано то там все основательно.
Fakeman
5 April 2016 | 23:40
QUOTE |
Или ясновидение предвидение будущих событий :) За годы игры в Fаllout столкнулся с этим первый раз в Olympus 2207. |
вобще-то я не совсем и понял, что ты там написал: "зайти на ранее посещенную карту, но которую до этого не посещал, и будет так как будто ты ее уже посетил, но загружал то сейв до ее посещения."
сформулировал бы по понятнее.
QUOTE |
А если в сейве удалить уже посещенную карту, то все равно зайдешь на старую посещенную. |
случится выкидыш.
Garvan
6 April 2016 | 02:23
Только если ГГ находится на этой карте. Иначе карта загружается по новой. Во всяком случае F1-2 именно так.
QUOTE |
вобще-то я не совсем и понял, что ты там написал
|
Например я сохраняюсь, потом захожу в первый раз за игру в бар, грохаю кого-то, потом мне этот ход не нравится.
Загружаю свой сейв (до захода в бар), снова захожу в бар и вижу что грохнутый там мирно лежит в образе трупа.
И переиграть ничего нельзя. А должна была бы загрузится свежая, нетронутая и не посещенная еще мною карта. Это явно как-то связано со сфалом.
Fakeman
6 April 2016 | 03:22
если ты удалишь файл из сохранения это будет считаться нарушением целостности данных в сохранении и игра вылетит вне зависимости от того где будет гг.
QUOTE |
Загружаю свой сейв (до захода в бар), снова захожу в бар и вижу что грохнутый там мирно лежит в образе трупа. |
Вот теперь понятно. странная хрень конечно...
Это что за локация? бар в рэйнбоу и ты замочил там негра на входе?
надо проверить!
Foxx
6 April 2016 | 03:44
Хотелось бы узнать это баг игры или нет?
Когда начинается бой, то в 1 раунде процент попадания по противнику выше, чем во 2 раунде. Проверил Fallout 1 & 2 и Fallout Nevada.
Скриншоты
Fakeman
6 April 2016 | 14:02
не думаю что это баг скорее бонус для игрока в первом ходу.
хотя может правильнее было если бы этот процент был больше только если ГГ первый начинает бой.
Foxx
6 April 2016 | 14:28
Fallout: Nevada очень часто вылетает при смерти ГГ. Пробовал оригинальный sfall 3.7a, такая же фигня. Без sfall'a, нормально дохнет, без вылетов.
Вот сохранка от Невады, там в рюкзаке два яда "Коновал", чтобы смерть тестировать.
Fakeman
6 April 2016 | 15:20
протестировал, нормально умирает без бага. без модов попробуй.
у тебя в сохранке в имени слота проставлена дата сохранения, это откуда такая фишка? никогда такого не встречал.
Foxx
6 April 2016 | 15:27
По ходу я что-то не то в ddraw.ini включил. Попробывал сейв на сборке от Pyran вылетов нет.
Буду разбираться.
upd: Переустановил игру и глюк пропал.
Дата сохранения. AutoQuickSave у меня стоит 8, вот он по дате и записывает.
Fakeman
6 April 2016 | 17:30
QUOTE |
По ходу я что-то не то в ddraw.ini включил. Попробывал сейв на сборке от Pyran вылетов нет. Буду разбираться. |
желательно бы выяснить какой параметр на это влияет!
Foxx
6 April 2016 | 17:51
Я ещё негров добавлял при выборе персонажа. Начал играть негром, но у него анимации какие-то некачественные оказались, и чтобы не переигрывать я в папку негра закинул анимации лысого.