Перейти к содержанию

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

 
 

Alpha_Egorovich , нужны файлы с внесёнными изменениями относительно оригинала, чтобы можно было своими глазами посмотреть, что вы там на пару с ИИшницей наколдовали. Ну... или точное описание по правкам, вплоть до запятой. Иначе гадать действительно бессмысленно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

macron я прошу помощи а не критики,я в моддинге буквально недели 2,я не понимаю как и что делать по большей части,а на счет сноса,зачем мне сносить полностью игру,если я знаю виновника.

 


Дополнено 1 минуту спустя

Купер Если прям все файлы то только в дискорд могу скинуть (если хотите помочь,у меня ник такой же в дискорде,буду рад помощи)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Alpha_Egorovich , старожилы правы, ты даже не сказал последовательность действий, после которой вылетела ошибка. Она исходит из движка, не получится просто скинуть ее и получить ответ.
Надеюсь, что хоть сборка рабочая и ты пробовал ее запускать до модифицирования.
Самый главный вопрос: все твои описанные изменения ты сделал сразу, или поочередно менял названия и тестил игру? Если у тебя есть хоть какой-то опыт в программировании, то ты просто обязан знать, что нельзя накатить сразу несколько изменений, не протестив код. Потому что если вылетит ошибка, ты не будешь знать точную причину.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Verrier Да ванильная игра работает,когда добавлял изменения ПООЧЕРЕДНО я все проверял по одному

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
В 18.07.2026 в 00:00, Alpha_Egorovich сказал:

[error]Expression    : fatal error
[error]Function      : CObjectItemSingle<class CUIGameAHunt,1>::server_object
[error]File          : e:\stalker\sources\trunk\xr_3da\xrgame\object_item_single_inline.h
[error]Line          : 54
[error]Description   : <no expression>
[error]Arguments     : Cannot instantiate server object, because server class is not declared!

Ха, редкий же вылет поймал однако) https://modfaq.ru/Object_item_single_inline.h

Эт надо умудриться.

В 18.07.2026 в 00:00, Alpha_Egorovich сказал:

1. Переименовал ГГ
2. Переименовал одного NPC
3. Переименовал один предмет (стандартную куртку)
4. Убрал стартовую куртку через скрипт

1. Это не причем, просто текст.

2. Тоже самое, что и 1.

3. Тоже самое, что и 1.

4. А вот это уже интересно)

12 часов назад, Alpha_Egorovich сказал:

виноват actor.ltx

Ха! А че ты с ним делал? Швырни сюда код под спойлером

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

aka_sektor 

Спойлер

  

7 часов назад, aka_sektor сказал:

Ха! А че ты с ним делал? Швырни сюда код под спойлером 


[actor]
class = actor
community = stalker
; outfit = outfit_novice
max_walk_weight = 50

[actor_condition]
burn_immunity = 1.0
strike_immunity = 1.0
shock_immunity = 1.0
wound_immunity = 1.0
radiation_immunity = 1.0
telepatic_immunity = 1.0
chemical_burn_immunity = 1.0
explosion_immunity = 1.0
fire_wound_immunity = 1.0

Держи

 

7 часов назад, aka_sektor сказал:

4. А вот это уже интересно)

с курткой я не знаю,работает или нет,из за вылетов.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

 

[actor]:common_ph_friction_params_on_npc_death
class                   = O_ACTOR
; community = stalker - это бесполезно в лучшем случае. Задаётся в character_desc_general.xml для профиля ГГ.
; outfit = outfit_novice - по умолчанию задаётся в all.spawn

[actor_condition]
max_walk_weight = 50 ; - это переместить после [actor_condition]

[actor_immunities_gd_novice] ; в зависимости от выбранного уровня сложности игры (новичок/мастер)
burn_immunity = 1.0 ; для каждого уровня сложности свой набор параметров.
...
fire_wound_immunity = 1.0

В общем, штудировать для начала описание здесь: ModFaq и/или Stalkerin.
Наличие/отсутствие параметров и их положение в файле actor.ltx относительно друг друга имеют значение. Определяется к какой именно секции [...] они относятся: например, секция [actor] имеет свой набор обязательных параметров, который должен находится после неё. [actor_condition] - свой. Произвольно перемещать строчки с параметрами нельзя. Т.е., для каждой секции [...] в файле движок последовательно вычитывает строго предопределённый для неё набор параметров.

Изменено пользователем Купер
  • Жму руку 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
6 часов назад, Alpha_Egorovich сказал:

class = actor

должен быть class = O_ACTOR

  • Жму руку 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Где лежат сюжетные квестовые диалоги, к примеру начальный диалог с сидоровичем?

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
2 часа назад, Alpha_Egorovich сказал:

Где лежат квестовые диалоги

Наверно в config\text\rus\stable_task_manager.xml

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
В 21.07.2026 в 13:43, Alpha_Egorovich сказал:

Где лежат

Есть универсальный способ поиска, отвечающий на этот вопрос и другие подобные: https://modfaq.ru/Шаблон:Поиск_по_файлам

Нужно только конфиги игры распаковать.

Ищешь например "Сидорович", находит файл stable_bio_name.xml

Открываешь этот файл, ищешь в нём "Сидорович". Находишь секцию "escape_trader_name".

Ищешь "escape_trader_name". Находишь файл "character_desc_escape.xml".

Открываешь этот файл, ищешь в нём "escape_trader_name". Находишь секцию с id "escape_trader".

А это ничто иное, как: https://modfaq.ru/Профиль_NPC

В нём то как раз и прописан искомый:

В 21.07.2026 в 13:43, Alpha_Egorovich сказал:

начальный диалог с сидоровичем

А именно:

		<actor_dialog>escape_trader_talk_info</actor_dialog>

А уж какой именно будет в этот самый момент времени доступен, зависит уже от полученных инфопорций.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Подскажите в чем может быть проблема.
Я с нуля создаю все спавн объекты в OLR 3.0. 
В LE поставил Сидоровича за стол, но в игре его поднимает настолько, что он "стоит" на столе в позе сидения.
Пробовал поставить его в свободное место, там его не поднимает. Поэтому я думаю, что это из-за конфликта коллизии спавн объекта и статичного стола. 
Привожу в сравнение распакованные спавны моего творения и оригинальной OLR 3.0, а также секцию m_trader.
Направьте меня в нужное русло.

Спойлер

[37]

 

; cse_abstract properties

section_name = m_trader

name = lvl1_escape_m_trader

position = -221.376998901367, -12.6280002593994, -123.654602050781

direction = 0, -1.60740029811859, 0

id = 65535

version = 118

script_version = 7

spawn_id = 37

 

; cse_alife_object properties

game_vertex_id = 0

distance = 3.0064771e+009

level_vertex_id = 53370

object_flags = 0xffffffbf

custom_data = <<END

[smart_terrains]

none = true

 

[logic]

cfg = scripts\esc_trader.ltx

END

 

; cse_visual properties

visual_name = actors\trader\trader_sidor

 

; cse_alife_trader_abstract properties

money = 1000000

trader_flags = 0

character_profile = escape_trader

Спойлер

[19046]

 

; cse_abstract properties

section_name = m_trader

name = escape_trader_0000

position = -221.37712097168, -12.6280031204224, -123.654685974121

direction = 0, -1.42559194564819, 0

id = 65535

version = 118

script_version = 7

spawn_id = 357

 

; cse_alife_object properties

game_vertex_id = 0

level_vertex_id = 416089

object_flags = 0xffffff7b

custom_data = <<END

[smart_terrains]

none = true

 

[logic]

cfg = scripts\levels\escape\esc_toad.ltx

END

story_id = 3

 

; cse_visual properties

visual_name = actors\trader\trader_toad

 

; cse_alife_trader_abstract properties

money = 1000000

trader_flags = 0

character_profile = escape_trader

Спойлер

[m_trader]

GroupControlSection = spawn_group

$spawn                      = "monsters\trader"     ; option for Level Editor

$prefetch                   = 5

cform                       = skeleton

class                       = AI_TRD_S ;AI_TRADE

visual                      = actors\trader\trader

rank                        = 1

script_binding                  = bind_monster.bind

; format : section{,section},count,min_factor,max_factor, ...

;supplies                   = m_bread,50,0.5,1.5, CANNED,30,0.5,1.5, MEDI_KIT,7,0,0.7, DETECTOR_SIMPLE,3,0,0.6, WPN_BINOC,1,0,0.70, WPN_FORT,WPN_PM,3,0.3,0.8, WPN_LR300,WPN_AK47,2,0.3,0.65, WPN_SVD,1,0,0.53, WPN_RPG7,1,0,0.53, grenade_f1,15,0,1.0, ammo_5.45x39_ap,ammo_5.45x39_fmj,50,0,1.0, ammo_5.56x45_ap,ammo_5.56�45_ss190,50,0,1.0, ammo_9x19_fmj,50,0,1.0, ammo_7.62�54_fmj,10,0,1.0, ammo_og-7b,10,0,1.0

supplies                    = grenade_f1,15,0,1.0, ammo_5.45x39_ap,ammo_5.45x39_fmj,50,0,1.0, ammo_5.56x45_ap,ammo_5.56�45_ss190,50,0,1.0, ammo_9x19_fmj,50,0,1.0, ammo_7.62x54_ap,10,0,1.0, ammo_og-7b,10,0,1.0

max_item_mass               = 10000.0

 

;---EVALUATION FUNCTIONS----------------------------------------------

ef_creature_type            = 1                         ; option for evaluation functions

ef_weapon_type              = 1

 

scheduled            = on                       ; option for ALife Simulator

Human                = off                      ; option for ALife Simulator

Health               = 40                       ; option for ALife Simulator

MinSpeed             = 1.0                      ; option for ALife Simulator

MaxSpeed             = 1.5                      ; option for ALife Simulator

going_speed          = 1.0                      ; option for ALife Simulator

 

ph_box0_center       = 0.0,  0.9,  0.0

ph_box0_size         = 0.35, 0.9,  0.35

ph_box1_center       = 0.0,  0.6,  0.0

ph_box1_size         = 0.40, 0.6,  0.40

ph_crash_speed_min   = 8;16

ph_crash_speed_max   = 16;30

ph_mass              = 170.

cost                 = 1


 

Health               = 100.0

money                = 1000000

 

immunities_sect             = trader_immunities

condition_sect              = trader_condition

 

; attach params

attachable_items        =


 

;species of monster

species             = human

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Verrier попробуй поменять object_flags на 0xffffff7b. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

macron Мысль хорошая, но это не помогло.
Нельзя ли как-то заставить spawn объект стоять на месте, игнорируя всю коллизию? Не просто быть несдвигаемым, а быть призраком?
 

Спойлер

image.thumb.png.519c92e0669bf399b9692832039ae134.png

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Verrier а модель и анимации торговца и модель стула идентичны оригиналу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

macron Модель была оригинальная и с ней была точно такая же проблема. Потом поменял на другого Сидора, потому что он покрасивее.
С анимациями непонятная для меня ситуация. В распакованном спавне оригинальной OLR Сидор ссылается на не существующий файл scripts\levels\escape\esc_toad.ltx. Я же наткнулся на файл scripts\esc_trader.ltx и указал его в логике. Анимации работают, но может быть именно в них проблема.
 

Спойлер

[logic]

active = mob_trader@new_idle1

on_trade = mob_trade@new

trade = misc\trade_trader.ltx

 

; ------------------------------------------------------------------------------------------------------

; СТАРТ

; ------------------------------------------------------------------------------------------------------

 

; Ждем немного

[mob_trader@new_start_wait]

anim_global = chair_hack_idle

on_timer = 25000| mob_trader@new_start_intro1

can_talk = true

tip_text =

 

;Подвигаемся к игроку

[mob_trader@new_start_intro1]

anim_global = chair_hack_to_desk

on_signal = animation_end| mob_trader@new_start_intro2 %+esc_trader_hello_played%

can_talk = true

tip_text =

 

;Первая фраза "я тебя спас..."

[mob_trader@new_start_intro2]

anim_global = first_phrase_2

anim_head   = first_phrase

sound_phrase = trader_monolog1

on_signal = animation_end| mob_trader@new_start_intro3

can_talk = true

tip_text =

 

; Ждем немного, включаем управление

[mob_trader@new_start_intro3]

anim_global = desk_idle

tip = tips_esc_trader_how_to_talk

on_info = {=talking} mob_trader@new_idle1

on_timer = 5000 | mob_trader@new_start_intro4


 

; Говорим вторую фразу (что стоишь? подходи)

[mob_trader@new_start_intro4]

anim_global = desk_talk

anim_head = normal

sound_phrase = trader_come_here2

on_signal = sound_phrase_end | mob_trader@new_idle1

;on_info = {=talking} mob_trader@new_idle1 ; обрывать фразу

on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%

 

;----------------------------------

;------------- Idle ---------------

;----------------------------------

 

;Основной idle (1) - за столом

[mob_trader@new_idle1]

anim_global = desk_idle

on_signal = animation_end| {~25} mob_trader@new_idle1_to_idle3, {~50} mob_trader@new_idle1_to_idle5, {~75} mob_trader@new_idle1_to_idle2, mob_trader@new_idle1_to_idle1

on_info = {=talking} mob_trader@new_idle1_to_idle3

on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%

on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait

 

; Idle (2) - по диагонали

[mob_trader@new_idle2]

anim_global = diagonal_idle

on_signal = animation_end| {~25} mob_trader@new_idle2_to_idle3, {~50} mob_trader@new_idle2_to_idle4, {~75} mob_trader@new_idle2_to_idle1, mob_trader@new_idle2_to_idle2

on_info = {=talking} mob_trader@new_idle2_to_idle3

on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%

on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait

 

; Idle (3) - откинувшись на спинку

[mob_trader@new_idle3]

anim_global = chair_hack_idle

on_signal = animation_end| {~30} mob_trader@new_idle3_to_idle2, {~70} mob_trader@new_idle3_to_idle1, mob_trader@new_idle3_to_idle3

on_info = {=talking} mob_trader@new_talking

on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%

on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait

 

; Idle (4) - за компьютером

[mob_trader@new_idle4]

anim_global = compute_idle

on_signal = animation_end| {~40} mob_trader@new_idle4_to_idle2, mob_trader@new_idle4_to_idle4

on_info = {=talking} mob_trader@new_idle4_to_idle2

on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%

on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait

 

; Idle (5) - читает

[mob_trader@new_idle5]

anim_global = listen_idle

on_signal = animation_end| {~45} mob_trader@new_idle5_to_idle1, mob_trader@new_idle5_to_idle5

on_info = {=talking} mob_trader@new_idle5_to_idle1

on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%

on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait

 

;----------------------------------

;--------   Автопереходы   --------

;----------------------------------

 

; Стол - стол (промежуточная)

[mob_trader@new_idle1_to_idle1]

anim_global = desk_idle

on_signal = animation_end| mob_trader@new_idle1

 

; Диагональ - диагональ (промежуточная)

[mob_trader@new_idle2_to_idle2]

anim_global = diagonal_idle

on_signal = animation_end| mob_trader@new_idle2

 

; Спинка - спинка (промежуточная)

[mob_trader@new_idle3_to_idle3]

anim_global = chair_hack_idle

on_signal = animation_end| mob_trader@new_idle3

 

; Компьютер - компьютер (промежуточная)

[mob_trader@new_idle4_to_idle4]

anim_global = compute_idle

on_signal = animation_end| mob_trader@new_idle4

 

; Читает - читает (промежуточная)

[mob_trader@new_idle5_to_idle5]

anim_global = listen_idle

on_signal = animation_end| mob_trader@new_idle5

 

;----------------------------------

;----- Переходы  между idle-ми ----

;----------------------------------

 

; Диагональ - компьютер

[mob_trader@new_idle2_to_idle4]

anim_global = diagonal_to_compute

on_signal = animation_end| mob_trader@new_idle4

 

; Компьютер - диагональ

[mob_trader@new_idle4_to_idle2]

anim_global = compute_idle_to_diagonal

on_signal = animation_end| mob_trader@new_idle2

 

; Диагональ - спинка

[mob_trader@new_idle2_to_idle3]

anim_global = diagonal_to_chair_hack

on_signal = animation_end| {=talking} mob_trader@new_talking, mob_trader@new_idle3

 

; Спинка - диагональ

[mob_trader@new_idle3_to_idle2]

anim_global = chair_hack_to_diagonal

on_signal = animation_end| mob_trader@new_idle2

 

; Стол - спинка

[mob_trader@new_idle1_to_idle3]

anim_global = desk_to_chair_hack

on_signal = animation_end|{=talking} mob_trader@new_talking, mob_trader@new_idle3

 

; Спинка - стол

[mob_trader@new_idle3_to_idle1]

anim_global = chair_hack_to_desk

on_signal = animation_end| mob_trader@new_idle1

 

; Стол - диагональ

[mob_trader@new_idle1_to_idle2]

anim_global = desk_to_diagonal

on_signal = animation_end| mob_trader@new_idle2

 

; Диагональ - стол

[mob_trader@new_idle2_to_idle1]

anim_global = diagonal_to_desk

on_signal = animation_end| mob_trader@new_idle1

 

; Стол - читает

[mob_trader@new_idle1_to_idle5]

anim_global = desk_to_listen

on_signal = animation_end| mob_trader@new_idle5

 

; Читает - стол

[mob_trader@new_idle5_to_idle1]

anim_global = listen_to_desk

on_signal = animation_end| mob_trader@new_idle1


 

;--------------------------------------

;------------- Разговор ---------------

;--------------------------------------

 

[mob_trader@new_talking]

anim_global = chair_hack_talk

anim_head = normal

on_info = {!talking} mob_trader@new_idle3

 

;--------------------------------------

;------------ Торговля ----------------

;--------------------------------------

 

[mob_trade@new]

anim_global = chair_hack_idle

on_info = {=trading =trade_exchanged} mob_trader@new_trade_exchanged

on_info2 = {!trading =trade_exchanged} mob_trader@new_trade_good

on_info3 = {!trading !trade_exchanged} mob_trader@new_trade_bad

 

[mob_trader@new_trade_bad]

;anim_global = diagonal_talk

anim_global = chair_hack_idle

anim_head = angry

;sound_phrase = trader_bad_trade

on_signal = sound_phrase_end | mob_trader@new_idle2

on_actor_dist_ge_nvis = 12 | mob_trader@new_wait

 

[mob_trader@new_trade_exchanged]

;anim_global = diagonal_talk

anim_global = chair_hack_idle

anim_head = normal

;sound_phrase = trader_exchanged

on_signal = sound_phrase_end | mob_trader@new_idle2

on_actor_dist_ge_nvis = 12 | mob_trader@new_wait

 

[mob_trader@new_trade_good]

;anim_global = diagonal_talk

anim_global = chair_hack_idle

anim_head = good

;sound_phrase = trader_good_trade

on_signal = sound_phrase_end | mob_trader@new_idle2

on_actor_dist_ge_nvis = 12 | mob_trader@new_wait


 

;-------------------------------------

;---------- Приветствия --------------

;-------------------------------------

 

[mob_trader@new_hello]

anim_global = hello

anim_head = normal

sound_phrase = trader_hello_what_have_you_got

on_signal = animation_end | mob_trader@new_idle2

 

[mob_trader@new_bye]

on_actor_dist_ge_nvis = 12 |mob_trader@new_wait

anim_global = hello

anim_head = normal

;sound_phrase = trader_bye

on_signal = animation_end | mob_trader@new_wait

 

[mob_trader@new_wait]

anim_global = diagonal_idle_short

on_actor_dist_le_nvis = 3 | {-esc_trader_hello_played} mob_trader@new_hello %+esc_trader_hello_played%

on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%

on_actor_dist_ge_nvis2 = 12    | %-esc_trader_hello_played -esc_trader_bye_played%

 


Кстати я заметил, что много где упоминается каталог scripts\levels\. Но как игра находит нужные файлы, если их попросту не существует?
Стул попробую сейчас посмотреть в оригинале и подобрать визуалку в моем моде.

Изменено пользователем Verrier
Заменил на оригинальную логику

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
5 минут назад, Verrier сказал:

много где упоминается каталог scripts\levels\. Но как игра находит нужные файлы, если их попросту не существует?

если файл который прописан у спавн объектов в логике не существует игра его просто не использует, считается что это обычный объект без логики.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

CiberZold А как тогда в OLR Сидор использует анимации?
Я попробовал указать путь к логике как в оригинале. Вылетела ошибка о том, что такого файла нет. Так кроме этого Сидор коллапсировался в кучку)

Спойлер

image.png.14508b54e6b63e02e1e2135b3de28539.png

Хм, мне кажется кстати, что без логики его не подняло: тело находится там, где надо


Дополнено 37 минуты спустя

Ну короче отодвинул я Сидора немного от стола, и все заработало.

Изменено пользователем Verrier
  • Мастер! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек. Оставаясь на сайте, вы подтверждаете свое согласие на их использование. Политика конфиденциальности | Условия использования