Crafty
20 September 2017 | 20:36
QUOTE (Fakeman) |
А это что конструкция рабочая? |
Рабочая, но было не очень понятно как именно, ещё и якобы в стек помещается, что совсем неверно. И с [им|экс]портируемыми и критическими функциями нельзя использовать.
QUOTE (Fakeman) |
А критические блоки тоже работают? |
Работают.
QUOTE (Fakeman) |
И это поведение вызовов тоже относится к движку фола?CODE | Procedure2 will begin execution immediately after Procedure1 begins execution but possibly before Procedure1 completes. Procedure2 may also finish before Procedure1 if it is shorter or faster than Procedure1
call Procedure1; call Procedure2; |
|
Если обе локальные, то проблем не будет выполняются последовательно. Если первая импортируемая, то помещать её и следующую за ней в критический блок:
CODE |
startcritical; call Procedure1; call Procedure2; endcritical; call Procedure3; |
Но вообще это всё наследие оригинальной виртуальной машины и к F1/F2 отношения почти не имеет.
Fakeman
21 September 2017 | 05:06
А ты вобще проверял, этот калл с задержкой, в бою же время не тикает, прирост по времени будет только при передаче хода.
И шо если будет калл с нулевой задержкой повиснет же) будет loop.
Или там много поточность есть.
Crafty
21 September 2017 | 06:40
QUOTE (Fakeman) |
А ты вобще проверял, этот калл с задержкой |
Разумеется, на Смитти :-p
QUOTE (Fakeman) |
в бою же время не тикает, прирост по времени будет только при передаче хода. |
В том и фишка, что поскольку это наследие, то и работает отдельно. Знаю как это устроенно и как работает.
QUOTE (Fakeman) |
И шо если будет калл с нулевой задержкой повиснет же) будет loop. |
Минимальное обрабатываемое время равно 1, и это реальная секунда. Можно, конечно с дополнительными усилиями, изменить частоту до, к примеру, 1/10 секунды или больше.
Но с 0 обработка будет при первой возможности.
Добавляешь отладочные сообщения и смотришь на результат (меняя 1 на 0):
CODE |
variable count;
procedure combat_is_starting_p_proc begin count := 0; call iSeeYouInCombat in 1; display_msg("combat_is_starting_p_proc"); end
procedure combat_is_over_p_proc begin cancel(iSeeYouInCombat); display_msg("combat_is_over_p_proc"); end
procedure iSeeYouInCombat begin if combat_is_initialized then begin if obj_can_see_obj(self_obj, dude_obj) then begin display_msg("YES"); attack_setup(self_obj, dude_obj); end else begin count := count + 1; display_msg("NO ("+count+")"); call iSeeYouInCombat in 1; end end end |
qwester
2 October 2017 | 12:47
Помогите разобраться с проблемой.
Крафти + СФалл конфигуратор.
https://drive.google.com/file/d/0B9saTzYQVc...iew?usp=sharingпочти все враги игнорируют бой. и так на всех локациях. такое чувство, что используется некая опция, которая ограничивает их зону восприятия\поведения.
вот-так играть просто невозможно. нет никакого интереса. аналогичная ситуация и в случайных встречах. такое чувство, что используется некая опция на поведение, но я её нигде не вижу.
ещё ситуация. когда враг из группы замечает меня и атакует. подбегает ко мне или же умирает недалеко от своей группы. остальные участники группы никак на это не реагируют.
Крафти (без конфигуратора).
https://drive.google.com/file/d/0B9saTzYQVc...iew?usp=sharingв этом видео всё работает правильно\стандартно. активируются все цели, все атакуют и т.д. бой длится дольше, но зато сложный и интересный.
может кто знает в чём проблема?
--
на нма случайно наткнулся на инфу готовится к релизу сФалл 4.0. где можно ознакомиться с изменениями?
Crafty
2 October 2017 | 18:59
QUOTE (qwester) |
может кто знает в чём проблема? |
В ddraw.ini измени значение переменной CanSeeAndHearFix на 0.
QUOTE (qwester) |
на нма случайно наткнулся на инфу готовится к релизу сФалл 4.0. где можно ознакомиться с изменениями? |
В ченжлоге напишут.
qwester
2 October 2017 | 19:04
Crafty, просьба, добавь возможность замедлить (в процентах) скорость движения машины по карте мира. уж слишком быстро она бегает. если есть такая возможность имеется. я могу видео в качестве примера записать. суть такова, что все случайки проскакивают мимо меня, почти никогда машина не останавливается. если же идти пешком, то движение медленное, случайки частые.
\\кстати. запустил оригинальный ф2, без модов и т.д. по карте мира летаешь с реактивной скоростью. и это без машины. я уж не думал, что однажды ещё увижу этот "частотный баг".
QUOTE |
В ddraw.ini измени значение переменной CanSeeAndHearFix на 0. |
спс. проверю.
что это за функция "CanSeeAndHearFix"? по смыслу перевод мне понятен, могут видеть и слышать. как на практике это должно работать?
0 отключает и 1 включает. если не путаю.
Crafty
2 October 2017 | 19:48
QUOTE (qwester) |
все случайки проскакивают мимо меня, почти никогда машина не останавливается. если же идти пешком, то движение медленное, случайки частые. |
Измени WorldMapDelay2 в сторону увеличения (WorldMapFPSPatch конечно должен быть равен 1).
Или можешь включить WorldMapEncounterFix:
QUOTE |
QUOTE | WorldMapEncounterFix=0 WorldMapEncounterRate=6 Можешь принцип работы объяснить, на Неваде при изменении разницы не вижу. |
Движковый способ бросает кубики на случайку через временной отрезок и чем быстрее ты двигаешься (допустим на машине, а ещё и не по горной местности) тем реже это происходит успеваешь добраться до своего пункта назначения. При включении и, к примеру, WorldMapEncounterRate=1 фиксированно через каждый пиксель (условно говоря) на карте у тебя будет бросок кубиков на случайку. В любом случае для случайки нужно чтобы ещё прокнул бросок кубиков. |
QUOTE (qwester) |
что это за функция "CanSeeAndHearFix"? по смыслу перевод мне понятен, могут видеть и слышать. как на практике это должно работать? |
Вот
здесь какое-никакое описание ;)
QUOTE (qwester) |
0 отключает и 1 включает. если не путаю. |
Верно :-p
qwester
2 October 2017 | 22:16
QUOTE |
QUOTE | Вот здесь какое-никакое описание ;) |
После включения (CanSeeAndHearFix=1) source может не видеть, но слышать (особенно когда он слепой), нормально работает obj_can_hear_obj. Некоторые бои могут стать легче (в Реддинге в бою с королевой несколько собутыльников не прибегает с другого конца карты). |
Ха! Значит я твою логику правильно понял. Но. В итоге это не работает должным образом. И все бои в игре становятся значительно проще. Так, например, в случайках: если до начала боя отойти чуть дальше от НПС. То часть этих НПС будет игнорировать бой\ГГ. Или иначе. Можно даже стоять на месте, но не стрелять в самого дальнего, тогда этот дальний тоже будет игнорить ГГ (и совершенно не важно, если рядом с ним будут падать трупы товарищей). Вот такая история. Реализм тут не работает, извини.
QUOTE |
Измени WorldMapDelay2 в сторону увеличения (WorldMapFPSPatch конечно должен быть равен 1). Или можешь включить WorldMapEncounterFix: |
Вот такие у меня настройки по дефолту (из пака Pyran'а):
QUOTE |
;World map travel time percentage modifier ;Modifies how fast in game time passes while you're moving around the map screen without affecting encounter rate ;100 is normal speed, 0 stops time from passing WorldMapTimeMod=100
;Set to 1 to use the fallout 1 code to control world map speed WorldMapFPSPatch=1
;Controls the world map speed if WorldMapFPSPatch is 1. Higher values cause slower movement WorldMapDelay2=66
;Set to 1 to enable Ray's patch to make world map encounter rate independent of your travel speed WorldMapEncounterFix=0 WorldMapEncounterRate=6
;The number of slots available in the locations list panel of the world map ;Set to 0 to leave unchanged. 17 is default. ;Setting this greater than 17 requires a replacement background frm, or you'll get glitched graphics WorldMapSlots=21 |
На какое значение оптимально поменять WorldMapDelay2=66?
У меня есть подозрение, что его (WorldMapDelay2=66) увеличение значительно увеличит шанс появления случаек при пешем перемещении, как бы хуже не стало.
Foxx
2 October 2017 | 22:43
QUOTE ("qwester") |
На какое значение оптимально поменять WorldMapDelay2=66? У меня есть подозрение, что его (WorldMapDelay2=66) увеличение значительно увеличит шанс появления случаек при пешем перемещении, как бы хуже не стало. |
Да значение это. Увеличение сделает встречи чаще, но ты же жаловался, что на машине они редко происходят. По логике машина и должна быстро ездить и встречи происходят реже, попробуй ее еще останови. Хочешь воевать ходи пешком:-)
Попробуй WorldMapEncounterFix=0 поставить в 1
qwester
2 October 2017 | 23:34
Foxx,
QUOTE |
;Set to 1 to enable Ray's patch to make world map encounter rate independent of your travel speed WorldMapEncounterFix=0 |
если я правильно понимаю перевод, то частота встреч не будет зависеть от моей скорости передвижения. а тогда с какой периодичностью я буду попадать на случайки?
QUOTE |
Да значение это. Увеличение сделает встречи чаще, но ты же жаловался, что на машине они редко происходят. По логике машина и должна быстро ездить и встречи происходят реже, попробуй ее еще останови. Хочешь воевать ходи пешком:-) |
да. я жаловался. хотя.. после ГЕСКО только на машине и катаешь. т.ч. до учащённых встреч при пешем путешествии не должно быт дела, ведь пешком ходить уже не придётся. значит придётся не забыть подправить конфиг в нужный момент.
\\прост реально скучно становится, когда катаешь от локи к локи, нет никаких встреч и нет опасности. по этой причине я и жаловался. я бы саму машину замедлил, а не мудрил с вероятностью встреч. -20% скорости к машине было бы для меня идеалом. да и где там машине разгонятся. кто вообще теперь может знать с какой скоростью машина должна ездить? у меня нет старого компа для проверки.
Crafty
3 October 2017 | 01:50
QUOTE (qwester) |
В итоге это не работает должным образом. |
"working as intended" © ;-p
QUOTE (qwester) |
Можно даже стоять на месте, но не стрелять в самого дальнего, тогда этот дальний тоже будет игнорить ГГ (и совершенно не важно, если рядом с ним будут падать трупы товарищей). |
Это домыслы ;) С чего бы ему игнорить ГГ когда рядом его друзяки мрут? Подтверди фактами (с сейвом) :-p
QUOTE (qwester) |
Реализм тут не работает, извини. |
Наоборот, опция включает реализм. Взгляни на второй якобы "нормальный" мувик почему мужички внутри дома, в дальней комнате, реагируют, а на улице на углу мужик не слышит, и даже возле двери один не слышит (потом услышит, когда раненный убегать начнёт).
Проблема заключается в том как происходит "оповещение" что обижают братюню во время своего хода персонаж просто сканирует (видимость/слышимость) окружающих и если находит обиженного братюню, то тихо вступает в бой и бежит к обидчику. А по-нормальному (нужно сделать) он при вступлении в бой ещё бы должен был бы всем другим братюням в пределах их видимости/слышимости сообщить об этом.
QUOTE (qwester) |
На какое значение оптимально поменять WorldMapDelay2=66? |
На твой вкус, поставишь 200 уменьшение в 3 раза.
QUOTE (qwester) |
У меня есть подозрение, что его (WorldMapDelay2=66) увеличение значительно увеличит шанс появления случаек при пешем перемещении, как бы хуже не стало. |
Конечно увеличит :-p
QUOTE (qwester) |
-20% скорости к машине было бы для меня идеалом. да и где там машине разгонятся. кто вообще теперь может знать с какой скоростью машина должна ездить? у меня нет старого компа для проверки. |
С какой должна, с такой и ездит старый комп не нужен.
Если пеший за конкретный промежуток времени проходит 1 пиксель, то машина добавляет к этому пикселю ещё 3. Её апгрейд (GVAR_CAR_BLOWER=439) в НКР добавит 1 пиксель, а первый апгрейд (GVAR_NEW_RENO_CAR_UPGRADE=455) в Нью-Рино ещё 1 и второй (GVAR_NEW_RENO_SUPER_CAR=456) там же ещё 3.
Fakeman
3 October 2017 | 04:46
QUOTE |
Это домыслы ;) С чего бы ему игнорить ГГ когда рядом его друзяки мрут? |
Есть такая фигня, от восприятия криттера же зависит, раньше писал же об этом когда мусолили эту тему кстати я тогда и не заметил разницы в улучшении от этого фикса , как не не бегали дальне-стоящие криттеры так не бегали при вкл. опции, даже если в 10 гексов чувака убьешь тот будет стоять курить. Сейчас не тестировал, может чего изменилось. Хотя думаю нет, раз ты пишешь что некоторые дальние могут вообще не прибегать :-)
В общем плюнул на я твой фикс) и переопределил расстояние на которое реагируют криттеры, для человеко подобных добавил еще и влияние интеллекта, поэтому тупые стоят курят :-)
Отправлено: 3 окт 17 05:13
QUOTE |
А по-нормальному (нужно сделать) он при вступлении в бой ещё бы должен был бы всем другим братюням в пределах их видимости/слышимости сообщить об этом |
Так это нужно было с самого начало сделать.
А что ты там изменил я до сих пор понять не могу.
qwester
3 October 2017 | 13:04
QUOTE |
Это домыслы ;) С чего бы ему игнорить ГГ когда рядом его друзяки мрут? Подтверди фактами (с сейвом) :-p |
чувствую меня начинают слегка подтроливать. я всё доступно написал выше в примерах. и повторяться не буду. НПС даже в самых абсурдных ситуациях игнорят бой\ГГ.
QUOTE |
Наоборот, опция включает реализм. Взгляни на второй якобы "нормальный" мувик почему мужички внутри дома, в дальней комнате, реагируют, а на улице на углу мужик не слышит, и даже возле двери один не слышит (потом услышит, когда раненный убегать начнёт). |
ожидаемое не совпадает с действительным. а вот это надо исправить, они все разом должны слышать. они не в параллельной вселенной находятся. если ты говоришь про реализм, то:
1. ты убил баланс, т.к. бои теперь вообще никакой сложности не представляют.
2. звуки выстрелов (если говорить про реализм) будут слышны и внутри здания. по сигналу тревоги обычно поднимается весь гарнизон (военная часть), а не только часовые. сообщение об опасности может передаваться между НПС, таким образом они все и реагируют.
3. с тем дальним НПС упущение, но и он в итоге реагирует на опасность. а надо реакцию сделать одинаковой для всех, все должны бежать и атаковать ГГ.
QUOTE |
Проблема заключается в том как происходит "оповещение" что обижают братюню во время своего хода персонаж просто сканирует (видимость/слышимость) окружающих и если находит обиженного братюню, то тихо вступает в бой и бежит к обидчику. А по-нормальному (нужно сделать) он при вступлении в бой ещё бы должен был бы всем другим братюням в пределах их видимости/слышимости сообщить об этом. |
ты всё правильно понимаешь, вот только это оповещение должно работать на внушительной области. в итоге этот механизм не работает. благо я научился отключать это проблема решена.
QUOTE |
Есть такая фигня, от восприятия криттера же зависит, раньше писал же об этом когда мусолили эту тему кстати я тогда и не заметил разницы в улучшении от этого фикса , тогда не бегали дальне стоящие криттеры, даже если в 10 гексов чувака убьешь тот будет стоять курить. Сейчас не тестировал, может чего изменилось. Хотя думаю нет :-)
|
сейчас такая же ситуация. хотя я раньше (в 14году) не сталкивался с такой проблемой.
хорошо, вот несколько примеров:
1. лагерь работорговцев (сестра сулика). снаружи стоит дома стоит охранник. убиваем его. из дома выбегает 2 самых ближайших НПС. все остальные будут стоять на месте. свой ход они постоянно пропускают и бой автоматически завершается. если я войду в помещение, то бой начинается сразу (или не сразу, тут тоже странность случается, иногда надо поближе подойти к ним).
2.
https://drive.google.com/file/d/0B9saTzYQVc...iew?usp=sharingсразу предупреждаю это не самый абсурдный пример, но очень похожий. самые дальние НПС не будут атаковать.
3. пример в пещере налётчиков (по квесту Город8).
https://drive.google.com/file/d/0B9saTzYQVc...iew?usp=sharingсразу предупреждаю это похожий пример на скрине. НПС видит меня и нападает. вот на таком большом расстоянии. его собратья игнорят. что получается: 1 он бежит ко мне и умирает, остальные игнорят. 2 я его убиваю, он падает рядом с собратами, его смерть собраты игнорят.
QUOTE |
Вобщем плюнул на я твой фикс) и переопределил расстояние на которое реагируют криттеры, |
как это сделать? без влияния интеллекта. как их заставить всех атаковать ГГ?
у меня есть подозрение, что даже отключение CanSeeAndHearFix не решает проблему полностью.
если мне память не изменяет, то в оригинале они все нападали. я помню эти долгие ходы, проверка\передача хода каждому НПС нейтралу\врагу в локации. хорошо помню пример, когда в городе Дэн (яма\дыра), если напасть на работорговцев, то аж прибегали из церкви охранники. это перебор..., но игра становится веселее.
--
все эти видео и скрины я делал в качестве различных баг-репортов для сборки Pyran'a (отдельно RP, ECCO, sFall). придираться к этим скринам не надо, хотя они и отображают ряд проблем, наглядно проблема боя показана в видео.
Fakeman
3 October 2017 | 16:44
QUOTE |
сейчас такая же ситуация. хотя я раньше (в 14году) не сталкивался с такой проблемой. |
Всегда такое было.
Поэтому.
QUOTE |
у меня есть подозрение, что даже отключение CanSeeAndHearFix не решает проблему полностью. |
Вот тест из оригинала без всяких фиксов, ставим 2 криттера в чистом поле
на одном расстоянии от гг у одного из них будет восприятие 10, у другого 5.
еще ставим одного поближе к гг.
стреляем в ближнего в бой вступают 2 криттера тот что ближе стоит, и тот у которого восприятие 10 с восприятием 5 стоит курит. Какого х?
Вот она нерешенная проблема!
QUOTE |
хорошо помню пример, когда в городе Дэн (яма\дыра), если напасть на работорговцев, то аж прибегали из церкви охранники. |
Я тоже помню это, раньше лет 10-15 назад трава была зеленее)
Нужно вообще без сфала попробовать, может чего он в боях накасячивает, ибо были за ним такие грешки.
Отправлено: 3 окт 17 17:36
QUOTE |
как это сделать? без влияния интеллекта. как их заставить всех атаковать ГГ? |
В скрипте у крафти hs_withinperception.ssl
CODE |
else if combat_is_initialized then distance := distance * 2; |
помножить на другое число.
+ добавить такую строчку,
CODE |
if original != result then set_sfall_return(result); |
в конец перед строкой. а эту удалить
CODE |
if original == 0 and result and target == dude_obj and (combat_is_initialized)... |
Ну и скомпилировать скрипт при помощи SSE4 :)
Отправлено: 3 окт 17 18:58
Начал заново перечитывать эту тему с CanSeeAndHearFix, что бы окончательно понять)
Crafty
Заметил что ты поменял в скрипте двиг. функцию is_pc_sneak_working_ на сфалловскую ты ее поправил, или ты просто ошибся?
QUOTE |
Кстати, как оказалось, скриптовый аналог is_pc_sneak_working_ в sfall добавили в версии 3.5 sneak_success (но он не очень правильный...). |
Crafty
3 October 2017 | 19:44
Не понимаете как это работает в движке, не берёте в расчёт настройки AI-пакетов...
Добавил оповещение братюням :-p
QUOTE (Fakeman) |
как не не бегали дальне-стоящие криттеры так не бегали при вкл. опции, даже если в 10 гексов чувака убьешь тот будет стоять курить. |
А что должно было в этом изменится? Это механика игры: если братюня помирает, то рядом стоящие видят и входят в бой, но если они не видят обидчика, то и сделать ничего не могут включи debug.log и увидишь там "Somebody Died and I don't know why! Run!!!".
QUOTE (Fakeman) |
Сейчас не тестировал, может чего изменилось. Хотя думаю нет, раз ты пишешь что некоторые дальние могут вообще не прибегать :-) |
Потому что убран идиотизм когда дальние "видят" через стены на большем расстоянии только потому что стоят лицом.
QUOTE (qwester) |
всё доступно написал выше в примерах. и повторяться не буду. НПС даже в самых абсурдных ситуациях игнорят бой\ГГ. |
Может так и должно быть? Сейв не для красоты прошу.
QUOTE (qwester) |
вот только это оповещение должно работать на внушительной области. в итоге этот механизм не работает. благо я научился отключать это проблема решена. |
Этого механизма нет в движке вообще, как ты его отключаешь?
QUOTE (Fakeman) |
в конец перед строкой. а эту удалить |
Такие сложности, достаточно заменить всё содержимое на "return 1" ;)
Fakeman
3 October 2017 | 20:25
QUOTE |
Потому что убран идиотизм когда дальние "видят" через стены на большем расстоянии только потому что стоят лицом. |
Теперь мы видим другой идиотизм, на видео у qwester :)
Имхо хуже стало, хотя он там в броне анклава от сюда многие могут просто не будут атаковать в связи с настройками AI-пакетов.
CODE |
Не понимаете как это работает в движке, не берёте в расчёт настройки AI-пакетов... |
Хотя если qwester убивает там за углом работорговца, то вся эта шайка в принципе не должна агрится на гг, так как никто не увидел как убили их братюню.
QUOTE |
Это механика игры: если братюня помирает, то рядом стоящие видят и входят в бой, но если они не видят обидчика, то и сделать ничего не могут |
Это понятно что не видит кого атаковать.
Но это тупо как-то, потому если бы братюня умер стразу с первого выстрела то да это было бы справедливо, но когда раненый бранюня уже побежал и не сообщил рядом стоящим "го со мной мочить козла" вот это тупо!
QUOTE |
Добавил оповещение братюням :-p |
Нужно будет проверить.
QUOTE |
Такие сложности, достаточно заменить всё содержимое на "return 1" ;) |
Ну зачем так радикально, меня там только не устраивает X2 к дистанции для тех кто не видит гг в бою. поэтому предпочитаю ее слегка поднять.
Можно еще всякие дополнительные проверки навешать.
Отправлено: 3 окт 17 22:32
QUOTE |
Добавил оповещение братюням :-p |
Ну вот проверил, вижу что "сообщения" работают, стало намного лучше.
Кто до этого стоял жопой к гг не атаковал, теперь атакуют.
Каков радиус действия сообщений?
При этом отдельно стоящие жопой к гг не атакуют что правильно, ну или они глухие не слышат что в 15 гексах (при восприятии 5) за спиной у них происходит бой.
Имеем такой расклад на
картинкеПри CanSeeAndHearFix = 0:
Бегут все, кроме криттера под номером "2", и курильщика на крылечке.
-------
При CanSeeAndHearFix = 1 без фикса на сообщения:
Бегут мужик с пейджером и ниже стоящие за стеной, остальные отдыхают.
Я так понял мужик под номером "1" если бы не было стены то же побежал бы?-------
При CanSeeAndHearFix = 1 с фиксом сообщений:
Бегут все кроме курильщика :)
При этом если убрать мужика с пейджером сообщений верхние под номерами 1 и 2 не бегут.Отправлено: 3 окт 17 23:12 QUOTE |
Я так понял мужик под номером "1" если бы не было стены то же побежал бы? |
Ага а вот и косяк в твоей реализации, не бежит мужик #1 если убрать стену и мужика с пейжером,
при выключенной опции бежит.
QUOTE |
Потому что убран идиотизм когда дальние "видят" через стены на большем расстоянии только потому что стоят лицом. |
Стены нет а он все равно не видит, давай исправляй косяк)
Ели что вот
картинка с гексами для подсчета расстояния, у черных вос=5 у синих вос=7
Надеюсь У вас там Яндекс работает))
qwester
9 October 2017 | 00:30
QUOTE |
Имхо хуже стало, хотя он там в броне анклава от сюда многие могут просто не будут атаковать в связи с настройками AI-пакетов. |
я обратил на это внимание. они не только реагируют на экипировку, но и на скорость с которой я уничтожал их братюнь. а где этот параметр ИИ можно отключить? пусть все меня видят и не боятся, так сложнее играть.
если вы хотите реализма, то этот ваш реализм ломает баланс. надо вводить продвинутый реализм, когда они лучше будут соображать, а не только игнорить и уссываться от страха.
если говорить про РП, то в нём надо НПС усиливать через редактор, ну и параметры повысить (если это играет значение). а иначе какой смысл? они такие умные, но при этом атакуют в меньшинстве или уссываются от страха все вместе.
Fakeman
9 October 2017 | 01:27
QUOTE |
а где этот параметр ИИ можно отключить? пусть все меня видят и не боятся, так сложнее играть. |
В настройках AI, но он там не один.
Хочешь сложности, не носи тяжелую броню и стреляй с однозарядного ZIP-гана :)
Crafty
13 October 2017 | 06:00
QUOTE (Fakeman) |
Каков радиус действия сообщений? |
QUOTE |
А по-нормальному (нужно сделать) он при вступлении в бой ещё бы должен был бы всем другим братюням в пределах их видимости/слышимости сообщить об этом. |
QUOTE (Fakeman) |
Стены нет а он все равно не видит, давай исправляй косяк) |
Верхний #1 не слышит из-за расстояния и не видит, хоть и стоит лицом, из-за какой-то преграды. Мне отсюда не видно какой ;) Давай сейв, скажу.
Исправлять нечего, там всего три строчки просто включил для всех нпс функцию (combatai_notify_friends), которую использует ГГ для оповещения своей группы поддержки что нужна их помощь.
QUOTE (Fakeman) |
Надеюсь У вас там Яндекс работает)) |
404, нирабы без него проживут, а то бог нападёт.
Нормальным приходится через впн и ко. заходить.
QUOTE |
но при этом атакуют в меньшинстве или уссываются от страха все вместе. |
Сейчас будут прибегать все :-p
Что касается страха, то (на примере банды Мецгера) это когда подбегает мужик, стреляет, потом разворачивается и почему-то убегает? Отключай NPCsTryToSpendExtraAP или ставь там достаточно большое значение для использования основного оружия. Вообще нужно менять им или статы или шанс попадания в AI-пакете они в мили кулаком попасть не могут ;)
Fakeman
13 October 2017 | 16:07
Нет никакого сейва, это тест карта.
А он наверное не бежит, потому, что между таргетом(кого атакует гг) и ним есть стена (я не полностью стену убирал), потом проверю.
Отправлено: 13 окт 17 16:15
Хотя стоп, на вторром скрине, между ними нет никакой преграды.
Ищи косяк не в исправлении оповещения, а в основном фиксе canseeandhearfix
Так как этот криттер должен тоже атаковат.
Crafty
13 October 2017 | 23:43
QUOTE (Fakeman) |
а в основном фиксе canseeandhearfix |
Алгоритм изменений в is_within_perception описан. Там нет никакой отсебятины (вроде раз этот пацак в синих портках, то иногда его будем не замечать) используются движковые функции и если #1 его не видит, то значит есть причина (может он слепой? Или "скрытая" ошибка в движковой функции). Точно смогу сказать имея юзабельный сейв :-p
QUOTE (Fakeman) |
Так как этот криттер должен тоже атаковат. |
Без фикса со всей карты "убираются" вообще все стены/препятствия.
Fakeman
14 October 2017 | 05:14
Какой нафиг сейв, карта тестовая оно не сохраняется) ты скрины видел то? Поставь криттеров на пустой карте, примерно как на скринах и тестируй себе.
Я конечно еще не перетестивал, может там кусочек стены мешал))))
Foxx
16 October 2017 | 08:52
Crafty сделай им, чтобы враги еще и с других карт прибегали :-)
Fakeman
26 October 2017 | 04:58
НУ что уже прибегают?)
Скажи мне пожалуйста, каким флагом в карте помечено, что предмет или оружие в инвентаре нпс находится в активной/неактивной руке?
И за что отвечают поля sx и sy в структурах pObj?
Отправлено: 26 окт 17 05:18
Предложения сделать чтобы неписи поднимали и одевали броню с земли во время боя, ну и чтобы их внешний вид менялся на соответствующий спрайт. Можно такое сделать?)
Вроде там ничего сложного не должно быть, ведь оружие поднимают.
Но тут надо с умом подойти, допустим подобрал и одел колхозник броню и тут же сможет пользоваться базукой к примеру, так вот если его скилл мал то использовать/поднимать такое оружие он не сможет. Ну и с броней также дети не поднимают, хилые неписи немогут одеть тяж.броню. Да еще надо чтобы со шкафчиков шмотки себе брали. :-)
Отправлено: 26 окт 17 15:21
QUOTE |
проблема с постоянным подвисанием игры во время боя (во время ходов оппонентов в частности). Окно игры "вешается" (надпись "не отвечает") и через некоторое время снова мой ход |
Решается?
qwester
28 October 2017 | 17:18
QUOTE |
Предложения сделать чтобы неписи поднимали и одевали броню с земли во время боя, ну и чтобы их внешний вид менялся на соответствующий спрайт. Можно такое сделать?) |
И зачем это надо? Я, например, прошёл Ф2+РП+ЭККО неделю назад. Я не разу не встречал безоружного противника. А одевать броню в бою это бред полнейший. Где вообще встречаются НПС без оружия? Говоря про броню, то если она будет выпадать физически (как в моде Ниррана), то это к чёртовой матери ломает баланс, т.к. ГГ в начале игры имеет ещё больше денег и лучшую защищённость.
Вся эта хрень с искусственной поломкой оружия и выпадом брони имела бы смысл.., если бы была реализована система износа оружия. При этом. Если оружие износилось более 60 процентов, то его уже нельзя отремонтировать. Аналогично и к броне.
Оружие и броня должны разбираться, а детали применяться для ремонта. Чем выше навык Ремонт, тем меньше уходит деталей и выше процент восстановления. Я бы реализовал ремонт (если возможно) через инвентарь, по аналогии с зарядкой оружия, просто заряжать оружие и броню деталями. При стрельбе этот параметр будет чуть уменьшаться, а у брони параметр будет уменьшаться от получения урона. Хорошо бы ещё для брони и оружия добавить шкалу износа.
---
А ещё лучше поправить оружие и защищённость у ряда НПС и банд. Я планировал взяться за эту работу на базе РП, но пока руки не дошли... В ЭККО уже много чего исправлено.
Fakeman
28 October 2017 | 17:59
QUOTE |
Я бы реализовал ремонт (если возможно) через инвентарь, по аналогии с зарядкой оружия, просто заряжать оружие и броню деталями. При стрельбе этот параметр будет чуть уменьшаться, а у брони параметр будет уменьшаться от получения урона. Хорошо бы ещё для брони и оружия добавить шкалу износа. |
Износ на движке F2 нереальная штука, нет свободного параметра который бы позволял запоминать текущую изношенность у предмета.
В моде Акеллы реализован псево износ когда ты выкинул предмет на карту зашел вышел и он уже от ремонтировался.
Отправлено: 28 окт 17 18:04
А фиг его знает)
Облутание близ лежащих ящиков во время боя я думаю неплохая была бы фишка.
QUOTE |
Говоря про броню, то если она будет выпадать физически (как в моде Ниррана), то это к чёртовой матери ломает баланс, т.к. ГГ в начале игры имеет ещё больше денег и лучшую защищённость. |
Нужно делать мод с головой, к примеру выпавшая броня продавалась бы в 10 раз дешевле, ну и защищала бы меньше типа БУ броня :)
qwester
29 October 2017 | 14:48
QUOTE |
Нужно делать мод с головой, к примеру выпавшая броня продавалась бы в 10 раз дешевле, ну и защищала бы меньше типа БУ броня :) |
тезисно...
Проблема с ценами решается при помощи мода ЭККО от Фобоса. Но не решит проблему с излишком денег, если броня будет выпадать часто.
\\К примеру, силовая броня БС в СФ у меня стоила 42.000 (~ Харизма 6, ~ торговля 7), в конце игры избытка денег почти не было.
Мод Ниррана на выпадение брони привязан к навыку Ремонт (как мне объясняли). Чем выше навык, тем выше шанс выпадения брони.
Вот эта идея и меня тоже посещала, если игроку будет выпадать поломанная броня. Но тогда на каждую броню придётся рисовать изменённый скин сломанной версии. Так же броня не должна выпадать, если НПС получил критический урон, т.е. был разорван в клочья, сожжён и т.д. При помощи мода (МрФИКС) на крафт можно было бы сделать ремонт и разбор брони. Смысл здесь такой поднял 5 штук сделал одну. И сломанную броню нельзя носить.
Жаль нельзя износ реализовать.
Fakeman
29 October 2017 | 16:43
Crafty, можешь разузнать к чему относятся параметры в карте для предметов указанные на скрине, используются ли они?
Скрин Эти параметры всегда равны 0. Особенно интересует смещение под названием Unknown 12 может его можно использовать к качестве хранения текущего параметра для износа предмета, как на подобии AmmoCount и Charges.
Как из скриптов добраться до этого параметра в карте? я полагаю через read/write(self_obj + 0x54) верно ли нет?
Отправлено: 29 окт 17 18:33 В общем я был не прав на счет износа, можно использовать практически не используемый параметр для итемов LightIntensity (это который Unknown 8, или Unknown 12 если он точно не занятый).
В прототипе так-же можно использовать этот же параметр в качестве некого коэффициента для указания прочности для предмета.
Осталось только найти человека который сделает такой мод, еcть желающие? :)
Crafty
30 October 2017 | 22:45
QUOTE (Fakeman) |
Скажи мне пожалуйста, каким флагом в карте помечено, что предмет или оружие в инвентаре нпс находится в активной/неактивной руке? |
Ну раз есть доступ к инвентарю нпс (а значит и к самому нпс), то critter_inven_obj(who, всегда INVEN_TYPE_RIGHT_HAND для активной или INVEN_TYPE_LEFT_HAND для неактивной).
Сами флаги:
objLeftHand = 0x1000000 ; слот левой руки
objRightHand = 0x2000000 ; слот правой руки
objWorn = 0x4000000 ; слот брони
QUOTE (Fakeman) |
И за что отвечают поля sx и sy в структурах pObj? |
Полагаю (не вникал) что стартовые x и y объекта ещё не размещённого (tile_num=-1) на карте.
QUOTE (Fakeman) |
Предложения сделать чтобы неписи поднимали и одевали броню с земли во время боя, ну и чтобы их внешний вид менялся на соответствующий спрайт. Можно такое сделать?) |
В теории можно всё :-p
Есть нпс визуально одетые, к примеру, в боевую броню и с её статами, но без самой брони в инвентаре. Если они оденут другую броню, то статы суммируются, из-за чего они круто апнутся. И понятно что коррекцией статов в прошниках/картах никто заниматься не будет.
QUOTE (Fakeman) |
QUOTE | проблема с постоянным подвисанием игры во время боя (во время ходов оппонентов в частности). Окно игры "вешается" (надпись "не отвечает") и через некоторое время снова мой ход |
Решается? |
Без понятия (такого у себя не видел, по виндовому курсору мышки в мувике видно что какая-то подгрузка), больше похоже на тех.проблему/драйвера. Но интереса ради хотелось бы взглянуть на содержимое f2_res.ini/ddraw.ini.
QUOTE (Fakeman) |
Износ на движке F2 нереальная штука, нет свободного параметра который бы позволял запоминать текущую изношенность у предмета. |
QUOTE (Fakeman) |
В общем я был не прав на счет износа, можно использовать практически не используемый параметр |
Сам и ответил (но не этот параметр) ;)
Места куча, но простой записью/чтением это не решить.
Много деталей (отображение текущего процента износа, как считать сколько попаданий выдержит и насколько дешевле станет) и самое главное движковый механизм обработки когда предметов несколько (из-за чего куча багов вроде множественного снятия брони или потеря КБ).
Fakeman
31 October 2017 | 00:23
QUOTE |
Сами флаги: objLeftHand = 0x1000000 ; слот левой руки objRightHand = 0x2000000 ; слот правой руки objWorn = 0x4000000 ; слот брони |
Немного не понял, это флаги непосредственно для объекта-предмета который принадлежит НПЦ? Мне это для маппера димса надо.
QUOTE |
самое главное движковый механизм обработки когда предметов несколько (из-за чего куча багов вроде множественного снятия брони или потеря КБ). |
В смысле несколько предметов?, там же вроде у каждого предмета будет свое значение износа хранится в сохранке(в карте) (как в случае с патронами у оружия или зарядами у счетчика гейгера).
Ну да мод для реализации не из легких, много что надо пробовать, еще наверное и двиг. придется допиливать.
QUOTE |
но не этот параметр |
Что ты этим хотел сказать?)
QUOTE |
Полагаю (не вникал) что стартовые x и y объекта ещё не размещённого (tile_num=-1) на карте. |
Да я вот тоже не пойму для чего они, меняешь их а положение не меняется.
Но офф.маппер туда пишет значения, смотря куда ставишь объект.
Отправлено: 31 окт 17 00:36
QUOTE |
Без понятия (такого у себя не видел, по виндовому курсору мышки в мувике видно что какая-то подгрузка), больше похоже на тех.проблему/драйвера. Но интереса ради хотелось бы взглянуть на содержимое f2_res.ini/ddraw.ini. |
Было у меня такое, но очень редко случается нет там никакой подгрузки просто не показывает ход криттеров.
Crafty
2 November 2017 | 21:16
QUOTE (Fakeman) |
Немного не понял, это флаги непосредственно для объекта-предмета который принадлежит НПЦ? |
Поле flags, которое с помощью установки битов определяет некоторые параметры этого объекта:
CODE |
objInvisible = 0x1 objWalkThru = 0x4 objFlat = 0x8 ; "не ложиться вниз" objNoBlock = 0x10 ; не блокировать объект objLighting = 0x20 ; подсветка objTemp = 0x400 ; temp object objMultiHex = 0x800 ; is object multihex? objNoHighlight = 0x1000 ; не подсвечивать контур, используется для предметов-контейнеров objUsed = 0x2000 ; Объект использовался objTransRed = 0x4000 objTransNone = 0x8000 objTransWall = 0x10000 objTransGlass = 0x20000 ; стекло objTransSteam = 0x40000 ; пар objTransEnergy = 0x80000 ; энергия objLeftHand = 0x1000000 ; слот левой руки objRightHand = 0x2000000 ; слот правой руки objWorn = 0x4000000 ; слот брони objHidden = 0x8000000 objWallTransEnd = 0x10000000 objLightThru = 0x20000000 ; через объект проходит свет objSeen = 0x40000000 objShootThru = 0x80000000 ; через объект можно стрелять |
QUOTE (Fakeman) |
В смысле несколько предметов?, там же вроде у каждого предмета будет свое значение износа хранится в сохранке(в карте) (как в случае с патронами у оружия или зарядами у счетчика гейгера). |
У персонажа есть инвентарь, в котором каждая вещь состоит из двух частей указателя на эту вещь и её количество. При одевании брони или взятии предмета в руку просто устанавливается флаг objWorn/obj*Hand вместо уменьшения количества и создания копии с установленным флагом. Если у тебя будет две брони с 50%, а "лежать" они будут вместе, то и уменьшение прочности будет затрагивать обе. Поэтому нужны дополнительные танцы с бубном.
QUOTE (Fakeman) |
QUOTE | но не этот параметр |
Что ты этим хотел сказать?) |
Он используется. Любой объект это универсальная структура, в которой некоторые переменные одинаковые для любого объекта (причём разные типы объектов их могут и не использовать у оружия или там патронов тоже "есть" инвентарь).
На мой взгляд лучше подходит неиспользуемое для оружия/брони поле cid в union, которое расположено там же где переменная curr_hp (0x58, и по смыслу лучше подходит) для персонажей (curr_hp сохраняется только у персонажей):
CODE |
struct obj_weapon updated_flags db 4 dup (?) cur_ammo_quantity dd ? cur_ammo_type_pid dd ? dd 5 dup (?) curr_hp dd ? // <----- ends ..... struct obj_critter reaction_to_pc dd ? combat_state dd ? curr_mp dd ? results db 4 dup (?) damage_last_turn dd ? ai_packet dd ? team_num dd ? who_hit_me dd ? curr_hp dd ? curr_rad dd ? curr_poison dd ? ends ..... struct obj id dd ? tile_num dd ? x dd ? y dd ? sx dd ? sy dd ? cur_frm dd ? cur_rot dd ? fid dd ? flags db 4 dup (?) elev dd ? inv_size dd ? inv_max dd ? inv dd ? union weapon obj_weapon ammo obj_ammo misc_item obj_misc_item key_item obj_key_item critter obj_critter portal obj_portal stairs obj_stairs elevator obj_elevator generic obj_generic ends pid dd ? cid dd ? light_distance dd ? light_intensity dd ? outline db 4 dup (?) sid dd ? owner dd ? script_index dd ? ends |
QUOTE (Fakeman) |
нет там никакой подгрузки просто не показывает ход криттеров. |
Там отлично видна системная (не игровая) подгрузка что-то записывается/читается на диск, к примеру, эмулируемая видеопамять.
Fakeman
4 November 2017 | 05:13
QUOTE |
У персонажа есть инвентарь, в котором каждая вещь состоит из двух частей указателя на эту вещь и её количество. При одевании брони или взятии предмета в руку просто устанавливается флаг objWorn/obj*Hand вместо уменьшения количества и создания копии с установленным флагом. Если у тебя будет две брони с 50%, а "лежать" они будут вместе, то и уменьшение прочности будет затрагивать обе. Поэтому нужны дополнительные танцы с бубном. |
Ничего не знаю... что ты вообще все всегда портишь)
Хочешь сказать, что в стопке предметов, у всех этих предметов будет один и тот же параметр в котором будет записан тек.износ предмета? И как с количеством патронов с оружием, не получится?
Надо еще раз за лесть в мод аккеллы и посмотреть, у него там какая-то хитрая замутка с указателями предметов, а износ предмета хранится в глобальной переменной и я так понял из мода, что если бы этот указатель был постоянен для предмета, то износ бы был вполне рабочим.
Crafty
4 November 2017 | 05:49
QUOTE (Fakeman) |
Хочешь сказать, что в стопке предметов, у всех этих предметов будет один и тот же параметр в котором будет записан тек.износ предмета? |
Да. Только в стопке фактически один предмет.
QUOTE (Fakeman) |
И как с количеством патронов с оружием, не получится? |
Это мнимая уникальность загрузи два SMG пачкой патронов (по 24, а не 30) и они так же "лягут" в одну стопку, сделай из каждого по выстрелу и они снова вместе.
QUOTE (Fakeman) |
Надо еще раз за лесть в мод аккеллы и посмотреть, у него там какая-то хитрая замутка с указателями предметов, а износ предмета хранится в глобальной переменной и я так понял из мода, что если бы этот указатель был постоянен для предмета, то износ бы был вполне рабочим. |
Это вообще фантастика один гвар для всего? Поносил броню до 50%, потом одел новую и она стала 50%? Или 100%, но тогда если заменить на старую, то эта старая "починилась"? Или же для каждого используемого предмета свой персональный гвар (а хватит)?
Fakeman
4 November 2017 | 06:09
Ну тогда смотри лежит в инвентаре два одинаковых пистолета, одни пистолет лежит в руке, и у него установлен флаг то что он находится в руке, и когда игрок стреляет минусуется патрон, почему минусуется только в одном а не у двоих, как ты говоришь?
QUOTE |
Это вообще фантастика один гвар для всего? |
Нет конечно) там еще на пиде основывается непомню точно но вроде как для каждого пида своя гвара, там получается так, что если купишь в магазе новый такой-же ствол, он примет такое-же значение износа как у текущего из которого гг стреляет вобщем предмет всегда обречен на поломку даже если купил новый а старый выкинул))
Нужно выкинуть оба тогда там система обнуляется и будет два новеньких.
Если я конечно ничего не напутал, ибо я в скрипт заглядывал года 4 назад и может чего путаю.
Crafty
4 November 2017 | 07:06
QUOTE (Fakeman) |
Ну тогда смотри лежит в инвентаре два одинаковых пистолета |
Глянул бегло у оружия ситуация получше чем у брони, хоть копия создаётся при использовании. Но всяко дохренища переделывать.
QUOTE (Fakeman) |
Нет конечно) там еще на пиде основывается |
...только в профиль ;)
Fakeman
4 November 2017 | 11:55
Тоесть если создается копия оружия то у стопки оружия и у оружия которое используем будет 2 разных указателя, так?
А как вообще в движке определяется кагда надо ложить предмет в стопку а когда отдельно?
А у предметов с параметром Charges тоже создается копия?
- я всем докторским сумкам добавил этот параметр теперь у них есть реальный запас, а не случайный, и все вроде нормально у всех разный charges.
В общем на днях займусь проверкой с износом, потом напишу где есть косяки.
Ps: отображать износ можно через иконку красная-желтая-зеленая посредством шейдеров, или простым пользовательскм интерфейсным окном показывать. Можно выводить параметр в описание предмета но тут сфалл надо дорабатывать.
Crafty
4 November 2017 | 15:12
QUOTE (Fakeman) |
Тоесть если создается копия оружия то у стопки оружия и у оружия которое используем будет 2 разных указателя, так? |
Да, это у брони головняк без создания копии даже после её одевания.
QUOTE (Fakeman) |
А как вообще в движке определяется кагда надо ложить предмет в стопку а когда отдельно? А у предметов с параметром Charges тоже создается копия? |
Сам смотри :-p
QUOTE (Fakeman) |
я всем докторским сумкам добавил этот параметр теперь у них есть реальный запас, а не случайный, и все вроде нормально у всех разный charges. |
Нету у них теперь реального запаса ;) Всё так же random(1,10) и если выпала единица, то "запас" закончился.
QUOTE |
отображать износ можно через иконку красная-желтая-зеленая посредством шейдеров |
Это уг, с требованиями включения DX9.
Fakeman
4 November 2017 | 15:57
QUOTE |
Нету у них теперь реального запаса ;) Всё так же random(1,10) и если выпала единица, то "запас" закончился. |
Так я этот рандом и чикнул ножечком. :)
А скриптово отнимается один заряд после использования.
QUOTE |
Это уг, с требованиями включения DX9. |
Нормально УГ работатет)
Не умею)
Отправлено: 4 ноя 17 17:58
QUOTE |
BodyHit_Torso и BodyHit_Uncalled были "общими", потому что в движке второе всё равно менялось на первое. Позже я их разъединил и сделал уникальными :-p |
CODE |
//Bodypart hit chances *((DWORD*)0x510960) = GetPrivateProfileIntA("Misc", "BodyHit_Torso", 0x00000000, ini); , ini); *((DWORD*)0x510974) = GetPrivateProfileIntA("Misc", "BodyHit_Uncalled", 0x00000000, ini); |
Так у тебя было в последних исходниках, а что сейчас поменялось?
CODE |
*((DWORD*)0x510960)=GetPrivateProfileIntA("Misc", "BodypartHitMod3", 0x00000000, ini); *((DWORD*)0x510974)=GetPrivateProfileIntA("Misc", "BodypartHitMod8", 0x00000000, ini); |
так было в оригинальном 3.7 разницы не замечаю.
BodyHit_Uncalled и BodyHit_Torso уникальны как в твоем так и в оригинале потом ты их объединил и переименовал BodyHit_Uncalled в BodyHit_Torso
Что и сделали позже в оригинале и там сейчас так.
CODE |
*((DWORD*)0x510960) = GetPrivateProfileIntA("Misc", "BodyHit_Torso_Uncalled", 0x00000000, ini); *((DWORD*)0x510974) = GetPrivateProfileIntA("Misc", "BodyHit_Torso_Uncalled", 0x00000000, ini); |
Изначально и так было уникально потом пошла какая-то каша.....
Crafty
4 November 2017 | 19:24
QUOTE (Fakeman) |
Так у тебя было в последних исходниках, а что сейчас поменялось? ..... BodyHit_Uncalled и BodyHit_Torso уникальны как в твоем так и в оригинале потом ты их объединил и переименовал BodyHit_Uncalled в BodyHit_Torso |
Ничего не переименовывал. Удалил BodyHit_Uncalled. Потом добавил код, который обрабатывает их как уникальные и вернул BodyHit_Uncalled.
Уникальность не в названии переменных.
Fakeman
4 November 2017 | 20:20
У тебя както-то баг вылез, в оригинале норм.
CODE |
Error during execution: Error exporting procedure b_info_proc Current script: scripts\obj_dude.int, procedure .............. Error during execution: Error exporting procedure b_info_proc Current script: scripts\obj_dude.int, procedure .............. |
Сама экспортная процедура в obj_dude.int вызываемая из sfall gl_ скрипта работает. Но перестает работать сама процедура если ее вызвать из obj_dude.int
Это происходит когда загружаешь сохранение, при старте новой игры такого нет вот такая фигня.
И это можешь поменять DebugMode=3 на 1 а то я уже забадался постоянно менять цифру когда перекидываю сфалы.
Или доп переменную введи DebugSaveLog=1
QUOTE |
Потом добавил код, который обрабатывает их как уникальные и вернул BodyHit_Uncalled. |
Понятно.
Отправлено: 4 ноя 17 20:42
QUOTE |
Да, это у брони головняк без создания копии даже после её одевания. |
Все нормально твоя теория не подтвердилась.
Положил в инвентарь две брони одну одел и той которая надета присвоил по смещению 0x38(это как раз смещение unknown12 из редактора) значение износа, снял броню она не сложилась в стопку, ну то есть отдельно кладется, продал ее торгашу, пошел погулял, пришел выкупил проверил значение все нормально значение сохраняется. Так-то)
Crafty
4 November 2017 | 23:55
QUOTE (Fakeman) |
Это происходит когда загружаешь сохранение, при старте новой игры такого нет вот такая фигня. |
Недавнее тайное исправление исправления (kek) предотвращения слёта при повторном экспорте экспортируемой процедуры (было невозможно из-за особенности реализации в движке не чистилась таблица экспортируемых процедур). На самом деле его исправлять не надо оно является защитой от повторного экспорта процедуры с таким же именем, но в разных скриптах. Спасибо, сейчас классно переписал ;)
QUOTE |
И это можешь поменять DebugMode=3 на 1 а то я уже забадался постоянно менять цифру когда перекидываю сфалы. |
CODE |
if (tmp == 2) SafeWrite32(0x004C6D9C, (DWORD)debugLog); else SafeWrite32(0x004C6D9C, (DWORD)debugGnw); |
Так проще и не требует смены цифры, только на гитхабе нужно написать :-p
QUOTE (Fakeman) |
Или доп переменную введи DebugSaveLog=1 |
Тут думаю убрать бесполезную муть вроде RemoveWindowRounding, а ты мне новую предлагаешь добавить :-p
Как скажешь ;)
Fakeman
5 November 2017 | 01:14
QUOTE |
RemoveWindowRounding |
Эээ я в окне тестю, а меня бесит этот заголовок)))
Crafty
5 November 2017 | 01:29
QUOTE (Fakeman) |
Эээ я в окне тестю, а меня бесит этот заголовок))) |
Какой заголовок?
Fakeman
6 November 2017 | 03:18
Тот что сверху)) я к тому что не трож полезные функции :P и так уже вырезал мой любимый редактор.
Crafty
6 November 2017 | 21:43
QUOTE (Fakeman) |
Тот что сверху)) я к тому что не трож полезные функции :P и так уже вырезал мой любимый редактор. |
Так эта переменная к заголовку отношения не имеет она убивает сохранение флагов (которые указывают что это окно создано скриптово и наследует свойства главного окна) уже после создания окна (с этими флагами) скриптовой CreateWin.
Перевод описания "Remove window position rounding"/"Убрать округление позиции окна" (да и само название переменной) как бы слегка проясняет ситуацию, но в этом случае реализация (убивание флагов) не имеет никакого отношения к описанию. В общем я не могу чётко сформулировать что именно она делает, а внятное описание/обсуждение на NMA найти не удалось.
Fakeman
10 November 2017 | 16:45
QUOTE |
Cоздав окно с помощью функции CreateWin, созданное окно заливается черным цветом, т.е. окно не может быть прозрачным. |
Есть ли возможность переделать чтобы по умолчанию фон устанавливался как прозрачный, т.е. без заливки окна?
Crafty
10 November 2017 | 20:19
QUOTE (Fakeman) |
Есть ли возможность переделать чтобы по умолчанию фон устанавливался как прозрачный, т.е. без заливки окна? |
Нет.
Fakeman
11 November 2017 | 01:06
А если хорошо подумать) Брать картинку под окном и заливать. :P
Fakeman
12 November 2017 | 04:40
Обнаружил не критичный баг обработчика map_exit_p_proc для скрипта привязанного на DUDE, срабатывает только 1 раз при выходе с карты, т.е. последующие выходы в текущей сессии игры не вызывают данный обработчик.
Если исправишь сообщи детали, чтобы и в оригинале пофиксить.
Crafty
12 November 2017 | 08:21
QUOTE (Fakeman) |
А если хорошо подумать) Брать картинку под окном и заливать. :P |
Если скриптово поседеешь :-p
QUOTE (Fakeman) |
Обнаружил не критичный баг обработчика map_exit_p_proc для скрипта привязанного на DUDE, срабатывает только 1 раз при выходе с карты, т.е. последующие выходы в текущей сессии игры не вызывают данный обработчик. |
У меня нормально всё смотри debug.log, может у тебя что-то убивает:
CODE |
procedure map_exit_p_proc begin variable map_exit_test := 0; if get_sfall_global_int("OBJ_DUDE") != 3 then set_sfall_global("OBJ_DUDE", get_sfall_global_int("OBJ_DUDE")+1); else map_exit_test := get_sfall_global_int("OBJ_DUDE")/map_exit_test; display_msg("map_exit_p_proc, "+get_sfall_global_int("OBJ_DUDE")); end |
QUOTE |
map_exit_p_proc, 1 // <-- из пещер map_exit_p_proc, 2 // <-- из Кламата map_exit_p_proc, 3 // <-- из Кламата Error during execution: Division (DIV) by zero // <-- 4 Current script: scripts\obj_dude.int, procedure map_exit_p_proc Error during execution: Division (DIV) by zero // <-- 5 Current script: scripts\obj_dude.int, procedure map_exit_p_proc и т.д. |
Это выход из Ядовитых пещер и прогулка в Кламат, потом выход в мир и возврат в Кламат с повторениями.