• Страница 1 из 1
  • 1
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Скрипт проверки наличия у ГГ нескольких одинаковых предметов (!!! Для обновления заголовков и таргетов в КВЕСТЕ)
Скрипт проверки наличия у ГГ нескольких одинаковых предметов
Российская Федерация  SozdateL
Воскресенье, 28.04.2019, 22:34 | Сообщение # 1
Статус:
Зевака:
Сообщений: 3
Награды: 0
Регистрация: 27.04.2019

Всем привет посоны! Увлекся моддингом совсем недавно (неделя), навыков программиста тоже нет, так что если я несу полную дичь, просьба отнестись с пониманием и объяснить.
Вообщем суть такая:
Есть квест на поиск 10 артефактов "Кристалл". Для проверки их наличия (в диалоге, в прекондишине, дабы стал доступен диалог на их передачу) использую такой скрипт:
Код


function zaton_tremor_quest_have_10_kristall(first_speaker, second_speaker)
local item_sections = {"af_cristall"}
local needed = 10
local count = 0
local item_section
local function calc(temp, item)
if item:section() == item_section then
count = count + 1
end
end
for k,v in pairs(item_sections) do
item_section = v
get_story_object("actor"):iterate_inventory(calc, actor)
end
return count >= needed
end


Все работает без нареканий.
Но при попытке вписать эту функцию в строку "title" или "target"(в файле tm_zaton.ltx) получаю вылет. Пробовал ее по всякому туда впихать - все тщетно, максимум чего удалось добиться это не правильная работа, т.е. она срабатывает независимо от того есть 10 кристаллов или нет(вар 2). Начал догадываться, что этот скрипт не годится в данной ситуации?

Код

title = {=zaton_tremor_quest_have_10_kristall} zaton_tremor_quest_title_1, zaton_tremor_quest_title_0    //1 вар

title = {zaton_tremor_quest_have_10_kristall(true)} zaton_tremor_quest_title_1, zaton_tremor_quest_title_0  //2 вар


Так же нашел в каком то гайде такой скрипт:

Код

fucntion has_item_by_count(actor, npc, p)
    if p[1] == nil or p[2] == nil then abort("Error in fucntion has_item_by_count") end
    local need_cnt = tonumber(p[2]) or 1
    local cnt = 0
    local function iter_inv(t, item)
  if item:section() == p[1] then
   cnt = cnt + 1
  end
    end
    actor:iterate_inventory(iter_inv, actor)
return cnt >= need_cnt
end


В квесте он там был прописан так:

Код

title = {=has_item_by_count(kolbasa:5)}quest_5_kolbas_gavay_tit_2, quest_5_kolbas_gavay_tit_1


тут речь шла о колбасе, не стал ничего менять, в рамках теста, скопипастил все как есть - вылет.

И вообще инфы на эту тему крайне мало нашел, либо вообще не говорят про это, либо говорят что это слишком сложно, бред. Не думал что это станет такой проблемой, выручайте!

Еще пара вопросов не по теме
1. Хотелось бы более углубленно разобраться в скриптах, дабы понимать как они работают, а не просто бездумно вкручивать их в свой код(попытки самостоятельно это сделать, путем анализа скриптов разработчиков, приводят к желанию выкинуть комп из окна ). Буду благодарен за ссылку на эту тему.
2. Может стоит изучить(на уровне базового понимания синтаксиса) какой то язык программирования чтобы лучше все это понимать, если да то какой?
Сообщение отредактировал SozdateL - Воскресенье, 28.04.2019, 22:36
  Злобная реклама
Воскресенье, 28.04.2019, 22:34
Статус:
Сообщений: 666
Регистрация: 27.04.2019
Российская Федерация  arrakis_29
Понедельник, 29.04.2019, 04:22 | Сообщение # 2
Статус:
Неопытный:
Сообщений: 581
Награды: 3
Регистрация: 08.05.2017

Пиши в следующий раз в теме по ковырянию,а не новые создавай,удалять все равно будут. title - это название задания,target - это цель,чтобы метку поставить.В общем,не понял,что именно ты в tm_zaton.ltx хочешь сделать.Чтобы задание засчитывалось по условию?
Язык программирования-lua.И полистай форум amk-team.ru,раздел по моддингу,там почти все есть
Сообщение отредактировал arrakis_29 - Понедельник, 29.04.2019, 04:41
Российская Федерация  SozdateL
Понедельник, 29.04.2019, 15:11 | Сообщение # 3
Статус:
Зевака:
Сообщений: 3
Награды: 0
Регистрация: 27.04.2019

Цитата arrakis_29 ()
Пиши в следующий раз в теме по ковырянию,а не новые создавай,удалять все равно будут. title - это название задания,target - это цель,чтобы метку поставить.В общем,не понял,что именно ты в tm_zaton.ltx хочешь сделать.Чтобы задание засчитывалось по условию?

Не нашел ответа на этот вопрос, а то что нашел не работает.
Я в курсе что такое title и target. Внимание вопрос: какой нужен скрипт, чтобы title и target обновлялись, при наличии нужного кол-ва одинаковых предметов и как его прописать в title и target?
Азербайджан  Hoperise
Понедельник, 29.04.2019, 15:16 | Сообщение # 4
Статус:
Бывалый:
Сообщений: 1129
Награды: 7
Регистрация: 26.10.2016

Задавайте вопрос в соответствующей теме, к примеру, тут - https://ap-pro.ru/forum/21-90672-1 , тему в топку.
Сообщение отредактировал Hoperise - Понедельник, 29.04.2019, 15:17
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Скрипт проверки наличия у ГГ нескольких одинаковых предметов (!!! Для обновления заголовков и таргетов в КВЕСТЕ)
  • Страница 1 из 1
  • 1
Поиск: