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

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

Что значит

 

[use]

on_info = %+budu_v_

bunkere_spat%

 

 

Для on_info = нужна функция условие on_info = {=имя_функции} если возврашает труе то только потом эфект %+budu_v_

bunkere_spat%

 

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

Может кто подсказать в чём ошибка?

Создал точку респавна

[40000]

; cse_abstract properties

section_name = respawn

name = cit_gulag_1_restavn

position = -21.257427,7.384156,103.735580

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 2840

distance = 7

level_vertex_id = 333765

object_flags = 0xffffff3e

custom_data = <<END

[respawn]

respawn_section = cit_freedom_nauchniy, 4, cit_freedom_general2, 10, esc_ohr_menala_2, 5

max_spawn = 5

idle_spawn = medium

END

 

; cse_shape properties

shapes = shape0

shape0:type = sphere

shape0:offset = 0,0,0

shape0:radius = 1

 

; cse_alife_space_restrictor properties

restrictor_type = 0

 

; se_respawn properties

 

 

и зону его активации-

[40001]

; cse_abstract properties

section_name = space_restrictor

name = cit_gulag_1_restavn_aktiv

position = -21.257427,7.384156,103.735580

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 2840

distance = 0

level_vertex_id = 333765

object_flags = 0xffffff3e

custom_data = <<END

[logic]

active = sr_idle@in

 

[sr_idle@in]

on_actor_inside = %=cit_gulag_1_restavn% sr_idle@out

 

[sr_idle@out]

on_actor_outside = sr_idle@in

 

END

 

; cse_shape properties

shapes = shape0

shape0:type = sphere

shape0:offset = 0,0,0

shape0:radius = 10

 

; cse_alife_space_restrictor properties

restrictor_type = 3

 

И получил вот такой лог-

! Missing ogg-comment, file:  e:\games\stalker\gamedata\sounds\meet_phrases\no_meet.ogg
[16-9] get_xml_name for[game_tutorials.xml] returns [game_tutorials.xml]
[16-9] get_xml_name for[ui_credits.xml] returns [ui_credits.xml]
[16-9] get_xml_name for[ui_movies.xml] returns [ui_movies.xml]
Intro start 4408
* MEMORY USAGE: 286828 K
! Cannot find saved game ~~~ object 'gar_tuman_1': pick_section_from_condlist: function 'cit_gulag_1_restavn' is not defined in xr_effects.script
* Log file has been saved successfully!

FATAL ERROR

[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: e:\games\stalker\gamedata\scripts\_g.script:1121: bad argument #2 to 'format' (string expected, got no value)


stack trace:

 

Я так понял он не идентифицируется в xr_effects.script, в чём как её исправить?

Изменено пользователем @"StreloK"

Prefiero morir de pie, que vivir siempre arrodillado.
 

Ссылка на комментарий
AKKK1 нет. А как она должна выглядеть? Делал по статье, но там ничего про функцию вызова вообще не написано. Изменено пользователем @"StreloK"

Prefiero morir de pie, que vivir siempre arrodillado.
 

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

@"StreloK", ты хочешь, чтобы при входе в рестриктор производился респавн? Может лучше при входе в рестриктор выдать инфопрошень, а уже в секции респавна поставить:

conditions = {+my_infopotrion} 100, 0

З.Ы. Просто предположение, я пока ещё респавном не занимался :)

А это:

on_actor_inside = %=cit_gulag_1_restavn% sr_idle@out

Вызовет не твой респавн, а функцию в xr_effects.

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

Disord

Eсли тебе надо чтоб гг при юзе обьекта доустим диван, матрас, ящик (у меня балон ) засыпал

то рестрикторы и поршни не нужны все проше

 

[logic]

active = ph_idle

 

[ph_idle]

tips = spi_spoki

on_use = %=budu_v_bunkere_spat%

 

добавляеш в string_table_ui.xml

строку типа

<string id="spi_spoki">

<text>ПОСПАТЬ ($$ACTION_USE$$)</text>

</string>

 

В xr_effects

 

function budu_v_bunkere_spat()

sleep_manager.sleep_three_hours() Старт функции сна из файла sleep_manager.script

end

 

 

При подходе к обьекту выскочит Поспать нажмите F

Жмем F и ГГ засыпает .

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

Подскажите, пожалуйста, из-за чего может быть вылет?

 

 

FATAL ERROR

