Случайная подборка модов
Sky anomaly
4.0
Old Good Stalker Mod v2.4 Gold
4.2
Dark Ukraine v 1.0
3.9
Кровавый закат 2
3.2
Lost World Troops of Doom
4.1
Prosectors Project
4.0
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
Модострой:Вопросница
Российская Федерация  Аdmin
Воскресенье, 03.11.2013, 19:36 | Сообщение # 1
Статус:
Опытный:
Сообщений: 1538
Награды: 11
Регистрация: 28.03.2011

В данной теме вы можете задавать любые вопросы касательно S.T.A.L.K.E.R. моддинга.

  • Не флудить
  • Предварительно просматривайте раздел. Ответ на ваш вопрос может быть там.
  • В своем вопросе указывайте платформу моддинга - Тень Чернобыля, Чистое небо или Зов Припяти.





    У кого есть желание, создать FAQ по основным вопросам моддинга - обращаемся в ЛС.


    Архив

    Архив#2
  •   Злобная реклама
    Воскресенье, 03.11.2013, 19:36
    Статус:
    Сообщений: 666
    Регистрация: 28.03.2011
    Российская Федерация  Arist
    Среда, 16.04.2014, 21:22 | Сообщение # 2626
    Статус:
    Неопытный:
    Сообщений: 481
    Награды: 1
    Регистрация: 08.07.2012

    Есть старый, добрый таймер,вызывается просто из диалога:
    Sanjaaa, поэксперентируй,может подойдёт.
      Злобная реклама
    Среда, 16.04.2014, 21:22
    Статус:
    Сообщений: 666
    Регистрация: 08.07.2012
    Российская Федерация  ins33
    Среда, 16.04.2014, 21:25 | Сообщение # 2627
    Dream Reader Mod
    Статус:
    Опытный:
    Сообщений: 2269
    Награды: 1
    Регистрация: 17.01.2012

    Sanjaaa, Конечно!!! function timer_start_bar() -- на update(delta)

    Вот скрипт, пропиши поршни, и переименуй name_function() под свой вызов из диалога.
    Затем в секции фонаря добавь script_binding =name_script.init
    В bind_stalker.script в update(delta) добавь name_script.update()
    Если не нужен таймер на худе, закомментируй this.hud_timer()
    Сообщение отредактировал ins33 - Четверг, 17.04.2014, 01:24
      Злобная реклама
    Среда, 16.04.2014, 21:25
    Статус:
    Сообщений: 666
    Регистрация: 17.01.2012
    Российская Федерация  Mr_Friendly
    Среда, 16.04.2014, 21:29 | Сообщение # 2628
    Статус:
    Неопытный:
    Сообщений: 401
    Награды: 1
    Регистрация: 12.08.2012

    Подскажите, в каком файле и где поправить что бы ГГ приседал намного ниже?
      Злобная реклама
    Среда, 16.04.2014, 21:29
    Статус:
    Сообщений: 666
    Регистрация: 12.08.2012
    Российская Федерация  ins33
    Среда, 16.04.2014, 22:10 | Сообщение # 2629
    Dream Reader Mod
    Статус:
    Опытный:
    Сообщений: 2269
    Награды: 1
    Регистрация: 17.01.2012

    Arist,Если правильно понял, то level.add_call(on, off) -- при возврате on = true переключает ф-ию на off?
    Но всё равно не понятно, как работает level.add_call(), тут вроде нужен update? Тогда по какому, принципу он происходит... Если не сложно, опиши подробней, что за зверь такой level.add_call(on, off) , и с чем его едят?
    Сообщение отредактировал ins33 - Среда, 16.04.2014, 22:14
      Злобная реклама
    Среда, 16.04.2014, 22:10
    Статус:
    Сообщений: 666
    Регистрация: 17.01.2012
    Российская Федерация  Sanjaaa
    Среда, 16.04.2014, 22:21 | Сообщение # 2630
    Dark Reaper Souls
    Статус:
    Бывалый:
    Сообщений: 926
    Награды: 6
    Регистрация: 22.08.2012

    ins33, вылет на _g.script. сделал как ты говорил, скрипт новый туда поршни и в бинд прописать. вот че в бинде
    Код
    function actor_binder:update(delta)
      object_binder.update(self, delta)
             yeah.get_bleeding12()
             xr_s.on_actor_update(delta)
      -- DEBUG slowdown
    --    slowdown.update()
             function timer_start_bar()     --вот
      local time = time_global()
      name_script.update()      --вот
      Злобная реклама
    Среда, 16.04.2014, 22:21
    Статус:
    Сообщений: 666
    Регистрация: 22.08.2012
    Российская Федерация  ins33
    Среда, 16.04.2014, 22:47 | Сообщение # 2631
    Dream Reader Mod
    Статус:
    Опытный:
    Сообщений: 2269
    Награды: 1
    Регистрация: 17.01.2012

    Sanjaaa, function timer_start_bar() --вот
    Имя _скрипта.имя_функции()!!!
    Цитата ins33 ()
    В bind_stalker.script в update(delta) добавь name_script.update()

    Возьми скрипт из поста выше, назови его к примеру my_timer, пропиши все поршни, как ты писал в своей ф-ии.
    Потом в bind_stalker добавь my_timer.update()
    Не забудь прописать в секции фонаря script_binding =name_script.init
    И обрати внимание на это: function name_function() -- в диалог добавляем <action>my_timer.name_function</action>
      Злобная реклама
    Среда, 16.04.2014, 22:47
    Статус:
    Сообщений: 666
    Регистрация: 17.01.2012
    Российская Федерация  Arist
    Среда, 16.04.2014, 22:48 | Сообщение # 2632
    Статус:
    Неопытный:
    Сообщений: 481
    Награды: 1
    Регистрация: 08.07.2012

    ins33, нарвался на этот скрипт ни инсайде "Выброс на Янтаре". Никакой update не нужен.
    level.add_call(on, off) -- add_call -- по русски похоже - создать колбек.
    Цитата
    при возврате on = true переключает ф-ию на off?

    Всё верно.Можно вызывать до бесконечности.Тот же самый "ВЫброс на Янтаре" с продолжением:

    Выброс
      Злобная реклама
    Среда, 16.04.2014, 22:48
    Статус:
    Сообщений: 666
    Регистрация: 08.07.2012
    Российская Федерация  ins33
    Среда, 16.04.2014, 22:57 | Сообщение # 2633
    Dream Reader Mod
    Статус:
    Опытный:
    Сообщений: 2269
    Награды: 1
    Регистрация: 17.01.2012

    function timer_start_bar() --вот -- УБЕРИ!!!
    local time = time_global() -- если было, оставь, если сам добавил удаляй.
    name_script.update() --вот
    Цитата ins33 ()
    Потом в bind_stalker добавь my_timer.update()

    Добавлено (16.04.2014, 22:57)
    ---------------------------------------------
    Arist, Открыл lua_help и стало понятней:

    Код
    function add_call(const function<boolean>&, const function<void>&);

    Интересный метод, надо потестить.
      Злобная реклама
    Среда, 16.04.2014, 22:57
    Статус:
    Сообщений: 666
    Регистрация: 17.01.2012
    Российская Федерация  Arist
    Среда, 16.04.2014, 23:05 | Сообщение # 2634
    Статус:
    Неопытный:
    Сообщений: 481
    Награды: 1
    Регистрация: 08.07.2012

    ins33, потести.Я тут на днях потестил из ЧН в Тени в xr_effects.script

    Теперь из логики рестриктора в Тенях можно:

    Может пригодится.
      Злобная реклама
    Среда, 16.04.2014, 23:05
    Статус:
    Сообщений: 666
    Регистрация: 08.07.2012
    Российская Федерация  Sanjaaa
    Среда, 16.04.2014, 23:12 | Сообщение # 2635
    Dark Reaper Souls
    Статус:
    Бывалый:
    Сообщений: 926
    Награды: 6
    Регистрация: 22.08.2012

    ins33, седня не мой день sad
    Expression : fatal error
    Function : CScriptEngine::lua_error
    File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
    Line : 73
    Description : <no expression>
    Arguments : LUA error: ...:\s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:245: attempt to index global 'order' (a nil value)

    в бинде прописал
    order.update()
      Злобная реклама
    Среда, 16.04.2014, 23:12
    Статус:
    Сообщений: 666
    Регистрация: 22.08.2012
    Российская Федерация  ins33
    Среда, 16.04.2014, 23:30 | Сообщение # 2636
    Dream Reader Mod
    Статус:
    Опытный:
    Сообщений: 2269
    Награды: 1
    Регистрация: 17.01.2012

    Arist, Прикольно, и информативно. Хотя по идеи можно упростить до:
    Код
    function spawn_object_in(actor, obj, p)
        local spawn_sect = p[1]
        local target_name = p[2]
        local box = alife():object(target_name)
        if spawn_sect ~= nil then
        if target_name ~= nil then
        if box ~=nil then
        local obj = alife():create(spawn_sect,vector(),0,0,box.id)
    end  
    end  
    end  
    end
    Хотя не понятно, если будет вылет, что лог покажет.

    Sanjaaa, Покажи скрипт order.
      Злобная реклама
    Среда, 16.04.2014, 23:30
    Статус:
    Сообщений: 666
    Регистрация: 17.01.2012
    Украина  BozKurt
    Среда, 16.04.2014, 23:33 | Сообщение # 2637
    Статус:
    Опытный:
    Сообщений: 1753
    Награды: 3
    Регистрация: 25.05.2012

    Метод add_call создаёт два коллбека, функции для которых являются параметрами самого метода:
    Код
    level.add_call (condition, action)

    Функция condition будет вызываться до тех пор пока будет возвращать false/nil. Как только вернёт true - будет вызвана функция action.
    Самый тривиальный пример использования - таймер по истечению которого выполняется какое-либо действие:
    Код
    --# Взводим таймер на тридцать секунд.
    local timer = 30000
    local timeNow = time_global() + timer
    --# Проверяем время.
    local function ConditionCall ()
      if timeNow > time_global() then
       return true
      end
      return false
    end
    --# Действие по окончании таймера.
    local function ActionCall ()
      news_manager.send_tip(db.actor, "Time is out!")
    end
    --# Ставим коллбек.
    level.add_call(ConditionCall, ActionCall)

    Ничего естественно само не сохраняется, поэтому об этом нужно заботится самому.
      Злобная реклама
    Среда, 16.04.2014, 23:33
    Статус:
    Сообщений: 666
    Регистрация: 25.05.2012
    Российская Федерация  Sanjaaa
    Среда, 16.04.2014, 23:34 | Сообщение # 2638
    Dark Reaper Souls
    Статус:
    Бывалый:
    Сообщений: 926
    Награды: 6
    Регистрация: 22.08.2012

      Злобная реклама
    Среда, 16.04.2014, 23:34
    Статус:
    Сообщений: 666
    Регистрация: 22.08.2012
    Российская Федерация  ins33
    Четверг, 17.04.2014, 00:01 | Сообщение # 2639
    Dream Reader Mod
    Статус:
    Опытный:
    Сообщений: 2269
    Награды: 1
    Регистрация: 17.01.2012

    Sanjaaa, Точно, криво копирнул! Перед time_a добавь local, и в function torch_binder:load® дожна стоять буква R в скобках, вместо символа.

    Добавлено (17.04.2014, 00:01)
    ---------------------------------------------
    Sanjaaa, И замени "name_infoporticion" на "get_gun1"

      Злобная реклама
    Четверг, 17.04.2014, 00:01
    Статус:
    Сообщений: 666
    Регистрация: 17.01.2012
    Российская Федерация  Arist
    Четверг, 17.04.2014, 00:02 | Сообщение # 2640
    Статус:
    Неопытный:
    Сообщений: 481
    Награды: 1
    Регистрация: 08.07.2012

    ins33,
    вылета нет.А зачем тогда это:
    abort("Wrong target_name for 'spawn_object_in' function %s. For object %s", tostring(target_name), obj:name())

    Перестраховка?
      Злобная реклама
    Четверг, 17.04.2014, 00:02
    Статус:
    Сообщений: 666
    Регистрация: 08.07.2012
    Поиск: