Модострой:Вопросница
|
|
|
Статус: |
 |
Легенда: |
 |
Сообщений: |
2258 |
Награды: |
15 |
Регистрация: |
05.04.2010 |
|
Задаем разные вопросы касательно создания модов.
|
|
Среда, 02.03.2011, 09:50
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
05.04.2010 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
Novellus, да, ты правильно думаешь, что .anm файлы "заточены" под определённые координаты. Править может и можно, но лично я не знаю как, но можно создать свою, есть видео урок, правда делать это нужно через SDK. satanian, либо через таймеры, либо вешать на апдейт актора проверку времени, либо выдавать квест по уже готовому событию. Можно и использовать предложение Novellus, использовать рестриктор, но в таком случае в этот рестриктор нужно будет зайти, чтобы сработала его логика, которая выдаст сообщение. KazakHD5770, только перебором всех объектов вокруг ГГ. Код приблизительно такой:Code for i=1, 65535, 1 do local obj = alife():object(i) if obj then local obj_pos = obj.position() local actor_pos = db.actor:position() if IsStalker(obj) and not obj:alive() and obj_pos:distance_to_sqr(actor_pos)<4 then --# Стоим в радиусе двух метров от трупа сталкера elseif IsMonster(obj) and not obj:alive() and obj_pos:distance_to_sqr(actor_pos)<4 then --# Стоит в радиусе двух метров от трупа монстра end end end
Сообщение отредактировал ColR_iT - Четверг, 14.06.2012, 14:24
|
|
Четверг, 14.06.2012, 14:22
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
Четверг, 14.06.2012, 14:25
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.04.2012 |
|
|
|
|
|
RICK
Четверг, 14.06.2012, 14:35 | Сообщение # 5448
Статус: |
 |
Опытный: |
 |
Сообщений: |
1205 |
Награды: |
4 |
Регистрация: |
10.05.2011 |
|
да через сдк файлы anm создаются и редактируются
кто нибуть напишите мне скрипт таймер типо
так прошло 6 часов то выдаем поршень
прошло 12 часов выдаем поршень прошло 2 дня выдаем поршень
|
|
Четверг, 14.06.2012, 14:35
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
10.05.2011 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
Novellus, чтобы камера при проигрывании, не смещалась непонятно куда, проделай следующее: В папке scripts найди файл sr_cutscene.script (если нет, то скопируй с оригинала), открой его и найди вот такую строку:Code level.add_cam_effector2(self.st.cam_effector, 123, false, "sr_cutscene.effector_callback") и переименуй функцию add_cam_effector2 в add_cam_effector убрав из названия двойку. Так анимация камеры, будет отыгрываться от первого лица.
Сообщение отредактировал ColR_iT - Четверг, 14.06.2012, 14:39
|
|
Четверг, 14.06.2012, 14:38
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
Четверг, 14.06.2012, 14:40
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.04.2012 |
|
|
|
|
|
ins33
Четверг, 14.06.2012, 14:55 | Сообщение # 5451
Dream Reader Mod
Статус: |
 |
Опытный: |
 |
Сообщений: |
2269 |
Награды: |
1 |
Регистрация: |
17.01.2012 |
|
Novellus, Я говорил про белую строчку на миникарте. Вот её то и надо перенести.

|
|
Четверг, 14.06.2012, 14:55
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
17.01.2012 |
|
|
|
|
|
Статус: |
 |
Бывалый: |
 |
