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

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

 
 
34 минуты назад, Сергей Шубин сказал:

Как составить функцию - прекондишион для диалога?  Должна возвращать true, если ГГ убил, например, 20 монстров.

function actor_killed_over_20_monsters(first_speaker, second_speaker)
	return xr_statistic.actor_statistic.killed_monsters > 19
end

 

34 минуты назад, Сергей Шубин сказал:

Как составить функцию для xr_conditions в общем виде?  Вызывается из логики рестриктора. Если ГГ выполнил, допустим, 5 квестов, то рестриктор переключается на следующую секцию

function actor_completed_quests(actor, npc, p)
	if p[1] == nil then
		return false
	end
	return xr_statistic.actor_statistic.completed_quests >= tonumber(p[1])
end
[sr_idle@1]
on_info = {=actor_completed_quests(5)} sr_idle@2

[sr_idle@2]

 

Изменено пользователем denis2000
  • Лайк 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

подскажите функцию проверку отношения нпс к гг? Нужно на колбек смерти повесить, или бесполезно туда вешать и даже ваншотом друзья при смерти становятся врагами? 


76561198152189716.png

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


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

ian98
game_relations.get_npcs_relation(npc,db.actor) <= -1000 ---ВРАГ
game_relations.get_npcs_relation(npc,db.actor) >= 1000 --ДРУГ

Изменено пользователем liner
  • Мастер! 1

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


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

del

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

76561198152189716.png

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


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

Нужно сделать чтобы в gui в компоненте listbox было реализованно условие чтобы при клике на определенную строку срабатывала функция 

Изменено пользователем Paradox27kms
  • Смущение 1

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


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

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

  • Печаль 2

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


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

Подскажите почему НПС могу не видеть ГГ? Это происхлдит на одной локации (среднее качество компиляции, АИ сетка не драфт). При стрельбе НПС паникуют, кидают гранаты, но ГГ не видят. Я тестировал видимость ГГ для НПС так:

npc:see(db.actor)

Возвращает false. НПС реально "не видят" ГГ. Пробовал менять в смарте НПС на другие модели и секции - не помогает.


И создание фанатских модов — это не следствие популярности S.T.A.L.K.E.R., это причина по которой когда-нибудь появится на свет S.T.A.L.K.E.R. 2
© С. Григорович.

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


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

Graff46 наверное это какие-то баги с локацией, но можно попробовать неписям увеличить видимость или через конфиг сталкеров все параметры и коэффициенты из Visibility там много факторов: время time

дистанция min_view_distance и max_view_distance  чем больше тем дальше видят неписи

visibility_threshold (лимит чем меньше тем быстрее замечают)

velocity_factor  - фактор движения

luminocity_factor  - фактор освещения, чем меньше, тем быстрее замечают в темноте

transparency_threshold - видимость сквозь полупрозрачные объекты типа кусты) чем меньше тем лучше в них палят, тут можно попробовать значение около 0 ( если поставить 1- по идее вообще не будут видеть в кустах)

 

на ЗП еще можно в юзере, править основные параметры АИ, это углы взора ai_aim_max_angle, ai_aim_min_angle .


ai_aim_min_speed - скорость прицеливания, чем ниже тем быстрее АИ палят игрока, и начинают стрелять когда увидят

ai_aim_predict_time - скорость упреждения когда игрок двигается, то есть при больших значениях АИ будут попадать только по стоячему игроку, в движении будут мазать, при низких значениях даже по бегущему спринтеру будут бить точно в яблочко)
 

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 05.07.2022 в 16:08, Paradox27kms сказал:

чтобы в gui в компоненте listbox было реализованно условие чтобы при клике на определенную строку срабатывала функция

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

23 часа назад, Paradox27kms сказал:

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

А надо ли? Если нпс будет без оружия - будет носиться по всей локе как дурной. Например, так

Спойлер

npc обозначьте (смотря через что забираете) и нужные слоты


local wpn = npc:item_in_slot(3)
	if wpn then
		npc:transfer_item(wpn, db.actor)
	end

 

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

В беге за рассветом приближаешь свой закат

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


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

Добрый вечер.  Тестирую функции передачи от игрока квестовых предметов.  В оригинальном Зове Припяти происходит трансферт предметов. Когда мы приносим Тесаку 6 банок тушенки, то они у него и остаются. Если грохнуть Тесака, то в этом можно убедиться.

Пробую функции для диалога, удаляющие квестовые предметы из игры. Получилось следующее.

Для одиночного предмета работает отлично.
 

Спойлер

 

function esc_b3_atp_scout_medkit_out(actor, npc)
    dialogs.relocate_object_ot_actor("medkit")
end

function relocate_object_ot_actor(item)
    local obj = db.actor:object(item)
    if obj ~= nil then
        alife():release(alife():object(obj:id()), true)
    end
    news_manager.relocate_item(db.actor,"out",item)
end

 

Но если предметов два или несколько, то удаляется только один. Чтобы убрать два предмета, нужно в диалоге делать два экшена.  Нашел такую функцию.

Спойлер


function esc_teleport_scaner_1_out(actor, npc)
    dialogs.relocate_objects_ot_actor("teleport_scaner_1")
end
function relocate_objects_ot_actor(target_item)
    local victim=db.actor
    local function calc(temp,item)
        if item~=nil then
            if item:section()==target_item then
                if alife():object(item:id()) then
                    alife():release(alife():object(item:id()),true)
                    news_manager.relocate_item(db.actor,"out",target_item)
                end
            end
        end
    end
    victim:iterate_inventory(calc,victim)
end

Эта функция убирает все предметы с данным именем. Есть в рюкзаке 10 автоматов, то уберет все подчистую. Вопрос такой. Как доработать первую функцию?


function relocate_object_ot_actor(item)
    local obj = db.actor:object(item)
    if obj ~= nil then
        alife():release(alife():object(obj:id()), true)
    end
    news_manager.relocate_item(db.actor,"out",item)
end

Чтобы можно было задать число удаляемых предметов.

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


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

Зачем изобретать велосипед?

Файл dialogs.script

Функция relocate_item_section_from_actor

Скопируйте её и назовите, например, remove_item_section_from_actor

Там где объекты трансферятся замените на их удаление. Счетчик все-равно будет исправно работать и выдаст в диалоге, какое количество объектов "передано" от ГГ.

Получите в файле две функции. Одна,  родная пысовская,  будет трансферить,  другая,  ваша , будет удалять.

Не сложно объяснил?

  • Лайк 1

Терпение... И все получится.

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


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

[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   : ...all of pripyat\gamedata\scripts\death_manager.script:32: attempt to perform arithmetic on a nil value

помогите пожалуйста решить проблему

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


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

помогите пожалуйста решить проблему

Или накосячили в конфигах.

Или прописали новую группировку, но не добавили её туда куда нужно.

 

  • Лайк 1

Терпение... И все получится.

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


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

Подскажите конфиги, чтобы нпс стрелял с двустволки с паузой между ввстрелами, а то нпс практически одновременно делает сразу 2 выстрела.


И создание фанатских модов — это не следствие популярности S.T.A.L.K.E.R., это причина по которой когда-нибудь появится на свет S.T.A.L.K.E.R. 2
© С. Григорович.

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


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

Graff46 Это скорее всего не в конфиге, а в движке.


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

Мне нужна функция, которая удаляет предмет из инвентаря гг во время диалога. Подскажите, пожалуйста.

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


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

Крим

function name()
	alife():release(alife():object("секция_предмета"),true)
end
--Вызвать функцию из диалога с помощью <action>

 

  • Спасибо 1

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


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

Вылет при убийстве нпс новой группировки

подскажите пожалуйста

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


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

Вылет при убийстве нпс новой группировки

подскажите пожалуйста

У меня нога болит, от ж.пы до мизинца.

Подскажите пожалуйста.?

Лог вылета где?


EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

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


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

[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   : ...all of pripyat\gamedata\scripts\death_manager.script:150: attempt to index field '?' (a nil value)

Извините, я думал по проблеме будет ясна причина

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


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

Volodymyr недоделал где-то группировку. Забыл как минимум дроп им прописать в конфигах


76561198152189716.png

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


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

В конгигах death items? А в death items count что-то нужно писать?

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


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

Volodymyr смотри по примерам других группировок, также сделай

плюс в самом менеджере есть строка, там у тебя эта группировка есть? 

local community_list = { "stalker", "dolg", "freedom", "bandit", "army", "zombied", "ecolog", "killer", "monolith" }

Если да, то прописать ее точно нужно в тех конфигах. Если нет, то я тебе неправильно говорю что-то. Я никогда не делал группировки)

Изменено пользователем ian98
  • Лайк 1

76561198152189716.png

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


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

attempt to index field '?' (a nil value)

Тут должно было быть имя функции или переменной, но его нет (в данном случае: '?').

Это значит, что ее например, вызвали по числовому индексу из таблицы или еще как-то, причины могут быть разные.

А общий смысл - то, с чем пытались совершить указанное действие, не имеет имени.


EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

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


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

Вопрос 1: как задать логику мутанту, заспавненному через скрипт. Сама логика есть (условно - патрульный путь от точки до точки), но как привязать её к конкретному (квестовому) мутанту? И будет ли работать на мутантах функция логики on_info = {=npc_in_zone(restrictor_name)}?

Вопрос 2: возможно ли сделать через стандартную ЗП-шную систему апгрейдов, смену ХУД-визуала оружия? По логике можно в конфиге апгрейда дописать строку "hud = "новый_блок_худа_из_конфига_пушки"", но естественно оно не работает. Либо в скрипте inventory_upgrades.script создать новую функцию, подменяющую модели на новые при апгрейде, но вид этой функции пока не могу даже представить себе. Либо такое вообще никак не реализовать?

Вопрос 3: как сделать возможность действия на обьекте (например как в ЗП заложить взрывчатку на дверь или осмотреть вертолёт), с выдачей инфопоршня после действия. Где-то давно встречал урок на эту тему, но сейчас найти так и не смог.
Также интересно узнать, как проиграть партикл (взрыва например) по определённым координатам, с вызовом через скрипт.



ASUS z87-k, I5-4670 @3.40GHz, MSI GTX 1050ti, 16gb ОЗУ, SSD 100gb, 2xHDD 500gb,
Windows 10 Pro. Аномали на ультрах летает. Вместе с компом по комнате.

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


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

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

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

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

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

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

Войти

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

Войти

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

    Ни одного зарегистрированного пользователя не просматривает данную страницу