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


Фотография

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


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

#421 Crafty

Crafty

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

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

Отправлено 02 августа 2016 - 01:15

Ethereal
QUOTE
Можно ли по средствам "NPC Armor" мода прикрутить отоброжение новой брони ("bos Enviro armor" и т.д.)? И вообще есть ли возможность заставить отображатся на напарниках новую броню (Боевая\Силовая броня Мод-5 и т.д.), исходя из настроек отображения самой брони, не вмешиваясь скрипты напарников?
Нет (нужно наверное переписать для поддержки других пидов...), да и без специально нарисованных анимаций это была бы не слишком "честная игра" — напарники смогут использовать оружие, которое не должны использовать.

Bitner
QUOTE
Не знаю, задавали тут этот вопрос по поводу бага анимации смерти в некрополисе после вторжения мутантов.
Реально ли его исправить?
AnimationsAtOnceLimit проблему не решает?
Наткнулся в своё время на описание:
QUOTE
I know you're familiar with the 'bug' where slain towns people are frozen in their death animation (after a town is captured by super mutants) when the player first arrives at an invaded town. Could this be due to the limit on the number of concurrent animations that can be played on a map at any given time? For fallout 2, I think it's around ~30.
Поэтому перенёс AnimationsAtOnceLimit из F2 в F1-версию. Подкинь сейв (с списком что установлено).


#422 Foxx

Foxx

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

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

Отправлено 02 августа 2016 - 04:03

Crafty
QUOTE
AnimationsAtOnceLimit проблему не решает?

Не решает (хотя там сейчас их намного меньше стоит), проверил, на: F1 от 1С, патчи от teamx 1.2 & 1.3.5, NPC mod 3.5, High Resolution Patch v.4.1.8 и твой sFall 1.7.4.
http://i77.fastpic.r...6ca5dec611b.jpg
Можешь сам легко проверить, установи в файле VAULT13.GAM, в переменной NECROPOLIS_INVADED_DATE :=1;
И пробежись до Некрополя.

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

Ethereal (из сообщений с nuclear-city), как раз хотел их мульти оружейным навыкам научить.

Это сообщение отредактировано Foxx - 2 августа 2016 | 04:19


#423 Ethereal

Ethereal

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

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

Отправлено 02 августа 2016 - 14:23

Я уже устал спорить на эту тему. Ну что с того, что Майрон может носить гранатомёт, если у него навык в нулях? Игрок сам пожалеет, что дал его Майрону. К тому же, при опции "управления напарниками", в бою можно узреть, какими навыками те владеют и уж исходя из этого подбирать оружие. Никогда не поверю, что человек умеющий стрелять из винтовки не справится с пистолетом или ПП! А вот прописывать напарникам одинаковое владение всем оружием — вот это читерство уже. Так, что ограничители по анимации считаю ненужной глупостью.


#424 Legend

Legend

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

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

Отправлено 02 августа 2016 - 14:44

QUOTE
Ну что с того, что Майрон может носить гранатомёт, если у него навык в нулях?

50% же.


#425 Ethereal

Ethereal

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

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

Отправлено 02 августа 2016 - 17:19

QUOTE
50% же.


Ставим -100% и наслаждаемся критическими промахами. :) К тому же 50% — это не серьёзно.
Моддинг он такой... допилить можно всё, были бы идеи и желание.
Ну, пачти всё. :D

Это сообщение отредактировано Ethereal - 2 августа 2016 | 17:25


#426 Crafty

Crafty

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

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

Отправлено 03 августа 2016 - 01:12

Bitner, Foxx
QUOTE
Реально ли его исправить?
Да, исправил ;)

При входе в Некрополис срабатывает скрипт hotelmap.int, в котором есть такой код:
CODE
procedure start
begin
if (script_action == map_enter_p_proc) then begin
.....
 if ((global_var(NECROPOLIS_INVADED) == 1) and (metarule(METARULE_IS_LOADGAME, 0) == 0)) then begin
  kill_critter_type(16777230, 1);
  kill_critter_type(16777521, 1);
  kill_critter_type(16777322, 1);
  kill_critter_type(16777232, 1);
Если верить BIS_help.html второй параметр у kill_critter_type — death_frame (идентификатор изображения останков), но это ошибка. Правильнее назвать его death_type и он может быть равен 0, 1 или любому другому значению. Если равен 0 — то изображения останков не будет, трупик будет удалён с карты. При любом значении отличном от 0 и 1 для изображения останков будет использоваться ANIM_fall_back_sf.
При 1 и уровне насилия в настройках игры равном "Максимум крови" для каждого персонажа будет браться типа случайная анимация смерти из движковой таблицы с проверкой есть ли такая анимация для заданного персонажа. Если анимации нет или уовень насилия не равен "Максимуму крови", то используется ANIM_fall_back, а должна использоваться "single-frame death animations (the last frame of knockdown and death animations)". Вот для гулей нет ANIM_fall_back, поэтому при слабом уровне насилия все они умирают стоя. Но и при "Максимум крови" некоторые всё равно умирают стоя, потому что в движковой таблице указана анимация, которая тоже не поддерживается гулями (если не вру — ANIM_charred_body_sf) и используется ANIM_fall_back, которой как уже сказано нет. Сейчас вместо ANIM_fall_back будет ANIM_fall_back_sf.

Это сообщение отредактировано Crafty - 6 августа 2016 | 16:04


#427 Foxx

Foxx

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

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

Отправлено 03 августа 2016 - 08:40

Crafty
QUOTE
Да, исправил ;)

Сейчас проверил, действительно работает. Спасибо.

А можно как-нибудь вернуть рамочку вокруг персонажа, при выборе внешности. Мне кажется сейчас выглядит как то недоделано.
http://i79.fastpic.r...6c84b3e7d9f.jpg

Это сообщение отредактировано Foxx - 3 августа 2016 | 09:10


#428 Fakeman

Fakeman

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

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

Отправлено 03 августа 2016 - 11:08

Grafty, можешь глянуть еще небольшой баг, если во время боя выполнить анимацию объекта командой anim() то при окончании анимации объекта игра как бы зависает — бесконечно крутятся часики. (баг присутствует именно в боевом режиме).
Для справки.
CODE
anim(ObjectPtr who, int anim, int direction)
воспроизводит заданную анимацию для заданного объекта в заданном направлении


Баг можно протестировать на любой двери повесив скрипт с таким содержанием
CODE
procedure damage_p_proc begin
      anim(self_obj, 0, 0);
end

и во время боя ударить кулаком по двери. :)

QUOTE
Если верить BIS_help.html второй параметр у kill_critter_type

Тут как бы есть примечание: Команда НЕ анимирует смерть криттера и НЕ обновляет экран.

Это сообщение отредактировано Fakeman - 3 августа 2016 | 11:29


#429 Bitner

Bitner

    Новичок

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

Отправлено 03 августа 2016 - 12:46

QUOTE
Да, исправил ;)

Круть. Спасибо большое. В моде Restoration Mod вторжение не только в некрополис но и в другие города и фикс работает там также.
Не знаю по теме ли вопрос. В F2, например, при отравлении появлялась табличка с красными буквами над журналом событий (там, где оповещении о новом уровне). В F1 ничего не появляется. Это только в F2 реализовали?
Ещё вопрос про бартер F1. В F2 новый взятый предмет появляется первым в списке что удобнее. Однако в F1 новый предмет появляется последним. Там невозможно ничего с этим сделать?


Это сообщение отредактировано Bitner - 3 августа 2016 | 23:51


#430 Paptimus

Paptimus

    Новичок

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

Отправлено 03 августа 2016 - 21:00

А есть лимит на дальность исполнения приказов? Если кликнуть через всю карту герой не побежит.



#431 Fakeman

Fakeman

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

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

Отправлено 04 августа 2016 - 01:28

В HRP есть path finding на 40000 нодов, что этого не хватает?


#432 Foxx

Foxx

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

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

Отправлено 04 августа 2016 - 09:16

Bitner
QUOTE
Ещё вопрос про бартер F1. В F2 новый взятый предмет появляется первым в списке что удобнее. Однако в F1 новый предмет появляется последним. Там невозможно ничего с этим сделать?

Это можно сделать через "High Resolution Patch". В файле "f1_res.ini" в переменной "INV_ADD_ITEMS_AT_TOP" поставить 1.


#433 Bitner

Bitner

    Новичок

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

Отправлено 04 августа 2016 - 10:54

Не знал что в f2_res.ini столько всего вкусного есть. Думал там только настройки с разрешением. Спасибо.


#434 Crafty

Crafty

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

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

Отправлено 06 августа 2016 - 17:02

Foxx
QUOTE
А можно как-нибудь вернуть рамочку вокруг персонажа, при выборе внешности. Мне кажется сейчас выглядит как то недоделано.
Нет. Вопрос привычки :-p
Была задумка добавлять рамочку используя art\intrface\WMSCREEN.FRM, но в F1 её нет, а только для F2 было лень делать (и без того есть что ещё доделать в хиромоде как в F2, так в F1-версиях), да и слишком она "толстая"...

Fakeman
QUOTE
если во время боя выполнить анимацию объекта командой anim() то при окончании анимации объекта игра как бы зависает — бесконечно крутятся часики. (баг присутствует именно в боевом режиме).
Озадачил меня ;)
Исходя из всего, баг именно в том, что в функции anim забыли сделать проверку на бой. В остальных аналогичных функциях (к примеру, reg_anim_func, reg_anim_animate и т.д.) есть проверка и если бой идёт, то функции не срабатывают — в бою может работать только движковая анимация, а скриптовой фигушки.

Но кое-чего подправил и в принципе можно теперь anim использовать (пока только если AnimationsAtOnceLimit отключён)... В отладочной версии (всяко нужно ещё изучить этот вопрос подробнее), в ней же включил вызов damage_p_proc при промахах если цель не_персонаж (для удобства тестирования). И не стоит использовать anim больше одного раза, хотя вот так прокатывает:
CODE
anim(self_obj, 0, 0);
anim(source_obj, 21, 0);

Ну и о всяких сопутствующих деяниях забывать не стоит, вроде:
CODE
call destroy_p_proc();
destroy_object(self_obj);

QUOTE
Тут как бы есть примечание: Команда НЕ анимирует смерть криттера и НЕ обновляет экран.
Поэтому и должна использоваться "single-frame death animations (the last frame of knockdown and death animations)".

Bitner
QUOTE
В F2, например, при отравлении появлялась табличка с красными буквами над журналом событий (там, где оповещении о новом уровне). В F1 ничего не появляется. Это только в F2 реализовали?
В F1 тоже есть, может плохо травят :-p

Это сообщение отредактировано Crafty - 6 августа 2016 | 20:32


#435 Fakeman

Fakeman

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

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

Отправлено 06 августа 2016 - 20:42

QUOTE
Исходя из всего, баг именно в том, что в функции anim забыли сделать проверку на бой. В остальных аналогичных функциях (к примеру, reg_anim_func, reg_anim_animate и т.д.) есть проверка и если бой идёт, то функции не срабатывают — в бою может работать только движковая анимация, а скриптовой фигушки.
Но кое-чего подправил и в принципе можно теперь anim использовать (пока только если AnimationsAtOnceLimit отключён)...

reg_anim_animate — это цепочки с анимациями, и понятно что в бою такие анимации ни к чему.
А почему это завязано на AnimationsAtOnceLimit?
Кстати вспомнил, я когда сидел скриптил с анимацией у меня получалось так, что после анимации часики убирались, только я уже не помню как я это делал, и это не совсем было стабильно.

Это сообщение отредактировано Fakeman - 6 августа 2016 | 20:54


#436 Crafty

Crafty

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

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

Отправлено 06 августа 2016 - 21:52

QUOTE
reg_anim_animate — это цепочки с анимациями, и понятно что в бою такие анимации ни к чему.
Анимация из таких цепочек и складывается.
CODE
anim(self_obj, 0, 0);
абсолютно (в случае не_персонажа) идентичен
CODE
reg_anim_begin();                           // reg_anim_func(REG_ANIM_BEGIN, RB_UNRESERVED);
reg_anim_animate(self_obj, 0, 0);
reg_anim_end();                             // reg_anim_func(REG_ANIM_END, 0);

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

Это сообщение отредактировано Crafty - 6 августа 2016 | 21:59


#437 Ethereal

Ethereal

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

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

Отправлено 07 августа 2016 - 12:34

;Choose the damage formula used to calculate combat damage.
;Don't set this to anything other than 0 unless another mod you're using explicitly tells you to!
;0 — Fallout default
;1 — Glovz's Damage Fix
;2 — Glovz's Damage Fix with Damage Multiplier tweak
;5 — Haenlomal's Yet Another Ammo Mod.

А можно конкретней, чем эти варианты отличаются? И... есть предложение вынести настройки формулы урона в "ini" файл.

Кстати, при моде управления напарниками, убитые ими гекко не дают шкур. Кроме того, если апнутся в бою (получив опыт с квеста), то напарники после него то же апаются, получая, очки навыков и здоровья согласно своим статам. Не проверял, но может ещё и перек.
А вообще, можно прописать партийцем переки?

Это сообщение отредактировано Ethereal - 7 августа 2016 | 16:00


#438 Fakeman

Fakeman

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

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

Отправлено 07 августа 2016 - 18:15

QUOTE
А можно конкретней, чем эти варианты отличаются? И... есть предложение вынести настройки формулы урона в "ini" файл.

Формулой расчетов.
вот примерный код формулы.
CODE
opCSubCJmp:
mov edx,0x1; // set the new armorDR value to 1
mov ebp,edx; // set the temp value
opASubCJmp:
mov edx,ebx; // set temp value
imul edx,ebp; // multiply the ND value by the armorDR value
cmp edx,0x64; // compare the temp value to 100
jl opASubDJmp; // if the temp value is less than 100 then goto opASubDJmp
mov ebp,0x0; // set and store the quotient value to 0
beginDivEJmp:
add ebp,0x1; // add 1 to the quotient value
sub edx,0x64; // subtract 100 from the temp value
cmp edx,0x64; // compare the remainder value to 100
jge beginDivEJmp; // if the remainder value is greater or equal to 100 then goto beginDivEJmp
cmp edx,0x33; // compare the remainder value to 51
jl aCheckDivEJmp; // if the remainder value is less than 51 goto aCheckDivEJmp
add ebp,0x1; // add 1 to the quotient value
aCheckDivEJmp:
sub ebx,ebp; // subtract the damage resisted value from the ND value
jmp cJmp; // goto cJmp
opASubDJmp:
cmp edx,0x33; // compare the remainder value to 51
jl cJmp; // if the remainder value is less than 51 goto cJmp
sub ebx,0x1; // subtract 1 from the ND value
jmp cJmp; // goto cJmp

Какую из из этих настроек ты хочешь вынести в Ini? :)


#439 Crafty

Crafty

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

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

Отправлено 08 августа 2016 - 02:31

Fakeman
QUOTE
А почему это завязано на AnimationsAtOnceLimit?
Отвязал, плюс изменил способ на более правильный и безопасный, но у него есть ограничения — anim(...) можно использовать только один раз и не с source_obj.

Ethereal
QUOTE
А можно конкретней, чем эти варианты отличаются? И... есть предложение вынести настройки формулы урона в "ini" файл.
Варианты Glovz'а обсуждаются здесь, YAAM Haenlomal'а описан в его YAAM_ReadMe.rtf. В ини вынести желания нет (в силу сложности реализации), но можешь сделать свой скриптовый вариант с помощью hs_combatdamage. Сам я этим вопросом ещё не занимался.

QUOTE
Кстати, при моде управления напарниками, убитые ими гекко не дают шкур. Кроме того, если апнутся в бою (получив опыт с квеста), то напарники после него то же апаются, получая, очки навыков и здоровья согласно своим статам.
Ty, гляну.
По шкуркам гекко так и задумано даже без контроля — если убивает ГГ с перком, то шкурку дают. ZCGECKO.SSL:
CODE
.....
/* This procedure gets called only on the death of this NPC. Special things like
  incrementing the death count for reputation purposes and Enemy Counters are placed
  in here. */
procedure destroy_p_proc begin
  variable item;

  //if ((obj_pid(self_obj) == PID_GECKO_SMALL) or (obj_pid(self_obj) == PID_TOUGH_GECKO_SMALL)) then
  //     item := create_object(PID_GECKO_PELT,0,0);
  //else
  //     item := create_object(PID_GOLDEN_GECKO_PELT,0,0);

  if (has_trait(TRAIT_PERK,dude_obj,PERK_gecko_skinning_perk)) then begin
      item := create_object(PID_GOLDEN_GECKO_PELT,0,0);
      add_obj_to_inven(self_obj,item);
  end
end
.....
Конечно можно обойти...

QUOTE
Не проверял, но может ещё и перек.
А вообще, можно прописать партийцем переки?
Эк ты заумно перки назвал ;) Прописать можно, у них есть предназначенная для этого таблица. С помощью critter_add_trait(...). Но это будет иметь смысл только с используемыми в бою перками и включённым контролем собутыльников.

Это сообщение отредактировано Crafty - 8 августа 2016 | 03:16


#440 Fakeman

Fakeman

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

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

Отправлено 08 августа 2016 - 03:21

QUOTE
но у него есть ограничения — anim(...) можно использовать только один раз
Спасибо.
А один раз это как — один раз в бою, или один раз до след загрузки, или один раз вообще?)




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

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


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

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

Рейтинг@Mail.ru