Случайная подборка модов
Игра Душ: Эксельсиор
4.4
Контракт на хорошую жизнь
4.1
Dream Reader - Dangerous Area
4.1
GUNSLINGER mod
4.5
Двойники - Разлом Времени
3.5
Секрет Дианы
2.2
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
Модострой:Вопросница
Российская Федерация  Wolfstalker
Среда, 02.03.2011, 09:50 | Сообщение # 1
Статус:
Легенда:
Сообщений: 2258
Награды: 15
Регистрация: 05.04.2010

Задаем разные вопросы касательно создания модов.
  Злобная реклама
Среда, 02.03.2011, 09:50
Статус:
Сообщений: 666
Регистрация: 05.04.2010
Украина  BozKurt
Четверг, 14.06.2012, 14:22 | Сообщение # 5446
Статус:
Опытный:
Сообщений: 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
Российская Федерация  Novellus
Четверг, 14.06.2012, 14:25 | Сообщение # 5447
Статус:
Бывалый:
Сообщений: 676
Награды: 1
Регистрация: 25.04.2012

ColR_iT, просто старт игры, в глазах темнеет, светлеет... а гг на ногах стоит. ведь это ж не правельно smile гг хоть головой дернуть должен, да и с пола хотя б подняться. как это сделать-то?? через СДК только?? sad
  Злобная реклама
Четверг, 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
Украина  BozKurt
Четверг, 14.06.2012, 14:38 | Сообщение # 5449
Статус:
Опытный:
Сообщений: 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
Российская Федерация  Novellus
Четверг, 14.06.2012, 14:40 | Сообщение # 5450
Статус:
Бывалый:
Сообщений: 676
Награды: 1
Регистрация: 25.04.2012

ColR_iT, ок. попробую. только вот поем biggrin
  Злобная реклама
Четверг, 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
Российская Федерация  Novellus
Четверг, 14.06.2012, 15:12 | Сообщение # 5452
Статус:
Бывалый:
Сообщений: 676
Награды: 1
Регистрация: 25.04.2012

ColR_iT, я нашел только вот эту функцию в том скрипте:

Добавлено (14.06.2012, 15:12)
---------------------------------------------
ColR_iT, твой код для ТЧ, а мне для ЗП нужно.

  Злобная реклама
Четверг, 14.06.2012, 15:12
Статус:
Сообщений: 666
Регистрация: 25.04.2012
Украина  BozKurt
Четверг, 14.06.2012, 15:22 | Сообщение # 5453
Статус:
Опытный:
Сообщений: 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
Российская Федерация  Novellus
Четверг, 14.06.2012, 15:24 | Сообщение # 5454
Статус:
Бывалый:
Сообщений: 676
Награды: 1
Регистрация: 25.04.2012

ColR_iT, а у меня вся сюжетка вырезана. даже ни одного персонажа нету, кроме сквадов.

Добавлено (14.06.2012, 15:24)
---------------------------------------------
ColR_iT, работает все и так от первого лица, вот только эффект камеры как-будто гг над скадовском, крутит головой, а при управлении на месте своего респа.

  Злобная реклама
Четверг, 14.06.2012, 15:24
Статус:
Сообщений: 666
Регистрация: 25.04.2012
Швеция  KazakHD5770
Четверг, 14.06.2012, 15:29 | Сообщение # 5455
Статус:
Опытный:
Сообщений: 2077
Награды: 7
Регистрация: 03.06.2011

ColR_iT, спасибо за код, но на какой коллбэк вешать? о_О
Если просто на четырёхсекундный таймер (апдейт ГГ) то вылет:
Arguments : LUA error: No such operator defined
  Злобная реклама
Четверг, 14.06.2012, 15:29
Статус:
Сообщений: 666
Регистрация: 03.06.2011
Российская Федерация  Novellus
Четверг, 14.06.2012, 15:31 | Сообщение # 5456
Статус:
Бывалый:
Сообщений: 676
Награды: 1
Регистрация: 25.04.2012

ColR_iT, делаю вот так - global_cameffect = false, эффект камеры вообще под локацией biggrin
Сейчас попробую другой твой способ, поправлю скрипт.
  Злобная реклама
Четверг, 14.06.2012, 15:31
Статус:
Сообщений: 666
Регистрация: 25.04.2012
Украина  BozKurt
Четверг, 14.06.2012, 15:35 | Сообщение # 5457
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

KazakHD5770, ну назвать апдейт актора "четырёх секундным таймером" это несколько не верно, но это лирика.
По поводу вылета - у тебя не определён оператор, покажи весь код.
  Злобная реклама
Четверг, 14.06.2012, 15:35
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Швеция  KazakHD5770
Четверг, 14.06.2012, 15:38 | Сообщение # 5458
Статус:
Опытный:
Сообщений: 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
Украина  BozKurt
Четверг, 14.06.2012, 15:38 | Сообщение # 5459
Статус:
Опытный:
Сообщений: 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
Швеция  KazakHD5770
Четверг, 14.06.2012, 15:41 | Сообщение # 5460
Статус:
Опытный:
Сообщений: 2077
Награды: 7
Регистрация: 03.06.2011

ColR_iT, всё равно вылет. С тем-же логом.
ЗЫ: платформа - ТЧ.
  Злобная реклама
Четверг, 14.06.2012, 15:41
Статус:
Сообщений: 666
Регистрация: 03.06.2011
Поиск: