AndreySol 215 Опубликовано 16 Декабря 2018 Поделиться Опубликовано 16 Декабря 2018 4 часа назад, WinCap сказал: функция table.getn устарела Ну это она для свежих версий Луа устарела, а в оригинальном движке прекрасно работает... @dPlayer Перебор таблицы у тебя не правильно сделан, см. пост @WinCap 1 Ссылка на комментарий
Fenrir02 199 Опубликовано 16 Декабря 2018 Поделиться Опубликовано 16 Декабря 2018 @Gorlomi Не нужно править таймеры выброса. Он будет работать и при таймфакторе 500. Эта строка запускает таймер выброса в игровом времени. amk.g_start_timer("blowout",0,0,3,2) g_start_timer(name,delay_d,delay_h,delay_m,action) name - имя таймера delay_d - задержка в днях delay_h - задержка в часах delay_m - задержка в минутах Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
dPlayer 501 Опубликовано 16 Декабря 2018 Поделиться Опубликовано 16 Декабря 2018 6 часов назад, WinCap сказал: функция table.getn устарела Вот это поворот 2 часа назад, AndreySol сказал: а в оригинальном движке прекрасно работает Просто из академического интереса, а как этот перебор выглядел бы на table.geth правильно? Ссылка на комментарий
WinCap 316 Опубликовано 16 Декабря 2018 Поделиться Опубликовано 16 Декабря 2018 @AndreySol, @dPlayer, я не говорил, что функция table.getn не работает - она не рекомендуется к использованию. А перебор с её помощью выглядит также, как и с оператором длины #. for i=1, table.getn(t) do a = alife():story_object(t[i]) S.T.A.L.K.E.R. CoP Objects (upd 15.11.24) Ссылка на комментарий
naxac 2 447 Опубликовано 17 Декабря 2018 Поделиться Опубликовано 17 Декабря 2018 В 15.12.2018 в 19:09, Dimon12321 сказал: В Зове Чернобыля скриптовые выводы сообщений (CusMsg, game.translate_string и local message) не распознают русские символы Распознают, просто надо сохранять файлы с кириллицей в кодировке windows-1251. 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Zagolski 74 Опубликовано 17 Декабря 2018 Поделиться Опубликовано 17 Декабря 2018 Неужели остались еще мазохисты писать table.geth вместо короткого # Ссылка на комментарий
Graff46 598 Опубликовано 18 Декабря 2018 Поделиться Опубликовано 18 Декабря 2018 @Zagolski, Остались. Обратная совместимость нужна когда пишите модули для общего пользования. Если table.geth нет (не определена Луа новее 5.2 вроде), то её можно написать самому. Ссылка на комментарий
Heymon 5 Опубликовано 22 Декабря 2018 Поделиться Опубликовано 22 Декабря 2018 Здравствуйте. Вопрос, как можно совмещать скрипты? Хочу поиграть в ТЧ с некоторыми мини-модами, а оба этих мода используют один и тот же скрипт bind_stalker, а хотелось бы оба установить Ссылка на комментарий
Kirgudu 1 217 Опубликовано 22 Декабря 2018 Поделиться Опубликовано 22 Декабря 2018 @Heymon, WinMerge. 1 1 Инструмент Ссылка на комментарий
Cagorich 0 Опубликовано 23 Декабря 2018 Поделиться Опубликовано 23 Декабря 2018 Доброго времени суток. Недавно заинтересовался созданием сюжета на платформе Теней Чернобыля и обнаружил для себя одну проблему, проблема в том что я не нашел в оригинале функцию на передачу\взятие одинаковых предметов в разном количестве. После долгого поиска на форумах нашел такую функцию: Скрытый текст -- Проверка наличия нескольких и разных предметов у ГГ. local items_count=0 local itemin=nil function item_much(itm,need_namber) local actor=db.actor items_count=0 itemin=itm actor:iterate_inventory(cheking_item,actor) if items_count>=need_namber then return true else return false end end function cheking_item(actor,item) local items=item:section() if items==itemin then items_count=items_count+1 end end function create_items(npc,section,number) for i=1,number do alife():create(section, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) end end -- Отдача определенных предметов в нужном количестве. local reloc_params={} local stalk function out_item_much(itm_section,need_number) reloc_params.itm_section=itm_section reloc_params.itm_cnt=need_number reloc_params.itm_cnt_found=0 db.actor:iterate_inventory(checkout_items_count,db.actor) reloc_params.itm_cnt_found=0 if reloc_params.itm_cnt_found<=reloc_params.itm_cnt then db.actor:iterate_inventory(out_items_count,db.actor) end news_manager.relocate_item(db.actor, "out", itm_section) reloc_params={} end function checkout_items_count(actor,item) if item.section and item:section()==reloc_params.itm_section then reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1 end end function out_items_count(actor,item) if item.section and item:section()==reloc_params.itm_section and reloc_params.itm_cnt_found<reloc_params.itm_cnt then ваш_скрипт.remove_item_from_inventory(item, actor) reloc_params.itm_cnt_found = reloc_params.itm_cnt_found + 1 end end И оформляется это к примеру так: -- Есть ли два "ammo_gauss" - проверка. function have_ammo_gauss() return ваше_название_скрипта.item_much("ammo_gauss",2) ~= false end -- Проверка на количество разных предметов. return ваше_название_скрипта.item_much("conserva",5) ~= false and ваше_название_скрипта.item_much("kolbasa",5) ~= false and ваше_название_скрипта.item_much("bread",5) ~= false end -- Отдача "этих" предметов без появления их в торговле НПС - тупо отбирание предметов у ГГ. function ваша_функция(second_speaker, first_speaker) ваше_название_скрипта.out_item_much("conserva",5) ваше_название_скрипта.out_item_much("kolbasa",5) ваше_название_скрипта.out_item_much("bread",5) end Вроде бы все хорошо и понятно, но я не понял строчку в функции под спойлером: ваш_скрипт.remove_item_from_inventory(item, actor) Что имелось ввиду? С какого скрипта должно вызываться remove_item_from_inventory? Там откуда я взял "это" нет никаких объяснений, а форум мертв. И как сделать так что бы отдача определенных предметов в разном количестве была "наоборот" от НПС к ГГ? Или можно сделать все проще? В скриптах я не силен, я только недавно начал ковыряться в файлах игры. Мне посоветовали обратиться с данным вопросом на этот форум. Ссылка на комментарий
gam 117 Опубликовано 23 Декабря 2018 Поделиться Опубликовано 23 Декабря 2018 2 часа назад, Cagorich сказал: я не нашел в оригинале функцию на передачу\взятие dialogs.script\function relocate_item_section(victim, section, type) Можно пользоваться и таким методом, допустим определяем ценность общего барахла в инвентори актора: function get_value() local value = 0 for i=0, db.actor:object_count()-1 do local item = db.actor:object(i) if item then local sec = item:section() local cost = system_ini():r_float(sec,"cost") value = value + cost*item:condition() end end return value end Ссылка на комментарий
naxac 2 447 Опубликовано 24 Декабря 2018 Поделиться Опубликовано 24 Декабря 2018 @Cagorich, судя по назанию, функция должна удалять предмет из инвентаря. Можно сделать что-то вроде этого: function remove_item_from_inventory( item, npc ) if npc == nil then npc = db actor end npc:drop_item( item ) -- на случай, если это активный предмет, чтобы непись не повис local se_item = alife():object( item:id() ) if se_item then alife():release( se_item, true ) end end 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
mole venomous 3 433 Опубликовано 24 Декабря 2018 Поделиться Опубликовано 24 Декабря 2018 Всем предновогодний привет. Уже давно собираю "солянку под себя", изначально на основе АМК 1.41. Уже сделано достаточно много, но совсем недавно заметил проблему. После сейв-лоада рандомно появляются инвентарные ящики с визуалом динамита. Я их, конечно, удаляю через net_spawn, но появляются новые. Пересмотрел все свои правки и дополнения, но ничего не нашёл. И вот вопрос - это проблема игры (4 и 6 патч), самого АМК или же частный случай? Может, кто сталкивался. Здесь могла быть ваша реклама. Ссылка на комментарий
naxac 2 447 Опубликовано 24 Декабря 2018 Поделиться Опубликовано 24 Декабря 2018 @mole venomous, ЕМНИП, эти ящики - для работы менеджера оружия rx_wmgr. Найди в конфигах inventory_box и пропиши ему какой-нибудь невидимый визуал из папки equipment_cache, чтобы глаза не мозолил) 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
mole venomous 3 433 Опубликовано 25 Декабря 2018 Поделиться Опубликовано 25 Декабря 2018 19 часов назад, naxac сказал: для работы менеджера оружия О как! Спасибо, не допёр бы. А больше ai additions не преподносит сюрпризов? Здесь могла быть ваша реклама. Ссылка на комментарий
nasar75 3 868 Опубликовано 25 Декабря 2018 Поделиться Опубликовано 25 Декабря 2018 22 часа назад, naxac сказал: Найди в конфигах inventory_box и пропиши ему какой-нибудь невидимый визуал Ага, и все динамитные ящики станут невидимыми Ящик для менеджера оружия обзывается rx_inventory_box. @naxac, спасибо за наводку. AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64 правки Золотой Шар Ссылка на комментарий
naxac 2 447 Опубликовано 25 Декабря 2018 Поделиться Опубликовано 25 Декабря 2018 @nasar75, в старом варианте wmgr это был просто inventory_box, у которого с оригинала ТЧ прописан визуал ящика. 52 минуты назад, nasar75 сказал: все динамитные ящики станут невидимыми Не станут, секция inventory_box нигде в чистом виде не используется. 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
nasar75 3 868 Опубликовано 25 Декабря 2018 Поделиться Опубликовано 25 Декабря 2018 @naxac, понятно, я смотрел файлы из НС-2016. Там пару ящиков не хотят спавниться по координатам. https://www.amk-team.ru/forum/topic/13471-tehpodderzhka-ns-2016/?do=findComment&comment=1218473 AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64 правки Золотой Шар Ссылка на комментарий
dPlayer 501 Опубликовано 26 Декабря 2018 Поделиться Опубликовано 26 Декабря 2018 (изменено) Может кто поможет? Подскажите функцию, которая запоминает НПС, с которым был диалог и делает его (диалог) недоступным, например возвращает false, если диалог уже был. Навсегда запоминать НПС не важно, можно до ближайшего перехода или сейв-лоада. Ковырял-ковырял диалог_менеджер.скрипт да ничего не понял(( Изменено 26 Декабря 2018 пользователем dPlayer Ссылка на комментарий
lordmuzer 743 Опубликовано 26 Декабря 2018 Поделиться Опубликовано 26 Декабря 2018 Такое через выдачу инфо поршня и его проверку в предусловии делается. 1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти