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

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

Не знаю, в ту ли тему я обращаюсь, поэтому заранее извините. Как сделать черный экран вначале игры и постепенно убрать его (типо гг открывает глаза). Всю катсцену сделал, всё работает идеально, но на счёт затемнения нигде не могу найти инфу :(

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

@ColderЖелательно скрипт\ конфиг  папки с которыми Вы работаете.

@Colder function CTreasure:__init()

local community    = parse_names(utils.cfg_get_string(self.ini, id, "community", nil, false, "", "stalker, bandit, dolg, freedom"))

К сожалению нечем оперировать, но возможно некой фракции не хватает?

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

Доброго времени!

Задался вопросом, чтобы ставить мины противопехотные и/или противопехотные усиленные (при наличии их в рюкзаке) по направлению взгляда спереди.

За основу взял key_handlers.script из правки на установку турели  "Тайфун" Стрелка по направлению взгляда без выхода в меню по ESC (если не ошибаюсь от слава70).

Там присутствует следующее:

Скрытый текст

[DIK_keys.DIK_NUMPAD4]={
                    func=function()
                        local dir = db.actor:direction()
            local turret_fast = db.actor:object("strelok_turret")
            if turret_fast then
            amk.remove_item(turret_fast)
            local ap = db.actor:position()
            local lv = db.actor:level_vertex_id()
            local gv = db.actor:game_vertex_id()
            local turret = create_car("turret_to_strelok",xyz(ap.x+dir.x, ap.y, ap.z+dir.z), lv, gv, "scripts\\technics\\strelok_turret.ltx") --спереди
            map_spot(turret.id, "red_location", "Моя туррель")
            else
            meceniy_in_hell.horror_sound()
            end
            end
        },

Сделал примерно следующее:  (bomba_mina_n - противопехотная,  bomba_mina_b - противопехотная усиленная. Тут только пока про простую речь. Допилить на оба типа потом нет проблема.)

Скрытый текст

[DIK_keys.DIK_NUMPAD9]={
                    func=function()
                        local dir = db.actor:direction()
            local bomb_fast_n = db.actor:object("bomba_mina_n")
            if bomb_fast_n then
            amk.remove_item(bomb_fast_n)
            local ap = db.actor:position()
            local lv = db.actor:level_vertex_id()
            local gv = db.actor:game_vertex_id()
            local turret = create_car("bomba_mina_n",xyz(ap.x+dir.x, ap.y, ap.z+dir.z), lv, gv, "") --спереди
            
            else
            meceniy_in_hell.horror_sound()
            end
            end
        },

Так вот, что-то не фурычит... Можешь тыкнуть пальцем что не так делаю?
ЗЫ: указание на файл "scripts\\technics\\strelok_turret.ltx" убрал т.к. ИМХО для бомбы оно не к чему...

ЗЫЗЫ: что-то редактирование сообщения тут не нашел... Вот автор вышеупомянутой правки @слава70.

Voland-Li.gif

Страшно смотреть, как на жестком диске прямо на глазах уменьшается место.

Но еще страшнее смотреть, когда оно прямо на глазах увеличивается. :facepalm:

Вангую. Скоро попросят правку:"Меченый появляется на Кордоне. Телепорт к Монолиту. Загадывает Желание. THE END."

Ссылка на комментарий
Только что, Voland-Li сказал(а):

local turret = create_car

Полагаю, причина где-то тут

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@Zander_driver мм... ну да... Упустил этот момент...  Но в принципе переменная то локальная, пофигу ж как она там называется?

local bomb_fast_n = create_car("bomba_mina_n",xyz(ap.x+dir.x, ap.y, ap.z+dir.z), lv, gv, "") --спереди

Так чтоль?

Или вы имеете в виду, что не create_car а create ?

Ах, да... Реакции НОЛЬ на нажатие НУМПАД9...

1 час назад, Voland-Li сказал(а):

local bomb = create_car(

вот так точнее. 

Voland-Li.gif

Страшно смотреть, как на жестком диске прямо на глазах уменьшается место.

Но еще страшнее смотреть, когда оно прямо на глазах увеличивается. :facepalm:

Вангую. Скоро попросят правку:"Меченый появляется на Кордоне. Телепорт к Монолиту. Загадывает Желание. THE END."

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

@Voland-Li 

Вы серьезно думаете, что ф-ция create_car может заспавнить любой объект? Мины, в ТЧ к примеру - это аномалии. Соответственно, надо создать объект, затем заполнить его нет-пакет необходимыми данными. А по названию ф-ции можно догадаться, что она спавнит что-то связанное с транспортом.

  • Спасибо 1
Ссылка на комментарий

@AndreySol понял... просто спавном не занимался ни разу... как говориться на новые грабли наступаю... За наводку спасибо.

ЗЫ: а на счет нулевой реакции на клавишу не подскажете ничего?

Voland-Li.gif

Страшно смотреть, как на жестком диске прямо на глазах уменьшается место.

Но еще страшнее смотреть, когда оно прямо на глазах увеличивается. :facepalm:

Вангую. Скоро попросят правку:"Меченый появляется на Кордоне. Телепорт к Монолиту. Загадывает Желание. THE END."

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

@Colder , а "отсечку" сделать? :spiteful:

function take_item_from_box(box, box_story_id)
    local box_name = box:name()
    if (math.random() < 0.75) then --* вот туточки
--* Вариант 1: по имени
if not string.find(box_name, 'уникальная часть имени нашего рюкзака') 
and (math.random() < 0.75) then
--* Вариант 2: по секции
if box:section() ~= 'наименование секции нашего рюкзака'
and (math.random() < 0.75) then
    axr_sounds.play_sound([[weapons\generic_checkout]])
    mine_box = box
    mine_timer = time_global()+3000
end
end
end

 

  • Спасибо 1
  • Согласен 1
  • Полезно 2
Ссылка на комментарий

@Купер Спасибо большое! 

Добавил так:

    if not string.find(box_name, "active_ruck")
    and not string.find(box_name, "active_box")
    and not string.find(box_name, "active_system")
    and (math.random() < 0.75) then

Ещё бы добавить что бы с кусачками, снижался шанс заминировании тайника!


Подарки

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

    Как проверить характеристику бронежилетая надетого на гг в скрипте? Например, мне нужно проверить радиозащиту, и если она меньше то прибавлять гг радиацию. И сходу следующий вопрос: как сделать бесконечный таймер, по истечении которого прибавлялась бы эта радиация? (Из этого всего знаю только как прибавить радиацию)

    • Нравится 1
    Ссылка на комментарий
    1 час назад, ARTLantist сказал(а):

    Как проверить характеристику бронежилетая надетого на гг в скрипте?

    Привет. Если я не перепутал что-нибудь, и если речь идет об оригинальном движке, то, как то так.

    local outfit = db.actor:item_in_slot(6) -- получаем объект комбеза, если есть
    if outfit then
      local ocond = outfit:condition() -- выясняем состояние комбеза
      local ltx = system_ini()
      local osec = outfit:section() -- выясняем секцию конфига надетого комбеза
      local rdef = ltx:r_float(osec, "radiation_protection") -- читаем, на сколько этот комбез защищает от радиации
      local real_def = rdef * ocond -- вычисляем действующую защиту с учетом износа
      if real_def < 0.5 then
        db.actor.radiation = 0.1 -- например так)
      end
    end

    Надеюсь, пригодится для чего-нибудь :)

    1 час назад, ARTLantist сказал(а):

    как сделать бесконечный таймер, по истечении которого

    Бесконечный, по истечении которого... почему-то мне кажется это словосочетание, странным.

    В биндерах многих объектов (И актора, т.е. в bind_stalker, тоже), есть метод update. А туда передается, в качестве входящего аргумента, переменная delta.

    Которая численно равна, количеству миллисекунд прошедших с прошлого вызова этого update. Может быть, это будет полезно для того, что на самом деле имелось в виду... А может быть, я "угадал" неправильно.

    А вообще, смотри тут: https://www.amk-team.ru/forum/topic/7450-spravochnik-po-funkciyam-i-klassam/

    Много полезного найдешь.

    • Согласен 1
    • Полезно 4

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

    Ссылка на комментарий
    17 минут назад, Zander_driver сказал(а):

     

    
    
    
    
    local outfit = db.actor:item_in_slot(6) -- получаем объект комбеза, если есть
    if outfit then
      local ocond = outfit:condition() -- выясняем состояние комбеза
      local ltx = system_ini()
      local osec = outfit:section() -- выясняем секцию конфига надетого комбеза
      local rdef = ltx:r_float(osec, "radiation_protection") -- читаем, на сколько этот комбез защищает от радиации
      local real_def = rdef * ocond -- вычисляем действующую защиту с учетом износа
      if real_def < 0.5 then
        db.actor.radiation = 0.1 -- например так)
      end
    end

    Надеюсь, пригодится для чего-нибудь :)

    Бесконечный, по истечении которого... почему-то мне кажется это словосочетание, странным.

    Извиняюсь, сам щас прочёл и не понял, что написал, заработался просто немного?

    Я хотел сказать, один таймер, длинною, например, одну секунду, по истечении которой будет происходить функция и этот таймер будет запущен заново, и так бесконечно. Как-то так. 

    А как правильно работать с этой delta? Уже долго голову ломаю, что это за переменная такая. Во многих модах её используют, а как она используется, разобраться никак не получается.

    Изменено пользователем ARTLantist
    Добавлено  Опричник,

    Изучите "Правила цитирования". https://www.amk-team.ru/forum/topic/13514-obyavleniya/

    Устное предупреждение.

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

    @Zander_driver, большое пребольшое спасибо, теперь понятно всё!

    а как реализовать объединение и разъединение двух предметов в один, например, как сделано в Мизери с контейнерами артов? Мы наводим арт на контейнер и он туда кладётся. Потом нажимаем по контейнеру с артом ПКМ и у нас высвечивается окно "извлечь", нажимаем, и арт извлекается. Мне интересен именно такой способ, по большей части - как высветит это окно "извлечь".

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

    "Вывести окно извлечь" Если не ошибаюсь это движковая правка.

    Скрытый текст

    function start_repair_out(cond,num)
        local itm = db.actor:item_in_slot(num)
        local kit = kits[num]
        local s = cond-2
        local sect = obj:section()
        local name = tostring(system_ini():r_string(obj:section(),"inv_name_short"))

        if itm ~= nil then
        axr_effects_data.devices_anim()
        alife():release(alife():object(itm:id()), true)
        axr_sounds.play_sound([[item_sounds\inv_repair_sewing]])

        send_tip("%c[d_green]"..game.translate_string("st_dis_text_7").." "..game.translate_string(tostring(name)))
        create_repkit(kit..s)
        else
        send_tip("[d_red]Разбор невозможен!\\nОтсутствует объект для разбора!")
        create_repkit(kit..cond)
    end
    end

    Парни помогите вывести Сообщение разобраного обьекта!

    Сообщение не приходит а вылетает с "attempt to index global 'obj' (a nil value)"


    Подарки

  • Ссылка на комментарий
    4 часа назад, Colder сказал(а):

    local sect = obj:section()
        local name = tostring(system_ini():r_string(obj:section(),"inv_name_short"))

    obj:section() Это что и откуда? мне не понятно и движку тоже, вот он и ругается

     

    Скрытый текст
    
    function start_repair_out(cond,num)
    	local itm = db.actor:item_in_slot(num)
    	local kit = kits[num]
    	local s = cond-2
    	local sect = itm:section()
    	local name = tostring(system_ini():r_string(sect,"inv_name_short"))
    
    	if itm ~= nil then
    		axr_effects_data.devices_anim()
    		alife():release(alife():object(itm:id()), true)
    		axr_sounds.play_sound([[item_sounds\inv_repair_sewing]])
    		send_tip("%c[d_green]"..game.translate_string("st_dis_text_7").." "..game.translate_string(tostring(name)))
    		create_repkit(kit..s)
    	else
    		send_tip("[d_red]Разбор невозможен!\\nОтсутствует объект для разбора!")
    		create_repkit(kit..cond)
    	end

     

    так попробуй

    • Спасибо 1
    Ссылка на комментарий

    Да работает спасибо!

    @ted.80 А нет! Не работает!

    Скрытый текст

    Arguments     : LUA error: ...ü ×åðíîáûëÿ\gamedata\scripts\bind_stalker_ext.script:62: attempt to index global 'axr_sewing' (a nil value)

    Когда обьекта в слоте нету

    Ругаеться на сам скрипт

    Ой не то вот вылет Arguments     : LUA error: ... - Òåíü ×åðíîáûëÿ\gamedata\scripts\axr_sewing.script:39: attempt to index local 'itm' (a nil value)

    69 строка "

    if itm ~= nil then

    "

    • Нравится 2

    Подарки

  • Ссылка на комментарий
    Только что, DMT сказал(а):

    заданных размеров бокс, защищающий от выброса ?

    Вообще-то, это зависит от местной реализации выброса в "там, о чем вы спрашиваете"

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

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

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

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

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

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

    Войти

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

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

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

    AMK-Team.ru

    ×
    ×
    • Создать...