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

Внимание. На форуме проводятся технические работы с боковым меню.

_Val_ _Val_

Скриптование


Svoboда

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

17 часов назад, _Sk8_AsTeR_ сказал:

где НПС предлагает рандомный итем из таблицы в скрипте. То есть по факту НПС предмет не имеет.

 

17 часов назад, _Sk8_AsTeR_ сказал:

Будет выполнена проверка инвентаря НПС на наличие аптечки. Если такая есть, то НПС ответит - есть

Чет у меня не сростается - так предмет должен быть у непися али нет ?

 

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


Ссылка на сообщение
1 час назад, Norman Eisenherz сказал:

чтобы это сообщение выводилось только один раз?

Добавить переменную, в которую будем сохранять факт смерти хозяина костюма, и на апдейте обрабатывать её. Типа так:

local is_died = false

function on_actor_update()

…

    local act = db.actor
    if not act:alive() and not 
is_died then
        news_manager.send_tip(act, "%c[skat_name]".."Система жизнеобеспечения:".."\\n".."%c[skat_msg]".."носитель мертв.".."\n", nil, nil, 30000)

       is_died = true

    elseif t_upd<time_global() then

Ну и смотреть уже по факту - где и как(локально или глобально) объявлять эту переменную, и как ее сбрасывать в начальное состояние после загрузки сейва.

 

P.S. Вот только не понятно зачем отслеживать смерть актера(ГГ), ведь игрок и так получит на экран стандартное сообщение о смерти, и обычно после этого сразу загружаются с какого то сейва.

  • Согласен 1

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


Ссылка на сообщение
7 часов назад, Norman Eisenherz сказал:

означает "исполнять скрипт дальше"

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

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


Ссылка на сообщение
5 часов назад, DoberBull сказал:

Желательно без правок внутри движка.

Сомнительно. Все формирование контекстной менюшки происходит в движке.

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


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

Заглядывай по чаще в "Справочник по ф-циям и классам".

actor:transfer_item(transfer_obj, npc)

Как получить объекты актера, НПС и перемещаемого предмета разберешься сам. Или с этим то же проблемы ?

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


Ссылка на сообщение
4 часа назад, Fenrir02 сказал:

Как сохранить состояние этого предмета после загрузки?

А что за предмет у тебя ?

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


Ссылка на сообщение
22 минуты назад, Fenrir02 сказал:

Фонарик

Могу ошибаться, но судя по исходникам, изначально для фонарика не предусмотрено сохранение изменения состояния(condition). Если я не ошибаюсь, то вариантов в общем не много:

- искать уже правленый\самому править движок;

- попробовать вариант одновременной установки состояния клиенту через :set_condition и на серверной части через нет-пакет.

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


Ссылка на сообщение
6 часов назад, Norman Eisenherz сказал:

Что я упускаю?

local slot = db.actor:item_in_slot(6)
local sect = slot:section()

Если броника в слоте нет - в переменной "slot" будет nil. А затем ты пытаешься для nil вызвать :section(). Переделай как то так:

local slot = db.actor:item_in_slot(6)

if slot then

          local sect = slot:section()

          --- тут все, если есть броник

else

         --- тут если броника нет

end

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


Ссылка на сообщение
5 часов назад, Kirgudu сказал:

Через нет-пакет.

Вроде как story_id - свойство объекта "только для чтения". Сомнительно, что получится задать его простой правкой нет-пакета. В поясниловке к модулю Artos'а есть целый раздел об этом...

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


Ссылка на сообщение
15 часов назад, Romann сказал:

Как ещё можно проверить - "жарка ли это"?

Правильно советуют тебе - сделай свой биндер для необходимых аномалий.

  • Согласен 1

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


Ссылка на сообщение
23 часа назад, Norman Eisenherz сказал:

а надо сымитировать включение ПНВ в броне и оставить его до следующего нажатия клавиши "ПНВ вкл./выкл.".

Это явно из разряда "Овчинка выделки не стоит". Можно, конечно, все это скриптами наворотить(причем объем костылей и извращений будет не маленьким), вот только ради чего ?

 

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

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


Ссылка на сообщение
В 17.11.2018 в 07:44, Romann сказал:

а нужно: сняли броню - отправили сообщение, одели броню - не отправляем сообщение, сняли - опять отправили. Кто подскажет, как лучше сделать?

С учетом отсутствия, в оригинале, движковых сообщений(кэллбэков) о манипуляциях с содержимым слотов - видимо как всегда, нагрузить в многострадальный апдейт биндера актера проверку на содержимое слота...

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


Ссылка на сообщение
2 часа назад, DoberBull сказал:

как сделать так, чтобы фонарики НПС не гасли после их смерти, а оставались светить

Смотри в xr_motivator.script ф-цию motivator_binder:death_callback, в ней есть

sr_light.check_light(self.object)
...    
death_manager.drop_manager(self.object):create_release_item()

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

  • Спасибо 1

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


Ссылка на сообщение
21 минуту назад, Fenrir02 сказал:

заставить этот статик мигать

В xml-описании "hud_health_static" добавить соответствующие теги. Подсмотреть в оригинальных статиках как это сделать.

  • Спасибо 1

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


Ссылка на сообщение
1 час назад, dPlayer сказал:

удалить несколько объектов разом.

Собрать нужные значения в таблицу, затем итерацией по таблице получать эти значения и использовать в ф-ции.

Вот только я сомневаюсь, что ф-ция alife():release может принимать аргументом сам объект...

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


Ссылка на сообщение
4 часа назад, WinCap сказал:

функция table.getn устарела

Ну это она для свежих версий Луа устарела, а в оригинальном движке прекрасно работает...

 

@dPlayer

Перебор таблицы у тебя не правильно сделан, см. пост @WinCap

  • Спасибо 1

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


Ссылка на сообщение
В 07.02.2019 в 18:02, F.Constantine сказал:

Куда ее прописать правильно, чтоб она запустилась?

В логику рестриктора, который определяет границу охраняемой территории. По входу в рестриктор ГГ или сталкеров-"одиночек" - вызывать эту ф-цию.

  • Согласен 1

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


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

@F.Constantine

Попробуй сделать по правильному: не трогай отношения вояк ко всему остальному, а просто, для тех гулагов вояк, для которых считаешь нужным, проставь "не агрессивность" к ГГ. Пример - блок-пост под мостом на Кордоне.

Насчет квеста, с изъятием чего-то с блок-поста вояк, лучше подумать. как это привести к здравой человеческой логике...

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

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


Ссылка на сообщение
3 часа назад, F.Constantine сказал:

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

Так у тебя гулаг вояк на блок-посту изначально будет враждебен к ГГ. Какой же тут нейтралитет ?

Еще раз предлагаю: не трогай изначальное отношение вояк к остальным, а изучи возможности combat_ignore + combat_ignore_cond в логике. 

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


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

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