[SoC] Ковыряемся в файлах - Страница 687 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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


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

@UnLoaded,

логика

[logic]
active = walker@varan 
combat_ignore = combat_ignore
on_hit = hit
on_death = death
 
[hit]
 
on_info = {=hit_by_actor}%+lada_mertva%

 
[death]
on_info = %+varan_sdox%
 
[walker@varan]
path_walk = varan_walk
path_look = varan_look
combat_ignore_cond = {-lada_mertva}
meet = meet
on_actor_dist_le_nvis = 3 | {-varan_sound}remark@varan
 
[remark@varan]
target = actor
snd = varan
meet = no_meet
combat_ignore_cond = always
danger = danger_condition@varan
on_signal = sound_end | walker@varan1  %+varan_sound%   
 
[walker@varan1]
path_walk = varan_walk
path_look = varan_look 
meet = meet
combat_ignore_cond = {-lada_mertva}
on_info = {+kachan_af_okean_start} walker@varan2
 

[walker@varan2]
path_walk = varan_walk
path_look = varan_look
combat_ignore_cond = {-lada_mertva}
meet = meet
on_info = {+kachan_af_okean_have} walker@varan3

[walker@varan3]
path_walk = varan_walk
path_look = varan_look
combat_ignore_cond = {-lada_mertva}
meet = meet
on_actor_dist_le_nvis = 3 | {-varan2_sound}remark@varan2
danger = danger_condition@varan

[remark@varan2]
target = actor
snd = varan2
meet = no_meet
combat_ignore_cond = always
danger = danger_condition@varan
on_signal = sound_end | walker@varan4  %+varan2_sound%   
 
[walker@varan4]
path_walk = varan_walk
path_look = varan_look
combat_ignore_cond = {-lada_mertva}
meet = meet
 
[meet]
meet_state = 10|guard@wait
meet_state_wpn = 10|backoff@threat_weap
victim = 10|actor
victim_wpn = 10|actor
use = true
use_wpn = false
syndata = backoff@threat_weap
 
[combat_ignore]
combat_ignore_cond = {-lada_mertva}


[danger_condition@varan]
ignore_distance = 0
ignore_distance_corpse = 0

 

Да что тут напутано, всё идет по порядку. Может....сам уже не знаю, что может.

Изменено пользователем Хемуль36рус

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

Короче, я понял одно, логика работает нормально, если Гг рядом с нпс, как только уходишь от него, чтобы он остался в офлайне, все ломается.

 

Я уже хотел схитрить, создал рестриктор, в котором будет выдан поршень для перехода нпс в определенную секцию,  и что......Если тестирую рядом с нпс, всё работает как часы. Но как только я выполняю квест так как он должен по сюжеты выполнится, то даже заходя в рестриктор, ремарка не отыгрывается. У меня уже нервный смех появился. Неужели нет ни одного примера, чтобы нпс выдавал реплику после выполнения квеста.

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

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

Ну, как вариант, добавить в xr_effects.script ф-ции типа:

function logic_test()
local text = "переходим в секцию [какая нужна]"
news_manager.send_tip(db.actor, text, nil, nil, 30000)
end
Затем в условиях переключения секций добавить эту ф-цию как эффект %=logic_test%, и смотреть по сообщениям как происходит переключение секций. Когда наглядно будет видно их переключения, проще ошибку отловить.
 
"...выдавал реплику после выполнения квеста" - процесс выполнения квеста(завершение подзаданий любого из активных заданий) не связан никак с логикой неписей. Только твоя работа по этому связыванию, правильной выдачей и-п, и обеспечит нужную синхронизацию.
Изменено пользователем UnLoaded

@Хемуль36рус, config\scripts\agr\agr_krot.ltx, смотрим, анализируем, делаем выводы. Логика у тебя вообще забавная, попробуй перепиши опираясь на нормальную человеческую логику, т.е. причина, следствие, причина, следствие и т.д.

 

 

Логика у тебя вообще забавная

Это точно.

 

@Хемуль36рус, вот такую логику попробуй ( минимум исправлений ):

 

[logic]
active = walker@varan 
combat_ignore = combat_ignore
on_hit = hit
on_death = death
 
[hit]
 
on_info = {=hit_by_actor}%+lada_mertva%
 
 
[death]
on_info = %+varan_sdox%
 
[walker@varan]
path_walk = varan_walk
path_look = varan_look
combat_ignore_cond = {-lada_mertva}
meet = meet
on_info  = {=dist_to actor_le(4) -varan_sound} remark@varan
on_info2 = {+varan_sound -varan2_sound} walker@varan2
on_info3 = {+varan_sound +varan2_sound} walker@varan4
 
[remark@varan]
target = actor
snd = varan
meet = no_meet
combat_ignore_cond = always
danger = danger_condition@varan
on_signal = sound_end | walker@varan2  %+varan_sound%   
 
[walker@varan2]
path_walk = varan_walk
path_look = varan_look
combat_ignore_cond = {-lada_mertva}
meet = meet
on_info = {+kachan_af_okean_have} walker@varan3
 
[walker@varan3]
path_walk = varan_walk
path_look = varan_look
combat_ignore_cond = {-lada_mertva}
meet = meet
on_info  = {=dist_to actor_le(4)} remark@varan2
danger = danger_condition@varan
 
[remark@varan2]
target = actor
snd = varan2
meet = no_meet
combat_ignore_cond = always
danger = danger_condition@varan
on_signal = sound_end | walker@varan4  %+varan2_sound%   
 
[walker@varan4]
path_walk = varan_walk
path_look = varan_look
combat_ignore_cond = {-lada_mertva}
meet = meet
 
[meet]
meet_state = 10|guard@wait
meet_state_wpn = 10|backoff@threat_weap
victim = 10|actor
victim_wpn = 10|actor
use = true
use_wpn = false
syndata = backoff@threat_weap
 
[combat_ignore]
combat_ignore_cond = {-lada_mertva}
 
 
[danger_condition@varan]
ignore_distance = 0
ignore_distance_corpse = 0

@makdm, попробую конечно, но а что забавного то, переходит из секции в секцию. А от Крота Гг не уходит так, чтобы тот остался в офлайне, все происходит рядом.

 

Вот такой вылет с примером этой логикию

! Cannot find saved game ~~~ object 'varan': pick_section_from_condlist: function 'dist_toactor_le' is not defined in xr_conditions.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: f:\stalker4\gamedata\scripts\_g.script:1127: bad argument #2 to 'format' (string expected, got no value)
 

stack trace:

Почему-то не определяет функцию.

Изменено пользователем Хемуль36рус

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

Ребята, спавню значит уже нпц через all.spawn по уроку (http://stalkerin.gameru.net/wiki/index.php?title=All.spawn._Создание_NPC), и прописываю ему почти всё свое, включая координаты. С логикой так же. Нпц спавнится где надо, но потом бежит и прибегает к точке, где он спавнится по уроку. Как такое возможно? 

Логика: 

[walker_stay_at_position_walk]
points = p0
p0:name = name00
p0:flags = 0x1
p0:position = -178.327,-19.932,-160.786
p0:game_vertex_id = 52
p0:level_vertex_id = 72102

[walker_stay_at_position_look]
points = p0
p0:name = name00
p0:flags = 0x1
p0:position = -181.047,-19.932,-158.252
p0:game_vertex_id = 52
p0:level_vertex_id = 72147 

 

 

 

Секция:

[914]
; cse_abstract properties
section_name = stalker
name = soldafon
position = -178.327,-19.932,-160.786
direction = 0,0,0

; cse_alife_trader_abstract properties
money = 12724
character_profile = soldafon

; cse_alife_object properties
game_vertex_id = 52
distance = 0
level_vertex_id = 72102
object_flags = 0xffffffbf
custom_data = <<END
 
[logic]
active = walker@stay_at_position
combat_ignore = combat_ignore
danger = danger_condition
 
[walker@stay_at_position]
path_walk = walker_stay_at_position_walk
path_look = walker_stay_at_position_look
 
[combat_ignore]
combat_ignore_cond = always
 
[danger_condition]
ignore_distance = 0
ignore_distance_corpse = 0
 
; cse
[smart_terrains]
none = true
END
story_id = 10000

; cse_visual properties
visual_name = actors\soldier\soldier_spetsnaz

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 1
g_group = 2
health = 1
dynamic_out_restrictions = 
dynamic_in_restrictions = 

upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = -178.327,-19.932,-160.786
upd:o_model = 0
upd:o_torso = 0.0280130300670862,0,0.999607563018799
upd:g_team = 0
upd:g_squad = 1
upd:g_group = 2

; cse_alife_monster_abstract properties

upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 1,2,2,1,2
predicate4 = 0,1,1,1

; cse_ph_skeleton properties

upd:start_dialog = 

; se_stalker properties
 

 

 

RafMadMan.gif

 

 

Почему-то не определяет функцию

Опечатка, пока набирал логику.

Вместо dist_to actor_le нужно написать dist_to_actor_le

  • Спасибо 1

@makdm, Я тоже не заметил, переписал вот так

[logic]
active = walker@varan 
combat_ignore = combat_ignore
on_hit = hit
on_death = death
 
[hit]
 
on_info = {=hit_by_actor}%+lada_mertva%
 
 
[death]
on_info = %+varan_sdox%
 
[walker@varan]
path_walk = varan_walk
path_look = varan_look
combat_ignore_cond = {-lada_mertva}
meet = meet
on_actor_dist_le_nvis = 3 | {-varan_sound} remark@varan
on_info = {+varan_sound -varan2_sound} walker@varan2
on_info2 = {+varan_sound +varan2_sound} walker@varan4
 
[remark@varan]
target = actor
snd = varan
meet = no_meet
combat_ignore_cond = always
danger = danger_condition@varan
on_signal = sound_end | walker@varan2  %+varan_sound%   
 
[walker@varan2]
path_walk = varan_walk
path_look = varan_look
combat_ignore_cond = {-lada_mertva}
meet = meet
on_info = {+kachan_af_okean_have} walker@varan3
 
[walker@varan3]
path_walk = varan_walk
path_look = varan_look
combat_ignore_cond = {-lada_mertva}
meet = meet
on_actor_dist_le_nvis = 3 | {-varan2_sound} remark@varan2
danger = danger_condition@varan
 
[remark@varan2]
target = actor
snd = varan2
meet = no_meet
combat_ignore_cond = always
danger = danger_condition@varan
on_signal = sound_end | walker@varan4  %+varan2_sound%   
 
[walker@varan4]
path_walk = varan_walk
path_look = varan_look
combat_ignore_cond = {-lada_mertva}
meet = meet
 
[meet]
meet_state = 10|guard@wait
meet_state_wpn = 10|backoff@threat_weap
victim = 10|actor
victim_wpn = 10|actor
use = true
use_wpn = false
syndata = backoff@threat_weap
 
[combat_ignore]
combat_ignore_cond = {-lada_mertva}
 
 
[danger_condition@varan]
ignore_distance = 0
ignore_distance_corpse = 0

 

тьфу, тьфу, сработало, первый раз за два дня, но проверю ещё разок.

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

 

 

но проверю ещё разок.

Можешь не проверять. Будет работать на все 146%. Просто я знаю причину. Года так три или четыре назад, сам решал такую же проблему.

@makdm, ну так расскажи для всех, что за причина.

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

 

 

у так расскажи для всех, что за причина.

Причина в том, что каждый раз при переходе в он-лайн в логике запускается active секция.

Ты первый раз подошёл к НПС. Условие on_actor_dist_le_nvis = 3 | {-varan_sound} remark@varan возвращает true.

Переключение на секцию remark и выдаётся поршень varan_sound.

Затем ты ушёл от НПС и НПС перешёл в офф-лайн.

Ты вернулся и при переходе НПС в он-лайн снова запускается active секция.

В этом случае условие on_actor_dist_le_nvis = 3 | {-varan_sound} remark@varan возвращает false ( поршень varan_sound уже был выдан ранее ).

Вот НПС и тупит у тебя в active секции и не переключается на другие.

Я добавил тебе в active секцию эти переключения.

 

Всё очень просто.  :)

  • Спасибо 1

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

все равно простыня, у него пути одинаковые везде,

Согласен. Поэтому и написал, что исправил только минимум ( затык в логике ), а уж править саму структуру логики я не стал.

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

Логика вещь муторная, делал так как видел в других модах. Да так и проще вроде.

  • Согласен 1

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

Причина в том, что каждый раз при переходе в он-лайн в логике запускается active секция.

Не уверен.

Может я и не прав, те кто лучше знают - поправят, но если непись работает в каком-то гулаге, то при переходах он\офф-лайн секция logic(т.е. перезапуск всей логики) активируется только при переключении работ, т.е. обычно это смена состояний гулага;

А вот если непись отрабатывает собственную логику(т.е. единственную работу) - вот тут при переходах он\офф-лайн видимо происходит перезапуск всей логики. Это не утверждаю, т.к. не тестировал, в отличии от работ под гулагами.

 

Кстати, Хемуль36рус, а этот непослушный непись у Вас под гулагом или собственная логика ?

Изменено пользователем UnLoaded
  • Нравится 1

 

 

Может я и не прав, те кто лучше знают - поправят

Абсолютно прав.

В данном случае НПС не в гулаге. Поэтому и произошёл такой "затык" в логике.

  • Согласен 1

Такая трабла возникла. Есть автомат АК-12 калибра 7.62. Хотелось бы его (модельку) под калибр 5,45 переделать, но вся беда в том, что сам я в этом полнейший дуб. Может, найдется кто-нибудь, кто сможет переделать модельку?

Сталкер - наше всё!

 

 

Есть автомат АК-12 калибра 7.62. Хотелось бы его (модельку) под калибр 5,45 переделать

Эмм, а чем они, по Вашему, должны отличаться ? В плане модельки ?

  • Нравится 1

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

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

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

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

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

Войти

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

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

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