Сповіщення
Очистити все

Створення повідомлень про смерть сталкерів


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
7 місяців тому
 

Знайшов інформацію про те, як зробити так, щоб відображалася інформація про смерть сталкерів, вирішив викласти його тут.

Поїхали.

Вам знадобиться файл: xr_motivator.script

У ньому знаходимо наступні рядки:

function motivator_binder:death_callback(victim, who)
callstack()

Між ними вставляємо наступний текст:

Тепер трохи поясню.

Це, як ви зрозуміли, визначення мутанта, який укокошив чергового сталкера:

monster_classes = {
	[clsid.bloodsucker_s] 			= "Кровосос",
	[clsid.boar_s] 					= "Кабан",
	[clsid.dog_s] 					= "Собака",
	[clsid.flesh_s] 				= "Плоть",
	[clsid.pseudodog_s] 			= "Псевдособака",
	[clsid.poltergeist_s] 			= "Полтергейст",
	[clsid.gigant_s] 				= "Псевдогигант",
	[clsid.zombie_s] 				= "Зомби",
	[clsid.snork_s] 				= "Снорк",
	[clsid.psy_dog_s] 				= "Пси собака",
	[clsid.psy_dog_phantom_s] 		= "Призрак псевдособаки",
}
 
		local m_game_vertex = who:game_vertex_id()
		local lvert = game_graph():vertex(m_game_vertex)
		local lid = lvert:level_id()
		local mlevel = alife():level_name(lid)
                local m_s_level = mlevel
 
	local victim_name  = victim:character_name()
 
	local killer_name  = who:character_name()
 
local victim_comm = victim:character_community()
 
local killer_comm = who:character_community()
 
local post_message_prob = 0.8
 
if killer_comm=="monster" then
	        local m_clsid = get_clsid(who)
			killer_name = monster_classes[m_clsid]
end
if killer_name==victim_name then
killer_name=Викид
killer_comm="monster"
end
 
if killer_comm~=nil then
        local m_text_kill_string=killer_name.." ("..game.translate_string(killer_comm).."), вбив сталкера "..victim_name.."("..game.translate_string(victim_comm).."). Локація: "..game.translate_string(m_s_level)
	local news_text = "%c[255,160,160,160]".."Некролог:".."\\n".."%c[default]"..m_text_kill_string
	local news_caption = game.translate_string("st_tip")
        local texture = "ui_iconsTotal_weapons"
 
        db.actor:give_game_news(news_caption, news_text, texture, 15*1000, 15*1000)
end

 

Це визначення рівня, на якому сталося вбивство:

локальний m_game_vertex = who:game_vertex_id ( ) 
локальний lvert = game_graph ( ) :vertex ( m_game_vertex ) 
локальний lid = lvert:level_id ( ) 
локальний mlevel = alife ( ) :level_name ( lid ) 
локальний m_s_level = mlevel
 

Це - визначення імен та угруповань вбивці та вбитого. Викид у нас визначається як мутант :

локальне ім'я_жертви = жертва:ім'я_персонажа ( )
 
локальне killer_name = who:character_name ( )
 
локальна жертва_comm = жертва:спільнота_персонажів ( )
 
локальний killer_comm = who:character_community ( )
 
if killer_name==ім'я_жертви then 
killer_name= "Виброс" 
killer_comm= "монстр" 
кінець

Відображення повідомлення наступного типу: Вася Пупкін (Борг) убив сталкера Петя Іванов (Свобода), локація Свалка . Замість написів убив сталкера і локація можете написати будь-що:

if killer_comm~= nil  then 
        local m_text_kill_string=killer_name.. " (" ..game.translate_string ( killer_comm ) .. "), убив сталкера " ..victim_name.. "(" ..game.translate_string ( žrtve_comm ) .. " ). Локація: " ..game.translate_string ( m_s_level )

Назва попереднього повідомлення. Замість напису Некролог можете написати будь-що:

local news_text = "%c[255,160,160,160]" .. "Некролог:" .. " \\ n" .. "%c[default]" ..m_text_kill_string

На авторство цього способу я не кажу. Скрипт, з невеликими змінами, перенесли з модифікації Another story.


   
Цитата