Rozben 8 Опубликовано 24 Июня 2016 Поделиться Опубликовано 24 Июня 2016 (изменено) Решил сделать нечто вроде "Общей сети", внешне все уже достаточно красиво, но вот есть косяк - после перезагрузки сообщения начинают приходить с первого в списке (После того как рандомизатор выдал мне три раза подряд одно и то же сообщение, хотя их было не два, не пять и не двадцать - больше, я решил выводить их подряд, чтобы исключить повторы.) В первоисточнике, а точнее в его обсуждении, говорилось, что эту проблему можно решить сохраняя значение переменной, отвечающей за номер сообщения в pstor, однако все мои попытки провернуть это с найденными в файлах xr_s.script и xr_logic.script скриптами ничего не вышло. Я думаю, что забрел не в ту степь, потому и выкладывать свои попытки не буду.Вот сам скрипт этого дела: -- Динамические сообщения local news ={ "%c[255,249,223,206]Вова Тихий:%c[default] \\nВидел кровососа у заправки в Темной Долине. Осторожнее там.", "%c[255,249,223,206]Погиб сталкер:%c[default] Семецкий. Радар, контролер.", "%c[255,249,223,206]Нахрап:%c[default] \\nИщу напарника для рейда. Обращаться в Баре к Нахрапу", "%c[255,249,223,206]Источник неизвестен%c[default] \\nСлыхал кто о Стрелке? Одни говорят пропал он без вести, другие - что ушел из Зоны...", "%c[255,249,223,206]Погиб сталкер:%c[default] Серега Танкист. Тихая долина, химера", "%c[255,249,223,206]Погиб сталкер:%c[default] Шеф. Лиманск, паяльник.", "%c[255,249,223,206]Антон Карась%c[default] \\nВоенных заметил в Темной Лощине, что-то они там мутят.", "%c[255,249,223,206]Челнок%c[default] \\nГоворят, в Тихую Долину тропку безопасную нашли. Однако знайте - в Тихой долине мутантов полно. Это только на первый взгляд она тихая.", "%c[255,249,223,206]Глеб Короткий%c[default] \\nНашел странный труп, одет в черный комбинезон, на лице серый противогаз. Из вещей только пистолет и патроны, да и те странные какие-то.", "%c[255,249,223,206]Погиб сталкер:%c[default] Семецкий. Припять, Жарка.", "%c[255,249,223,206]Источник неизвестен%c[default] \\nДолго я думал по поводу Долга и Свободы. И понял кое-что: бессмысленно они грызутся. Потому никому не советую становиться черно-красным или зелено-синим...", "%c[255,249,223,206]Васек Кентавр%c[default] \\nПродаю ствол! АКСУ, почти новый. Машинка - блеск! Цена вопроса - десять тысяч деревянных. Еще пару дней пробуду на Свалке в ангаре.", "%c[255,249,223,206]Погиб сталкер:%c[default] Ванек Сахар. Теинай Долина, псевдогигант.", "%c[255,249,223,206]Герман%c[default] \\nСталкеры! Если вам нужен заработок, подходите в Бункер ученых, что неподалеку от Янова. Предлагаем контракт. Зарплату выдаем наличными, медикаментами и приборами. Спешите, количество контрактников ограничено!", "%c[255,249,223,206]Погиб сталкер:%c[default] Семецкий. Темная Лощина, пулевое ранение.", "%c[255,249,223,206]Источник неизвестен%c[default] \\nЗнаете про местность под названием Отстойник? Я лично не знал, теперь спешу поделиться с вами, как нарыл информацию. Отстойник этот располагается севернее Темной Долины, попасть туда, говорят, можно только с Радара. Все остальные пути закрыты аномалиями и радиацией, не пройти. Кто-то даже говорит, что где-то там и находится Клондайк, но я в это не верю и вам не советую.", "%c[255,249,223,206]Гена Шутник%c[default] \\nПришел к Сидоровичу артефакт продать, остался должен...", "%c[255,249,223,206]Погиб сталкер:%c[default] Корма. Окрестности Юпитера, кабан.", "%c[255,249,223,206]Арсений Чахлый%c[default] \\nПродаю СВД за пятдесят штук. Если кто хочет поторговать - ищите меня в Припяти, около Прачечной. Зовут меня Карл.", "%c[255,249,223,206]Погиб сталкер:%c[default] Ваня Кекс. Агропром, пулевое ранение.", "%c[255,249,223,206]Погиб сталкер:%c[default] Никита Подорожник. Кордон, Трамплин.", "%c[255,249,223,206]Погиб сталкер:%c[default] Афанасий. Рыжий лес, пседогигант.", "%c[255,249,223,206]Погиб сталкер:%c[default] Сашко Бублик. Свалка, слепые псы.", "%c[255,249,223,206]Погиб сталкер:%c[default] Семецкий. Агропром, Холодец.", "%c[255,249,223,206]Погиб сталкер:%c[default] Пушистый. Кордон, псевдоплоть.", "%c[255,249,223,206]Погиб сталкер:%c[default] Андрюха Мутный. Янтарь, снорк.", "%c[255,249,223,206]Погиб сталкер:%c[default] Никифор. Затон, полтергейст.", "%c[255,249,223,206]Погиб сталкер:%c[default] Грига Админ. Болота, кровосос.", "%c[255,249,223,206]Погиб сталкер:%c[default] Борт. Припять, Электра.", "%c[255,249,223,206]Погиб сталкер:%c[default] Лоб. Затон, пулевое ранение.", "%c[255,249,223,206]Погиб сталкер:%c[default] Броня. Армейские склады, химера.", "%c[255,249,223,206]Погиб сталкер:%c[default] Влад Грузин. Дикая территория, Карусель.", "%c[255,249,223,206]Цербер%c[default] \\nПродаю ОЦ-14. Цена - 20 тысяч. Обращаться к Церберу на Болотах." } local news_icons ={ "ui_iconsNpc_green_stalker_11", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_grouping", "ui_iconsTotal_grouping", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_grouping", "ui_iconsTotal_grouping", "ui_iconsTotal_grouping", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_grouping", "ui_iconsTotal_found_money", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_grouping", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_grouping", "ui_iconsTotal_grouping", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_found_money", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_mil_freedom_rg6_task", "ui_iconsTotal_found_money" } time_news = 60 function time_update_spam() local time = time_global() if time_news < time then time_news = time + 480000 dyn_mess.update_spam() end end local i = 1 local actor = db.actor local news_caption = "Общий канал" function update_spam() actor:give_game_news(news_caption, news[i], news_icons[i], 0, 10000) xr_sound.set_sound_play(actor:id(), "pda_alarm") i = i + 1 if i > #news then i = 1 end end Буду благодарен, если найдется помощь. Изменено 24 Июня 2016 пользователем Rozben Ссылка на комментарий
naxac 2 445 Опубликовано 25 Июня 2016 Поделиться Опубликовано 25 Июня 2016 (изменено) @Rozben, чтобы генератор псевдослучайных чисел нормально заработал, надо где-нибудь на загрузке вызвать math.randomseed(device():time_global()) Либо os.time().. А чтобы не повторялось, можно сделать что-то вроде этого: function update_spam() local t = {} for a=1, #news do if tmp[i] == nil then t[#t+1] = a end end if #t == 0 then t = news tmp = {} end local i = t[math.random(#t)] tmp[i] = true actor:give_game_news(news_caption, news[i], news_icons[i], 0, 10000) xr_sound.set_sound_play(actor:id(), "pda_alarm") end Изменено 25 Июня 2016 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Rozben 8 Опубликовано 25 Июня 2016 Поделиться Опубликовано 25 Июня 2016 @naxac, Что ж, сработало, но частично:Игра вылетала на загрузке с логом Expression : !m_error_codeFunction : raii_guard::~raii_guardFile : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cppLine : 748Description : ....e.r. - Çîâ Ïðèïÿòè\gamedata\scripts\dyn_mess.script:92: attempt to index global 'tmp' (a nil value)function update_spam() Пока методом научного тыка не добавил local tmp = {} сюда: ... local t = {} for a=1, #news do ... Ну и сообщения все же повторяются, но не так часто: Но это уже скорее от того, что сообщений всего 33 и около четверти сообщений игра уже отослала - будем увеличивать количество. Но по сути - все работает, благодарю. Ссылка на комментарий
naxac 2 445 Опубликовано 26 Июня 2016 Поделиться Опубликовано 26 Июня 2016 (изменено) Игра вылетала на загрузкеПардон, писал в спешке. Выше функции надо добавить:local tmp = {} Это таблица для хранения индексов уже отправленных сообщений. И в самой функции исправить: for a=1, #news do if tmp[a] == nil then t[#t+1] = a end end Изменено 26 Июня 2016 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Nazgool 250 Опубликовано 26 Июня 2016 Поделиться Опубликовано 26 Июня 2016 (изменено) @Rozben, Не нужно хранить сообщения и исконки в разных местах. Во первых сложно сопоставлять какому сообщению соответствует какая иконка. Во-вторых можешь добавишь новое сообщение и забыть добавить иконку (или наоборот) Храни данные в одной таблице : local news ={ {"%c[255,249,223,206]Вова Тихий:%c[default] \\nВидел кровососа у заправки в Темной Долине. Осторожнее там.", "ui_iconsNpc_green_stalker_11"}, и т.д. Вот с таким вариантом сообщения не станут повторяться, пока не будут показаны все из таблицы news : local start_rnd, end_rnd = 1, #news function update_spam() local idx = math.random(start_rnd, end_rnd) local res = news[idx] news[start_rnd], news[idx] = news[idx], news[start_rnd] start_rnd = start_rnd==end_rnd and 1 or start_rnd + 1 actor:give_game_news(news_caption, res[1], res[2], 0, 10000) xr_sound.set_sound_play(actor:id(), "pda_alarm") end Изменено 26 Июня 2016 пользователем Nazgool 1 Ссылка на комментарий
GtGenux 1 Опубликовано 26 Июня 2016 Поделиться Опубликовано 26 Июня 2016 (изменено) А что будет если поставить af_rank = 1, ну или af_rank = 2? В секции соответствующего артефакта находим af_rank и меняем его значение на 0. Однако следует иметь ввиду, что после данной манипуляции он станет видимым изначально (находясь в аномалии), а не только при выбросе из инвентаря. Изменено 26 Июня 2016 пользователем GtGenux Ссылка на комментарий
Painter 3 378 Опубликовано 26 Июня 2016 Поделиться Опубликовано 26 Июня 2016 af_rank = 0 ; изначально видны без детекторов. af_rank = 1 ; засвечиваются детектором "Отклик" и более совершенными моделями. af_rank = 2 ; засвечиваются детектором "Медведь" и более совершенными моделями. af_rank = 3 ; засвечиваются детектором "Велес" и его модификацией "Сварог". 1 1 Портфолио Ссылка на комментарий
DarkSatellite 5 Опубликовано 27 Июня 2016 Поделиться Опубликовано 27 Июня 2016 (изменено) Jurok, когда-то обращался по поводу такой ситуации: ближе к концу путепровода отряд Дегтярёва атакует снорк, сидящий на трубах под потолком, но никто на него не реагирует (часто из-за этого кто-нибудь из отряда гибнет). Подскажи, как исправить логику отряда в том месте? Изменено 27 Июня 2016 пользователем DarkSatellite Ссылка на комментарий
Space.Marine 464 Опубликовано 27 Июня 2016 Поделиться Опубликовано 27 Июня 2016 но никто на него не реагирует С AI Additions прекрасно реагируют. А вообще, в путепроводе, лично у меня команда бессмертная, так на всякий случай ) Ссылка на комментарий
Painter 3 378 Опубликовано 27 Июня 2016 Поделиться Опубликовано 27 Июня 2016 (изменено) DarkSatellite, единственное, что могу посоветовать - это подкрутить combat_ignore_cond в configs\scripts\underpass\pas_b400_tunnel.ltx Изменено 27 Июня 2016 пользователем Jurok Портфолио Ссылка на комментарий
DarkSatellite 5 Опубликовано 27 Июня 2016 Поделиться Опубликовано 27 Июня 2016 (изменено) Space.Marine, не, я играю честно Jurok, посмотрю... Спасибо. Изменено 27 Июня 2016 пользователем DarkSatellite Ссылка на комментарий
Overfirst 630 Опубликовано 30 Июня 2016 Поделиться Опубликовано 30 Июня 2016 Полтеры не подчиняются логике - улетают в рандомном направлении. [smart_terrain];esc_polter_smart squad_id = 6 max_population = 3 def_restr = esc_polter_smart_def_restr [exclusive] esc_polter_1 = escape\exclusives\esc_polters_logic.ltx esc_polter_2 = escape\exclusives\esc_polters_logic.ltx esc_polter_3 = escape\exclusives\esc_polters_logic.ltx [logic@polters] prior = 200 monster_job = true [mob_home@polters] aggressive = true [logic@esc_polter_1]:logic@polters active = mob_home@esc_polter_1 suitable = {=is_monster_polter} true [mob_home@esc_polter_1]:mob_home@polters path_home = polter_home_walk_1 home_min_radius = 5 home_max_radius = 10 [logic@esc_polter_2]:logic@polters active = mob_home@esc_polter_2 suitable = {=is_monster_polter} true [mob_home@esc_polter_2]:mob_home@polters path_home = polter_home_walk_2 home_min_radius = 5 home_max_radius = 10 [logic@esc_polter_3]:logic@polters active = mob_home@esc_polter_3 suitable = {=is_monster_polter} true [mob_home@esc_polter_3]:mob_home@polters path_home = polter_home_walk_3 home_min_radius = 5 home_max_radius = 10 Я им и рестриктор в смарте указал. Не помогает. Из-за чего могут не поддаваться логике? Ранее был известен под ником BoBaH_671. Ссылка на комментарий
alex5773 1 330 Опубликовано 30 Июня 2016 Поделиться Опубликовано 30 Июня 2016 Кто в курсе как в ЧН и ЗП можно правильно настроить пробиваемость преград? Есть ли у кого точные цифры пробития преград? Вот допустим в ТЧ k_pierce = коэффициент бронебойности. ; 1.1 - не пробивается забор и жесть. ; 1.12 - пробивается забор и застревает в первой стенке халупы. ; 1.15 - пробивается забор и застревает в первой стенке халупы. ; 1.2 - пробивается забор и застревает в первой стенке халупы. ; 1.25 - ствол толстого дерева не пробивается. пробивается забор и первая стенка, застревает во второй стенке халупы. ; 1.35 - ствол толстого дерева не пробивается. ; 1.4 - ствол толстого дерева не пробивается. ; 1.45 - ствол толстого дерева пробивается ; 1.5 - ствол толстого дерева пробивается ; бетон не пробивается никогда А какие циферки ставить в ЗП? Т.к если такие цифры поставить в ЗП, то даже ПМ будет пробивать бетонный забор. Хотя в ТЧ бетонный забор не пробивается вообще, а вот в ЗП прошивается насквозь, за бетонным забором уже не спрячешься. Просто охота настроить по реалистичней как-то. Но не могу поймать цифру, чтоб была такая же реалистичность по пробитию как в ТЧ. Ссылка на комментарий
aka_sektor 1 473 Опубликовано 30 Июня 2016 Поделиться Опубликовано 30 Июня 2016 @alex5773, по-моему, если даже были бы точные данные - объекты все равно нужно тестить на пробиваемость на тестовой карте. Следовательно, не проще создать тестовую карту с объектами, и смотреть на ней уже, как-что-из чего пробивается. Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB Ссылка на комментарий
warwer 900 Опубликовано 30 Июня 2016 Поделиться Опубликовано 30 Июня 2016 @BoBaH_671, а почему их нужно удерживать логикой? Просто не достаточно указать нужный смарт как цель в распавнере? HARDWARM☢D Ссылка на комментарий
Overfirst 630 Опубликовано 30 Июня 2016 Поделиться Опубликовано 30 Июня 2016 @warwer, у меня в скваде прописан target_smart, я немного не догоняю, что нужно сделать-то? Подробнее, пожалуйста. И это полтеры на 1 раз, так сказать, респавн мне не нужен. Ранее был известен под ником BoBaH_671. Ссылка на комментарий
warwer 900 Опубликовано 30 Июня 2016 Поделиться Опубликовано 30 Июня 2016 это полтеры на 1 раз, так сказать, респавн мне не нужен тебе нужен стандартный квад монстров на один распавн. Создаёшь свою секцию в папке misc squad_descr_.... Теперь нужно создать вызов распавна данной секции. Это делается в логике. Либо логике нпс, либо в логике уровня. Если нужно очистить смарт от ненужных нпс: %=clear_smart_terrain(имя_смарта)% Чтобы заспавнить: %=create_squad(твой_сквад : имя_смарта)% Пример для логики нпс: [remark@rac1]anim = wait_racno_move = trueon_timer = 5000| walker@xodok %=create_squad(твой_сквад : имя_смарта)% или on_info = {+инфо} %=create_squad(твой_сквад : имя_смарта)% HARDWARM☢D Ссылка на комментарий
Overfirst 630 Опубликовано 30 Июня 2016 Поделиться Опубликовано 30 Июня 2016 %=create_squad(твой_сквад : имя_смарта)% Так я и делаю. Через рестриктор. Вопрос заключается в том, почему они улетают за пределы установленных для них границ? Ранее был известен под ником BoBaH_671. Ссылка на комментарий
makdm 37 Опубликовано 1 Июля 2016 Поделиться Опубликовано 1 Июля 2016 (изменено) почему они улетают за пределы установленных для них границ? Каких границ? Полтергейстам пишешь логику mob_home На точку path_home ставишь OUT рестриктор. В логике прописываешь out_restr = имя_рестриктора И никуда он за радиус рестриктора не улетит. Изменено 1 Июля 2016 пользователем makdm Ссылка на комментарий
Overfirst 630 Опубликовано 1 Июля 2016 Поделиться Опубликовано 1 Июля 2016 out_restr = имя_рестриктора За радиус не улетает и остается в точке спавна. Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти