RayTwitty 492 Опубликовано 13 Декабря 2014 Поделиться Опубликовано 13 Декабря 2014 if outfit and outfit:section() == "my_super_duper_outfit" then db.actor.power = db.actor.power + 0.1 endpower это же свойство. Получается к уже прибавленному 0.1, будет прибавляться текущее значение выносливости. Надо писать db.actor.power = 0.1. Ссылка на комментарий
BlooderDen 233 Опубликовано 13 Декабря 2014 Поделиться Опубликовано 13 Декабря 2014 power это же свойство , я думал что db.actor.power это собственно силы гг - то есть полоска выносливости. Следовательно получится что мы сделаем ее рамной 0.1 - то есть 10% сил у гг будет. Я не прав ? , прошу прощения. Теперь я понял. db.actor.power у нас это то что отнимается или добавляется к силам гг в зависимости от знака. Может быть от 0 (нет смысла включать) до 1, где 1 - 100% сил. То есть если db.actor.power = -1 и зацикленно в апдейте - гг не может двигаться (в NLC - жадинка. там нашел). Зная это - можно придумать и свою формулу. Это именно то что я искал. Ну а power_restore_speed - это просто значение к которому движок приравнивает db.actor.power. То есть общая скоросто восстановления(или убытка) сил считается по формуле db.actor.power = power_restore_speed(от артефактов - движок) + power_restore_speed(костюма). Вот на выходе и получается то что нужно. И все это в сумме не должно превышать 1. Сталкер: Когда человек родится, он слаб и гибок, когда умирает, он крепок и черств. Когда дерево растет, оно нежно и гибко, а когда оно сухо и жестко, оно умирает. Черствость и сила спутники смерти, гибкость и слабость выражают свежесть бытия. Поэтому что отвердело, то не победит. из фильма 1979 года режиссёра Андрея Тарковского по сценарию братьев Стругацких. Мои звуки и прочее для dsh_mod , Мои звуки АК, Модифицирование NLC 6 Long Way Mod, Умное выпадение запчастей мутантов для ОП-2 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 14 Декабря 2014 Поделиться Опубликовано 14 Декабря 2014 (изменено) Интересно, только я вижу здесь странное (xr_meet.script): function Cmeet_manager:get_key_from_distance(t) local key for k,v in pairs(t) do if v.dist >= self.dist then key = k else return key end end return key endили ни кто сложной логики типа 40|something1, 20|something2, 10|something3 - никогда не писал, а потом не удивлялся результату ?Все всегда пишут 5|... , 10|... , 20|... ? Или в данном случае сортировка движком при заполнении таблицы все же срабатывает правильно ? 2 BlooderDen, да, просто я забыл за давностью лет: при чтении получаем текущее значение, а при записи - записанное суммируется с текущим. Повесить на выполнение, скажем, раз в пять секунд вывод в лог что-то типа log( "test", "actor.power = %s", actor.power ) actor.power = 0.1 log( "test", "actor.power > %s", actor.power ) - все будет вполне наглядно - вместо того, чтобы упало до 0.1 - второй раз будет то же значение, а после завершения текущего апдейта - добавится вот этот самый 0.1. Кстати, если хочется посмотреть, как влияют те же арты, или еще что - вешаем на раз в секунду, и получаем как раз сумму всего-всего за эту секунду. Весьма наглядно. Изменено 14 Декабря 2014 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
BlooderDen 233 Опубликовано 14 Декабря 2014 Поделиться Опубликовано 14 Декабря 2014 при чтении получаем текущее значение, а при записи - записанное суммируется с текущим. Огромное спасибо - два в одном(). Это круто и очень удобно =) Кстати, если хочется посмотреть, как влияют те же арты, или еще что - вешаем на раз в секунду, и получаем как раз сумму всего-всего за эту секунду. Весьма наглядно. Так и думал проверить подобным образом. Не успел - разжевали все до пыли и в рот положили =) Спасибо огромное всем-всем! Сталкер: Когда человек родится, он слаб и гибок, когда умирает, он крепок и черств. Когда дерево растет, оно нежно и гибко, а когда оно сухо и жестко, оно умирает. Черствость и сила спутники смерти, гибкость и слабость выражают свежесть бытия. Поэтому что отвердело, то не победит. из фильма 1979 года режиссёра Андрея Тарковского по сценарию братьев Стругацких. Мои звуки и прочее для dsh_mod , Мои звуки АК, Модифицирование NLC 6 Long Way Mod, Умное выпадение запчастей мутантов для ОП-2 Ссылка на комментарий
Dniwe 3 Опубликовано 14 Декабря 2014 Поделиться Опубликовано 14 Декабря 2014 (изменено) Товарищи, подскажите функцию, которая при использовании каждый раз выдаёт разные тайники . То есть говоря проще, функцию на рандомную выдачу тайника @Dniwe, В оригинале ТЧ к примеру этим заведует treasure_manager.script.сколько в нем не ковырял, нужного не нашёл... Знаю что задаётся переменная, которой присваивается список нужных тайников. И через Math. random используется Изменено 19 Декабря 2014 пользователем Dennis_Chikin Добавлено Dennis_Chikin, 22 Декабря 2014 В прозекторской лежит "соляночный", там все откомметировано и приведено в читаемый вид. Можно посмотреть нужные подробности. Ссылка на комментарий
AnonimA 1 Опубликовано 19 Декабря 2014 Поделиться Опубликовано 19 Декабря 2014 (изменено) Подскажите как изменить место старта игры.ps. не через sdk Изменено 19 Декабря 2014 пользователем AnonimA Ссылка на комментарий
Zander_driver 10 334 Опубликовано 19 Декабря 2014 Поделиться Опубликовано 19 Декабря 2014 Через алл.спавн например. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 19 Декабря 2014 Поделиться Опубликовано 19 Декабря 2014 Если уж в скриптовании, то в bind_stalker.script после if self.bCheckStart then ... _G.g_start_avi = true дописать self.object:set_actor_position( куда надо ) 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Карлан 1 049 Опубликовано 19 Декабря 2014 Поделиться Опубликовано 19 Декабря 2014 @Dennis_Chikin, оно только в пределах текущей локации, корректнее делать именно через all.spawn. 1 Ссылка на комментарий
AnonimA 1 Опубликовано 20 Декабря 2014 Поделиться Опубликовано 20 Декабря 2014 Помогите с отключением ролика в начале игры на ЧН. Пробовал сам разобраться через ui_movies, но без результатов. Ссылка на комментарий
Romann 620 Опубликовано 20 Декабря 2014 Поделиться Опубликовано 20 Декабря 2014 AnonimAПосмотри в ui_mm_main.xml Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz). Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб). Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий
Notfounded 0 Опубликовано 21 Декабря 2014 Поделиться Опубликовано 21 Декабря 2014 Здравствуйте, собственно, появилась одна нерешаемая для меня задачка: if self.tt if gi and gi:parent()==nil then items_value = 0gi:iterate_inventory(function (d,item)if lootable_table[item:section()] == true thenif items_value < 100 thenitems_value = items_value+item:cost()*item:condition()/30endgi:transfer_item(item,npc)endif items_value >= 100 thenself.st.block_search=truexr_sound.set_sound_play(self.object,"corpse_loot_good")elseif items_value > 0 and math.random(items_value) < 50 thenself.st.block_search=truexr_sound.set_sound_play(self.object,"corpse_loot_bad")endend, nil)corpse_checked[gi:id()]=falseendclearGObject(self.st)endend ()> Привел часть модифицированного кода из скрипта обыска трупов. Проблема состоит в том, что при наличии более одного трупа рядом с НПС (учитывается также и бесхозное оружие) он обрывает звук (выдрал фразы НПС из ЗП, когда они после обыска радуются или злятся, в зависимости от ценности трофеев) Пробовал ставить задержки (я в этом слабоват, поэтому так и не понял как нормально поставить задержку на действие). Чем можно исправить этот недочет? (А да, на всякий случай - скрипт для ТЧ от Red75) Ссылка на комментарий
перегар 94 Опубликовано 21 Декабря 2014 Поделиться Опубликовано 21 Декабря 2014 (изменено) Всем здравствуйте! Вопрос: копал торговлю и подумал что ведь есть наверное функция удаления предметов из ивентаря нпс, "торговцев", при продаже ему чего либо, заодно бы убрать полотна после [generic_sell] оставив только то чем он торгует, ведь ассортимент минимален по сравнению с тем что тама понаписано. В поиске по инету нашел только строчку actor_binder: on_item_take(obj), но самой функции нету, если не трудно подскажите. ---------- Хотя простых неписей лучше не трогать, а то не вооружить не приодеть не получится. Изменено 21 Декабря 2014 пользователем перегар Все мы могли бы быть разными, если не были бы так одинаковы.Нам что водка, что пулемёт - лишь бы с ног валило. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 21 Декабря 2014 Поделиться Опубликовано 21 Декабря 2014 (изменено) Вот та самая ссылка, которая в голосовалке зачем-то - в ей все и есть. str = pick_section( actor, npc, tt.buy_supplies ) if ( tt.current_buy_supplies ~= str ) or ( not tt.resuply_time ) or tt.resuply_time < game.get_game_time() then npc:buy_supplies( tt.config, str ) -- здесь все и удаляется. Кстати, поправил вчера вот как раз чтоб get_game_time() сравнивалось, а не глобальное. А ежели buy_supplies нету - оно до этого момента и не добирается. Ну и таки да, все полотна про 15700 костюмов с мигающими красным ПНВ все нормальные люди из всех конфигов посносили лет 5 назад, потому что по дефолту все прекрасно берется из system.ltx [trade] buy_price_factor_hostile = ; коэффициент покупки при goodwill = -100 buy_price_factor_friendly = ; коэффициент покупки при goodwill = 100 sell_price_factor_hostile = ; коэффициент покупки при goodwill = -100 sell_price_factor_friendly = ; коэффициент покупки при goodwill = 100 Изменено 21 Декабря 2014 пользователем Dennis_Chikin 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Overfirst 631 Опубликовано 22 Декабря 2014 Поделиться Опубликовано 22 Декабря 2014 (изменено) Ребята, как сделать таймер без вывода на худ, время которого подойдет к концу и выдается инфопоршень?Я делаю мод на АМК Изменено 22 Декабря 2014 пользователем BoBaH_671 Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Eugen81 1 008 Опубликовано 22 Декабря 2014 Поделиться Опубликовано 22 Декабря 2014 как сделать таймер без вывода на худ, время которого подойдет к концу и выдается инфопоршень? local timer = 0 function твоя_функция(delta) if not has_alife_info("твоя_инфо_порция") then --// если в игре нет инфо, то timer = timer+delta if timer>2000 then --// устанавливаем промежуток времени. сейчас 2 секунды db.actor:give_info_portion("твоя_инфо_порция") --// выдаем инфо end end end Вешать на апдейт актора в bind_stalker.script --// после строки function actor_binder:update(delta) --// добавить свой вызов твой_скрипт.твоя_функция(delta) 2 Ссылка на комментарий
svarog2741 83 Опубликовано 23 Декабря 2014 Поделиться Опубликовано 23 Декабря 2014 Ребят, напиши в лс. Как зарегистрировать новые анимации НПС? Чтоб сталкер мог их использовать при помощи логики. 1 НС - шлак, солянки - шлак. Ссылка на комментарий
Полтергейст 37 Опубликовано 26 Декабря 2014 Поделиться Опубликовано 26 Декабря 2014 (изменено) Выкладываю все накопившиеся скриптовые правки, т.к. времени на доработку всё меньше. Может понадобится кому. http://rghost.ru/59995539 Кому интересно, можете потестить или использовать правки в своих модах. Небольшое описание того, что я там накодил и зачем это может понадобиться (вчера времени хватило только на readme, поэтому пишу сейчас). В архиве лежит папка с правлеными скриптами оригинала ТЧ 1.0006 со скриптами от мода "AI вертолётов" (тоже правлеными). Изменения: Дописана и переписана внушительная часть скриптов, на которых работает игровая логика и которые в модах почти никто существенно не меняет. Скрипты серверных объектов: Класс гулагов (который в оригинале вынесен в файл xr_gulag) объединён с серверным классом самого smart_terrain. Переписан механизм выбора смартов и назначения работ. Хранение npc_info и индексов работ перенесено в серверные объекты классов se_stalker и se_monster. Хранение информации о логике людей и зверюшек (секция логики, активная секция и т.д.) также перенесено в их серверные объекты. Изменены условия для наполнения "рейдовых" работ. Скрипты клиентских объектов: В state_mgr полностью вырезана обработка "animstate", вместо которых введена возможность добавлять переходы из одной анимации в другую (минуя into/out анимации). Можно добавлять параметры at и dt, которыми можно задать произвольное время attach/dettach предметов после начала анимации. Добавлена возможность ставить непрерывные последовательности из нескольких анимаций для отыгрывания случайных анимаций. Восстановлены кое-какие старые анимации. И самое главное - все скриптовые действия обрабатываются отдельным планировщиком, в motivation_action_manager ничего постороннего добавлять нельзя. move_mgr не нужно обновлять искусственно, для установки целевого пути или вершины уровня достаточно вызвать set_movement или reset. Прочее: Небольшие изменения task_manager'а. Теперь для заданий на защиту и уничтожения лагеря надо указывать защищаемых или зачищаемых группировок во избежание путаницы. Из дополнительных скриптов (которых нет в оригинале) используется: - Offline alife, динамические аномалии и выброс от amk - Обход аномалий (своя реализация) - Подбор предметов (из билда AMKII) - Скрипты от мода "AI вертолётов" от Kirag. Из существенного вроде всё, остальное - правка багов, оптимизация и правки для упрощения отладки. Некоторые правки ещё сыроваты, требуют тестирования и доработки. К ним можно отнести: 1) Совместимость механизма обхода аномалий с выбросом - хоть я и везде поставил удаление рестрикторов при уходе game_object в оффлайн, иногда всё же могут проявляться вылеты. Либо я где-то чего-то не доглядел, либо это баг в движке. 2) "Рейдовые" работы и их использование в заданиях на защиту лагеря надо ещё потестировать, правка относительно свежая. 3) Кое-какие восстановленные анимации надо переназначить на другие состояния/слоты анимации, или отключить. Из известных недоработок - вырезана пси-раненность и использование схемы xr_detector. Первое планировалось заменить на полноценную схему поведения, второе убирал для тестов, а вспомнил об этом только после того, как выложил. Вырезано управление переходом online/offline со стороны работ, но это не баг - так и планировалось сделать после добавления amk offline alife. Впрочем, если это для кого-то критично, не сложно вернуть обратно. Из-за введения отдельного скриптового планировщика могут возникнуть сложности с адаптацией схем поведения NPC, но по примерам существующих схем можно разобраться. Что можно просто взять и перетащить к себе в мод почти без адаптации: - скрипт для добавления и удаления меток (файл mapspots.script и строки в bind_stalker.script с отсылками к нему) - файл class_registrator.script - намного упрощает поиск названий серверных и клиентских классов, а также их clsid и конфиговых имён. - функции check_gvid и validate_accessibility из файла move_mgr - функции add_call_source_marker и remove_call_source_marker и используемые в них таблицы - для отлавливания зависших вызовов и измерения времени работы вызываемых функций. Изменено 10 Января 2015 пользователем BFG 2 1 Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 2 Января 2015 Поделиться Опубликовано 2 Января 2015 Господа присяжные заседатели ! А не может ли кто-нибудь либо кинуть ссылко на статеечку, либо написать собственно эту самую статеечку про схемы, а конкретно вот про такую черную магию: evid_see_stuff = 6931 -- evid_near_stuff = evid_see_stuff + 1 -- evid_see_body = evid_see_stuff + 1 -- 2 -- evid_position_corrected = evid_see_stuff + 3 actid_reach_item = evid_see_stuff function add_to_binder( npc, ini, scheme, sect, st ) local manager = npc:motivation_action_manager() local prop_idlecombat = xr_evaluators_id.state_mgr + 3 local prop_contact = xr_evaluators_id.stohe_meet_base + 1 manager:add_evaluator( evid_see_stuff, ev_see_stuff( st, "ev_see_stuff" ) ) action = act_reach_item( "act_reach_item", st ) action:add_precondition( world_property( stalker_ids.property_alive, true ) ) action:add_precondition( world_property( stalker_ids.property_enemy, false ) ) action:add_precondition( world_property( stalker_ids.property_danger, false ) ) action:add_precondition( world_property( prop_contact, false ) ) action:add_precondition( world_property( xr_evaluators_id.sidor_wounded_base, false ) ) action:add_precondition( world_property( blowout_scheme.evid_anomaly, false ) ) action:add_precondition( world_property( blowout_scheme.evid_blowout, false ) ) action:add_precondition( world_property( evid_see_stuff, true ) ) -- action:add_precondition( world_property( evid_near_stuff, false ) ) action:add_precondition( world_property( prop_idlecombat, true ) ) -- action:add_effect( world_property( evid_near_stuff, true ) ) action:add_effect( world_property( evid_see_stuff, false ) ) manager:add_action( actid_reach_item, action ) action = manager:action( xr_actions_id.alife ) action:add_precondition( world_property( evid_see_stuff, false ) ) -- action = manager:action( stalker_ids.action_danger_planner ) -- action:add_precondition( world_property( evid_see_stuff, false ) ) end - ну, это я тут позакомментировал ненужного мне, поскольку переписано со сносом over 2/3 исходного, но собственно вопросы по черной магии: evid_see_stuff = 6931 -- откуда берется сия магическая цифра ? actid_reach_item = evid_see_stuff -- почему должна быть она же, а не какая другая. local prop_idlecombat = xr_evaluators_id.state_mgr + 3 -- для чего здесь и далее вот это local prop_contact = xr_evaluators_id.stohe_meet_base + 1 -- и откуда оно опять таки берется. Ну, то есть, интуитивно (и дальнейшими тестами) понятно, что первое - дабы не получилось анимации из анекдота про "до батареи одни уши доехали", а второе - чтобы разговор не обрывал, и актора не подвешивал. Но а по-русски это все как сказать ? И, опять же, по-русски - почему недостаточно просто action = manager:action( xr_actions_id.alife ) action:add_precondition( world_property( evid_see_stuff, false ) ) Наконец, самое интересное, это вот это магическое сочетание: action:add_effect( world_property( evid_see_stuff, false ) ) manager:add_action( actid_reach_item, action ) - где add_effect со значением false не понятен даже и интуитивно, хотя вполне нагляден, если и его закомментировать. Ну или в оригинале примерно ту же функцию выполняет эквилибристика с evid_near_stuff. Не, если я это сам начну расписывать - то даже и сам же потом не пойму. А кому-то, глядишь, могла бы и польза выйти. Да и себе бы сегодня день сэкономил на вспоминание "кто на ком стоял", если бы статеечка была. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Desertir 202 Опубликовано 2 Января 2015 Поделиться Опубликовано 2 Января 2015 Та самая статья, про которую я где то уже упоминал. Там вроде все тобой спрошенное описано. Там вообще вся скриптовая логика описана ТЧ 1.0004. SAP и Trans mod github Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти