Перейти к контенту

[SoC] Ковыряемся в файлах


Рекомендуемые сообщения

37 минут назад, Дизель сказал:

А как  же Зомби дружат с мутантами?

В файле m_stalker_zombied.ltx за это взаимное "поведение" зомбированных сталкеров и мутантов отвечает строчка:

species  = zombie

в отличие от файла "обычных" сталкеров m_stalker.ltx, где строчка выглядит так:

species = human

  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

@HellRatz ну вот либо со species играться, либо, как я, кажется, уже показывал, использовать enemy_callback. Вот, для примера, из моего конфига примеры:

; Болотный Доктор в МГ
dcity_dok_bolot   = monster, killer
dcity_dok_nevidim = monster, killer

А, не, не показывал. Это я про неуязвимость показывал. Ну пардон. У тебя же там в основе OGSE кажется. Тогда можешь попробовать адаптировать https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/dsh_enemies.script

 

  • Спасибо 1
Ссылка на комментарий

В общем-то да, вроде (?) удалось достичь нужного благодаря созданию нового профиля сталкера и прописи в него нового species.

Ссылка на комментарий
Скрытый текст

Как происходит в АМК-моде "трансмутация" артефактов (или как сварить артефакт в аномалии АМК-мода).
Всё начинается с того момента, как только игрок выбросит какой-либо предмет из "рюкзака" ГГ - файл bind_stalker.script, функция amk.on_item_drop(obj). Следом срабатывает mod_call("check_for_af_drop",obj), т.е. вызов функции check_for_af_drop(obj), файл amk_mod.script. В которой первым делом определяется имя секции ("секция") выброшенного предмета. Затем секция сверяется по таблице local afs={...}. Итак, предположим, что игрок выбросил из инвентаря артефакт "Плёнка" (секция "af_dummy_pellicle"). В таблице afs такое имя есть - следовательно, этот артефакт входит в список "претендентов" на трансмутацию, поэтому далее функцией get_nearest_anomaly(obj) (файл amk_anoms.script) определяется идентификатор, позиция, радиус действия и расстояние ближайшей аномалии до выброшенного артефакта (в нашем случае "Плёнки"). Затем проверяется, попадает ли "Плёнка" в радиус действия аномалии, если да - то определяется имя секции аномалии и запускается дальнейшая проверка на доступность трансмутации функцией check_af_transform(obj,id,anom_sect) в этом же файле. Следом проверятся, является ли полученная аномалия подходящей для трансмутации выброшенного предмета (для "Плёнки" это будет аномалия "Трамплин"). Чтобы игрок не смог "сварить" артефакт в аномалии без рецепта, проверяется, установлен ли соответствующий инфопоршн. В случае с "Плёнкой" это инфопоршн info_amk_recipt_shkura, определённый в файле info_amk_recipts.xml, при получении которого, кстати, игрок и получает запись с "рецептом" трансмутации в соответствующем разделе PDA. Итак, если инфопрошн info_amk_recipt_shkura установлен, аномалия, в которую выброшен предмет - это "Трамплин", а сам выброшенный предмет - это артефакт "Плёнка", то артефакт тут же уничтожается с эффектом кратковременной засветки экрана, и вызывается функция af_start_transform_timer(af,pos,delay_d,delay_h,delay_m,af_sect) в этом же файле. Как видно, в неё первым параметром передаётся функция af_start_transform(v1,v2,af_from,af_target). На примере "Плёнки" это выглядит так: af_start_transform(70,25,af_sect,"af_armor_1"), где первый параметр - вероятность успешного процесса трансмутации (70), второй - вероятность "вырождения" (25, то есть вероятность получить "Булыжник" (бесполезный артефакт-пустышку) вместо полезного модификата), третий - имя секции выброшенного предмета (у нас это "Плёнка"), и, наконец, четвёртый - имя секции того самого модификата, ради которого всё это и затевалось (в нашем случае это "af_armor_1" - в миру он называется модификат "Шкура"). Функция может вернуть:
1. имя секции целевого модификата (в данном случае "af_armor_1") если ГПСЧ math.random(0,100) выдаст значение менее либо равное 70 - удачная модификация,
2. имя секции иходного предмета (в данном случае "af_dummy_pellicle") если math.random(0,100) выдаст значение более, чем 95 (70+25) - "отторжение", то есть неудачная попытка трансмутации, и вместо модификата будет получен исходный предмет ("Плёнка" в данном случае),
3. имя секции "Булыжника" ("af_buliz") если math.random(0,100) выдаст значение более 70 и менее 95 - "вырождение", то есть вместо модификата будет получен тот самый бесполезный "Булыжник".
Таким образом, в функцию af_start_transform_timer(af,pos,delay_d,delay_h,delay_m,af_sect), а в случае с "Плёнкой" это: af_start_transform_timer(af_start_transform(70,25,af_sect,"af_armor_1"), pos ,0,5,0,"Шкура") первым параметром фактически передаётся имя секции предмета, получаемого в результате трансмутации (либо полезный модификат, либо исходный предмет, либо "Булыжник"), вторым - сохранённая позиция выброшенного предмета (чтобы знать, где заспонить полученный результат трансмутации), третий параметр - дни процесса трансмутации (0), четвёртый - часы процесса трансмутации (5), пятый - минуты процесса трансмутации (0), шестой - имя целевого модификата (в нашем случае - "Шкура"), который в дальнейшем понадобится для получения сообщения о завершении процесса трансмутации и постановки отметки на карте. Далее функцией g_start_timer(name,delay_d,delay_h,delay_m,action), файл amk.script, в данном случае amk.g_start_timer("af_transform",delay_d,delay_h,delay_m,amk.pack_array_to_string(t)), запускается таймер процесса трансмутации, который будет отслеживаться функцией check_timers(), файл amk.script. Последним параметром "упаковываются" в строку и сохраняются имя секции результата трансмутации, позиция, гейм-вертекс, левел-вертекс, и имя целевого модификата. Процесс пошёл!
Итак, прошли необходимые для этого 5 часов игрового времени, и срабатывает экшн "af_transform", заданный для таймера. Вызывается функция
af_transform_end(params), файл amk_mod.script, в которую передаётся "распакованный" массив с сохранёнными ранее данными. В результате на сохранённых координатах будет заспонен один из трёх вариантов трансмутации (полезный модификат, исходный предмет, или "Булыжник"), и выдано сообщение о завершении процесса трансмутации. Несмотря на то, что на карте будет отмечено местоположение результата трансмутации с пометкой "Шкура" (в данном случае), вернувшись туда, запросто можно обнаружить не совсем то (или совсем не то), что мы ожидали :) 

 

Изменено пользователем =VENOM=
  • Полезно 2
Ссылка на комментарий

А если модмейкеру лень читать все эти многабукав или он их не просил, или вообще в гробу видал, но хочется создать свой рецепт варки артефакта в аномалии, то:
1. Создать секцию нового артефакта (необязательно артефакта и необязательно нового - можно вообще любой предмет получить в результате трансмутации).
2. Создать имя и описание нового предмета - и, если необходимо, соответствующего рецепта для трансмутации.
3. Если не хотим, чтобы игрок сварил модификат "без рецепта", создать соответствующий инфопоршн.
4. В таблицу afs файла amk_mod.script добавить имя секции исходного предмета (необязательно артефакта).
5. В функцию check_af_transform(af,anom_id,anom_sect) файла amk_mod.script добавить новое условие для какой-либо аномалии.
Всё, можно пользоваться.
Например, мы возжелали в аномалии "Электра" сварить из пистолета ПМ гранатомёт РПГ-7 (только учтите, что полученный гранатомёт случайно может оказаться в аномалии и будет испорчен вплоть до нуля). Тогда в таблицу afs добавим имя секции пистолета ПМ - "wpn_pm", а в условие проверки аномалии "Электра" - после строки
if string.find(anom_sect,"_galant")~=nil then
добавим строчки:
if af_sect=="wpn_pm" and actor:has_info("agroprom_military_case") then 
    af_flash(af)
    af_start_transform_timer(af_start_transform(100,0,af_sect,"wpn_rpg7"), pos ,0,0,10,"Гранатомёт РПГ-7")
end
В результате после получения задания Сидоровича на документы военных на Агропроме можно закинуть любой ПМ в любую "Электру", и через 10 игровых минут из аномалии со 100% вероятностью "выпадет" новенький РПГ-7. Но до получения задания можно сколько угодно кидаться пистолетами в аномалии - толку не будет никакого.
Вот как-то так.

Изменено пользователем =VENOM=
  • Нравится 2
  • Полезно 1
Ссылка на комментарий

Здравствуйте. При удалении НПС заметил в логе строчки, выделенные зелёным:

- Critical: SMapLocation binded to non-existent object id=734
- Critical: CMapLocation::UpdateSpot binded to non-existent object id=734

Вылета при этом нет, но есть подозрение, что в конце концов добром такое не кончится. В чем дело, кто-нибудь знает? В мап-спотах что ли?

 

New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор

Русификатор для игры Vendetta: Curse of Raven's Cry

Ссылка на комментарий

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

Loading DLL: xrGameSpy.dll
stack trace:
0023:04EE8600 xrGame.dll, xrFactory_Create()
0023:004B9858 XR_3DA.exe, CConsole::ExecuteCommand()
0023:004D25A4 XR_3DA.exe, CConsole::`vftable'
0023:0040A470 XR_3DA.exe, IRender_Visual::Spawn

 

Ссылка на комментарий

@HellRatz, на мой взгляд - делки и экзеха разных компиляций!?

Bin - оригинал?

Рано или поздно это должно было случиться.

 

 

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
4 минуты назад, Дизель сказал:

на мой взгляд

не угадал. Движок ОГСЕ у меня, работало все от самого выхода 0693 (года 2 что ли уже прошло). С другими движками тоже вылетает. Такое ощущение, что что-то сломалось внутри геймдаты, но что именно выяснить похоже не реально и смахивает на тупик.

Добавлено Expropriator,

Причина в gamedata или же в движке ОГСЕ.

Ссылка на комментарий

@HellRatz , в ЗП нет такой функции в движке

0023:0040A470 XR_3DA.exe, IRender_Visual::Spawn

Сейчас гляну в ТЧ. Возможно битая модель или что то.

 

В 1.0004 так же нет такой функции.

В 0.1009 - так же нет. :biggrin:

Изменено пользователем Дизель
Добавлено  HellRatz,

У меня по исходникам 6 патча (Или он же 7ой) все ищет, и даже несколько IRender этих, но что за что там отвечает я не понимаю совершенно.

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

@HellRatz, этих то много - но вот функции такой нет. Причина в модельке или текстуре (есть подозрение).

 

Я нашел даже чем заканчивается лог [error][ 183] : Невозможно создать файл, так как он уже существует.

 

Либо так
001B:04026110 xrGame.dll
001B:004B9858 XR_3DA.exe, CConsole::ExecuteCommand()
001B:004D25A4 XR_3DA.exe, CConsole::`vftable'
001B:0040A470 XR_3DA.exe, IRender_Visual::Spawn

[error][ 126] : Не найден указанный модуль.

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

@HellRatz, может косяк на диске. Переустанови мод. От админа, свойства файлов. Может антивирь чешит файл в этот момент. Перезагрузи систему.

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

@dsh, не, игра стоит не на ССД. Любая другая версия игры (Стоит на ПК чистый ТЧ и НС 16) работают нормально, диск проверял утилитой - пишет здоров как бык. По этому версия с ломающимся диском тут отпадает. 

Ссылка на комментарий
52 минуты назад, Дизель сказал:

Переустанови мод

Достал с облака и откатился на бэкап - не помогло. Перетащил свой мод на другой ТЧ - все загрузилось, во всяком случае до меню. И тогда я понял, что дело в игре как таковой, а не геймдате или папке бин.. Переустановил игру, накатил движок и мод как есть, и о чудо! - работает. Оказывается сломалась сама игра, удалил ее через утилиту и подчистил реестр - подозрительно много странного мусора она оставила в нем. Возможно это в результате некого сбоя, после чего и игра перестала работать. Впервые такое вижу честно говоря, но от сталкира можно ждать чего угодно.. Всем спасибо.

Добавлено Expropriator,

У меня было такое. Причина где то в реестре. Бывает еще и такое, когда экзеха висит в диспетчере и её только можно убить. Еще может влиять путь до файла fsgame на реестр - меняешь путь и игра считай заново установлена.

Ссылка на комментарий

@HellRatz  Хотел предложить Ccleaner, да не успел) У меня похожее было с сталкером и Dirt 2.

Добавлено  HellRatz,

Я удаляю все только через Revo Uninstaller. Чистит хорошо все временные файлы и хвосты, и сразу можно очистить наглядно реестр от оставшегося мусора.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...