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

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

Garry_Galler спасибо! Но вот вопрос к твоему ответу: как я понял это идет проверка на калбэк юзанья?

db.actor:set_callback(callback.use_object,         this.OnUseActorObject)

И вот:

function OnUseObject(obj, who)

Аргументы, следуя логическим размышлениям означают obj - юзенный объект, who - кто (но кто это?)?

Извините за тупые вопросы но меня это интересует!

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

Доброго времяни суток отцы и сынки……

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

Помогите.....!!!!!

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

Столько споров как удержать непися на месте,а что создать гулаг такая проблема?На мой взляд поведение нпс в гулаге намного разнообразнее и логика на все случаи жизни без проблем

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

Arhara,

Да, всё именно так. Я же об этом и говорил, что нельзя оставлять НПС надолго под ремаркой. Обязательно надо переводить, если предполагается, что НПС уйдёт в оффлайн по сюжету, под схему волкера или кампера, напрмер. Но есть и одна хитрость: если хотите под ремаркой сделать НПС и чтобы он никуда не рыпался ни при каких обстоятельствах и опасностях, то, во-первых, можно назначить ему комьюнити торговца (trader), тогда и под ремаркой он всю игру будет игнорировать всё и вся.

И во-вторых, можно создать новую группировку (дело 10 минут) без гулагов. Присвоить НПС комьюнити новой группировки и всё.

 

Вот пример (так стоят на месте некоторые НПС в "Тайных Тропах" и никуда не уходят ни при каких обстоятельствах, так как принадлежат к комьюнити "stranger" или "trader"):

[smart_terrains]

none = true

 

[dont_spawn_loot]

 

[logic]

active = remark

trade = misc\trade_lektor.ltx --это, если торговец

combat_ignore = combat_ignore

 

[remark]

anim = probe_2 --ну, это для примера, крутит в руках прибор, если есть, а если нет, то оружие своё рассматривает.

target = actor

combat_ignore_cond = always

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 = always

 

 

Но есть ещё выбросы, от которых тоже легко отстраниться, зарегистрировав отдельно взятого персонажа, или же целую группировку в исключения в файле: blowout_scheme.script

Вот тут:

function bind_scheme(npc,storage)

local evid_wounded=xr_evaluators_id.sidor_wounded_base

local monolith=npc:character_community()=="monolith"

local zombi=npc:character_community()=="zombied" or npc:character_community()=="trader" or npc:character_community()=="stranger" or npc:character_community()=="arena_enemy" or npc:name()=="mil_stalker0012" or npc:name()=="yantar_ecolog_general" or -- сумашедший на милитари и Сахаров

npc:name()=="mil_freedom_member0021" -- Скрягу в зомби!

Есть ещё масса способов оставить созданного скриптом НПС на месте.

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

antreg, прошу прощение за орфографию, а если по делу сможете помоч а то я почти неделю нечё не могу найти чтоб понять как это работает (а пост уходит вверх).....

Строгое предупреждение от модератора n6260
А ты почитай учебник русского языка ;) Считай это устным предупреждением по пункту 2.6 правил форума.
Изменено пользователем n6260
Ссылка на комментарий

Byurrer

Аргумент who (в данном контексте) всегда равен юзердате ГГ, иначе и быть не может - каллбек ведь на него установлен.

А вот это не проверка

db.actor:set_callback(callback.use_object,         this.OnUseActorObject)

а установка каллбека.

PS: там у меня в примере названия функций на юзанье отличаются(исправил) - надеюсь понял, что это просто по недосмотру и должны быть одинаковые.

(а у меня просто перевызов идет -первая вызывает вторую, поэтому так).

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

Хорошо то сообщение я удалил, начинаю сначала

Помогите пожалуйста, я в ЗП создал группировку но возникли трудности, в том что члены моей группировки - главное не стремятся в укрытия и не дохнут под ними, (я хочу чтобы во время выброса они ломились в укрытия, а если не успевали то дохли под ним) и ещё недочёт простой но я не понимаю как его исправить всё оружие NPS новой группировки изнашивается в ноль после двух трёх выстрелов (причём этих NPS и в другие группы ставил и всё равно ломается в ноль сразу ).....!!!

 

Добавляю

С оружием разобрался :) , а вот с бессмертием при выбросах нет :(

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

Добрый день!

Есть вот такая нехитрая схема логики персонажа. НПС стоит на на одном месте и к нему по сюжету несколько раз возвращаемся:

;------------------------------------- haron --------------------------------------

[logic@haron]

active = walker@haron

 

[walker@haron]

path_walk = haron_walk

path_look = haron_look

meet = meet@haron

danger = danger_ignore@haron

on_actor_dist_le_nvis = 5 | remark@haron

 

[remark@haron]

anim = guard

target = actor

snd = haron_hello --это первый приветственный звуковой фрагмент персонажа

on_signal = sound_end| remark@haron2

meet = no_meet

 

[remark@haron2]

anim = guard

target = actor

meet = meet@haron

on_info = {+haron_burer_first} walker@haron2

 

[walker@haron2]

path_walk = haron_walk

path_look = haron_look

meet = meet@haron

danger = danger_ignore@haron

on_info = {+haron_doktor_done} remark@haron_and_mahon

 

[remark@haron_and_mahon]

anim = guard

target = actor

snd = haron_and_mahon --это второй звуковой фрагмент, получаемый в определённый момент по сюжету.

on_signal = sound_end| remark@haron_and_mahon2

meet = no_meet

 

[remark@haron_and_mahon2]

anim = guard

target = actor

meet = meet@haron

on_info = {+haron_naem_start} walker@haron3

 

[walker@haron3]

path_walk = haron_walk

path_look = haron_look

meet = meet@haron

danger = danger_ignore@haron

 

[danger_ignore@haron]

ignore_distance = 0

 

[meet@haron]

use = true

use_wpn = true

meet_talk_enabled = true

 

 

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

Хотя, в схеме логики, после каждого этапа, присутствует переход в другую (следующую) схему walker. Что здесь не так?

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

antreg, А ты попробуй как в диалогах инфопоршни поставь,чтобы переход в определенный ремарк осуществлялся по наличию или отсутствию инфо(сейчас только по наличию)инфопоршни делать не надо -просто в логику их прикрутить те что есть.

Там по сути всю логику кроме путей менять нужно.В активной схеме поставить условие на проверку инфопоршней и в зависимости от результата ссылать на ремарк в котором и писать условие с дистанцией ,а то в свою очередь переводило бы на ремарк со звуковой схемой.А так как есть -условие выхода из под активной схемы всегда верно при приближении актера на 5 метров

[walker@haron2]
path_walk = haron_walk
path_look = haron_look
meet = meet@haron
danger = danger_ignore@haron
on_info = {+haron_doktor_done,-haron_naem_start} remark@haron_and_mahon

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

Подскажите, пожалуйста, можно ли скриптово добавить новые консольные команды? Например, spawn; тот же jump_to_level не помешал бы для тестирований чего-нибудь...

yjNrc.gif

dSQwF.png

oZ8SF.png

Ссылка на комментарий
Massaraksh, только если в биндере отслеживать консоль и выполнять скриптом. Или сделать предмет\писать в гл. меню и обрабатывать скриптом

Vita sine libertate, nihil

Vita sine litteris - mors est

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

использую мод выброса от DEXXX (из огсма)

проблема в том, что созданные МНОЙ нпсы при выбросе прячутся в укрытия, а обратно возвращаться не хотят! сделал штуку - чтобы их всегда тянуло в точку спавна - через path_walk. но при возвращении они всегда застревают на полпути и начинают тупить.

помогите!

Строгое предупреждение от модератора n6260
Юзаем заглавные буквы.
Ссылка на комментарий

Пожалуйста, кто нибудь может сделать тутор, по логике НПС и мобов для ЗП?

Столкнулся с такой проблемой: Прописал в смарт-терайне спавн эксклюзивного НПС-торговца, но помимо него спавнится его дубликат, только бес подгрузки логики, которую прописал для торговца, то есть он ведёт себя как обычный НПС. Где можно было тупонуть что б такое получить, больше нигде кроме торговца, спавна НПС с таким specific_character id не прописывал проверил трижды, в скаваде торговца только он. Помогите если кто сталкивался с такой проблемой, пожалуйста!

К Богу не доходят ваши молитвы, так как, они похожи на спам!

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

Аномальный, твоя ошибка помоему в том что ты спавн поставил через смарт (в смартах спавн происходит постоянно), попробуй заспавнить через gamedata\scripts создай отдельный скрипт спавна для своего "непися", там и вводи координаты где он должен спавнится и стоять, либо в смарте напиши персональный скрип спавна для него...

 

З.Ы. Ты темой не ошибся...

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

Темой я не ошибся, так как вопрос касался логики смарта для нпс! А в спавне смарта торговец прописан как эксклюзивный и спавниться пару раз бес определённого условия он не должен, собственно по началу так и было, а потом гдето ещё что-то не дописал и получилась такая х, и фиг знай где и ошибся. А может ли кто хоть логику волкера написать для ЗП, чтоб НПС заспавнился пошел в определённую точку и вмыкал там в опред. сторону. Потому как сам попробывал, но при загрузке локи получаю такой баг:

FATAL ERROR

 

[error]Expression : !m_error_code

[error]Function : raii_guard::~raii_guard

[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

[error]Line : 748

[error]Description : .... - Зов Припяти\gamedata\scripts\xr_motivator.script:161: attempt to index local 'smart_task' (a nil value)

 

 

stack trace:

 

Часть скрипта на которую ссылается лог:

 

--******************************* Телепорт на первую точку пути работы смарттеррейна...*****************************

local se_obj = alife():object(self.object:id())

if se_obj ~= nil then

if db.spawned_vertex_by_id[se_obj.id] ~= nil then

self.object:set_npc_position(level.vertex_position(db.spawned_vertex_by_id[se_ob

j.id]))

db.spawned_vertex_by_id[se_obj.id] = nil

elseif db.offline_objects[se_obj.id] ~= nil and db.offline_objects[se_obj.id].level_vertex_id ~= nil then

printf("changing position for object[%s] from %s to %s : level vertex [%s] to [%s]", se_obj:name(), vec_to_str(se_obj.position), vec_to_str(level.vertex_position(db.offline_objects[se_obj.id].level_vertex_id))

, tostring(se_obj.m_level_vertex_id), tostring(db.offline_objects[se_obj.id].level_vertex_id))

self.object:set_npc_position(level.vertex_position(db.offline_objects[se_obj.id]

.level_vertex_id))

elseif se_obj.m_smart_terrain_id ~= 65535 then

local smart_terrain = alife():object(se_obj.m_smart_terrain_id)

if smart_terrain.arriving_npc[se_obj.id] == nil then

local smart_task = smart_terrain.job_data[smart_terrain.npc_info[se_obj.id].job_id].alife_task

self.object:set_npc_position(smart_task:position())

end

end

end

Жирным выделана 161 строка.

 

 

 

Собственно лока и группировка нпс новая может где-то и там ошибся. Вот собственно настройка смарта и его логика, там кстати в ней и спавниться торговец и механик в двойном количестве.

[smart_terrain]

squad_id = 13

respawn_radius = 35

spawn_point = gen_bestilia_baza_spawn_point

respawn_params = respawn@gen_bestilia_baza

max_population = 4

arrive_dist = 50

 

[respawn@gen_bestilia_baza]

spawn_stalker@gen_bestilia_baza1

spawn_stalker@gen_bestilia_baza2

 

[spawn_stalker@gen_bestilia_baza1]

spawn_squads = default_csky_squad_0, default_csky_squad_3, default_csky_squad_2

spawn_num = 2, 1

 

[spawn_stalker@gen_bestilia_baza2]

spawn_squads = default_csky_squad_1, default_csky_squad_4

spawn_num = 2, 0

 

[exclusive]

 

;uniq

gen_bestilia_barman = generators\gen_bestilia_barman_logic.ltx ;+surge

gen_bestilia_remontnik = generators\gen_bestilia_remontnik_logic.ltx ;+surge

 

gen_bestilia_anim1 = generators\gen_bestilia_baza_logic.ltx ;+surge

gen_bestilia_anim2 = generators\gen_bestilia_baza_logic.ltx ;+surge

gen_bestilia_kamp4 = generators\gen_bestilia_baza_logic.ltx

 

 

;Это уже пошла логика для нпс на данном смарте

[animpoint@gen_bestilia]

reach_movement = walk_noweap

use_camp = true

meet = meet@gen_bestilia

 

[meet@gen_bestilia]

close_anim = nil

close_victim = nil

far_anim = nil

far_victim = nil

close_distance = 0

far_distance = 0

use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false

snd_on_use = {!dist_to_actor_le(3)} nil

meet_on_talking = false

 

;Анимпоинты

 

[logic@gen_bestilia_anim1]

suitable = {=npc_community(csky)} true

prior = 100

post_combat_time = 0, 0

active = animpoint@gen_bestilia_anim1

 

[animpoint@gen_bestilia_anim1]:animpoint@gen_bestilia

cover_name = gen_bestilia_anim_rest_1

use_camp = false

on_info1 = {=surge_started} animpoint@gen_bestilia_surge_hide1

 

[animpoint@gen_bestilia_surge_hide1]:animpoint@gen_bestilia

cover_name = gen_bestilia_anim_surge_1

use_camp = false

on_info1 = {=surge_complete} animpoint@gen_bestilia_anim1

 

 

 

[logic@gen_bestilia_anim2]

suitable = {=npc_community(csky)} true

prior = 100

post_combat_time = 0, 0

active = animpoint@gen_bestilia_anim2

 

[animpoint@gen_bestilia_anim2]:animpoint@gen_bestilia

cover_name = gen_bestilia_anim_rest_2

 

 

[logic@gen_bestilia_kamp4]

suitable = {=npc_community(csky)} true

prior = 100

post_combat_time = 0, 0

active = walker@gen_bestilia_kamp4

 

[walker@gen_bestilia_kamp4]

path_walk = gen_bestilia_kamp4_walk

path_look = gen_bestilia_kamp4_look

use_camp = true

meet = meet@gen_bestilia

 

Собственно анимпоинты работают нормально, а вот волкер ругается

 

 

 

Изменено пользователем Аномальный

К Богу не доходят ваши молитвы, так как, они похожи на спам!

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

antreg,

Вы забыли ещё одно... :) Монстры... Ни торговцы, не стрейнджеры, ни прочие - для них не играют роли. Есть только актор и НПС, и ещё - логика самих монстров. К тому же, если создать стрейнджера или торговца - он останется им до тех пор, пока Вы не заспавните нового и не удалалите старого. Но есть способы у ПЫС - сделать реального сталкера интактным ко всему, кроме враждебных группировок, не переспавня модельку. Согласен - многое можно сделать, почитерив с группировками :) гораздо проще, чем мухлевать с враждой бандитов с бандитами и прочими прибамбасами. Также и с монстрами. Кстати - у них - неплохая логика, тупее, чем у ПНС, но вполне достойная. К сожалению - ни в одном моде я этого не видел. Но - ждать осталось недолго....

 

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

