misterok21 2 Опубликовано 26 Мая 2020 Spoiler Этот код: -- проверяндус есть ли у нас жертва обстоятельств if victim ~= nil then local whocls = get_clsid(who) monster_classes = { [clsid.bloodsucker_s] = "неудачно подошёл к кровососу", [clsid.boar_s] = "неудачная охота на кабана", [clsid.dog_s] = "загрызён собакой", [clsid.flesh_s] = "неудачная охота на плоть", [clsid.pseudodog_s] = "загрызён псевдособакой", [clsid.burer_s] = "нарвался на бюрера", [clsid.cat_s] = "кошка перебежала дорогу", [clsid.chimera_s] = "нарвался на химеру", [clsid.controller_s] = "стал зомби и умер", [clsid.poltergeist_s] = "полтергейст", [clsid.gigant_s] = "растоптал псевдогигант", [clsid.zombie_s] = "попрощался с мозгами", [clsid.snork_s] = "неудачно нашёл снорка", [clsid.tushkano_s] = "умер от стаи тушканов", [clsid.psy_dog_s] = "загрызён пси собакой", [clsid.psy_dog_phantom_s] = "загрызён пси собакой" } local death_komment = { "Ещё один...", "Мдя, ни дня без этого.", "Одним больше, одним меньше...", "Все там будем", "Помянуть надо бы...", "Зона тебе пухом.", "Был пацан, не стало пацана" } -- -- -- victim_name - имя жертвы -- killer_name - имя убивайца -- killer_comm - групировка убивайца -- victim_comm - групировка жертвы -- -- 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 = nil if IsStalker(who) then if killer_name == victim_name then killer_name = "аномалия" killer_comm = "monster" else killer_comm = who:character_community() -- Чтобы показывать имя, кто убил удали строку ниже killer_name = "пулевое ранение" end else killer_comm = "monster" if whocls ~= nil then killer_name = monster_classes[whocls] end end if killer_comm ~= nil then if killer_name == nil then -- это если имя убийцы неизвестно или мутантик какой неизвестен killer_name = "%c[230,255,0,0][DATA DELETED]" end local m_text_kill_string="Умер сталкер "..victim_name.."\\nЛокация: "..game.translate_string(m_s_level).."\\nПричина смерти: "..killer_name local news_text = "%c[230,255,128,64]"..m_text_kill_string local news_caption = game.translate_string("DeadMans") local texture = "ui_iconsTotal_weapons" local shans = math.random(1,100) db.actor:give_game_news(news_caption, news_text, texture, 2*1000, 2*1000) if shans > 70 then local dead_news = death_komment[math.random(table.getn(death_komment))] db.actor:give_game_news(game.translate_string("Анонимное сообщение"), dead_news, "ui_iconsTotal_grouping", 5*1000, 5*1000) end end end вставляем в файл gamedata\scripts\xr_motivator.script после строки function motivator_binder:death_callback(victim, who) Примечание: в данном виде функция предназначена для старших платформ: ЧН, ЗП. Для работы на платформе ТЧ участок кода, в котором производится выдача новостных сообщений, следует привести к следующему виду: if killer_comm ~= nil then ... local task_texture, task_rect = get_texture_info("ui_iconsTotal_weapons") local news_text = news_caption .. "%c[230,255,128,64]" .. m_text_kill_string db.actor:give_game_news(news_text, task_texture, task_rect, 5*1000, 5*1000) if shans > 70 then local task_texture, task_rect = get_texture_info("ui_iconsTotal_grouping") local dead_news = dead_caption .. death_komment[math.random(table.getn(death_komment))] db.actor:give_game_news(dead_news, task_texture, task_rect, 5*1000, 5*1000) end end Где: news_caption = '...', dead_caption = '...' - соответствующие строковые заголовки для типов сообщений (кто погиб и комментарии). 2 Поделиться этим сообщением Ссылка на сообщение