Модострой:Вопросница
|
|
|
Статус: |
 |
Легенда: |
 |
Сообщений: |
2258 |
Награды: |
15 |
Регистрация: |
05.04.2010 |
|
Задаем разные вопросы касательно создания модов.
|
|
Среда, 02.03.2011, 09:50
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
05.04.2010 |
|
|
|
|
Четверг, 14.06.2012, 15:45
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.04.2012 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
KazakHD5770, хм... Попробуй в таком случае взять условия проверки в скобки, вот так:Code (IsStalker(obj)) and (not obj:alive()) and (obj_pos:distance_to_sqr(actor_pos)<4) Для монстров аналогично.
|
|
Четверг, 14.06.2012, 15:47
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
Четверг, 14.06.2012, 15:54
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
03.06.2011 |
|
|
|
|
Четверг, 14.06.2012, 15:54
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.04.2012 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
KazakHD5770, я понял в чём дело... Я же сказал, что объект obj является серверным и определить его позицию можно при помощи его свойства, а вызывается свойство через символ точки. Перепиши свою функцию вот так: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()0 and (obj_pos:distance_to(actor_pos)<4) then db.actor.health = -0.05 --для теста, чтобы эффект был заметен elseif IsMonster(obj) and (not obj:alive()) and (obj_pos:distance_to(actor_pos)<4) then db.actor.health = -0.05 --аналогично end end end end
|
|
Четверг, 14.06.2012, 15:56
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
2077 |
Награды: |
7 |
Регистрация: |
03.06.2011 |
|
ColR_iT, так всё равно вылетает. Вот рабочий вариант, но лаг каждые 4 секунды 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 obj_pos:distance_to_sqr(actor_pos)<4 then --# Стоим в радиусе двух метров от трупа сталкера db.actor.health = -0.05 elseif IsMonster(obj) and not obj:alive() and obj_pos:distance_to_sqr(actor_pos)<4 then --# Стоит в радиусе двух метров от трупа монстра db.actor.health = -0.05 end end end end Quote (KazakHD5770) Как узнать в каком положении в данный момент находится ГГ? Сделаю апдейт возможным только если ГГ стоит 4 секунды
То есть если ГГ не стоит, то функция не вызывается. Как проверить состояние ГГ?
Сообщение отредактировал KazakHD5770 - Четверг, 14.06.2012, 16:05
|
|
Четверг, 14.06.2012, 16:04
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
03.06.2011 |
|
|
|
|
Четверг, 14.06.2012, 16:05
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.04.2012 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
2077 |
Награды: |
7 |
Регистрация: |
03.06.2011 |
|
Стоячий ГГ: Code db.actor.state == normal

|
|
Четверг, 14.06.2012, 16:08
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
03.06.2011 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
Novellus, я понимаю о каком "глюке" ты говоришь. Видео было лишним. Происходит это потому, что схема sr_cutscene использует для запуска анимации камеры функцию add_cam_effector2, а она смещает проигрывание относительно каких-то координат, ко всему прочему, эту функцию в ЗП изменили движково, добавив пятый параметр, на ТЧ его нет. Поэтому чтобы не было не понятных эффектов использую для запуска анимации камеры функцию run_cam_effector из файла xr_effects.script и для запуска постпроцесса функцию run_postprocess из того же файла, посредством всё той же логики, вот так:Code [logic] active = sr_idle@wait_actor
[sr_idle@wait_actor] on_actor_inside = nil %=run_postprocess(deadcity_wake_old) =run_cam_effector(camera_mar_02_up)% Только анимация камеры camera_mar_02_up должна лежать в папке anims\camera_effects.
Сообщение отредактировал ColR_iT - Четверг, 14.06.2012, 16:16
|
|
Четверг, 14.06.2012, 16:08
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
Четверг, 14.06.2012, 16:10
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.04.2012 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
1753 |
Награды: |
3 |
Регистрация: |
25.05.2012 |
|
KazakHD5770, а где ты нашёл такую записьCode db.actor.state == normal ?
|
|
Четверг, 14.06.2012, 16:18
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.05.2012 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
2077 |
Награды: |
7 |
Регистрация: |
03.06.2011 |
|
|
|
Четверг, 14.06.2012, 16:31
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
03.06.2011 |
|
|
|
|
|
Статус: |
 |
Бывалый: |
 |
Сообщений: |
676 |
Награды: |
1 |
Регистрация: |
25.04.2012 |
|
ColR_iT, вот так Quote [logic] active = sr_idle@wait_actor
[sr_idle@wait_actor] on_actor_inside = nil %=run_postprocess(deadcity_wake_old) =run_cam_effector(camera_mar_02_up)% тоже самое, только с другого места вид я в старой своей логике заменил camera_mar_02_up на усталость, теперь все четко. все равно спасибо большое.
|
|
Четверг, 14.06.2012, 16:41
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.04.2012 |
|
|
|
|
|
Статус: |
 |
Опытный: |
 |
Сообщений: |
2077 |
Награды: |
7 |
Регистрация: |
03.06.2011 |
|
Нет, не работает этот db.actor.state == normal.
Нужна рабочая проверялка на текущее движение ГГ.
Сообщение отредактировал KazakHD5770 - Четверг, 14.06.2012, 16:42
|
|
Четверг, 14.06.2012, 16:41
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
03.06.2011 |
|
|
|
|
Четверг, 14.06.2012, 16:46
|
Статус: |
 |
Сообщений: |
666 |
Регистрация: |
25.04.2012 |
|
|
|
|