Случайная подборка модов
Зимний Снайпер
3.8
Lost Alpha
4.0
Выживший. Побег из Зоны
3.7
История Конвона. Часть первая
3.1
Shoker Weapon Mod 2.1
4.1
OGSM 1.8 Community Edition
4.2
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
Модострой:Вопросница
Российская Федерация  А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
    Поиск: