dsh 3 824 Опубликовано 29 Июля 2018 Поделиться Опубликовано 29 Июля 2018 @Graff46, с оригинальным движком скорее всего никак. Там одни места берут имя из серверного объекта и его теоретически можно поменять через нетпакет, а другие места берут имя из клиентской части и туда доступа вроде нет. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
HellRatz 2 814 Опубликовано 30 Июля 2018 Поделиться Опубликовано 30 Июля 2018 Никто не подкинет функцию скриптового спавна по story id (ТЧ, если важно)? Искал и не нашел подобных упоминаний такой функции нигде. Может где-то в модах есть, но не знаю где. Беда в том, что скриптовым спавном, в отличие от олл.спауна, к имени объекта добавляются еще цифры и некоторые функции перестают работать т.к не могут обработать это имя. Может быть спавн по "сид-у", а не имени секции, решит эту проблему? GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий
dsh 3 824 Опубликовано 30 Июля 2018 Поделиться Опубликовано 30 Июля 2018 @HellRatz, ты вот это имеешь ввиду local spawn_id = alife():spawn_id( story_ids.yantar_chernomor ) sobj = alife():create( spawn_id ) или что-то другое? dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
HellRatz 2 814 Опубликовано 30 Июля 2018 Поделиться Опубликовано 30 Июля 2018 7 минут назад, dsh сказал: ты вот это имеешь ввиду Возможно. Надо попробовать. Сейчас проверю. @dsh, нет, не совсем. Это спавн уже зашитого объекта в спаун (только заранее удаленного), я так понимаю? А мне надо по координатам без участия олл.спауна. GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий
dsh 3 824 Опубликовано 30 Июля 2018 Поделиться Опубликовано 30 Июля 2018 @HellRatz, каким макаром? story_id имеет отношение к уже существующему объекту, либо в игровом мире, либо в all.spawn. Т.ч. что бы обратиться по story_id, объект должен уже быть в одном из этих мест или в обоих. 5 minutes ago, HellRatz said: А мне надо по координатам. Ну, можно сначала переспаунить из all.spawn, как я показал, а потом телепортировать на нужные координаты, если у тебя хотя бы xray extensions. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
buffy 4 Опубликовано 30 Июля 2018 Поделиться Опубликовано 30 Июля 2018 (изменено) @dsh, может ему подойдет условие спавна [spawner]? Изменено 30 Июля 2018 пользователем buffy Ссылка на комментарий
HellRatz 2 814 Опубликовано 30 Июля 2018 Поделиться Опубликовано 30 Июля 2018 4 минуты назад, dsh сказал: Т.ч. что бы обратиться по story_id, объект должен уже быть в одном из этих мест или в обоих. В общем суть. Есть, допустим, npc_1, заспавненный через олл.спаун, которого обрабатывает скрипт. Именно по этому имени. Если заспавнить его через скрипт, то его имя внутри игры уже будет не npc_1, а, какой-нибудь npc_1_20945, следовательно скрипт уже не может подхватить этого НПСа с таким именем. То есть я так понимаю, заспавнить объект по стори_айди, без его предварительного вшивания в спавн, - не реально? Тогда плохо. Ладно. @dsh, напишу в личку тогда в чем суть проблемы, дабы тут не разводить? Может быть глянешь мельком, поможешь. А сей вопрос тогда отменяется. GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий
Expropriator 2 118 Опубликовано 30 Июля 2018 Поделиться Опубликовано 30 Июля 2018 @HellRatz, если грамотно написать пакет для спаунящегося, то будет всё работать и со спауном из скрипта. За нпс, не знаю, а вот с техникой проблем нет. Хотя, если спавн нпс сделать персональным на уровне корня класса, то тоже должно проканать. Ссылка на комментарий
Expropriator 2 118 Опубликовано 30 Июля 2018 Поделиться Опубликовано 30 Июля 2018 Например (ЗП) спавн техники для скрипта. Как в ТЧ будет работать незнаю... [zat_boat_car_3] GroupControlSection = spawn_group discovery_dependency = $spawn = "vehicles\zat_boat_car_3" cform = skeleton class = HELCAR visual = physics\vehicles\boat\boat_car.ogf actor_visual = physics\vehicles\boat\boat_car.ogf cost = 250000 ef_equipment_type = 3 ph_mass = 10000 wallmark_section = explosion_marks script_binding = bind_physic_object_helcar.init story_id = zat_boat_car_3 Например как в ЗП спавнят Сидоровича-нпса скриптом: [sidor]:m_trader $spawn = "respawn\esc_trader_test" character_profile = obj_trader spec_rank = master community = trader story_id = obj_trader custom_data = scripts\escape\esc_trader.ltx Ссылка на комментарий
Гость Опубликовано 1 Августа 2018 Поделиться Опубликовано 1 Августа 2018 (изменено) Всем добрый день! Такой вопрос: может ли ЛУА получать текстовые значения из конфига .xml. Например, в коде у меня есть надпись " RU", а в xml файле <string id="st_currency"> <text>RU</text> </string> как получить эту самую ссылку из скрипта? Заранее признателен. Изменено 1 Августа 2018 пользователем Den “Angry Wolf” Koslov Ссылка на комментарий
buffy 4 Опубликовано 1 Августа 2018 Поделиться Опубликовано 1 Августа 2018 game.translate_string(key) Ссылка на комментарий
Гость Опубликовано 4 Августа 2018 Поделиться Опубликовано 4 Августа 2018 А есть ли возможность через скрипт удалять все объекты из инвентаря ГГ определенного класса, сразу одним махом? Кто-нибудь знает? Ссылка на комментарий
gam 117 Опубликовано 4 Августа 2018 Поделиться Опубликовано 4 Августа 2018 3 часа назад, Den “Angry Wolf” Koslov сказал: удалять все объекты из инвентаря ГГ определенного класса, сразу одним махом? Можно все что невозможно, Зона жеж... Как одна из кучи возможностей: db.actor:inventory_for_each(function(item) if item:section() == "секция_обжекта" then alife():release(item, true) end end) Ну или так: if db.actor:object("секция_обжекта") ~= nil then local obj = alife():object(db.actor:object("секция_обжекта"):id()) if obj then alife():release(obj) end end Вариации самих Разрабов можно отыскать в файле xr_effects.script для Арены хотя бы. Ну а если правильно описать зачем это Вам и для каких условий, то точно подскажут верное решение. А удалять по классу немного нелепо имхо - ибо один класс может содержать множество построенных на его настройках обжектов. 1 Ссылка на комментарий
Гость Опубликовано 4 Августа 2018 Поделиться Опубликовано 4 Августа 2018 10 часов назад, gam сказал: А удалять по классу немного нелепо имхо Спасибо большое за примеры кода. Дело в том, что я создаю новый класс через движок, специально для этой цели. Идея заключается в следующем. Хотел реализовать, что-то на подобии команды "удалить весь хлам в инвентаре" при этом хламу дать свой класс, чтобы не перечислять секции item'ов, так как мне нужно сделать так, чтобы остальные предметы снаряжения в рюкзаке оставались на своих местах. Хлам - это фишка геймплея.Так что я не совсем уверен если подойдут имена секций. По моему так скрипт будет игру сильнее нагружать ради проверки на весь хлам. Ссылка на комментарий
Graff46 598 Опубликовано 8 Августа 2018 Поделиться Опубликовано 8 Августа 2018 (изменено) 2 вопроса: 1. Можно-ли через скрипты получать\устанавливать опьянение ГГ в ТЧ с X-Ray extension 2. Почему не работает db.actor:set_actor_position(ya_old) Отсюда: Скрытый текст function effct() -- ЭТА ВЫЗЫВАЕТСЯ НИЖЕ! local npc = level_object_by_sid(926) local pos, dir = npc:position(), npc:direction() local v = vector():set(pos) v.x = pos.x + 3 * math.cos(dir:getH()) v.z = pos.z + 3 * math.cos(dir:getH()) db.actor:object('device_torch'):switch_torch(true) db.actor:set_actor_position(v) db.actor:set_actor_direction(-npc:position():sub(v):getH() ) end function pred_mon(act, npc) -- ВЫЗЫВАЕМАЯ Ф-ЦИЯ! function _off () -- ВЛОЖЕННАЯ Ф-ЦИЯ! ВЫЗЫВАЕТСЯ НИЖЕ! local npc = level_object_by_sid(926) db.actor:set_actor_position(ya_old) -- НЕ РАБОТАЕТ, НО ОШИБОК НЕ ВЫЗЫВАЕТ ya_old = nil switch_offline_id(npc:id()) end local a = db.storage[npc:id()].enemy if (a) and (a:section() == "dv_nom_x18_attack" or a:id() == 0) then _G.ya_old = vector():set(db.actor:position()) effct() -- ОНА ВВЕРХУ nt.timer(2000, _off) -- ТУТ ВЫЗЫВАЕТСЯ (ЧЕРЕЗ 2 СЕК) ВЛОЖЕННАЯ Ф-ЦИЯ return true end end Функция из таймера вызывается корректно (НПС в оффлайн переходит и таймер "проверенный"), но возвращаться ГГ на своё место ни как не хочет! Изменено 8 Августа 2018 пользователем Graff46 Дополнял Ссылка на комментарий
Overfirst 630 Опубликовано 8 Августа 2018 Поделиться Опубликовано 8 Августа 2018 (изменено) Это не нужно заворачивать в вектор: _G.ya_old = db.actor:position() Не? Изменено 8 Августа 2018 пользователем Overfirst Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Graff46 598 Опубликовано 8 Августа 2018 Поделиться Опубликовано 8 Августа 2018 @Overfirst На всякий случай. Таким способом создаём новый вектор с параметрами заданного, что бы после манипуляций с исходным векторам не получилось неожиданностей. В луа переменные хранят ссылки на объекты и если объект где-то изменился - то и значение переменной после этого тоже изменится, такая трабла с таблицами бывает бесит. Также смотри как тут, у разрабов, utils.vector_copy_by_val() Ссылка на комментарий
Shkiper2012 35 Опубликовано 13 Августа 2018 Поделиться Опубликовано 13 Августа 2018 (изменено) [ЗП, СоС] Как заставить нпс скриптом перезарядить оружие, которое держит в руках (с анимацией и прочим)? Смотрел как сделано у @Bak в AI Additions, но так до конца и не понял. Вроде используется такая штука, после кучи проверок: npc:set_item(object.aim_force_full1,wpn) Пытаюсь сделать по аналогии, типа так: Скрытый текст -- добавление недостающих команд для оружия if not object.aim_force_full1 then object.aim_ready1 = object.drop+1 -- eObjectActionAimReady1 = 12 object.aim_ready2 = object.aim_ready1+1 -- eObjectActionAimReady2 = 13 object.aim_force_full1 = object.aim_ready2+1 -- eObjectActionAimForceFull1 = 14 object.aim_force_full2 = object.aim_force_full1+1 -- eObjectActionAimForceFull2 = 15 end local target_obj = level.get_target_obj() local npc = target_obj local wpn = npc and npc:active_item() if npc and wpn then log("reloading wpn -- start --") -- 1 -- Либо так: -- -- npc:set_item( object.reload, wpn ) -- npc:set_item( object.reload1, wpn ) -- npc:set_item( object.reload2, wpn ) -- 2 -- или так: npc:set_item( object.aim_force_full1, wpn ) log("reloading wpn -- end --") end Ничего "не выходит" - нпс просто стоит "как ни в чем не бывало". Или парой строк скрипта не обойтись (нужно писать схему поведения, добавлять в планировщик и т.д.)? Изменено 13 Августа 2018 пользователем Shkiper2012 Адаптация мода "AtmosFear" для мода "Боевая Подготовка" v.2.0.2. Адаптация мода "Магазинное питание" для мода "Боевая Подготовка" v.2.0.2. Ссылка на комментарий
Гость Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 Возможно кому-то известно как динамически менять текстуру для модели оружия? Предположим есть 3 текстуры калаша: новый, ржавый и сильно ржавый в зависимости от состояния. Есть ли возможность как-то менять текстуру через скрипт? Ссылка на комментарий
Graff46 598 Опубликовано 14 Августа 2018 Поделиться Опубликовано 14 Августа 2018 @Den “Angry Wolf” Koslov Можно, на движковых правках. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти