Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 (изменено) Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском.Возможно, ответ на Ваш вопрос уже есть.Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. Изменено 23 Февраля 2016 пользователем warwer 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Norman Eisenherz 225 Опубликовано 8 Ноября 2022 Поделиться Опубликовано 8 Ноября 2022 35 minutes ago, dsh said: прочитайте здешние темы от начала и до конца Страница 1180 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Hind 29 Опубликовано 8 Ноября 2022 Поделиться Опубликовано 8 Ноября 2022 Скрытый текст function delete_conserva() local se_obj = alife():object("conserva") if se_obj then alife():release(se_obj, true) end alife():create("bad_conserva", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end function delete_bread() local se_obj = alife():object("bread") if se_obj then alife():release(se_obj, true) end alife():create("bad_bread", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end function delete_mre() local se_obj = alife():object("mre") if se_obj then alife():release(se_obj, true) end alife():create("bad_mre", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end function delete_oreshki() local se_obj = alife():object("oreshki") if se_obj then alife():release(se_obj, true) end alife():create("bad_oreshki", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end function delete_olives() local se_obj = alife():object("olives") if se_obj then alife():release(se_obj, true) end end function delete_kolbasa() local se_obj = alife():object("kolbasa") if se_obj then alife():release(se_obj, true) end alife():create("bad_kolbasa", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end function delete_syrok() local se_obj = alife():object("syrok") if se_obj then alife():release(se_obj, true) end alife():create("bad_syrok", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end function bad_food() if db.actor.radiation > 0.2 then HUM.delete_syrok() HUM.delete_bread() hum.delete_kolbasa() end if db.actor.radiation > 0.6 then HUM.delete_conserva() HUM.delete_olives() HUM.delete_oreshki() end if db.actor.radiation > 0.9 then HUM.delete_mre() end end Кто нибудь подскажите, что блин не так с этими функциями? Из-за них происходит вылет на каком то моменте игры. Функции delete_вещь предназначены для удаления нормальной еды и добавления испорченной. И, это, может кто знает функцию на убирание (отключение)/ доставание оружия? Hind Upgrade Mod Ссылка на комментарий
Norman Eisenherz 225 Опубликовано 8 Ноября 2022 Поделиться Опубликовано 8 Ноября 2022 • Для удаления требуется не секция предмета, а его имя, то есть "секция + id" (номер спавна), например "medkit12531". Можно просто id. • Удалять можно и даже нужно одной функцией, в которой имя или id будут аргументом. Обязательно надо убедиться, что этот же объект не удаляется какой-то другой штатной или новой функцией – причина вылетов может быть именно в этом. • Спавнить тоже можно через одну функцию с аргументом в виде секции (про нули вместо координат уже писал – будь ленивым). • Можно совместить переспавн в одну функцию: проверить секцию, получить id объекта, добавить "_bad", отспавнить новый объект, удалить старый. Примерно так: Spoiler (перебор инвентаря или какой-то еще способ получить ссылку на объект) if obj then local sect = obj:section() if sect == "medkit" then local id = obj:id() alife():create(sect .. "_army", vector(), 0, 0, 0) alife():release( alife():object(id) ) end end Оружие: db.actor:hide_weapon() и restore_weapon(). Ориентир для поиска: [xr_effects.script], самое начало. Там же отключение интерфейса и управления. 1 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
mole venomous 2 989 Опубликовано 11 Ноября 2022 Поделиться Опубликовано 11 Ноября 2022 (изменено) Вопрос по OGSR. Коллбэк level_changer_action обрабатывается, когда ГГ в зоне ЛЧ, если правильно понимаю. Есть вариант "задержки" вывода окна с выбором перехода на другую локацию? Возможно ли организовать это скриптово, использовав, например: Скрытый текст level.add_call( function() log3( "condition" ) return true end, function() log3( "action" ) end ):set_pause( 3000 ) зы Нужно для автосейвов. Что бы создать адекватную паузу, прежде, чем игрок нажмёт "Да/Нет" в окне выбора. Изменено 11 Ноября 2022 пользователем mole venomous Здесь могла быть ваша реклама. Ссылка на комментарий
dsh 3 820 Опубликовано 11 Ноября 2022 Поделиться Опубликовано 11 Ноября 2022 1 hour ago, mole venomous said: Коллбэк level_changer_action обрабатывается, когда ГГ в зоне ЛЧ, если правильно понимаю. Да. И каждые пять секунд, когда он остается в внутри ЛЧ, насколько я вижу. 1 hour ago, mole venomous said: Есть вариант "задержки" вывода окна с выбором перехода на другую локацию? Нет, насколько я вижу. Есть возможность получить доступ к этому окну до того, как оно будет показано и что-то с ним сделать. Я, к примеру, меняю текст этого окна, что бы там было название локации, куда ведёт этот переход. 1 hour ago, mole venomous said: Возможно ли организовать это скриптово, использовав, например: В этом примере ты всего-лишь отложил вызов своих функций на три секунды. Коллбек и показ окна друг от друга никак не зависят. Теоретически, ты можешь попробовать что-то с ним сделать. Не знаю, скрыть например, на следующем апдейте после коллбека, т.к. сразу же после вызова коллбека вызывается показ этого окна. Т.е. на следующем апдейте это окно будет уже показано. Или не скрыть, а поменять его позицию из коллбека, что бы оно было показано за пределами экрана. 1 hour ago, mole venomous said: Нужно для автосейвов. Как это связано с автосейвами? Складывается впечатление, что ты пытаешь костылями решить следствие какой-то проблемы, вместо того, что бы решить саму проблему. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
mole venomous 2 989 Опубликовано 11 Ноября 2022 Поделиться Опубликовано 11 Ноября 2022 (изменено) 27 минут назад, dsh сказал: Как это связано с автосейвами? Я сделал сейвы типа "Покидаю уровень ...level_name", однако предположил, что сейв - нажатие кнопки "Да" - загрузка и всё это за короткое время - не есть хорошо для сейва. В любом случае, игра встаёт на паузу, можно просто выждать пару секунд и соглашаться на переход. Изменено 11 Ноября 2022 пользователем mole venomous Здесь могла быть ваша реклама. Ссылка на комментарий
imcrazyhoudini 177 Опубликовано 11 Ноября 2022 Поделиться Опубликовано 11 Ноября 2022 xr_gulag.script: Скрытый текст level_groups = {l01_escape = 1, l02_garbage = 2, l03_agroprom = 3, l03u_agr_underground = 4, l04_darkvalley = 5, l04u_labx18 = 6, l05_bar = 7, l06_rostok = 8, l07_military = 9, l08_yantar = 10, l08u_brainlab = 11, l10_radar = 12, l10u_bunker = 13, l11_pripyat = 14, l12_stancia = 15, l12u_sarcofag = 16, l12u_control_monolith = 17, l12_stancia_2 = 18} Кто знает, за что это отвечает? ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
Купер 2 291 Опубликовано 11 Ноября 2022 Поделиться Опубликовано 11 Ноября 2022 "Чтобы не ходили через Бар" https://www.amk-team.ru/forum/topic/13078-prozektorskaya/?do=findComment&comment=1234785 В самом общем случае. 1 Ссылка на комментарий
imcrazyhoudini 177 Опубликовано 11 Ноября 2022 Поделиться Опубликовано 11 Ноября 2022 (изменено) Накидал такое, в оригинале в принципе так же было: Скрытый текст function go_arena(npc, actor) local point = patrol("zavros_gg_arena_walk") local look = patrol("zavros_gg_arena_look") db.actor:set_actor_position(point:point(0)) local dir = look:point(0):sub(point:point(0)) db.actor:set_actor_direction(-dir:getH()) inv_box_2 = level_object_by_sid (5629) out_object = actor in_object = inv_box_2 actor:inventory_for_each(transfer_object_item) local spawn_items = {} if has_alife_info("bar_flash_start") then table.insert(spawn_items, "novice_outfit") table.insert(spawn_items, "wpn_bm16") table.insert(spawn_items, "ammo_12x70_buck") table.insert(spawn_items, "ammo_12x70_buck") table.insert(spawn_items, "wpn_pm") table.insert(spawn_items, "ammo_9x18_pmm") table.insert(spawn_items, "ammo_9x18_pmm") table.insert(spawn_items, "ammo_9x18_pmm") table.insert(spawn_items, "wpn_knife") table.insert(spawn_items, "medkit") table.insert(spawn_items, "medkit") table.insert(spawn_items, "bandage") table.insert(spawn_items, "bandage") db.actor:activate_slot(2) elseif has_alife_info("bar_boar_start") then table.insert(spawn_items, "novice_outfit") table.insert(spawn_items, "wpn_toz34") table.insert(spawn_items, "ammo_12x70_buck") table.insert(spawn_items, "ammo_12x70_buck") table.insert(spawn_items, "wpn_fort") table.insert(spawn_items, "ammo_9x18_pmm") table.insert(spawn_items, "ammo_9x18_pmm") table.insert(spawn_items, "ammo_9x18_pmm") table.insert(spawn_items, "wpn_knife") table.insert(spawn_items, "medkit") table.insert(spawn_items, "medkit") table.insert(spawn_items, "bandage") table.insert(spawn_items, "bandage") db.actor:activate_slot(2) elseif has_alife_info("bar_zombied_start") then table.insert(spawn_items, "bandit_outfit") table.insert(spawn_items, "wpn_wincheaster1300") table.insert(spawn_items, "ammo_12x70_buck") table.insert(spawn_items, "ammo_12x70_buck") table.insert(spawn_items, "ammo_12x70_buck") table.insert(spawn_items, "wpn_beretta") table.insert(spawn_items, "ammo_9x19_pbp") table.insert(spawn_items, "ammo_9x19_pbp") table.insert(spawn_items, "ammo_9x19_pbp") table.insert(spawn_items, "wpn_knife") table.insert(spawn_items, "medkit") table.insert(spawn_items, "medkit") table.insert(spawn_items, "medkit") table.insert(spawn_items, "bandage") table.insert(spawn_items, "bandage") table.insert(spawn_items, "bandage") db.actor:activate_slot(2) elseif has_alife_info("bar_psy_start") then table.insert(spawn_items, "stalker_outfit") table.insert(spawn_items, "wpn_ak74u") table.insert(spawn_items, "ammo_5.45x39_ap") table.insert(spawn_items, "ammo_5.45x39_ap") table.insert(spawn_items, "ammo_5.45x39_ap") table.insert(spawn_items, "wpn_knife") table.insert(spawn_items, "wpn_glock") table.insert(spawn_items, "ammo_9x19_pbp") table.insert(spawn_items, "ammo_9x19_pbp") table.insert(spawn_items, "ammo_9x19_pbp") table.insert(spawn_items, "medkit") table.insert(spawn_items, "medkit") table.insert(spawn_items, "medkit") table.insert(spawn_items, "bandage") table.insert(spawn_items, "bandage") table.insert(spawn_items, "bandage") db.actor:activate_slot(2) elseif has_alife_info("bar_snork_start") then table.insert(spawn_items, "stalker_outfit") table.insert(spawn_items, "wpn_spas12") table.insert(spawn_items, "ammo_12x70_buck") table.insert(spawn_items, "ammo_12x70_buck") table.insert(spawn_items, "ammo_12x70_buck") table.insert(spawn_items, "wpn_knife") table.insert(spawn_items, "wpn_grach") table.insert(spawn_items, "ammo_9x19_pbp") table.insert(spawn_items, "ammo_9x19_pbp") table.insert(spawn_items, "ammo_9x19_pbp") table.insert(spawn_items, "medkit") table.insert(spawn_items, "medkit") table.insert(spawn_items, "medkit") table.insert(spawn_items, "bandage") table.insert(spawn_items, "bandage") table.insert(spawn_items, "bandage") db.actor:activate_slot(2) elseif has_alife_info("bar_krovo_start") then table.insert(spawn_items, "specors_outfit") table.insert(spawn_items, "wpn_ak74") table.insert(spawn_items, "ammo_5.45x39_ap") table.insert(spawn_items, "ammo_5.45x39_ap") table.insert(spawn_items, "ammo_5.45x39_ap") table.insert(spawn_items, "wpn_knife") table.insert(spawn_items, "wpn_fiveseven") table.insert(spawn_items, "ammo_5.7x28") table.insert(spawn_items, "ammo_5.7x28") table.insert(spawn_items, "ammo_5.7x28") table.insert(spawn_items, "medkit") table.insert(spawn_items, "medkit") table.insert(spawn_items, "medkit") table.insert(spawn_items, "bandage") table.insert(spawn_items, "bandage") table.insert(spawn_items, "bandage") db.actor:activate_slot(2) elseif has_alife_info("bar_psevd_start") then table.insert(spawn_items, "specors_outfit") table.insert(spawn_items, "wpn_groza") table.insert(spawn_items, "ammo_9x39_pab9") table.insert(spawn_items, "ammo_9x39_pab9") table.insert(spawn_items, "ammo_9x39_pab9") table.insert(spawn_items, "ammo_9x39_pab9") table.insert(spawn_items, "ammo_9x39_pab9") table.insert(spawn_items, "wpn_knife") table.insert(spawn_items, "wpn_colt1911") table.insert(spawn_items, "ammo_11.43x23_hydro") table.insert(spawn_items, "ammo_11.43x23_hydro") table.insert(spawn_items, "ammo_11.43x23_hydro") table.insert(spawn_items, "medkit") table.insert(spawn_items, "medkit") table.insert(spawn_items, "medkit") table.insert(spawn_items, "bandage") table.insert(spawn_items, "bandage") table.insert(spawn_items, "bandage") db.actor:activate_slot(2) end local k,v = 0,0 for k,v in pairs(spawn_items) do alife():create(v, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end end Что должно быть?ГГ перемещается, его вещи переносятся в ящик, у него в инвентаре появляется лут. Что имеем?ГГ перемещается, его вещи НЕ переносятся в ящик, у него в инвентаре появляется лут, но постоянно один и тот же (самый первый из списка) Вопрос - как править? Изменено 11 Ноября 2022 пользователем imcrazyhoudini ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
Norman Eisenherz 225 Опубликовано 11 Ноября 2022 Поделиться Опубликовано 11 Ноября 2022 1 hour ago, dsh said: Есть возможность получить доступ к этому окну до того, как оно будет показано и что-то с ним сделать. Я, к примеру, меняю текст этого окна Возможно ли такое повторить на чистом движке и как именно? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
dsh 3 820 Опубликовано 11 Ноября 2022 Поделиться Опубликовано 11 Ноября 2022 4 hours ago, mole venomous said: не есть хорошо для сейва. Почему? @Купер ну-у-у.., мягко говоря, все не так однозначно. Начнем с того, что нет никакой проблемы, что кто-там ходит через Бар. У меня в моде почти все, кроме Свободовцев, ходят через Бар. И никому это не мешает, а даже наоборот, наполняет эту локацию жизнью и событиями. Потом, есть же возможность вертексы помечать и указывать, кому по каким вертексам нельзя ходить. Это что бы кто-нибудь не материализовался в бункере у Сахарова. А группы - это по большей части костыль. Вот вспомним X-18, к примеру. Там псевдогигант есть и гулаг для него, насколько я помню. Так вот, без выноса X-18 в отдельную группу, туда будут приходить новые псевдогиганты, по мере убывания предыдущих. Вот и сделали отдельную группу, что бы никто в X-18 прийти не мог. Но это костыль. А не костыль, это поместить там псевдогиганта с персональной логикой, без всякого смарта. Нет смарта - никто никуда не пойдет - нет проблем. А что бы не ходили через Бар, опять таки, да ведь мы имеем полный контроль в скриптах и может кому угодно запретить выходить в онлайн там, где нам нужно и когда нужно. 3 hours ago, Norman Eisenherz said: Возможно ли такое повторить на чистом движке и как именно? Рассказываю один раз. Можно даже в какой-нибудь FAQ добавить. Берешь исходники оригинального движка. Поверх копируешь исходники OGSR, соглашаясь на замену. Собираешь. Вуаля. Не благодари. 3 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
ALEKCZY 0 Опубликовано 12 Ноября 2022 Поделиться Опубликовано 12 Ноября 2022 Ребят знает кто, как самому добавить "безопасные зоны" в которых никогда не заспавнятся динамические аномалии как в амк? Ссылка на комментарий
imcrazyhoudini 177 Опубликовано 12 Ноября 2022 Поделиться Опубликовано 12 Ноября 2022 Пытаюсь сделать ограничение на удаление каких-либо секций на арене. Скрытый текст local obj = { ["stalker"] = true, ["destroyable_object"] = true, ["object"] = true, } function purge_arena_items(name) local arena_zone = arena_zones[name] if (obj:section()~="stalker" or obj:section()~="object" or obj:section()~="destroyable_object") and arena_zone then arena_zone:purge_items() end end Вылетает: Скрытый текст [error]Expression : FATAL ERROR [error]Function : CScriptEngine::lua_pcall_failed [error]File : D:\a\OGSR-Engine\OGSR-Engine\ogsr_engine\COMMON_AI\script_engine.cpp [error]Line : 46 [error]Description : [CScriptEngine::lua_pcall_failed]: .... shadow of chernobymod\gamedata\scripts\xr_zones.script:103: attempt to call method 'section' (a nil value) В таком случае - как написать правильно функцию? ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
gam 116 Опубликовано 12 Ноября 2022 Поделиться Опубликовано 12 Ноября 2022 3 часа назад, imcrazyhoudini сказал: function purge_arena_items(name) local arena_zone = arena_zones[name] if (obj:section()~="stalker" or obj:section()~="object" or obj:section()~="destroyable_object") and arena_zone then arena_zone:purge_items() end end if obj[name] ~= true and arena_zone then 1 Ссылка на комментарий
Norman Eisenherz 225 Опубликовано 12 Ноября 2022 Поделиться Опубликовано 12 Ноября 2022 14 hours ago, dsh said: Рассказываю один раз Ответ уровня "как получить экзо в начале игры: добежать до Припяти". @imcrazyhoudini 1. Что есть obj в purge_arena_items()? Если это таблица, которая указана чуть выше, то для таблиц метода section() нет. Схема проверки для одного объекта: if not таблица[ объект:section() ]. И еще: судя по названиям, это не секции, а классы объектов – см. сверку clsid в [_g.script]. 2. Даже при правильно описанной проверке обработчик [xr_zones.script] arena_zone:purge_items() пройдется по внутренней таблице self.saved_obj и удалит все объекты – проверку надо добавлять именно в этот обработчик, сразу после if obj ~= nil then. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
imcrazyhoudini 177 Опубликовано 12 Ноября 2022 Поделиться Опубликовано 12 Ноября 2022 27 минут назад, Norman Eisenherz сказал: 2. Даже при правильно описанной проверке обработчик [xr_zones.script] arena_zone:purge_items() пройдется по внутренней таблице self.saved_obj и удалит все объекты – проверку надо добавлять именно в этот обработчик, сразу после if obj ~= nil then. Тут? Скрытый текст local arena_zones = {} class "arena_zone_binder" (object_binder) function arena_zone_binder:__init(obj) super(obj) self.saved_obj = {"stalker","destroyable_object","object"} arena_zones[obj:name()] = self end Если да, то не помогло, но, возможно я не правильно вписал. ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
Norman Eisenherz 225 Опубликовано 12 Ноября 2022 Поделиться Опубликовано 12 Ноября 2022 Внимательнее, пожалуйста: function arena_zone_binder:purge_items() local alife = alife() for k,v in pairs(self.saved_obj) do local obj = alife:object(k) if obj ~= nil then -- тут Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
imcrazyhoudini 177 Опубликовано 12 Ноября 2022 Поделиться Опубликовано 12 Ноября 2022 @Norman Eisenherz надеюсь я не натупил и правильно понял, но всё же: Скрытый текст function arena_zone_binder:purge_items() local alife = alife() for k,v in pairs(self.saved_obj) do local obj = alife:object(k) if obj ~= nil then self.saved_obj = {"destroyable_object","stalker","object"} printf("release object %s, id %s", obj:name(), k) alife:release(obj, true) end end end Такую конструкцию ты имел ввиду? ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
DarkSnowder 897 Опубликовано 12 Ноября 2022 Поделиться Опубликовано 12 Ноября 2022 народ, вопрос на засыпку заспавнил раненого сталкера и монтсра через СДК прописал монстру такую логику Скрытый текст [logic] active = mob_home [mob_home] path_home = agr_fracture_home combat_ignore_cond = {=check_fighting(355)} НПС имеет стори-ид 355, и по идее, строка в логике монстра (combat_ignore_cond = {=check_fighting(355)}) должна заставлять монстра игнорировать НПС, но он всё равно его добивает. как прописать логику монстру так, чтобы он игнорировал раненого сталкера, а не добивал его? Лучше сделать мод с 0, чем пытаться залатать багованный. Ссылка на комментарий
imcrazyhoudini 177 Опубликовано 12 Ноября 2022 Поделиться Опубликовано 12 Ноября 2022 (изменено) @DarkSnowder такие оверрайды для монстров не поддерживаются. friendly = true (до первого хита) braindead = true (полный игнор) Тут уж 100% варик переводить мутанта в другую группировку, arena_monstr вроде игнорит НПС. Изменено 12 Ноября 2022 пользователем imcrazyhoudini 1 ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти