Перейти к контенту

[SoC] Ковыряемся в файлах


Halford

Рекомендуемые сообщения

Народ, у меня два вопроса, подскажите:

1)Как повернуть скриптово камеру (или изменить direction() актора)?

Ни в какую не работает.

Вот вроде родной метод, и он не работает, вернее делает дирекцию на 0,0,0:

db.actor:set_actor_direction(dir)

// Пришли полностью скрипт как ты пытаешся изменить направление. Непонятно что именно у тебя такое dir. А метод рабочий... Министр.

Ответ:

local obj = alife():story_object(006)
local dir = obj:get_current_direction() --\вылет: nil get_current_direction()
--local dir = vector():set(45, 34, 63)
db.actor:set_actor_direction(dir)

Я хочу сделать поворот камеры на непися.

2)Как поставить игру на паузу, есть вариант device():pause(), но есть какой-то вариант, когда включается меню, то происходит такая пауза, как включить такую паузу?

// Конечно же включив меню :D. Министр.

Ответ: Мне надо включить мое окно, но чтобы была пауза, как в меню, т.е. без надписи "Пауза" (в общем, остановка всего и вся: партиклы анимации и тп.)

------------

qwqwqw,

Вешаем метку в ПДА по Sid'у(Например на Волка) (Из журнала Stalk15):

Код:

local obj = alife():story_object( 6 ) -- 6 - сид Волка

local obj_id = obj.id

function add_spot_on_map(obj_id,type,text)

if obj_id then

if not text then text = "no_text"

end

level.map_add_object_spot_ser(obj_id, type, text)

end

end

 

Вызываем:

function add_spot_on_map2(obj_id,type,text)

имя_файла.add_spot_on_map(obj.id,"green_location","Текст")

end

 

Метку можно убрать вот так:

local obj = alife():story_object( 6 )

local obj_id = obj.id

function remove_spot_from_map(obj_id,type)

if obj_id and level.map_has_object_spot(obj_id, type) ~= 0 then

level.map_remove_object_spot(obj_id, type)

end

end

 

эту вызывать:

function remove_spot()

this.remove_spot_from_map(obj.id,"green_location")

end

 

Изменено пользователем SkyLoader

Поделиться этим сообщением


Ссылка на сообщение
здесь ты пытаешься получить дирекцию нпс, поэтому и вылет наверно.

Да, пытаюсь, что мне и надо. Что только не так? (я в луа хелп это видел).

А это - набор координат для position, если не ошибаюсь.

Ясно, я уже понял.

3, уже второй вопрос: какой метод отвечает за увеличение зума, как при прицеливании из оружия?

Изменено пользователем SkyLoader

Поделиться этим сообщением


Ссылка на сообщение

malandrinus,

Ясно все теперь.

local dir = obj:get_current_direction() --\ почему вылет?

А как медленно повернуть камеру на непися? Я знаю только, что надо использовать state_mgr_direction.script.

Изменено пользователем SkyLoader

Поделиться этим сообщением


Ссылка на сообщение

malandrinus,

Это метод для класса CProjector. Для какого объекта надо получить направление?

С непися, чтобы сделать медленный поворот на него.

Кстати этот метод применим для монстров.

Как и любое другое повторяющееся во времени действие - поставить изменение направление на апдейт.

И от этого медленнее будет? Такой поворот при "поцелуя" кровососа есть

Поделиться этим сообщением


Ссылка на сообщение

malandrinus,

Непонятно. Для того, чтобы посмотреть на NPC нужно знать его положение, а направление-то зачем?

А какой метод за это отвечает, если нужна позиция?

Будет так, как ты захочешь. Естественно, надо будет запрограммировать вычисление направление взгляда в зависимости от времени.

А это разве возможно? Как реализовать?

Поделиться этим сообщением


Ссылка на сообщение

malandrinus, так что ли?

vector():set(npc:position())

Да, это возможно. На каждом апдейте меняешь понемногу угол поворота, приближая его к конечному.

vector():set(npc:position()) - и как увеличивать? Если бы было set_actor_direction(), то я знаю, как сделать, а с вектором не догоняю :(

-------------

Дополнение:

Спасибо за подсказку.

Изменено пользователем SkyLoader

Поделиться этим сообщением


Ссылка на сообщение

malandrinus, спасибо за код. Но я все равно не догоняю, как использовать ее? Я, например, из меню ее должен запустить.

        if dik == DIK_keys.DIK_X then
local npc = alife():story_object(006)
--Ну что сюда запихнуть?
          end

Поделиться этим сообщением


Ссылка на сообщение

qwqwqw, это в данном случае точка движения и точка, куда смотрит непись, когда выполняет работу.

P.S. Сообщение с сп удали, там и так все захламляется.

 

------------------------

 

Вопрос: Как принудительно вывести непися из оффлайна, если я сменил гулаг ему, и он стоит рядом со мной.

  local npc = alife():object("esc_wolf")
  local tbl = amk.read_stalker_params(npc)
  tbl.custom = "[smart_terrains]\nesc_stone_lager=true"
  amk.write_stalker_params(tbl, npc)

После этого он уходит в оффлайн, а как его оттуда вытащить?

 

// В шапке есть ссылка на stalker-wiki, там есть статья о уводе/вводе непися в оффлайн. Министр.

Изменено пользователем Министр

Поделиться этим сообщением


Ссылка на сообщение

Министр, дело в том, что я использую эти методы, но ничего не меняется.

qwqwqw, это точка, где он должен быть.

Поделиться этим сообщением


Ссылка на сообщение

А что делает эта функция (по-детальней):

 

-- переключает камеру на монстра или на актёра
function alien_control( actor, npc, p )
printf( "alien_control(%s)", p[1] )
npc:set_alien_control( p[1] == "true" )
end

 

И при обращении к этой функции, что надо писать в аргумент P (что в таблицу пихать?)?

Поделиться этим сообщением


Ссылка на сообщение

Я недавно нашел такую инфу, может кто хочет сыграть с вырезанным монстром - зомби-блевуном (Ставим на апдейт монстера):

    if self.object:section()=="zombie_beee" and time_global()>(self.charge_time or 0)+5000 and 3>(self.charges_done or 0) and not is_fake and self.object.health>0.1 then
        local target = self.object:get_enemy() or db.actor
        local dist = target:position():distance_to(self.object:position())
        if dist < 10 and self.object:see(target) then
            local dir=self.object:direction()
            local delta=vector():set(self.object:position()):sub(target:position())
            local scalarmul=(delta.x*dir.x+delta.z*dir.z)/math.sqrt(delta.x*delta.x+delta.z*delta.z) 
            if scalarmul < -0.8 then
                bind_monster.play_particle(self.object,
                {
                    obj=self.object,
                    particle="amk\\zomb_beee",
                    pos=self.object:bone_position("bip01_head"),
                    dir=amk.sub(target:bone_position("bip01_head"),self.object:bone_position("bip01_head")),
                    gravity=vector():set(0,-0.01,0),
                    len=10,
                    life_time=2000,
                    give_dmg=true,
                    target=target,
                    sound="monsters\\zombie\\zombie_take_damage_3"
                })
                self.charge_time=time_global()
                self.charges_done=(self.charges_done or 0) + 1
            end
        end
    end

 

-------------------

Garry_Galler, malandrinus, ясно, спс

Изменено пользователем SkyLoader

Поделиться этим сообщением


Ссылка на сообщение

Народ, а есть метод ли стрельбы из оружия? Может это используется как юзание предмета? В луа хелпе не нашел ничего.

Поделиться этим сообщением


Ссылка на сообщение

malandrinus,

npc:set_item(<действие>, <ствол>, <размер очереди>, <пауза между очередями>)

А этот метод для актора то работает?

И в скриптах видел вместо "<пауза между очередями>" - заданный вектор.

 

Поделиться этим сообщением


Ссылка на сообщение

malandrinus, т.е. метода выстрела из оружия для ГГ нету что ли?

 

// А нажатие на левую кнопку мыши ужо не подходит? :crazy::D Министр.

Очень смешно... Я хочу заставить ГГ самому выстрелить из пушки, когда надо.

Изменено пользователем SkyLoader

Поделиться этим сообщением


Ссылка на сообщение

гопыч, в bind_stalker => actor_binder:on_item_take (obj) вставляешь:

if obj and obj:section() == "device_pda" then
local snd_obj = xr_sound.get_safe_sound_object([[путь\до\звука]])
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 5.0)
end

Как видишь, надо вставить путь до звука.

 

// Зачем лишние проверки? Одной проверки секции предмета достаточно. Министр.

Министр, Как говорил Artos, проверка на существование итема не лишняя.

// При этом и достаточно не нужная. Министр.

Изменено пользователем Министр

Поделиться этим сообщением


Ссылка на сообщение

Вопрос: как можно отследить биндовские команды? Например: turn_engine (запуск двигателя)

Поделиться этим сообщением


Ссылка на сообщение

Народ, как вызвать панику у непися или монстра? Пробовал такими методами:

set_custom_panic_threshold(30)

set_default_panic_threshold()

Пробовал как с серверными, так и клиентскими объектами. Непись и монстр не реагируют. В чем дело?

_______________________________

гопыч, у тебя модель не подходящая.

Изменено пользователем SkyLoader

Поделиться этим сообщением


Ссылка на сообщение

Можно ли скриптово отыграть анимацию непися, чтобы был отключен денжер, т.е. непись ни на что не реагировал?

p.s. ВСЕХ С Хеллоуином! :D

Поделиться этим сообщением


Ссылка на сообщение
gruber, я имел ввиду через скрипт :) Изменено пользователем Министр

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...