ColR_iT 171 Опубликовано 16 Января 2012 Поделиться Опубликовано 16 Января 2012 Keng, НПС "проталкивает" оружием некоторые препятствия, через которые, по идее, не должны, из-за того, что они не взаимодействуют с геометрией как таковой. Они даже по ней не ходят (вопрос поднимался в соседней теме). Граниуц всех их движений (имеется ввиду место действия) определяет АИ сетка, поэтому, если она расположена близко к стене, а габариты НПС чуть более этого расстояния, то в игре и наблюдается таковое. По сути это тема для другого топика. Что касается Волка, то он не удаляется, он идет на своих двоих... правда в оффлайне. Вообще спавн любого НПС определяется лишь одной точкой, спавниться дважды, да еще и в разных точках они не могут. Ссылка на комментарий
gruber 2 481 Опубликовано 17 Января 2012 Поделиться Опубликовано 17 Января 2012 ColR_iT,Зато могут удалятся и спавнится их клоны (со всеми вытекающими,это инфопоршни не относящиеся к новому нпс,но сработавшие на старом,и стартовый инвентарь опять же новый) Вообще все что зашито в олспавн ,спавнится один раз с началом игры,в процессе добавить кого то можно только через скрипт или респавнер,плодящий клонов(пример солянка в которой попадаются НПС с одинаковыми уникальными именами,потому что прописан их респавн) Ссылка на комментарий
Полтергейст 37 Опубликовано 17 Января 2012 Поделиться Опубликовано 17 Января 2012 (изменено) Заметил у NPC некоторые странности с переключением состояний. Если я ставлю им через set_state какое-нибудь состояние (например, анимацию раненого) после определённого события (попадания например), то ничего не происходит, даже если устанавливать его на каждом update. А вот если просто установить это состояние в update без проверки условий (то есть, чтобы анимация отыгрывалась всегда), то всё нормально. Хотя set_state вызывается в обоих случаях, т.е. в первом случае условия смены состояния выполняются. Кто-нибудь может подсказать, что я делаю неправильно? Изменено 17 Января 2012 пользователем Полтергейст Ссылка на комментарий
rusMAFIA 4 Опубликовано 18 Января 2012 Поделиться Опубликовано 18 Января 2012 Приветствую! Ребят,у меня такой вопрос: если весь спаун/спавн игры,прописать чисто в скриптах,то может ли это как то повлиять в игре? Будет ли это нагружать игру? Пояснение: я просто учусь создавать модификации,но не разобрался в All.spawn и хочу весь спаун/спавн прописать в скриптах! Ссылка на комментарий
*Shoker* 322 Опубликовано 18 Января 2012 Поделиться Опубликовано 18 Января 2012 (изменено) rusMAFIA Здесь всё зависет от твоих целей, если тебе надо просто заспавнить НПС, то спавн скриптами никак не будет отличаться от спавна через all.spawn. Тебе надо будет просто один раз вызвать функцию, которая создаст твоего НПС. Главное выбрать правильное для этого место в скриптах,чтобы не пришлось делать лишние проверки. Как вариант в скрипте bind_stalker.script есть функция function actor_binder:net_spawn(data) Которая вызывается каждый раз при загрузке сохранения, достаточно где нить в самом конце функции (это важно) вставить проверку вида: if not db.actor:has_info("mod_new_game") then -- спавнишь своих нпс -- ------------------------------ db.actor:give_info_portion("mod_new_game") end Другое дело что all.spawn представляет больше возможностей для тонкой настройки НПС, в частности можно укзаать им направление взгляда, story_id, name и прочие параметры, которые тебе могут пригодится в частности если решишь делать квесты. Это всё тоже можно обойти через скрипты, но тебе это явно пока не по зубам. Написанное выше актуально для ЧН/ТЧ. В ЗП НПС и так скриптами появляются. Изменено 18 Января 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 18 Января 2012 Поделиться Опубликовано 18 Января 2012 (изменено) ColR_iT, по поводу параметра online (из вопроса #3678): Достаточно важный параметр, которым можно управлять в игре различными ситуациями. Пример (из мода ABC): Вход на территирию долга на локации Бар охраняет блокпост перед Свалкой. Охраняется круглосуточно, но(!) имея в своих гулаговых работах дефолтным online = false, как все обычные неписи при превышении дистанции алайфа (switch_distance = 150) - уходят в оффлайн как только актор достаточно далеко, например в баре "100 ренген" или на арене ... В моде ABC имеется подобие войны группировок, т.е. порой спавнятся группы врагов, нападающие на Бар. Спавнятся, наример, в точке у перехода на Свалку. Возникает ситуация: ГГ сидит в баре иль воюет на арене, блокпост чист (все в оффлайне), на локацию заспавнены враги, которые в нлайне всегда(!) и ... спокойно пройдя "пустой" блокпост - нападают уже внутри бара. Игрок недоумевает: "А какого черта делала охрана на блок посте?". Тем более, отбив атаку, приходит на блок пост (все выскочили в онлайн!) и видит там полный набор "охранников", не выпустивших ни одного патрона ... Т.о. этим параметром (online) можно задавать - быть ли всегда в онлайне на текущей работе неписю, иль можно "покидать игру" ежели актор далеко. Соответственно можно управлять стычками далеко на на текущей локации, оставляя иль себе "посмотреть" иль "пусть и без меня разбираются". (по другим параметрам чуть позже дам свои комменты ...) Добавлено через 13 мин.: *Shoker*: Другое дело что all.spawn представляет больше возможностей для тонкой настройки НПС А вот тут ты уже ошибаешься. С последними вариантами читалок/писалок нет-пакетов, как раз бОльше возможностей предоставляет именно скриптовой спавн: - можно заспавнить любой объект, который (например, созданный новый класс) не может быть пока включен в all.spawn из-за ограничений ACDC на чтение скриптов (особенно "своих" для каждого мода); - управление любыми параметрами (включая дирекцию), включая, например, наполнение магазинов нужным набором патронов в оружие и пр ... , чего нельзя задать в all.spawn (через ACDC). А вот другое дело, что то, что делается скриптами при спавне требует ой как много строчек кода для спавна всего того, что в all.spawn'е и ... rusMAFIA пока не догадывается, что на пару порядков легче понять и освоить работу с all.spawn'ом, чем пытаться обойтись без него. Тем более, все одно - перенос в скрипты потребует разбирательства с тем, что же и как нужно выносить из all.spawn'а и ... навык и понимание придет сам собою. Изменено 18 Января 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
RayTwitty 492 Опубликовано 19 Января 2012 Поделиться Опубликовано 19 Января 2012 Никто не знает, есть ли метод\функция для выключения (или регулировки) общей громкости звуков и музыки в ТЧ? Я нашел только метод level.set_snd_volume(), но он устанавливает громкость только у различных звуков, а на музыку (амбиент и музыки в гл. меню) не влияет. Знаю что можно сделать через команду в консоли, но хотелось бы узнать, может есть спец. метод (как например level.set_snd_volume(), но с учетом музыки). Ссылка на комментарий
Keng 0 Опубликовано 20 Января 2012 Поделиться Опубликовано 20 Января 2012 (изменено) Сообщение от модератора ColR_iT Приношу свои извинения за скоропостижные выводы и соответственно решение. Подобные вопросы из области "а можно ли?", пожалуйста, задавать в тему ковырялок, требуемой версией игры. Изначальный пост будет перенесен в тему "[soC] Ковыряемся в файлах". Спасибо за понимание. Изменено 21 Января 2012 пользователем ColR_iT Всем пока я верю в вас! Ссылка на комментарий
nanshakov 0 Опубликовано 21 Января 2012 Поделиться Опубликовано 21 Января 2012 Всем доброго времени суток,прошу помочь настроить логику нпс(ТЧ).Если портированная мапа Болота(ЧН)(сообщество мапперов,пак). Заселяю базу ЧН.На локации уже был гулаг для проводника(прямо на базе)(сам проводник заспавнен,у него логика работает).Увеличил в нем кол-во нпс,до 7(спавню 3х+1(стандартный проводник).Но у моих заспавненных нпс какие то проблемы с головой(т.е логикой).Они не хотять сидеть у костра итд.Некоторый вообще уходят из зоны гулага(почему?).Прошу помочь. [9050] ; cse_abstract properties section_name = smart_terrain name = baza_mar_lager position = -133.499420166016,0.912109017372131,-295.620941162109 direction = -0.352839291095734,0,0.935683965682983 ; cse_alife_object properties game_vertex_id = 3381 distance = 5 level_vertex_id = 79047 object_flags = 0xffffff3e custom_data = <<END [smart_terrain] type = baza_mar_lager capacity = 7 END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 20.55957102775574 ; cse_alife_space_restrictor properties restrictor_type = 3 ; se_smart_terrain properties [9053] ; cse_abstract properties section_name = stalker name = marsh_csky_1 position = -136.034210205078,0.724393010139465,-292.406188964844 direction = -0.998166263103485,0,0.0605319775640965 ; cse_alife_trader_abstract properties money = 5000 character_profile = marsh_csky_1 ; cse_alife_object properties game_vertex_id = 3381 distance = 3 level_vertex_id = 78036 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] baza_mar_lager = true END ; cse_visual properties ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 3 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 3 upd:timestamp = 0x6d6d695f upd:creature_flags = 0x75 upd:position = -136.034210205078,0.724393010139465,-292.406188964844 upd:o_model = 0 upd:o_torso = -0.000645029998850077,0.0445535257458687,0 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 3381 upd:prev_game_vertex_id = 3381 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 1,0,0,2,0 predicate4 = 2,2,1,2 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties [9054] ; cse_abstract properties section_name = stalker name = marsh_csky_2 position = -138.034210205078,0.724393010139465,-292.406188964844 direction = -0.998166263103485,0,0.0605319775640965 ; cse_alife_trader_abstract properties money = 5000 character_profile = marsh_csky_2 ; cse_alife_object properties game_vertex_id = 3381 distance = 5 level_vertex_id = 78036 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] baza_mar_lager = true END ; cse_visual properties ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 3 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 3 upd:timestamp = 0x6d6d695f upd:creature_flags = 0x75 upd:position = -136.034210205078,0.724393010139465,-292.406188964844 upd:o_model = 0 upd:o_torso = -0.000645029998850077,0.0445535257458687,0 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 3381 upd:prev_game_vertex_id = 3381 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 1,0,0,2,0 predicate4 = 2,2,1,2 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties [9055] ; cse_abstract properties section_name = stalker name = marsh_csky_3 position = -138.034210205078,0.724393010139465,-292.406188964844 direction = -0.998166263103485,0,0.0605319775640965 ; cse_alife_trader_abstract properties money = 5000 character_profile = marsh_csky_3 ; cse_alife_object properties game_vertex_id = 3381 distance = 7 level_vertex_id = 78036 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] baza_mar_lager = true END ; cse_visual properties ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 3 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 3 upd:timestamp = 0x6d6d695f upd:creature_flags = 0x75 upd:position = -136.034210205078,0.724393010139465,-292.406188964844 upd:o_model = 0 upd:o_torso = -0.000645029998850077,0.0445535257458687,0 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 3381 upd:prev_game_vertex_id = 3381 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 1,0,0,2,0 predicate4 = 2,2,1,2 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties [logic@baza_mar_lager_marsh_csky_1] active = kamp@baza_mar_lager_marsh_csky_1 [kamp@baza_mar_lager_marsh_csky_1] center_point = baza_marsh_csky_1_kamp [logic@baza_mar_lager_marsh_csky_2] active = kamp@baza_mar_lager_marsh_csky_2 [kamp@baza_mar_lager_marsh_csky_2] center_point = baza_marsh_csky_2_kamp [logic@baza_mar_lager_marsh_csky_3] active = kamp@baza_mar_lager_marsh_csky_3 [kamp@baza_mar_lager_marsh_csky_3] center_point = baza_marsh_csky_3_kamp --- baza_mar лагерь --- if type == "baza_mar_lager" then t = { section = "logic@baza_mar_lager_baza_marsh_provodnik", idle = 0, prior = 5, state = {0}, in_rest = "", out_rest = "" } table.insert(sj, t) end if type == "baza_mar_lager" then t = { section = "logic@baza_mar_lager_marsh_csky_1", idle = 0, prior = 7, state = {0,1,2}, in_rest = "", out_rest = "" } table.insert(sj, t) end if type == "baza_mar_lager" then t = { section = "logic@baza_mar_lager_marsh_csky_2", idle = 0, prior = 7, state = {0,1,2}, in_rest = "", out_rest = "" } table.insert(sj, t) end if type == "baza_mar_lager" then t = { section = "logic@baza_mar_lager_marsh_csky_3", idle = 0, prior = 7, state = {0,1,2}, in_rest = "", out_rest = "" } table.insert(sj, t) end И еще 1 вопрос.Значение типа center_point = baza_marsh_csky_3_kamp должно быть на карте(физически т.е)? Ссылка на комментарий
ColR_iT 171 Опубликовано 21 Января 2012 Поделиться Опубликовано 21 Января 2012 nanshakov, а ты уверен, что твои НПС попадают под этот гулаг? Может гулаг уже пригреб кого-то? Тебе вообще-то, откровенно говоря, повезло, что в игру вошел без вылета. Чисто в качестве совета: для гулагов делай количество работ всегда больше его вместимости, максимум, что допустимо, одинаковым. К стати, под каким состоянием гулаг начинает работу (что у тебя в функции load_states)? Ссылка на комментарий
nanshakov 0 Опубликовано 21 Января 2012 Поделиться Опубликовано 21 Января 2012 количество работ всегда больше его вместимости, максимум, что допустимо, одинаковым. Хм,а что это за параметр?Просто не давно начал разбираться,мог упустить. К стати, под каким состоянием гулаг начинает работу (что у тебя в функции load_states)? Я такой функции даже не делал...А надо было?А где? nanshakov, а ты уверен, что твои НПС попадают под этот гулаг? Может гулаг уже пригреб кого-то? Не уверен,а как проверить? Ссылка на комментарий
ColR_iT 171 Опубликовано 21 Января 2012 Поделиться Опубликовано 21 Января 2012 (изменено) nanshakov, много вопросов, причем мало определяющих... Все они (вопросы), скажем так, давно разжеваны, поэтому для начала могу посоветовать дать ссылку на очень хорошую статью на wiki: Настройка логики, там в пяти частях - долго, но информативно. Там ты найдешь ответы на заданные вопросы. Изменено 21 Января 2012 пользователем ColR_iT Ссылка на комментарий
AndreySol 215 Опубликовано 22 Января 2012 Поделиться Опубликовано 22 Января 2012 Подскажите, плиз. Можно-ли скриптово сменить тип патронов заряженных в оружие, находящееся в руках ГГ. Готовой ф-ции похоже нет, значит только через нет-пакет ? Но тогда вроде надо перевести оружие в оффлайн, чтоб изменения применились, а это не очень красиво будет выглядеть. Ссылка на комментарий
Artos 99 Опубликовано 22 Января 2012 Поделиться Опубликовано 22 Января 2012 AndreySol, если оружие в руках (активно) то незаметно для игрока за компом невозможно подменить в нем патроны. Актор (ГГ) - клиентский объект и даже нет-пакеты не помогут, т.к. в оффлайн ты его не уведешь ... , а значит будет заметно. Можно попробовать манипулирвать подменой имеющихся в его рюкзаке патронов и разряжать оружие в руках ( obj:unload_magazine() ), чтобы уже подзаряжались из рюкзака желаемые ... но сам процес перезарядки все же будет тоже виден. ИМХО, манипулировать подобным в игре с актором - моветон, т.е. навязывание игроку различных "фокусов" с ним и предметами в его руках. Можно понять поломку оружия (пуля/осколок попали), можно понять постеменный износ оружия, но ... исчезновение/подмена патронов - из области фантастики/сказок. 1 "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
ferrari314 3 Опубликовано 23 Января 2012 Поделиться Опубликовано 23 Января 2012 Помогите написать скрипты и подскажите куда прописать: 1. При использовании предмета Хлеб, в рюкзаке появляется колбаса и водка. Хлеб исчезает. 2. При использовании колбасы, появляется хлеб и исчезает колбаса с водкой. 3. Еще по всей локации разбросан предмет bolt. как сделать чтобы они все удалялись (по типу уборщика оружия даже можно). Добавлено через 40 мин.: Делал для ЗП запакованные пайки. Покупаешь коробочку, распаковываешь, а там целый набор. Так же удобно с аптечками. Чтобы не забивать рюкзак всяким хламом лишний раз. Все бинты(особенно кучи таблеток в ЗП хранились в медпакетах). Хотелось бы такое же решение узнать для ТЧ. В ЗП скрипт выглядел как: ЕСЛИ использован предмет Х То удалить предмет Х и добавить предмет У актору, и т.п. третий скрипт вообще не представляю как делать. Истина где-то рядом... Ссылка на комментарий
Unnamed Black Wolf 4 Опубликовано 23 Января 2012 Поделиться Опубликовано 23 Января 2012 (изменено) ferrari314, Жеесть.. Ты ещё жив? ))))) А то думал-то... Надож потянул тебя куда.... X_X засовывать скрипт надо в биндер актера, в функцию использования.. И в принципе удаление вроде движковое и удалять не нужно, если конечно порция употребления стоит единица. На всякий случай напишу.... if (s_obj) and (s_obj:section_name()=="bread") then alife():create("kolbasa", actor_position. actor_leve_id, actor_global_id, actor_id) alife():create("vodka", actor_position. actor_leve_id, actor_global_id, actor_id) alife():release(s_obj, true) end Этот код пример на работу с хлебом, сначала определяем что переданный в функцию предмет это хлеб, то создаем два предмет. Указывай в функция позицию и лвид с гвидом и идом актера, для создания. Ну и удаление переданного нам предмета. Сувать в функцию use_inventory_item. После get_console():execute("snd_volume_music 0") get_console():execute("snd_volume_eff 0") end По аналогией сделаешь создание с другими предметами, думаю не сложно для тебя... Удаления предмета.. Хмм, куда записать... for k = 1,65535 do local s_obj = alife():object(k) if s_obj ~= nil then if s_obj:section_name()=="bolt" then alife():release(s_obj, true) end end end Вроде так, при условие что болт это секция предмета. Записать наверно, в net_spawn в биндер актера после строк self.already_jumped = false self.loaded = false Если кто может подсказать лучше место, пожалуйста... P.S. биндер актера - bind_stalker.script. Изменено 23 Января 2012 пользователем Unnamed Black Wolf Ссылка на комментарий
RayTwitty 492 Опубликовано 23 Января 2012 Поделиться Опубликовано 23 Января 2012 ferrari314, 3. Еще по всей локации разбросан предмет bolt. как сделать чтобы они все удалялись (по типу уборщика оружия даже можно). Параметр destroy_time в конфиге болта не катит? Или "bolt" новый предмет с одинаковым именем с болтом? (чему я сомневаюсь) засовывать скрипт надо в биндер актера, в функцию использования.. Нужно еще сам колбек юза добавить для начала. Ссылка на комментарий
ferrari314 3 Опубликовано 24 Января 2012 Поделиться Опубликовано 24 Января 2012 Shadows Болт - новая секця. Unnamed Black Wolf спасибо большое, но ничего не катит.. мало того, что в бинд_сталкере вообще нет функции он_юзе_итем. (ТЧ 1.004 по скриптам почти чистая), хотя я помню в амк такая была. Куда пихать в чистом бинд_сталкер? Функция килла болта убивает игру сразу после старта с ошибкой в вормате луа, с отсылкой на файл скриптов которого и в геймдате то у меня нет - вообщем неправильно что-то. Добавлено через 69 мин.: В бинд сталкере - actor_binder:reinit() прописал каллбек: self.object:set_callback(callback.use_object, self.OnUseObject, self) ну и соответственно в конце бинд сталкера добавил метод function actor_binder:OnUseObject(obj, who) if obj then if obj:section() =="bread" then alife():create("kolbasa", actor_position. actor_leve_id, actor_global_id, actor_id) alife():create("vodka", actor_position. actor_leve_id, actor_global_id, actor_id) end end end но при съедании хлеба вообще ничего не происходит. Что не так? Истина где-то рядом... Ссылка на комментарий
*Shoker* 322 Опубликовано 24 Января 2012 Поделиться Опубликовано 24 Января 2012 ferrari314 1) Тут в коде опечатка, после actor_position не точка а запятая. 2) actor_position, actor_leve_id, actor_global_id и actor_id это переменные, которых у тебя наверно нету, замени каждую alife() строчку на: alife():create("kolbasa", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) С водкой точно также. 3) Колбек на юзанье предмета по аналогии надо ещё выключать из net_destroy(), но думаю на текущую ошибку это не влияет. Попробуй сперва это, а потом если что продолжим. И удаление болта, как посоветовал Unnamed Black Wolf будет происходить только при загрузке игры (и сохранений), так что тоже учти это. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
ferrari314 3 Опубликовано 24 Января 2012 Поделиться Опубликовано 24 Января 2012 (изменено) ^Shoker^, спасибо. Поправил ф-ю хлеба: function actor_binder:OnUseObject(obj, who) if obj then if obj:section() =="bread" then alife():create("kolbasa", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) alife():create("vodka", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end end end кллбек все-тот же, итог: при съедании хлеба не происходит ровным счетом ничего. Функция килла болта не работает и загрузить ее с сейвами может можно но она крашит игру с вышеописанным логом - функция зло, надо ее переделать, как писать такого рода ф-и понятия не имею. Добавлено через 32 мин.: Добавил выключатель в нет_дестрой: self.object:set_callback(callback.OnUseObject, nil) и поменял вызов из реинита: self.object:set_callback(callback.OnUseObject, self.OnUseObject, self) Результат налицо при запуске: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: d:\games\s.t.a.l.k.e.r\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value) что делать хз В-первую очередь, прекратить копипастить лог ошибки из буфера, а приводить его из лог-файла, с указанием нескольких строк ДО секции 'fatal error'. --/Artos Изменено 24 Января 2012 пользователем Artos Истина где-то рядом... Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти