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

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


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

как вариант прописать новую текстуру прямо в модели, открыв её Нотепадом++.

Иной раз у меня модель становилась нерабочая после правки нотепадом. Лучше делать такое через какой-нибудь НЕХ-редактор.

 

А еще лучше через Actor Editor (предварительно конвертнув модель в нужный формат) + не придется париться о количестве символов в названии текстуры.

Изменено пользователем Shadows
Ссылка на комментарий

 

 



Лучше не пытаться удалять непися прямо из диалога.

Все,   спасибо за помощь, общими усилиями сделали, все работает как нужно! Спасибо всем кто откликнулся.

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

Особенность вызова функций (action) из диалогов в том, что движок игры обращается к глобальной метатаблице '_G' и, если там нет необходимых функций, может ничего не делать, а может и выдать ошибку.

Т.о. если вы добавляете свои файлы (и функции из них) и используете в диалогах - требуется позаботиться, чтобы ваш файл/функция заранее (до диалога) попали в глобальную метатаблицу. Это можно сделать или простым обращением к файлу/функции (if my_file then ...) или prefetch("my_file").

В общем читаем мануалы по Lua.  ;)

  • Нравится 2

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

 

 


Лучшее спасибо - сказать как именно сделал.
Добрый всем вечер. Вобще-то мне подсказали, вот из чего состоит схема
Ссылка на комментарий

, мде...

Я вроде пытался тут опубликовать готовую схему. Но толи её потерли, толи я не нажал кнопку "отправить". Склоняюсь к первому. Упс. О чем это я...Ааа, так зачем биндер то использовать?

1. Выдаем из диалога поршень.

2. Из файла инфовэй, где регистрируем поршень, вызываем функцию удаления.

3. Ну и собственно сама функция.

 

 

Результат. Никаких биндеров и таймеров. И всего три пункта.

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

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

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

Твой НПС наверняка под своей логикой, а значит, вполне ему в эту логику можно добавить ситуацию с диалогом, после которой он не удаляется сразу (иль по таймеру, т.к. актор/игрок может это время и глазеть на него), а удалится по условию, например, "актор отошел на некоторое расстояние и не видит его" ... (все это есть в оригинальной игре). Т.о. и результат будет получен и игрок не будет тебя пугать за "чудеса с испарениями" в игре.

  • Нравится 1
  • Не нравится 1

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Подскажите, есть ли возможность отследить, что ГГ за рулём машины? А точнее, есть ли какой-нибудь системный инфопоршень, который отслеживает этот момент, как например с инвентарём или пда.

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

@ins33, нет штатных инфопоршней, сообщающих о "актор за рулем", но есть функция для объекта машин: obj:get_car():engaged() - которой можно это проверять.

Загляни в топик "Справочник по функциям и классам" или посмотри примеры использования в модах с машинами (например, в OGSE).

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Подскажите если конечно я так спросил, в алспавне на милитари прописан Винтарез, тот что в казарме, я вместо него вписал мп5,  он не заспавнился, что я не так сделал?

; cse_abstract properties


section_name = wpn_mp5
name = mil_wpn_mp5
position = 69.3968811035156,-4.66659641265869,20.6385898590088
direction = -0.0117830196395516,-0.000269456097157672,-0.0228647161275148
version = 118
script_version = 6

; cse_alife_object properties
game_vertex_id = 1582
distance = 42.7000007629395
level_vertex_id = 367081
object_flags = 0xffffffbf

; cse_visual properties
visual_name = weapons\mp5\wpn_mp5

; cse_alife_inventory_item properties
condition = 0.999999582767487
upd:num_items = 0

; cse_alife_item_weapon properties
ammo_current = 30
upd:condition = 1
upd:weapon_flags = 0
upd:ammo_elapsed = 0
upd:addon_flags = 0
upd:ammo_type = 0
upd:weapon_state = 0
upd:weapon_zoom = 0
upd:current_fire_mode = 0

 

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

@Хемуль36рус, судя по приведенной информации, твой ствол должен заспавниться, т.к. основные параметры для спавна указаны корректно.

Кроме 'upd:condition = 1', все остальные 'upd:xxx = x' - излишни (указывать не обязательно), т.к. являются дефолтными и их движок при спавне просто проигнорирует.

Если твой uACDC не ругнулся ошибками при компиляции all.spawn'а, то остается предположить (т.к. не указано: чистая игра иль с модами!), что у тебя или может работать какой-то чистильщик объектов локаций или работать схема собирательства, и кто-то успел подобрать ствол...

Кстати, не помню даже для чистой игры - нет ли там поблизости неписей? Если есть, то даже оригинальная движковая схема подбора предметов может сработать, т.к. в отличии от оригинального винтореза, который не все подбирают (зависит от ранга), на твой mp5 позариться любой новичок...

Если кто подобрал, то можно проверять, а вообще заспавнен ли ствол, получив его серверный объект: alife():object("mil_wpn_mp5") и выведя в лог иль на экран соотв. инфу.

Совет: обнови версию uACDC, чтобы "мусор" не беспокоил.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

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

Intrel Core i5 9400F, msi gtx 1660 super ventus, RAM 16g-DDR4, HD 2000g, Win 10x64, SSD 256g, SSD m2 500g.

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

Вот пример секции из оригинального alife_l01_escape.ltx (распакован ACDC 1.27):

[102]

; cse_abstract properties
section_name = physic_object
name = vedro_0007
position = -179.066909790039, -20.1019878387451, -140.893676757813
direction = 0.03852479159832, -0.00217132666148245, 0.056316215544939
version = 118
script_version = 6

 

; cse_alife_object properties
game_vertex_id = 0
level_vertex_id = 3978
object_flags = 0xfffffffa

 

; cse_visual properties
visual_name = physics\decor\vedro_01

 

; cse_ph_skeleton properties
skeleton_name =
skeleton_flags = 1

 

; cse_alife_object_physic properties
physic_type = 0x3
mass = 10
skeleton_flags = 1
source_id = 65535 

 

повторяющийся параметр - имеет смысл или просто ляп ?



Задача - прикрутить зацикленный звук к объекту, спаунящемуся из all.spawn.

[logic]
active = ph_sound@generator

[ph_sound@generator]
snd = work_generator
looped = true

Сам звук - ambient\marsh_generator.ogg, в sound_theme.script схему прописал. Все работает, но присутствует явно различимый "переход" на повторе звука - провал в долю секунды.

Вопрос: провал в звуке - это особенность работы схемы с флагом looped = true или-же есть смысл ковырять сам звук в каком-то редакторе ?

 

 

 

 

 

 

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

@Fireball.Stalker,

открыть модель НЕХ-редактором, поменять название текстуры, соблюдая количество символов, например coal.dds на coad.dds, саму текстуру переименовать и перекрасить. Либо создать новую с именем coad.dds.

Изменено пользователем Капрал Хикс
Ссылка на комментарий

@AndreySol, почему-то не нашел у себя этого звука. Да ты сам глянь его АЧХ в любом редакторе. Если есть повышение громкости в начале, или понижение в конце, значит правь звук. Да и вообще, слепи из него что-нибудь длинное - секунд на 30-40. Тогда никто не заметит перепадов.

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

@AndreySol, приведенная тобою секция с дублями 'skeleton_flags' - ТУФТА.

1. Не может имя параметра повторяться дважды в одной секции. Хотя значения этих параметров в сэйве/игре - бинарная последовательность и не имеют имен, но ACDC не может / не должен дублировать имена.

2. Значение  'skeleton_flags = 1' - подтверждает "туфту", т.к. это должно быть отображено в 16-тиричном формате (hex). Да и не может набор флагов составлять 1 (единицу)!

...

Подозреваю, что кто-то по ошибке скопипастил дубли строк не в то место...

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Добрый день!!!

Уже долгое время мучаюсь вопросом и не могу закончить мод. В игре существует 2 класса это группа сталкеров и монстры, соответственно в файле game_relations регулируются их взаимоотношения по типу: "друг" - "враг" - "нейтрал".

 

Для актора и сталкеров


[communities_relations]
; |actor |act_dol|act_fre|stalker|monolit|militar|killer |ecolog |dolg |freedom|bandit |zombied|strange|trader |arena_enemy|zone|
;=================================================================================================================================
actor = 0, 0, 0, 100, -5000, -5000, -5000, 600, 0, 0, -5000, -5000, 0, 5000, -5000, 0
actor_dolg = 0, 0, 0, 0, -5000, -500, -5000, 5000, 600, -5000, -5000, -5000, 0, 0, -5000, 0
actor_freedom = 0, 0, 0, 0, -5000, -5000, -5000, -1500, -5000, 5000, 0, -5000, 0, 0, -5000, 0

stalker = 100, 0, 0, 0, -5000, -5000, -5000, 0, 0, 0, -5000, -5000, 0, 0, -5000, 100
monolith = -5000, -5000, -5000, -5000, 5000, -5000, -5000, -5000, -5000, -5000, 5000, 5000, -5000, 0, -5000, -5000
military = -5000, -5000, -5000, -5000, -5000, 5000, -5000, 0, -5000, -5000, -5000, -5000, 0, 0, -5000, 0
killer = -5000, -5000, 0, -5000, -5000, -5000, 5000, -5000, -5000, -5000, 600, -5000, -5000, 0, -5000, -5000
ecolog = 600, 600, -5000, 0, -5000, 1000, -5000, 5000, 500, -5000, -500, -5000, 0, 0, 0, 600
dolg = 0, 600, -5000, 0, -5000, -500, -5000, 5000, 5000, -5000, -5000, -5000, 0, 0, 0, 0
freedom = 0, -5000, 600, 0, -5000, -5000, -5000, -1500, -5000, 5000, 0, -5000, 0, 0, 0, 0
bandit = -5000, -5000, 0, -5000, 0, -500, 600, -5000, -5000, 0, 0, -5000, -5000, 0, -5000, -5000
zombied = -5000, -5000, -5000, -5000, 5000, -5000, -5000, -5000, -5000, -5000, -5000, 5000, -5000, 0, -5000, -5000
stranger = 0, 0, 0, 0, -5000, -5000, -5000, 0, 0, 0, -500, -5000, 0, 0, 0, 0
trader = 5000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5000
arena_enemy = -5000, -5000, -5000, -5000, -5000, -5000, 0, 0, 0, -5000, -5000, 0, 0, 0, 0, -5000
zone = 100, 0, 0, 0, -5000, 0, -5000, 5000, 0, 0, -5000, -5000, 0, 0, -5000, 0

Для актора и монстров
[monster_relations]
; [1] друг, [0] нейтрал, [-1] враг, [-2] злейший враг
; actor,human,arena_monstr, boar, bloodsucker, flesh, dog, pseudodog, cat, chimera, giant, zombie, burer, controller, poltergeist, snork, fracture, bird, rat, tushkano
;==========================================================================================================================================================================
actor = 1, 1, -2, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1
human = 0 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1
arena_monstr = -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
boar = -2, -2, 0, 1, -1, 0, -1, -1, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0
bloodsucker = -2, -2, 0, -1, 1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0
flesh = -2, -1, 0, 0, -1, 1, -1, -1, 0, 0, -1, -1, 0, -1, -1, 0, 0, 0, 0, 0
dog = -2, -1, 0, -1, 0, -1, 1, 0, -1, 0, -1, 0, -1, -1, -1, 0, 0, 0, 0, 0
pseudodog = -2, -1, 0, -1, 0, -1, 0, 1, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0
cat = 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
chimera = -2, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0
giant = -2, -1, 0, -1, 0, -1, -1, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
zombie = -2, -1, 0, 0, -1, -1, 0, 0, 0, -2, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1
burer = -2, -2, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
controller = -2, -2, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0
poltergeist = -2, -1, 0, -1, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0
snork = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0
fracture = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
bird = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0
rat = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0
tushkano = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1


 

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

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

Заранее благодарю кто откликнется.

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

Жизнь следует измерять поступками, а не временем...

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

@losiara,

параметр friend community overrides в конфиге монстра глянь. ЕМНИП там указываются дружественные группировки.

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

 Капрал Хикс

Такого параметра в монстрячих конфигах "m_.....ltx" я не обнаружил.

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

Жизнь следует измерять поступками, а не временем...

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

 

Подозреваю, что кто-то по ошибке скопипастил дубли строк не в то место...

 

 

Извините, Artos, но не понял что это означает.

Есть all.spawn от чистого ТЧ 1.0005. Есть ACDC 1.27. Распаковываю этот all.spawn с помощью этого ACDC и получаю конкретно в alife_l01_escape.ltx для двух объектов:

[102]

; cse_abstract properties

section_name = physic_object

name = vedro_0007

position = -179.066909790039, -20.1019878387451, -140.893676757813

direction = 0.03852479159832, -0.00217132666148245, 0.056316215544939

version = 118

script_version = 6

; cse_alife_object properties

game_vertex_id = 0

level_vertex_id = 594270

object_flags = 0xfffffffa

; cse_visual properties

visual_name = physics\decor\vedro_01

; cse_ph_skeleton properties

skeleton_name =

skeleton_flags = 1

; cse_alife_object_physic properties

physic_type = 0x3

mass = 10

skeleton_flags = 1

source_id = 65535

 

.....................

 

[143]

; cse_abstract properties

section_name = physic_object

name = vedro_0001

position = -112.361404418945, -30.1370162963867, -393.068908691406

direction = -0.0343178249895573, 9.07830180949532e-005, 0.00264587346464396

version = 118

script_version = 6

; cse_alife_object properties

game_vertex_id = 0

level_vertex_id = 594270

object_flags = 0xfffffffa

; cse_visual properties

visual_name = physics\decor\vedro_01

; cse_ph_skeleton properties

skeleton_name =

skeleton_flags = 1

; cse_alife_object_physic properties

physic_type = 0x3

mass = 10

skeleton_flags = 1

source_id = 65535 

 

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

Возможно проблема в ACDC, но на данный момент ссылка на 1.35 не рабочая, как только обновят, проверю на свежей версии.

=================================

Ссылка на ACDC 1.35  в шапке ЭТОЙ темы вполне себе рабочая. Только что проверил.

BFG

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

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

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

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

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

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

Войти

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

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

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