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

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

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

Перейти к: навигация, поиск
(Отмена правки 10963 участника RedPython (обсуждение))
м (Правки 95.84.53.126 (обсуждение) откачены к версии RedPython)
Строка 1: Строка 1:
НЕ надо этот урок!
+
Итак, первым делом в директории '''gamedata\scripts''' создайте файл с названием '''имя_вашего_файла.script'''
 +
 
 +
1.Открываем его и пишем:
 +
<lua>local locations_name = {
 +
  ["l01_escape"]    = "      Локация: Кордон",
 +
  ["l02_garbage"]    = "      Локация: Свалка",
 +
  ["l03_agroprom"]  = "      Локация: Агропром",
 +
  ["l03u_agr_undergroun"]  = "      Локация: Подземелье Агропрома",
 +
  ["l04_darkvalley"] = "      Локация: Тёмная долина",
 +
  ["l04u_labx18"] = "      Локация: Лаборатория X-18",
 +
  ["l05_bar"]        = "      Локация: Бар",
 +
  ["l06_rostok"]    = "      Локация: Росток",
 +
  ["l07_military"]  = "      Локация: Арм.склады",
 +
  ["l08_yantar"]    = "      Локация: Янтарь",
 +
  ["l10_radar"]      = "      Локация: Радар",
 +
  ["l11_pripyat"]    = "      Локация: Припять",
 +
  ["l12_stancia"]    = "      Локация: ЧАЭС 1",
 +
  ["l12_stancia_2"]  = "      Локация: ЧАЭС 2",
 +
  ["l12u_sarcofag"]  = "      Локация: Саркофаг"
 +
                      }
 +
 
 +
function news_of_npc_kill(victim)
 +
  local dead_news = "Нет трупа"
 +
  if victim and IsStalker(victim) then
 +
    local locations = locations_name[level.name()] or ""
 +
    dead_news = "Погиб сталкер: "..victim:character_name().."\\n%c[default]"..locations
 +
  end
 +
  db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000)
 +
end</lua>
 +
Теперь поясню:
 +
<lua>local locations_name = {
 +
  ["l01_escape"]    = "      Локация: Кордон",
 +
  ["l02_garbage"]    = "      Локация: Свалка",
 +
  ["l03_agroprom"]  = "      Локация: Агропром",
 +
  ["l03u_agr_undergroun"]  = "      Локация: Подземелье Агропрома",
 +
  ["l04_darkvalley"] = "      Локация: Тёмная долина",
 +
  ["l04u_labx18"] = "      Локация: Лаборатория X-18",
 +
  ["l05_bar"]        = "      Локация: Бар",
 +
  ["l06_rostok"]    = "      Локация: Росток",
 +
  ["l07_military"]  = "      Локация: Арм.склады",
 +
  ["l08_yantar"]    = "      Локация: Янтарь",
 +
  ["l10_radar"]      = "      Локация: Радар",
 +
  ["l11_pripyat"]    = "      Локация: Припять",
 +
  ["l12_stancia"]    = "      Локация: ЧАЭС 1",
 +
  ["l12_stancia_2"]  = "      Локация: ЧАЭС 2",
 +
  ["l12u_sarcofag"]  = "      Локация: Саркофаг"
 +
                      } -- названия локаций. Здесь указаны не все локации
 +
 
 +
function news_of_npc_kill(victim) -- сама функция
 +
  local dead_news = "Нет трупа" -- переменная
 +
  if victim and IsStalker(victim) then
 +
    local locations = locations_name[level.name()] or "" -- названия локации. Определяется из таблицы: locations_name
 +
    dead_news = "Погиб сталкер: "..victim:character_name().."\\n%c[default]"..locations -- определяется имя умершего
 +
  end
 +
  db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000) -- выдается сообщение
 +
end</lua>
 +
2. Далее открываем '''xr_motivator.script''',
 +
который находится в '''gamedata\scripts''', ищем функцию:
 +
 
 +
function motivator_binder:death_callback(victim, who)
 +
 
 +
и после пишем:
 +
имя_вашего_файла.news_of_npc_kill(victim) в итоге:
 +
 
 +
<lua>function motivator_binder:death_callback(victim, who)
 +
      имя_вашего_файла.news_of_npc_kill(victim)
 +
if who:id() == db.actor:id() then
 +
xr_statistic.addKillCount(self.object)
 +
end</lua>
 +
Вот собственно и все!
 +
===Автор:Weanchester===
 +
[[Категория:Скрипты]]

Версия 16:26, 21 мая 2011

Итак, первым делом в директории gamedata\scripts создайте файл с названием имя_вашего_файла.script

1.Открываем его и пишем:

local locations_name = {
  ["l01_escape"]     = "       Локация: Кордон",
  ["l02_garbage"]    = "       Локация: Свалка",
  ["l03_agroprom"]   = "       Локация: Агропром",
  ["l03u_agr_undergroun"]   = "       Локация: Подземелье Агропрома",
  ["l04_darkvalley"] = "       Локация: Тёмная долина",
  ["l04u_labx18"] = "       Локация: Лаборатория X-18",
  ["l05_bar"]        = "       Локация: Бар",
  ["l06_rostok"]     = "       Локация: Росток",
  ["l07_military"]   = "       Локация: Арм.склады",
  ["l08_yantar"]     = "       Локация: Янтарь",
  ["l10_radar"]      = "       Локация: Радар",
  ["l11_pripyat"]    = "       Локация: Припять",
  ["l12_stancia"]    = "       Локация: ЧАЭС 1",
  ["l12_stancia_2"]  = "       Локация: ЧАЭС 2",
  ["l12u_sarcofag"]  = "       Локация: Саркофаг"
                       }
 
function news_of_npc_kill(victim)
  local dead_news = "Нет трупа"
  if victim and IsStalker(victim) then
    local locations = locations_name[level.name()] or ""
    dead_news = "Погиб сталкер: "..victim:character_name().."\\n%c[default]"..locations
  end
  db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000)
end

Теперь поясню:

local locations_name = {
  ["l01_escape"]     = "       Локация: Кордон",
  ["l02_garbage"]    = "       Локация: Свалка",
  ["l03_agroprom"]   = "       Локация: Агропром",
  ["l03u_agr_undergroun"]   = "       Локация: Подземелье Агропрома",
  ["l04_darkvalley"] = "       Локация: Тёмная долина",
  ["l04u_labx18"] = "       Локация: Лаборатория X-18",
  ["l05_bar"]        = "       Локация: Бар",
  ["l06_rostok"]     = "       Локация: Росток",
  ["l07_military"]   = "       Локация: Арм.склады",
  ["l08_yantar"]     = "       Локация: Янтарь",
  ["l10_radar"]      = "       Локация: Радар",
  ["l11_pripyat"]    = "       Локация: Припять",
  ["l12_stancia"]    = "       Локация: ЧАЭС 1",
  ["l12_stancia_2"]  = "       Локация: ЧАЭС 2",
  ["l12u_sarcofag"]  = "       Локация: Саркофаг"
                       } -- названия локаций. Здесь указаны не все локации
 
function news_of_npc_kill(victim) -- сама функция
  local dead_news = "Нет трупа" -- переменная
  if victim and IsStalker(victim) then
    local locations = locations_name[level.name()] or "" -- названия локации. Определяется из таблицы: locations_name
    dead_news = "Погиб сталкер: "..victim:character_name().."\\n%c[default]"..locations -- определяется имя умершего
  end
  db.actor:give_game_news(dead_news, "ui\\ui_icons_npc", Frect():set(2,130,124,124), 1, 4000) -- выдается сообщение
end

2. Далее открываем xr_motivator.script, который находится в gamedata\scripts, ищем функцию:

function motivator_binder:death_callback(victim, who)

и после пишем: имя_вашего_файла.news_of_npc_kill(victim) в итоге:

function motivator_binder:death_callback(victim, who)
       имя_вашего_файла.news_of_npc_kill(victim)
	if who:id() == db.actor:id() then
		xr_statistic.addKillCount(self.object)
	end

Вот собственно и все!

Автор:Weanchester

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