Имя NPC в игровых сообщениях "Зова Припяти"
|
|
|
sektor_aka
Воскресенье, 11.06.2017, 23:10 | Сообщение # 1
Статус: |
|
Опытный: |
|
Сообщений: |
1343 |
Награды: |
6 |
Регистрация: |
07.03.2016 |
|
Кто шарит в логике, подскажите, как тут дописать правильно, чтобы в сообщении указывалось имя NPC, а не писалось "Сообщение".
Код [sr_idle@20] on_game_timer = 10000 | sr_idle@30 %+sad_artefuck_ready =send_tip(sad_artefact_upgr_ready:sad_atr_trader) -sad_atr_trader_go_kitchen%
send_tip - понятно, что это функция в xr_effects.script
Есть даже такой комментарий:
Код --[[ send_tip(news_id:sender:sender_id) 1. news_id 2. sender* 3. sender_id* * - not necessary --]]
news_id - это текст сообщения, т.е. string id. В моей логике имя sad_artefact_upgr_ready sender - это иконка в секции tips_icons news_manager.script. В моей логике имя sad_atr_trader sender_id - а это заголовок сообщения, story_id NPC.
story_id моего персонажа прописан в файле по пути: gamedata\configs\creatures\spawn_sections_sad.ltx
И выглядит так:
Код [sad_atr_trader]:stalker $spawn = "respawn\sad_atr_trader" character_profile = sad_atr_trader story_id = sad_atr_trader
Т.е. в логике я указал как:
Код [sr_idle@20] on_game_timer = 10000 | sr_idle@30 %+sad_artefuck_ready =send_tip(sad_artefact_upgr_ready:sad_atr_trader:sad_atr_trader) -sad_atr_trader_go_kitchen%
Дело в том, что хоть story_id и указан, заголовок все также остается как "Сообщение".
Я все-таки думаю, что story_id читается, но не отображается. Потому что, если указать другое имя, не являющееся story_id - игра вылетит. Думаю, дело в функции send_tip в news_manager.script. Там не прописано отображение имени. Возможно, что-то со времен прошлых игр удалили из скриптов, т.к. я действительно не помню чтобы в ЗП игрок получал сообщения с подписанным именем NPC.
|
|
Воскресенье, 11.06.2017, 23:10
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
07.03.2016 |
|
|
|
|
|
Overfirst
Понедельник, 12.06.2017, 10:36 | Сообщение # 2
Статус: |
|
Бывалый: |
|
Сообщений: |
1081 |
Награды: |
19 |
Регистрация: |
11.06.2015 |
|
В ЗП даже не предусматривается установка заголовка, по умолчанию там уже стоит st_tip. Поправил оригинальную функцию в news_manager.script и убрал лишнее:
Код function send_tip(news_caption, news_id, sender, showtime) if news_id == nil then return false end
if showtime == nil then showtime = 5 end
xr_sound.set_sound_play(db.actor:id(), "pda_tips")
local texture = "ui_iconsTotal_grouping" if sender ~= nil then if type(sender) == "string" then if tips_icons[sender] then texture = tips_icons[sender] end elseif is_npc_stalker(sender:clsid()) then texture = sender:character_icon() end end local news_caption = news_caption or game.translate_string("st_tip") local news_text = game.translate_string(news_id) db.actor:give_game_news(news_caption, news_text, texture, 0, showtime*1000, 0)
return true end Чтобы вызывать из логики, нужно в соответствии с этой функцией поправить функцию send_tip в xr_effects.script:Код --[[ 1. Заголовок сообщения 2. Текст сообщения 3. Иконка отправителя из таблицы tips_icons 4. Время показа в секундах --]] function send_tip(actor, npc, p) news_manager.send_tip(p[1], p[2], p[3], p[4]) end Пример использования:
Код %=send_tip(st_test_tip:st_test_news_text:diplomat:20)%
Скриншот:
|
|
Понедельник, 12.06.2017, 10:36
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
11.06.2015 |
|
|
|
|
|
sektor_aka
Понедельник, 12.06.2017, 14:39 | Сообщение # 3
Статус: |
|
Опытный: |
|
Сообщений: |
1343 |
Награды: |
6 |
Регистрация: |
07.03.2016 |
|
Цитата BoBaH_671 ( ) st_test_tip Это что, string id или story id ?
Думаю первое, раз у тебя написано "Имя отправителя".
Т.е. выходит указать можно только вручную?
Сообщение отредактировал sektor_aka - Понедельник, 12.06.2017, 14:40
|
|
Понедельник, 12.06.2017, 14:39
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
07.03.2016 |
|
|
|
|
|
Overfirst
Понедельник, 12.06.2017, 14:52 | Сообщение # 4
Статус: |
|
Бывалый: |
|
Сообщений: |
1081 |
Награды: |
19 |
Регистрация: |
11.06.2015 |
|
sektor_aka, ну по функции глазами пробегись. Да, это string id. Цитата sektor_aka ( ) Т.е. выходит указать можно только вручную? Не понял.
|
|
Понедельник, 12.06.2017, 14:52
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
11.06.2015 |
|
|
|
|
|
sektor_aka
Понедельник, 12.06.2017, 14:57 | Сообщение # 5
Статус: |
|
Опытный: |
|
Сообщений: |
1343 |
Награды: |
6 |
Регистрация: |
07.03.2016 |
|
Цитата BoBaH_671 ( ) Не понял. Ну мне сказали, что со story id:
Цитата Если объект от имени которого пишется сообщение в оффлайне или ранен - то оно не придет. Типа персонаж не может использовать PDA
Также не нужно текст имени указывать вручную.
Должна читаться секция:
Цитата sektor_aka ( ) [sad_atr_trader]:stalker $spawn = "respawn\sad_atr_trader" character_profile = sad_atr_trader story_id = sad_atr_trader
А string id из профиля NPC указанного в параметре character_profile
Сообщение отредактировал sektor_aka - Понедельник, 12.06.2017, 14:57
|
|
Понедельник, 12.06.2017, 14:57
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
07.03.2016 |
|
|
|
|
|
Overfirst
Понедельник, 12.06.2017, 15:00 | Сообщение # 6
Статус: |
|
Бывалый: |
|
Сообщений: |
1081 |
Награды: |
19 |
Регистрация: |
11.06.2015 |
|
Если не нравится, то можешь переписать, я же не заставляю. Не пойму, чем тебя сей вариант не устраивает. Упростил максимально, чтобы удобно было. Разницы никакой, если ты пишешь story_id, по которому читается имя, или же сразу пишешь имя из профиля.
|
|
Понедельник, 12.06.2017, 15:00
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
11.06.2015 |
|
|
|
|
|
sektor_aka
Понедельник, 12.06.2017, 15:03 | Сообщение # 7
Статус: |
|
Опытный: |
|
Сообщений: |
1343 |
Награды: |
6 |
Регистрация: |
07.03.2016 |
|
Цитата BoBaH_671 ( ) можешь переписать
Вот только не особо шарю в скриптописании.
Разница все же есть, напиши пожалуйста, чтобы story id читало. Если знаешь конечно...
Знаешь. Мне без твоих story_id хватает забот, сорян. BoBaH_671
Сообщение отредактировал sektor_aka - Понедельник, 12.06.2017, 15:04
|
|
Понедельник, 12.06.2017, 15:03
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
07.03.2016 |
|
|
|
|
|
Overfirst
Понедельник, 12.06.2017, 15:18 | Сообщение # 8
Статус: |
|
Бывалый: |
|
Сообщений: |
1081 |
Награды: |
19 |
Регистрация: |
11.06.2015 |
|
Цитата sektor_aka ( ) Должна читаться секция Если чекать оригинал, читается айдишник, да, но он никак не влияет на заголовок. Если ты его задал, то он тупо проверяет непися, не ранен ли он и не оффлайне ли он, ну и жив ли он. Это влияет только на отправку.
|
|
Понедельник, 12.06.2017, 15:18
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
11.06.2015 |
|
|
|
|
|
sektor_aka
Понедельник, 12.06.2017, 15:25 | Сообщение # 9
Статус: |
|
Опытный: |
|
Сообщений: |
1343 |
Награды: |
6 |
Регистрация: |
07.03.2016 |
|
Цитата BoBaH_671 ( ) никак не влияет на заголовок Ага. Кажись понял. Ты в скрипте:
Цитата BoBaH_671 ( ) function send_tip(news_caption, news_id, sender, showtime)
Заставил работать news_caption
А я спрашиваю про другое, про sender_id. У тебя он не указан.
Получается все верно. Имя отправителя задается вручную в логике его при вызове.
А sender_id эт проверка непися.
Сообщение отредактировал sektor_aka - Понедельник, 12.06.2017, 15:26
|
|
Понедельник, 12.06.2017, 15:25
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
07.03.2016 |
|
|
|
|
|
Overfirst
Понедельник, 12.06.2017, 15:28 | Сообщение # 10
Статус: |
|
Бывалый: |
|
Сообщений: |
1081 |
Награды: |
19 |
Регистрация: |
11.06.2015 |
|
Туповато получается. Это лишнее, имхо. Если непись эксклюзивный, то и логика у него соответствующая, а там можно выдать поршень, когда тот умирает:
Код [death] on_info = {-info} %+info% А перед отправкой проверить:
Код on_info = {-info} nil %=send_tip(st_test_tip:st_test_news_text:diplomat:20)% on_info2 = {+info} nil Мне сейчас не до скриптов, извиняй, «и так сойдёт».
|
|
Понедельник, 12.06.2017, 15:28
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
11.06.2015 |
|
|
|
|
|
Статус: |
|
Опытный: |
|
Сообщений: |
1343 |
Награды: |
6 |
Регистрация: |
07.03.2016 |
|
BoBaH_671, ну хотя да, ты прав. Там же логикой заданы условия выдачи. NPC наверняка обязан быть жив.
Тем более, говорят что:
Цитата Это билдомусор по сути. Он работает, но никто его не использует никогда
Ещё же СМС-ки могут приходить от разработчика. Типа «За помощь в борьбе с кровососами в личный ящик на Скадовске добавлены медикаменты», а тут никакие айдишники не нужны, даже если разработчик мёртв. BoBaH_671
|
|
Понедельник, 12.06.2017, 15:33
|
Статус: |
|
Сообщений: |
666 |
Регистрация: |
07.03.2016 |
|
|
|
|