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

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

 
 

Товарищи, подскажите есть ли ошибка в схеме? Задумывалось так, что если актор в рестрикторе, то на указанном веипоинте появляется заданный партикл, но что-то как-то не получилось.

 

Спойлер

[logic]
active = sr_idle@1

[sr_idle@1]
on_info = {=actor_in_zone(a2_poison_smoke_sr)} %=play_particle_on_path(damage_fx\smoke:a2_poison_smoke_1_way)

 

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


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

vasyan54636 у тебя в логике тоже on_info имеет перенос строки посередине, или это сайт шалит? Вроде как перенос строки там, где не надо, может поломать её.
Либо мб проблема в том, что у тебя из условий on_info только нахождение игрока в рестрикторе, причём без перехода на другую секцию логики (в т.ч. пустую), что означает, что анимация будет постоянно пытаться проиграться сначала при каждом тике логики.


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

Глупый вопрос: какой story_id у игрока?


Мод в разработке - X-7: Эпицентр

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


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

Глупый вопрос: какой story_id у игрока?

actor

  • Спасибо 1

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


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

vasyan54636 есть. Процентик потерял

[logic]
active = sr_idle@1

[sr_idle@1]
on_info = {=actor_in_zone(a2_poison_smoke_sr)} %=play_particle_on_path(damage_fx\smoke:a2_poison_smoke_1_way)%

 

  • Спасибо 1

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


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

Создавал НПС, но где-то допустил оплошность:
Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...all of pripyat\gamedata\scripts\smart_terrain.script:505: attempt to index local 'smartcover' (a nil value)
В связи с чем такое может быть?


 

Защитим мир от заразы - Зоны                   Долг.gif

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


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

Кто может объяснить, в чём проблема: мне нужно, в определённый момент, переместить скриптом весь инвентарь ГГ в ящик. Я написал скрипт на основе скрипта переноса хабара из личного ящика на Янове в сейф Коряги, а так-же назначил ящику story_id (в этот раз я перепроверил несколько раз - story_id в логике верный). Проблема в том, что скрипт отрабатывает своё, однако ничего не переносится, все вещи остаются у ГГ. Где у меня ошибка?

Спойлер

function relocate_actor_inventory_to_box(actor, npc, p)
    local box = get_story_object_id(p[1])
    if box ~= nil then
        local function transfer_items(item)
            if item:section()~="wpn_binoc" and item:section()~="wpn_knife" and item:section()~="device_torch" then
                db.actor:transfer_item(item, box)
            end
        end
        db.actor:inventory_for_each(transfer_items)
    else
        abort("Cannot find box for inventory relocation with story_id [%s]", p[1])
    end
end

 

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

Мод в разработке - X-7: Эпицентр

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


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

В связи с чем такое может быть?

С чем угодно.
Prostomod держи:
 

function relocate_actor_inventory_to_box(actor, npc, p)
	local function transfer_object_item(item)
		if item:section() ~= "wpn_binoc" and item:section() ~= "wpn_knife" and item:section() ~= "device_torch" then
			db.actor:transfer_item(item, inv_box_1)
		end
	end
	inv_box_1 = get_story_object (p[1])
	actor:inventory_for_each(transfer_object_item)
end

 

  • Спасибо 1

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


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

Как сделать чтобы после получения инфопоршня или захода в зону, выкидывало в главное меню, типо конец игры!


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

Как сделать чтобы после получения инфопоршня или захода в зону, выкидывало в главное меню, типо конец игры!


 

Защитим мир от заразы - Зоны                   Долг.gif

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


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

Как сделать чтобы после получения инфопоршня или захода в зону, выкидывало в главное меню, типо конец игры!

on_info = {+info} nil %=game_disconnect%
on_info = {=actor_in_zone(ZONE)} nil %=game_disconnect%

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


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

SoDizzari del

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

76561198152189716.png

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


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

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

Спойлер

[logic@yan_tube_threaten_dolg]
suitable = {=check_npc_name(yan_expedition_dolg_1_copy)}
on_hit = hit
on_death = death
active = walker@walker_start
prior = 200

[walker@walker_start]
on_info = { +yan_psi_oko_kudrischev_in_tubes_dialog } remark@walker_death
def_state_standing = prisoner
corpse_detection_enabled = false
gather_items_enabled = false
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = true
path_walk = dolg_threat_walk
path_look = dolg_threat_look
meet = no_meet

...

[walker@kudrischev_base]
corpse_detection_enabled = false
gather_items_enabled = false
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
invulnerable = true

[logic@yan_tube_kudrischev]
suitable = {=check_npc_name(kudrischev_copy)}
active = walker@kudrischev_start
prior = 200

[walker@kudrischev_start]:walker@kudrischev_base
on_info = {=actor_in_zone(yan_tubes_kurdischev_force_kill) -yan_psi_oko_kudrischev_in_tubes_dialog } % +yan_psi_oko_kudrischev_in_tubes_dialog %
on_info2 = { +yan_psi_oko_kudrischev_in_tubes_dialog } walker@kudrischev_kill
def_state_standing = threat_na
path_walk = kudrischev_threating_walk
path_look = kudrischev_threating_look
meet = meet

Спойлер

20230622161423_1.thumb.jpg.6794e4471c0051fcb42417cc7989bc7a.jpg

 

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

Мод в разработке - X-7: Эпицентр

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


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

Prostomod попробуй так для конвоира:
[remark@ziel]
anim = threat_na
target = story | id_npc

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


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

Neptun попробовал с ремарком, анимация отработала как надо, но результат мне не понравился т.к. хотелось бы сохранить возможность вести диалог ГГ с конвоиром. Решил заменить анимацию пленника, чтобы сгладить эту проблему, но возник другой вопрос: как можно сделать, чтобы НПС, с которым я веду диалог, продолжал отыгрывать анимацию в нужную сторону?
Если в секции meet просто поставить victim (любой) = story_id, то НПС начинает колбаситься.

Спойлер

victim = 30 | yan_expedition_dolg_1_copy ;стори_ид персонажа, на которого должен смотреть собеседник
victim_wpn = 30 | yan_expedition_dolg_1_copy
snd_on_use = nil
use = true
use_wpn = true
meet_dialog = yan_psi_oko_kudrischev_in_tubes
trade_enable = false

 

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

Мод в разработке - X-7: Эпицентр

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


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

Prostomod давай так:
[meet@all]
close_anim         = nil
close_victim     = nil
far_anim         = nil
far_victim         = nil
close_distance         = 0
far_distance     = 0
allow_break = false
trade_enable = false
close_snd_hello = nil
close_snd_bye = nil

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


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

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


 

Защитим мир от заразы - Зоны                   Долг.gif

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


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

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

В активную логику вписываешь эту строку:
wounded = wounded@help

А потом саму секцию:
[wounded@help]
hp_state = 101|wounded_heavy@help_heavy
hp_state_see = 101|wounded_heavy@help_heavy
hp_victim = 101|actor
hp_cover = 101|false
hp_fight = 101|false
autoheal = false
enable_talk = true

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


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

Expression    : assertion failed
Function      : CUIAchievements::Update
File          : D:\prog_repository\sources\trunk\xrGame\ui\UIAchievements.cpp
Line          : 44
Description   : ai().script_engine().functor(m_functor_str, f)

Создавал достижение, вылет, в каком из файлов ошибка? Проверяю всё вроде без ошибок.
 


Дополнено 46 минуты спустя
4 часа назад, Neptun сказал:

В активную логику вписываешь эту строку:
wounded = wounded@help

А потом саму секцию:
[wounded@help]
hp_state = 101|wounded_heavy@help_heavy
hp_state_see = 101|wounded_heavy@help_heavy
hp_victim = 101|actor
hp_cover = 101|false
hp_fight = 101|false
autoheal = false
enable_talk = true

Я даю аптечку ей, но она не лечится!

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

 

Защитим мир от заразы - Зоны                   Долг.gif

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


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

Ещё хочу задать вопрос: есть ли какой-то способ заставить НПС выстрелить в члена своей группировки (и даже больше - в НПС, который в том же скваде, что и стрелок), причём так, чтобы жерва не меняла группировку? Или только писать скрипт для симуляции такого?
Анимация threat_fire в walker не работает - НПС не стреляет, если на траектории выстрела есть дружественный НПС.

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


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

SoDizzari Я так понял, тут надо поработать с параметрами hp_state и hp_state_see: первое - поведение при определённом ХП когда не видит игрока, а второе - тоже самое, но когда видит игрока. Вот на этой сайте (тык) нашёл огромную шпаргалку по настройке логики, в т.ч. по секциям разного вида.

Спойлер

hp_state= 30|help_me@help|10|wounded_heavy@help_heavy
hp_state_see = 30|wounded@help_see|10|wounded_heavy@help_heavy
psy_state = 50|{=best_pistol}psy_armed,psy_pain@wounded_psy|20|psy_shoot,psy_pain@wounded_psy_shoot,wounded_psy hp_victim = 30|actor|10|nil
hp_cover = 30|true|10|false
hp_fight = 30|true|10|false
syndata = wounded@help
;best_pistol – проверка на то, что лучшее оружие NPC является пистолетом.

 


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

И ещё сразу вопрос: в зп есть возможность смены эмбиента локации прямо во время игры? Например, играет одно на вей локации, но при заходе в какой-нибудь коллектор композиция меняется.

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

Мод в разработке - X-7: Эпицентр

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


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

Prostomod можно попробовать поменять отношения через npc:set_relation(game_object.enemy,who) (npc и who это два нпс). Группировка не должна поменяться но нпс по идее станут друг другу врагами. Не уверен на 100% что сработает если в одном скваде. 

  • Мастер! 1
  • Спасибо 1

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


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

Prostomod 

hitman:force_set_goodwill(-100500, target)

и hitman:set_relation(game_object.enemy, target) как уже посоветовали.

  • Спасибо 1

Я логи в баню удалил, а вот за за рейдеры – не помню!

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


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

Приветствую. Кто пользовался =hit_npc?

Подскажите, за что отвечает второй параметр (помечен цветом). Что это вообще такое? В интернете порыскал ничего не нашел?

%=hit_npc(self:pri_a17_taras_dead:bip01_head:1:13)%

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


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

Крим очень похоже, что это вейпоинт, со стороны которого наносится удар.

Изменено пользователем Prostomod
исправил явно неверный ответ
  • Спасибо 1

Мод в разработке - X-7: Эпицентр

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


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

Здравствуйте, не могу найти ошибку в логике , но она работает не корректно, при входе в вообще другой рестриктор, не относящийся к этому присылаются сообщения "actor_suda_nelzya" и "ti_schto_tupoy" хоть и есть проверки, что актор в рестрикторе (...) здесь и там.

Спойлер

[logic]
active = sr_idle@1

[sr_idle@1]
on_info = {=actor_in_zone(derevnya_actor_suda_nelzya)} sr_idle@2 %=play_sound(svd_shoot) =send_tip(actor_suda_nelzya)% 
on_info2 = {+seif_door_open} sr_idle@end

[sr_idle@2]
on_game_timer = 60 | {=actor_in_zone(derevnya_actor_suda_nelzya)} %=play_sound(svd_shoot) =send_tip(ti_schto_tupoy) =dec_faction_goodwill_to_actor(stalker:-5000)%

[sr_idle@end]

 

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


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

Здравствуйте, не могу найти ошибку в логике

Проверь размеры рестриктора, а также уточни его координаты. 


Дополнено 1 минуту спустя
1 час назад, Крим сказал:

pri_a17_taras_dead

Это точка - направление, в эту сторону НПС полетит после удара.

  • Спасибо 1

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


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

@Neptun Размеры которые нужны, они даже не соприкасаются друг с другом) Прохожу в одном, а логика срабатывает от другого :u1F9D0:

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


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

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

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

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

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

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

Войти

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

Войти

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