Перейти к содержанию

Рекомендуемые сообщения

Опубликовано
30.08.2018 05:29:43, mr Jyggalag сказал(-а):

Скрипт прикрепляешь к квесту, скрипт должен быть типа Conditional. Далее, внутри скрипта создаёшь функцию (к примеру - UnequipArmor(); как создавать свои функции написано здесь), которую будешь вызывать на определённой стадии квеста. Всё сделано? Идём далее - в Quest Stges, в своём квесте, ты создаёшь нужный этап квеста (10), а далее в таблице с надписью в верхней части "Log Entry" и выбираешь пункт "New" Закрываешь квест через кнопку "Ок", сохраняешь плагин. ДАлее заново открываешь квест, заходишь в этапы квеста, открываешь нужный этап и в поле Papyrus Fragment в "kmyQuest" выбираешь твой скрипт.

Далее, в этом же окошке прописываешь код, а нужную функцию вызываешь через "kmyQuest.UnequipArmor()"

спасибо, это работает. Теперь возник другой вопрос. У меня квест вызывается пакетом ForceGreet. Но когда он заканчивается и игрок сам вступает в разговор с персонажем квеста, линия диалогов из квеста становится видна в окне обычного диалога. Квест у меня повторяющийся. Как можно убрать квестовую линию диалога из окна обычного разговора? 

Опубликовано
30.08.2018 22:50:54, Vita2016 сказал(-а):

У меня квест вызывается пакетом ForceGreet. Но когда он заканчивается и игрок сам вступает в разговор с персонажем квеста, линия диалогов из квеста становится видна в окне обычного диалога. Квест у меня повторяющийся. Как можно убрать квестовую линию диалога из окна обычного разговора? 

Поменять тип бранчи диалога с Top-Level на Normal (цвет фона бранчи сменится с золотого на фиолетовый).

  • 2 недели спустя...
Опубликовано

Доброго времени суток господа. У меня сразу просьба - помогите решить проблемы со скриптами.  Есть скрипты которые работают - но работают не совсем так как нужно мне - ниже приведу примеры - и постараюсь описать всё как можно подробнее (прошу строго не судить - у меня совсем нет опыта в модестроении - поэтому и изъясняться я буду топорно)

 

1) Скрипт который рандомно включает (Enable) один из объектов когда ГГ (главный герой-Довакин-актёр) входит в область триггера и выключает (Disable) этот объект когда ГГ покидает область триггера. Суть в том что я уже три дня пытаюсь сделать так чтобы скрипт срабатывал не тольно на ГГ но так же на NPC - подскажите в чём моя проблема что нужно прописать в скрипте что бы он так же срабатывал на NPC (когда те входят в триггер и покидают его)

 

Scriptname _0000_HMD_Trigger_RandomObject_Enable extends ObjectReference

;-- Properties --------------------------------------
ObjectReference property RandomObjectEnable_1 auto
ObjectReference property RandomObjectEnable_2 auto
ObjectReference property RandomObjectEnable_3 auto
ObjectReference property RandomObjectEnable_4 auto
ObjectReference property RandomObjectEnable_5 auto
ObjectReference property RandomObjectEnable_6 auto
ObjectReference property RandomObjectEnable_7 auto

;-- Variables ---------------------------------------

;-- Functions ---------------------------------------

function OnTriggerLeave(ObjectReference akActionRef)

if akActionRef == game.GetPlayer() as ObjectReference
  RandomObjectEnable_1.DisableNoWait(true)
  RandomObjectEnable_2.DisableNoWait(true)
  RandomObjectEnable_3.DisableNoWait(true)
  RandomObjectEnable_4.DisableNoWait(true)
  RandomObjectEnable_5.DisableNoWait(true)
  RandomObjectEnable_6.DisableNoWait(true)
  RandomObjectEnable_7.DisableNoWait(true)
else
  return
endIf
endFunction

; Skipped compiler generated GetState

function OnTriggerEnter(ObjectReference akActionRef)

if akActionRef == game.GetPlayer() as ObjectReference
  Int random = utility.RandomInt(1, 75)
  if random >= 1 && random < 10
   RandomObjectEnable_1.EnableNoWait(true)
  elseIf random >= 10 && random < 20
   RandomObjectEnable_2.EnableNoWait(true)
  elseIf random >= 20 && random < 30
   RandomObjectEnable_3.EnableNoWait(true)
  elseIf random >= 30 && random < 40
   RandomObjectEnable_4.EnableNoWait(true)
  elseIf random >= 40 && random < 50
   RandomObjectEnable_5.EnableNoWait(true)
  elseIf random >= 50 && random < 60
   RandomObjectEnable_6.EnableNoWait(true)
  elseIf random >= 60
   RandomObjectEnable_7.EnableNoWait(true)
  endIf
else
  return
endIf
endFunction

; Skipped compiler generated GotoState

 

2) Есть скрипт который при активации триггера рандомно дает ГГ один из предметов ingredient - мне нужно что бы этот предмет + активный эффект (хороший отдых) ГГ получал спустя час - то есть при активации триггера должен проходить час (ну как со сном - только без возможности выбора временного интервала) и появлялось всплывающее окошко (Message box) в котором будет написано что прошел час  и ГГ хорошо отдохнул. Важно что бы хороший отдых ГГ получал в независимости от рандомной составляющей

 

Scriptname _0000_HMD_Crafting_Resources extends ObjectReference

ingredient property Eff1 auto
ingredient property Eff2 auto
ingredient property Eff3 auto
ingredient property Eff4 auto
ingredient property Eff5 auto
ingredient property Eff6 auto
ingredient property Eff7 auto

function OnActivate (ObjectReference akActionRef)

if akActionRef == game.GetPlayer() as ObjectReference
  Int random = utility.RandomInt(1, 75)
  if random >= 1 && random < 10
   game.getplayer().additem(Eff1, 1)
  elseIf random >= 10 && random < 20
   game.getplayer().additem(Eff2, 1)
  elseIf random >= 20 && random < 30
   game.getplayer().additem(Eff3, 1)
  elseIf random >= 30 && random < 40
   game.getplayer().additem(Eff4, 1)
  elseIf random >= 40 && random < 50
   game.getplayer().additem(Eff5, 1)
  elseIf random >= 50 && random < 60
   game.getplayer().additem(Eff6, 1)
  elseIf random >= 60
   game.getplayer().additem(Eff7, 1)
  endIf
else
  return
endIf
endFunction

 

Заранее спасибо.

Опубликовано

1)

Scriptname _0000_HMD_Trigger_RandomObject_Enable extends ObjectReference

ObjectReference property RandomObjectEnable_1 auto
ObjectReference property RandomObjectEnable_2 auto
ObjectReference property RandomObjectEnable_3 auto
ObjectReference property RandomObjectEnable_4 auto
ObjectReference property RandomObjectEnable_5 auto
ObjectReference property RandomObjectEnable_6 auto
ObjectReference property RandomObjectEnable_7 auto


function OnTriggerLeave(ObjectReference akActionRef)
  RandomObjectEnable_1.DisableNoWait(true)
  RandomObjectEnable_2.DisableNoWait(true)
  RandomObjectEnable_3.DisableNoWait(true)
  RandomObjectEnable_4.DisableNoWait(true)
  RandomObjectEnable_5.DisableNoWait(true)
  RandomObjectEnable_6.DisableNoWait(true)
  RandomObjectEnable_7.DisableNoWait(true)
endFunction


function OnTriggerEnter(ObjectReference akActionRef)
  Int random = utility.RandomInt(1, 75)
  if random >= 1 && random < 10
   RandomObjectEnable_1.EnableNoWait(true)
  elseIf random >= 10 && random < 20
   RandomObjectEnable_2.EnableNoWait(true)
  elseIf random >= 20 && random < 30
   RandomObjectEnable_3.EnableNoWait(true)
  elseIf random >= 30 && random < 40
   RandomObjectEnable_4.EnableNoWait(true)
  elseIf random >= 40 && random < 50
   RandomObjectEnable_5.EnableNoWait(true)
  elseIf random >= 50 && random < 60
   RandomObjectEnable_6.EnableNoWait(true)
  elseIf random >= 60
   RandomObjectEnable_7.EnableNoWait(true)
  endIf
endFunction

2)

Scriptname _0000_HMD_Crafting_Resources extends ObjectReference

actor property PlayerRef auto
messagebox property GoodRestMessage auto
spell property GoodRestSpell auto
ingredient property Eff1 auto
ingredient property Eff2 auto
ingredient property Eff3 auto
ingredient property Eff4 auto
ingredient property Eff5 auto
ingredient property Eff6 auto
ingredient property Eff7 auto

function OnActivate (ObjectReference akActionRef)

if akActionRef == game.GetPlayer() as ObjectReference
  Int random = utility.RandomInt(1, 75)
  if random >= 1 && random < 10
   game.getplayer().additem(Eff1, 1)
  elseIf random >= 10 && random < 20
   game.getplayer().additem(Eff2, 1)
  elseIf random >= 20 && random < 30
   game.getplayer().additem(Eff3, 1)
  elseIf random >= 30 && random < 40
   game.getplayer().additem(Eff4, 1)
  elseIf random >= 40 && random < 50
   game.getplayer().additem(Eff5, 1)
  elseIf random >= 50 && random < 60
   game.getplayer().additem(Eff6, 1)
  elseIf random >= 60
   game.getplayer().additem(Eff7, 1)
  endIf
GoodRestSpell.cast(PlayerRef, PlayerRef)
GoodRestMessage.Show()
endIf
endFunction

Не забудь проставить все проперти в СК.

PlayerRef - игрок

GoodRestMessage - твой месседжбокс (в СК его сделаешь, так имхо правильнее, чем текст напрямую в скрипте задавать).

GoodRestSpell - заклинание с эффектом отдыха.

  • Нравится 1
Опубликовано (изменено)

PlayerRef - игрок

GoodRestMessage - твой месседжбокс (в СК его сделаешь, так имхо правильнее, чем текст напрямую в скрипте задавать).

GoodRestSpell - заклинание с эффектом отдыха.

 

 

 

ух ты как быстро помогли - спасибо огромное - пойду тестить)) про месседж бокс - ты абсолютно прав - так гораздо лучше и универсальнее.

Изменено пользователем CISCO.:i:..:i:.
Опубликовано

второй скрипт при компиляции выдает ошибку:

 

Starting 1 compile threads for 1 files...
Compiling "aaaaHMD_Crafting_Resources"...
C:\Games\Skyrim - Legendary Edition\Data\Scripts\Source\temp\aaaaHMD_Crafting_Resources.psc(5,20): unknown type messagebox
C:\Games\Skyrim - Legendary Edition\Data\Scripts\Source\temp\aaaaHMD_Crafting_Resources.psc(35,16): messagebox is not a known user-defined type
No output generated for aaaaHMD_Crafting_Resources, compilation failed.

Batch compile of 1 files finished. 0 succeeded, 1 failed.
Failed on aaaaHMD_Crafting_Resources

 

что делать?

Опубликовано

Попробуй заменить в строчке

messagebox property GoodRestMessage auto

слово messagebox на просто message.

 

Что-то я не помню, как там эти сообщения в проперти должны быть.

  • Нравится 1
Опубликовано

Azazellz  спасибо ты прав дело было только в этом - как я сам не заметил - а да точно я забыл - я же нубик))))  и еще одно подскажи а где во втором скрипте команда что должен пройти час - ну типа как при ожидании или сне - или же это невозможно прописать в скрипте? 

Опубликовано (изменено)

А. Это я пропустил.

И что-то даже хз, как это реализовать. Прямой команды, чтоб зафорсить игрока "отдохнуть" я не нашел.

Можно попробовать разобрать каие-нибудь моды на такую тематику - их несколько существует. Living takes time или как-то так.

Еще была пара домов, которые строить надо - и которые при постройке "проматывали" время.

Изменено пользователем Azazellz
Опубликовано

Замени

GoodRestSpell.cast(PlayerRef, PlayerRef)

На

PlayerRef.AddSpell(GoodRestSpell)

Отдых, оказывается, не спелл, а абилити со скриптом-таймером. Через каст не добавится.

  • Нравится 1
Опубликовано (изменено)