[error]Expression    : vertex || show_restrictions(m_object)
[error]Function      : CPatrolPathManager::select_point
[error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\patrol_path_manager.cpp
[error]Line          : 155
[error]Description   : any vertex in patrol path [esc_lager_guard_walk4] in inaccessible for object [esc_lager3]

 

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

Disord а зачем тебе инфопоршень? AKKK1 правильно написал, но если у тебя своя функция, то просто вставь ее примерно так:

function budu_v_bunkere_spat()
        amk.start_timer("sleep_matras",0.1,matras)
end

Строгое предупреждение от модератора Куфзук
2.3. Красным цветом имеют право писать только модераторы и авторы в шапке темы.
Изменено пользователем Куфзук
Ссылка на комментарий

Хантер

 

Eсть много вариантов толкованния вылета данного типа

Вот лично мое мнение

 

Он происходит

1. при попытке отправить обьект в твоем случае object [esc_lager3]

за пределы ограничивающего рестриктора в загрузке работ гулага esc_lager

--' Лагерь новичков на Escape
    if type == "esc_lager" then
        -- охранники
        t = { section = "logic@esc_lager_zoneguard1",
            idle = 0,
            prior = 9, state = {0, 1},
            in_rest = "", out_rest = "esc_lager_guard_kill_zone",}

Мне кажется что ты попытался отправить обитателя лагеря за его пределы или я ошибаюсь?

если да, то просто удали у всех работ гулага esc_lager - esc_lager_guard_kill_zone, должно быть так, для всех работ :

--' Лагерь новичков на Escape
    if type == "esc_lager" then
        -- охранники
        t = { section = "logic@esc_lager_zoneguard1",
            idle = 0,
            prior = 9, state = {0, 1},
            [b] in_rest = "", out_rest = "",}

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

Хантер

 

gulag_escape.script

 

--' Лагерь новичков на Escape

if type == "esc_lager" then

-- охранники

t = { section = "logic@esc_lager_zoneguard1",

idle = 0,

prior = 9, state = {0, 1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone",

}

table.insert(sj, t)

t = { section = "logic@esc_lager_zoneguard2",

idle = 0,

prior = 9, state = {0, 1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone",

}

table.insert(sj, t)

t = { section = "logic@esc_lager_walker3",

idle = 0,

prior = 8, state = {0, 1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_walker4",

idle = 0,

prior = 8, state = {0, 1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

-- у костра днём

t = { section = "logic@esc_lager_kamp1",

idle = 0,

prior = 6, state = {0},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_kamp1",

idle = 0,

prior = 6, state = {0},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_kamp1",

idle = 0,

prior = 6, state = {0},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

-- Волк, собственной персоной.

t = { section = "logic@esc_lager_volk",

idle = 0,

prior = 16, state = {0,1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone",

predicate = function(obj_info)

return obj_info.profile_name == "esc_wolf"

end

}

table.insert(sj, t)

-- Шустрый

t = { section = "logic@esc_lager_shustryi",

idle = 0,

prior = 16, state = {0,1},

online = true,

in_rest = "", out_rest = "",

predicate = function(obj_info)

return obj_info.profile_name == "esc_shustryi"

end

}

table.insert(sj, t)

t = { section = "logic@esc_lager_kamp1",

idle = 0,

prior = 16, state = {2},

online = true,

in_rest = "", out_rest = "",

predicate = function(obj_info)

return obj_info.profile_name == "esc_shustryi"

end

}

table.insert(sj, t)

 

-- Фанат

t = { section = "logic@esc_lager_fanat",

idle = 0,

prior = 16, state = {0,1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone",

predicate = function(obj_info)

return obj_info.profile_name == "esc_fanat"

end

}

table.insert(sj, t)

 

-- спящие ночью

t = { section = "logic@esc_lager_sleeper1",

idle = 0,

prior = 3, state = {1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_sleeper2",

idle = 0,

prior = 3, state = {1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_kamp1",

idle = 0,

prior = 3, state = {1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

-- спящие ночью и днёи

t = { section = "logic@esc_lager_sleeper5",

idle = 0,

prior = 5, state = {0,1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_kamp1",

idle = 0,

prior = 0, state = {0,1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_sleeper7",

idle = 0,

prior = 0, state = {0,1},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

 

t = { section = "logic@esc_lager_defend1",

idle = 0,

prior = 15, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_defend2",

idle = 0,

prior = 14, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_defend3",

idle = 0,

prior = 13, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_defend4",

idle = 0,

prior = 12, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_defend5",

idle = 0,

prior = 11, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_defend6",

idle = 0,

prior = 10, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_defend7",

idle = 0,

prior = 9, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_defend8",

idle = 0,

prior = 8, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_defend9",

idle = 0,

prior = 16, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone",

predicate = function(obj_info)

return obj_info.name == "esc_novice_attacker1"

end

}

table.insert(sj, t)

t = { section = "logic@esc_lager_defend10",

idle = 0,

prior = 16, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone",

predicate = function(obj_info)

return obj_info.name == "esc_vagon_wounded"

end

}

table.insert(sj, t)

t = { section = "logic@esc_lager_defend11",

idle = 0,

prior = 5, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone"

}

table.insert(sj, t)

t = { section = "logic@esc_lager_defend12",

idle = 0,

prior = 20, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone",

predicate = function(obj_info)

return obj_info.profile_name == "esc_fanat"

end

}

table.insert(sj, t)

t = { section = "logic@esc_lager_defend13",

idle = 0,

prior = 20, state = {2},

in_rest = "", out_rest = "esc_lager_guard_kill_zone",

predicate = function(obj_info)

return obj_info.profile_name == "esc_wolf" and not (has_alife_info("agroprom_military_case_have") and has_alife_info("esc_fanat_spawn"))

end

}

table.insert(sj, t)

end

 

 

Добавлено через 36 мин.:

2 конфликт с схемой обхода аномалий (аномалия в принципе тот же рестриктор)

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

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

Люди может кто подсказать пример логики для мутанта (зомби-гражданский) чтобы днём он находился под mob_fake_death, а ночью переходил в mob_home?

 

Prefiero morir de pie, que vivir siempre arrodillado.
 

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

У меня вопрос. Создал гулаг в СДК на 10 человек. Прописал им всем в custom_date... все сделал правильно, но тут возникла проблема. Они воспринимают логику только если будет написано [logic], если же я пишу [logic@bla_bla_bla] то НПЦ этого не понимают. Для меня это очень важно т.к получается что гулаги я не смогу создавать, может это из-за винды? у меня win7 стоит если что.

 

 

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

@"StreloK", вот полностью рабочая логика для гражданского зомбаря:

[smart_terrains]

none = true

 

[logic]

active = mob_fake_death

 

[mob_fake_death]

;on_info = {!is_day} mob_home

on_info = {=is_day =dist_to_enemy_le(8)} mob_home, {!is_day} mob_home

 

[mob_home]

path_home = sleep_zombie_home

home_min_radius = 20

home_max_radius = 25

;on_info = {=is_day} mob_fake_death

on_info = {=is_day =dist_to_enemy_ge(8)} mob_fake_death

 

on_signal = sig_attacked | mob_combat

[mob_combat]

on_timer = 10000 | mob_home

Здесь днём зомби будет загорать в травке на солнышке, пока к нему не приблизится враг (игрок) на расстояние, менее 8 метров. В этом случае он подскочит, и очень сильно постарается замочить того, кто мешает ему отдыхать. Но если отойти от потревоженного зомби более, чем на 8 метров, он снова мирно уляжется баю-бай :)... Ночью зомби будет активен (по умолчанию в xr_conditions.script - от 21 вечера до 6 часов утра). Если нужно, чтобы зомби валялся днём, ни на кого не реагируя, просто зарэмь "длинные схемы" и раскомментируй "короткие".

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

=VENOM= спасибо, правда я уже сам разобрался, но у тебя она по другому немного, надо попробовать.

 

Добавлено через 45 мин.:

У меня зомби перед сном на своё место возвращаются, в квартиры, ото раньше спать ложились где попало как бомжи какие то =) (дело происходит в мёртвом городе).

Prefiero morir de pie, que vivir siempre arrodillado.
 

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

Видимо, у тебя на схеме mob_walker или на mob_camp логика построена, а меня на mob_home. Mob_home тем и выгоден, что неписи автоматически подыскивают для себя каверы, а не ходят тупо по путям, определённым разработчиками. Конечно, не всегда это удобно - в частности, не подходит для скриптовых сцен. А вот для симуляции "free alife" самое то ;)...

Кстати, правильнее будет ещё ввести задержку по времени, чтобы зомбарь не падал, как подкошенный, как только отойти от него на условленное расстояние. Тогда мертвяк ещё немного побродит, поругается, а потом свалится отдыхать ;)...

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

=VENOM= я вот так сделал -

custom_data = <<END

[logic]

active = mob_home@zite1

 

[mob_home@zite1]

path_home = kv_21

home_min_radius = 10

home_max_radius = 30

on_info = {=is_day}mob_walker@ttyyda

 

[mob_walker@ttyyda]

path_walk = kv_21

path_look = kv_21_luk

on_signal = kapez | mob_fake_death

 

[mob_fake_death@zitel]

on_actor_dist_le = 5 | nil

on_info = {!is_day}mob_home@zite1

END

 

и

 

[kv_21]

points = p0

p0:name = wp00

p0:flags = 0x1

p0:position = -125.097282409668,2.88700437545776,129.930755615234

p0:game_vertex_id = 2819

p0:level_vertex_id = 213940

 

 

[kv_21_luk]

points = p0

p0:name = wp00|sig=kapez

p0:flags = 0x1

p0:position = 31.2718868255615,15.6263113021851,30.4473152160645

p0:game_vertex_id = 2854

p0:level_vertex_id = 390089

 

 

Так что и симуляция "free alife" и на места свои возвращяются.

ПС-не подскажиш как задержку по времени, чтобы зомбарь не падал, как подкошенный сделать?

 

=VENOM= о спасибо за совет надо поправить, правда этих зомбаков - 40 штук =( .

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

Prefiero morir de pie, que vivir siempre arrodillado.
 

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

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

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

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

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

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

Войти

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

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

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