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


Фотография

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


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

#601 Foxx

Foxx

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

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

Отправлено 08 октября 2016 - 01:10

QUOTE (Fakeman)
GVAR 491 GVAR_MODOC_SHITTY_DEATH — для каких целей она обрабатывается.
Чтобы воспроизвести озвучку смерти (https://yadi.sk/i/U86ZQt8hvKAHQ) во время взрыва в туалете Модока.
QUOTE (Fakeman)
У тебя в Changelogе не все исправления и добавления написаны. Не хватает.
Исправление obj_can_see_obj и obj_can_hear_obj
Исправление неправильной инициализации очков действия в начале каждого хода.
Эти я точно видел))

Это сообщение отредактировано Foxx - 8 октября 2016 | 02:10


#602 Crafty

Crafty

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

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

Отправлено 08 октября 2016 - 02:05

QUOTE (Fakeman)
Вопрос, можно ли увеличить скорость внутри-игрового времени в игре, без увеличения скорости анимации и п.р. или на этих тиках в движке завязано все-и-вся ?
Речь об этом? Если правильно улавливаю смысл, то увеличивать через переменную скорость "течения" времени? Это возможно, но с побочным эффектом (хотя это нормально) — все timed_event_p_proc тоже будут работать быстрее (к примеру, Вик чаще болтает флоатами).

QUOTE (Fakeman)
И почини пути Шейдеров — не работают после правки путей, видать не находит путь master_patches=data
Ага, ty ;) Не те проверки поставил и до master_patches дело даже не доходило.

QUOTE (Fakeman)
это что движковая гвара? — для каких целей она обрабатывается.
Foxx нашёл причину и решение (с помощью правки enddeath.txt) крашей в Неваде после смерти ГГ.
Сама гвара после смерти ГГ в Модоке из-за взрыва туалета используется для проигрывания конкретного финала и для этого он должен быть определён в enddeath.txt, а в Невадовском его нет.

QUOTE (Fakeman)
какие такие sound files, такие разве есть?
Не вникал...

QUOTE (Fakeman)
Не в курсе для чего эти???
QUOTE
QUOTE
UseFileSystemOverride=0, в Olympus включена, а в других модах нет. Каково её назначение?
"Нипанятная" хрень, не изучал, при беглом взгляде — вместо движковых функций работающих с файлами использует функции винды. Опять же при беглом взгляде не советую включать если включён хиромод (позже исправлю это в хиромоде как и планировалось).

AlwaysReloadMsgs — по коду убивает проверку загружен ли файл c сообщениями для скрипта в память (В F2 файлы загружаются один раз на карту, а потом обрабатываются из памяти ©), таким образом постоянно перезагружая содержимое файла при каждом обращении к нему. Полагаю что было сделано для отладки нужного msg-файла без перезагрузки игры после его изменения.
А вообще почекай форум nma по ключевым словам, правда иногда сложновато найти нужную инфу.

QUOTE (Fakeman)
у тебя кстати их нет в конфиге.
Есть, намедни как раз стало интересно все ли переменные, что обрабатываются dll'кой, есть в ini. Вот этих нет:
QUOTE
MainMenuCreditsOffsetX
MainMenuCreditsOffsetY
MainMenuOffsetX
MainMenuOffsetY
Test_ForceFloats


#603 Fakeman

Fakeman

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

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

Отправлено 08 октября 2016 - 02:33

QUOTE (Crafty)
Если правильно улавливаю смысл, то увеличивать через переменную скорость "течения" времени? Это возможно, но с побочным эффектом (хотя это нормально) — все timed_event_p_proc тоже будут работать быстрее

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

И еще я могу там в коде использовать регистр edx в нем не храниться полезных данных?
CODE
jz   notCombat
shl  eax, 1                               // eax = восприятие * 2
notCombat:

я попробовал на *3, и что-то многовато) думаю надо множить на ~2.5


#604 Crafty

Crafty

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

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

Отправлено 08 октября 2016 - 04:12

QUOTE (Fakeman)
Сколько не пытался так, и не увидел и не понял в чем конкретно заключается твой фикс, они как бегали на расстояние ВС х 2 х 2.5 = гексов через стенки так и продолжают.
Так не настолько изменяет механику, что сразу видно. Вот потому и попробуй hs_withinperception с оригинальным аналогом (расскоменти отладочный display_msg, а "return result" закомментирй или измени на "return original") и CanSeeAndHearFix=1.
Я, кстати, в obj_can_hear_obj добавлю принудительную установку слепоты перед вызовом is_within_perception_ с восстановлением после. А то всё равно у меня пригорает от названия и результата, если source зрячий.

QUOTE (Fakeman)
Можешь на словах описать как должны стоять НПЦ, кто на кого должен смотреть, через стену или нет, чтоб хотя бы на живом примере увидеть это.
Ставишь ГГ и двух врагов с одной team_num — врага (target1) который смотрит на ГГ, за ним второго (target2) и он смотрит на target1. Между ними Wall без LightThru и расстояние между врагами равно восприятию target2 умноженному на 2 и плюс ещё пару гексов (если у target2 восприятие равно 10, то 10*2+2=22). Стреляешь в target1 и смотришь на реакцию target2 при разном значении CanSeeAndHearFix. Ну или в Реддинге к королеве ванаминго сходи.

QUOTE (Fakeman)
У тебя в Changelogе не все исправления и добавления написаны. Не хватает.
Забываю, иногда не вижу смысла, а чаще не могу подобрать короткую формулировку и чтобы было понятно. Ну и лень конечно :-p

QUOTE (Fakeman)
Исправление сдвига положения курсора ГГ на глобальной карте, при выходе из локации.
Не до конца доделано — можно портануться в маленькую локацию с несколькими зонами, походить там и выйдя на глобальную всё равно словить неправильную позицию курсора. Не проверял, теория.

QUOTE (Fakeman)
Что-то там со скриптовой анимацией Amin в бою.
Штука прикольная, но откровенно говоря бесполезная...

QUOTE (Fakeman)
Исправление минусовых очков SPECIAL при создании персонажа.
Нужно доделать из-за set_stat_max/set_pc_stat_max. Опять же, как его описать, при том что в обычной игре нельзя добиться минусовых очков.

QUOTE (Fakeman)
Кстати вот это зачем в ТRACE поместил, вроде нормальный баг исправляет.
// Исправление вызова damage_p_proc при промахах если цель не_персонаж
QUOTE
#ifndef TRACE
Наоборот, в релизной версии исправляет, а в отладочной нет — для какой-то отладки парой страниц назад.

QUOTE (Fakeman)
К этой бы тоже переменную замутил. Вроде не сложно.
// Исправление видимости предмета только в активной руке игрока для critter_inven_obj
Нет смысла, только загрузит игрока. Скриптеру же сейчас проще напрямую узнавать предметы в руках через:
CODE
call_offset_r1(0x471B70, ObjectPtr who); // inven_right_hand_
call_offset_r1(0x471BBC, ObjectPtr who); // inven_left_hand_

QUOTE (Fakeman)
Кстати combat_is_starting_p_proc очень даже пригодился мне.
Так крутая штука на самом деле. Если нормально скрипты окружающим сделать. ГГ тыкнул на бой (случайно или не очень), а окружающие нпс если ГГ в их радиусе видимости/cлышимости могут карму/репутацию понижать, что-то говорить, убегать или сами атаковать. Или шериф какой может арестовать и в тюрьму посадить, за дерзость ;)

QUOTE (Fakeman)
это что сфалл головы PNG формата поддерживает?!!!
или что он такое делает с этими PNG файлами.
Мопед не мой :-p

QUOTE (Fakeman)
это ты о какой переменной — нет вроде такой.
Ну добавлю что-то вроде TimeScale.

QUOTE (Fakeman)
ну я вот в чем и вопрос, хотел чтобы время шло быстрее а все тики остались такими-же.
Так и будет.

QUOTE (Fakeman)
да и отбой я тут вспомнил, что в игре есть таймеры для уст.ловушек, сейчас как раз одна игровая минута равна примерно реальной, и если это дело увеличить то получится бардак.
Не, просто нужно увеличивать время на таймере чтобы успеть установить ловушку.

QUOTE (Fakeman)
И еще я могу там в коде использовать регистр edx в нем не храниться полезных данных?
Можешь иногда.

QUOTE (Fakeman)
я попробовал на *3, и что-то многовато) думаю надо множить на ~2.5
CODE
jz   notCombat
shr  eax, 1
lea  eax, [eax+ebp*2]
notCombat:

или

  if combat_is_initialized then distance := perception * 2.5;


#605 Fakeman

Fakeman

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

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

Отправлено 08 октября 2016 - 17:05

QUOTE
Ставишь ГГ и двух врагов с одной team_num — врага...Стреляешь в target1 и смотришь на реакцию target2 при разном значении CanSeeAndHearFix.

Ну я так и делал и никакой разницы не увидел!
вот даже записал Тест
Все поставил как ты написал, нпц в чер.кожанках вс=5, у синего вс=7
когда стреляю верхний в кожанке бежит.
и кстати вон та "баба в кожанке" у нее тоже вс=5 и почему тот мужик который стоит к нам задом(вернее боком, но даже если его четко задом повернуть к гг) реагирует на бой, а она стоит, между ГГ и ними 12+ гексов почему так?

CODE
shr  eax, 1
lea  eax, [eax+ebp*2]

Да ты просто гений ассемблера)
я то пересылал в edx потом сдвигал в право, и прибавлял.

QUOTE
QUOTE (Fakeman)
Что-то там со скриптовой анимацией Amin в бою.
Штука прикольная, но откровенно говоря бесполезная...

Мне кажется я тебя зря тогда дергал по этому поводу, так как сфал вроде как (не тестировал) может воспроизводить анимацию во время боя. :P

QUOTE
Foxx нашёл причину и решение (с помощью правки enddeath.txt)

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

Это сообщение отредактировано Fakeman - 8 октября 2016 | 19:06


#606 Crafty

Crafty

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

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

Отправлено 08 октября 2016 - 23:24

QUOTE (Fakeman)
Ну я так и делал и никакой разницы не увидел!
вот даже записал Тест
Все поставил как ты написал, нпц в чер.кожанках вс=5, у синего вс=7
когда стреляю верхний в кожанке бежит.
и кстати вон та "баба в кожанке" у нее тоже вс=5 и почему тот мужик который стоит к нам задом(вернее боком, но даже если его четко задом повернуть к гг) реагирует на бой, а она стоит, между ГГ и ними 12+ гексов почему так?
Есть же hs_withinperception.ssl, расширь отладочные сообщения, добавь дополнительные проверки и увидишь что и как.
К примеру, добавь проверку боя, проверку на пиды конкретных персонажей или чтобы выводились сообщения только для персонажей в радиусе 50 гексов:
CODE
if combat_is_initialized and ((call_offset_r2(0x48BBD4, dude_obj, source) <= 50) or (call_offset_r2(0x48BBD4, dude_obj, target) <= 50)) then
display_msg(obj_name(source)+":"+perception+"->"+obj_name(target)+":"+call_offset_r2(0x48BBD4, target, source));

QUOTE (Fakeman)
да этот файл странный какой-то, то что там описано о его формате параметров никак не реагирует — грубо говоря он своей жизнью живет.
Всё с ним в порядке, смерть от GVAR 491 — особый случай и параметры игнорируются.


#607 Fakeman

Fakeman

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

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

Отправлено 09 октября 2016 - 00:30

QUOTE
Всё с ним в порядке, смерть от GVAR 491 — особый случай и параметры игнорируются.

Я то понял, что с 491 игнорятся параметры, но я обнулял эту гвару пробовал добавлять новые строчки с другими гварами и 0 реакции на них.
Не очень понятно как движок работает с данными этого файла.

QUOTE
Есть же hs_withinperception.ssl,

что ж придется)


#608 Crafty

Crafty

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

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

Отправлено 09 октября 2016 - 16:57

QUOTE (Fakeman)
Не очень понятно как движок работает с данными этого файла.
При загрузке игры создаётся массив с данными файла enddeath.txt в виде структур. При смерти ГГ этот массив обрабатывается со всеми проверками — определена ли gvar и >= ли она значению value, проверяются, если определены, worldAreaKnown и worldAreaNotKnown, а потом проверка уровня. Если удачно, то структуре ставится флажок использования, а значение % шанса добавляется к счётчику (назовём его maxChance, перед обработкой массива он равен 0).
После обработки всего массива кидается кубик (random(0, maxChance)) и результат используется для выбора структуры с флажком использования.

К примеру после обработки с флажком использования остались только 5 структур, которые соответствуют:
QUOTE
-1, 0, -1, -1, 0, 20, nar_4
-1, 0, -1, -1, 0, 20, nar_5
-1, 0, -1, -1, 0, 20, nar_6
-1, 0, -1, -1, 0, 20, nar_dth1
-1, 0, -1, -1, 0, 20, nar_dth2
maxChance равен 100 (20+20+20+20+20), а результат кубика допустим 67. В результате будет использован nar_dth1.


#609 Foxx

Foxx

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

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

Отправлено 09 октября 2016 - 17:11

QUOTE (Crafty)
maxChance равен 100 (20+20+20+20+20), а результат кубика допустим 67. В результате будет использован nar_dth1.
А maxChance в сумме должен обязательно равняться 100 или без разницы?


#610 Fakeman

Fakeman

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

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

Отправлено 09 октября 2016 - 17:58

Ясно-понятно, но "заставка" смертей бывает, что и не появляется и довольно часто, это типа бросок кубика попал на 0% ?)

QUOTE
А maxChance в сумме должен обязательно равняться 100 или без разницы?

нет это сумма всех %
CODE
а значение % шанса добавляется к счётчику, назовём его maxChance

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

по hs_withinperception, я могу поменять эти функции на скриптовые, или есть какие-то особенности?
CODE
call_offset_r2(0x48BBD4, target, source) //obj_dist_(target, source)  на tile_distance_objs
call_offset_r0(0x42E3F4) then begin // is_pc_sneak_working  на using_skill(dude_obj,SKILL_SNEAK)

И что проверяет вот этот call, flag Sneak ?
call_offset_r1(0x42E2F8, 0) // is_pc_flag_(Sneak_)


QUOTE (Cafty)
Нет смысла, только загрузит игрока. Скриптеру же сейчас проще напрямую узнавать предметы в руках через:CODE
call_offset_r1(0x471B70, ObjectPtr who); // inven_right_hand_
call_offset_r1(0x471BBC, ObjectPtr who); // inven_left_hand_

Это же небезопасные функции ;p

Это сообщение отредактировано Fakeman - 9 октября 2016 | 18:45


#611 Crafty

Crafty

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

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

Отправлено 09 октября 2016 - 22:23

Усложним задачку :-p
К примеру после обработки с флажком использования остались только 8 структур, которые соответствуют:
QUOTE
-1, 0, -1, -1, 0, 20, nar_4
-1, 0, -1, -1, 0, 20, nar_5
-1, 0, -1, -1, 0, 20, nar_6
-1, 0, -1, -1, 0, 20, nar_dth1
-1, 0, -1, -1, 0, 20, nar_dth2
-1, 0, -1, 16, 0, 40, nar_dth3
-1, 0, -1, 16, 0, 40, nar_dth4
-1, 0, -1, 16, 0, 40, nar_dth5
Чему равен maxChance и какой файл будет проигрываться если бросок кубика равен 133?

QUOTE
obj_dist_(target, source)  на tile_distance_objs
obj_dist_, в отличии от tile_distance_objs, уменьшает на 1 расстояние если у target установлен MultiHex и ещё на -1 если у source тоже установлен MultiHex.

QUOTE
is_pc_sneak_working  на using_skill(dude_obj,SKILL_SNEAK)
using_skill(dude_obj,SKILL_SNEAK) это тоже самое что и is_pc_flag_(Sneak_) (не хотел тратить время на поиск скриптовых аналогов когда делал hs_withinperception.ssl, было проще через call_offset_*). Но это не то же самое что is_pc_sneak_working_.
Включённая скрытность не означает что она работает. Где-то было описание, но я не найду. В F1 скрытность сделана так — нажимаешь 1 и она включается, при этом идёт проверка на скилл (аналог roll_vs_skill) и результат заносится в переменную, которую возвращает is_pc_sneak_working_ и используется в is_within_perception_ (а в F2 ещё в том же roll_vs_skill при проверке на воровство, добавляя +30 к воровству если скрытность работает). После чего, пока включена скрытность, каждую минуту будет происходить проверка на рабочее состояние. В F2 посложнее — проверка через минуту если предыдущий результат >= ROLL_SUCCESS, в противном случае там зависимость от скилла — чем выше скилл, тем чаще будет следующая проверка при неудаче в последней проверке (если скилл <= 80, то через минуту, а при скилле > 250 через 10 секунд).
Давно баловался и делал чтобы индикатор скрытности менял цвет с зелёного на красный и наоборот при рабочем/нерабочем состоянии скрытности. Но больно читерно и можно эксплоитить, потому что нет штрафа на включение/выключение скрытности.

PS. Описание using_skill в BIS_help неверное — using_skill(dude_obj, SKILL_SNEAK) и только так, любой другой who или skill всегда вернёт false/0. Также использование в скриптах roll_vs_skill(dude_obj, SKILL_SNEAK, 0) лишено смысла, потому как может не соответствовать текущему [не]рабочему состоянию скрытности используемому движком. Кстати, как оказалось, скриптовый аналог is_pc_sneak_working_ в sfall добавили в версии 3.5 — sneak_success (но он не очень правильный...).

Это сообщение отредактировано Crafty - 9 октября 2016 | 22:28


#612 Fakeman

Fakeman

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

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

Отправлено 09 октября 2016 - 22:38

QUOTE
Чему равен maxChance и какой файл будет проигрываться если бросок кубика равен 133?

maxChance=220
nar_dth3
CODE

-1, 0, -1, -1, 0, 20, nar_4            //0(1)-20
-1, 0, -1, -1, 0, 20, nar_5            //21-40
-1, 0, -1, -1, 0, 20, nar_6            //41-60
-1, 0, -1, -1, 0, 20, nar_dth1        //61-80
-1, 0, -1, -1, 0, 20, nar_dth2        //81-100
-1, 0, -1, 16, 0, 40, nar_dth3        //101-140
-1, 0, -1, 16, 0, 40, nar_dth4        //141-180
-1, 0, -1, 16, 0, 40, nar_dth5        //...220

Ну что я правильно понял?)

Это сообщение отредактировано Fakeman - 9 октября 2016 | 22:42


#613 Crafty

Crafty

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

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

Отправлено 09 октября 2016 - 22:44

QUOTE (Fakeman)
Ну что я правильно понял?)
Ага ;)


#614 Fakeman

Fakeman

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

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

Отправлено 09 октября 2016 - 22:58

Тогда почему не всегда появляется картинка со смертью?

Честно говоря реализация у этого .txt не очень, потому как получается что нельзя сделать еще одну специальную "смерть" как от 491 гвары с определенными условиями, вернее она будет но рандомно.

Ладно, замути нам фишку.
Я на гитхабе видел предложение для сфала, чтобы была возможность узнать какие патроны заряжены в оружие находящиеся в активной руке не заходя в инвентарь, выводить инфу можно в инф.окно по клику бинокля на ГГ.
полезно для случаев когда в руках есть два одинаковых ствола с разными патронами.

Это сообщение отредактировано Fakeman - 9 октября 2016 | 23:19


#615 Crafty

Crafty

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

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

Отправлено 10 октября 2016 - 02:52

QUOTE (Fakeman)
Тогда почему не всегда появляется картинка со смертью?
Хз, к тому же не помню у себя такого, а изучать (пустяковый же недостаток, если он действительно есть) — только время терять :-p

QUOTE (Fakeman)
Ладно, замути нам фишку.
Там вроде разговор шёл о выводе типа патронов в кнопку активного предмета, где картинка с оружием (кому охота тыкать биноклем в ГГ?). Есть это в списке на будущее, но времени нет.


#616 Foxx

Foxx

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

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

Отправлено 10 октября 2016 - 14:01

Crafty, я так понял скрипты типа gl*.int и hs_*.int — нельзя запаковывать к примеру в patch001.dat?

Это сообщение отредактировано Foxx - 10 октября 2016 | 14:01


#617 Fakeman

Fakeman

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

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

Отправлено 10 октября 2016 - 15:11

Нет. Сфалл неумеет копашится а архивах.
В олимпе кстати их случайно запаковали, и если лежали скрипты в дата и в пач.дат разные версии то каким-то странным образом это начинало глючить, мне их тогда приходилось вырезать из олимповского patch.dat.

QUOTE
Там вроде разговор шёл о выводе типа патронов в кнопку активного предмета, где картинка с оружием (кому охота тыкать биноклем в ГГ?

Не стои засорять лишней информацией картинку с оружием — там все органично реализованно :)
Кому надо тот тыкнет — жизнь заставит.
Можно для бинокля придумать ноткей)

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


#618 Foxx

Foxx

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

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

Отправлено 10 октября 2016 - 15:23

QUOTE (Fakeman)
Нет. Сфалл неумеет копашится а архивах.
Спасибо. Но это относится только к скриптам или sFall еще с какими-нибудь данными работает?

Просто хотел попробовать файлы RP в patch.dat засунуть, но побаиваюсь))

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


#619 Fakeman

Fakeman

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

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

Отправлено 10 октября 2016 - 15:26

Все что относится к сфалу — не надо паковать.
Рсх картинки тоже.
РП паковать в ратн.дат не работоспособная идея, онли в мастер.дат пакуй.

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


#620 Foxx

Foxx

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

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

Отправлено 10 октября 2016 - 15:36

QUOTE (Fakeman)
Все что относится к сфалу — не надо паковать. Рсх картинки тоже.
Знать бы еще, что к нему относится — знаю только шейдеры и скрипты))
А sFall скрипты должны обязательно называться gl_****, hs_**** или могут писаться слитно gl****, hs**** (без _ )

Кстати PCX-картинки я паковал и они нормально себя ведут.

Это сообщение отредактировано Foxx - 10 октября 2016 | 15:52




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

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


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

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

Рейтинг@Mail.ru