CS Создание сообщений о смерти сталкеров — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

CS Создание сообщений о смерти сталкеров — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
(Исправил пару отпечаток в тексте)
(оформление)
 
Строка 8: Строка 8:
  
 
В нём находим следующие строки:
 
В нём находим следующие строки:
<code>function motivator_binder:death_callback(victim, who)
+
<lua>function motivator_binder:death_callback(victim, who)
callstack()</code>
+
callstack()</lua>
  
 
Между ними вставляем следующий текст:
 
Между ними вставляем следующий текст:
  
<code>--Некрологи
+
<lua>--Некрологи
  
 
monster_classes = {
 
monster_classes = {
Строка 66: Строка 66:
  
 
         db.actor:give_game_news(news_caption, news_text, texture, 15*1000, 15*1000)
 
         db.actor:give_game_news(news_caption, news_text, texture, 15*1000, 15*1000)
end</code>
+
end</lua>
  
 
'''Теперь немного поясню.'''
 
'''Теперь немного поясню.'''
  
 
Это, как вы поняли, определение мутанта, который укокошил очередного сталкера:  
 
Это, как вы поняли, определение мутанта, который укокошил очередного сталкера:  
<code>monster_classes = {
+
<lua>monster_classes = {
 
[clsid.bloodsucker_s] = "Кровосос",
 
[clsid.bloodsucker_s] = "Кровосос",
 
[clsid.boar_s] = "Кабан",
 
[clsid.boar_s] = "Кабан",
Строка 84: Строка 84:
 
[clsid.psy_dog_phantom_s] = "Призрак псевдособаки",
 
[clsid.psy_dog_phantom_s] = "Призрак псевдособаки",
 
}
 
}
</code>
+
</lua>
  
 
Это - определение уровня, на котором произошло убийство:  
 
Это - определение уровня, на котором произошло убийство:  
<code>local m_game_vertex = who:game_vertex_id()
+
<lua>local m_game_vertex = who:game_vertex_id()
 
local lvert = game_graph():vertex(m_game_vertex)
 
local lvert = game_graph():vertex(m_game_vertex)
 
local lid = lvert:level_id()
 
local lid = lvert:level_id()
 
local mlevel = alife():level_name(lid)
 
local mlevel = alife():level_name(lid)
 
local m_s_level = mlevel
 
local m_s_level = mlevel
</code>
+
</lua>
 
Это - определение имён и группировок убийцы и убитого. ''Выброс у нас определяется как мутант'':
 
Это - определение имён и группировок убийцы и убитого. ''Выброс у нас определяется как мутант'':
  
<code>local victim_name  = victim:character_name()
+
<lua>local victim_name  = victim:character_name()
  
 
local killer_name  = who:character_name()
 
local killer_name  = who:character_name()
Строка 106: Строка 106:
 
killer_name="Выброс"
 
killer_name="Выброс"
 
killer_comm="monster"
 
killer_comm="monster"
end</code>
+
end</lua>
  
 
Отображение сообщения следующего типа: ''Вася Пупкин(Долг) убил сталкера Петя Иванов(Свобода), локация Свалка ''.  
 
Отображение сообщения следующего типа: ''Вася Пупкин(Долг) убил сталкера Петя Иванов(Свобода), локация Свалка ''.  
 
Вместо надписей ''убил сталкера'' и ''локация'' можете написать что угодно:
 
Вместо надписей ''убил сталкера'' и ''локация'' можете написать что угодно:
<code>if killer_comm~=nil then
+
<lua>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)</code>
+
         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)</lua>
 
Название предыдущего сообщения. Вместо надписи ''Некролог'' можете написать что угодно:
 
Название предыдущего сообщения. Вместо надписи ''Некролог'' можете написать что угодно:
  
<code>local news_text = "%c[255,160,160,160]".."Некролог:".."\\n".."%c[default]"..m_text_kill_string</code>
+
<lua>local news_text = "%c[255,160,160,160]".."Некролог:".."\\n".."%c[default]"..m_text_kill_string</lua>
  
 
----
 
----

Текущая версия на 14:56, 12 апреля 2011

В своё время меня мучал вопрос: как сделать так, чтобы отображалась информация о смерти сталкеров. Как только я нашёл ответ на этот вопрос, я решил выложить его здесь.


И так, поехали.

Вам понадобится файл: 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] 		= "Призрак псевдособаки",
	[clsid.controller_s] 			= "Контролёр",
	[clsid.tushkano_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

Теперь немного поясню.

Это, как вы поняли, определение мутанта, который укокошил очередного сталкера:

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()
 
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

На авторство этого способа я не предендую. Скрипт, с небольшими изменениями, был перенесён из мода Another story


Если что не понятно, пишите в личку на http://www.stalker-zone.info или на http://social.stalker-zone.info/

Автор: Должник47

Другие места
LANGUAGE