Zander_driver 10 166 Опубликовано 7 Февраля 2021 Поделиться Опубликовано 7 Февраля 2021 14 минут назад, Colder сказал(а): ["part_lighter"] = 2, 14 минут назад, Colder сказал(а): но они спавняться все по 2шт. Ну и кто же это написал? Не я точно. У тебя вообще в коде какая-то каша, все перемешано без смысла. И крайний раз запускал ты его не в таком 17 минут назад, Colder сказал(а): alife():create(db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) виде. Потому что тут даже секции итема нет, чего спавнить. Такой вызов, приведет к движковому вылету с руганью на недостаток аргументов и/или не соответствующие типы аргументов. 18 минут назад, Colder сказал(а): мне нужно рандомное количество Используй math.random Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Colder 12 Опубликовано 7 Февраля 2021 Поделиться Опубликовано 7 Февраля 2021 С тел написал для примера. Но они спавняться в определённом количестве а мне нужно рандомно. Ссылка на комментарий
Это популярное сообщение. Zander_driver 10 166 Опубликовано 7 Февраля 2021 Это популярное сообщение. Поделиться Опубликовано 7 Февраля 2021 (изменено) local parts = { 'секция_деталей', 'еще_секция_деталей', ... } function spawn_parts(nums) -- nums - сколько всего запчастей спавнить. local t = {} local i = 0 while i < nums do local item = parts[math.random(#parts)] if t[item] then t[item] = t[item] + 1 else t[item] = 1 end alife():create(item, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) i = i + 1 end local text = 'Получено предметов:' for sec, count in pairs(t) do text = text .. "\\n" .. game.translate_string(system_ini():r_string(sec, "inv_name")) if count > 1 then text = text .. string.format(" x %i", count) end end send_tip_devices(text) end @Colder держи. готовый, рабочий вариант. А вообще, грустно. Что хорошая тема в стол заказов превратилась. Тебе подсказок ранее выданных, почему не хватило? Может я что не так говорю... Изменено 7 Февраля 2021 пользователем Zander_driver 1 6 2 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Colder 12 Опубликовано 7 Февраля 2021 Поделиться Опубликовано 7 Февраля 2021 Нет ты профи! Это просто я велосипед! Все работает норм! Ссылка на комментарий
ARTLantist 12 Опубликовано 8 Февраля 2021 Поделиться Опубликовано 8 Февраля 2021 Можно ли как-то изменить параметры параметры артефакта через скрипт? Если да, то как? И как отследить, что артефакт надет на пояс? Ссылка на комментарий
Zander_driver 10 166 Опубликовано 8 Февраля 2021 Поделиться Опубликовано 8 Февраля 2021 Только что, ARTLantist сказал(а): изменить параметры параметры артефакта через скрипт? На оригинальном движке - никак. Там параметры артефакта читаются из конфига. Можно конечно наплодить кучу секций с разными свойствами, и скриптом менять одни на другие, но, это такое себе костыльное рукоблудие) На том, что в подписи моей, в принципе можно. Движок модифицирован, и такое позволяет. На некоторых других модифицированных движках наверное тоже можно такие возможности найти. Только что, ARTLantist сказал(а): отследить, что артефакт надет на пояс В оригинале был некий замудреный костыльно-скриптовый алгоритм для этого, и сейчас его не вспомню уже. В модифицированных, опять же, движках, такая возможность есть наверное практически везде. Но, как ей пользоваться, зависит от конкретного движка. В OGSR к примеру, есть метод db.actor:iterate_belt Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Colder 12 Опубликовано 9 Февраля 2021 Поделиться Опубликовано 9 Февраля 2021 Подскажите функцию на проверку итемов у актора типо: local бла = { ”бла” = true, ”бла” = true, ”бла” = true } ... Нескольких Ссылка на комментарий
Kirgudu 957 Опубликовано 9 Февраля 2021 Поделиться Опубликовано 9 Февраля 2021 45 минут назад, Colder сказал(а): Подскажите функцию for k,v in pairs(бла) do if v == true then db.actor:give_game_news('бла-бла', 'бла-бла-бла', "ui_iconsTotal_PDA", 0, 3000) end end P.S.: задавай свои вопросы в человекопонятной форме. 1 2 Инструмент Ссылка на комментарий
WinCap 292 Опубликовано 9 Февраля 2021 Поделиться Опубликовано 9 Февраля 2021 3 часа назад, Colder сказал(а): Подскажите функцию на проверку итемов у актора Как-то так: Скрытый текст local need_item = { 'medkit', 'medkit_army', 'medkit_scientic' } function actor_has_one_item() for k,v in pairs(need_item) do if db.actor:object(v) ~= nil then return true end end return false end function actor_has_all_item() for k,v in pairs(need_item) do if db.actor:object(v) == nil then return false end end return true end P.S. Стол заказов это конечно очень хорошо... Но хотя бы иногда, перед тем как задать вопрос, заглядывайте в "xr_conditions.script" и "xr_effects.script". 4 S.T.A.L.K.E.R. CoP Objects (upd 10.04.24) Ссылка на комментарий
Colder 12 Опубликовано 9 Февраля 2021 Поделиться Опубликовано 9 Февраля 2021 Спасибо но уже сделал Ссылка на комментарий
h0N0r 278 Опубликовано 9 Февраля 2021 Поделиться Опубликовано 9 Февраля 2021 Может и мне подскажете, вот есть рабочий способ на удаление объекта: local obj = alife():object("esc_af_medusa12345") -- после спавна, провалилась под террейн if obj ~= nil then alife():release(obj, true) end и как мне применить (любопытства ради) на этот объект нек.эффекты типа: local ph = obj:get_physics_shell() -- пробовал, вылет по nil (подозреваю, что пытаюсь применить методы клиент.объектов к серверным) if (ph) then ph:apply_force(0,10000,0) -- пнуть по у вверх end или уж совсем дикие методы: function drop_item_and_teleport(game_object*, vector); function transfer_item(game_object*, game_object*); В обоих случаях, методы вызываются от кого-то, как пример: актор, владеющий таким-то предметом, но когда итем бесхозный, то его парент 65535, т.е. владелец земля, и от неё как-то сделать вызовы. https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
mole venomous 2 995 Опубликовано 9 Февраля 2021 Поделиться Опубликовано 9 Февраля 2021 @h0N0r Может, поможет такая проверка? if (obj.parent_id and obj.parent_id == 65535) 1 Здесь могла быть ваша реклама. Ссылка на комментарий
Kirgudu 957 Опубликовано 9 Февраля 2021 Поделиться Опубликовано 9 Февраля 2021 @h0N0r все перечисленные методы действительно клиентские, а в переменной obj у тебя серверный объект. Если хочешь получить клиентский, следует действовать например так: local cobj = level.object_by_id(obj.id) if cobj then ... end и далее по написанному. Однако зачем делать это после удаления, если я правильно тебя понял? Ты уж определись, что необходимо - удалить объект или придать ему ускорение. 1 1 1 Инструмент Ссылка на комментарий
h0N0r 278 Опубликовано 10 Февраля 2021 Поделиться Опубликовано 10 Февраля 2021 @Kirgudu пример с удалением - это, то что работает. В общем, запуск арта в атмосферу успешен: -- вызовы из главного меню if dik == DIK_keys.DIK_F4 then if (level.present() and db.actor ~= nil and db.actor:alive()) then -- ########################################## local fail_objects_tbl = { "esc_af_medusa12345", } for k, v in pairs(fail_objects_tbl) do local s_obj = alife():object(v) if s_obj then local c_obj = level.object_by_id(s_obj.id) local ph = c_obj:get_physics_shell() if (ph) then -- >100 метров по у ph:apply_force(0,500000,0) end end end -- ########################################## end end 1 2 https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
DibokDibokin 1 Опубликовано 10 Февраля 2021 Поделиться Опубликовано 10 Февраля 2021 Здравствуйте. Подскажите, как можно "телепортировать" определенные вещи, например, под ноги ГГ? Речь про артефакты, не хочется их удалять. Есть ли способы? Ссылка на комментарий
AndrewMor 517 Опубликовано 11 Февраля 2021 Поделиться Опубликовано 11 Февраля 2021 @DibokDibokin Удалить и заспавнить аналогичный предмет около ГГ. Ну или сразу в рюкзак 1 Сталкер - наше всё! Ссылка на комментарий
WinCap 292 Опубликовано 11 Февраля 2021 Поделиться Опубликовано 11 Февраля 2021 16 часов назад, DibokDibokin сказал(а): как можно "телепортировать" определенные вещи, например, под ноги ГГ? Если имеется ввиду из инвентаря то: db.actor:drop_item(item) db.actor:drop_item_and_teleport(item, vector) S.T.A.L.K.E.R. CoP Objects (upd 10.04.24) Ссылка на комментарий
AndrewMor 517 Опубликовано 13 Февраля 2021 Поделиться Опубликовано 13 Февраля 2021 А в какой ситуации нужно перемещать ближе к ГГ? Если как в оригинале на Агро, где за воротами арты лежали, но не взять их... А вообще забавно: если на апдейт повесить функцию, которая проверяет, нет ли в радиусе 3 метров (5, 50 и т.д.) артов, и если есть, их удаляет, а аналогичные спавнит в рюкзак. Прямо дистанционное собирательство. 1 Сталкер - наше всё! Ссылка на комментарий
AndreySol 215 Опубликовано 13 Февраля 2021 Поделиться Опубликовано 13 Февраля 2021 5 часов назад, AndrewMor сказал(а): Прямо дистанционное собирательство. А в чем смысл ? Может тогда и играть за игрока, типа в мультик превратить игру... Ссылка на комментарий
ted.80 223 Опубликовано 13 Февраля 2021 Поделиться Опубликовано 13 Февраля 2021 7 часов назад, AndrewMor сказал(а): Прямо дистанционное собирательство. Таки давно уже есть, Гравиган v2.0, удобнейшая вещь скажу я вам, для извлечения артов и трупов нпс - из труднодоступных мест пользуйтесь 1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти