naxac 2 445 Опубликовано 3 Ноября 2021 Поделиться Опубликовано 3 Ноября 2021 @Colder , потому что имя - это параметр inv_name в секции. Т.е. должно быть gts(system_ini():r_string(section_ammo, "inv_name")) 1 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Colder 12 Опубликовано 3 Ноября 2021 Поделиться Опубликовано 3 Ноября 2021 И еще вопрос. Можно как-то исправить длинющий вывод condition оружия https://yadi.sk/i/2KXBYb8CstNu4Q Скрытый текст function weapon_info() local time = time_global() if time_add == nil then time_add = time_global() + time_update end local active_slot = act:active_item() if active_slot and act:active_slot()==2 then if time > time_add then time_add = time_global() + time_update local sect = act:item_in_slot(2):section() local name = tostring(system_ini():r_string(sect,"inv_name_short")) condition = act:item_in_slot(2):condition() local text = "\\n%c[white]Текущее оружие: \\n%c[d_green]"..gts(tostring(name)).."\\n%c[d_cyan]состояние : "..gts(tostring(condition)) act:give_game_news(text,"ui\\cop\\ui_cop_iconstotal",Frect():set(664,329,83,47),150,5000) end time_add = nil end end Ссылка на комментарий
I am Dead 912 Опубликовано 3 Ноября 2021 Поделиться Опубликовано 3 Ноября 2021 @Colder А что именно длюнющее? Ссылка на комментарий
mole venomous 3 394 Опубликовано 3 Ноября 2021 Поделиться Опубликовано 3 Ноября 2021 @Colder Как я понимаю, речь о большом кол-ве цифр? Запиши в глобал спейс ф-ию округления до указанной точности: Скрытый текст function math.round(v, exp) if v then if not exp then exp = 0 end return tonumber(string.format("%."..exp.."f", v)) end end v - число, которое округляем exp - как округляем, кол-во знаков после запятой И используй её: Скрытый текст local cond = math.round(condition, 2) 1 Здесь могла быть ваша реклама. Ссылка на комментарий
AndreySol 215 Опубликовано 3 Ноября 2021 Поделиться Опубликовано 3 Ноября 2021 @mole venomous А зачем этот вот math.round? А просто в самой ф-ции format указать округление, что уже не работает? string.format("pX = %.4f, pY = %.4f, pZ = %.4f.... 1 1 1 Ссылка на комментарий
mole venomous 3 394 Опубликовано 3 Ноября 2021 Поделиться Опубликовано 3 Ноября 2021 4 минуты назад, AndreySol сказал: А зачем этот вот math.round Использовать в дальнейшем, как любой другой math., string. и т.д. Вполне удобно. 1 Здесь могла быть ваша реклама. Ссылка на комментарий
Firestarter 3 Опубликовано 7 Ноября 2021 Поделиться Опубликовано 7 Ноября 2021 Я прошу прощения заранее, если это обсуждалось где, пожалуйста не бейте я честно пользовался поисковиком в данной теме по контрольным словам Борода; Артефакты на Заказ; b29 Скрытый текст Здравствуйте. Давеча заинтересовался вопросом касательно квеста "Артефакты на заказ" от Бороды, что на Затоне. До сегодняшнего дня единственным верным для меня этот квест существовал только если у меня есть в карманах подходящий арт. Но, т.к. решил перепройти сталкер и мб даже открыть для себя что новое. И решил я таки попытать счастье с этим квестом, хоть и не нравился он мне (не получалось найти нужный арт). Обнаружил некую закономерность, что должно пройти некоторое время после взятия квеста. Отметил, что выброс может в этом плане помочь, "обновляя" содержимое аномалии (это знаю лишь из собственных наблюдений + википедии, в файлах пока не находил). Плюс, пару раз удавалось поймать сигнал группы, что либо ищет/либо уже нашла нужный арт. Начал рыться по файлам. В файле dialogs_zaton.script обнаружил много интересного - какие арты нужны для поиска (прямо не указано, но банальная сверка с википедией это подтвердила): ]]-- [16] = "af_gravi", [17] = "af_eye", [18] = "af_baloon", [19] = "af_dummy_dummy", [20] = "af_gold_fish", [21] = "af_fire", [22] = "af_glass", [23] = "af_ice", } Какие "стволы" группы соперников примут в обмен на искомый арт: function is_good_gun(npc, item) local section = item:section() local wpn_table = { [1] = "wpn_sig550", [2] = "wpn_g36", [3] = "wpn_val", [4] = "wpn_groza", [5] = "wpn_vintorez", [6] = "wpn_fn2000", } Стало понятно, что квест заставляет искомый арт появиться именно на Затоне: local anomalies_names_tbl = { ["gravi"] = { [1] = "zat_b14_anomal_zone", [2] = "zat_b55_anomal_zone", [3] = "zat_b44_anomal_zone_gravi", }, ["thermal"] = { [1] = "zat_b20_anomal_zone", [2] = "zat_b53_anomal_zone", [3] = "zaton_b56_anomal_zone", }, ["acid"] = { [1] = "zat_b39_anomal_zone", [2] = "zat_b101_anomal_zone", [3] = "zat_b44_anomal_zone_acid", }, ["electra"] = { [1] = "zat_b54_anomal_zone", [2] = "zat_b100_anomal_zone", }, } Ну и название квеста: -- Zaton B29, при поиске использовал: zat_b29 Поиск по этому ключевому слову толком ничего в понимании не дал. Нашлась куча файлов, но ничерта не понял, кроме того, что групп - две, что есть некие таймеры поиска артефактов/простоя у этих групп, что группы - вроде как неубиваемы (другими неписями), не реагируют на стрельбу в них (со стороны других НПС). Вопросы: 1)Есть ли закономерность в поиске артов? Т.е. взял квест, и сколько нужно ждать времени/выбросом для 100% нахождения нужного арта/как влияет количество часов/выбросов? Есть ли рандом в этих значениях (исходя из личного наблюдения, видимо, есть)? 1.1)Влияет ли выброс на этот квест и является ли он ключевым для него - то есть - стоит искать арт только после выброса, т.к. обновятся аномалии? (честно сказать, всё ещё в поиске файла, который опишет обновление аномалий на наличие артов); 2)Если есть, то какая закономерность появления групп на поиск? Я пробовал тупо спать чуть ли не каждый час в попытке выловить сигнал и направиться к ним, из многих таких попыток лишь дважды я не проспал. 1 Ссылка на комментарий
Space.Marine 466 Опубликовано 7 Ноября 2021 Поделиться Опубликовано 7 Ноября 2021 4 часа назад, Firestarter сказал: Какие "стволы" группы соперников примут в обмен на искомый арт: А ты уверен, что у тебя "чистый" ЗП? 1 Ссылка на комментарий
Firestarter 3 Опубликовано 7 Ноября 2021 Поделиться Опубликовано 7 Ноября 2021 12 минут назад, Space.Marine сказал: А ты уверен, что у тебя "чистый" ЗП? Не понял, к чему вопрос? Да, чистый. В чистом ЗП можно успеть выловить группу сталкеров, что уже нашли арт и несут на базу, и предложить им обменяться на хороший ствол. Стволы перечислены в вашем цитировании. Ссылка на комментарий
mole venomous 3 394 Опубликовано 8 Ноября 2021 Поделиться Опубликовано 8 Ноября 2021 (изменено) Всем привет. Возможно ли вернуть совокупность иммунитетов к конкретному воздействию (броня + арты, но без того, что в actor.ltx)? OGSR. Или нужно всё "надетое" перебирать? Изменено 8 Ноября 2021 пользователем mole venomous Здесь могла быть ваша реклама. Ссылка на комментарий
dsh 3 824 Опубликовано 8 Ноября 2021 Поделиться Опубликовано 8 Ноября 2021 @mole venomous как можно вернуть то, чего никогда не было? Никогда в сталкере не было броня + арты. Сначала хит проходит через артефакты. Потом то, что осталось от хита, проходит через броню. Надеюсь понятно выразился. 3 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
mole venomous 3 394 Опубликовано 8 Ноября 2021 Поделиться Опубликовано 8 Ноября 2021 @dsh мне не нужен хит. Нужны цифры. В целом, понятно, что остаётся перебирать и читать из конфига. Здесь могла быть ваша реклама. Ссылка на комментарий
dsh 3 824 Опубликовано 8 Ноября 2021 Поделиться Опубликовано 8 Ноября 2021 @mole venomous какие цифры? Что за цифры? А то, как в анекдоте: "Приборы? 200. Что 200? А что приборы?". Хочешь получить нужный ответ, описывай ситуацию точно и подробно. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
mole venomous 3 394 Опубликовано 8 Ноября 2021 Поделиться Опубликовано 8 Ноября 2021 3 минуты назад, dsh сказал: какие цифры? Надет костюм, у него текущий п-тр telepatic_protection = a Повешены арты, сумма их протекции telepatic_protection = b Итого у ГГ, благодаря этим вещам, протекция a + b Вопрос был в том, возможно ли вернуть число a + b на движке ОГСР. Если с костюмом всё прозрачно, то с артами на поясе остаётся только перебор? Нужны цифры, указывающие ВСЮ защиту от конкретного воздействия от всех защитных итемов. Здесь могла быть ваша реклама. Ссылка на комментарий
dsh 3 824 Опубликовано 8 Ноября 2021 Поделиться Опубликовано 8 Ноября 2021 (изменено) @mole venomous теперь кажется понятно. По костюму. У клиентского объекта есть метод get_outfit() local outfit = db.actor:get_current_outfit():get_outfit() То, что будет возвращено - это экспорти класса CCustomOutfit https://github.com/dsh2dsh/OGSR-Engine/blob/f34eae64c24957639a2e61ae5d2050bf2c04840e/ogsr_engine/xrGame/derived_client_classes.cpp#L313 у которого доступны на чтение/запись некоторые свойства. По ссылке можно увидеть их список. Вот для примера функция, обнуляющая всю защиту брони: function zero_outfit_protection( obj ) local outfit = obj:get_outfit() for _, k in ipairs({ "burn_protection", "chemical_burn_protection", "fire_wound_protection", "explosion_protection", "radiation_protection", "shock_protection", "strike_protection", "telepatic_protection", "wound_protection", }) do outfit[ k ] = 0 end end По поводу защиты от артефактов, не могу припомнить, что бы было что, возвращающее суммарную защиту по требуемым типам. Я для этого вот такой скрипт использую https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/inventory.script который ведет реестр объектов на поясе и можно быстро получить информацию типа local burn_immunity = inventory.on_belt_hit_immunity( "burn_immunity" ) local health_restore_speed = inventory.on_belt_restore_speed( "health_restore_speed" ) и т.п. Поискал быстренько в движке и не нашел ничего, что бы для пояса возвращало суммарные защиты. Т.ч. только своим скриптом. Изменено 8 Ноября 2021 пользователем dsh 1 1 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Colder 12 Опубликовано 9 Ноября 2021 Поделиться Опубликовано 9 Ноября 2021 Возможно ли скриптово отследить удар ножом (ТЧ) Ссылка на комментарий
Space.Marine 466 Опубликовано 9 Ноября 2021 Поделиться Опубликовано 9 Ноября 2021 (изменено) 07.11.2021 в 16:01, Firestarter сказал: сколько нужно ждать времени/выбросом периодичность выбросов и начало первого выброса с начала новой игры регулируется в surge_manager.script. От взятого квеста на поиск артов периодичность выбросов, как и появление после них новых артов в аномалиях никак не зависит. Также появление артов в аномалиях после выбросов - рандомно. В скрипте (запамятовал уже в каком) можно указать процент вероятности появления в аномалиях артов после выбросов. Про обмен у групп сталкеров оружия на арты, если честно, слышу впервые, но, судя по скрипту, имеет место быть. Хотя, ИМХО, это совершенно бесполезная штука. Выгоднее просто продавать найденные арты Бороде. Также, с начала игры на Скадовске, мы ограничены детектором Медведь, который поможет нам найти малое кол-во артов из запрашиваемых Бородой. А с момента получения нами детектора помощнее (на Юпитере) пропадает смысл в торговле артами, так как ГГ уже почти миллионэр. Как-то так ) Изменено 9 Ноября 2021 пользователем Space.Marine 1 1 Ссылка на комментарий
Firestarter 3 Опубликовано 9 Ноября 2021 Поделиться Опубликовано 9 Ноября 2021 Только что, Space.Marine сказал: Как-то так ) Ну, по порядку: Скрытый текст 1)Если я правильно понял, то первый выброс, исходя из файла surge_manager.script, это: local START_MIN_SURGE_TIME = 2*60*60 local START_MAX_SURGE_TIME = 4*60*60 т.е. это от двух до четырёх часов игрового времени? Судя по личному опыту - так и есть, первый выброс относительно быстро после старта случается. А вот уже в дальнейшем: local MIN_SURGE_TIME = 12*60*60 local MAX_SURGE_TIME = 24*60*60 Что тоже верно, исходя из игры. 2)По поводу влияния взятого квеста на шанс появления того или иного арта, скорее всего, я ошибался. Чуть погуглив, по пути: ...\gamedata\configs\scripts\zaton\anomaly можно обнаружить файлы аномалий, а в них: [anomal_zone] layers_count = 3 respawn_tries = 1 max_artefacts = 2 ;applying_force_xz = 200 ;applying_force_y = 400 artefacts = af_medusa, af_cristall_flower, af_night_star, af_vyvert, af_gravi, af_gold_fish start_artefact = af_night_star coeff = 3, 3, 2, 2, 1, 1 artefact_ways = zat_b14_af_way, zat_b14_af_way_2, zat_b14_af_way_3 field_name = zat_b14_zone_field_radioactive_weak Ну это как одна из аномалий, zaton_b14. Самое интересующее, это конечно же: coeff = 3, 3, 2, 2, 1, 1 То есть это коэффициенты, которые соответствуют артефактам (6 коэф. = 6 артов), и чем выше число, тем выше шанс выпадения арта. Но хотелось бы большего понимания - что это цифры значат? Т.е. конкретика - сколько 3 в процентах (думал, что 30, но в каждом файле по-разному есть соотношение этих коэффициентов.) 3)Пока не нашёл файла влияния выбросов на появление артов. Перерою весь сталкер по ключевым словам, надеюсь, найду...и буду признателен вам, если вспомните/поищете этот скрипт. 4)про обмен у групп сталкеров оружия на арты, если честно, слышу впервые, но, судя по скрипту, имеет место быть. Хотя, ИМХО, это совершенно бесполезная штука Отнюдь. Борода даёт максимальную цену за артефакты на заказ - от 18000 до 24000 рублей. Поэтому имеет смысл выловить вовремя группу соперников и толкнуть им хороший ствол (особенно на Затоне если такое провернуть). Также, с начала игры на Скадовске, мы ограничены детектором Медведь, который поможет нам найти малое кол-во артов из запрашиваемых Бородой Всё несколько иначе. Медведь не позволяет найти ни одного артефакта, что заказывает Борода - нужен Велес. Велес можно получить, как минимум, тремя способами: 1)От Бороды в качестве награды за уничтожение логова кровососов - и это ближайший и быстрейший путь получения Велеса. 2)Если убивать группы сталкеров, что идут к Бороде с найденным артефактом (если убить две группы, Борода прекратит выдавать задания на поиск артов, так что надо быть поаккуратнее. Да и такое это дело...мочить сталкеров.) 3)Когда есть квест "Артефакт на заказ" от Бороды, группы соперников можно будет обнаружить в различных аномалиях (чаще в тех, где теоретически может появиться искомый арт). Как минимум у главаря будет Велес. И, если я правильно понял, за убийство таких сталкеров Борода ничего не скажет (не проверял). Да и такое это дело...мочить сталкеров. (4)(возможно) Будет продавать Сыч после получения достижения "Состоятельный клиент". Точно не уверен, не понял влияния этой ачивки на шансы в торговле (там что-то связано с припиской scientific, и то ли это ачивка "Научный сотрудник" влияет, то ли выполнение квеста Сыча по доставке трёх Велесов учёным). Поясню, зачем вообще весь этот сыр-бор учинил. Т.к. шанс найти редкий артефакт - низок, а очень хочется уже сразу иметь Золотую Рыбку, ведь я любитель мародёрить всё что плохо лежит, то я предположил, что это можно будет сделать через соперников. Взял у Бороды квест на арт, и стал ждать. Предварительно я сбегал на Сгоревший хутор (вроде так локация называется), где забрал ВСС Винторез, что является тайником (он же как раз "good_gun"). В этот раз как нельзя быстро артефакт был ими найден. В таком случае, задание обновляется, и можно успеть перехватить эту группу - будет на карте указано их местоположение, и даже будет видно их передвижение. И тут уже что хочешь делай - обменяйся, убей, можно даже выкупить (ну за Светляк они просили что-то около 39000 р, офигеть). Артефакт я у них благополучно выменял, но не стал отдавать Бороде - самому нужнее, хороший реген. Вот только забавный баг произошёл - тот самый командир соперников зачем-то пришёл на баржу и постоянно там отсиживается в разных местах на корточках. Вроде бы, если отоспаться, то задание будет провалено и сталкер исчезнет, ну да и бог с ним. Таким образом можно на самом старте, если бы мне повезло, получить вожделенную рыбку. Но ничто не мешает вновь и вновь брать задания и просто ждать сталкеров. Хороших пушек, правда, раз-два и обчёлся, но! Их продажа принесёт куда меньше денег/пользы, чем деньги/польза от полученного арта. 1 Ссылка на комментарий
Norman Eisenherz 309 Опубликовано 9 Ноября 2021 Поделиться Опубликовано 9 Ноября 2021 @Colder Spoiler [scripts\xr_motivator.script] -- биндер NPC function motivator_binder:hit_callback(…) if amount > 0 проверить активный слот: 0 = нож 1 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Labadal 68 Опубликовано 10 Ноября 2021 Поделиться Опубликовано 10 Ноября 2021 (изменено) 22 часа назад, Colder сказал: Возможно ли скриптово отследить удар ножом (ТЧ) Попробуй просто отследить, что на момент получения целью урона, в руках у гг был нож. local wpn = db.actor:active_item() if wpn and wpn:section()=="wpn_knife" then *твои действия* end Вопрос касательно ТЧ. Есть у меня переменная, по умолчанию объявлена как local energia = 10 Есть предмет, использующий энергию - при каждом использовании тратится одна, то есть, без подзарядки у меня всего 10 использований. Но как только я делаю сейв-лоад, переменная снова становится равной 10, что даёт ещё 10 использований. Как "сохранить" текущее значение переменной? Спасибо Изменено 10 Ноября 2021 пользователем Labadal God save Hatsune Miku! Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти