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

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

Здрасьте.

 

Пытаюсь ввести в интерфейс контейнера для артефактов (arc_ui_8container_menu.script) подложку, чтобы счетчик радиации читался на любом фоне.

Пробовал добавлять еще одну ссылку в секцию переменной "b" – читается только вторая текстура, и либо подложки не видно, либо самих артов.

Скопировал секцию из функции "DrawBackground", вставил в функцию "DrawArtButton" с другой ссылкой (переменная "z") – подложка появилась, но только на первом арте, хотя функция "DrawButtons" (которая с циклом  от 1 до максимума артов в коробке) включает функцию "DrawButton" полностью и подложка должна была повториться (наверное).

 

Есть кто-нибудь, кто знаком с особенностями интерфейса контейнера?

 

Измененные файлы для солянки 2010 (подозреваю, что в солянке 2016 контейнер точно такой же):

https://drive.google.com/open?id=1UljHS8Om_va2pqlUykaf_-QFW8RHe9OP

 

З.Ы. Может, я зря задаю вопрос в общую тему, где 50 человек уже обсуждают 40 других вопросов?

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
12 hours ago, naxac said:

Есть контакт. Спасибо.

Как понимать запись "SetWindowName("bck"..s.."_"..button_number)"? Выглядит как соединение нового окна "z" с окном "s" (взять/положить) и количеством кнопок, но как такая форма записи следует из названия команды "присвоить имя окну"?

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@Norman Eisenherz, это просто для того, чтобы имена у окон разные были

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif


Подарки

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

@naxac, если это просто имя, почему подложка не множилась с именем окна "black"? Или дело в начальной секции с условием?

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@naxac, Как работает такое условие? Оно проверяет существование переменной, заданной на строчку выше?

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
В 21.08.2018 в 20:27, dsh сказал:

@Graff46, потому, что alive() у серверных объектов есть только у живых, т.к. сказать:


if obj and ( IsStalker( obj ) or IsMonster( obj ) ) and obj:alive() then

@lordmuzer вон там выше указал, у кого этот метод есть.

Фантомы не живые и не мёртвые.

Ссылка на комментарий
17 часов назад, Graff46 сказал:

фантомы имеют ид?

Все спавн-объекты в игре имеют ID.

Вопрос, видимо, подразумевал StoryID ?

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

Вопрос к смотревшим исходники: а кто пытался разбираться,: как именно работают manager:action( блабла ):add_effect( блабла ) ?

В частности вот это вот true|false и случай, когда add_effect() более одного ?

 

Вопрос второй: что все-таки нужно, чтобы непись начал искать врага движково ? Обязательно иметь его в memory, или без этого тоже умеет ? Если все-таки первое, то правильно ли я понимаю, что впихнуть его насильно туда нельзя ?

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

Так... то-ли лыжи не едут совсем, то-ли мне столько не выпить...

xr_camper.script:

function evaluator_end:evaluate()
    return not xr_logic.is_active(self.object, self.a)
end

 

function evaluator_close_combat:evaluate()
    if not xr_logic.is_active(self.object, self.a) then
        return true
    end

если непись не под схемой, возвращаем true.

 

Если под схемой

        local action = this.action_patrol (object,"action_camper_patrol", storage)

...
        action:add_precondition    (world_property(properties["end"],  false))
        action:add_precondition    (world_property(properties["close_combat"],    false))

начинаем выполнять этот самый патруль, или, если бой, то не начинаем.

        action:add_effect (world_property(properties["end"],                true))
        action:add_effect (world_property(stalker_ids.property_enemy,        false))

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

        local action = this.action_patrol (object,"action_camper_patrol", storage)

...
        action:add_precondition    (world_property(properties["close_combat"],    false))

        action:add_effect (world_property(properties["close_combat",                true))

но не получается: висим.

 

Что я где проглядел ?

Ссылка на комментарий
В 06.09.2018 в 00:12, Dennis_Chikin сказал:

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

add_effect говорит движку немного другое: что, когда сталкер выполнит "action_camper_patrol",  выставятся свойства properties["end"]=true и stalker_ids.property_enemy=false(то есть не будет врагов).

На каждом апдейте движок расчитывает, что нужно предпринять НПЦ, чтобы разгадать загадку зоны. Одно из условий разгадывания загадки - отсутствие врагов. За устранение врагов отвечает action_combat_planner. В xr_camper.script ниже кода, который ты привел, action_combat_planner добавляется условие properties["close_combat"] == true. То есть кемпер-скрипт говорит движку, что устранить врагов на близкой дистанции(properties["close_combat"] == true) можно через action_combat_planner, на дальней через action_camper_patrol.

Когда ты убираешь из эффектов

 action:add_effect (world_property(stalker_ids.property_enemy,        false)) 

, то врагов на дальней дистанции становится нечем устранять и все зависает.

 

И снова :) Отладочная сборка такие моменты подробно расписывает: из-за чего не получается разгадать загадку зону, какие сейчас свойства мира и тому подобное.

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

Подарки

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

    Я вообще-то про action:add_effect (world_property(properties["end"],  true))

    Если мы не под схемой, то precondition   properties["close_combat"] == false не выполняется для

    action_camper_patrol и выполняется properties["close_combat"] == true для action_combat_planner

     

    stalker_ids.property_enemy вообще пока не трогаем.

     

    Впрочем, action_camper_patrol как раз должен не только врагов устранять, но и заставлять непися ходить-смотреть при их отсутствии.

     

    Ссылка на комментарий
    1 час назад, Dennis_Chikin сказал:

    Я вообще-то про action:add_effect (world_property(properties["end"],  true))

    Ты удалил action:add_effect (world_property(properties["end"],  true))?

    Несколькими строками ниже это свойство добавляется в прекондишен к xr_actions_id.alife.

    Так он вообще не сможет ничего вывести - не найдет ни одного action, который properties["end"] в true переведет.

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

    Подарки

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

    Ага - то есть, если есть хоть одно упоминание, будет искать и экшены ?

    и тогда получается, что чего-то в исходном варианте все-таки не хватает, и в какой-то момент непись таки начинает тупить.

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

    Ага - то есть, если есть хоть одно упоминание, будет искать и экшены ?

    Экшены всегда ищутся.

     

    Смотри, алгоритм такой:

     0. Есть граф из состояний мира(набор свойств) и экшенов, которые обещают перевести мир из одного состояния(набор прекондишенов) в другое(набор эффектов).

     1. вычисляются все зарегистрированные свойства мира, для этого вызываются их эвалюаторы

     2. берется финальное состояние мира(свойство мира "загадка решена" = true)

     3. ищется путь в графе от текущего состояния до финального.

     

    Как правило мир в финальное состояние переводит xr_actions_id.alife. С учетом добавленного properties["end"] в прекондишене у xr_actions_id.alife раньше подходил action_camper_patrol(он переводил properties["end"] из false в true). А после удаления из эффектов никакой экшен не подходит. На этом благополучно и зависает.


    Подарки

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

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

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

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

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

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

    Войти

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

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

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

    AMK-Team.ru

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