Случайная подборка модов
Наёмник Сом
3.5
Зона обр.2010г.
3.1
История Кота
3.4
История снайпера: Ловушка Судьбы
2.9
Old Episodes. Epilogue
3.2
Mysterious Zone
4.0
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
Модострой:Вопросница
Российская Федерация  Wolfstalker
Понедельник, 22.10.2012, 14:58 | Сообщение # 1
Статус:
Легенда:
Сообщений: 2258
Награды: 15
Регистрация: 05.04.2010

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

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





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


    Архив

    Архив#2
  •   Злобная реклама
    Понедельник, 22.10.2012, 14:58
    Статус:
    Сообщений: 666
    Регистрация: 05.04.2010
    Украина  Gun12
    Суббота, 29.06.2013, 22:51 | Сообщение # 6316
    Статус:
    Гость:
    Сообщений: 50
    Награды: 0
    Регистрация: 08.07.2012

    Пожалуйста. Спрашивайте если что. Чем смогу...
    На самом деле даже по этому вопросу можно ещё много чего рассказать.
    Сообщение отредактировал Gun12 - Суббота, 29.06.2013, 22:54
      Злобная реклама
    Суббота, 29.06.2013, 22:51
    Статус:
    Сообщений: 666
    Регистрация: 08.07.2012
    Российская Федерация  Graff46
    Воскресенье, 30.06.2013, 00:15 | Сообщение # 6317
    Новое Время
    Статус:
    Бывалый:
    Сообщений: 867
    Награды: 7
    Регистрация: 02.05.2013

    Можно ли в скриптовых функциях (ТЧ) реализовать временную задержку между действиями?
    Пример:
    Код

    function most ()
             level.add_pp_effector("agr_u_fade.ppe", 0, false)<-- сначало это
      -- Тут нужна задержка, а дальше, что ниже
         local a = vector()
         a.x = 52.310333251953
         a.y = -0.6053409576416
         a.z = 121.97222900391
         db.actor:set_actor_position(a)
    end
      Злобная реклама
    Воскресенье, 30.06.2013, 00:15
    Статус:
    Сообщений: 666
    Регистрация: 02.05.2013
    Российская Федерация  Scouser
    Воскресенье, 30.06.2013, 00:18 | Сообщение # 6318
    Статус:
    Опытный:
    Сообщений: 1614
    Награды: 16
    Регистрация: 21.10.2012

    Graff46, А как ты вызываешь функцию?
      Злобная реклама
    Воскресенье, 30.06.2013, 00:18
    Статус:
    Сообщений: 666
    Регистрация: 21.10.2012
    Украина  stalker-MiX
    Воскресенье, 30.06.2013, 00:20 | Сообщение # 6319
    Статус:
    Неопытный:
    Сообщений: 534
    Награды: 2
    Регистрация: 20.02.2013

    Поскольку, уже пошла речь за
    Код
    alife():create("персонаж",vector():set(x,y,z),levelvertex,gamevertex)
    то всегда хотел спросить, возможно заспавнить объект и развернуть dir X, dir Y, dir Z, как тебе нужно через скрипт (не нпс).

    В АЛЛ.СПАВН, то понятно.
      Злобная реклама
    Воскресенье, 30.06.2013, 00:20
    Статус:
    Сообщений: 666
    Регистрация: 20.02.2013
    Российская Федерация  Graff46
    Воскресенье, 30.06.2013, 00:22 | Сообщение # 6320
    Новое Время
    Статус:
    Бывалый:
    Сообщений: 867
    Награды: 7
    Регистрация: 02.05.2013

    LaRento,
    Через диалог
      Злобная реклама
    Воскресенье, 30.06.2013, 00:22
    Статус:
    Сообщений: 666
    Регистрация: 02.05.2013
    Российская Федерация  Scouser
    Воскресенье, 30.06.2013, 00:33 | Сообщение # 6321
    Статус:
    Опытный:
    Сообщений: 1614
    Награды: 16
    Регистрация: 21.10.2012

    Graff46, Через скриптом не помню уже как... Только через логику могу. Жди другого.
      Злобная реклама
    Воскресенье, 30.06.2013, 00:33
    Статус:
    Сообщений: 666
    Регистрация: 21.10.2012
    Украина  Gun12
    Воскресенье, 30.06.2013, 00:51 | Сообщение # 6322
    Статус:
    Гость:
    Сообщений: 50
    Награды: 0
    Регистрация: 08.07.2012

    Цитата (Graff46)
    Можно ли в скриптовых функциях (ТЧ) реализовать временную задержку между действиями

    Задержку можно организовать не одним способом.
    Банально :
    Код
    local time = time_global()+5000
    while time_global() < time do end

    Профессионально - использование coroutine
      Злобная реклама
    Воскресенье, 30.06.2013, 00:51
    Статус:
    Сообщений: 666
    Регистрация: 08.07.2012
    Российская Федерация  ins33
    Воскресенье, 30.06.2013, 04:58 | Сообщение # 6323
    Dream Reader Mod
    Статус:
    Опытный:
    Сообщений: 2269
    Награды: 1
    Регистрация: 17.01.2012

    Gun12,
    Цитата (Gun12)
    Профессионально - использование coroutine
    Может, чуть подробней, про wait()?
    Это ведь ошибочное понимание данного вопроса:


    Подскажите, название звука сирены/сигнализации в Т.Ч.
    Сообщение отредактировал ins33 - Воскресенье, 30.06.2013, 05:26
      Злобная реклама
    Воскресенье, 30.06.2013, 04:58
    Статус:
    Сообщений: 666
    Регистрация: 17.01.2012
    Украина  Gun12
    Воскресенье, 30.06.2013, 10:52 | Сообщение # 6324
    Статус:
    Гость:
    Сообщений: 50
    Награды: 0
    Регистрация: 08.07.2012

    Я этими функциями не пользовался, так что ничего определённого сказать не могу как они себя ведут.
    Судя по описанию :
    Цитата
    ii. wait()
    1. ждать до следующего обновления скрипта
    iii. wait(<time_to_wait>)
    1. ждать заданное в миллисекундах время до следующего обновления скрипта
    iv. wait_game(<game_time_to_wait>)
    1. ждать заданное в миллисекундах игровое время до следующего обновления скрипта
    должны подойти просто вызвав :
    Код
    wait(нужный_промежуток)
      Злобная реклама
    Воскресенье, 30.06.2013, 10:52
    Статус:
    Сообщений: 666
    Регистрация: 08.07.2012
    Российская Федерация  Scouser
    Воскресенье, 30.06.2013, 11:10 | Сообщение # 6325
    Статус:
    Опытный:
    Сообщений: 1614
    Награды: 16
    Регистрация: 21.10.2012

    ins33, Там их много - ищи с элементом alarm.

    Добавлено (30.06.2013, 11:10)
    ---------------------------------------------
    Обе функции верны вроде бы. В первой мы ожидаем отсчёта 5 секунд оператором while. Вторая функция аналогичная, только мы не назначили локальную переменную и не использовали глобальное время. Так что Graff46 следует попробовать оба варианта.

      Злобная реклама
    Воскресенье, 30.06.2013, 11:10
    Статус:
    Сообщений: 666
    Регистрация: 21.10.2012
    Российская Федерация  ins33
    Воскресенье, 30.06.2013, 11:45 | Сообщение # 6326
    Dream Reader Mod
    Статус:
    Опытный:
    Сообщений: 2269
    Награды: 1
    Регистрация: 17.01.2012

    Gun12, LaRento, Обе не работают. А если заглянуть в _g.script то пропадает желание дальше заниматься этим вопросом. smile
    И о каком профессионализме шла речь, я что то не уловил.
      Злобная реклама
    Воскресенье, 30.06.2013, 11:45
    Статус:
    Сообщений: 666
    Регистрация: 17.01.2012
    Украина  Gun12
    Воскресенье, 30.06.2013, 12:12 | Сообщение # 6327
    Статус:
    Гость:
    Сообщений: 50
    Награды: 0
    Регистрация: 08.07.2012

    Lua однопоточен. Если функция начала выполняться, то пока не выполниться до конца, далее ничего не будет просходить (если не ипользовать coroutine). Поэтому while time_global() < time do end не может не работать.

    Цитата (ins33)
    И о каком профессионализме шла речь

    Раз - _http://www.amk-team.ru/forum/index.php?showtopic=7450&page=16#entry622983
    И два - _http://www.amk-team.ru/forum/index.php?showtopic=11584&page=6#entry641931
    Сообщение отредактировал Gun12 - Воскресенье, 30.06.2013, 12:15
      Злобная реклама
    Воскресенье, 30.06.2013, 12:12
    Статус:
    Сообщений: 666
    Регистрация: 08.07.2012
    Российская Федерация  ins33
    Воскресенье, 30.06.2013, 12:29 | Сообщение # 6328
    Dream Reader Mod
    Статус:
    Опытный:
    Сообщений: 2269
    Награды: 1
    Регистрация: 17.01.2012

    Gun12, Попробуй сам запусти time(*). У меня не получилось.
      Злобная реклама
    Воскресенье, 30.06.2013, 12:29
    Статус:
    Сообщений: 666
    Регистрация: 17.01.2012
    Украина  Gun12
    Воскресенье, 30.06.2013, 12:47 | Сообщение # 6329
    Статус:
    Гость:
    Сообщений: 50
    Награды: 0
    Регистрация: 08.07.2012

    ins33
    О какой функции time вы говорите? Где вы в lua_help видели эту функцию, в которую ещё и передаётся аргумент. Может вы подразумевали класс profile_timer?

    Вы сами попробуйте выполнить функцию :
    Код
    function f()
         local time_before = time_global()
         local time = time_before + 5000
         news_manager.send_tip(db.actor, tostring(time_before))
         while time_global() < time do end
         news_manager.send_tip(db.actor, tostring(time_global()))
    end
      Злобная реклама
    Воскресенье, 30.06.2013, 12:47
    Статус:
    Сообщений: 666
    Регистрация: 08.07.2012
    Российская Федерация  Graff46
    Воскресенье, 30.06.2013, 14:03 | Сообщение # 6330
    Новое Время
    Статус:
    Бывалый:
    Сообщений: 867
    Награды: 7
    Регистрация: 02.05.2013

    Все ф-ции пробовал, вылет на них:
    Цитата
    Expression : fatal error
    Function : CScriptEngine::lua_error
    File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
    Line : 73
    Description : <no expression>
    Arguments : LUA error: attempt to yield across metamethod/C-call boundary
      Злобная реклама
    Воскресенье, 30.06.2013, 14:03
    Статус:
    Сообщений: 666
    Регистрация: 02.05.2013
    Поиск: