AndreySol 215 Опубликовано 22 Марта 2019 Поделиться Опубликовано 22 Марта 2019 3 часа назад, Pug-Lover сказал: но всё равно не робит У меня спавн этой бочки на позиции актера просто приводит к смерти ГГ. Но бочка спавнится исправно... Ссылка на комментарий
Graff46 598 Опубликовано 22 Марта 2019 Поделиться Опубликовано 22 Марта 2019 (изменено) @Pug-Lover, Нужно секцию создать, смотрите system.ltx, в нем есть секция физического объекта, по аналогии делаете для бочки. И не спавните на позиции ГГ, нужно сделать смещение: local pos = db.actor:position() local lv, gv = db.actor:level_vertex_id(), db.actor:game_vertex_id() pos.x = pos.x + 3 alife():create("stalker", pos, lv, gv) Изменено 22 Марта 2019 пользователем Graff46 Ссылка на комментарий
h0N0r 325 Опубликовано 22 Марта 2019 Поделиться Опубликовано 22 Марта 2019 Все взрывные предметы в weapons.ltx, код выше для спавна рядом с гг, а если в инвентарь - у нужной секции can_take = true (иначе вылет) и так: alife():create("explosive_barrel", db.actor:position(), 0, 0, db.actor:id()) 3 часа назад, AndreySol сказал: У меня спавн этой бочки на позиции актера просто приводит к смерти ГГ. Но бочка спавнится исправно... http://funkyimg.com/i/2SBo9.jpg 1 https://sites.google.com/view/xray-sdk-0-4-smg Ссылка на комментарий
Pug-Lover 2 Опубликовано 23 Марта 2019 Поделиться Опубликовано 23 Марта 2019 У меня даже игра не запускается. Можете дать строчки, которые нужно в ui_main_menu.script засунуть и чтоб рабочие были, а то я тупой как бревно и непонимаю Ссылка на комментарий
_Gunslinger_ 0 Опубликовано 24 Марта 2019 Поделиться Опубликовано 24 Марта 2019 Как ражигать костёр (ТЧ) Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 24 Марта 2019 Поделиться Опубликовано 24 Марта 2019 (изменено) Здрасьте. Хочу добавить callback на событие "trade_start". Какие аргументы надо указывать в скобках? Указал (actor, npc), привязал тестовое сообщение – никакой реакции. [bind_stalker.script] function actor_binder:net_destroy() … self.object:set_callback(callback.trade_start, nil) … function actor_binder:reinit() … self.object:set_callback(callback.trade_start, self.trade_start, self) … function actor_binder:trade_start(actor, npc) news_manager.send_tip(db.actor, "start") end Изменено 24 Марта 2019 пользователем Norman Eisenherz Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
lordmuzer 743 Опубликовано 24 Марта 2019 Поделиться Опубликовано 24 Марта 2019 @Norman Eisenherz платформа какая, ТЧ? trade_start это callback не актора, а торговца. который в свою очередь в ТЧ является монстром. Пример подписки есть в оригинале ТЧ в mob_trade.script Параметров у него вообще нету вроде бы. 1 Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 24 Марта 2019 Поделиться Опубликовано 24 Марта 2019 @lordmuzer Да, ТЧ. Кто-то отписывал на форуме (может, не на этом?), что смог привязать этот callback и к актеру, но дальше "буду пробовать" сообщений не было. В файле "mob_trade.script" смотреть особо не на что: привязка сделана, действия нет. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
lordmuzer 743 Опубликовано 24 Марта 2019 Поделиться Опубликовано 24 Марта 2019 Скриптами его туда нельзя привязать. Просто потому что для актора такой callback движок не вызывает. Только для класса торговца. А что сделать то нужно? в mob_trade простой пример как для конкретного торговца отследить что с ним начал торговать ГГ. Собственно поскольку ГГ один из этого же можно сделать вывод, что в этот момент и ГГ начал торговать тоже. 1 Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 25 Марта 2019 Поделиться Опубликовано 25 Марта 2019 Пытаюсь без движковых правок подступиться к вопросу исключения экипированных предметов из окна торговли. Первая стадия – отслеживание события. Добавил тестовое сообщение в функцию "mob_trade:start_trade(zone, obj)" файла [mob_trade.script] – тоже никакой реакции на начало торговли. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
lordmuzer 743 Опубликовано 25 Марта 2019 Поделиться Опубликовано 25 Марта 2019 Что то не так делаешь. Тот же файл, добавил вывод в лог. Стою у Сидоровича. Начал торговать https://i.imgur.com/6Kc5hsp.jpg Закончил торговать https://i.imgur.com/OFHESGf.jpg НО, Сидорович чистокровный торговец, то есть монстр и для него работает схема mob_trade Для обычных НПЦ тоже работать не будет так. Ссылка на комментарий
Баба ЯГА 7 Опубликовано 25 Марта 2019 Поделиться Опубликовано 25 Марта 2019 @Norman Eisenherz, Сам давно хотел такое сделать, да всё руки не доходят, программер я не особо, можно сказать, только учусь... Вот, начал когда-то делать для пистолетного слота, да так и не доделал ... Только поверхностно - но всё работает, тестировал на Солянке 2010 от MAV(03.09.2010 + ООП). При открытии торговли ствол удаляется. при закрытии - возвращается в инвентарь, ну или в слот, если тот пустой. Итак: 1) при открытии окна торговли ГГ получает поршень -> "ui_trade", а при закрытии окна торговли, соответственно, получает поршень: "ui_trade_hide", следовательно, по этим условиям и будем отлавливать саму торговлю. Вот код для пистолетного слота, по аналогии можно сделать и для остальных слотов. Скрытый текст function hide_active_slot() if db.actor:has_info("ui_trade") then --' если окно торговли открыто local slot_1 = db.actor:item_in_slot(1) --' то проверим 1-ый слот, вернёт -> type=userdata(он же - объект), если что-то есть в слоте if slot_1 ~= nil then --' если не NIL, значит в слоте что-то есть local sec = slot_1:section() --' получили имя секции пистоля, чтобы потом знать, что именно спавнить обратно amk.save_variable("slot_1_hide", sec) --' сохранили куда-нить (тут куча вариантов) alife():release(alife():object(slot_1:id()), true) --' удаляем пистоль из первого слота, при торговле отображаться, естественно, не будет, потому как мы его вообще удалили :) --[[-- по честному, то тут ещё надо: получать состояние пистоля, количество патронов в ём, и объязательно проверять не квестовый ли это ствол, чтобы не получилось, что какая-то ветка игры встанет из-за удаления-спавна предметов (в этом не уверен, ну, так, на всякий случай я бы сделал кучу проверок, если бы умел ...) --]]-- end elseif db.actor:has_info("ui_trade_hide") then --' если закрыли окно торговли, то вернём обртно ГГ всё, что мы у него насильно отобрали local spn = amk.load_variable("slot_1_hide", "ukrali") -- загрузили переменную if spn ~= "ukrali" then --' если перед этим был ствол в слоте amk.spawn_item_in_inv(spn, db.actor) --' вернули пестоль в инвентарь amk.del_variable("slot_1_hide") --' почистили переменную (а вот это - объязательно, чтобы не плодить кучу хлама) end end end По-поводу возврата ствола обратно, тоже нужно делать проверку на то, не вставил ли ГГ уже что-то в слот, и если вставил, то закидывать в инвентарь то что он там навставлял, а на место ставить тот ствол, что мы убирали, ну, чтобы всё красиво было. Код кидаешь в виде функции куда-нить в свой скрипт, ну, например в my_func.script, а вызов функции закидываешь в bind_stalker.script, вот сюда в конец -> actor_binder:info_callback(npc, info_id) my_func.hide_active_slot() Классная идея, да только знаний и времени маловато будет. Да! Тоже-самое можно сделать и для окна тайников, там при открытии тайника поршень = "ui_car_body", а при закрытии = "ui_car_body_hide". В общем, если что сделаешь, выкладывай, мне такое тоже надо. ДА! Новая игра - не нужна, тож проверено. Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 25 Марта 2019 Поделиться Опубликовано 25 Марта 2019 @Баба ЯГА Тоже думал про вариант с поршнями, но с промежуточным спавном коробки или с использованием синего ящика рядом с торговцем (образец в скрипте телепорта на арену). Надо поковырять, но будет это нескоро – пока другой мод в планах. Что касается чтения типа и количества заряженных патронов, а также наличия обвеса, надо разбирать нетпакет оружия. naxac выкладывал примерчик; оригинальное сообщение найти не могу, поэтому, с позволения автора, приведу код здесь: Spoiler function read_ammo(wpn) if not wpn then return nil end local sobj = alife():object(wpn:id()) if not sobj then return nil end local pk = net_packet() sobj:STATE_Write(pk) pk:r_seek(pk:w_tell() - 1) local ammo_type = pk:r_u8() local ammo = {} local str = system_ini():r_string(wpn:section(), "ammo_class") for s in string.gfind(str, "[%w%-%._]+") do ammo[#ammo+1] = s end return ammo[ammo_type+1] end шаблон для поиска текста "[%w%-%._]+" […] класс на основе набора символов: %w буквы и цифры %- дефисы (без "%" будет модификатор поиска "кратчайшее совпадение") %. точки (без "%" будет модификатор поиска "любой символ") _ подчеркивания + искать не меньше 1 совпадения Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Баба ЯГА 7 Опубликовано 25 Марта 2019 Поделиться Опубликовано 25 Марта 2019 @Norman Eisenherz, о, ща потестим патроны, было бы неплохо ещё как-то заряжать оружие при спавне, чтобы там была не полная обойма .. Наверное тоже с пакетами связано, ну, я не шарю... А оп форуму тут пока не сильно понял как искать, я тут недавно, только разбираюсь. Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
DoK74rus 19 Опубликовано 26 Марта 2019 Поделиться Опубликовано 26 Марта 2019 (изменено) Всем привет, есть тут люди которые хорошо разбираются в погодных скриптах, а конкретно в level_weather.script (Платформа ЗП). Если есть то подскажите какая часть скрипта отвечает за смену погодных циклов в течении игрового дня. п.с Спрашиваю т.к уже долгое время не могу побороть проблему резкой смены погодного цикла. Изменено 26 Марта 2019 пользователем DoK74rus Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 26 Марта 2019 Поделиться Опубликовано 26 Марта 2019 Здрасьте. В солянке 2010 есть конструкция с поиском по нескольким шаблонам (вроде по принципу ИЛИ): if not string.find("device_torch,wpn_knife,bolt",i_section) and item:parent() then trup:drop_item(item). Попытался повторить в обычной версии ТЧ с триггером на сброс предмета – без эффекта. Не могу сказать, как именно применяется указанная конструкция в солянке, но допускается ли вообще поиск сразу по нескольким шаблонам? Spoiler привязка к [bind_stalker.script] function actor_binder:on_item_drop (obj) function drop_check(obj) if obj:section() == "hand_radio" and string.find( "stalker, exo", db.actor:item_in_slot(6):section() ) then news_manager.send_tip(db.actor, "тест") end end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
_Sk8_AsTeR_ 117 Опубликовано 26 Марта 2019 Поделиться Опубликовано 26 Марта 2019 Господа, вопрос к знатокам по звукам. Подскажите пожалуйста, на сколько критично будет всем звукам ogg(сторонняя озвучка npc) массово выставлять в комментариях например параметр npc_talking, к примеру, даже если это озвучка для атаки (Урою, чики-брики и в дамки и тд)? Нет ли зависимости от типа комментария на реакцию нпс? Ссылка на комментарий
WinCap 316 Опубликовано 26 Марта 2019 Поделиться Опубликовано 26 Марта 2019 @Norman Eisenherz, В приведенной тобой функции string.find("device_torch,wpn_knife,bolt", i_section) нет шаблонов. Здесь первым аргументом указана строка, в которой происходит поиск, а вторым что собственно ищется. При этом должно быть полное совпадение. В твоем скрипте, функция string.find("stalker, exo", db.actor:item_in_slot(6):section()) вернет не nil только если item_in_slot(6):section() будет строкой "stalker" или "exo", а этого точно не произойдет. Здесь нужно либо указывать полные наименования предметов в строке первым аргументом функции string.find, либо изменить всю конструкцию на примерно такую: s_item = db.actor:item_in_slot(6):section() if obj:section() == "hand_radio" and (string.find(s_item, "stalker") or string.find(s_item, "exo")) then 1 2 S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 26 Марта 2019 Поделиться Опубликовано 26 Марта 2019 @WinCap То есть, я все понял наоборот: в кавычках "где", а после "что" искать. Достаточно было в указанную конструкцию дописать "_outfit" к каждому виду брони. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Баба ЯГА 7 Опубликовано 27 Марта 2019 Поделиться Опубликовано 27 Марта 2019 @Norman Eisenherz, я тут учу Lua -> http://www.user.su/lua/index.php?id=46 смотри там string.find, очень хорошо расписано. 1 Мы, вчера, соседям сказали, что материализация - состоялась, чтобы ваш авторитет не уронить. Вот, мол, было изваяние, а теперь - стала Марья Ивановна. Многие верят ... © Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти