mole venomous 3 587 Опубликовано 21 Февраля 2021 @hArdplAyer22_22 Есть такой код: Скрытый текст local Sitem = inventory.belt[item] if Sitem and Sitem>5 then amk.remove_item(db.actor:object(item)) amk.spawn_item_in_inv(item) end Вот тут нужна помощь спецов, что бы определить локальную item, как любой артефакт. Если это возможно при условии, что итем на поясе. Я пробовал всяческие переборы, у меня не вышло. 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 21 Февраля 2021 50 минут назад, AndreySol сказал(а): Кстати, неплохо бы знать откуда вызывается ф-ция scan_inv(...)? Вот это db.actor:inventory_for_each(scan_inv) вызывается внутри обновления инвентори (inventory.update()) Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 21 Февраля 2021 1 минуту назад, AndreySol сказал(а): апдейте актерского биндера висит ну а где же ещё? 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 8 Марта 2021 @hArdplAyer22_22 Вот прям со всеми потрохами: Скрытый текст esc_tbl = { "esc_secret_bridge_vagon", "esc_secret_anomaly_dead", "esc_secret_bandit_cross", "esc_secret_bandit_supply", "esc_secret_under_cross", "esc_secret_refuge", "esc_secret_safe_farm", "esc_secret_vagon_container", "esc_secret_stalker_things", "esc_secret_box_bridge", "esc_secret_village_rucksack", "esc_secret_village_roof", "esc_secret_nice_place", "esc_secret_vorpal", "esc_secret_commander_goods", "esc_secret_road", "esc_secret_thief", "esc_secret_gas_pipe", "esc_secret_truck_goods", "esc_secret_kpp_tower", } function give_treasure_esc_random() treasure_manager.get_treasure_manager():give_treasure(esc_tbl[math.random(#(esc_tbl))]) end 1 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 7 Апреля 2021 3 часа назад, Баба ЯГА сказал(а): где-то в скриптах есть коллбэк на взятие ГГ в руки физобъекта Имя скрипта как бы намекает: bind_physic_object.script Там ф-ия: generic_physics_binder:use_callback Через неё без проблем отследишь поднятие дроп-ящика, в котором заведомо может что-нибудь спаунится. А остальное... Не уверен, попробуй ковырнуть init, но думаю, выше упоминали правки движка не без причины. Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 16 Мая 2021 2 минуты назад, I am Dead сказал(а): когда повреждены ноги хочу заблокировать бег можно просто заблокировать спринт Есть мод "Перелом ног". Не юзал, но по описанию там правки движка из X-Ray extensions. Может что то перешло в ОГСР? 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 26 Июня 2021 4 часа назад, Krolevarka сказал(а): просто не отправляются Сообщения после смерти ГГ вполне себе отправляются. Разве не обращал внимания, когда актор валяется мёртвый, а рандомные смс от сталкеров продолжают поступать. Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 2 Июля 2021 @Fly Скачивать вполне стоит. Сам так учился основам, только не видеоуроками, а текстами (ну и методом тыка, конечно) Принципиального различия нет и все перечисленные тобой уроки подойдут для 1.0006. 1 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 10 Июля 2021 (изменено) @Rod_K Это можно подсмотреть в скриптах Guiders Mod (тами всего два скриптовых файла). Либо установи этот мод и, следуя инструкциям, сделай "проводником" кого-либо из НПС. Это актуально для ТЧ. На двигле ОГСР всё проще, достаточно использовать консольную команду "jump_to_level". Изменено 10 Июля 2021 пользователем mole venomous 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 11 Июля 2021 (изменено) @Rod_K Что бы не потрошить спаун, воспользуйся скриптовым ЛЧ. Если новая локация добавлена без косяков, всё отработает хорошо. Под спойлером ф-ии спавна и удаления ЛЧ. Для примера - телепорт в комнату Бармена. Вызываешь спавн/удаление в удобных тебе местах. Скрытый текст -- Аргумент info для фикса телепортации Кордон-ТД function start_level_changer(p_dest_pos, p_dest_lv, p_dest_gv, p_dest_level, info) -- Перед созданием ЛЧ выдём инфо, если необходимо if info ~= nil then if not has_alife_info(info) then db.actor:give_info_portion(info) end end local obj = alife():create("level_changer", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) local packet = net_packet() obj:STATE_Write(packet) -- свойства cse_alife_object local game_vertex_id = packet:r_u16() local distance = packet:r_float() local direct_control = packet:r_u32() local level_vertex_id = packet:r_u32() local object_flags = packet:r_u32() local custom_data = packet:r_stringZ() local story_id = packet:r_u32() local spawn_story_id = packet:r_u32() -- свойства cse_shape local shape_count = packet:r_u8() for i = 1, shape_count do local shape_type = packet:r_u8() if shape_type == 0 then -- sphere local center = packet:r_vec3() local radius = packet:r_float() else -- box local axis_x = packet:r_vec3() local axis_y = packet:r_vec3() local axis_z = packet:r_vec3() local offset = packet:r_vec3() end end -- свойства cse_alife_space_restrictor local restrictor_type = packet:r_u8() -- свойства cse_alife_level_changer local dest_game_vertex_id = packet:r_u16() local dest_level_vertex_id = packet:r_u32() local dest_position = packet:r_vec3() local dest_direction = packet:r_vec3() local dest_level_name = packet:r_stringZ() local dest_graph_point = packet:r_stringZ() local silent_mode = packet:r_u8() packet:w_begin(game_vertex_id) packet:w_float(distance) packet:w_u32(direct_control) packet:w_u32(level_vertex_id) packet:w_u32( bit_not(193) ) packet:w_stringZ(custom_data) packet:w_u32(46489) packet:w_u32(46489) packet:w_u8(1) packet:w_u8(0) packet:w_vec3(vector():set(0, 0, 0)) packet:w_float(2) packet:w_u8(3) packet:w_u16(p_dest_gv) packet:w_u32(p_dest_lv) packet:w_vec3(p_dest_pos) packet:w_vec3(vector():set(0, 0, 0)) packet:w_stringZ(p_dest_level) packet:w_stringZ("start_actor_99") packet:w_u8(1) packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) end local disposition function teleport_bar_vip_room() disposition = vector():set(114.89195251465,-5.3071584701538,14.840103149414) if level.name()~="l05_bar" then start_level_changer(disposition, 33615, 1239, "l05_bar") else db.actor:set_actor_position(disposition) end end function Del_LevelChanger() local LV = alife():story_object(46489) if LV then alife():release(LV, true) end end Изменено 11 Июля 2021 пользователем mole venomous 1 2 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 18 Июля 2021 (изменено) @Firestarter Можно выдать тайники где-нибудь в начале новой игры. Для этого нужен список всех тайников. Список всех "ванильных" тайников и функция для выдачи : Скрытый текст local treasure_list = { "esc_secret_bridge_vagon", "esc_secret_anomaly_dead", "esc_secret_bandit_cross", "esc_secret_bandit_supply", "esc_secret_under_cross", "esc_secret_refuge", "esc_secret_safe_farm", "esc_secret_vagon_container", "esc_secret_stalker_things", "esc_secret_box_bridge", "esc_secret_village_rucksack", "esc_secret_village_roof", "esc_secret_nice_place", "esc_secret_vorpal", "esc_secret_commander_goods", "esc_secret_road", "esc_secret_thief", "esc_secret_gas_pipe", "esc_secret_truck_goods", "esc_secret_kpp_tower", "gar_secret_bandit_hiding", "gar_secret_old_kran", "gar_secret_grizly", "gar_secret_north_tube", "gar_secret_metal_hiding", "gar_secret_cistern_pipe", "gar_secret_east_tube", "gar_secret_rucksack_noones", "gar_secret_murdered", "gar_secret_rotted_stump", "gar_secret_forest_log", "gar_secret_shooters_supply", "gar_secret_car_hiding", "gar_secret_bus_rucksack", "gar_secret_toilet", "gar_secret_south_safe", "gar_secret_metal_hiding2", "gar_secret_box_supply", "gar_secret_bus_tube", "gar_secret_rucksack_ruins", "gar_secret_box_blockpost", "gar_secret_deadman", "gar_secret_avoska", "gar_secret_escavator", "gar_secret_concrete_blocks", "agr_secret_gray", "agr_secret_stump", "agr_secret_cross", "agr_secret_tree_rucksack", "agr_secret_pipe_rucksack", "agr_secret_roof_box", "agr_secret_rucksack_blue", "agr_secret_cisterne", "agr_secret_rucksack_window", "agr_secret_box_radiation", "agr_secret_box_stairs", "agr_secret_box_factory", "agr_secret_bag_stand", "agr_secret_box_trash", "agr_secret_safe_tree", "agr_secret_rucksack_laketube", "agr_secret_tube_radiactive", "agr_secret_pipe_breakdown", "agr_secret_safe_bush", "agr_secret_box_archive", "agr_secret_sewers", "agr_secret_safe_wall", "agr_secret_box_institute", "agr_secret_agrosafe", "agr_secret_truck", "agr_secret_rotted_log", "agr_secret_box_zavhoz", "agr_secret_inventory_schlosser", "agru_secret_bandit_obschak", "agru_secret_rucksack_corner", "agru_secret_box_bloodsucker", "agru_secret_box_habar", "agru_secret_mole_cave", "val_secret_0000", "val_secret_0001", "val_secret_0002", "val_secret_0003", "val_secret_0004", "val_secret_0005", "val_secret_0006", "val_secret_0007", "val_secret_0008", "val_secret_0009", "val_secret_0010", "val_secret_0011", "val_secret_0012", "val_secret_0013", "val_secret_0014", "val_secret_0015", "val_secret_0016", "val_secret_0017", "val_secret_0018", "val_secret_0019", "val_secret_0020", "val_secret_0021", "val_secret_0022", "val_secret_0023", "val_secret_0024", "val_secret_0025", "val_secret_0026", "val_secret_0027", "val_secret_0028", "val_secret_0029", "val_secret_0030", "val_secret_0031", "val_secret_0032", "x18_secret_0000", "x18_secret_0001", "bar_secret_0000", "bar_secret_0001", "bar_secret_0002", "bar_secret_0003", "bar_secret_0004", "bar_secret_0005", "bar_secret_0006", "bar_secret_0007", "bar_secret_0008", "bar_secret_0009", "bar_secret_0010", "bar_secret_0011", "bar_secret_0012", "bar_secret_0013", "bar_secret_0014", "bar_secret_0015", "bar_secret_0016", "bar_secret_0017", "bar_secret_0018", "bar_secret_0019", "ros_secret_0000", "ros_secret_0001", "ros_secret_0002", "ros_secret_0003", "ros_secret_0004", "ros_secret_0005", "ros_secret_0006", "ros_secret_0007", "ros_secret_0008", "ros_secret_0009", "ros_secret_0010", "ros_secret_0011", "ros_secret_0012", "ros_secret_0013", "ros_secret_0014", "ros_secret_0015", "ros_secret_0016", "ros_secret_0017", "ros_secret_0018", "ros_secret_0019", "ros_secret_0020", "ros_secret_0021", "ros_secret_0022", "ros_secret_0023", "ros_secret_0024", "ros_secret_0025", "yan_secret_0000", "yan_secret_0001", "yan_secret_0002", "yan_secret_0003", "yan_secret_0004", "yan_secret_0005", "yan_secret_0006", "yan_secret_0007", "yan_secret_0008", "yan_secret_0009", "yan_secret_0010", "yan_secret_0011", "yan_secret_0012", "yan_secret_0013", "x16_secret_0000", "x16_secret_0001", "mil_secret_0000", "mil_secret_0001", "mil_secret_0002", "mil_secret_0003", "mil_secret_0004", "mil_secret_0005", "mil_secret_0006", "mil_secret_0007", "mil_secret_0008", "mil_secret_0009", "mil_secret_0010", "mil_secret_0011", "mil_secret_0012", "mil_secret_0013", "mil_secret_0014", "mil_secret_0015", "mil_secret_0016", "mil_secret_0017", "mil_secret_0018", "mil_secret_0019", "mil_secret_0020", "mil_secret_0021", "mil_secret_0022", "mil_secret_0023", "mil_secret_0024", "mil_secret_0025", "mil_secret_0026", "mil_secret_0027", "mil_secret_0028", "rad_secret_0000", "rad_secret_0001", "rad_secret_0002", "rad_secret_0003", "rad_secret_0004", "rad_secret_0005", "pri_secret_0000", "pri_secret_0001", "pri_secret_0002", "pri_secret_0003", "pri_secret_0004", } function give_treasures() for i = 1, #treasure_list do tr = treasure_list treasure_manager.get_treasure_manager():give_treasure(tr) end end Это именно запланированные тайники, т.е. вовсе не все ящики будут с хабаром. Плюс в некоторых случаях на ванили будет пропажа содержимого. Можно ещё подавить выдачу СМС и метки тайника, закомментировав строки Скрытый текст news_manager.send_treasure(v.name) local text = "%c[255,238,155,23]"..game.translate_string(v.name).."\\n".."%c[default]"..game.translate_string(v.description)level.map_add_object_spot_ser(obj.id, "treasure", text) в функции CTreasure:give_treasure(k) (treasure_manager.script). Тайники будут выдаваться при обыске, как и раньше, но без уведомления об этом. PS Но я бы всё же выдавал тайники постепенно. Хотя бы на текущей локации. Изменено 18 Июля 2021 пользователем mole venomous 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 18 Июля 2021 17 минут назад, Firestarter сказал(а): то, что я описал - нереализуемо? Можно выдать ВСЕ существующие базовые тайники. Я вроде, так и написал в начале предыдущего поста. А потом добавил, что это не отменяет получение тайников при обыске и желательно лучше сразу ВСЁ не спаунить. 1 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 9 Августа 2021 (изменено) 6 часов назад, AndreySol сказал: Схема remark в персональной логике вообще стремно себя ведет. Возьми непися под гулаг и все заработает. А как же Шустрый с его задвигонами, когда он в гулаге? Я его выкинул из гулага и повесил на аналогичную персональную логику, теперь он ведёт себя хорошо. Или я не так понимаю стрёмность поведения НПСа в персональной логике в ремарке? ПС - Хотя, с другой стороны, с Кротом всё же были проблемы... Изменено 9 Августа 2021 пользователем mole venomous Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 20 Августа 2021 @_Sk8_AsTeR_ А как неписи переходят из ГУЛАГа в ГУЛАГ? В зависимости от выданных/дизабленных инфопорций. Тоже можно провернуть и в диалоге. Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 13 Сентября 2021 31 минуту назад, ARTLantist сказал: движок править надо? Нужно подключить модуль m_netpk.script (на форуме поищи) и при помощи модуля в момент спауна в нет-пакет ствола записать флаг, пример: Скрытый текст local obj = alife():create("wpn_sig550", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) local pk = get_netpk(obj,1) if pk:isOk() then local data = pk:get() -- прочитали пакет if data then data.addon_flags = 1 -- повесим прицел pk:set(data) -- записали пакет обратно end end 1 1 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 17 Сентября 2021 @Norman Eisenherz , в мотиваторе по аналогии со сталкерами не работает Скрытый текст добавить в bind_monster function generic_object_binder:reinit() ... self.object:set_callback(callback.use_object, self.use_callback, self) ... end function generic_object_binder:net_destroy() ... self.object:set_callback(callback.use_object, nil) ... end function generic_object_binder:use_callback(obj, who) if self.object:alive() then if self.st.active_section then xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who) end else ... end end Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 18 Сентября 2021 (изменено) Я что-то давненько не задавал тупых вопросов. Кто знает, почему может не срабатывать проверка на видимость see? Без неё код работает, а с ней в логе это - "!!CScriptGameObject : cannot check visibility null object!" Скрытый текст for a = 0,65534 do local obj = level.object_by_id(a) if obj then if IsStalker(obj) and obj:alive() and obj:position():distance_to(db.actor:position()) < 50 and obj:see(actor) then -- if IsStalker(obj) and obj:alive() then local comm = amk.get_npc_community(obj) if comm == "stalker" then amk.set_npc_relation(obj,db.actor,"enemy") end end end end end зы Движок ОГСР Изменено 18 Сентября 2021 пользователем mole venomous Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 18 Сентября 2021 (изменено) 8 минут назад, Okichi сказал: переменная actor как здесь определяется Банальная невнимательность Я уж подумал что-то где-то слетело, т.к. ранее всё работало. Но "слетели" первые три знака перед 'actor', как часто бывает... Изменено 18 Сентября 2021 пользователем mole venomous 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 18 Сентября 2021 5 минут назад, UriZzz сказал: Local uAct = db.actor Даже просто Actor с заглавной , а внимание уже сложно не обратить. 1 Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение
mole venomous 3 587 Опубликовано 28 Октября 2021 (изменено) Всем привет. Ознакомился с возможностями движка ОГСР, но видимо недостаточно хорошо. Есть ли на этом движке возможность определить предмет на поясе и далее производить с ним какие-либо действия? Т.е. речь не о проверке local item = inventory.belt["item"] а именно о том, что бы заданный объект можно было хитануть, удалить и т.п. Изменено 28 Октября 2021 пользователем mole venomous Здесь могла быть ваша реклама. Поделиться этим сообщением Ссылка на сообщение