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

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


Svoboда

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

(изменено)

Доброго времени суток, господа.

 

Благодарю за внимание, и попрошу сильно не пинать, (Заранее извиняюсь за возможный оффтоп, если уже было(а я не знал))

Как сделать такую картину: ГГ открывает инвентарь, и убирает все оружие (по открытию инвентаря, все оружие в активных слотах, убирается),

Потому как, у меня пока получились только:

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

Тени Чернобыля, Версия игры 1.0004 

 

Сделал так: 

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

 Создал отдельный файл и вписал ф-ию: 

 

 function inv()
 if active_slot~=inventory_slots.NO_ACT_SLOT then
local gg = db.actor
local item = gg:item_in_slot(1),(2),(3),(4),(5) then
      if item and item:section() == "item" then
     db.actor:hide_weapon()
      end
end

 

И две другие ниже (из фикса оп.2.1 "фикс - убирания оружия при открытии инвентаря")

 (убрал комментарии)


    -- Апдейт прятание оружия игрока во время диалога
    if weapon_hide == true or self.object:is_talking() then
        if self.weapon_hide == false then
            self.object:hide_weapon()
            self.weapon_hide = true
        end
    else
        if self.weapon_hide == true then
            self.object:restore_weapon()
            self.weapon_hide = false
        end
    end    


--function start()
hide_and_disable=function()
    local active_slot=db.actor:active_slot()
    keyvals():set("active_weapon_slot",active_slot) --ключ в контейнере по умолчанию
    if active_slot~=inventory_slots.NO_ACT_SLOT then
    db.actor:activate_slot(inventory_slots.NO_ACT_SLOT,true) --спрячем с анимацией активное оружие
    end
    db.actor:hide_weapon() --запретим использование слотов
end
show_and_enable=function()
    db.actor:clear_blocked_slots() --разрешим использование слотов
    local stored_slot=keyvals():get("active_weapon_slot",inventory_slots.NO_ACT_SLOT) --ключ в контейнере по умолчанию
    if stored_slot~=inventory_slots.NO_ACT_SLOT then
    db.actor:activate_slot(stored_slot,true) --активируем с анимацией сохраненный слот
    end
end
    need_update = true
end

 

При запуске любой из них , под любым предлогом и условием, либо вылет, либо не рабочие двери/диалоги (Все что юзается на клавишу)

Подключал к bind_stalker.script к actor:reinit , в начале. 

Поправьте меня пожалуйста, потому что эффект "третьей руки", хочется пофиксить у себя в сборочке.  

 

Поправьте/направьте, подскажите как, где и с чем это едят, желательно ткните носом.

Поиск по форуму, мне мало что дал, может я карлан и мало что знаю (Не там ищу). 

 

Изменено пользователем EGER.OVERKILL WF

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


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

В файле inventory.script:

  Показать

-- Открытие/закрытие инвентаря
function on_inventory_info(info_id)

    if info_id == "ui_inventory" then
        inventory_open = true
        if debug == true then get_console():execute("inventory_open") end
        bind_stalker.hide_weapon()   -- убираем ствол
    elseif info_id == "ui_inventory_hide" then
        inventory_open = false
        need_update = true
        if debug == true then get_console():execute("inventory_close") end
        bind_stalker.restore_weapon()
    end
end

 

Спасибо, а подскажи пожалуйста, где его искать, потому что я по путям config/scripts , и scripts не нашел ничего похожего.

 

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


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

Если там нет, распакуй последние архивы gamedata.db... или обратись сюда.  

Распаковал, к сожалению, такого файла у меня нет. 

Спасибо, надеюсь найду то что ищу.

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


Ссылка на сообщение
50 минут назад, ted.80 сказал:

а по точнее можно про этот файл?

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

Но тем не менее, тогда наклевывается следующий: к чему подключать это в bind_stalker.script (если это вообще, к нему отношение имеет). 

3 минуты назад, mole venomous сказал:

Расширение .script

Я же указал.

 

А это точно тч? Может версия другая, ну потому как я на голой игре, и в распакованных .db архивах , его не вижу

(Аналогично по пути gamedata/config/scripts) , а по запросу в гугле, выдает вообще картинки, с инвентарем ЗП

11 минут назад, mole venomous сказал:

Значит, его нет в оригинале.

Тогда, у меня предсказуемо, выходит еще один вопрос:

 А где мне его тогда взять, и к чему подключать?

 

Какой-то  непонятный совет получился.

 Скажи хоть откуда ты его взял-то. 

  • Согласен 1

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


Ссылка на сообщение
8 минут назад, mole venomous сказал:

поправь его под себя, если надо inventory

Признателен, за файл и за пояснения.

 

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

@mole venomous

Не-а, Не фурычит. 

И с поршнями инвентаря игрался , взятые с gameplay/info_portions 

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

    <info_portion id="ui_trade">
        <disable>ui_trade_hide</disable>
    </info_portion>
    <info_portion id="ui_trade_hide">
        <disable>ui_trade</disable>
    </info_portion>

И к коллбекам подключил , без вылетов, но ничего не происходит.

Как ни прыгал, ни тужился, ничего , абсолютно. 

1 час назад, EGER.OVERKILL WF сказал:

Как ни прыгал, ни тужился, ничего , абсолютно. 

Исключая возможность своей болезни "кривых рук", 

Проверял только что на своем квесте, при/после взятия квеста пушку достать нельзя.

При/после сдачи, пушку снова можно доставать. 

 

Что-то либо с кодом ф-ции, либо в подключении.

  • Жуть! 1

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


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

Добрый вечер, Вопрос такой

 

В большой сборке маленьких модификаций, присутствует "Встречают по одежке", лично мне это мешает и я ищу способ ее отключить. 

Прошу помощи, подскажите. Если оффтоп , направьте.

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


Ссылка на сообщение
17.02.2022 в 02:33, EGER.OVERKILL WF сказал:

Добрый вечер, Вопрос такой

 

В большой сборке маленьких модификаций, присутствует "Встречают по одежке", лично мне это мешает и я ищу способ ее отключить. 

Прошу помощи, подскажите. Если оффтоп , направьте.

И еще вопрос как ограничить инветарь? Подскажите, мне например 6х6 хватит вполне, мысль такая:

Что сделать чтоб не появлялся скрол-бар (прокрутка вниз/вверх) ? 

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


Ссылка на сообщение
(изменено)
3 часа назад, Norman Eisenherz сказал:

с вылетом

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

Сегодня уже испытал функцию unlimited=0/1. 

Просто допустим инвентарь миниатюрный, а гг захочет набрать "ништяков", допустим 3 костюма, и в 35 клеток это вряд ли вместится корректно.

 

Так-то мои карланские навыки мне подсказали что ковырять, но вот как "довести до ума", я пока не знаю.

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

 

upd: Суть, в том, которую я хочу донести , это что можно и 6х6 и 3х3 сделать инвентарь, просто если гг наберет "сверх" нормы, то он просто расширяется.

Хотелось бы сделать его (Инвентарь/рюкзак) фиксированным, а не "резиновым". Разумеется если это возможно, может это вообще ограничивается движком. 

Изменено пользователем EGER.OVERKILL WF
  • Жуть! 1

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


Ссылка на сообщение
6 часов назад, ted.80 сказал:

напречь ганглии

Спасибо, с этим модом знаком, просто думал есть, может еще что-то.

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


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

Здравствуйте, появился вопрос.

 

Допустим, я играю в модификацию, в которой присутствует правка "по одежке встречают", и она мне только мешает.

Вопрос в состоит в том, как бы ее отключить.  

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


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

Господа, вопрос такой:

 

Хочу сделать рестриктор, что бы выдался квест при заходе в него.

(Можно инфопоршень, неважно).

 

А то по трем гайдам, у меня проблемы, везде вылеты с логом по "g_.script'у" с ошибкой "#2". 

Направьте пожалуйста, и прошу прощения если оффтоп. 

ТЧ. 1.0004

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


Ссылка на сообщение
(изменено)
23 минуты назад, mole venomous сказал:

выдать инфо, который запустит квест.

Это понял, делаю по урокам разным, но результат один, при НИ вылет.

 

Как правильнее сделать выдачу поршня в логике?

Я делаю так: 

 

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

custom_data = <<END

[logic]
active = sr_idle

[sr_idle]
on_inside = %+kura%
END 

 

Изменено пользователем EGER.OVERKILL WF

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


Ссылка на сообщение
(изменено)
9 минут назад, HellRatz сказал:

nil (on_actor_inside = nil %+kura%)

Cпасибо за ценные инструкции, я по этому сюда и написал, тут люди грамотные собрались.

Сейчас попробую. 

 

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[871]

