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

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

А я думал, все используют старый метод, когда просто НПС поворачивается от аномалии.

Спасибо за ответ. Надо будет глянуть, правда не совсем понятно как из аномалии in\out рестрикторы выдрать.

ничего выдирать не надо. Все аномалии унаследованы от рестриктора. Просто передаешь таблицу из нужных аномалий в функцию и все. Посмотри как используется в АМК или в описании функций Маландринуса.

Понятие in, out применяется уже к НПЦ. В in-рестрикторы НПЦ нельзя заходить, Из out-рестрикторов выходить. (Вроде так - лучше уточнить - все время путаю). То есть аномалии добавляются только в тот тип рестрикторов, куда нельзя входить.

 

Обход без рестрикторов был в первых версиях у Red75, и то он потом на рестрикторах сделал, все остальные обходы делались на рестрикторах

 

Суть в том, что хочу перед вызовом функции пустить счётчик, а после вызова функции остановить и глянуть, сколько времени прошло после вызова функции.

Специально для этого есть класс в lua_help profile_timer.

Изменено пользователем abramcumner
Ссылка на комментарий

А так через xr_conditions можно передать параметры?

 

function time_ust(t1,t2)

local t1 = p[1]

local t2 = p[2]

return level.get_time_hours() >= t1 and level.get_time_hours() <= t2

end

 

А параметр так

[smart_terrains]

esc_lager = {=time_ust(6,8)}

 

 

Изменено пользователем panzyuza
Ссылка на комментарий

Да, но немного по другому, в function time_ust(t1,t2) если я не ошибаюсь нужно писать так:

function time_ust(actor, npc, p)

t1 = p[1]

t2 = p[2]

 

А в esc_lager = {=time_ust(6,8)} заменить на esc_lager = {=time_ust(6:8)}

abramcumner

Спасибище! :)

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

Может не в тему конечно...

В билдах есть такая консольная команда jump_to_level. Можно ли её как-нибудь в ЗП возродить? Я Повелитель не очень люблю - он у меня очень много времени сжирает :blush:

Выводы модмейкера:

1)Вылетает - это хорошо. Значит, работает :)

2) Если хочешь сделать что-то хорошо, делай сам!

3) Если падёшь духом, падёт и мод.

4) Он живой... :o

Ссылка на комментарий

Дайте скриптовую функцию : Возможность наладить отношение с кланами за деньги. В солянке вроде была

Создаю глобальный мод с новыми локациямЭ

Ссылка на комментарий

Привет всем народ пытаюсь совместить 2 мода Helicopter AI+PZRK и Stories revival mod v0.6 подскажите пожалуйста ка бы мне совместить эти функции в _g скрипте

function printf(fmt,...)
    log(string.format(fmt,...))
end

function qqq(n)
    local scr = true
    local con = true
    local k = "debug data QQQ "..tostring(n)
    if scr then
        news_manager.send_tip(db.actor, k, nil, nil, 5000) 
    end
    if con then
        get_console():execute    ("load "..k)    
        get_console():execute    ("flush")    
    end
end

function parse_data(str)
    local string_parts = {}
    if str == nil then
        string_parts[1] = nil
        return string_parts
    end
    local str_beg,str_end
    str_end = str
    local split_pos = find_split_pos(str_end)
    while split_pos ~= nil do
        str_beg, str_end = split_string(str_end,split_pos)
        table.insert(string_parts,str_beg)
        split_pos = find_split_pos(str_end)
    end
    table.insert(string_parts,str_end)
    return string_parts
end

function find_split_pos(str)
    local split_pos = string.find(str,",")
    if split_pos == nil then
        return nil
    end
    local br1_pos = string.find(str,"(",1,true)
    local br2_pos = string.find(str,")",1,true)
    if br1_pos ~= nil and br2_pos ~= nil and br1_pos < br2_pos and split_pos > br1_pos then
        local str_end1 = string.sub(str,(br2_pos +1),string.len(str))
        if string.find(str_end1,",") ~= nil then
            split_pos = br2_pos + string.find(str_end1,",")
        else
            split_pos = nil
        end
    end
    return split_pos
end

function split_string(str,split_pos)
    local str_beg = (string.sub(str,1,split_pos-1))
    local str_end = string.sub(str,(split_pos+1),string.len(str))
    return str_beg,str_end
end

и

function printf(fmt,...)
--    local arg={...}
--    if arg==nil or arg[0]==nil then
--        mylog(fmt)
--    else
--        mylog(string.format(fmt,...))
--    end
end

local bufferedmessages={}

function mylog(msg)
--    if db and db.actor then
--        if bufferedmessages then
--            for k,v in ipairs(bufferedmessages) do
--            db.actor:give_game_news(v, "ui\\ui_iconsTotal", Frect():set(0,0,100,100), 0, 15000)
--            end
--            bufferedmessages=nil
--        end
--   db.actor:give_game_news(msg, "ui\\ui_iconsTotal", Frect():set(0,0,100,100), 0, 15000)
--    else
--        table.insert(bufferedmessages,msg)
--    end
end

 

 

