Перейти к контенту

Скриптование


Svoboда

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

У меня есть очень нехорошая проблема: когда в алл.спауне я добавил новую локацию, добавл туда alife файлы етой локи, я не могу запаковать распакованный алл.спавн, у меня батник не запаковывает и пишет такое:

 

Can`t use an undefined value as an ARRAY reference at stkuils/ini_file.pm line 156 <GEN6> line 40119.

 

Где line 40119 - ето походу последняя строка в alife файле

Прошу не оставлять ето без внимания :russian_ru:

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение

Ребята, помогите написать сткрипт. В функции мне нужно запустить таймер, а через 10 секунд его остановить. И еще нужно, чтоб во время этого запущенного таймера нельзя было использовать продукты питания. Сталкер ЗП.

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение
PavelSnork, непонятно, у тебя сам таймер есть или нет?

У меня таймера нету. Ответте, пожалуйста, на мой предыдущий пост.

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение

Привет всем. У меня есть скрипт:

local ne_jrat = {"medkit","medkit_scientic","medkit_army"}

local iTimer

function Startingg()

iTimer = time_global() + 10*1000 -- взводим таймер на 10cek

db.actor:give_info_portion(porsh1) -- выдаём порш

end

 

function Timer_N_minutes() -- вызывается из ':update' сталкер-биндера

if iTimer and iTimer < time_global() then

iTimer = nil

db.actor:disable_info_portion(porsh1) -- по истечению 10 секунд удаляем порш

end

end

function no_eat(obj) -- это в биндер на :use_inventory_item(obj)

local s_obj = alife():object(obj:id())

if db.actor:has_info(porsh1) then -- пока есть поршень

for k, v in pairs(ne_jrat) do

if if(s_obj) and (s_obj:section_name()==v) then -- нельзя ничего жрать

db.actor:drop_item(v)

db.actor:hide_weapon() -- есл попробовал сожрать - пусть выкидывает

end

end

end

end

 

По идее, после использования аптечки, в течении 10 секунд нельзя использовать другую аптечку, и у гг убираются руки.

А еще у меня есть лог вылета:

FATAL ERROR

 

[error]Expression : !m_error_code

[error]Function : raii_guard::~raii_guard

[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

[error]Line : 748

[error]Description : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:1275: attempt to index local 'obj' (a nil value)

 

 

stack trace:

 

 

Помогите, пожалуйста...

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение

Срочно нужна помощь! Совместил АМК ЗП 0.4 с АРС 0.5.2. Затон работает нормально, но при переходе на любую другую локацию происходит вот такой вылет (также при начале игры на другой локации).

! Cannot find saved game ~~~dbg:_bp:_init():_name='device_pda9929'

! Cannot find saved game ~~~dbg:adding_object_%s

! Cannot find saved game ~~~dbg:adding_object_jup_hiding_place_45

! Cannot find saved game ~~~dbg:motivator_binder:net_spawn():_self.object:name()='%s'

! Cannot find saved game ~~~dbg:motivator_binder:net_spawn():_self.object:name()='jup_belov9938'

! Cannot find saved game ~~~dbg:adding_object_%s

! Cannot find saved game ~~~dbg:adding_object_jup_belov9938

! Cannot find saved game ~~~dbg:filename_is_[%s]

! Cannot find saved game ~~~dbg:filename_is_[nil]

! Cannot find saved game ~~~dbg:xr_info_loaded!!!

! Cannot find saved game ~~~dbg:xr_info_loaded!!!

! Cannot find saved game ~~~dbg:setup_gulag_and_logic_on_spawn_obj=%s,_strn_id=%s,_loaded=%s

! Cannot find saved game ~~~dbg:setup_gulag_and_logic_on_spawn_obj=jup_belov9938,_strn_id=2787,_loaded=fa

lse

! Cannot find saved game ~~~dbg:disable_invulnerability._npc[%s]_=_[false]

! Cannot find saved game ~~~dbg:disable_invulnerability._npc[jup_belov9938]_=_[false]

! Cannot find saved game ~~~dbg:reset_invulnerability._npc[%s]_=_[%s]

! Cannot find saved game ~~~dbg:reset_invulnerability._npc[jup_belov9938]_=_[false]

 

FATAL ERROR

 

[error]Expression : !m_error_code

[error]Function : raii_guard::~raii_guard

[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

[error]Line : 748

[error]Description : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:955: bad argument #1 to 'gfind' (string expected, got nil)

 

 

stack trace:

 

 

Нашел в xr_logic.script функцию с 955 строкой:

function parse_condlist(npc, section, field, src)

local lst = {}

 

-- 1) Разбиваем на разделенные запятыми части:

local at, to, infop_check_lst, remainings, infop_set_lst, newsect

 

--printf("_bp: src = %s", src)

 

local n = 1

for fld in string.gfind(src, "%s*([^,]+)%s*") do -- вот строка 955.

-- Здесь fld это набор infoportions в {} и имя секции, на которую переключиться.

lst[n] = {}

--printf("_bp: iter %d: fld = %s", n, fld)

 

-- Выделяем список infoportions для проверки:

at, to, infop_check_lst = string.find(fld, "{%s*(.*)%s*}")

if infop_check_lst then

--printf("_bp: infop_check_lst: [%s]", infop_check_lst)

 

-- Выделяем оставшуюся часть поля, т.е. имя секции плюс список infoportions для установки:

remainings = string.sub(fld, 1, at - 1) .. string.sub(fld, to + 1)

else

-- Список infoportions для проверки не был задан, следовательно, ничего не удаляем:

remainings = fld

end

--printf("_bp: remainings: %s", remainings)

 

-- Выделяем список infoportions для установки из remainings:

at, to, infop_set_lst = string.find(remainings, "%%%s*(.*)%s*%%")

if infop_set_lst then

-- Выделяем оставшуюся часть поля, т.е. имя секции:

newsect = string.sub(remainings, 1, at - 1) .. string.sub(remainings, to + 1)

else

-- Список infoportions для установки не был задан, следовательно, remainings и есть имя секции.

newsect = remainings

end

--printf("_bp: newsect: %s", newsect)

 

-- И сразу trim имя секции:

at, to, newsect = string.find(newsect, "%s*(.*)%s*")

if not newsect then

abort_syntax_error_in_cond(npc, section, field)

end

 

-- Имя секции теперь можно сохранить:

lst[n].section = newsect

 

-- Теперь нужно распарсить infoportions в строке infop_check_lst и

-- заполнить массив infop_check: { "infop_name" = true/false }.

-- На входе имеем строку вида " +infop1 -infop2 +infop3 ... "

lst[n].infop_check = {}

parse_infop(lst[n].infop_check, infop_check_lst)

 

-- То же самое для устанавливаемых infoportions:

lst[n].infop_set = {}

parse_infop(lst[n].infop_set, infop_set_lst)

 

n = n + 1

end

 

return lst

end

 

 

Вот сижу и думаю, что это может означать...

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение

Полтергейст, после твоей правки я даже не Затон не могу зайти. Вылетает с таким логом:

* [prefetch] time: 21356 ms

* [prefetch] memory: 110656Kb

! Player name in registry is empty! (InstallUserName)

! Cannot find saved game ~~~dbg:start_game_callback_called

! Cannot find saved game ~~~dbg:start_game_callback_called

! Cannot find saved game ~~~dbg:fill_phrase_table

! Cannot find saved game ~~~dbg:fill_phrase_table

* phase time: 21557 ms

* phase cmem: 232193 K

* phase time: 10 ms

* phase cmem: 232193 K

* Creating new game...

* Loading spawn registry...

! Cannot find saved game ~~~dbg:_se_smart_terrain:_set_load_marker:_%s

! Cannot find saved game ~~~dbg:_se_smart_terrain:_set_load_marker:_171

 

FATAL ERROR

 

[error]Expression : !m_error_code

[error]Function : raii_guard::~raii_guard

[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

[error]Line : 748

[error]Description : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:589: bad argument #1 to 'pairs' (table expected, got nil)

 

 

stack trace:

 

Помогите разобраться с проблемой...

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение

strelok200, причиной вылета может быть то, что в файле логики нету секции [meet].

 

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение

Подскажите, пожалуйста, как можно скриптом вывести текстуру на экран, которая записана в maingame.xml? Например, если здоровье гг меньше такого-то значения, то вывести такую текстуру. Я просто в скриптах не силен, а поиск мне не помог.

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение

Поиск не помог, потому и спрашиваю: как отследить то, что мини-карта включена/выключена? Например, при прицеливании через оптику или при диалоге она отключается. (Сталкер ЗП)

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение
*Shoker*, да, сначала я использовал device().fov, но миникарта исчезала раньше, чем начинает уменьшаться этот fov, и мой элемент не успевал вовремя убраться. А с помощью проверки db.actor:accuracy(), которую посоветовал товарищ Kirag и моего шаманства, текстура миникарты исчезает чуть позже (хотя и успевает убраться до появления текстуры прицельной сетки), но синхронно с моим новым элементом худа. А с проверкой на диалог гг с НПСом мне уже помогли. С инвентарем проблем тоже нет (в ЗП миникарта не убирается при открытом инвентаре). А окно торговли и ПДА открываются поверх миникарты.
Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение

Как проверить, используется широкоформатное или обычное разрешение экрана?

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Как отследить, включен ли диалог сна и спит ли гг (в это время исчезает миникарта)? (Сиалкер ЗП)

Изменено пользователем PavelSnork
Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение

Всем привет. Нужен ваш совет. Вот, например, у меня есть условие в функции:

if db.actor:health > 0.1 and db.actor:health < 0.2 or db.actor:health > 0.5 and db.actor:health < 0.6 then .......

Я правильно понимаю, функция будет выполнятся при условии, если у гг здоровье будет, к примеру, 0.15 или 0.55, так?

Просто мне надо, чтоб выполнялось или это db.actor:health > 0.1 and db.actor:health < 0.2 условие, или это db.actor:health > 0.5 and db.actor:health < 0.6.

Ведь можно посчитать, что должно выполняться 3 условия: db.actor:health > 0.1, db.actor:health < 0.2 or db.actor:health > 0.5, и db.actor:health < 0.6...

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение

Ребят, помогите пожалуйста. В сталкере ЗП можно чем-нибудь заменить функцию SetOriginalRect? Ее же вырезали из ЗП, верно?

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение
Artos, я хотел бы уточнить кое-что по поводу coroutine. Как мне применить это для приостановки простой ф-и, где постоянно проверяется здоровье гг? Я не сильно разбираюсь в скриптах, потому прошу сильно не пинать.
Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение
Artos, ну, в моей ф-и куча проверок, и потому в игре появляются лаги (не исчезают надписи ,,использована аптечка'', и т.д). И мне надо, чтобы, например, через каждые 0,1 с. ф-я переставала выполнятся...
Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Artos, методом исключения я установил, что моя проблема именно в том скрипте, где выполняется 24 проверки на здоровье актора. Слушай, ты можешь написать самый простой метод использования coroutine? Пожалуйста.

 

Самые простые (проще некуда) примеры использования 'coroutine' уже привел Gun12 и в описании этого класса в справочнике и чуть ранее в этом топике (см. пост). Могу посоветовать: Не берись за то, что не по плечу. Судя по твоим вопросам и пояснениям - со скриптами ты очень даже на 'Вы'... Да и не факт, что 'coroutine' будет для тебя палочкой выручалочкой.

ИМХО, тебе просто нужно оптимизировать код твоей 'корявой' функции, коды которой ты до сих пор и не показал и не даешь никаких пояснений. Выложишь код функции - может быть разговор по существу.

--/ Artos

Изменено пользователем Artos
Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Привет всем. Ребят, нужна ваша помощь. У меня в Сталкер ЗП, после добавления нескольких скриптов, не исчезают надписи "игра сохранена", "испольновано аптечка", и т.д..

function check_params()
  --/ health
  local iHealth = db.actor.health
  if iHealth > 0.04 then --/ здоровье не полное?
    local sHealth_Level = nil
    if iHealth < 0.08 then
      sHealth_Level = "health_level_1"
    elseif iHealth > 0.08 and iHealth < 0.12 then
      sHealth_Level = "health_level_2"
    elseif iHealth > 0.12 and iHealth < 0.16 then
      sHealth_Level = "health_level_3"
    elseif iHealth > 0.16 and iHealth < 0.2 then
      sHealth_Level = "health_level_4"
    elseif iHealth > 0.2 and iHealth < 0.24 then
      sHealth_Level = "health_level_5"
    elseif iHealth > 0.24 and iHealth < 0.28 then
      sHealth_Level = "health_level_6"
    elseif iHealth > 0.28 and iHealth < 0.32 then
      sHealth_Level = "health_level_7"
    elseif iHealth > 0.32 and iHealth < 0.36 then
      sHealth_Level = "health_level_8"
    elseif iHealth > 0.36 and iHealth < 0.41 then
      sHealth_Level = "health_level_9"
    elseif iHealth > 0.41 and iHealth < 0.45 then
      sHealth_Level = "health_level_10"
    elseif iHealth > 0.45 and iHealth < 0.49 then
      sHealth_Level = "health_level_11"
    elseif iHealth > 0.49 and iHealth < 0.53 then
      sHealth_Level = "health_level_12"
    elseif iHealth > 0.53 and iHealth < 0.57 then
      sHealth_Level = "health_level_13"
    elseif iHealth > 0.57 and iHealth < 0.61 then
      sHealth_Level = "health_level_14"
    elseif iHealth > 0.61 and iHealth < 0.65 then
      sHealth_Level = "health_level_15"
    elseif iHealth > 0.65 and iHealth < 0.69 then
      sHealth_Level = "health_level_16"
    elseif iHealth > 0.69 and iHealth < 0.73 then
      sHealth_Level = "health_level_17"
    elseif iHealth > 0.73 and iHealth < 0.77 then
      sHealth_Level = "health_level_18"
    elseif iHealth > 0.77 and iHealth < 0.82 then
      sHealth_Level = "health_level_19"
    elseif iHealth > 0.82 and iHealth < 0.86 then
      sHealth_Level = "health_level_20"
    elseif iHealth > 0.86 and iHealth < 0.9 then
      sHealth_Level = "health_level_21"
    elseif iHealth > 0.9 and iHealth < 0.94 then
      sHealth_Level = "health_level_22"
    elseif iHealth > 0.94 and iHealth < 0.97 then
      sHealth_Level = "health_level_23"
    else
      sHealth_Level = "health_level_24"
    end
    --/ убираем прежний кастомстатик
    hud_elements_remove.remove_elements_3()
    --/ показываем новый кастомстатик
    if sHealth_Level then
      local hud = get_hud()
      if not hud:GetCustomStatic(sHealth_Level) then
        hud:AddCustomStatic(sHealth_Level, true)
      end
    end
  end
  --/ power
  local iPower = db.actor.power
  if iPower > 0.04 then --/ сила не полная?
    local sPower_Level = nil
    if iPower < 0.08 then
      sPower_Level = "power_level_1"
    elseif iPower > 0.08 and iPower < 0.12 then
      sPower_Level = "power_level_2"
    elseif iPower > 0.12 and iPower < 0.16 then
      sPower_Level = "power_level_3"
    elseif iPower > 0.16 and iPower < 0.2 then
      sPower_Level = "power_level_4"
    elseif iPower > 0.2 and iPower < 0.24 then
      sPower_Level = "power_level_5"
    elseif iPower > 0.24 and iPower < 0.28 then
      sPower_Level = "power_level_6"
    elseif iPower > 0.28 and iPower < 0.32 then
      sPower_Level = "power_level_7"
    elseif iPower > 0.32 and iPower < 0.36 then
      sPower_Level = "power_level_8"
    elseif iPower > 0.36 and iPower < 0.41 then
      sPower_Level = "power_level_9"
    elseif iPower > 0.41 and iPower < 0.45 then
      sPower_Level = "power_level_10"
    elseif iPower > 0.45 and iPower < 0.49 then
      sPower_Level = "power_level_11"
    elseif iPower > 0.49 and iPower < 0.53 then
      sPower_Level = "power_level_12"
    elseif iPower > 0.53 and iPower < 0.57 then
      sPower_Level = "power_level_13"
    elseif iPower > 0.57 and iPower < 0.61 then
      sPower_Level = "power_level_14"
    elseif iPower > 0.61 and iPower < 0.65 then
      sPower_Level = "power_level_15"
    elseif iPower > 0.65 and iPower < 0.69 then
      sPower_Level = "power_level_16"
    elseif iPower > 0.69 and iPower < 0.73 then
      sPower_Level = "power_level_17"
    elseif iPower > 0.73 and iPower < 0.77 then
      sPower_Level = "power_level_18"
    elseif iPower > 0.77 and iPower < 0.82 then
      sPower_Level = "power_level_19"
    elseif iPower > 0.82 and iPower < 0.86 then
      sPower_Level = "power_level_20"
    elseif iPower > 0.86 and iPower < 0.9 then
      sPower_Level = "power_level_21"
    elseif iPower > 0.9 and iPower < 0.94 then
      sPower_Level = "power_level_22"
    elseif iPower > 0.94 and iPower < 0.97 then
      sPower_Level = "power_level_23"
    else
      sPower_Level = "power_level_24"
    end
    --/  убираем прежний кастомстатик
    hud_elements_remove.remove_elements_4()
    --/ показываем новый кастомстатик
    if sPower_Level then
      local hud = get_hud()
      if not hud:GetCustomStatic(sPower_Level) then
        hud:AddCustomStatic(sPower_Level, true)
      end
    end
  end
  if get_hud():GetCustomStatic("minimap_fake", true) then
    get_hud():RemoveCustomStatic("minimap_fake", true)
  end
  if not get_hud():GetCustomStatic("minimap_fake", true) then
    get_hud():AddCustomStatic("minimap_fake", true)
  end
  if get_hud():GetCustomStatic("bar_ammo", true) then
    get_hud():RemoveCustomStatic("bar_ammo", true)
  end
  if not get_hud():GetCustomStatic("bar_ammo", true) then
    get_hud():AddCustomStatic("bar_ammo", true)
  end
end

 

function remove_elements_3()
local hud = get_hud()

hud:RemoveCustomStatic("health_level_1")--, true)
hud:RemoveCustomStatic("health_level_2")--, true)
hud:RemoveCustomStatic("health_level_3")--, true)
hud:RemoveCustomStatic("health_level_4")--, true)
hud:RemoveCustomStatic("health_level_5")--, true)
hud:RemoveCustomStatic("health_level_6")--, true)
hud:RemoveCustomStatic("health_level_7")--, true)
hud:RemoveCustomStatic("health_level_8")--, true)
hud:RemoveCustomStatic("health_level_9")--, true)
hud:RemoveCustomStatic("health_level_10")--, true)
hud:RemoveCustomStatic("health_level_11")--, true)
hud:RemoveCustomStatic("health_level_12")--, true)
hud:RemoveCustomStatic("health_level_13")--, true)
hud:RemoveCustomStatic("health_level_14")--, true)
hud:RemoveCustomStatic("health_level_15")--, true)
hud:RemoveCustomStatic("health_level_16")--, true)
hud:RemoveCustomStatic("health_level_17")--, true)
hud:RemoveCustomStatic("health_level_18")--, true)
hud:RemoveCustomStatic("health_level_19")--, true)
hud:RemoveCustomStatic("health_level_20")--, true)
hud:RemoveCustomStatic("health_level_21")--, true)
hud:RemoveCustomStatic("health_level_22")--, true)
hud:RemoveCustomStatic("health_level_23")--, true)
hud:RemoveCustomStatic("health_level_24")--, true)    
end

function remove_elements_4()
local hud = get_hud()
    hud:RemoveCustomStatic("power_level_1")--, true)
    hud:RemoveCustomStatic("power_level_2")--, true)
    hud:RemoveCustomStatic("power_level_3")--, true)
    hud:RemoveCustomStatic("power_level_4")--, true)
    hud:RemoveCustomStatic("power_level_5")--, true)
    hud:RemoveCustomStatic("power_level_6")--, true)
    hud:RemoveCustomStatic("power_level_7")--, true)
    hud:RemoveCustomStatic("power_level_8")--, true)
    hud:RemoveCustomStatic("power_level_9")--, true)
    hud:RemoveCustomStatic("power_level_10")--, true)
    hud:RemoveCustomStatic("power_level_11")--, true)
    hud:RemoveCustomStatic("power_level_12")--, true)
    hud:RemoveCustomStatic("power_level_13")--, true)
    hud:RemoveCustomStatic("power_level_14")--, true)
    hud:RemoveCustomStatic("power_level_15")--, true)
    hud:RemoveCustomStatic("power_level_16")--, true)
    hud:RemoveCustomStatic("power_level_17")--, true)
    hud:RemoveCustomStatic("power_level_18")--, true)
    hud:RemoveCustomStatic("power_level_19")--, true)
    hud:RemoveCustomStatic("power_level_20")--, true)
    hud:RemoveCustomStatic("power_level_21")--, true)
    hud:RemoveCustomStatic("power_level_22")--, true)
    hud:RemoveCustomStatic("power_level_23")--, true)
    hud:RemoveCustomStatic("power_level_24")--, true)    
end

 

Скрипты рабочие. Помогите разобраться, где ошибка... Заранее спасибо.

Убедительная просьба ИСПОЛЬЗОВАТЬ тэги [cоde] для кодов. --/ Artos

Изменено пользователем Artos
Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Gun12, у меня тоже были такие мысли на счет этого, но я как-то не решился испытать это на деле...

Artos, спасибо огромное!! После исправлений нескольких ошибок (полоска силы не работала), все заработало, и надписи исчезают как положено! Вот только хотел бы уточнить еще один момент: как мне сделать, чтоб поверх этих 2х полосок выводилась еще одна текстура? Я-то сделал, но работает это частично, т.е. выводится текстура нормально, но в самом начале игры почему-то полоска здоровья вылазит наверх, пока гг не побежит...

P.S. Остается немного и ... переходим в следующий класс, если как полагаю, этот кастомстатик - некая шкала с переменной длиною.

Оставляем один кастомстатик дабы не плодить строк в конфиге иль даже текстур и ... меняем скриптом его длину. ;-)

Было бы неплохо... Но думаю, это невозможно, т.к. индикаторы идут по кругу. Так что лучше я буду плодить текстуры. ;-)

Изменено пользователем PavelSnork
Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение

Привет! Прошу сильно не бить за такой нубский вопрос: как скриптом установить здоровье актора? Например, чтоб после выполнения определенного условия здоровье становилось равным 0.5. Поиском пользовался, не помогло. Заранее спасибо.

Жду ли я Сталкер 2? Хм...

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...