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

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

@Карлан, Именно, что не додумался. Но я сделал маленько по другому, не вынося обработку в отдельный файл, все в биндерах прописал. Теперь работает, как задумывал. Но твой скрипт все равно помог допереть до истины.

Сталкер - наше всё!

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

Всем доброго времени суток, вопрос такой: я выдернул тепловизор из ОГСЕ на ОП2, прописал его в экзе, работает, включается, но выключаться не хочет, так и работает, даже если сменить или снять броню, до перезагрузки - подскажите это ему надо отдельный скрипт написать?

 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор

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

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

 

Наверное вопрос даже так стоит: как получить размеры ноды? Она же не всегда 0.7 на 0.7.

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

Всем привет. Столкнулся с такой проблемой - двери как-то странно работают. Похоже, это связано с логикой, но я так и не понял, в чем именно проблема. Выглядит это так:

http://rghost.ru/6D4cy5cpN

Это с большинством новых дверей, хотя файлы логики одни и те же.

Особенно запущенно всё на Предбаннике, там вообще непонятно что происходит:

http://rghost.ru/6fhtHB9qY

При этом и закрытые, и открытые двери имеют надписи, хотя в спавне прописана только одна пара. Но закрытую пару никак не открыть, а открытая ведет себя как на первом скрине. Такая же ситуация со всеми дверьми предбанника, которые были до меня. Те, что поставил я - просто ведут себя как на первом скрине. На остальных локаж тоже встречаются подобные двери. Подскажите, что это такое, и как исправить? И дело точно не в моделях - точно такие же двери на других локах могут вести себя и корректно, и нет.

 

Мой музыкальный аддон для ОП-2 + Музыкальные флешки для плеера - для тех, кому не нравится оригинальная музыка. Более 150 новых треков различных направлений и исполнителей, каждый найдёт музыку на свой вкус. Апдейт 1.1 от 30.03.2015 - в плеер добавлены записи реальных радиостанций + наиболее подходящие миксы. Торрент.
Пак измененных локаций из ОГСЕ 0.6.9.3 для ОП-2. Скачать можно здесь.

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

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

Сталкер - наше всё!

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

@AndrewMor, дело не в дирекции, двери в сдк расставлял. Логика стандартная:

[logic]


active = ph_door@close

[ph_door@close]
locked = false
closed = true
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop
on_use = ph_door@open
hit_on_bone = 1|ph_door@free|2|ph_door@free

[ph_door@open]
locked = false
closed = false
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop
on_use = ph_door@close
hit_on_bone = 1|ph_door@free|2|ph_door@free

[ph_door@free]
locked = false
closed = true
no_force = true
on_use = ph_door@open

 

[logic]
active = ph_door@close

[ph_door@close]
locked = false
closed = true
snd_open_start = wood_large_open
snd_close_start = wood_large_close_start
snd_close_stop = wood_large_close_stop
on_use = ph_door@open
hit_on_bone = 1|ph_door@free|2|ph_door@free

[ph_door@open]
locked = false
closed = false
snd_open_start = wood_large_open
snd_close_start = wood_large_close_start
snd_close_stop = wood_large_close_stop
on_use = ph_door@close
hit_on_bone = 1|ph_door@free|2|ph_door@free

[ph_door@free]
locked = false
closed = true
no_force = true
on_use = ph_door@open

 

 

Мой музыкальный аддон для ОП-2 + Музыкальные флешки для плеера - для тех, кому не нравится оригинальная музыка. Более 150 новых треков различных направлений и исполнителей, каждый найдёт музыку на свой вкус. Апдейт 1.1 от 30.03.2015 - в плеер добавлены записи реальных радиостанций + наиболее подходящие миксы. Торрент.
Пак измененных локаций из ОГСЕ 0.6.9.3 для ОП-2. Скачать можно здесь.

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

V92, а зачем тебе сия строка "hit_on_bone = 1|ph_door@free|2|ph_door@free"?

Вот моя логика, все отлично работает:

 

[logic]
аctive = ph_door@locked

[ph_door@locked]
closed = true
locked = true
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop
on_use = ph_door@unlocked


[ph_door@unlocked]
closed = false
locked = true
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop
on_use = ph_door@locked

Сталкер - наше всё!

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

 

 

а зачем тебе сия строка

А без понятия, это стандартная логика двери из оригинала еще. Я там ничего не правил, только путь до нее прописал в спавне. Попробую твою, вдруг и прокатит.

 

Мой музыкальный аддон для ОП-2 + Музыкальные флешки для плеера - для тех, кому не нравится оригинальная музыка. Более 150 новых треков различных направлений и исполнителей, каждый найдёт музыку на свой вкус. Апдейт 1.1 от 30.03.2015 - в плеер добавлены записи реальных радиостанций + наиболее подходящие миксы. Торрент.
Пак измененных локаций из ОГСЕ 0.6.9.3 для ОП-2. Скачать можно здесь.

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

А мы можем в открытом через ini_file файле, скриптово обнаружить инклюд?

речь идет о том чтобы из игры построить таблицу вида

local opened_file = {
    section1 = {line_1, line_2, ..., line_n},
    section2 = {...},
    included_file = {
        section = {...},
        included_file = {...}
    }
}

Известных мне методов для такого не хватит, section_exist вообще как для самого открытого файла, так и для всех вложенных в него, работает.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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, нет, нельзя. Инклудов нет даже в движке, они убираются прямо при загрузке конфигов.
Ссылка на комментарий

А будут ли какие непредвиденные последствия, если методы биндера, являющиеся колбеками движковых событий, будет дергать не только движок?

Допустим я получил объект биндера актора, и дернул у него actor_binder:on_item_take (obj), передав ему (методу) некий итем. но не давая этот итем актору на самом деле.

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


Ну неужели никто не пробовал, "прикинуться движком", для биндера?

Я вот попробовал уже. И пока это, полет нормальный.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

В самом деле ничего, просто на всякий случай спросил.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

 

А мы можем в открытом через ini_file файле, скриптово обнаружить инклюд? речь идет о том чтобы из игры построить таблицу
И по этой же теме цитата из ковырялки

 

Можно ли при таком описании узнать что item* наследуются от std_item?
Стандартных способов конечно нет, но если бы мне это нужно было, то я бы распарсил все конфиги с помощью io и "пар(с)ился" бы.
Это заняло бы это несколько секунд при загрузке (текста ведь не мало) и 3-4 Мб памяти. Но если очень нужно, то можно пережить.
Изменено пользователем Nazgool
Ссылка на комментарий

Здравствуйте ВАМ. Есть скрипт рабочий. Написан  по урокам скриптования. Кто может сделать Замечания и Советы? Прошу отписатся о том как можно улучшить.

function ceck_medkits()
if db.actor:object("medkit") ~= nil then
local news_text = "%c[155,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,160,160,160] Принимаю медицинскую аптечку. %c[default]"
db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000)
db.actor:eat(db.actor:object("medkit"))
elseif db.actor:object("medkit_army") ~= nil then
local news_text = "%c[155,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,160,160,160] Принимаю армейскую аптечку. %c[default]"
db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000)
db.actor:eat(db.actor:object("medkit_army"))
elseif db.actor:object("medkit_scientic") ~= nil then
local news_text = "%c[155,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,160,160,160] Принимаю научную аптечку. %c[default]"
db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000)
db.actor:eat(db.actor:object("medkit_scientic"))
elseif db.actor:object("medkit") == nil and
db.actor:object("medkit_army") == nil and
db.actor:object("medkit_scientic") == nil then
med.mcomplex_open()
end
end



Очевидно - понять, как он работает, и что делает, и выбросить лишнее.
А при постах сюда - использовать кнопку "код". dc

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

Одна голова хорошо, а две лучше. А вот три, это уже змей Горыныч.

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

@nego

Можно так

 

local medkits = {
    {'medkit'         , 'медицинскую'},
    {'medkit_army'    , 'армейскую'  },
    {'medkit_scientic', 'научную'    },
}
function ceck_medkits()
    local actor = db.actor
    for i = 1, #medkits do
        local medkit = actor:object(medkits[i][1])
        if medkit then
            local news_text = "%c[155,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,160,160,160] Принимаю "..medkits[i][2].." аптечку. %c[default]"
            actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000)
            actor:eat(medkit)
            return
        end
    end
    med.mcomplex_open()
end

 

Или так

 

function ceck_medkits()
    local actor = db.actor
    local medkit = actor:object('medkit') or actor:object('medkit_army') or actor:object('medkit_scientic')
    if medkit then
        local section = medkit:section()
        local what = (section == 'medkit')          and 'медицинскую' or
                     (section == 'medkit_army')     and 'армейскую'   or
                     (section == 'medkit_scientic') and 'научную'
        local news_text = "%c[155,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,160,160,160] Принимаю "..what.." аптечку. %c[default]"
        actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000)
        actor:eat(medkit)
        return
    end
    med.mcomplex_open()
end

 

В принципе вариантов не мало.

 

Замечания :

 

1. Взять любое из условий. Например если у ГГ есть медицинская аптечка, то 4 раза
   производится обращение к глобальным данным "db".
   Правильнее кешировать эту глобальную "db" в локальной переменной.
   local actor = db.actor
 
2. Если снова взять это же условие, то происходит два раза получение одного и того же объекта
    db.actor:object("medkit")
    ...
    db.actor:eat(db.actor:object("medkit"))
    Напрасная трата процессорного времени. Достаточно получить один раз и потом использовать
    local medkit = actor:object(medkits[1])
    ...
    actor:eat(medkit)
 
3. В каждом из условий объявлена переменная
   local news_text = ...
   Компилируется каждая из трех строк. Они отличаются одним словом. Напрасная трата памяти.
   Есть возможность съэкономить.
   local news_text = ...  ..medkits[2]..  ...
 
4. Последние проверки лишние
    elseif db.actor:object("medkit") == nil and
        db.actor:object("medkit_army") == nil and
        db.actor:object("medkit_scientic") == nil then
    Если ни одно из условий выше не сработает, то очевидно что аптечек нет.
Изменено пользователем Nazgool
  • Нравится 2
  • Согласен 1
  • Полезно 1
Ссылка на комментарий

Состояние заклиненности оружия, обнаруживается ли по изменению какого-нибудь ключа в его нетпакете? вообще, как на стороне скриптов узнать о том что оружие заклинило.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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, смотри свойство нет-пакета weapon_state. Если оружие заклинило, будет иметь значение 7.

Свойство есть и в стандартной, и в update-части.

Изменено пользователем Kirgudu
  • Спасибо 2
Ссылка на комментарий
@Nazgool,соглашусь с тобой насчёт local *** = bla, bla, bla. А вот насчёт текстов и иконок, мне кажется было бы лучше сделать через xml'ку.

svarog2741.gif

 

НС - шлак, солянки - шлак.

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

Всем здравия! Возник вопрос, спавню скриптом итем и хочу поставить на него метку, но не отлавливается его id, где я ошибся?

local taynik_tbl = {"rykzak", "konteiner", "yashik"}


local taynik = taynik_tbl[math.random(#taynik_tbl)]
local taynik_id = taynik.id
alife():create(taynik, vector():set(-660.22509765625,19.935060501099,72.809051513672), 125131, 314)
level.map_add_object_spot_ser(taynik_id, "ui_pda2_actor_box_location" , "DEBAG")

 

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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