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

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


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

И все всё поняли. Особенно это: "... будет под персональной логикой или в гулаге? "(c). И вприпрыжку побежали. Шутка!

Ссылка на комментарий

@Купер Снова я с небольшим багом в новостях :

ss-apache-10-12-22-23-08-49-l02-garbage.

Возможно починить? Речь об этих новостях https://www.amk-team.ru/forum/topic/14288-soc-kovyryaemsya-v-faylah/?do=findComment&comment=1439874

Только при пулевом ранении правильно показывает.

Изменено пользователем Sikorskyi

PW7EW.png

Ссылка на комментарий

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

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий

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

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

  • Спасибо 1
  • Согласен 1
Ссылка на комментарий

@Купер @Houdini_one 

Может я сейчас Америку заново открою, но вроде как уже давно известно, что все "чуханы":biggrin: могут иметь только два типа управления: персональная логика, непосредственно прописанная в секции [logic] или логика работ гулага, под которую он может быть принят в этот самый гулаг на подходящую ему работу.

Может я отстал от жизни и уже не в теме - тогда поправьте.

Ссылка на комментарий

@Sikorskyi,

Заглушка, на случай, если не смогли найти инициатора смерти NPC

local killer_name  = who:character_name() --* имя убивца
...
--* не смогли найти кто
if killer_name == nil then
	killer_name = "%c[230,255,0,0][DATA DELETED]" --* текст сообщения
end

%c[230,255,0,0] - цвет сообщения, [DATA DELETED] - текст сообщения.

%c[...] - идентификатор ввода цвета.

Сам цвет задаётся либо в формате A,R,G,B (rgb палитра цветов), либо string - именованные цвета из файла gamedata\config\ui\color_defs.xml (можно при необходимости добавить своё).

 

Т.е.:

killer_name = "%c[230,255,0,0]Причина неизвестна"

либо:

killer_name = "%c[red]" .. game.translate_string("unknown_reason")

Во 2ом случае unknown_reason должен быть добавлен в .xml файлы перевода. По аналогии.

 

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

Кстати, про цвета, вдруг кому время сэкономит:

https://bot4sale.ru/blog-menu/m4/439-lua-colors.html

 

Изменено пользователем Купер
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

В общем, он будет отдельным персонажем, т.е. вне гулага. В определённое время появляется, и после получения инфы убирается.
Интересует непосредственно:
как прописать логику персу?;
и как именно прописать конкретный спавн

Ссылка на комментарий
16 минут назад, Hind сказал:

прописать логику персу?

https://disk.yandex.ru/d/_IchXWINjkZa5g

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

как именно прописать конкретный спавн

Там же, п.3.7. Либо в момент выполнения какой то функции воткнуть спавн нужного НПС. 

Можно вообще средствами АМК-мода записать логику прямо в спавне, но я бы уже не стал так делать.

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

например,

 

    local obj=amk.spawn_item("ros_killer_respawn_1",vector():set(-70.358726501465,-13.440641403198,-160.03511047363),107,201811)
    if IsStalker(obj) then 
        local t=amk.read_stalker_params(obj) 
        t.custom="[logic]\nactive=walker\n[walker]\npath_walk=add_merc_esc_walk\npath_look=add_merc_esc_look"
        amk.write_stalker_params(t,obj)        
    end    

 

Изменено пользователем mole venomous
  • Спасибо 1

Здесь могла быть ваша реклама.

Ссылка на комментарий

А по поводу meet_dialog. Если мне надо, чтобы он был, а потом при получении определенной инфы, этот стартовый диалог переставал быть таким, и у перса появляется все диалоги которые ему прописаны. Как это сделать?

Ссылка на комментарий

Установки в скелете диалога. Ты об этом?

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

PttpcO9U.jpg?download=1&name=%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%2013-10-2022%2019:35:12.jpg

<has_info> - диалог доступен только после инфо

<dont_has_info> - недоступен после инфо

 

Здесь могла быть ваша реклама.

Ссылка на комментарий


Попробуй переводить НПС на следующую активную схему по выдаче инфо, где meet уже нет :unknw:

Изменено пользователем mole venomous

Здесь могла быть ваша реклама.

Ссылка на комментарий
Скрытый текст

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

    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
 

 

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

Изменено пользователем андрей дронав
Ссылка на комментарий

@андрей дронав немного не понял что именно ты хочешь сделать..

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

Набросал следующую схему логики непися:
 

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

 

[smart_terrains]
esc_blokpost = true


[logic]
active = remark@base 
danger = danger_condition 
meet = meet
 
[remark@base]
meet = meet
 
[meet] 
victim = 10|actor
victim_wpn = 10|actor
use = true
use_wpn = true

 


В гулаге убрал мне ненужные работы (патруль и сон). В игре непись стоит дуб дубом. Что делать?

Ссылка на комментарий

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

Ссылка на комментарий

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

Был другой вылет из-за моей криворукости - там ругалось что dmb = nil value (т.е. в моём скрипте какая то лажа). Но утверждать ничё не могу

Надо мне сделать так, чтобы при поулчении инфопоршня, спавнился песель в n-ой зоне, который не реагировал на игрока до того момента как он подойдет в плотную, при этом чтобы после его убийства - засчиталось выполнение цели миссии

Интересует: логика собачки, и как сделать так чтобы после её смерти выполнялась цель мисии (или давался инфопоршн)

Есть мысли, что можно давать инфопоршень когда в рестрикторе нет мутантов, но сам рестриктор очень маленький, и если собака тупо выбежит из него, то как бы задание выполнится

Ссылка на комментарий
25 минут назад, Hind сказал:

логика собачки, и как сделать так чтобы после её смерти выполнялась цель мисии (или давался инфопоршн)

Само собой, нужна отдельная секция пёселя, к которой прикручена кастом-дата, например:

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

[dog_puppy]:dog_weak
custom_data             = scripts\test_dog.ltx

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

[smart_terrains]
none = true

[logic]
active   = mob_home
on_death = death@puppy

[mob_home]
path_home = way_point 
home_min_radius = 10
home_max_radius = 20
aggressive_home
on_signal = sig_attacked | mob_combat

[mob_combat]
on_timer = 30000 | mob_home

[death@puppy]
on_info = %+info%

 

  • Спасибо 1

Здесь могла быть ваша реклама.

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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