Народ есть у кого нибудь готовый скрипт с принципом работы enable\disable. Дано три объекта A В С все изначально (desable) - объекты А и В - активируются (становятся enable) с помощью триггеров активаторов - а объект С активируется (становиться enable) только если объекты А и В enable. Если хотя бы один из объектов А и В становиться disable - тогда и объект С - становиться disable.

 

Скрипт на А и В у меня есть - они же простые))))) а вот на С не могу понять как накписать - смотрел принцип работы скрипта стены Бладскал - где дверь открывается если предыдущие активаторы сработали - но так и не смог разобраться что к чему - а где смотреть еще ума не приложу. Наверняка у Вас матёрых мододелов завалялось что нить подобное)

 

P.S. предыдущий мой вопрос с ожиданием времени (как при активации ожидания времени или сна)- так и не был решен мной - помощь всё еще нужна.

Изменено пользователем CISCO.:i:..:i:.
Опубликовано
11.09.2018 10:40:22, CISCO.:i:..:i:. сказал(-а):
Если скрипт на А и В у меня есть - они же простые

Ну так включай голову.

Условие "If" тебе знакомо же?

Вот и используй.

A.Enable(true)
if (B.IsEnabled())
C.Enable(true)
endif

Наоборот еще проще - если у тебя отключается А или B, то сразу отключается и С. Тут даже If не нужен, просто две строчки disable подряд.

A.Disable(true)
C.Disable(true)

Для B аналогично.

Опубликовано
11.09.2018 11:01:16, Azazellz сказал(-а):

Ну так включай голову.

Условие "If" тебе знакомо же?

Вот и используй.

A.Enable(true)
if (B.IsEnabled())
C.Enable(true)
endif

Наоборот еще проще - если у тебя отключается А или B, то сразу отключается и С. Тут даже If не нужен, просто две строчки disable подряд.

A.Disable(true)
C.Disable(true)

Для B аналогично.

ну это если я хочу что бы у меня С активировалось (становилось enable) от одного из частников цепи. А мне нужно что бы С становился enable только когда оба объекта станут enable. и что бы С становилось обратно disable если один из объектов либо А либо В становился disable. То есть если А и В (enable) - то тогда С тоже (enable). если А (enable) В (disable) то тогда С (disable) - как же еще объяснить - в общем мне нужно что бы скрипт на С запускал проверку на наличие (enable\disable) у двух объектов А и В - и если они оба (enable) тогда и С становится(enable) - если же один из них (disable неважно какой) тогда и С (disable)

 

P.S. заранее извиняюсь если чего не понял.

Опубликовано (изменено)
11.09.2018 12:09:46, CISCO.:i:..:i:. сказал(-а):
P.S. заранее извиняюсь если чего не понял.

Извиняю, потому что ты не понял.

 

Скрипт, который будет висеть на С и чего-то там отслеживать тебе не нужен.

 

У тебя есть А и Б.

Ты включаешь А, и в скрипте, прицепленном к А, сразу проверяется состояние Б.

Если Б - включено, этим же скриптом включается и С. Если Б - не включено, ничего, кроме включения, А не происходит.

Т.е. это первый код в моем сообщении выше.

Для Б - аналогично.

Включаешь Б, этим же скриптом проверяется состояние А, если оно включено - включается и С.

Этот код уже напиши сам.

 

Опять же, если ты отключаешь любой из элементов, и хочешь, чтобы С работал, только пока включены оба, никакой скрипт на С тебе так же не нужен.

Ибо если хоть один из элементов у тебя отключен - С так же отключается.

Т.е. ты можешь просто отключать оба элемента одним скриптом - А и С (код в сообщении выше), или Б и С (код пиши сам).

 

Это самый простой метод, который требует минимума знаний СК и папируса.

Можно, конечно, замутить сложную систему (сделать квест, например, который будет включать\отключать С в зависимости от стадий, которые будут переключаться через А и Б...) - но тут это явно не нужно.

Изменено пользователем Azazellz
Опубликовано
11.09.2018 16:32:16, CISCO.:i:..:i:. сказал(-а):

ааа - ну вот теперь понял - пойду ковырять - спасибо.

Главное - включай почаще логику и выбирай наиболее простой путь реализации.

 

Если тебе нужна зубочистка - не пили ради этого дерево. Найди спичку =)

Опубликовано

Разобрался с временем ожидания - получилось следующие:

Скрипт
 

ingredient property Eff1 auto
ingredient property Eff2 auto
ingredient property Eff3 auto
ingredient property Eff4 auto
ingredient property Eff5 auto
ingredient property Eff6 auto
ingredient property Eff7 auto

actor property PlayerRef auto
message property MyMessage auto
spell property MySpell auto
globalvariable property GameHour auto
Float property Time auto

function OnActivate (ObjectReference akActionRef)

if akActionRef == game.GetPlayer() as ObjectReference
Int random = utility.RandomInt(1, 75)
if random >= 1 && random < 10
game.getplayer().additem(Eff1, 1)
elseIf random >= 10 && random < 20
game.getplayer().additem(Eff2, 1)
elseIf random >= 20 && random < 30
game.getplayer().additem(Eff3, 1)
elseIf random >= 30 && random < 40
game.getplayer().additem(Eff4, 1)
elseIf random >= 40 && random < 50
game.getplayer().additem(Eff5, 1)
elseIf random >= 50 && random < 60
game.getplayer().additem(Eff6, 1)
elseIf random >= 60
game.getplayer().additem(Eff7, 1)
endIf
game.FadeOutGame(false, true, 2.00000, 3.00000)
GameHour.SetValue(GameHour.GetValue() + Time)
MyMessage.show(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000)
PlayerRef.AddSpell(MySpell )
endIf
endFunction

; Skipped compiler generated GotoState

; Skipped compiler generated GetState

 

но смущает только одно что отдых добавляется как ингредиент - присутствует  надпись в левом верхнем углу - "Хороший отдых добавлено" я так понимаю это из за использования заклинания - и  как сделать так что бы убрать это сообщение? Можно ли замутить отдых через новый Keywords и если да то как?

Опубликовано (изменено)
13.09.2018 15:13:32, CISCO.:i:..:i:. сказал(-а):

"Хороший отдых добавлено" я так понимаю это из за использования заклинания

Как ты игре добавлять сказал - так она это и делает. И это не ингридиент - это обычное сообщения о том, что игроку что-то добавлено. Магия, абилка, ингридиент, предмет - неважно.
Сделаешь так - сообщения не будет.
PlayerRef.AddSpell(MySpell, false)
13.09.2018 15:13:32, CISCO.:i:..:i:. сказал(-а):

Можно ли замутить отдых через новый Keywords и если да то как?

Какой еще кейворд? Зачем?
Отдых по сути - перк, ускоряющий прокачку, прицепленный к заклинанию-способности с постоянным эффектом (и скриптом, который этот эффект через нужное время снимает).
Где там кейворды?
13.09.2018 15:13:32, CISCO.:i:..:i:. сказал(-а):

GameHour.SetValue(GameHour.GetValue() + Time)

У меня кстати есть сомнения, как это вот будет работать, если у тебя, скажем, на часах - 23:00, а в Time стоит 2 часа.
Нормально оно на час ночи промотается, или таки что-то сломается?
Рекомендую протестировать такой вариант. Изменено пользователем Azazellz
Опубликовано
13.09.2018 15:32:20, Azazellz сказал(-а):
Как ты игре добавлять сказал - так она это и делает. И это не ингридиент - это обычное сообщения о том, что игроку что-то добавлено. Магия, абилка, ингридиент, предмет - неважно

Да это понятно - я про то что надпись идет (ДОБАВЛЕНО) как у ингредиента или предмета и это бесило - хотелось бы что бы надпись была другой - попробую сделать без надписи как ты сказал (кстати СПС) а можно добавить в скрипт напрямую нужный мне вариант (Вы просыпаетесь и чувствуете что хорошо отдохнули)? а MyMessage просто раскроет полностью то что я хочу донести до игрока.

 

 

13.09.2018 15:32:20, Azazellz сказал(-а):
У меня кстати есть сомнения, как это вот будет работать, если у тебя, скажем, на часах - 23:00, а в Time стоит 2 часа.

Проверю - отпишусь.

 

 

13.09.2018 15:32:20, Azazellz сказал(-а):
Какой еще кейворд? Зачем?

Ну я тебе не раз говорил что я плохо разбираюсь в СК - просто как я понял на кроватях ГГ отдых получает через кейворд

Опубликовано
13.09.2018 16:41:46, CISCO.:i:..:i:. сказал(-а):

можно добавить в скрипт напрямую нужный мне вариант (Вы просыпаетесь и чувствуете что хорошо отдохнули)? а MyMessage просто раскроет полностью то что я хочу донести до игрока.

И то, и другое вызывается одним и тем же кодом.
Разница только в том, как это в СК прописано. MessageBox и обычный message там где-то галочкой отличаются.
Можешь вообще ванильное сообщение про отдых найти (должно где-то быть) и его уже тем же самым кодом вызывать.
13.09.2018 16:41:46, CISCO.:i:..:i:. сказал(-а):

Ну я тебе не раз говорил что я плохо разбираюсь в СК - просто как я понял на кроватях ГГ отдых получает через кейворд

Это нужно только для определения кровати игрока, как я понимаю.
Опубликовано (изменено)
13.09.2018 17:02:25, Azazellz сказал(-а):
И то, и другое вызывается одним и тем же кодом.
Разница только в том, как это в СК прописано. MessageBox и обычный message там где-то галочкой отличаются.
Можешь вообще ванильное сообщение про отдых найти (должно где-то быть) и его уже тем же самым кодом вызывать.

в общем скрипт допилил в точности до того эффекта что и хотел. спасибо за помощь.

Скрипт

actor property PlayerRef auto
message property MyMessage auto
spell property MySpell auto
globalvariable property GameHour auto
Float property Time auto
ingredient property Eff1 auto
ingredient property Eff2 auto
ingredient property Eff3 auto
ingredient property Eff4 auto
ingredient property Eff5 auto
ingredient property Eff6 auto
ingredient property Eff7 auto

function OnActivate (ObjectReference akActionRef)

String WellRested = "Вы чувствуете что хорошо отдохнули"

if akActionRef == game.GetPlayer() as ObjectReference
Int random = utility.RandomInt(1, 75)
if random >= 1 && random < 10
game.getplayer().additem(Eff1, 1)
elseIf random >= 10 && random < 20
game.getplayer().additem(Eff2, 1)
elseIf random >= 20 && random < 30
game.getplayer().additem(Eff3, 1)
elseIf random >= 30 && random < 40
game.getplayer().additem(Eff4, 1)
elseIf random >= 40 && random < 50
game.getplayer().additem(Eff5, 1)
elseIf random >= 50 && random < 60
game.getplayer().additem(Eff6, 1)
elseIf random >= 60
game.getplayer().additem(Eff7, 1)
endIf
game.FadeOutGame(false, true, 2.00000, 3.00000)
GameHour.SetValue(GameHour.GetValue() + Time)
MyMessage.show(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000)
PlayerRef.AddSpell(MySpell, false)
debug.Notification (WellRested)
endIf
endFunction

; Skipped compiler generated GotoState

; Skipped compiler generated GetState

Протестировал - на прокрутку времени - всё работает - было 11:07 PM - прокрутил стало 01:07 AM (прокрутку выставил на два часа игрового времени)

Изменено пользователем CISCO.:i:..:i:.
Опубликовано
13.09.2018 18:53:22, CISCO.:i:..:i:. сказал(-а):

всё работает - было 11:07 PM - прокрутил стало 01:07 AM (прокрутку выставил на два часа игрового времени)

А дату не проверил? Вдруг там на один год время вперед ушло? =)
(Без шуток - в новом "платном моде" из КрейшнКлаба для Ф4 при включении введеных там камер наблюдения с датой творились совершенно адские вещи).
Опубликовано
Привет Азазелз! Я взял скрипт активатора, копья... Вписал 5 строчек... И теперь при проперти указываю на вещь. И она исчезает и проявляется в зависимости от состояния копья... Но мне нужен скрипт, который можно белобрыс подвесить к основному скрипту активатора без внесения изменения в основной скрипт... В скрипте квеста только выдаётся команда на скрипт активатора, но как я ещё не просек, а то можно былого снять информацию со скрипта квеста... В общем сделано через жопу, но первая часть того, что я хотел у меня получилась... Но это надо сделать по нормальному... У тебя идей нет???

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...