Добавлено через 2 мин.:

Забыл сказать первый код из Helicopter AI+PZRK ну а второй я думаю понятно откуда

Строгое предупреждение от модератора kokkai
Большие массивы прячем под спойлер

Реклама любых модов бесплатно на моём

сайте писать в личку

Ссылка на комментарий

День добрый.

Подскажите пожалуста, можно ли в зове припяти прописать аним поинту через логику другую анимацию? если да то как?

Заранее спасибо.


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

Ссылка на комментарий

Gektor, можно конечно, секция будет выглядеть так:

 

[animpoint@нужное_название]

cover_name = название_смарт_кавера

avail_animations = sleep; - название нужной анимации.

 

А вот можно ли в такой секции прописывать звуки, которые будет издавать нпс и как это сделать хотелось бы и мне узнать.

Ссылка на комментарий

Clayman, почемуто не срабатывает. Для того чтобы сработало в самом смарт_кавере не должно быть анимок прописано? Или я гдето в логике накосячил?

 

[logic@esc_vishka_animp_1]

active = animpoint@esc_vishka_animp_1

suitable = true

prior = 100

 

[logic@esc_vishka_animp_2]

active = animpoint@esc_vishka_animp_2

suitable = true

prior = 90

 

[logic@esc_vishka_animp_3]

active = animpoint@esc_vishka_animp_3

suitable = true

prior = 90

 

[animpoint@esc_vishka_animp_gen]

avail_animations = sit_ass

use_camp = true

meet = meet@esc_vishka_animpoint_meet

 

[meet@esc_vishka_animpoint_meet]

close_anim = nil

close_victim = nil

far_anim = nil

far_victim = nil

close_distance = 0

far_distance = 0

use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false

snd_on_use = {!dist_to_actor_le(3)} nil

meet_on_talking = false

 

[animpoint@esc_vishka_animp_1]:animpoint@esc_vishka_animp_gen

cover_name = esc_vishka_lager_animpoint_1

avail_animations = sit_ass

 

[animpoint@esc_vishka_animp_2]:animpoint@esc_vishka_animp_gen

cover_name = esc_vishka_lager_animpoint_2

avail_animations = sit_ass

 

[animpoint@esc_vishka_animp_3]:animpoint@esc_vishka_animp_gen

cover_name = esc_vishka_lager_animpoint_3

avail_animations = sit_ass

 

 


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

Ссылка на комментарий

Если 3DHUD, то 10 из 9 - нет.

Если 2DHUD - чуть позже будет "почти" полноценная система...

Пока можешь попробовать прототип (file.qip.ru/file/120871441/4910c4e0/docviewer_v203.html) - не совсем худ, но внешний вид... Хотя, - смотря, что именно требуется...

 

всё легко

Ссылка на комментарий

Gektor, а что конкретно не срабатывает? НПС вообще под логику не берется или анимпоинт занимает, но нужную анимацию не играет?

Да и еще, это ты случайно не посиделки-болталки у костра пытаешься делать?

Ссылка на комментарий

Аним поинт занимает, но нужную анимацию, установленую в логике, не отыгрывает.

Да, пытаюсь сделать посиделки у костра. Вот только сидят они у меня на воздухе.


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

Ссылка на комментарий

Ну, для начала, чтобы в ЗП была анимация sit_ass я устанавливал скрипты от комрада nuclia. Для посиделок у костра, логику не нужно писать, достаточно поставить анимпоинты с установленной анимацией и накрыть это дело камп-зоной, тогда нпс будут в смарте автоматом как работы занимать эти анимпоинты и травить истории и лабать тяжелый рок на гитаре :)

 

Цитирую урок от Nuclia:

 

Смарт-каверы в ЗП.

Применяются в основном в двух случаях:

1.- вместо точек путей в логике эксклюзивов.

2.- для кампов - посиделки у костра.

Начнем с посиделок.Добавим в олл.спавн в зону нужного нам смарт-террейна

несколько смарт-каверов и камп-зону

 

 

"alife_zaton.ltx"

 

 

[20001]

; cse_abstract properties

section_name = camp_zone

name = zat_a1_camp

position = 241.788421630859,14.009066619873,467.594360351563

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 6

distance = 0

level_vertex_id = 1382565

object_flags = 0xffffff3e

custom_data = <<END

[camp]

cfg = scripts\camp.ltx

END

 

; cse_shape properties

shapes = shape0

shape0:type = sphere

shape0:offset = 0,0,0

shape0:radius = 5.84479999542236

 

; cse_alife_space_restrictor properties

restrictor_type = 3

 

 

[20002]

; cse_abstract properties

section_name = smart_cover

name = zat_a1_animpoint_1

position = 241.788421630859,14.009066619873,466.594360351563

direction = 0,3.13,0

 

; cse_alife_object properties

game_vertex_id = 6

distance = 0

level_vertex_id = 1382565

object_flags = 0xffffffbf

 

; cse_shape properties

shapes = shape0

shape0:type = sphere

shape0:offset = 0,0,0

shape0:radius = 2

 

; cse_smart_cover properties

cse_smart_cover__unk1_sz = animpoint_sit_low

cse_smart_cover__unk2_f32 = 0

enter_min_enemy_distance = 15

exit_min_enemy_distance = 10

 

; se_smart_cover properties

last_description = animpoint_sit_low

loopholes = animpoint_sit_low,1

 

 

[20003]

; cse_abstract properties

section_name = smart_cover

name = zat_a1_animpoint_2

position = 240.788421630859,14.009066619873,468.594360351563

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 6

distance = 0

level_vertex_id = 1382565

object_flags = 0xffffffbf

 

; cse_shape properties

shapes = shape0

shape0:type = sphere

shape0:offset = 0,0,0

shape0:radius = 2

 

; cse_smart_cover properties

cse_smart_cover__unk1_sz = animpoint_sit_low

cse_smart_cover__unk2_f32 = 0

enter_min_enemy_distance = 15

exit_min_enemy_distance = 10

 

; se_smart_cover properties

last_description = animpoint_sit_low

loopholes = animpoint_sit_low,1

 

 

[20004]

; cse_abstract properties

section_name = smart_cover

name = zat_a1_animpoint_3

position = 242.788421630859,14.009066619873,468.594360351563

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 6

distance = 0

level_vertex_id = 1382565

object_flags = 0xffffffbf

 

; cse_shape properties

shapes = shape0

shape0:type = sphere

shape0:offset = 0,0,0

shape0:radius = 2

 

; cse_smart_cover properties

cse_smart_cover__unk1_sz = animpoint_sit_low

cse_smart_cover__unk2_f32 = 0

enter_min_enemy_distance = 15

exit_min_enemy_distance = 10

 

; se_smart_cover properties

last_description = animpoint_sit_low

loopholes = animpoint_sit_low,1

 

 

Все - лагерь для посиделок готов, собираем все с предыдущими наработками.

Важный момент - шейп камп-зоны должен покрывать смарт-каверы, иначе получатся

слишком скучные посиделки - не будут травить анекдоты и прочее.

За направление взгляда отвечает дирекшн смарт-кавера.

 

 

 

 

Попробуй сделать пока так, с анимацией sit_low.

 

Добавлено через 1 мин.:

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

Изменено пользователем Clayman
Ссылка на комментарий

Ну собственно именно эта анимка была прописана в самом смарт кавере :russian_ru: . Вопрос как раз и был в том чтоба прописать через логику анимку не из списка СДК. Выходит без шаманства со скриптами смарт каверов никак нужную анимку не проткнеш? Я так понял, что анимки логика смарт кавера черпает из state_mgr_animstate_list_animpoint.script и state_mgr_animation_list_animpoint.script так? И именно по этому игра не находит анимки и ставит ту что в смарт кавере? А можно ли гдето ковырнуть, чтобы туда и из остальных файлов со списками анимок бралось? если да то как?


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

Ссылка на комментарий

Да нет же, все работает. Шаманство со скриптами нужно чтобы добавить в анимпоинты недостающие анимации. А чтобы использовать стандартные из файла state_lib.script достаточно сделать секцию логики как я выше писал. И неважно что прописано в настройкахх смарт-кавера в сдк (аллспавне). Вот пример простейшей логики, я сделал научника в лагере новичков на кордоне, который днем бродит вокруг аномалии с детектором а ночью идет спать в лагерь новичков. Для дневной работы сделал обычный путь, а для сна что-то лень было ставить вей-поинт, ткнул смарт-кавер в нужном месте (анимация в сдк прописана любая, вроде sit_low).

 

[logic@esc_sci]

suitable = {=check_npc_name(esc_sci)}

active = walker@esc_sci

prior = 100

 

 

[walker@esc_sci]

path_walk = walker_1_walk

path_look = walker_1_look

on_info = {!is_day} animpoint@esc_sci

 

 

[animpoint@esc_sci]

cover_name = esc_sci_sleep_smart_cover

avail_animations = sleep

on_info = {=is_day} walker@esc_sci

 

 

И все работает. Ну на самом деле это я упрощенный вариант привел, там у меня еще секции на случай выбросов добавлены, куды ему бежать, секции [meet], но в таком виде все должно работать.

Ссылка на комментарий

просто есть худ детектора,что ни пробовал,при активации в слоте худа нет.Переделал как оружие,худа нет.Вот может через скрипт можно?

Ссылка на комментарий

И тем не менее, эти подлые личности отказались принимать анимацию прописаную таким методом, как переходили в sit_low так и переходят.


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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