Полная Версия: (sfall) дополнения
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
Crafty
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
А ты вобще проверял, этот калл с задержкой, в бою же время не тикает, прирост по времени будет только при передаче хода.
И шо если будет калл с нулевой задержкой повиснет же) будет loop.
Или там много поточность есть.
Crafty
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
Помогите разобраться с проблемой.

Крафти + СФалл конфигуратор.
https://drive.google.com/file/d/0B9saTzYQVc...iew?usp=sharing
почти все враги игнорируют бой. и так на всех локациях. такое чувство, что используется некая опция, которая ограничивает их зону восприятия\поведения.

вот-так играть просто невозможно. нет никакого интереса. аналогичная ситуация и в случайных встречах. такое чувство, что используется некая опция на поведение, но я её нигде не вижу.

ещё ситуация. когда враг из группы замечает меня и атакует. подбегает ко мне или же умирает недалеко от своей группы. остальные участники группы никак на это не реагируют.

Крафти (без конфигуратора).
https://drive.google.com/file/d/0B9saTzYQVc...iew?usp=sharing
в этом видео всё работает правильно\стандартно. активируются все цели, все атакуют и т.д. бой длится дольше, но зато сложный и интересный.

может кто знает в чём проблема?

--
на нма случайно наткнулся на инфу — готовится к релизу сФалл 4.0. где можно ознакомиться с изменениями?
Crafty
QUOTE (qwester)
может кто знает в чём проблема?
В ddraw.ini измени значение переменной CanSeeAndHearFix на 0.

QUOTE (qwester)
на нма случайно наткнулся на инфу — готовится к релизу сФалл 4.0. где можно ознакомиться с изменениями?
В ченжлоге напишут.
qwester
Crafty, просьба, добавь возможность замедлить (в процентах) скорость движения машины по карте мира. уж слишком быстро она бегает. если есть такая возможность имеется. я могу видео в качестве примера записать. суть такова, что все случайки проскакивают мимо меня, почти никогда машина не останавливается. если же идти пешком, то движение медленное, случайки частые.


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

QUOTE
В ddraw.ini измени значение переменной CanSeeAndHearFix на 0.

спс. проверю.
что это за функция "CanSeeAndHearFix"? по смыслу перевод мне понятен, могут видеть и слышать. как на практике это должно работать?

0 — отключает и 1 — включает. если не путаю.
Crafty
QUOTE (qwester)
все случайки проскакивают мимо меня, почти никогда машина не останавливается. если же идти пешком, то движение медленное, случайки частые.
Измени WorldMapDelay2 в сторону увеличения (WorldMapFPSPatch конечно должен быть равен 1).
Или можешь включить WorldMapEncounterFix:
QUOTE
QUOTE
WorldMapEncounterFix=0
WorldMapEncounterRate=6

Можешь принцип работы объяснить, на Неваде при изменении разницы не вижу.
Движковый способ бросает кубики на случайку через временной отрезок и чем быстрее ты двигаешься (допустим на машине, а ещё и не по горной местности) тем реже это происходит — успеваешь добраться до своего пункта назначения.
При включении и, к примеру, WorldMapEncounterRate=1 фиксированно через каждый пиксель (условно говоря) на карте у тебя будет бросок кубиков на случайку.
В любом случае для случайки нужно чтобы ещё прокнул бросок кубиков.

QUOTE (qwester)
что это за функция "CanSeeAndHearFix"? по смыслу перевод мне понятен, могут видеть и слышать. как на практике это должно работать?
Вот здесь какое-никакое описание ;)

QUOTE (qwester)
0 — отключает и 1 — включает. если не путаю.
Верно :-p
qwester
QUOTE
QUOTE
Вот здесь какое-никакое описание ;)

QUOTE
Верно :-p

После включения (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
QUOTE ("qwester")
На какое значение оптимально поменять WorldMapDelay2=66?
У меня есть подозрение, что его (WorldMapDelay2=66) увеличение значительно увеличит шанс появления случаек при пешем перемещении, как бы хуже не стало.

Да значение это. Увеличение сделает встречи чаще, но ты же жаловался, что на машине они редко происходят. По логике машина и должна быстро ездить и встречи происходят реже, попробуй ее еще останови. Хочешь воевать ходи пешком:-)

Попробуй WorldMapEncounterFix=0 поставить в 1
qwester
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
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
QUOTE
Это домыслы ;) С чего бы ему игнорить ГГ когда рядом его друзяки мрут?

Есть такая фигня, от восприятия криттера же зависит, раньше писал же об этом когда мусолили эту тему — кстати я тогда и не заметил разницы в улучшении от этого фикса , как не не бегали дальне-стоящие криттеры так не бегали при вкл. опции, даже если в 10 гексов чувака убьешь тот будет стоять курить. Сейчас не тестировал, может чего изменилось. Хотя думаю нет, раз ты пишешь что некоторые дальние могут вообще не прибегать :-)

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

Отправлено: 3 окт 17 05:13
QUOTE
А по-нормальному (нужно сделать) он при вступлении в бой ещё бы должен был бы всем другим братюням в пределах их видимости/слышимости сообщить об этом

Так это нужно было с самого начало сделать.
А что ты там изменил я до сих пор понять не могу.
qwester
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
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
Не понимаете как это работает в движке, не берёте в расчёт настройки 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
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
QUOTE
Имхо хуже стало, хотя он там в броне анклава от сюда многие могут просто не будут атаковать в связи с настройками AI-пакетов.


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

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

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

В настройках AI, но он там не один.
Хочешь сложности, не носи тяжелую броню и стреляй с однозарядного ZIP-гана :)
Crafty
QUOTE (Fakeman)
Каков радиус действия сообщений?
QUOTE
А по-нормальному (нужно сделать) он при вступлении в бой ещё бы должен был бы всем другим братюням в пределах их видимости/слышимости сообщить об этом.

QUOTE (Fakeman)
Стены нет а он все равно не видит, давай исправляй косяк)
Верхний #1 не слышит из-за расстояния и не видит, хоть и стоит лицом, из-за какой-то преграды. Мне отсюда не видно какой ;) Давай сейв, скажу.
Исправлять нечего, там всего три строчки — просто включил для всех нпс функцию (combatai_notify_friends), которую использует ГГ для оповещения своей группы поддержки что нужна их помощь.

QUOTE (Fakeman)
Надеюсь У вас там Яндекс работает))
404, нирабы без него проживут, а то бог нападёт.
Нормальным приходится через впн и ко. заходить.

QUOTE
но при этом атакуют в меньшинстве или уссываются от страха все вместе.
Сейчас будут прибегать все :-p
Что касается страха, то (на примере банды Мецгера) это когда подбегает мужик, стреляет, потом разворачивается и почему-то убегает? Отключай NPCsTryToSpendExtraAP или ставь там достаточно большое значение для использования основного оружия. Вообще нужно менять им или статы или шанс попадания в AI-пакете — они в мили кулаком попасть не могут ;)
Fakeman
QUOTE
Давай сейв, скажу.

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


Отправлено: 13 окт 17 16:15
Хотя стоп, на вторром скрине, между ними нет никакой преграды.
Ищи косяк не в исправлении оповещения, а в основном фиксе canseeandhearfix
Так как этот криттер должен тоже атаковат.
Crafty
QUOTE (Fakeman)
а в основном фиксе canseeandhearfix
Алгоритм изменений в is_within_perception описан. Там нет никакой отсебятины (вроде раз этот пацак в синих портках, то иногда его будем не замечать) — используются движковые функции и если #1 его не видит, то значит есть причина (может он слепой? Или "скрытая" ошибка в движковой функции). Точно смогу сказать имея юзабельный сейв :-p

QUOTE (Fakeman)
Так как этот криттер должен тоже атаковат.
Без фикса со всей карты "убираются" вообще все стены/препятствия.
Fakeman
Какой нафиг сейв, карта тестовая оно не сохраняется) ты скрины видел то? Поставь криттеров на пустой карте, примерно как на скринах и тестируй себе.
Я конечно еще не перетестивал, может там кусочек стены мешал))))
Foxx
Crafty сделай им, чтобы враги еще и с других карт прибегали :-)
Fakeman
НУ что уже прибегают?)

Скажи мне пожалуйста, каким флагом в карте помечено, что предмет или оружие в инвентаре нпс находится в активной/неактивной руке?
И за что отвечают поля sx и sy в структурах pObj?

Отправлено: 26 окт 17 05:18
Предложения сделать чтобы неписи поднимали и одевали броню с земли во время боя, ну и чтобы их внешний вид менялся на соответствующий спрайт. Можно такое сделать?)
Вроде там ничего сложного не должно быть, ведь оружие поднимают.
Но тут надо с умом подойти, допустим подобрал и одел колхозник броню и тут же сможет пользоваться базукой к примеру, так вот если его скилл мал то использовать/поднимать такое оружие он не сможет. Ну и с броней также — дети не поднимают, хилые неписи немогут одеть тяж.броню. Да еще надо чтобы со шкафчиков шмотки себе брали. :-)

Отправлено: 26 окт 17 15:21
QUOTE
проблема с постоянным подвисанием игры во время боя (во время ходов оппонентов в частности). Окно игры "вешается" (надпись "не отвечает") и через некоторое время снова мой ход

Решается?
qwester
QUOTE
Предложения сделать чтобы неписи поднимали и одевали броню с земли во время боя, ну и чтобы их внешний вид менялся на соответствующий спрайт. Можно такое сделать?)


И зачем это надо? Я, например, прошёл Ф2+РП+ЭККО неделю назад. Я не разу не встречал безоружного противника. А одевать броню в бою — это бред полнейший. Где вообще встречаются НПС без оружия? Говоря про броню, то если она будет выпадать физически (как в моде Ниррана), то это к чёртовой матери ломает баланс, т.к. ГГ в начале игры имеет ещё больше денег и лучшую защищённость.

Вся эта хрень с искусственной поломкой оружия и выпадом брони имела бы смысл.., если бы была реализована система износа оружия. При этом. Если оружие износилось более 60 процентов, то его уже нельзя отремонтировать. Аналогично и к броне.

Оружие и броня должны разбираться, а детали применяться для ремонта. Чем выше навык Ремонт, тем меньше уходит деталей и выше процент восстановления. Я бы реализовал ремонт (если возможно) через инвентарь, по аналогии с зарядкой оружия, — просто заряжать оружие и броню деталями. При стрельбе этот параметр будет чуть уменьшаться, а у брони параметр будет уменьшаться от получения урона. Хорошо бы ещё для брони и оружия добавить шкалу износа.

---
А ещё лучше поправить оружие и защищённость у ряда НПС и банд. Я планировал взяться за эту работу на базе РП, но пока руки не дошли... В ЭККО уже много чего исправлено.
Fakeman
QUOTE
Я бы реализовал ремонт (если возможно) через инвентарь, по аналогии с зарядкой оружия, — просто заряжать оружие и броню деталями. При стрельбе этот параметр будет чуть уменьшаться, а у брони параметр будет уменьшаться от получения урона. Хорошо бы ещё для брони и оружия добавить шкалу износа.

Износ на движке F2 нереальная штука, нет свободного параметра который бы позволял запоминать текущую изношенность у предмета.
В моде Акеллы реализован псево износ — когда ты выкинул предмет на карту зашел вышел и он уже от ремонтировался.

Отправлено: 28 окт 17 18:04
QUOTE
И зачем это надо?

А фиг его знает)
Облутание близ лежащих ящиков во время боя я думаю неплохая была бы фишка.

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

Нужно делать мод с головой, к примеру выпавшая броня продавалась бы в 10 раз дешевле, ну и защищала бы меньше — типа БУ броня :)
qwester
QUOTE
Нужно делать мод с головой, к примеру выпавшая броня продавалась бы в 10 раз дешевле, ну и защищала бы меньше — типа БУ броня :)


тезисно...

Проблема с ценами решается при помощи мода ЭККО от Фобоса. Но не решит проблему с излишком денег, если броня будет выпадать часто.
\\К примеру, силовая броня БС в СФ у меня стоила 42.000 (~ Харизма 6, ~ торговля 7), в конце игры избытка денег почти не было.

Мод Ниррана на выпадение брони привязан к навыку Ремонт (как мне объясняли). Чем выше навык, тем выше шанс выпадения брони.

Вот эта идея и меня тоже посещала, — если игроку будет выпадать поломанная броня. Но тогда на каждую броню придётся рисовать изменённый скин сломанной версии. Так же броня не должна выпадать, если НПС получил критический урон, т.е. был разорван в клочья, сожжён и т.д. При помощи мода (МрФИКС) на крафт можно было бы сделать ремонт и разбор брони. Смысл здесь такой — поднял 5 штук — сделал одну. И сломанную броню нельзя носить.

Жаль нельзя износ реализовать.
Fakeman
Crafty, можешь разузнать к чему относятся параметры в карте для предметов указанные на скрине, используются ли они?
Скрин
Эти параметры всегда равны 0. Особенно интересует смещение под названием Unknown 12 — может его можно использовать к качестве хранения текущего параметра для износа предмета, как на подобии AmmoCount и Charges.

Как из скриптов добраться до этого параметра в карте? я полагаю через read/write(self_obj + 0x54) верно ли нет?

Отправлено: 29 окт 17 18:33
В общем я был не прав на счет износа, можно использовать практически не используемый параметр для итемов LightIntensity (это который Unknown 8, или Unknown 12 если он точно не занятый).
В прототипе так-же можно использовать этот же параметр в качестве некого коэффициента для указания прочности для предмета.
Осталось только найти человека который сделает такой мод, еcть желающие? :)
Crafty
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
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
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
QUOTE
У персонажа есть инвентарь, в котором каждая вещь состоит из двух частей — указателя на эту вещь и её количество. При одевании брони или взятии предмета в руку просто устанавливается флаг objWorn/obj*Hand вместо уменьшения количества и создания копии с установленным флагом. Если у тебя будет две брони с 50%, а "лежать" они будут вместе, то и уменьшение прочности будет затрагивать обе. Поэтому нужны дополнительные танцы с бубном.

Ничего не знаю... что ты вообще все всегда портишь)
Хочешь сказать, что в стопке предметов, у всех этих предметов будет один и тот же параметр в котором будет записан тек.износ предмета? И как с количеством патронов с оружием, не получится?

Надо еще раз за лесть в мод аккеллы и посмотреть, у него там какая-то хитрая замутка с указателями предметов, а износ предмета хранится в глобальной переменной — и я так понял из мода, что если бы этот указатель был постоянен для предмета, то износ бы был вполне рабочим.
Crafty
QUOTE (Fakeman)
Хочешь сказать, что в стопке предметов, у всех этих предметов будет один и тот же параметр в котором будет записан тек.износ предмета?
Да. Только в стопке фактически один предмет.

QUOTE (Fakeman)
И как с количеством патронов с оружием, не получится?
Это мнимая уникальность — загрузи два SMG пачкой патронов (по 24, а не 30) и они так же "лягут" в одну стопку, сделай из каждого по выстрелу и они снова вместе.

QUOTE (Fakeman)
Надо еще раз за лесть в мод аккеллы и посмотреть, у него там какая-то хитрая замутка с указателями предметов, а износ предмета хранится в глобальной переменной — и я так понял из мода, что если бы этот указатель был постоянен для предмета, то износ бы был вполне рабочим.
Это вообще фантастика — один гвар для всего? Поносил броню до 50%, потом одел новую и она стала 50%? Или 100%, но тогда если заменить на старую, то эта старая "починилась"? Или же для каждого используемого предмета свой персональный гвар (а хватит)?
Fakeman
Ну тогда смотри лежит в инвентаре два одинаковых пистолета, одни пистолет лежит в руке, и у него установлен флаг то что он находится в руке, и когда игрок стреляет минусуется патрон, почему минусуется только в одном а не у двоих, как ты говоришь?
QUOTE

Это вообще фантастика — один гвар для всего?

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

QUOTE (Fakeman)
Нет конечно) там еще на пиде основывается
...только в профиль ;)
Fakeman
Тоесть если создается копия оружия то у стопки оружия и у оружия которое используем будет 2 разных указателя, так?
А как вообще в движке определяется кагда надо ложить предмет в стопку а когда отдельно?
А у предметов с параметром Charges тоже создается копия?
- я всем докторским сумкам добавил этот параметр теперь у них есть реальный запас, а не случайный, и все вроде нормально у всех разный charges.
В общем на днях займусь проверкой с износом, потом напишу где есть косяки.

Ps: отображать износ можно через иконку красная-желтая-зеленая посредством шейдеров, или простым пользовательскм интерфейсным окном показывать. Можно выводить параметр в описание предмета — но тут сфалл надо дорабатывать.
Crafty
QUOTE (Fakeman)
Тоесть если создается копия оружия то у стопки оружия и у оружия которое используем будет 2 разных указателя, так?
Да, это у брони головняк без создания копии даже после её одевания.

QUOTE (Fakeman)
А как вообще в движке определяется кагда надо ложить предмет в стопку а когда отдельно?
А у предметов с параметром Charges тоже создается копия?
Сам смотри :-p

QUOTE (Fakeman)
я всем докторским сумкам добавил этот параметр теперь у них есть реальный запас, а не случайный, и все вроде нормально у всех разный charges.
Нету у них теперь реального запаса ;) Всё так же random(1,10) и если выпала единица, то "запас" закончился.

QUOTE
отображать износ можно через иконку красная-желтая-зеленая посредством шейдеров
Это уг, с требованиями включения DX9.
Fakeman
QUOTE
Нету у них теперь реального запаса ;) Всё так же random(1,10) и если выпала единица, то "запас" закончился.

Так я этот рандом и чикнул ножечком. :)
А скриптово отнимается один заряд после использования.

QUOTE
Это уг, с требованиями включения DX9.

Нормально УГ работатет)

QUOTE
Сам смотри :-p

Не умею)

Отправлено: 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
QUOTE (Fakeman)
Так у тебя было в последних исходниках, а что сейчас поменялось?
.....
BodyHit_Uncalled и BodyHit_Torso уникальны как в твоем так и в оригинале потом ты их объединил и переименовал BodyHit_Uncalled в BodyHit_Torso
Ничего не переименовывал. Удалил BodyHit_Uncalled. Потом добавил код, который обрабатывает их как уникальные и вернул BodyHit_Uncalled.
Уникальность не в названии переменных.
Fakeman
У тебя както-то баг вылез, в оригинале норм.
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
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

QUOTE (Fakeman)
Так-то
Как скажешь ;)
Fakeman
QUOTE
RemoveWindowRounding

Эээ я в окне тестю, а меня бесит этот заголовок)))
Crafty
QUOTE (Fakeman)
Эээ я в окне тестю, а меня бесит этот заголовок)))
Какой заголовок?
Fakeman
QUOTE
Какой заголовок?

Тот что сверху)) я к тому что не трож полезные функции :P и так уже вырезал мой любимый редактор.
Crafty
QUOTE (Fakeman)
Тот что сверху)) я к тому что не трож полезные функции :P и так уже вырезал мой любимый редактор.
Так эта переменная к заголовку отношения не имеет — она убивает сохранение флагов (которые указывают что это окно создано скриптово и наследует свойства главного окна) уже после создания окна (с этими флагами) скриптовой CreateWin.
Перевод описания "Remove window position rounding"/"Убрать округление позиции окна" (да и само название переменной) как бы слегка проясняет ситуацию, но в этом случае реализация (убивание флагов) не имеет никакого отношения к описанию. В общем я не могу чётко сформулировать что именно она делает, а внятное описание/обсуждение на NMA найти не удалось.
Fakeman
QUOTE
Cоздав окно с помощью функции CreateWin, созданное окно заливается черным цветом, т.е. окно не может быть прозрачным.

Есть ли возможность переделать чтобы по умолчанию фон устанавливался как прозрачный, т.е. без заливки окна?
Crafty
QUOTE (Fakeman)
Есть ли возможность переделать чтобы по умолчанию фон устанавливался как прозрачный, т.е. без заливки окна?
Нет.
Fakeman
А если хорошо подумать) Брать картинку под окном и заливать. :P
Fakeman
Обнаружил не критичный баг обработчика map_exit_p_proc для скрипта привязанного на DUDE, срабатывает только 1 раз при выходе с карты, т.е. последующие выходы в текущей сессии игры не вызывают данный обработчик.
Если исправишь сообщи детали, чтобы и в оригинале пофиксить.
Crafty
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
и т.д.
Это выход из Ядовитых пещер и прогулка в Кламат, потом выход в мир и возврат в Кламат с повторениями.
Ваш ответ: