Перейти к контенту

[SoC] Ковыряемся в файлах


Halford

Рекомендуемые сообщения

2 часа назад, AndreySol сказал:

Как не работает? Ошибку выдает, тихо не делает что нужно?

Звуки не воспроизводятся. 

Адаптировал срезание только  ножем, ничего не происходит, никаки вылетов и ошибок... 

Косяки естесно за мной, но непонятно что делаю не так. 

 

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@Akros Можно звуковые заглушки поставить, вместо его фраз. Думаю это самое простое 

Изменено пользователем андрей дронав

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@Akros В ОП стоит античит, любое ковыряние файлов, и твои сейвы будут меченными красным ( возможно ошибаюсь). 

Распаковать файлы sounds.xdb

В папке sound/actors найти не нужные реплики, заменить их, и закинуть в папку с ОП. Я в ОП не гоняю, не факт что все что я написал сработает. 

Загляни в тему ковыряние ОП 2.2 

Изменено пользователем андрей дронав
  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Народ, я снова по теме срезания запчастей с мутантов.

Что здесь нужно изменить, чтобы открывался  инвентарь, только когда нож в руках

Скрытый текст

-- Срезание трофеев с монстров / Идея: мод "Мясник" (CoP) от Singapur22
function generic_object_binder:use_callback(obj, who)
    if self.use_flag == nil and self.object:section()~="m_trader" then
        self.object:set_nonscript_usable(false)  --если (true) инвентарь работает
        self.use_flag = true
    end
    
    if self.object:alive() or self.used then return end
    
    local knife = who:item_in_slot(0)
    if who:id() ~= db.actor:id() or (knife~=nil and who:active_slot() == 0) then
        self.used = true
    else
        if knife then
            news_manager.send_tip(db.actor,"Чтобы cрезать трофей, нужно достать нож.")
        end
        return
    end
    
    self.item = read_if_exist("s",nil,self.object:section(),"Spawn_Inventory_Item_Section",nil)
    if self.item then
        self.item_count = read_if_exist("f",nil,self.object:section(),"Spawn_Inventory_Item_Amount",1)
    else
        return
    end
    
    for i=1, self.item_count do
        alife():create(self.item, who:position(), who:level_vertex_id(), who:game_vertex_id(), who:id())
    end
    
    self.object:set_tip_text("")
    
    local h = hit()
    h.draftsman = self.object
    h.type = hit.fire_wound
    h.direction = vector():set(0,1,0)
    h:bone(read_if_exist("s",nil,self.object:section(),"bone_impuls_abscission","bip01_spine"))
    h.power = 1
    h.impulse = (read_if_exist("f",nil,self.object:section(),"impuls_abscission",150))
    self.object:hit(h)
    
    local sound_use = sound_object("material\\dead-body\\collide\\hithard0"..tostring(math.random(1, 6)).."hl")
    sound_use:play_at_pos(self.object, self.object:position(), sound_object.s3d)
end

Звуки не воспроизводятся, не нахожу нужного калбэка

 

Изменено пользователем андрей дронав

Поделиться этим сообщением


Ссылка на сообщение
10 часов назад, Купер сказал:

 Оно действительно в таком виде не желает работать. По крайней мере, на "классике". Интересно, почему?

 

Разберусь с этим когда получу вывих мозга. Но это не точно. :dash3: 

  • Смешно 2

Поделиться этим сообщением


Ссылка на сообщение
(изменено)
1 час назад, Купер сказал:

@андрей дронав ,

  off topic (Скрыть)

хотелось бы понять почему в такой конфигурации не работает?

 

Дружище, я никогда не учил язык программирования, для меня этот код "Абракадабра". Я умею пользоваться "WinMerge", и на этом мой навык мододела кончился. Буду пробовать ковырять ссылаясь на прошлые темы, а вдруг узнаю, ПАЧИМУ НЕ РАБОТАЕТ:laugh:

 

Может быть так?

Скрытый текст

self.object:set_callback(callback.use_object, self.use_object, self)
...
end

  function actor_binder:use_object(obj)
        sound_obj_left = sound_object([[material\\dead-body\\collide\\hithard0]])
        sound_obj_left:play_at_pos(db.actor, vector():set(1, 0, 1), 0, sound_object.s2d)
    end

 

Изменено пользователем андрей дронав
  • Смешно 1

Поделиться этим сообщением


Ссылка на сообщение
30.06.2022 в 17:56, Zander_driver сказал:

Вот просто интересно, каких ответов люди хотят на подобные вопросы... Ты же понимаешь что ответить тебе по существу, невозможно.

.

Пытался адаптировать этот скрипт

Скрытый текст

-- Отрезание запчастей монстров ножом и озвучка. Для отрезания достаточно, чтобы нож был в рюкзаке.
local monster = nil
local snd = nil
function get_monster()
    return monster
end

-- Ножи и прочее ХО, которым можно отрезать запчасть
local knives = {
    ["wpn_knife"]=true
}

function right_knife(knife)
    return (knives[knife:section()] and knife:condition()>0.1) or false
end

function on_part_take(obj)
    if not monster then
        return 
    end
    local item_part=ini_reader.iniReader():readBool(obj:section(),"monster_part",false)
    local monster_part=ini_reader.iniReader():readString(monster:section(),"Spawn_Inventory_Item_Section","")
    if not item_part or monster_part~=obj:section() then
        return
    end
    
    if actor_has_knife() then
        level.start_stop_menu(level.main_input_receiver(), true)
        if snd and snd:playing() then
            snd:stop()
        end
        snd = voice("zwuk\\inv_mutant_loot_"..math.random(1,16))
        snd:play_at_pos(db.actor, vector(), 0, sound_object.s2d)
        archievements.acv_count_event("acv_gvdr", 500, "acv_gvdr") 
        local knife=db.actor:item_in_slot(0)
        local cond_dec=ini_reader.iniReader():readString(knife:section(),"condition_shot_dec",0)
        if cond_dec~=0 then
            knife:set_condition(knife:condition()-cond_dec)
        end
        return
    end
    sms("on_part_take_0", nil, "nano", 5000)
    db.actor:transfer_item(obj, monster)
end

function actor_has_knife()
    local item_in_slot=db.actor:item_in_slot(0)
    if item_in_slot and item_in_slot:condition()>0.1 then
        return knives[item_in_slot:section()] or false
    end
    return false
end

function on_monster_use(victim, who)
    monster = victim
end

function on_monster_stop_use()
    monster = nil
end

function move_on()
    snp.move_on()
end
 

 

Поделиться этим сообщением


Ссылка на сообщение
(изменено)
5 часов назад, Houdini_one сказал:

@андрей дронав как понять?
При диалоге НПС говорит вместо "Привет" какую-то особенную фразу?

Нет, чтобы при приближении к нему, он говорил громко: здравствуй брат, говори зачем пришёл. 

Изменено пользователем андрей дронав

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Народ подскажите, чем возможно распаковать "Data Base File(.DB)" ? 

Пробовал утилиты от барака, UE 1.3.1 и sue2, никто из них не  распаковывет. 

Пытаюсь распаковать Misery+Gunslinger 

Изменено пользователем андрей дронав

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Как вылечить такой вылет в ТЧ?

Expression    : error handler is invoked!
Function      : handler_base
File          : .\xrDebugNew.cpp
Line          : 753
Description   : application is aborting
Уже всю папку meshes вставил из ванили, все равно вылет при спавне нпс на локации, в основном сразу после захода на какую либо локацию.

Изменено пользователем андрей дронав

Поделиться этим сообщением


Ссылка на сообщение
(изменено)
Скрытый текст

--------------Сообщения о смерти сталкеров---------------

-- проверяндус есть ли у нас жертва обстоятельств

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

 

Вообщем попытался взять его, очень он мне по нраву, но чет не берется ...

Скрытый текст

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : .\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ... 1.0 bild 00001\gamedata\scripts\xr_motivator.script:165: attempt to index global 'necrolog_functions' (a nil value)

Отредактировал по шпаргалке , но чего то нехватает

Изменено пользователем андрей дронав

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@Купер Я попытался допилить некролог по твоей шпаргалке, но я прогуливал школу программирования... Что там не так ума не приложу. 

 

@mole venomous Взял отседа

Изменено пользователем андрей дронав

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Все таки починил некролог, в таком виде работает как надо...

Кому надо сами подправите на свой вкус))) 

Есть недочёт, группировки отображаются техническими названиями: Stalker, dolg, soldier и тд. Не знаю как исправить 

Скрытый текст

-- проверяндус есть ли у нас жертва обстоятельств

    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 task_texture, task_rect = get_texture_info("ui_iconsTotal_weapons")
             local shans = math.random(1,100)
        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 = 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
    end

 

Изменено пользователем андрей дронав
  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение

@Sikorskyi     -- это если имя убийцы неизвестно или мутантик какой неизвестен
                killer_name = "%c[default]  - - цвет текста

Неизвестна"    - - вместо [Data deleted] 

  • Спасибо 1
  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение
(изменено)
Скрытый текст

---------------Сообщения о смерти сталкеров---------------

    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]         = "Пси собака",
            [clsid.fracture_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[default] Неизвестна"
            end
            local m_text_kill_string="Погиб: "..victim_name.."\\nГруппировка: "..victim_comm.."\\nМесто гибели: "..game.translate_string(m_s_level).."\\nПричина смерти: "..killer_name --\\nГруппировка: "..victim_comm.."--
            local news_text = "%c[default]"..m_text_kill_string
            local news_caption = game.translate_string("DeadMans")
        local task_texture, task_rect = get_texture_info("ui_iconsTotal_obituary")
             local shans = math.random(1,100)
        db.actor:give_game_news(news_text, task_texture, task_rect, 5*1000, 5*1000)
        if shans > 90 then
                local task_texture, task_rect = get_texture_info("ui_iconsTotal_shared_channel")
                 local dead_news = 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
    end

Скрытый текст

local community = {
            ["stalker"] = "Одиночка",
            ["military"] = "Военные",
            ["bandit"] = "Бандит",
            ["killer"] = "Наемник",
            ["ecolog"] = "Эколог",
            ["dolg"] = "Долг",
            ["stranger"] = "Неизвестные",
            ["freedom"] = "Свобода",
            ["arena_enemy"] = "Участник арены",
            ["trader"] = "Торговец"}
        }

Скрытый текст

  if victim and IsStalker(victim) and victim:character_community()~="monolith" and victim:character_community()~="zombied" and victim:character_community()~="military" and victim:character_community()~="killer" then
 

 

Подскажите, как к некрологу прикрутить выше упомянутый код(ы)?

Изменено пользователем андрей дронав

Поделиться этим сообщением


Ссылка на сообщение

@HindПогиб: Жора Лягушкин

               Группировка: Soldier -- Здесь должно быть: Военные

Все группировки отображаются техническими названиями, а нужно чтоб по русски.

  if victim and IsStalker(victim) -- это запрет на показ текста указанной групировки

@Hind 

10 минут назад, Hind сказал:

Ну, локальную комьюнити хоть куда пихай (по крайней мере я так делаю и робит) )

Пихаю, и получаю такое: gamedata\scripts\bind_stalker.script:2: attempt to index global 'xr_motivator' (a nil value)

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@ted.80 В таком виде сообщения не отображаются

Скрытый текст
-------------------------------------<<Сообшения о смерти НПС>>------------------------------------- 
function kill_npc(victim, who)
monstr_class = {
	[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]		= "Тушкан",
	[clsid.burer_s]			= "Бюрер",
	[clsid.cat_s]			= "Дикая кошка",
	[clsid.chimera_s]		= "Химера",
	[clsid.fracture_s]		= "Излом" 
}
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Суицид~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	if victim and IsStalker(victim) and IsStalker(who) and (victim:id() == who:id()) then
		killer_name = "Суицид"
	elseif victim and IsStalker(victim) and IsStalker(who) and (victim:id() ~= who:id()) then
		killer_name = who:character_name().." \""..game.translate_string(who:character_community())
	elseif victim and IsStalker(victim) and IsMonster(who) then
		local m_clsid = get_clsid(who)
		killer_name = monstr_class[m_clsid]
	elseif victim and (IsStalker(victim) and (who == nil or (not IsStalker(who) and not IsMonster(who)))) then
		local killer = who:section()
		if system_ini():line_exist(killer, "inv_name") then
			killer_name = game.translate_string(system_ini():r_string(who:section(), "inv_name"))
		elseif string.find(killer,"buzz")     then killer_name = "аномалия Холодец"
		elseif string.find(killer,"zharka")   then killer_name = "аномалия Жарка"
		elseif string.find(killer,"mosquito") then killer_name = "аномалия Воронка"
		elseif string.find(killer,"mincer")   then killer_name = "аномалия Мясорубка"
		elseif string.find(killer,"gravi")    then killer_name = "аномалия Грави"
		elseif string.find(killer,"witches")  then killer_name = "аномалия Электра"
		elseif string.find(killer,"hair")     then killer_name = "аномалия Жгучий пух"
		else
			killer_name = "DATA ERROR: "..game.translate_string(who:section()).." - "..get_clsid(who)
		end 
	end
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	local qas = math.random(2,5)
	local dead_news = "Погиб сталкер !!! \\n%c[255,255,160,160]Имя: %c[default]"..victim:character_name().." \""..game.translate_string(victim:character_community()).."\"\\n%c[255,160,160,160]Локация: %c[default]"..game.translate_string(level.name()).."\\n%c[255,225,100,100]Причина смерти: %c[default]\""..killer_name.."\""  
		db.actor:give_game_news(dead_news, "ui\\ui_iconsTotal", Frect():set(498,188,83,47), qas*1000, 13000)
		this.news_sound(qas)
end

function news_sound(qas)
	snd_obj_sos = xr_sound.get_safe_sound_object([[device\pda\pda_sos]]) 
	snd_obj_sos:play_no_feedback(db.actor, sound_object.s2d, qas, vector(), 0.5)
end

В таком виде такой вылет: scripts\bind_stalker.script:2: attempt to index global 'xr_motivator' (a nil value)

Скрытый текст

function kill_npc(victim, who)
monstr_class = {
    [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]        = "Тушкан",
    [clsid.burer_s]            = "Бюрер",
    [clsid.cat_s]            = "Дикая кошка",
    [clsid.chimera_s]        = "Химера",
    [clsid.fracture_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
     if victim and IsStalker(victim) and IsStalker(who) and (victim:id() == who:id()) then
        killer_name = "Суицид"
     elseif victim and IsStalker(victim) and IsStalker(who) and (victim:id() ~= who:id()) then
        killer_name = who:character_name().." \""..game.translate_string(who:character_community())
     elseif victim and IsStalker(victim) and IsMonster(who) then
        local m_clsid = get_clsid(who)
        killer_name = monstr_class[m_clsid]
     elseif victim and (IsStalker(victim) and (who == nil or (not IsStalker(who) and not IsMonster(who)))) then
        local killer = who:section()
        if system_ini():line_exist(killer, "inv_name") then
        killer_name = game.translate_string(system_ini():r_string(who:section(), "inv_name"))
        elseif string.find(killer,"buzz")     then killer_name = "аномалия Холодец"
        elseif string.find(killer,"zharka")   then killer_name = "аномалия Жарка"
        elseif string.find(killer,"mosquito") then killer_name = "аномалия Воронка"
        elseif string.find(killer,"mincer")   then killer_name = "аномалия Мясорубка"
        elseif string.find(killer,"gravi")    then killer_name = "аномалия Грави"
        elseif string.find(killer,"witches")  then killer_name = "аномалия Электра"
        elseif string.find(killer,"hair")     then killer_name = "аномалия Жгучий пух"
        else
            killer_name = "DATA ERROR: "..game.translate_string(who:section()).." - "..get_clsid(who)
        end 
    end 
    local qas = math.random(2,5)
    local dead_news = "Погиб сталкер !!! \\n%c[255,255,160,160]Имя: %c[default]"..victim:character_name().." \""..game.translate_string(victim:character_community()).."\"\\n%c[255,160,160,160]Локация: %c[default]"..game.translate_string(level.name()).."\\n%c[255,225,100,100]Причина смерти: %c[default]\""..killer_name.."\""  
        db.actor:give_game_news(dead_news, "ui\\ui_iconsTotal", Frect():set(498,188,83,47), qas*1000, 13000)
        this.news_sound(qas)
end
             local shans = math.random(1,100)
        db.actor:give_game_news(news_text, task_texture, task_rect, 5*1000, 5*1000)
        if shans > 90 then
                local task_texture, task_rect = get_texture_info("ui_iconsTotal_shared_channel")
                 local dead_news = 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
    end

 

Изменено пользователем андрей дронав

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@Norman Eisenherz Похоже второй вариант рассчитан на старшие платформы. 

Должно быть что то типо:


...
        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

В остальном я понял о чем ты, но не знаю как исправить код, я правда никогда углублённо не изучал язык программирования.

Попробую проанализировать на ошибки. 

 

Изменено пользователем андрей дронав

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...