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

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

Хотел еще узнать что такое 'coroutine', в _g вижу его использование, но не вижу где он сам.

 

Посмотрите еще, я правильно понял создание глобальной функции?

 

_G.has_actor_pda = function f_has_actor_pda() return db.actor:object("device_pda") end

 

И теперь я просто могу вызывать has_actor_pda()?

 

А еще как в таких функциях передавать параметры, или они будут просто наследоваться из f_has_actor_pda()?

 

ins33, создай простой таймер и сохрани его в пстор(что бы отсчет не начинался сначала при сейв/лоаде).

Ссылка на комментарий
ins33, тогда можно посоветовать вот что Изменено пользователем panzyuza
Ссылка на комментарий

ins33, и Ko - имеются и ФАКи и темы по ковыряниям, в которых самое место для подобных вопросов "как сделать" и пояснениям.

 

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

Struck, если всерьез заинтересовался coroutine - почитай топик "Язык Lua. Общие вопросы программирования"? в котором достаточно уже разжевано и с примерами. Хотя ... скорее всего это тебе пока не пригодиться.

 

И ... твой вариант скорее всего не будет работать, т.к.:

_G.has_actor_pda = function f_has_actor_pda() return db.actor:object("device_pda") end

требует существования и доступа к указанной в теле f_has_actor_pda.

Думается что тебе нужно это:

]_G.has_actor_pda = function() return db.actor:object("device_pda") end

- тогда все будет работать без доп.условий/существований.

Ну а если требуются аргумены, то вот тебе пример, по которому (и мануалу Lua) сам дальше разбирайся:

]_G.has_actor_pda = function(section) return db.actor:object(section) end

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

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

Но появилась небольшая проблемка. Решить ее и кульминация, попрут скрипты.

Есть ли функция, метод, которая определяет, что данный объект НЕ находится ни у кого в инвентаре\ящике, а просто валяется на улице?

 

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

 

function NotInInventory(Art)
    for k,v in pairs(StkOnline) do
        local Stk = level.object_by_id(k)
        local InInv =  Stk:object(Art) -- есть ли арт
        if InInv then
            return false -- есть
        end
    end
return true -- нема
end

 

 

Просто хочется эстетичнее и "правильнее"...

 

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

thumb.png

thumb.png

 

К показанному могу сказать, что в новостях сообщается о наличии\отсутствии арта в аномалии, вероятность того, что нпс словит арт - зависит от его детектора и ранга. Ну и рандома -новичкам иногда везет )

 

 

Artos, Shadows спасибо.

 

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

Что-то кончается, что-то начинается...

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

(не очень сложно подсмотреть в скриптах игры/модов)

 

oNPC = oItem:parent() --/ владелец предмета (для клиентского об'екта)

idNPC = soItem.parent_id --/ идентификатор владельца (для серверного об'екта), 65535 - безхозный (нет влаельца).

 

Владельцем может быть и ящик.

Однако, тут (с парентами) все же порой бываю нюансы, хотя для новостных скриптов иль подобного - не критично.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Есть какой-нибудь рациональный способ получения всех 'НЕтайниковых' ящиков. Например того, что на Кордоне в лагере новичков около костра.

 

Делаю последнее предупреждение по оффтопику. Топик имеет конткретную тематику "Скриптование" и в разделе "Школа"!

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

Лень самому искать, сравнивать и т.п. - GoTO в ковырялки ... --/Artos

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

Имеем: биндер аномалий, с колбеками net_spawn и net_destroy. Версия игры ТЧ 1.0004.

А другие колбеки аномалиям доступны? и где можно узнать какие.

конкретнее интересует колбек на попадание актора/нпс/монстра/физ/объекта/болта в шейп аномалии.

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

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

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

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

При этом:

1) в модуле нет локальных переменных или функций с именем "log".

2) код синтаксически верен и работает, функции модуля вызываются, работают и возвращают значения

3) Вызовы log("сообщение") из других модулей стабильно работают, а из данного - наотрез.

4) Замена log на старый недобрый get_console():execute("сообщение") приводит к тому что все работает и сообщения записываются в лог как неопознанные команды.

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

Ссылка на комментарий
Есть какой-нибудь рациональный способ получения всех 'НЕтайниковых' ящиков. Например того, что на Кордоне в лагере новичков около костра.

Попытаюсь ответить, но в форме вопроса, т.к. то-же хотел-бы получить информацию по этому вопросу.

Похоже, что все НЕтайниковые ящики (и не только визуально ящики) не имеют прописанной им логики, а обычно "находятся под респавнерами" (взял в кавычки, т.к. не уверен в правильности формулировки). Тайники же обычно имеют логику, привязанную к ним через all.spawn или скрипты\нет-пакеты, через которую они и заполняются лутом в нужный момент (обычно по факту получения актором(ГГ) информации о них).

Знающие точную информацию - подтвердите или исправьте\дополните, плиз.

Ну а собственно насчет вопроса, если будет известен точный критерий, как определить, ящик тайниковый\НЕтайниковый - дальше уже проще плясать будет от печки.

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

Если это ТЧ/ЧН, то смотрите treasure_manager. Там всё есть, в т.ч. и таблица информации о всех тайниках, в т.ч. и о контейнерах тайников.

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

В ЗП вообще тайники не в ящиках, если мне память не изменяет... так что по ТЧ/ЧН можно наверно просто взять любой ящик и проверить есть ли он в treasure_manager-e. Если нету - значит не тайниковый.

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

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

А не проще прописать логику, и в секцию on_deth - поставить действие? Это разовый вызов. А проверку у вас на всю игру... и таро уже такие вещи - прорверки 1 объекта на апдейт лепить.

Что-то кончается, что-то начинается...

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

Как правильно отследить, что актор находиться в режиме прицеливания? Наверно так или нет?

local pre_fov = 0
local fov = math.floor((device().fov+0.02)*10)  
if fov < 58*10 and pre_fov > fov then

Старый код, или может покороче так if device().fov<=45 или я что-то путаю?

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

Да вроде ничего не путаешь все правильно

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

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

Может я что то не понимаю, но у вас то условие никогда не пройдет. У вас pre_fov всегда равно 0, а 0 никогда не может быть больше положительного числа

Freedom

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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