Сообщений: |
676 |
Награды: |
1 |
Регистрация: |
25.04.2012 |
|
ColR_iT, я нашел только вот эту функцию в том скрипте: Добавлено (14.06.2012, 15:12) --------------------------------------------- ColR_iT, твой код для ТЧ, а мне для ЗП нужно.
|
|
Четверг, 14.06.2012, 15:12
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.04.2012 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
Novellus, замени то, что есть:Code if not (eff.global_cameffect) then level.add_cam_effector("camera_effects\\"..eff.anim..".anm", 210408, false, "sr_cutscene.effector_callback") else level.add_cam_effector2("camera_effects\\"..eff.anim..".anm", 210408, false, "sr_cutscene.effector_callback", self.st.fov or db.actor:fov()*0.75) end Вот этимCode level.add_cam_effector("camera_effects\\"..eff.anim..".anm", 210408, false, "sr_cutscene.effector_callback")
Добавлено (14.06.2012, 15:17) --------------------------------------------- Т.е. у тебя функция целиком должна выглядеть так:Code function cam_effector_set:start_effect(eff) --printf("playing effect [camera_effects\\"..eff.anim..".anm], time [%s]", device():time_global()) --callstack() level.add_cam_effector("camera_effects\\"..eff.anim..".anm", 210408, false, "sr_cutscene.effector_callback") self.playing = true end
Хотя стоп! НЕ ДЕЛАЙ. Лучше запусти анимацию камеры через функцию. А то эти правки сильно повлияют на кат сцены всей игры.
Добавлено (14.06.2012, 15:22) --------------------------------------------- Novellus, просто допиши в логику твоего рестриктора ещё одну строку в схему sr_cutscene:Code global_cameffect = false В ЗП немного изменили схему, с этой строкой должно работать от первого лица.
Сообщение отредактировал ColR_iT - Четверг, 14.06.2012, 15:25
|
|
Четверг, 14.06.2012, 15:22
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
|
Статус: |
 |
Бывалый: |
 |
Сообщений: |
676 |
Награды: |
1 |
Регистрация: |
25.04.2012 |
|
ColR_iT, а у меня вся сюжетка вырезана. даже ни одного персонажа нету, кроме сквадов.Добавлено (14.06.2012, 15:24) --------------------------------------------- ColR_iT, работает все и так от первого лица, вот только эффект камеры как-будто гг над скадовском, крутит головой, а при управлении на месте своего респа.
|
|
Четверг, 14.06.2012, 15:24
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.04.2012 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
2077 |
Награды: |
7 |
Регистрация: |
03.06.2011 |
|
ColR_iT, спасибо за код, но на какой коллбэк вешать? о_О Если просто на четырёхсекундный таймер (апдейт ГГ) то вылет: Arguments : LUA error: No such operator defined
|
|
Четверг, 14.06.2012, 15:29
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
03.06.2011 |
|
|
|
|
Четверг, 14.06.2012, 15:31
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.04.2012 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
KazakHD5770, ну назвать апдейт актора "четырёх секундным таймером" это несколько не верно, но это лирика. По поводу вылета - у тебя не определён оператор, покажи весь код.
|
|
Четверг, 14.06.2012, 15:35
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
2077 |
Награды: |
7 |
Регистрация: |
03.06.2011 |
|
В bind_stalker:
Code function actor_binder:update(delta)
if time_global() > bp_last_time then -- bp_last_time прописан в начале bind_stalker bp_last_time = (time_global() + 4000) bp_k.player_instant_corpse_eat() end
bp_k.script Code function player_instant_corpse_eat() for i=1, 65535, 1 do local obj = alife():object(i) if obj then local obj_pos = obj.position() local actor_pos = db.actor:position() if IsStalker(obj) and not obj:alive() and db.actor:position():distance_to(obj:position())<4 then db.actor.health = -0.05 --для теста, чтобы эффект был заметен elseif IsMonster(obj) and not obj:alive() and db.actor:position():distance_to(obj:position())<4 then db.actor.health = -0.05 --аналогично end end end end
|
|
Четверг, 14.06.2012, 15:38
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
03.06.2011 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
Хотя можешь не показывать... В строке кода, где мы находили позицию объекта:Code local obj_pos = obj.position() убери скобки, чтобы было так:Code local obj_pos = obj.position Поскольку объект серверный, то мы используем его свойство, а не функцию, которая применима для клиента.
Моя ошибка. Извини.
Сообщение отредактировал ColR_iT - Четверг, 14.06.2012, 15:39
|
|
Четверг, 14.06.2012, 15:38
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
2077 |
Награды: |
7 |
Регистрация: |
03.06.2011 |
|
ColR_iT, всё равно вылет. С тем-же логом. ЗЫ: платформа - ТЧ.
|
|
Четверг, 14.06.2012, 15:41
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
03.06.2011 |
|
|
|
|