Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
Colder 12 Опубликовано 8 Декабря 2020 Поделиться Опубликовано 8 Декабря 2020 (изменено) Парни помогите сделать что бы инфопорция выдавалась рандомно по 1 а не сразу 4 вот скрипт: Скрытый текст local post_info = 1 local m_post_info = "" local info_news = { db.actor:give_info_portion("encyclopedy_zone_artifact_af-cristall-flower"), db.actor:give_info_portion("encyclopedy_zone_artifact_af-night-star"), db.actor:give_info_portion("encyclopedy_zone_artifact_af-vyvert"), db.actor:give_info_portion("encyclopedy_zone_artifact_af-gravi") } function actor_on_map_info(obj) if (obj:section() == "maps_kit") then if math.random() < post_info then m_post_info = info_news[math.random(table.getn(info_news))] end end end Изменено 8 Декабря 2020 пользователем Colder Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358248
_g.script 3 670 Опубликовано 8 Декабря 2020 Поделиться Опубликовано 8 Декабря 2020 (изменено) 4 часа назад, UriZzz сказал: _g.script:1382: attempt to call global 'exit' А что это за эксит? Начни с него. Я хелпера не сразу подключил, тоже из _g на него ругань сыпалась. Правда на 1.0006 всё было, но уже со значительными вмешательствами в глобальное пространство. Ругался, вроде, на функцию log или abort... 4 часа назад, UriZzz сказал: Scheduler tried to update object А это и всё остальное из скриптов следом идёт. @Colder, Вот ссылка: Скрытый текст https://synthira.ru/load/s_t_a_l_k_e_r/ten_chernobylja_mody/artefact_respawner_1_01_by_kstn/19-1-0-4790 Там респаунер артефактов, который до сих пор я использую. Многовероятно, код идентичен с тем, что у приложенного тобой скрипта. Так или иначе, должен отметить, что этот аддон замечательно работает у меня в сборке, где полно всяческих дополнений, правок и костылей. У тебя, видимо, что то где то очень круто пересекается, раз такие дела творятся... Изменено 8 Декабря 2020 пользователем mole venomous Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358255
WinCap 324 Опубликовано 8 Декабря 2020 Поделиться Опубликовано 8 Декабря 2020 @Colder, как-то так: Скрытый текст local info_news = { "encyclopedy_zone_artifact_af-cristall-flower", "encyclopedy_zone_artifact_af-night-star", "encyclopedy_zone_artifact_af-vyvert", "encyclopedy_zone_artifact_af-gravi" } function actor_on_map_info(obj) if (obj:section() == "maps_kit") then db.actor:give_info_portion(info_news[math.random(#info_news)]) end end 1 1 S.T.A.L.K.E.R. CoP Objects >200 шт (upd 21.05.26) - Скачать (Яндекс-диск) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358264
UriZzz 1 004 Опубликовано 11 Декабря 2020 Поделиться Опубликовано 11 Декабря 2020 (изменено) Привет комрады. Помогите с одной функцией: Скрытый текст function sleep(obj) if obj:section() == "sleep_bag" then -- при использовании спального мешка будет открываться выборочное меню for k=0,65534 do local m_obj = level.object_by_id(k) if m_obj then if ((IsStalker(m_obj) and ogse.get_npc_relation(m_obj,db.actor)=="enemy") or IsMonster(m_obj)) and m_obj:position():distance_to(db.actor:position()) < 40 and m_obj:see(db.actor) then ogse.send_tip("Не получится заснуть пока вокруг шляются всякие", "Меченый", 0, 10, "mecheny") ogse.spawn_item_in_inv("sleep_bag") else local hud = sleep_ui(get_hud()) -- указываем на class "sleep_ui" (CUIScriptWnd) level.start_stop_menu(hud, true) -- открываем меню end end end end end При использовании предмета меню всё равно появляется (то есть проверка не срабатывает), при этом фпс игры падает до, примерно, одного кадра в секунду. Может что подскажете? Может я не правильно функцию оформил? пы.сы. Да да да, я знаю что давно пора самому lua выучить. Не получается, либо мозгов не хватает, либо... Изменено 11 Декабря 2020 пользователем UriZzz Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358525
_g.script 3 670 Опубликовано 11 Декабря 2020 Поделиться Опубликовано 11 Декабря 2020 20 минут назад, UriZzz сказал: Помогите с одной функцией Может, я не так понял вопрос, но если использовать флаг enemy и оператор break? Для примера оригинальный код АМК: Скрытый текст if alife():object(oid)==nil then local enemy=false for a=0,65534 do local obj=level.object_by_id(a) if obj then if (( IsStalker(obj) and amk.get_npc_relation(obj,db.actor)=="enemy" ) or IsMonster(obj)) and obj:position():distance_to(db.actor:position())<40 and obj:see(db.actor) then enemy=true break end end end if enemy==true then amk.send_tip(game.translate_string("not_need_sleep_enemy"),nil,nil,5) else if amk.load_variable("blowout",-1)>-1 and amk.load_variable("blowout",-1)<5 then amk.send_tip(game.translate_string("blowout_not_sleep"),nil,nil,5) else if amk.load_variable("block_sleep_menu",0)==0 then if amk.load_variable("gg_need_sleep",0)>10 then local spwn=ui_cheat.cheat(get_hud()) level.start_stop_menu(spwn,true) else amk.send_tip(game.translate_string("not_need_sleep"),nil,nil,5) end else amk.send_tip(game.translate_string("not_need_sleep_nrg"),nil,nil,5) end end end amk.spawn_item_in_inv("matras") end 1 Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358526
UriZzz 1 004 Опубликовано 11 Декабря 2020 Поделиться Опубликовано 11 Декабря 2020 (изменено) @mole venomous, ты прав, я переделал функцию, вот так: Скрытый текст function sleep(obj) local enemy=false for k=0,65534 do local m_obj = level.object_by_id(k) if m_obj then if ((IsStalker(m_obj) and ogse.get_npc_relation(m_obj,db.actor)=="enemy") or IsMonster(m_obj)) and m_obj:position():distance_to(db.actor:position()) < 40 and m_obj:see(db.actor) then enemy = true break end end end if obj:section() == "sleep_bag" then -- при использовании спального мешка будет открываться выборочное меню if enemy == true then ogse.send_tip("Не получится заснуть пока вокруг шляются всякие", "Меченый", 0, 10, "mecheny") ogse.spawn_item_in_inv("sleep_bag") else local hud = sleep_ui(get_hud()) -- указываем на class "sleep_ui" (CUIScriptWnd) level.start_stop_menu(hud, true) -- открываем меню end end end И она заработала, благодарю за отзывчивость, сэр Я так понял, без оператора break перебор id объектов не прекращался, от того и фпс игры упало. Самая большая ошибка сталкера - невнимательность Изменено 11 Декабря 2020 пользователем UriZzz 3 Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358527
Марка демченков 5 Опубликовано 11 Декабря 2020 Поделиться Опубликовано 11 Декабря 2020 Есть способ вызвать вылет при помощи скриптов в ЗП (не, не, не ошибку в скриптах сделать, а чтоб функцией, которую можно в диалогах использовать)? abort пробовал, ничего не происходило Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358532
Это популярное сообщение. Kirgudu 1 370 Опубликовано 12 Декабря 2020 Это популярное сообщение. Поделиться Опубликовано 12 Декабря 2020 (изменено) @UriZzz, предлагаю борьбу с невнимательностью и fps продолжить дальше и поднять не невиданный доселе уровень, увеличив твою опытность ещё больше. Смотри. Функция у тебя с говорящим названием, sleep(obj), предназначена теоретически только для обработки нажатия на спальный мешок. Не знаю, откуда и как она вызывается, но если проверка на то, что ты используешь именно спальник, до вызова функции есть, тогда условие if obj:section() == "sleep_bag" then является лишним. Но скорее всего такую проверку ты до функции не делаешь, а просто всегда дёргаешь её в коллбэке на дроп (ТЧ) или использование предмета (ЧН, ЗП). Примем это допущение, и тогда возникает другой момент. Что будет, если вокруг тебя на расстоянии 40 метров нет ни одного врага? А если ты съел колбасу? Правильно, проверка на врага сработает, а поскольку рядом никого нет, пройдёт по полному циклу, по всем 65 с лишним тысячам потенциальных объектов. И в результате ты, может, и избавился от тормозов при выдаче сообщения, зато приобрёл их при любом использовании любого предмета (если только ты не ставишь целью кушать, применять антирад, использовать бинты и аптечки и т. д. также только в спокойном месте). Выходом является перемещение поиска врагов после условия if obj:section() == "sleep_bag" then, так чтобы цикл запускался только если ты используешь нужный предмет. И последнее, чисто перфекционистское замечание. Если всё, что делает функция, это проверяет, можешь ли ты использовать спальник, и показывает нужный диалог или выдаёт сообщение, тогда нет нужды заморачиваться с лишними брейками и переменными. Можно выдать сообщение и сразу выйти из функции (return сработает как и break, прервёт выполнение цикла, но вдобавок ещё и обеспечит выход), а меню будет показано за пределами цикла, если всё хорошо, и прерывания не случилось. Самое время проиллюстрировать вышесказанное. Скрытый текст function sleep(obj) -- мы ещё и условие проверки перевернём: если сработал не спальник, сразу выйдем из функции - дальнейшая портянка нас не интересует if obj:section() ~= "sleep_bag" then return end -- не спальник --> выход -- ogse.spawn_item_in_inv("sleep_bag") -- по-хорошему, спавнить новый предмет лучше сразу, чем разбивать на 2 части, при выдаче сообщения и, видимо, где-то в недрах класса спальника for k=0,65534 do local m_obj = level.object_by_id(k) -- здесь проверку на m_obj прикрутим спереди к остальным; все критерии срабатывают последовательно, так что ошибки не будет -- это позволит нам не множить "if" и не увеличивать кол-во уровней вложенности условий if m_obj and ((IsStalker(m_obj) and ogse.get_npc_relation(m_obj,db.actor)=="enemy") or IsMonster(m_obj)) and m_obj:position():distance_to(db.actor:position()) < 40 and m_obj:see(db.actor) then ogse.send_tip("Не получится заснуть пока вокруг шляются всякие", "Меченый", 0, 10, "mecheny") ogse.spawn_item_in_inv("sleep_bag") -- если не заспавнили выше return --> и сразу выход из цикла и функции end end -- если всё хорошо и цикл врагов не выявил, ничто больше не мешает показать меню спальника local hud = sleep_ui(get_hud()) -- указываем на class "sleep_ui" (CUIScriptWnd) level.start_stop_menu(hud, true) -- открываем меню end Результат: избавились от лишних времязатратных действий, укоротили (если стереть мои комментарии) код вдвое, а также малость улучшили читабельность. P.S. При желании ты с Lua разберёшься, я уверен. С СДК разобрался, значит и со скриптами сможешь. Надо лишь пройти чуть дальше, чем "работает - и ладно". @Марка демченков, попробуй это: exit() Изменено 12 Декабря 2020 пользователем Kirgudu 1 4 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358559
UriZzz 1 004 Опубликовано 12 Декабря 2020 Поделиться Опубликовано 12 Декабря 2020 4 часа назад, Kirgudu сказал: а просто всегда дёргаешь её в коллбэке на дроп (ТЧ) или использование предмета (ЧН, ЗП Не не не, кэллбэк на юз итема в ТЧ тоже есть, его и юзаю. Он нормально работает, во всяком случае у меня не каких нареканий пока нет. @Kirgudu, твоя функция прекрасно работает Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358644
Kirgudu 1 370 Опубликовано 12 Декабря 2020 Поделиться Опубликовано 12 Декабря 2020 @UriZzz, ты, главное, принцип запомни. Пойми суть предложенных тебе изменений. А чем дальше, тем проще будет. 1 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358647
Zander_driver 10 357 Опубликовано 12 Декабря 2020 Поделиться Опубликовано 12 Декабря 2020 Я от себя добавлю 11.12.2020 в 17:39, UriZzz сказал: да, я знаю что давно пора самому lua выучить. Это не стишок же. Чтоб его выучить. С синтаксисом у тебя нормально - значит "выучил" уже. Осталось научиться вникать в код, и понимать что он делает. Вернемся к твоему первоначальному скрипту. Используем его для того, чтоб по тренироваться в диагностике багов. Попробуем найти, что же именно с ним не так? 11.12.2020 в 17:39, UriZzz сказал: меню всё равно появляется (то есть проверка не срабатывает) Почему так решил? Проверка срабатывает. Но, в исходном варианте успешное прохождение проверки не останавливало цикл. И он крутился дальше, проверяя следующие и следующие объекты... 11.12.2020 в 17:39, UriZzz сказал: при этом фпс игры падает до, примерно, одного кадра в секунду. А это почему произошло, видишь?) Т.к. если проверка не прошла, то у тебя открывается меню. И делается это внутри цикла. То... открывается оно для каждого объекта, не прошедшего проверку. Попался нам по id, бинт лежащий в двухста метрах - не прошел - открыли меню. Следующим попалась пачка патронов в рюкзаке ГГ. Она же не монстр и не сталкер? открываем еще меню. Ты представляешь, сколько раз это меню в первоначальном варианте, открывалось? Столько же, сколько в онлайне объектов. Отсюда и тормоза - от тысяч одинаковых, идентичных меню на экране. Старайся замечать такие вещи 3 1 Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358711
_g.script 3 670 Опубликовано 12 Декабря 2020 Поделиться Опубликовано 12 Декабря 2020 Возник вопрос по GPS-меткам с хабаром от Idler'а. Вернее, по их работе на движке OGSR. С переходом на новый движок они стали работать только до перезагрузки. Т.е. метка ставиться, список хабара или имя НПС отмечены, после сейв/лоада ничего уже нет. Просмотр отладочной информации мне даёт понять, что при загрузке "найдено 0 маячков и метка удалена". Кто-нибудь сталкивался с подобным при адаптации? Здесь могла быть ваша реклама. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358729
Colder 12 Опубликовано 13 Декабря 2020 Поделиться Опубликовано 13 Декабря 2020 Парни такой вопрос! Как можно скриптово сделать что бы при двойном клике по аптечке, было написано не использовать а например выпить или сьесть! Может есть у кого наглядный пример или подскажет кто что и где нужно поучить! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358742
AndreySol 215 Опубликовано 13 Декабря 2020 Поделиться Опубликовано 13 Декабря 2020 @Colder Не выйдет скриптами такое сделать, это в движке зашито. Можно сделать предмет на "съедобном" классе и назначить ему визуал аптечки. И прописать необходимые свойства, как у аптечки. 4 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1358744
Labadal 68 Опубликовано 16 Декабря 2020 Поделиться Опубликовано 16 Декабря 2020 Добрый день В секции с бронёй есть такие строки: additional_inventory_weight = 0 additional_inventory_weight2 = 0 Скажите, можно как-то присвоить им значение скриптом? очень нужно, спасибо God save Hatsune Miku! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1359001
Norman Eisenherz 355 Опубликовано 18 Декабря 2020 Поделиться Опубликовано 18 Декабря 2020 Здрасьте. Оконный класс на базе CUIScriptWnd() + статик с текстурой для видимости. ТЧ 1.0006: перезагрузка проходит без ошибок даже при открытом окне – окно успешно удаляется методом __finalize(). ЧН 1.5.10: • перезагрузка при открытом окне приводит к вылету без лога, как будто окно теряется. • принудительное обнуление окна в net_destroy() также приводит к вылету без лога, если окно было открыто хотя бы один раз и точно было закрыто на момент перезагрузки. Что-то изменилось в методах __init() и __finalize()? Spoiler local w -- // actor_binder:on_item_use(obj) -- custom // -- function use_check(obj) if obj:section() == "bandage" then w = pda() level.start_stop_menu(w, true) end end function Init(cuiw, x, y, w, h) cuiw:SetWndRect( Frect():set(x, y, x + w, y + h) ) end local W, H = 1024, 768 class "pda" (CUIScriptWnd) function pda:__init() super() Init(self, W/2, H/2, 1, 1) local bk = CUIStatic() self:AttachChild(bk) Init(bk, 0, 0, 1, 1) bk:InitTexture("---") end function pda:__finalize() end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1359160
Colder 12 Опубликовано 25 Декабря 2020 Поделиться Опубликовано 25 Декабря 2020 Парни подскажите функцию на проверку аномании в определеных метрах. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1360146
Jekyll 92 Опубликовано 26 Декабря 2020 Поделиться Опубликовано 26 Декабря 2020 25.12.2020 в 06:16, Colder сказал: проверку аномании в определеных метрах В смысле, определить дистанцию до аномалии? Если чистый ТЧ, то не получится, нужен биндер аномалий (можешь взять из ЗП, файл "bind_anomaly_field.script"). Там на апдейте вписываешь ссылку на свою функцию и радуешься. Вопрос к знатокам: как переместить актора строго по текущему направлению взгляда на нужное расстояние. Как переместить актора к видимому объекту или в нужные координаты - знаю. А тут нужно именно учесть направление, куда смотрит камера в момент перемещения. 1 New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1360367
dsh 3 824 Опубликовано 26 Декабря 2020 Поделиться Опубликовано 26 Декабря 2020 (изменено) @Jekyll если я правильно помню, это что-то вроде db.actor:position():mul( db.actor:direction() , dist ) Получаешь позицию в том направлении, на том расстоянии. По памяти пишу, могу напутать. Изменено 26 Декабря 2020 пользователем dsh 1 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1360379
Jekyll 92 Опубликовано 26 Декабря 2020 Поделиться Опубликовано 26 Декабря 2020 4 часа назад, dsh сказал: db.actor:position():mul( db.actor:direction() , dist ) Получается как-то так (ЗП): db.actor:set_actor_position(db.actor:position():add(db.actor:direction():mul(10))) Кто-нибудь может поделиться нормальной функцией спавна аномалий для ЗП? Аналогичной этой функции? Предложенная здесь функция не совсем рабочая, что ли... Например, таймы не работают. New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/540/#findComment-1360428
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти