Правила сайта FAQ Мини-чат
Для добавления необходима авторизация!
20.04.2024, Суббота, 04:03


Модератор форума: romale  
Форум » S.T.A.L.K.E.R. - Моддинг » Разбираем S.T.A.L.K.E.R. » Разборочная комната ТЧ (Задаем вопросы по скриптам/конфигам и другим файлам игры)
Разборочная комната ТЧ
Сообщение #1
Вы задаёте интересующий вас вопрос и тот, кто может вам на него ответить, пишет свой ответ. Правила темы:

1. Прежде чем задать вопрос, желательно прочитать все предыдущие страницы темы. Даже если вы не найдете там нужного ответа - я уверен, вы узнаете много нового. Второй вариант - воспользоваться поиском по ключевому слову.

2. Вы можете задавать вопросы, только непосредственно касающиеся создания модификаций и редактирования файлов игры

3. Личные вопросы не допускаются

4. Отвечать на вопросы желательно достаточно развернуто, задевая все аспекты касающиеся конкретного вопроса

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

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

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

Уважение: 133
Награды: 32
Сообщение #321
KADAR, outfit_cond - это состояние костюма, и никак не худ. Худ затронут в amk_mod.скрипт

Сообщение отредактировал alen-fantom - Четверг, 04.04.2013, 18:00


Уважение: 250
Награды: 32
Облучение: 0%
Сообщение #322
KADAR, Посмотрел monnoroch.script
Вполне возможно, что запинается на таймерах. В свое время долго с ними промучался, в конце концов отказался.
Такой код:
Код
if nano_t_heals == nil then
    nano_t_heals = time_global() + 1000
   elseif nano_t_heals < time_global() then
    nano_t_heals = time_global() + 1000
    nano_heals()
   end
   if nano_t_speed == nil then
    nano_t_speed = time_global() + 1000
   elseif nano_t_speed < time_global() then
    nano_t_speed = time_global() + 1000
    nano_speed()
   end
   if nano_t_stren == nil then
    nano_t_stren = time_global() + 1000
   elseif nano_t_stren < time_global() then
    nano_t_stren = time_global() + 1000
    nano_stren()
   end
   if nano_t_inviz == nil then
    nano_t_inviz = time_global() + 1000
   elseif nano_t_inviz < time_global() then
    nano_t_inviz = time_global() + 1000
    nano_inviz()
   end
   if nano_t_armor == nil then
    nano_t_armor = time_global() + 1000
   elseif nano_t_armor < time_global() then
    nano_t_armor = time_global() + 1000
    nano_armor()
   end


Превратите в такой:
Код
nano_stren()
nano_speed()
nano_heals()
nano_inviz()
nano_armor()

Это как раз те ф-ии, которые при опред. условиях выполняют лечение/восстановление сил и т.д

Уважение: 650
Награды: 97
Облучение: 0%
Сообщение #323
Подскажите пожалуйста, что и где прописать, чтоб в масхалате пострелять в ОП. В DMX мне эта функция понравилась!



Пробуйте так:
Идете по пути \gamedata\scripts\meceniy_work.script в функции set_invisible() находите строчки (их будет всего 4 штуки):
bind_stalker.restore_weapon()
bind_stalker.hide_weapon()


И ставите перед ними два дефиса. Сохраняете файл.
ЗЫ: Напоминаю, что надо поставить дефисы перед 4-мя строками. 3 из них будут с ф-ей bind_stalker.restore_weapon() и 1 строка будет с bind_stalker.hide_weapon()
vl

Уважение: 0
Награды: 0
Облучение: 0%
Сообщение #324
volazar, не совсем понял как это превращать надо. :( можете пислать готовый файл? Буду признателен.
Сообщение отредактировал KADAR - Четверг, 04.04.2013, 19:17


Уважение: 15
Награды: 1
Облучение: 0%
Сообщение #325
KADAR, Держи http://rghost.ru/45041984
ЗЫ: Все можно было сделать намного проще и кода было бы меньше раза в два.
Для одного мода есть готовое решение, если надо - могу поделиться.
Есть костюм и есть модули для него. Модули вставляются в пистолетный слот, имеют худ рук. При определенном условии и при наличии у ГГ спец. капсул - идет повышение здоровья/сил/пси-здоровья/понижение радиации.

Уважение: 650
Награды: 97
Облучение: 0%
Сообщение #326
volazar, Спасибо вам! Я потом посмотрю ваш костюм, но сами подумайте, если мне этот так тяжело дался то...

Ну так никогда не поздно научится :)
Практика, практика, практика и будут результаты.
vl

Уважение: 15
Награды: 1
Облучение: 0%
Сообщение #327
volazar, тут такое дело... в общем с этим файлом хуже стало, состояние костюма мгновенно тратится, но в режиме брони не восстанавливается

Уважение: 15
Награды: 1
Облучение: 0%
Сообщение #328
KADAR, Ф-ия брони:
Код
function nano_armor()
if db.actor:item_in_slot(6) and db.actor:item_in_slot(6):section() == "mon_nano_armor" then
  if db.actor:item_in_slot(6):condition() < 1 then
   local cond = db.actor:item_in_slot(6):condition() + 0.01
   if cond > 1 then cond = 1 end
   db.actor:item_in_slot(6):set_condition(cond)
  end
end
end

Можно расшифровать так:

Код
Если предмет в 6 слоте и в этом самом слоте находится предмет "mon_nano_armor" то
        Если состояние предмета в слоте меньше 1 то
           Переменная = состояние предмета + 0,01
              Если переменная больше 1 то
                Переменная =1
              Конец
           Запись состояния предмета
       Конец
Конец


Не работает только броня?
Лечение например работает?
При юзании модулей, кроме брони, предмет должен портится (db.actor:item_in_slot(6):condition() - 0.01)
Также, в таких условиях как например db.actor.health < 1 я бы уменьшил границу лечения. Не 1, а например 0,5 поставил.

Уважение: 650
Награды: 97
Облучение: 0%
Сообщение #329
volazar, работают все функции, кроме брони. Броня включается но не выполняет свои обязанности..) Лечение, сила, маскировка и скорость вроде в норме.

Уважение: 15
Награды: 1
Облучение: 0%
Сообщение #330
Попробуйте заменить функцию брони nano_armor() на такую:
Код
function nano_armor()
local item = db.actor:item_in_slot(6)
-- проверяем что нужный нам предмет в слоте, иначе будет чинится любая одетая броня
      if item and item:section() == "mon_nano_armor" then   
        local cond = item:condition()
          if cond < 0.5 then -- если состояние костюма меньше 0.5
            item:set_condition(1) -- чиним
          end
      end
end

Уважение: 650
Награды: 97
Облучение: 0%
Сообщение #331
Цитата (volazar)
if cond < 0.5 then -- если состояние костюма меньше 0.5

Как я понял это 50% состояния?

Да.
vl

Уважение: 15
Награды: 1
Облучение: 0%
Сообщение #332
Все так же, (таймеры восстановил)... Броня не работает. Вот, не ясно почему все-таки без изменения скриптов, но с bindstalker из вырезанного варианта для ТЧ..

Должно работать. Щас в игре проверю.
vl



Проверил в игре, все прекрасно работает. Единственная поправка - if cond < 0.5 then - влияет также на то, до какого состояния будет восстановлен костюм. Т.е если проверяем 0,5, то и восстановится не выше этого уровня. Для полного восстановления, ставим единицу.
Попробуйте без таймеров. Или вынесите вообще на отдельный апдейт. В bind_stalker.script в функции update(delta) поставьте вызов: monnoroch.nano_armor()
vl

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

Сообщение отредактировал KADAR - Пятница, 05.04.2013, 15:32


Уважение: 15
Награды: 1
Облучение: 0%
Сообщение #333
По коду тратится 1/100 часть от всего "здоровья" костюма. Т.е любые 100 использований модулей - и костюм в хлам. На практике, стоя в аномалии, эти 100 использований можно заработать ОЧЕНЬ быстро. Апдейт в игре идет 1 раз в 0,25 сек. Можно попробовать поколдовать с убыванием "здоровья" костюма. Например в функции nano_heals() строка:
Код
db.actor:item_in_slot(6):set_condition(db.actor:item_in_slot(6):condition() - 0.01)

Значение 0.01 изменить в меньшую сторону.
Ну или вообще отказаться от порчи костюма при применении модулей.

Уважение: 650
Награды: 97
Облучение: 0%
Сообщение #334
volazar, сделать только в секции здоровья? Или в других тоже?
Да и вообще как броня от этого починится? Я бы не хотел менять св-ва функций

Сообщение отредактировал KADAR - Пятница, 05.04.2013, 15:57


Уважение: 15
Награды: 1
Облучение: 0%
Сообщение #335
KADAR,
Цитата (KADAR)
но слищком быстро тратится состояние костюма

Это и должно решить проблему быстрой порчи костюма.
Править в ф-ях:
nano_heals(), nano_inviz(), nano_speed(), nano_stren()

Уважение: 650
Награды: 97
Облучение: 0%
Сообщение #336
Что вообще означает цифра "1000" в таймерах?

1 секунда игрового времени.
vl

Уважение: 15
Награды: 1
Облучение: 0%
Сообщение #337
Класс! Сработало! Я бы и не подумал так сделать, и как традиция в моих постах... Есть одно "но". Нельзя ли замедлить восстановление костюма?

Попробовал у себя через таймеры - не получилось. Увы.
vl

Уважение: 15
Награды: 1
Облучение: 0%
Сообщение #338
При переходе на Радар или раньше,исчезла свд тигр, подозрение что ее спер Скряга при лечении. Нельзя ли ее как то в рюкзак прописать? Возвращение Шрама + кп 3


ЖИЗНЬ ДАЕТСЯ ЧЕЛОВЕКУ ОДИН РАЗ. И ПРОЖИТЬ ЕЕ НАДО ТАК, ЧТОБЫ ТАМ НАВЕРХУ ОФИГЕЛИ И СКАЗАЛИ: "НУ-КА ПОВТОРИ!"

Сообщение отредактировал Серый_75 - Суббота, 06.04.2013, 06:55


Уважение: 6
Награды: 0
Облучение: 0%
Сообщение #339
Серый_75, в рюкзак не знаю как, а вот в продажу можно точно.
Проверь файлы торгашей (они лежат в именных папках торговцев по пути gamedata\config\misc\...) и открой продажу (если стоит NO TRADE) для ствола wpn_svd_m1 или допропиши его.



Такой как есть
Уважение: 571
Награды: 64
Сообщение #340
volazar, а если написать так:

function nano_armor()
if db.actor:item_in_slot(6) and db.actor:item_in_slot(6):section() == "mon_nano_armor" then
db.actor:item_in_slot(6):set_condition(db.actor:item_in_slot(6):condition() + 0.001)
end
end


может сработать?

Уважение: 15
Награды: 1
Облучение: 0%
Форум » S.T.A.L.K.E.R. - Моддинг » Разбираем S.T.A.L.K.E.R. » Разборочная комната ТЧ (Задаем вопросы по скриптам/конфигам и другим файлам игры)
Поиск: