Minya 604 Опубликовано 29 Октября 2020 Поделиться Опубликовано 29 Октября 2020 (изменено) Прошу помощи. Игра ОП-2.1, вымогатель антирадов Гарик, на входе к ремонтникам. Хотелось пересадить его на еду. Но не на одну колбасу, консерву, батон, а комплектом. например батон-колбаса- пиво, батон-консерва-водка, буттерброд-батончик-фляжка. Все фалы нашёл, текст исправил. Не соображу как прописать в скрипте три названия продукта, через запятую, через тире, что бы он забирал их за раз. Подскажите как? Строки на антирады в скрипте, выглядят так; function give_antirad(first_speaker, second_speaker) lost("antirad", 1) end function antirad_have() return has("antirad",1) Изменено 29 Октября 2020 пользователем Minya Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
AndreySol 148 Опубликовано 29 Октября 2020 Поделиться Опубликовано 29 Октября 2020 @Minya Как-то так: function give_antirad(first_speaker, second_speaker) lost("батон", 1) lost("колбаса", 1) lost("пиво", 1) end function antirad_have() return (has("батон",1) and has("колбаса",1) and has("пиво",1)) end Секции продуктов пропишешь как надо. 1 Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
_Sk8_AsTeR_ 45 Опубликовано 29 Октября 2020 Поделиться Опубликовано 29 Октября 2020 @dsh, огср, да Огромное спасибо, скоро проверю @dsh Метод работает! А есть ли способ проверить, нажал ли ГГ левую кнопку мыши, иначе говоря - выстрелил? Нужно скриптово отследить момент, когда ГГ, удерживая зум, выстрелит, и вызвать ф-цию в момент выстрела... Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Norman Eisenherz 35 Опубликовано 30 Октября 2020 Поделиться Опубликовано 30 Октября 2020 Можно обратиться к движковому счетчику патронов: если active_item:get_ammo_in_magazine() и active_item:get_ammo_total() уменьшились на одну величину, это как раз выстрел. Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
mole venomous 141 Опубликовано 30 Октября 2020 Поделиться Опубликовано 30 Октября 2020 (изменено) Решил по быстрому заспавнить освещение скриптом. Использовал код из AEM (для смены освещения на арене). Всё спавниться и работает, но после сейв/лоада объекты меняют свой direction. По висячим лампам "ильича" этого не видно, а несимметричные объекты, типа настольной лампы, доставляют. Думаю, в коде нужны дополнительные манипуляции с direction и если так, то какие? Код почти без правок, добавил аргументы lvid и gvid: Скрытый текст function v3f(x,y,z) return vector():set(x,y,z) end пример спавна add_lamp(v3f(139.67343139648,-6.1285934448242,180.18035888672),1203772,3686,v3f(0,-1.0,0),"physics\\light\\lampa_01_on",0.8,true) function add_lamp(pos, lvid, gvid, dir, visual, brightness, shadow, color) local light_flags = 56 if shadow then light_flags = light_flags + 2 end local packet = net_packet() packet:w_u16(gvid) packet:w_float(0.0) packet:w_s32(1) packet:w_s32(lvid) packet:w_s32(-70) packet:w_stringZ("") packet:w_s32(-1) packet:w_s32(-1) packet:w_stringZ(visual) packet:w_u8(0) packet:w_stringZ("$editor") packet:w_u8(0) packet:w_u16(-1) if color ~= nil then packet:w_s32(color) packet:w_float(brightness) packet:w_stringZ("") else packet:w_s32(-1) packet:w_float(brightness) packet:w_stringZ("light\\light_omni_white_idle") end packet:w_float(14.0) packet:w_u16(light_flags) packet:w_stringZ("$editor") packet:w_stringZ("link") packet:w_float(100.0) packet:w_float(0.1) packet:w_float(4.0) packet:w_float(0.3) packet:w_stringZ("") packet:w_stringZ("") packet:w_stringZ("bone_lamp") packet:w_float(1.0) packet:w_stringZ("") packet:w_float(0.7) packet:w_stringZ("bone_omni") local se_obj = alife():create("aem_lamp", pos, lvid, gvid) se_obj:STATE_Read(packet, packet:w_tell()) if dir ~= nil then se_obj.direction = vector():set(dir) end end После спауна (как запланировано): https://yadi.sk/i/Wqubj3MUGLwvhA После сейв/лоада(повёрнута): https://yadi.sk/d/aqF7QfAZH5y5GQ Изменено 30 Октября 2020 пользователем mole venomous Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Norman Eisenherz 35 Опубликовано 31 Октября 2020 Поделиться Опубликовано 31 Октября 2020 Здрасьте. Задача: создать одноименный текстовый файл при создании сейва. В [ui_save_dialog.script] можно отследить имя и создать свой файл при сейве через меню "Сохранить игру". Как сделать то же самое при вводе имени нового сейва через консоль? Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
AndreySol 148 Опубликовано 1 Ноября 2020 Поделиться Опубликовано 1 Ноября 2020 9 часов назад, Norman Eisenherz сказал: Как сделать то же самое при вводе имени нового сейва через консоль? Скорее всего никак. Не предусмотрен никакой кэллбэк на это действие, соответственно отследить его не получится. Можно, наверное слепить скриптовые костыли, типа мониторинга на апдейте кол-ва файлов в папке сэйвов и реакцией на появление нового, но не уверен что это возможно. Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Zander_driver 5 993 Опубликовано 1 Ноября 2020 Поделиться Опубликовано 1 Ноября 2020 29.10.2020 в 18:26, _Sk8_AsTeR_ сказал: А есть ли способ проверить, нажал ли ГГ левую кнопку мыши, иначе говоря - выстрелил? Таки вы для начала определитесь, собираетесь вы ловить нажатие ЛКМ, или ловить событие выстрела. Это разные события. В ОГСР ловится и то и другое. Нажатия - callback.on_key_press (и там надо ловить код клавиши), Выстрел - callback.on_actor_weapon_fire, Начало стрельбы - callback.on_actor_weapon_start_firing - от предыдущего отличается тем, что при стрельбе очередью будет вызван только 1 раз. 2 Цитата 08.01.2012 в 03:30, xStream сказал(а): Те, у кого свои руки есть, копипастить это не будут, проще свое написать, которое тоже велосипедное, но более понятное автору. Мод, где не бывает одинаковых путей - Судьба Зоны. Подхалимов и льстецов не терплю. Не нравится, что я сделал? Сделай сам, как тебе нравится. Не умеешь - твои проблемы, я тоже когда-то не умел. Да и сейчас, не умею, не знаю, но делаю что хочу. Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
naxac 1 686 Опубликовано 1 Ноября 2020 Поделиться Опубликовано 1 Ноября 2020 6 часов назад, AndreySol сказал: слепить скриптовые костыли, типа мониторинга на апдейте кол-ва файлов Лучше тогда при сохранении (вызове метода save биндера того же актёра) - сделать небольшой таймаут и получить самый новый файл из папки сохранений, его и переименовывать. 1 Цитата Аддон для ОП-2.09.2: Яндекс/Google/GitHub Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
AndreySol 148 Опубликовано 1 Ноября 2020 Поделиться Опубликовано 1 Ноября 2020 @naxac Любой из таких вариантов - костыль галимый, я бы не стал использовать. Лучше правку сделать движковую... 1 Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
_Sk8_AsTeR_ 45 Опубликовано 2 Ноября 2020 Поделиться Опубликовано 2 Ноября 2020 @Zander_driver, нужно было отследить сразу 2 события: сначала ПКМ и сразу ЛКМ, когда ПКМ еще нажато. Но уже справился, все работает, спасибо Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Norman Eisenherz 35 Опубликовано 2 Ноября 2020 Поделиться Опубликовано 2 Ноября 2020 @AndreySol Где найти разобранный на файлы C++ движок ЧН? Движок ЗП тоже было бы интересно почитать. Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
AndreySol 148 Опубликовано 2 Ноября 2020 Поделиться Опубликовано 2 Ноября 2020 @Norman Eisenherz Ну наверное поиск рулит. Я исходники ТЧ брал давным-давно со Сталкерин, но там сейчас ссылку на скачивание убрали. Еще можно спросить в разделе Редактирование движка и Ищу файлы\моды.... Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Norman Eisenherz 35 Опубликовано 22 Ноября 2020 Поделиться Опубликовано 22 Ноября 2020 Здрасьте. Как проверить, что дождь не только идет в данный момент, но и попадает на ГГ (ГГ не находится в здании)? Версия игры любая без движковых правок. Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Zander_driver 5 993 Опубликовано 22 Ноября 2020 Поделиться Опубликовано 22 Ноября 2020 Только что, Norman Eisenherz сказал: ГГ не находится в здании... без движковых правок. Никак. В оригинальном движке без правок, нету практически ничего доступного скриптам, по теме проверки геометрии уровня на что-нибудь. Есть ли над ГГ крыша, не найдется ли в ту сторону бетонной стены... это скриптам было неведомо. 1 Цитата 08.01.2012 в 03:30, xStream сказал(а): Те, у кого свои руки есть, копипастить это не будут, проще свое написать, которое тоже велосипедное, но более понятное автору. Мод, где не бывает одинаковых путей - Судьба Зоны. Подхалимов и льстецов не терплю. Не нравится, что я сделал? Сделай сам, как тебе нравится. Не умеешь - твои проблемы, я тоже когда-то не умел. Да и сейчас, не умею, не знаю, но делаю что хочу. Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
HellRatz 2 208 Опубликовано 23 Ноября 2020 Поделиться Опубликовано 23 Ноября 2020 @Zander_driver, как вариант, наверно, можно расставить в каждом помещении по рестриктору, и делать проверку на нахождение в нем. Ну и проверять текущую погоду. Если дождь, и ГГ вне рестриктора, то... Ещё то извращение, но без правок вижу только такую ситуацию. 2 Цитата L2D | GTA 3 Map X-Ray + Parking NFS:U2 X-Ray Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Norman Eisenherz 35 Опубликовано 23 Ноября 2020 Поделиться Опубликовано 23 Ноября 2020 В ЧН часто есть готовые рестрикторы – укрытия от выброса, но у них нет внешних конфигов логики. Можно ли без перебора [all.spawn] определить, что ГГ находится в рестрикторе с именем "(level)_vibros_#"? Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
naxac 1 686 Опубликовано 25 Ноября 2020 Поделиться Опубликовано 25 Ноября 2020 (изменено) @Norman Eisenherz, function func() local lvl = level.name() local pos = db.actor:position() local n = 1 local name, obj while true do name = string.format( "%s_vibros_%s", lvl, n ) obj = db.zone_by_name [ name ] if obj then if obj:inside( pos ) then return true end else return false end n = n + 1 end end Это если имена с нумерацией от 1 и по возрастанию. Если вразброс, то придётся всю zone_by_name перебирать в поисках нужных рестрикторов. Изменено 25 Ноября 2020 пользователем naxac 1 Цитата Аддон для ОП-2.09.2: Яндекс/Google/GitHub Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Norman Eisenherz 35 Опубликовано 25 Ноября 2020 Поделиться Опубликовано 25 Ноября 2020 @naxac Нашел перебор укрытий в [xr_surge_hide.script]: Spoiler local board = sim_board.get_sim_board() local hide_tbl = {} local n = 0 for k,v in pairs(board.smarts) do if v.smrt.actor_hides~=nil then for kk,vv in pairs(v.smrt.actor_hides) do local obj = alife():object(vv) if(obj) then n = n + 1 hide_tbl[n] = obj end end end end После этого как раз выполняется проверка через inside. Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
otani-san 29 Опубликовано 27 Ноября 2020 Поделиться Опубликовано 27 Ноября 2020 Прошу помощи скриптёров. Поигрываю в мод-сборку на основе FreeplayStart 1.21, но с изменённой оружейкой, добавленными мутантами, АИ-паком и прочими вкусностями от Alex5773 Сборка очень нравится, но у неё есть серьёзный недостаток - спустя непродолжительное время начинают наглухо ломаться сейвы с логом вылета, что под спойлером. Скрытый текст FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : .\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: d:\games\soc\gamedata\scripts\rgr.script:378: attempt to index local 'dead_otf' (a nil value) stack trace: К сожалению, автор данной сборки не помог с исправлением данного вылета, да и не заходит на АМК уже с августа. Возможно, кто-то из скриптеров поможет исправить данный баг, возможно даже небезвозмездно, в разумных пределах, конечно Сам в скриптовании Сталкера не шарю. Прилагаю сам мод и сломанный сейв: https://dropmefiles.com/jR5Fi Цитата Поделиться этим сообщением Ссылка на сообщение Поделиться на других сайтах
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.