Это популярное сообщение. monk 2 849 Опубликовано 23 Мая 2013 Это популярное сообщение. Поделиться Опубликовано 23 Мая 2013 (изменено) STALKER CS: Final stroke 0.9 Авторы: monk, Kirgudu. Тестер: -Xan39- Размер архива: 1351 Мб http://f22.i-fotki.info/org/ecfdd57b4fe39c3b7a2932087eb895b12ebc7b281049560.jpg Скрытый текст Представляем вашему вниманию STALKER CS: Final stroke. STALKER CS: Final stroke — это мод-сборник фиксов, призванный во первых устранить, по возможности, те недочёты дефолтной игры, мода Old Good Stalker Mod: Clear Sky 1.8 Community Edition, обнаруженные после релиза. Плюс просто захотел добавить разных «красивостей», которые не влияют на баланс игры, но привносят разнообразие в игровой процесс. Скрытый текст Порядок установки: 1) Русская лиц-я версия ЧН 1.5.10; 2) STALKER CS: Final stroke 0.9; После установки начать новую игру. Примечание: мод OGSM CS 1.8 CE Fixes уже включён в данный архив, отдельно ставить не надо. Примечание 2: Файл настройки опций мода fsm_options.script находится по адресу gamedata/scripts. Ссылки на последнюю версию: Часть №1 : https://disk.yandex.ru/d/RkbAXha-tlaplw Часть №2 : https://disk.yandex.ru/d/f9BycCY9Tdu42g Полный список исправлений : https://disk.yandex.ru/d/KDpRLUVCNPDNow Обязательный патч от 10.07.2024: https://disk.yandex.ru/d/_4MN4ZY-UKgjoA Скрытый текст Выражаю огромную признательность тем людям, чьи наработки и идеи я так или иначе использовал.Отдельная благодарность за помощь, советы, идеи: @Kirgudu, @warwer, @Charsi, @Jurok, @power-cat, @Cyclone, @Chriotmao, @Dimus, @Korpus, @gridgt, @-Xan39-, @Bak, @Part1san, @BFG, @nasar75, @Капрал Хикс, @Maksud, @Купер, @alex5773, @Igrok1122, @Ekaina, Pilot, ted.80, volk_40k, hetrikWHY, Nestandart_5443, Драный, BogDIC При описании своей проблемы с модом, обязательно указывайте какая версия игры и мода установлена. Лог вылета выкладывайте начиная со строки "Клиент: Синхронизация". Если строка "Клиент: Синхронизация" в логе отсутствует, то копируйте 10 строк выше строки "FATAL ERROR ". При несоблюдении указанных требований, ваша проблема может остаться только вашей проблемой.Не пользуйтесь автосейвами и квиксейвами. Все сохранения и загрузки только через главное меню игры. Если что-либо самостоятельно правили в моде, то прошу про глюки, вылеты и баги в данной теме не отписывать. Решайте свои проблемы самостоятельно. Никакие ошибки GOG, трилогий, правильных топологий, репаков и прочей пиратской дряни, а также серебряных и иже с ними версий не принимаются. Если у вас такая стоит - это уже ваши проблемы. В теме можете не писать - отвечать не буду. В топике указан правильный порядок установки, ему и следуем. Стим версия также не рассматривается. © monk Изменено 10 Июля пользователем monk 18 61 1 1 3 Ссылка на комментарий
mva71 0 Опубликовано 4 Марта 2015 Поделиться Опубликовано 4 Марта 2015 (изменено) Установил,_но сохранения не работают, вылет с жуком._Вернул файлы, которые заменил фикс,_сохранения все_равно не_работают. Изменено 4 Марта 2015 пользователем Kirgudu Добавлено Kirgudu, 4 Марта 2015 Нарушение пункта 2.5 Правил форума, устное предупреждение. Прошу не забывать про пробелы и знаки препинания. Ссылка на комментарий
Kirgudu 1 217 Опубликовано 4 Марта 2015 Поделиться Опубликовано 4 Марта 2015 Возможно ли ввести в уборщик запрет на удаление трупа, если его инвентарь открыт игроком? Возможно отсрочить уборку трупов, если вообще открыт какой-либо диалог. Инструмент Ссылка на комментарий
warwer 900 Опубликовано 4 Марта 2015 Поделиться Опубликовано 4 Марта 2015 А разве трупы убираются не при переходе на другую локу? Что то я запамятовал... HARDWARM☢D Ссылка на комментарий
Kirgudu 1 217 Опубликовано 4 Марта 2015 Поделиться Опубликовано 4 Марта 2015 При переходе убираются трупы мутантов, оружие, а также могут убираться трупы некоторых квестовых НПС. Обычные же НПС при смерти помещаются в специальную сохраняемую таблицу. Затем, при смерти следующих НПС, идёт перебор этой таблицы, и если время, прошедшее с момента смерти записанного НПС, превышает определённую величину, тогда удаляется этот старый труп. Так вот, можно добавить дополнительную проверку, чтобы такое удаление не происходило в то время, как открыто любое скриптовое окно. К сожалению, я не знаю способа проверить принадлежность открытого инвентаря конкретному объекту. Поэтому только так. Сделать? Инструмент Ссылка на комментарий
monk 2 849 Опубликовано 4 Марта 2015 Автор Поделиться Опубликовано 4 Марта 2015 Сделать? Думаю, что надо попробовать. Лишним не будет. Ссылка на комментарий
Kirgudu 1 217 Опубликовано 4 Марта 2015 Поделиться Опубликовано 4 Марта 2015 https://yadi.sk/d/pqhjUPmsf35zc Заодно слегка оптимизировал чистильщик OGSM. Точно надо проверить, что при удалении любых старых трупов НПС не появилось ошибок. Желательно проверить, что они вообще продолжают удаляться. Вторая задача - проверить отсутствие вылета во время уборки трупа, в инвентаре которого шарим. Но это сложнее поймать, так что как повезёт. В качестве условия можно принять то, что период «состаривания» трупа НПС в скрипте задан равным 15 минутам реального времени. Вот от этого можно и плясать. Инструмент Ссылка на комментарий
monk 2 849 Опубликовано 4 Марта 2015 Автор Поделиться Опубликовано 4 Марта 2015 (изменено) @Kirgudu, пойду проверять. По результату отпишусь. Спасибо. Изменено 4 Марта 2015 пользователем monk Ссылка на комментарий
alex5773 1 330 Опубликовано 4 Марта 2015 Поделиться Опубликовано 4 Марта 2015 (изменено) Kirgudu, и это нормально, так и надо? В смысле "^" , что это означает то, и зачем оно? ---------------------------- Copyright 2010-2011 Minister --------------------------------------------- “борщик бесхозного оружиЯ и залежалых трупов мутантов ----------------------------------------------- Last edit: 04.03.2015 ---------------------------------function clean()local actor_loc = game_graph():vertex(alife():actor().m_game_vertex_id):level_id()for i = 1, 65535 dolocal obj = alife():object(i)if obj thenlocal obj_loc = game_graph():vertex(obj.m_game_vertex_id):level_id()if obj_loc ~= actor_loc then-- if ((IsMonster(obj) and obj.alive and not obj:alive()) orif (isWeapon(obj) and obj.parent_id == 65535 and try_to_release(obj))or (IsStalker(obj) and try_to_release_special_npc(obj))thenogsm.dbglog("ogsm_cleaner_release_"..obj:name())alife():release(obj, true)endendendendendlocal holy_objects = {"^wpn_desert_eagle","^wpn_fn2000","^wpn_aps","^wpn_gsh18","^wpn_tt33","^wpn_fn57","^wpn_akm","^wpn_rpk","^wpn_ak101","^wpn_ak108","^wpn_ump45","^wpn_sig550sniper","^wpn_p90","^mar_wpn_mp5","^mar_wpn_ak74","^mar_wpn_ak74u","^mar_wpn_ak74u_0000","^mar_wpn_ak74u_0001","^mar_boar_weak","^mar_boar_strong","^mar_boar_weak_0000","^mar_boar_weak_0001","^mar_boar_weak_0002","^mar_wpn_vintorez","^gar_dog_normal_messenger_dead_1","^gar_dog_normal_messenger_dead_2","^gar_dog_normal_messenger_dead_3","^gar_dog_normal_messenger_dead_4","^gar_wpn_pm","^esc_wpn_ak74u","^esc_grenade_rgd5","^esc_grenade_rgd5_0000","^esc_grenade_rgd5_0001","^esc_grenade_rgd5_0002","^esc_grenade_rgd5_0003","^esc_dog_normal","^esc_dog_normal_0000","^esc_dog_normal_0001","^esc_dog_weak","^esc_dog_weak_0000","^esc_dog_strong","^esc_dog_strong_0000","^esc_wpn_wincheaster1300","^esc_grenade_rgd5_0004","^esc_wpn_fort","^esc_medkit","^agr_dog_strong","^agr_dog_strong_0000","^agr_dog_normal","^agr_dog_weak","^agr_dog_strong_0001","^agr_dog_weak_0000","^agr_dog_strong_0002","^agr_dog_strong_0003","^agr_dog_strong_0004","^agr_dog_normal_0000","^agr_dog_weak_0001","^agr_dog_normal_0001","^agr_dog_strong_0005","^agr_dog_normal_0002","^agr_dog_weak_0002","^agr_dog_weak_0003","^agr_bloodsucker_normal_0000","^agr_dog_normal_0003","^agr_dog_normal_0004","^agr_dog_strong_0007","^agr_dog_strong_0008","^agr_dog_weak_0004","^agr_dog_weak_0005","^agr_dog_normal_0005","^agr_tushkano_normal","^agr_tushkano_normal_0000","^agr_tushkano_normal_0001","^agr_tushkano_normal_0002","^agr_tushkano_normal_0004","^agr_tushkano_normal_0006","^agr_tushkano_normal_0007","^agr_wpn_walther","^agr_grenade_rgd5","^mil_bloodsucker_strong","^mil_wpn_ak74","^mil_wpn_ak74_0000","^mil_wpn_ak74_0001","^mil_wpn_ak74_0002","^mil_grenade_f1","^mil_grenade_f1_0000","^mil_grenade_f1_0001","^mil_wpn_abakan","^mil_wpn_abakan_0000","^mil_wpn_abakan_0001","^mil_wpn_abakan_0002","^red_wpn_rg%-6","^lim_wpn_rg%-6"}function try_to_release(obj)local obj_name = obj:name()for i = 1, #holy_objects doif string.find(obj_name, holy_objects) then return false endendreturn trueendfunction try_to_release_special_npc(obj)-- экологи на Ѓолотах после первого перехода на другую локациюif string.find(obj:name(), "^marsh_dead_ecolog") then return true end-- бойцы —Ќ на Ѓолотах после посещениЯ Љордонаif has_alife_info("esc_visited_level") and string.find(obj:name(), "^mar_stalker") then return true end-- бандиты на Љордоне после финального диалога с •алецким (или о •алецком с ‚алерьЯном?)if has_alife_info("esc_prisoner_complete_dialog") and string.find(obj:name(), "^esc_bandit_dead") then return true end-- сталкеры на ‘валке после перехода в ’Юмную долинуif has_alife_info("val_talked_to_blockpost_leader_complete") thenif string.find(obj:name(), "^gar_stalker_corpse") or string.find(obj:name(), "^gar_sim_default_digger") then return true endend-- бойцы ‘вободы в ’Юмной долине после перехода на Ђгропромif has_alife_info("agr_garbage_end") thenif string.find(obj:name(), "^val_freedom_dead_blockpost") or string.find(obj:name(), "^val_stalker_corpse") then return true endend-- сталкеры на Ђгропроме после ???if has_alife_info("agr_actor_inside_9") and string.find(obj:name(), "^agr_stalker_corpse") then return true end-- сталкеры в ђыжем лесу после нахождениЯ телепортаif has_alife_info("red_actor_find_teleport") and string.find(obj:name(), "^red_stalker_0001") then return true endend---------------- “борщик бесхозного оружиЯ и залежалых трупов мутантов -------------------------------------------- Copyright 2010-2011 Minister ----------------------------- Изменено 4 Марта 2015 пользователем alex5773 Ссылка на комментарий
Max Warlock 398 Опубликовано 4 Марта 2015 Поделиться Опубликовано 4 Марта 2015 @alex5773, что-то вроде, "если в X содержится y". Хотя я тоже не понимаю, зачем это в некоторых местах. Как по мне, то лишний наворот. Не везде он необходим. Ссылка на комментарий
Kirgudu 1 217 Опубликовано 5 Марта 2015 Поделиться Опубликовано 5 Марта 2015 (изменено) Использование знака «^» при вызове метода string.find( a, b ) означает, что строка b должна найтись в самом начале строки a. Пример: string.find("Слон может работать хоботом", "^Слон может") - вернёт 1, 10 (начало и конец найденного фрагмента) string.find("Слон может работать хоботом", "^работать хоботом") - вернёт nil Впрочем, давайте не оффтопить, это вопрос для темы «Скриптование». А вот что я увидел - так это какую-то неправильную, судя по русскому тексту, кодировку файла. Возможно, Mac-кодировка затесалась. Поправлю и перешлю автору. Изменено 5 Марта 2015 пользователем Kirgudu Инструмент Ссылка на комментарий
monk 2 849 Опубликовано 6 Марта 2015 Автор Поделиться Опубликовано 6 Марта 2015 По результату отпишусь. Пока вылетов не обнаружено. Тестю дальше. 2 Ссылка на комментарий
DJ.Orb.Warpal 40 Опубликовано 9 Марта 2015 Поделиться Опубликовано 9 Марта 2015 Фикс включен в сборник? Ну где вылет на агропроме? Ссылка на комментарий
Dimus 121 Опубликовано 9 Марта 2015 Поделиться Опубликовано 9 Марта 2015 Отвечу вопросом на вопрос: каким образом этот фикс может быть включен в сборник фиксов от 30.12.2014, если вылет на Агропроме был обнаружен уже после выпуска этой версии сборника? Ведь @monk выкладывал обязательный фикс (рабочая ссылка на предыдущей странице), а не перезаливал исправленную версию сборника. Ссылка на комментарий
monk 2 849 Опубликовано 9 Марта 2015 Автор Поделиться Опубликовано 9 Марта 2015 Всё-таки словил вылет при обыске трупа... Ладно, тестю дальше. Ссылка на комментарий
Dimus 121 Опубликовано 10 Марта 2015 Поделиться Опубликовано 10 Марта 2015 Хочу спросить у знатоков следующее: почему у тайников, наводки на которые продают NPC в баре на базе "Долга", указано community = duty? [agr_duty_trader_secret_1] target = agr_duty_trader_secret_1 name = agr_duty_trader_secret_1_name description = agr_duty_trader_secret_1_descr items = medkit_army, 1, antirad, 2 community = duty condlist = {-agr_duty_trader_secret_1 +agr_duty_trader_secret_1_give} true treasure_cost = 800 say_item_name = false [agr_duty_bar_secret_1] target = agr_duty_bar_secret_1 name = agr_duty_bar_secret_1_name description = agr_duty_bar_secret_1_descr items = ammo_vog-25, 4 community = duty condlist = {-agr_duty_bar_secret_1 +agr_duty_bar_secret_1_give} true treasure_cost = 300 say_item_name = false [agr_duty_bar_secret_2] target = agr_duty_bar_secret_2 name = agr_duty_bar_secret_2_name description = agr_duty_bar_secret_2_descr items = medkit_army, 1, ammo_m209, 2 community = duty condlist = {-agr_duty_bar_secret_2 +agr_duty_bar_secret_2_give} true treasure_cost = 900 say_item_name = false [agr_duty_bar_secret_3] target = agr_duty_bar_secret_3 name = agr_duty_bar_secret_3_name description = agr_duty_bar_secret_3_descr items = ammo_m209, 4 community = duty condlist = {-agr_duty_bar_secret_3 +agr_duty_bar_secret_3_give} true treasure_cost = 400 say_item_name = false [agr_duty_bar_secret_4] target = agr_duty_bar_secret_4 name = agr_duty_bar_secret_4_name description = agr_duty_bar_secret_4_descr items = medkit, 2, medkit_army, 1, antirad, 1 community = duty condlist = {-agr_duty_bar_secret_4 +agr_duty_bar_secret_4_give} true treasure_cost = 1200 say_item_name = false Во первых, почему именно duty, а не dolg? Во вторых, у прочих квестовых тайников не указана принадлежность к группировке. Насколько я понял, параметр community нужен для случайных тайников. Ссылка на комментарий
monk 2 849 Опубликовано 10 Марта 2015 Автор Поделиться Опубликовано 10 Марта 2015 @Dimus, так как тайники покупные, то вообще не важно, что там написано дути или долг. Можешь написать хоть монолит, хоть вообще убрать - всё равно их будут продавать посетители бара Колобка. Ссылка на комментарий
Dimus 121 Опубликовано 10 Марта 2015 Поделиться Опубликовано 10 Марта 2015 А как насчёт тайников типа "Сейф Валерьяна", "Тайник майора Халецкого", "Тайник Контрабандиста" и т.п.? Там нужно указывать параметр community? Ссылка на комментарий
monk 2 849 Опубликовано 10 Марта 2015 Автор Поделиться Опубликовано 10 Марта 2015 (изменено) @Dimus, не знаю. Но если убрать этот параметр у тайника Репкина или Сидора, то они не продают тайники. Можно поэкспериментировать с тайниками Валерьяна и Халецкого. Но вот скажи: зачем оно тебе? Всё работает? Работает. Так, как говорится, зачем чинить то, что не сломано? Изменено 10 Марта 2015 пользователем monk 1 Ссылка на комментарий
Dimus 121 Опубликовано 12 Марта 2015 Поделиться Опубликовано 12 Марта 2015 У кого и при каких условиях в моде OGSM со сборником фиксов можно получить на Кордоне наводку на тайник новичка? [esc_treasure_novice_stalker] ;Тайник новичка target = esc_treasure_novice_stalker name = esc_treasure_novice_stalker_name description = esc_treasure_novice_stalker_descr items = ammo_5.45x39_ap, 180 community = stalker condlist = false Информация об остальных тайниках на этой локации (включая все случайные) уже получена. Ссылка на комментарий
monk 2 849 Опубликовано 12 Марта 2015 Автор Поделиться Опубликовано 12 Марта 2015 @Dimus, этот тайник продаёт Бродяга, которого спасаешь по просьбе Волка. И мод ОГСМ или мой сборник тут совсем не причём, так с дефолта ещё идёт. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти