hArdplAyer22_22 0 Опубликовано 19 Февраля 2021 Доброго времени суток. Есть нескромный вопрос. Человек я в скриптовании и програмировании не слишком умный, часто беру чужие наработки и меняю под себя (конечно же с указанием авторства и огромной благодарностью). Нужна помощь. Взял из ОГСЕ на ТЧ скрипт на ограничение количества артефактов на поясе, немного переделал в силу своих скромных знаний, чтобы общее количество артефактов на поясе не превышало 5 (6 артефакт автоматически снимался). Так вот, скрипт снимает каждый 6 артефакт определенного вида (например, снимает шестую Душу, но общее количество артов может висеть и больше). Собственно, сама функция: function remove_arts() for key, value in pairs(belt) do if string.find(key, "af_") then local obj_sect = key if belt[key] and belt[key] > 5 then amk.remove_item(db.actor:object(key)) amk.spawn_item_in_inv(key) belt[key] = belt[key] - 1 if (not warning_last or warning_last ~= key) then warning_last = key end end end end end Подскажите глупому, пожалуйста, как переделать, чтобы можно было вешать любых 5 артов, и любой 6 арт снимало. Поделиться этим сообщением Ссылка на сообщение
hArdplAyer22_22 0 Опубликовано 20 Февраля 2021 @Zander_driver 12 часов назад, Zander_driver сказал(а): Что такое здесь belt, и откуда оно берется? Может, там (откуда оно берется), и надо было, вот это все делать? belt, насколько я понял, это переменная, которая для пояса используется. В скрипте она вот так записана: belt = {} Если вместо belt использзовать например таблицу с артефактами, работать будет? Поделиться этим сообщением Ссылка на сообщение
hArdplAyer22_22 0 Опубликовано 20 Февраля 2021 @AndreySol Вот, нашел вроде добавление предмета в таблицу belt function scan_inv(item) local section = item:section() if section == separator then flag = 1 return end if flag == 1 then if slot_item(item) ~= nil then flag = 2 else insert_to_table(belt, section) belt_id[item:id()] = true end end end -- ƒобавление в таблицу function insert_to_table(tbl, section) if tbl[section] == nil then tbl[section] = 1 else tbl[section] = tbl[section] + 1 end end Поделиться этим сообщением Ссылка на сообщение
hArdplAyer22_22 0 Опубликовано 20 Февраля 2021 @AndreySol движок OGSR, скрипт не трогает арты из рюкзака, тут ты не прав. Только из пояса. Только он считает не общее количество артов, а количество артов одного вида. В этом и загвоздка Поделиться этим сообщением Ссылка на сообщение
hArdplAyer22_22 0 Опубликовано 21 Февраля 2021 @AndreySol 18 часов назад, AndreySol сказал(а): Я код вижу, и понимаю что он будет делать. Движок OGSR - огромное кол-во правок, уверен среди них есть и ф-ции для работы с поясом, которые и следует в твоем случае использовать, а не этот древний костыль с сепаратором. Спасибо большое, я вроде проверял много раз, и удаления с рюкзака не замечал. Но я не слишком в скриптах опытен, доверюсь более умелым людям. 18 часов назад, AndreySol сказал(а): Насчет удаления по общему кол-ву артов - переделывать все, т.к. у тебя сейчас таблица belt имеет ключи с именами секций артов и значениями их количества на поясе. А тебе надо просто получить кол-во артов и убирать лишние. А не подскажешь, пожалуйста, как бы это лучше реализовать? Буду очень благодарен.(Но даже если нет - все равно спасибо большое, я уже сделал немного другую систему, но и от помощи в реализации этой не откажусь) Поделиться этим сообщением Ссылка на сообщение
hArdplAyer22_22 0 Опубликовано 21 Февраля 2021 @AndreySol 2 часа назад, AndreySol сказал(а): function scan_inv(item) local section = item:section() if section == separator then flag = 1 return end if flag == 1 then if belt_item_count > 5 then db.actor:transfer_item(item, db.actor) belt_item_count = 0 else belt_item_count = belt_item_count + 1 end end end Кстати, неплохо бы знать откуда вызывается ф-ция scan_inv(...)? Спасибо огромное. Функция работает, именно так как нужно. scan_inv(...) вызывается именно так, как было написано знатоками выше. Но еще вопросик: функция применяется и к патронам на поясе(забыл указать, что и это у меня есть, виноват). Как применять функцию только к артефактам?(Прошу прощения, если надоел со своими хотелками) Поделиться этим сообщением Ссылка на сообщение
hArdplAyer22_22 0 Опубликовано 8 Марта 2021 Доброго времени суток. Возник вопрос к опытным скриптерам. В ТЧ есть функция выдачи тайника: treasure_manager.get_treasure_manager():give_treasure("esc_secret_truck_goods") Как переделать так, чтобы выдавало рандомный тайник из заданного списка? Буду очень благодарен за помощь. Поделиться этим сообщением Ссылка на сообщение
hArdplAyer22_22 0 Опубликовано 9 Марта 2021 Здраствуйте, нужна помощь. Сталкер ТЧ с модом ОГСМ на движке ОГСР. При получении игроком любого тайника, все содержимое тайника автоматически перемещается ГГ в инвентарь. Может кто сталкивался? Поделиться этим сообщением Ссылка на сообщение
hArdplAyer22_22 0 Опубликовано 19 Марта 2021 Доброго времени суток.Вопрос наверное не в тему, но в моде ОГСМ сломался сон через спальный мешок. Там при использовании спального мешка инициализировалось окно с выбором, сколько поспать. Так вот, игрок спит одинаково долго (часов 10), независимо от того, выбран ли час сна, или же пять часов. Может кто сталкивался с чем подобным, где может быть ошибка? Раньше все работало отлично. Поделиться этим сообщением Ссылка на сообщение
hArdplAyer22_22 0 Опубликовано 21 Марта 2021 Доброго времени суток. Вопрос к знатокам. Есть ли у кого любой скрипт воровства вещей из ящиков на ТЧ (даже самый примитивный). Буду премного благодарен. Поделиться этим сообщением Ссылка на сообщение
hArdplAyer22_22 0 Опубликовано 28 Мая 2021 Вопрос к знатокам. Как очистить определенный инвентарный ящик по ID? То-есть, как, к примеру, определенным скриптом удалить все предметы из ящика в деревне новичков? Поделиться этим сообщением Ссылка на сообщение