; cse_abstract properties
section_name = space_restrictor
name = wy
position =  -40.14, -15.15, -159.5; 13.43, 4. 51, 91.69
direction = 0.0, 0.0, 0.0
id = 65535
version = 118
script_version = 6
spawn_id = 871

; cse_alife_object properties
game_vertex_id = 108
level_vertex_id = 238464
object_flags = 0xffffff3e
custom_data = <<END

[logic]
active = sr_idle

[sr_idle]
on_actor_inside = nil %+kura%
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 5

; cse_alife_space_restrictor properties
restrictor_type = 0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

 

Бегаю по этому месту (координатам которые указывал), по прежнему, никакой реакции.

Изменено пользователем EGER.OVERKILL WF

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


Ссылка на сообщение
1 минуту назад, mole venomous сказал:

поршень другим способом

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

 

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

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

На счет правильности, не уверен.

Сейчас попробую, подскажете как реализовать, или тоже через поршни следует делать? (сообщение)

23 минуты назад, HellRatz сказал:

Имею ввиду его шейп

Сообщение нет. Вы правы, ничего не происходит.

Скрипт сообщения заведомо рабочий, так что в нём ошибки быть не может.

 

Как правильно установить шейп?

Делаю по координатам, там где спавниться один из моих НПС.

Нпс есть, рестриктора нет (исходя из данных выше.)

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

а рестриктор правильно установлен? Имею ввиду его шейп

В этом я новичок, и по сему, что именно "на поверхности", и как поправить шейп, я не понимаю.

Подскажите пожалуйста. 

 

Насколько я догадываюсь, редактировать нужно то, что под "cse_shape properties". 

У меня там следующая билеберда: (брал из этого же файла, с другого рестриктора) 

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

; cse_shape properties
shapes = 1
shape_0:type = sphere
shape_0:offset = 0,0,0
shape_0:radius = 4.5480751991272

 

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


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

через копи-паст в all.spawn не самый грамотный подход.

Знаю, но я только учусь. Думая, что если взять что-то за основу исходно рабочее (оригинальное), ну такой уж я выбор сделал, в данном случае. Про СДК знаю, но слишком уж много заморочек получается для всего этого, три редактора на один рестриктор и это в лучшем случае. Основная мысль - сделать максимально просто и красиво, но видимо без стороннего софта и знающих людей, одному реализовать слишком уж проблемно. 

 

Новые рекомендации по Шейпу не сработали, к сожалению, прилагаю весь рестриктор, спойлером ниже.

P.S Локация кордон, все Х,Y,Z взяты из Позишн Информера. 

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[871]

; cse_abstract properties
section_name = space_restrictor
name = wy
position =  6.638, 2.548, 72.340
direction = -0.79547029733658, 0.0, 0.60599255561829
id = 65535
version = 118
script_version = 6
spawn_id = 871

; cse_alife_object properties
game_vertex_id = 89
distance = 9.8000002
level_vertex_id = 283095
object_flags = 0xffffff3e
custom_data = <<END
[logic]
active = sr_idle

[sr_idle]
nil (on_actor_inside = nil %+kura%)
END

; cse_shape properties
shapes = shape0
shape0:type = box
shape0:axis_x = 2.64159965515137,0,0 --ширина зоны по X
shape0:axis_y = 0,2.22759985923767,0 --ширина зоны по Y
shape0:axis_z = 0,0,2.64159965515137 --ширина зоны по Z
shape0:offset = 0,0,0 --поворот по осям (x,y,z)

; cse_alife_space_restrictor properties
restrictor_type = 0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

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


Ссылка на сообщение
6 минут назад, Купер сказал:

shapes = 1
shape0:type = box

В данный момент меня поправили, уже так 

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

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0, 0, 0
shape0:radius = 5

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

[logic]
active = sr_idle

[sr_idle]
on_actor_inside = {-kura} nil %+kura%

{...} - условия для выполнения

%...% - действия

Должно быть все таки условие? Или нет?

Меня просто интересует, можно ли задать рестриктору логику что при заходе в него, гг получает поршень (и квест соотв.) , или нет? (без условия.)

Если так, то считается ли условием, наличие другого инфопоршня? 

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


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

Немножко ликбеза...

Боже, храни вас господь. Низкий поклон, и уважение.

Именно ваше решение, с ликбезом и комментариями помогло мне! 

 

Выражаю благодарность! Теперь, все работает как часы.

  • Нравится 1

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


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

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

AMK-Team.ru

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