gruber,

Вы зря ударились в ремарки. Посмотрите архивы сталка - есть пару челов с этой логикой в виде активной. Это Волк, а второй - полураненый с бензоколонки с ТД. Действия второго, зачисленного ПЫС в один гулаг с кровососом всем известны.

 

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

Аномальный,

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

Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка

Ссылка на комментарий
Arhara, спасибо за совет, теперь понял от куда проблема двойников! Но собственно не в том основная проблема, что спавнится несколько НПС одной айди, это можно обойти несколькими способами, более серьёзная проблема это вылет из-за логики волкера! А поточнее что такое smart_task, где его прописать или от куда оно берётся? Изменено пользователем Аномальный

К Богу не доходят ваши молитвы, так как, они похожи на спам!

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

Аномальный,

Не может спавниться более одного и того же СИДа - сразу получите вылет.

Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка

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

Здравие желаю товарищи.

У меня возник вопрос: можно ли в тенях чернобыля скриптово вывести на глобальную карту всех npc в определенном радиусе от гг на определенное время.

Риализуемо ли это вообще. :russian_ru:

Зарание спасибо.

 

// Реализуемо. Пожалуйста. Министр.

 

А каким образом?

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

Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

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

Arhara, дело в том что может! Собственно если отключить логику волкера то всё нормально работает, спавнятся 3-и бойца и 2-а торговца и 2-ремонтника, количество респавненых у меня 5-ь повидимо недостаток бойцов восполняется эксклюзивными, по твоей теории выше! Анимпоинты пашут нормально, к тому же группировка торговца и ремонтника отличительная от бойцов и они не берут участь в общей логике, так как она написана только для группировки csky. Если надо могу сделать скрины клонов!

Нажаль, Arhara, твой совет по поводу уменьшения жителей не помог, попробывал заспавнить торговца не через логику смарта, а через аллспавн и всё равно есть клон! Можешь глянуть логику торговца может в ней "собака зарыта"

[logic@gen_bestilia_barman]

suitable = {=check_npc_name(gen_bestilia_barman)} true

trade = misc\trade\trade_gen_bestilia_barman.ltx

prior = 100

active = animpoint@gen_bestilia_barman

can_select_weapon = false

level_spot = trader

 

[animpoint@gen_bestilia_barman]

cover_name = gen_bestilia_baza_animpoint_gen_bestilia_barman

look = true

look_x = -66.38061523438

look_z = 66.3476363420486

look_y = 66.94204711914

avail_animations = animpoint_stay_table_no_rnd

use_camp = false

meet = meet

combat_ignore_cond = true

combat_ignore_keep_when_attacked = true

invulnerable = true

gather_items_enabled = false

help_wounded_enabled = false

corpse_detection_enabled = false

 

[meet]

close_anim = nil

close_victim = nil

far_anim = nil

far_victim = nil

close_distance = 0

far_distance = 0

close_snd_distance = 3

abuse = false

use = {=actor_enemy} false, true

allow_break = false

meet_on_talking = false

 

 

Изменено пользователем Аномальный

К Богу не доходят ваши молитвы, так как, они похожи на спам!

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

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

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

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

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

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

Войти

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

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

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