S.T.A.L.K.E.R.: Global War <<<>>> Инструмент - теперь и для ТЧ! <<<>>> NS OGSR: Сборка от 30.12.2023
-
Число публикаций
290 -
Регистрация
-
Последнее посещение
-
AMKoin
614 [Подарить AMKoin]
Сообщения опубликованы _Sk8_AsTeR_
-
-
Ребят, вопрос - загадка. С вашей помощью огромной наваял скриптец, благодаря которому через нетпакеты будут перебираться реально существующие НПС, их имена записаться в таблицу, и в итоге от их имени будут сообщения в чат приходить. И так случилось, что практически в начале игры (успел только АТП зачистить вначале) мне отписался Фанат. Официально он появляется после х-18, но он у меня отписался намного раньше.
Скрытый текстfunction table_update_pda() tab = {"пусто"} -- обнуляем таблицу всех НПС tab_newbIes = {"new"} -- обнуляем таблицу новичков for i = 1, 65535 do local sobj = alife():object(i) if (sobj) and IsNpcStalker(sobj) then -- проверка на фракцию (только сталкер, долг, фридум, грин) local pk = get_netpk(sobj) if pk and pk:isOk() then local data = pk:get() local charname = data.character_name table.insert(tab, charname) if (sobj) and is_npc_newbie(sobj) then -- проверка на новичка table.insert(tab_newbIes, charname) end end end end end
Так вот вопрос, игра где-то спавнит Фаната намного раньше, или я не понимаю как работает моя ф-ция? Помогите разобраться, ибо интрига!
-
Как можно получить значение переменной из другого скрипта?
-
Господа, подскажите пожалуйста, в бинд сталкер куда вставлять вызов функции, чтобы она вызывалась только при каждой загрузке сейва или локи? Вроде можно было...
-
Скрытый текст
@lordmuzer, дружище, огромное тебе спасибо! Ты помог мне реализовать мечту не первого года...
Осталось задебажить, и сразу вопрос к тебе, как к спасителю.
При вызове функции игра подвисает на некоторые секунды, считывая нетпакеты. При повторном вызове функции ловлю лог:
LUA error: not enough memory.
И вот вопрос: как можно ограничить количество циклов выполнения функции? Он мне выводит сразу кучу имён сталкеров, а достаточно 5-6 имен, например... Ну и еще мне нужно придумать как обновляться, чтобы память не кончалась, но по поводу последнего наверно что-то сам придумаю...
Не смекну как стереть более неактуальное сообщение, так что просто спрячу его под спойлер. До всего допетрил сам.
@lordmuzer, брат, братишка. огромное тебе спасибо! Около года я мозговал как это реализовать!
-
@lordmuzer, Черт, в нетпакетах я слаб...
Есть мыслишки, как можно через нетпакеты перебрать всех живых нпс в игре, чтобы дёрнуть имя рандомного?
-
В 17.04.2019 в 00:36, Overfirst сказал:
local text = obj:character_name()
function npc() for i = 1, 65535 do local obj = alife():object(i) if obj and IsStalker(obj) then local text = obj:character_name() -- тут и есть имя сталкера ? end end amk.send_tip(text, "123", 2, 15, "common_channel") -- выводим на экран значение переменной text end
Спасите - помогите!
Цитатаattempt to call method 'character_name' (a nil value)
-
А позвольте абсолютно нубский вопрос...
Что значат эи вездесущие цифры "65535"?
-
В 15.04.2019 в 00:07, AndreySol сказал:
local text = obj:name() -- тут и есть имя сталкера
Сделал функцию, чтобы на экран игровой выводилось значение переменной text
Возвращается что-то типа esc_stalker_01_784766
А как можно добиться именно игрового имени? "Андрей Блатной", "Сережа Жыжа" и тдтп?
Пробовал извращаться с get_npc_name(obj), но тщетно
-
Времени доброго, знатоки! Подскажите по возможности, как, каким образом перебрать нетпакеты всех живых НПС, чтобы выдернуть имя абсолютно случайного живого НПС?
-
Господа, подскажите добрым советом, как проиграть звук? Задумка такая: в определенные часы будут от лица ГГ (типа по рации) проигрываться рандомные звуки, обрывки чьих-то фраз и тд, и всё это дело НПС будут комментировать в чат текстом, типа: "Что это было?" или "Вы тоже это слышали?"
Так вот, помогите пожалуйста по возможности с построением ф-ции с проигрыванием рандомного ogg из папки? Нужно только проигрывание рандомного звука...
-
Господа, вопрос к знатокам по звукам. Подскажите пожалуйста, на сколько критично будет всем звукам ogg(сторонняя озвучка npc) массово выставлять в комментариях например параметр npc_talking, к примеру, даже если это озвучка для атаки (Урою, чики-брики и в дамки и тд)?
Нет ли зависимости от типа комментария на реакцию нпс?
-
Доброго времени! Возможно ли скриптово в теории заставить НПС использовать патроны из своего инвентаря? Чтобы они не бесконечно стреляли, к примеру?
-
Господа, подскажите пожалуйста, что и где подкрутить чтобы откорректировать цветовую гамму игры? Запустил оригинал сталкера сегодня и чуть не расплакался от той самой оригинальной картинки на мониторе. Солянка делает картинку какой-то желтоватой чтоли... Какой-то менее выразительней в плане цветопередачи, не знаю описать. Будто насыщенность выкрутили и температуру картинки сделали желтой, не знаю. Оригинальная картинка была какая-то розовато-синяя, чтоли. Подскажите пожалуйста?
-
Доброго времени. У меня вот какой вопросик странный есть: возможно ли каким-то образом перебрать всех живых НПС и получить имя абсолютно случайного живого НПС?
-
@naxac, неа. По непонятным причинам НПС просто не лечились. Анимация есть, лечения нет. Пришлось разбираться и руками заставлять у НПС хп подниматься после проигрыша анимации. Костыли, но работает )
-
@Graff46, есть впечатление что поломано что-то общее, не срабатывает общий тригер на выполнение, именно когда задание - убить группу. То есть когда задание засчитывается когда убить абсолютно всех.
-
Господа, еще вопросик. Выручайте пожалуйста
Суть в том, что задания не засчитываются после убийства групп противников. Таким образом не зачитывается задание как от Бармена например (зачистить Дикую Территорию от бандосов и наймов), а также например не срабатывает тригер после убийств наймов в Рыжем Лесу (помочь сталкерам отбить мост). Куда копать, подскажите пожалуйста?
-
@Graff46, сейчас попробуем-с, благодарю!
PS. ИДЕАЛЬНО! От души благодарю!
-
@AndreySol, благодарю, сенсей! Строг ты и суров, но подсказки твои работают! Но столкнулся с проблемкой. Смотри, реализовал идею с твоей подсказкой следующим образом:
Скрытый текстfunction name(npc, actor) function item(actor) actor:iterate_inventory(keep_item, actor) end function keep_item(actor, item) if item:section() == "medkit" then actor:transfer_item(item, npc) end end item(actor) end
Аптечка передается и у НПС она появляется. Только передаётся не 1 аптечка, а сразу все medkit что в рюкзаке у ГГ. Сразу 10, 20, одной передачей. Как пофиксить? Под ночь не соображу никак
Вдруг еще сможешь помочь!
-
Подскажите пожалуйста, какая функция РЕАЛЬНО передает предмет от ГГ к НПС? dialog.relocate_item (или какое там название у этой ф-ции) делает лишь видимость. По факту у ГГ просто отнимается предмет. НПС он не передается (проверял). Как передать предмет НПС? Или костыльно (как заспавнить предмет у нпс через скрипт?) Заранее благодарю!
-
Подскажите пожалуйста, где править кол-во ХП, которое НПС восстанавливает кушая аптечку?
Специально промониторил сейчас ситуацию:
Имеется НПС, здоровье: 0,43954873 (много цифр, не важно).
Даю ему атечку, он лечится (проигрывается анимация), здоровье становится 0,4584676 (много цифр, не важно).
Таким образом НПС лечится на 0,02 единицы. Как это справить?
-
@Kirgudu, и снова огромное спасибо! Благодаря последней подсказке реализовал кучу новых фишек для себя! Я конечно новичок и дурачок, но схватываю на лету! Еще раз благодарю!
-
@Kirgudu, от души благодарю! Заработало всё как надо! Передал НеПиСю аптечку, он сначала сам вылечился, обменяться не предложил. А вот вторую аптечку уже предложил мне обменять! То что надо! Огромное спасибо!
А еще вопрос. Как можно проверить все в тех же скриптах, является ли НПС другом? То есть if НПС друг, then выполнение скрипта обмена аптечкой, Else отбой, грубо говоря.
-
@AndreySol, по задумке предмет, который мы хотим получить от НПС должен быть у самого НПС, иначе он скажет - извини, брат, аптечек лишних нету.
@Kirgudu, прошу прощения, да. Имеем диалог (фрагмент):Скрытый текстfunction init_exchanging_items_dialog(dlg) local intro_phrase = exchanging_items_intro_phrase[math.random(1, table.getn(exchanging_items_intro_phrase))] --рандомная фраза из таблицы с приветствиями phr0 = dlg:AddPhrase(intro_phrase, "0", "", -10000) --фраза 1 phr1 = dlg:AddPhrase(exchanging_items_phr_1, "1", "0", -10000) -- фраза 2, вызывающая ниже написанную функцию phr1:GetPhraseScript():AddAction("exchanging_items.give_message_proposed_items") --вызывается функция по нашему диалогу в ответах (второй спойлер внизу) ...продолжение диалогов... end
Готовая функция, вызываемая из диалога (фрагмент):
Скрытый текстfunction give_message_proposed_items(first_speaker, second_speaker) local Art, Item, Outfit, Wpn, TxtArt, TxtItm, TxtOutfit, TxtWpn --переменные итемов local npc_rank = ranks.get_obj_rank_name(first_speaker) -- переменные рангов (в этом фрагменте кода пример с новичком) if npc_rank == "novice" then Art = GetRndItemFromTable(arts_table_novice) --переменной Art присваевается случайный арт из заранее прописанной таблицы Outfit = GetRndItemFromTable(outfits_table_novice) --тоже самое с бронёй Item = GetRndItemFromTable(items_table_novice) --тоже самое с предметами Wpn = GetRndItemFromTable(weapons_table_novice) --тоже самое с оружием ProposedArtRank = Get_Number_Item(Art, arts_table_novice) --если не ошибаюсь, то в диалоге предлагается (отображается) выбранный артефакт ProposedOutfRank = Get_Number_Item(Outfit, outfits_table_novice) --тоже самое с бронёй ProposedItmRank = Get_Number_Item(Item, items_table_novice) --тоже самое с предметами ProposedWpnRank = Get_Number_Item(Wpn, weapons_table_novice) --тоже самое с оружием end TxtArt = game.translate_string(get_inv_name(Art)) TxtOutfit = game.translate_string(get_inv_name(Outfit)) TxtItm = game.translate_string(get_inv_name(Item)) TxtWpn = game.translate_string(get_inv_name(Wpn)) InArt = Art InOutf = Outfit InItm = Item InWpn = Wpn db.actor:give_talk_message("%c[255,250,194,87]Артефакт:%c[255,87,250,240] "..TxtArt, "ui\\ui_iconstotal", Frect():set(0,188,83,47), "iconed_answer_item") db.actor:give_talk_message("%c[255,250,194,87]Костюм:%c[255,87,250,240] "..TxtOutfit, "ui\\ui_iconstotal", Frect():set(0,329,83,47), "iconed_answer_item") db.actor:give_talk_message("%c[255,250,194,87]Предмет:%c[255,87,250,240] "..TxtItm, "ui\\ui_iconstotal", Frect():set(0,423,83,47), "iconed_answer_item") db.actor:give_talk_message("%c[255,250,194,87]Оружие:%c[255,87,250,240] "..TxtWpn, "ui\\ui_iconstotal", Frect():set(0,517,83,47), "iconed_answer_item") end --конец функции
В последней функции для реализации моей идеи почти все лишнее. В этой функции, вызываемой из скриптового диалога, как-то нужно реализовать проверку НПС на нужный итем (medkit). Если true, то НПС даст диалог: поделюсь аптечкой. Если False, то, мол: Извини брат, нет лишних аптечек.
Подскажите, мил-люди, как сделать проверку НПС на определенный предмет? Своих мозгов не хватает
Скриптование
в Скрипты / конфиги / движок
Опубликовано
Доброго дня! Подскажите пожалуйста вот с чем...
Имеем мод на динамический костер "dynamic campfire".
Так вот, там многих, так сказать, бочек с кострами нету. Каким образом можно получить название лагеря? Надеюсь правильно вопрос задал.