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

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


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

vavilov8

пост malandrinus'a #202

Читайте внимательно тему справочник по функциям и классам.

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

Хочу сделать, чтобы на локациях постоянно велись перестрелки. Чтобы нпс и монстры часто спавнились. Подскажите способы как это можно сделать. Я всё время путаю спавн и респавн. К примеру лагерь новичков. Они иногда респавнятся. Но в алл.спавн я респавнера для их класса не нашёл. И респавнятся они через долгое время. А мне надо быстрее. Можно ли спавнить нпс через такую функцию, чтобы вызывалась через опредёлённые промежутки времени?

Ссылка на комментарий
Но в алл.спавн я респавнера для их класса не нашёл

Найдите в all.spawn смарт с именем "esc_lager", там в customdata есть ссылка на этот респавн.

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

Полтергейст, но ведь там ссылка на респавн вещей в ящике. А я говорю про людей.

Лучше я напишу, что хотел сделать и что у меня получилось.

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

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

У новичков в лагере класс "esc_stalker_novice". Для такого класса респавнера я не видел. Но ведь они после смерти потом вновь появляются. Зато есть респавнер для класса "sim_stalker_novice"

 

 

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

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

создал я смарт лагеря, мне надо чтоб НПС проигрывал анимацию "стоин у столика" как в баре, в логике смарта даже намека на анимации нет

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

mma, изменить вместимость мало, нужно для этих мест еще и работы дописывать, чего, как понял я, ты не сделал. А респавн и правда зависит от наличия свободных работ гулага на уровне. Еще посмотри файлы в папке misc, а именно: smart_terrain_presets.ltx, general_lager.ltx и general_lair.ltx.

 

Batment, а при чем тут логика смарта!? Посетители в баре, причем на сколько мне известно - все, не под смартом там стоят, у них своя логика в кустом дате, вот напримар, логика охотника:

[smart_terrains]
none = true

[logic]
active = walker

[walker]
path_walk = bar_bar_visitor_hunter_walk
path_look = bar_bar_visitor_hunter_look
soundgroup = bar_visitors1
meet = meet
danger = danger_ignore
on_info = {+bar_bar_hunter_quest_finish} walker@2

[walker@2]
path_walk = bar_bar_visitor_hunter_walk
path_look = bar_bar_visitor_hunter_look_1
soundgroup = bar_visitors1
meet = meet
danger = danger_ignore


[danger_ignore]
ignore_distance = 0

[meet]
use = true
use_wpn = true
meet_talk_enabled = true
meet_state = ward

 

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

Batment

Можно использовать логику remark, в которой в параметре anim задать одну из анимок бармена:

bar_head, bar_fas, bar_sleep, bar_right, bar_left и т.д.

На обычном NPC точно работает анимка bar_sleep - NPC будет стоя спать, положив голову на руки. Остальные проверь сам.

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

Возможно ли сделать для артефакта полосу состояния, т.е "спелось артефакта" при уроне артефакта или при длительном ношении, чтобы артефакт портился?

(Ну как у брони допустим)

Если можно, то как?

Колбэки? Или как-то проще можно сделать?

Изменено пользователем Куфзук
87728-stalker.gif
Ссылка на комментарий

Привязываешь значение изношености к полоске и вешаешь на апдейт, как-то так. В НЛС6 вроде бы как артефакты имеют "состояние целостности", глянь там.

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

Gonarh,

 

физ.обьект легко на счет костра не уверен

юзаемый балон

алл спавн

 

[117]

; cse_abstract properties

section_name = physic_object

name = trader_physic_object0007

position = -250.935073852539,-24.7987232208252,-135.995330810547

direction = 0,4.36330795288086,0

 

; cse_alife_object properties

game_vertex_id = 0

distance = 0

level_vertex_id = 594270

object_flags = 0xfffffffa

custom_data = <<END

[collide]

ignore_static

 

[logic]

cfg = scripts\esc_balon.ltx

END

 

; cse_visual properties

visual_name = physics\balon\balon_01

 

; cse_ph_skeleton properties

skeleton_name =

 

; cse_alife_object_physic properties

physic_type = 0x3

mass = 10

 

 

логика

 

[logic]

active = ph_idle

 

[ph_idle]

tips = tip_bolon

on_use = %=функция из хр ефект% уменя ГГ Засыпает

 

function функция из хр ефект()

sleep_manager.sleep_three_hours()

end

пробовал и родные функции из хр ефект такие как

function yan_gluk (actor, npc)

function x18_gluk (actor, npc)

все работает

в string_table_ui.xml что будет написанно ну и сам tip_bolon

</string>

<string id="tip_gate_locked">

<text>Ворота заблокированы</text>

</string>

<string id="tip_gate_open">

<text>Нажмите ($$ACTION_USE$$) для того, чтобы открыть ворота</text>

</string>

<string id="tip_monolith">

<text>ЗАГАДАТЬ ЖЕЛАНИЕ ($$ACTION_USE$$)</text>

</string>

<string id="tip_bolon">

<text>ля ля юзни меня ($$ACTION_USE$$)</text>

</string>

</string_table>

 

Ну и при юзе срабатывает функция

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

Может кто подсказать-какой параметр отвечает за отдачу у НПС? Ато вооружил непесей FN FALами а они первые две пули в цель остальные ствол задирает и палит в воздух как полоумный.

 

Сообщение от модератора Cyclone
cam_relax_speed_ai и zoom_cam_relax_speed_ai

 

Cyclone а какие примерно значения надо ставить? В конфигах этот параметр не прописан.

 

Просто дописывай рядом с основными и ставь например, = 360

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

Prefiero morir de pie, que vivir siempre arrodillado.
 

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

Всем привет. Делаю небольшой аддон для мода Восстановление старого сюжета. Хотелось бы чтобы после уничтожении бтра на кордоновский блокпост прилетал вертолет, как в амк моде. Что и сделал, заспаунил вертолет в all.spawn, добавил ему логику -

[logic]

active = heli_move@idle

 

[heli_move@idle]

path_move = heli_blockpost_idle_move

engine_sound = false

on_info = {=gulag_casualities_ge(esc_blokpost:8)} heli_move@fly, {+esc_btr_killed} heli_move@fly

combat_safe_altitude = -50

 

[heli_move@fly]

path_move = heli_blockpost_fly

engine_sound = true

combat_enemy = actor

combat_use_rocket = true

combat_use_mgun = true

rocket_delay = 3000

combat_safe_altitude = -70

on_timer = 120000 | heli_move@retreat

 

[heli_move@retreat]

path_move = heli_blockpost_idle_move

engine_sound = true

combat_use_rocket = false

combat_use_mgun = false

combat_safe_altitude = -50

on_timer = 120000 | heli_move@stop

 

[heli_move@stop]

path_move = heli_blockpost_idle_move

engine_sound = false

 

 

Все тоже самое проделал с бтром. Прописал в info_l01escape инфопоршень esc_btr_killed. Но после уничтожения бтра вертолет не прилетает. Уже все перепробовал, ноль. Подскажите пожалуйста что забыл? Заранее благодарен за ответ.

Ссылка на комментарий
Roman82, а что именно проделал с БТРом и прилетает ли вертолет, если потери гулага esc_blokpost составляют более восьми человек?
Ссылка на комментарий

Roman82, условия в логике у тебя странные конечно...

[logic]

active = heli_move@idle

 

[heli_move@idle]

path_move = heli_blockpost_idle_move

engine_sound = false

on_info = {=gulag_casualities_ge(esc_blokpost:8) +esc_btr_killed} heli_move@fly

combat_safe_altitude = -50

 

[heli_move@fly]

path_move = heli_blockpost_fly

engine_sound = true

combat_enemy = actor

combat_use_rocket = true

combat_use_mgun = true

rocket_delay = 3000

combat_safe_altitude = -70

on_timer = 120000 | heli_move@retreat

 

[heli_move@retreat]

path_move = heli_blockpost_idle_move

engine_sound = true

combat_use_rocket = false

combat_use_mgun = false

combat_safe_altitude = -50

on_timer = 120000 | heli_move@stop

 

[heli_move@stop]

path_move = heli_blockpost_idle_move

engine_sound = false

 

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

Куфзук

Также поставил бтр через all.spawn, вписал ему в логику -

[logic]

active = ph_car@idle

on_hit = hit

 

[hit]

on_info = %+esc_blockpost_alarm%

 

[ph_car@idle]

target=actor

fire_range=110

fire_repeat=50

auto_fire=true

track_target=true

on_info = {=gulag_casualities_ge(esc_blokpost:5)} ph_car@eliminate, {+esc_blockpost_alarm} ph_car@eliminate

on_death_info = esc_btr_killed

 

[ph_car@eliminate]

target=actor

fire_range=150

fire_repeat=50

auto_fire=true

track_target=true

on_info = {+esc_blockpost_normal} ph_car@idle

on_death_info = esc_btr_killed

 

 

Все. И при убийстве восьми человек не прилетает.

Спасибо всем большое за ответы. Буду пробовать дальше.

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

iDreD, это смотря чего ты хочешь добиться, в твоем случае вертолет прилетит, если потери гулага на блокпосте будут более восьми человек И выдан инфопоршень esc_btr_killed.

 

Roman82, не уверен, что секция death работает таким образом, но давай проверим. Пропиши так:

on_death_info = %+esc_btr_killed%

, если не сработает перепиши логику так:

[logic]

active = ph_car@idle

on_hit = hit

on_death = death

 

[hit]

on_info = %+esc_blockpost_alarm%

 

[death]

on_info = %+esc_btr_killed%

 

[ph_car@idle]

target=actor

fire_range=110

fire_repeat=50

auto_fire=true

track_target=true

on_info = {=gulag_casualities_ge(esc_blokpost:5)} ph_car@eliminate, {+esc_blockpost_alarm} ph_car@eliminate

 

[ph_car@eliminate]

target=actor

fire_range=150

fire_repeat=50

auto_fire=true

track_target=true

on_info = {+esc_blockpost_normal} ph_car@idle

 

 

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

Нет. Не получается. В чем же может быть проблема? Вот секции бтра и вертолета в аллспаун -

[899]

; cse_abstract properties

section_name = helicopter

name = esc_heli2

position = -150.729080200195,-40.1031475067139,-620.886474609375

direction = -1.41131033615238e-006,-1.29239809513092,1.70586758940772e-007

 

; cse_alife_object properties

game_vertex_id = 11

distance = 0

level_vertex_id = 128298

object_flags = 0xffffffba

custom_data = <<END

[logic]

cfg = scripts\esc_blockpost_heli.ltx

END

 

; cse_visual properties

visual_name = physics\vehicles\mi24\veh_mi24_u_01

visual_flags = 0x1

 

; cse_motion properties

motion_name = helicopter\aaa.anm

 

; cse_ph_skeleton properties

skeleton_name = idle

 

; cse_alife_helicopter properties

cse_alife_helicopter__unk1_sz = idle

engine_sound = alexmx\helicopter

 

 

[896]

; cse_abstract properties

section_name = m_car

name = esc_btr

position = -155.729080200195,-30.1031475067139,-358.886474609375

direction = -1.41131033615238e-006,-1.29239809513092,1.70586758940772e-007

 

; cse_alife_object properties

game_vertex_id = 33

distance = 0

level_vertex_id = 94106

object_flags = 0xffffffba

custom_data = <<END

[logic]

cfg = scripts\esc_blockpost_btr.ltx

END

 

; cse_visual properties

visual_name = physics\vehicles\btr\veh_btr_u_01

visual_flags = 0x1

 

; cse_ph_skeleton properties

 

; cse_alife_car properties

health = 1

 

 

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

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

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

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

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

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

Войти

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

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

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