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

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

Скрытый текст

 

@Okichi, и ведь не поспоришь... теоретически. 

А практически: больше кода Богу кода? :biggrin: 

Передать сюда - 

local itm = db.actor:item_in_slot(num) (метод для клиентского объекта)

серверную сущность, а потом "грохнуться" гораздо позже с таким логом?

Это ещё надо постараться.

 

Хэх, а сколько по форуму таких зависших вопросов, где "...уже ёжики и догадаются"?

 

 

  • Сочувствую 1
Ссылка на комментарий

@Купер  печаль ситуации в том, что прецеденты были, и без всяких стараний ) Создавался серверный объект, выдерживалось время, необходимое для выхода в онлайн клиентского,   я даже тут же успешно получала из него клиентский...  и спустя буквально пару инструкций ниже получить _этот же_  серверный объект было невозможно. Он не существовал ) 
И нет, движок (NLC-ный) даже не падал - он просто не делал того, что от него ожидалось (

След от кругов на воде - это тоже след (с)

Ссылка на комментарий

Привет. Господа, кто пользует модули Артоса от сюда: https://www.amk-team.ru/forum/topic/13216-sborochnyy-ceh/?do=findComment&comment=971137

или просто в курсе, объясните, как запускать сохраняемые таймеры? 

В общем даны две такие тестовые функции:

Скрытый текст

function start_game_callbeck()
    if GetVar("start_game") == nil then
        SendTip("TEST Проверка на отсутствие переменной в хронилище","Сообщение",nil,5)
        start_game_timer(30*60, nil, "UriZzz_test.mecheny_mail")
        SetVar("start_game", 1)
    else
        SendTip("TEST Проверка на наличие переменной в хронилище","Сообщение",nil,5)
    end
end

function mecheny_mail()
    SendTip("Меченый, зайди ко мне, работа появилась","Сообщение",nil,5)
end

Таймер не запускается, в логе такая строка: ! Cannot find saved game ~:m_timers:set_callback: gametimer'g@1' id[1] action(timerhelper) timerest[30:00] timeend[06:02:22:180], args=[string]~not_table!:<warning!>

Я и без кавычек прописывал функцию, бесполезно.

Скрытый текст

* Detected CPU: GenuineIntel Pentium-III, F6/M7/S10, 3005.00 mhz, 33-clk 'rdtsc'
* CPU Features: RDTSC, MMX, SSE, SSE2

Initializing File System...
using fs-ltx fsgame.ltx
FS: 28687 files cached, 3935Kb memory used.
Init FileSystem 0.632546 sec
'xrCore' build 7720, Mar 27 2020

Initializing Engine...
Executing config-script "user.ltx"...
[d:\s.t.a.l.k.e.r\stalker-shoc\user.ltx] successfully loaded.
Starting INPUT device...
Loading DLL: xrRender_R2.dll
Loading DLL: xrGame.dll
* [win32]: free[4059608 K], reserved[53828 K], committed[80804 K]
* [ D3D ]: textures[0 K]
* [x-ray]: crt heap[5875 K], process heap[669 K], game lua[0 K], engine lua[0 K], render[0 K]
* [x-ray]: economy: strings[1033 K], smem[0 K]
Executing config-script "d:\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx"...
[d:\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx] successfully loaded.
Executing config-script "user.ltx"...
Executing config-script "d:\s.t.a.l.k.e.r\gamedata\config\rspec_default.ltx"...
! Unknown command:  r__wallmark_ttl
! Unknown command:  rs_skeleton_update
[d:\s.t.a.l.k.e.r\gamedata\config\rspec_default.ltx] successfully loaded.
Executing config-script "d:\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx"...
[d:\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx] successfully loaded.
[d:\s.t.a.l.k.e.r\stalker-shoc\user.ltx] successfully loaded.
SOUND: OpenAL: enumerate devices...
SOUND: OpenAL: EnumerationExtension Present
devices Generic Hardware
SOUND: OpenAL: system  default SndDevice name is Generic Hardware
SOUND: OpenAL: default SndDevice name set to Generic Software
SOUND: OpenAL: All available devices:
1. Generic Software, Spec Version 1.1 (default)
2. Generic Software, Spec Version 1.1 (default)
SOUND: OpenAL: SelectBestDevice is Generic Software 1.1
SOUND: OpenAL: Required device: Generic Software. Created device: Generic Software.
* sound: EAX 2.0 extension: absent
* sound: EAX 2.0 deferred: absent
* sound : cache: 65538 kb, 7609 lines, 8820 bpl
Starting RENDER device...
* GPU [vendor:10DE]-[device:622]: NVIDIA GeForce 9600 GT (Microsoft Corporation - WDDM v1.1)
* GPU driver: 8.15.11.8593
* CREATE: DeviceREF: 1
* Vertex Processor: PURE HARDWARE
*     Texture memory: 2784 M
*          DDI-level: 9.0
* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)
* GPU vertex cache: recognized, 24
* DVB created: 6144K
* DIB created: 1024K
load time=58 ms
* NULLRT supported
* ...and used
* HWDST/PCF supported and used
* NV-DBT supported and used
- r__tf_aniso 4
- r2_tf_mipbias 0.
Starting engine...
Loading DLL: xrGameSpy.dll
! Missing ogg-comment, file:  d:\s.t.a.l.k.e.r\gamedata\sounds\characters_voice\scenario\video\intro_gsc_wp_r.ogg
* DVB created: 6144K
* DIB created: 1024K
- r__tf_aniso 4
- r2_tf_mipbias 0.
* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)
* GPU vertex cache: recognized, 24
*** RESET [418 ms]
"d:\s.t.a.l.k.e.r\bin\xr_3da.exe" 
* phase time: 0 ms
* phase cmem: 110516 K
Кэширование объектов...
Loading objects...
Loading models...
* [prefetch] time:    4578 ms
* [prefetch] memory:  82510Kb
* phase time: 4608 ms
* phase cmem: 182160 K
Сервер: Старт...
* phase time: 73 ms
* phase cmem: 182416 K
Сервер: Загрузка симуляции жизни...
* phase time: 7 ms
* phase cmem: 182416 K
Создание новой игры...
* Creating new game...
* Loading spawn registry...
* 8641 spawn points are successfully loaded
* Saving spawns...
* Saving objects...
* 16800 objects are successfully saved
* Game all.sav is successfully saved to file 'd:\s.t.a.l.k.e.r\stalker-shoc\savedgames\all.sav'
* New game is successfully created!
* phase time: 3391 ms
* phase cmem: 229424 K
Сервер: Соединяемся...
MaxPlayers = 32
* phase time: 20 ms
* phase cmem: 229424 K
Клиент: Соединение с localhost...
# Player not found. New player created.
* client : connection accepted - <>
* phase time: 9 ms
* phase cmem: 229449 K
Открытие потока...
* phase time: 15 ms
* phase cmem: 233447 K
Загрузка формы объектов...
* phase time: 3236 ms
* phase cmem: 306116 K
Загрузка шейдеров...
* phase time: 245 ms
* phase cmem: 307515 K
Загрузка геометрии...
* [Loading VB] 65532 verts, 2047 Kb
* [Loading VB] 65525 verts, 2047 Kb
* [Loading VB] 65535 verts, 2047 Kb
* [Loading VB] 65466 verts, 2045 Kb
* [Loading VB] 17208 verts, 537 Kb
* [Loading VB] 65533 verts, 2047 Kb
* [Loading VB] 65534 verts, 2047 Kb
* [Loading VB] 65534 verts, 2047 Kb
* [Loading VB] 65531 verts, 2047 Kb
* [Loading VB] 65535 verts, 2047 Kb
* [Loading VB] 65535 verts, 2047 Kb
* [Loading VB] 46595 verts, 1456 Kb
* [Loading VB] 65534 verts, 2047 Kb
* [Loading VB] 65533 verts, 2047 Kb
* [Loading VB] 65535 verts, 2047 Kb
* [Loading VB] 65532 verts, 2047 Kb
* [Loading VB] 65533 verts, 2047 Kb
* [Loading VB] 65533 verts, 2047 Kb
* [Loading VB] 53181 verts, 1661 Kb
* [Loading IB] 1048575 indices, 2047 Kb
* [Loading IB] 1048572 indices, 2047 Kb
* [Loading IB] 1048572 indices, 2047 Kb
* [Loading IB] 1048572 indices, 2047 Kb
* [Loading IB] 1048572 indices, 2047 Kb
* [Loading IB] 1048572 indices, 2047 Kb
* [Loading IB] 1048575 indices, 2047 Kb
* [Loading IB] 1048572 indices, 2047 Kb
* [Loading IB] 1048575 indices, 2047 Kb
* [Loading IB] 228285 indices, 445 Kb
* [Loading VB] 65533 verts, 767 Kb
* [Loading VB] 65534 verts, 767 Kb
* [Loading VB] 65534 verts, 767 Kb
* [Loading VB] 65535 verts, 767 Kb
* [Loading VB] 65535 verts, 767 Kb
* [Loading VB] 65534 verts, 767 Kb
* [Loading VB] 65535 verts, 767 Kb
* [Loading VB] 14030 verts, 164 Kb
* [Loading IB] 1048575 indices, 2047 Kb
* [Loading IB] 1048575 indices, 2047 Kb
* [Loading IB] 1048575 indices, 2047 Kb
* [Loading IB] 718302 indices, 1402 Kb
* phase time: 63 ms
* phase cmem: 307890 K
Загрузка базы пространств...
* phase time: 562 ms
* phase cmem: 312287 K
Загрузка детальных объектов...
* [DETAILS] VertexConsts(256), Batch(61)
* [DETAILS] 40687 v(20), 26352 p
* [DETAILS] Batch(61), VB(794K), IB(154K)
* phase time: 52 ms
* phase cmem: 320493 K
Загрузка секторов и порталов...
* Loading HOM: d:\s.t.a.l.k.e.r\gamedata\levels\l01_escape\level.hom
* phase time: 15 ms
* phase cmem: 320650 K
Загрузка ИИ объектов...
- Loading music tracks from 'l01_escape_musics'...
* phase time: 12 ms
* phase cmem: 316691 K
Клиент: Создание...
- Game configuring : Started 
- Game configuring : Finished 
* phase time: 206 ms
* phase cmem: 324548 K
Загрузка текстур...
* t-report - base: 1437, 387210 K
* t-report - lmap: 7, 7168 K
* phase time: 1170 ms
* phase cmem: 324548 K
Клиент: Синхронизация...
* phase time: 11 ms
* phase cmem: 324548 K
* [win32]: free[2927872 K], reserved[126556 K], committed[1139812 K]
* [ D3D ]: textures[394378 K]
* [x-ray]: crt heap[324548 K], process heap[7978 K], game lua[23618 K], engine lua[221 K], render[0 K]
* [x-ray]: economy: strings[3691 K], smem[28221 K]
! Cannot find saved game ~:lua_helper:fget_inisection:ini=[<userdata>],not_found_section=[levels],type=[table]:<error!>
! Cannot find saved game ~:lua_helper:fget_inisection:ini=[<userdata>],not_found_section=[levels_underground],type=[true]:<error!>
! Cannot find saved game ~:lua_helper:correct_max_idlevelvertex:=[594270]=>[595499](+1229), map(1)=[l01_escape] :<info!>
! Cannot find saved game ~:m_timers:set_callback: gametimer'g@1' id[1] action(timerhelper) timerest[30:00] timeend[06:02:22:180], args=[string]~not_table!:<warning!>
Intro start 4095
* MEMORY USAGE: 342948 K
- Disconnect
- Destroying level
DestroySingleton::RefCounter: 0
DestroySingleton::RefCounter: 0
DestroySingleton::RefCounter: 0
DestroySingleton::RefCounter: 0
Input:  1
Config-file [d:\s.t.a.l.k.e.r\stalker-shoc\user.ltx] saved successfully
Destroying Direct3D...
* RM_Dump: textures  : 0
* RM_Dump: rtargets  : 0
* RM_Dump: rtargetsc : 0
* RM_Dump: vs        : 0
* RM_Dump: ps        : 0
* RM_Dump: dcl       : 0
* RM_Dump: states    : 0
* RM_Dump: tex_list  : 0
* RM_Dump: matrices  : 0
* RM_Dump: lst_constants: 0
* RM_Dump: v_passes  : 0
* RM_Dump: v_elements: 0
* RM_Dump: v_shaders : 0
refCount:pBaseZB 1
refCount:pBaseRT 1
DeviceREF: 1
 

 

 Моя нычкаНычка в арендованном у Опричника холодильнике  

Мы хорошие ребята, жаль патронов маловато:):ukostra:

UriZzz.gif

Ссылка на комментарий

@UriZzz у тебя и подсказка в логе есть

args=[string]~not_table!

и пример в конце модуля

start_game_timer(3*60, nil, {info_id = "my_infoportion"})

Грубо говоря, ты в качестве доп. аргумента передаёшь строку "UriZzz_test.mecheny_mail", а надо таблицу. То есть:

start_game_timer(30*60, nil, {param1 = "UriZzz_test.mecheny_mail"}) -- аргумент - таблица

Если же ты хотел вызвать функцию внешнего модуля (на что слегка намекает текст "UriZzz_test.mecheny_mail"), то для этого надо было воспользоваться вторым аргументом, который у тебя сейчас равен nil, и без кавычек. А именно:

start_game_timer(30*60, UriZzz_test.mecheny_mail) -- аргумент - указатель на функцию внешнего модуля

В общем, смотри внимательно примеры в конце модуля таймеров, там всё расписано.

  • Спасибо 1
  • Согласен 1
  • Полезно 2
Ссылка на комментарий

Вот такие дела кракозябры в в текстовом поле, пытаюсь при инициализации окна в текстовое поле забить информацию.

Делаю так.

self.edit1:SetText(string.format("Сокол"))

Английский текст воспринимает. Русский кракозябрами как поправить?

Вот полный код.

function NewUI3:InitControls()
	local xml = CScriptXmlInit()
	self:Init(0,0,1024,768)
	xml:ParseFile("NewUI3.xml")
	self.Static1 = xml:InitStatic("Static1", self)
	self.edit1 = xml:InitEditBox("Static1:edit1", self.Static1)
	self.edit1:SetText(string.format("Сокол"))
	self:Register(xml:Init3tButton("Static1:button1", self.Static1), "button1")
	self:Register(xml:Init3tButton("Static1:button2", self.Static1), "button2")
end

 

Изменено пользователем Stalkersof
Ссылка на комментарий
Только что, Colder сказал(а):

подскажите функцию

actor:iterate_inventory

Только что, Stalkersof сказал(а):

Русский кракозябрами

А исходный код, в файле какой кодировки сохраняете?

 

  • Нравится 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
6 минут назад, Zander_driver сказал(а):

actor:iterate_inventory

А исходный код, в файле какой кодировки сохраняете?

 

Не понял о чем речь. Скрипт просто текстовый файл с рашерением script. XML в <?xml version="1.0" encoding="windows-1251"?>

Ссылка на комментарий
Только что, Stalkersof сказал(а):

Скрипт просто текстовый файл

"Просто текстовых файлов" не бывает. У любого текстового файла, есть кодировка. Это следует уже из самого определения, что такое "текстовый файл" с точки зрения Windows.

Vq0Xbfg.png

Только что, Stalkersof сказал(а):

А какая нужна?

ANSI по идее.

Изменено пользователем Zander_driver
  • Спасибо 1
  • Согласен 4

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
4 минуты назад, Zander_driver сказал(а):

"Просто текстовых файлов" не бывает. У любого текстового файла, есть кодировка. Это следует уже из самого определения, что такое "текстовый файл" с точки зрения Windows.

Vq0Xbfg.png

Понятно. Посмотрел скрипт в Кодировка UTF-8. А какая нужна?

Ссылка на комментарий
Скрытый текст

local spawns_devices = {
    "part_lighter",
    "part_banka",
    "part_nitki",
    "part_kley",
    "part_cutler",
    "part_core",
    "part_ver",
    "part_grease",
    "part_fankt",
    "part_gunoil",
    "part_ramrod",
    "part_kitss",
    "part_kitrr",
    "part_jar",
    "part_weapons_light",
    "part_weapons_heavy",
    "part_outfit_heavy",
    "part_outfit_light",
    "part_electro"
}

function actor_on_random_devices_new()
    local text_new = ""
    for i = 2, 4 do--// ОТ 2 DO 4
    local item = spawns_devices[math.random(table.getn(spawns_devices))]
    alife():create(item, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
    local a_name = game.translate_string(system_ini():r_string(item,"inv_name_short"))
    text_new = text_new.."\\n"..a_name
end
    send_tip_devices("\\n%c[d_cyan]"..game.translate_string("st_dis_text_9").."\\n".."%c[ui_white]"..text_new)
end

Может кто помочь получить количество получаемых деталей? Т.е если после разбора обьекта получаешь 2 ОДИНАКОВЫХ предмета, то в сообщении это не указываеться. ВОТ СКРИН https://yadi.sk/i/G3C88dOd1juczw

Ссылка на комментарий
Только что, Colder сказал(а):

Т.е если после разбора обьекта получаешь 2 ОДИНАКОВЫХ предмета, то в сообщении это не указываеться.

В выше-приведенном коде. Если выпадут одинаковые предметы, то они и написаны будут два (три) раза в сообщении. Разве этого не достаточно?)

Только что, Colder сказал(а):

получить количество получаемых деталей?

Можно просто в табличку по ключу - секции итема, заносить количество предметов. А после спавна всех, подсчитывать сколько всего набралось.

local t = {}

...

if t[item] ~= nil then
  t[item] = t[item] + 1
else
  t[item] = 1
end
...
for sec, count in pairs(t) do
  text_new = text_new .. "\\n" .. game.translate_string(ltx:r_string(sec, "inv_name"))
  if count > 1 then text_new = text_new .. string.format(" x %i", count) end
end

Как-то так. Какой фрагмент куда вставить, я думаю и так понятно.

Изменено пользователем Zander_driver
  • Полезно 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
24 минуты назад, Colder сказал(а):

Не работает!

Ложь :)

25 минут назад, Colder сказал(а):

actor:iterate_inventory

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

Зачем эти сложности, если можно просто пересчитать, сколько чего заспавнили, при самом спавне?

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
Только что, Colder сказал(а):

бред получаеться!

Ну как скомпоновал сообщение, то и получил. Ты это написал, не я. Подумай, как надо сделать.

Только что, Colder сказал(а):

Через него мне кажется проще.

Проще?

Ок, приведи свою реализацию, как вызвать свою функцию через несколько апдейтов.

И, как отличить те предметы которые недавно заспавнены, от тех что в рюкзаке уже были. И, точно ли для этого надо iterate_inventory дергать?)

А затем и посмотрим, что проще.

  • Нравится 1
  • Согласен 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
Скрытый текст

local part = {
    ["part_lighter"] = 2,
    ["part_banka"] = 2,
    ["part_nitki"] = 2,
    ["part_kley"] = 2,
    ["part_cutler"] = 2,
    ["part_core"] = 2,
    ["part_ver"] = 2,
    ["part_grease"] = 2,
    ["part_fankt"] = 2,
    ["part_gunoil"] = 2,
    ["part_ramrod"] = 2,
    ["part_kitss"] = 2,
    ["part_kitrr"] = 2,
    ["part_jar"] = 2,
    ["part_weapons_light"] = 2,
    ["part_weapons_heavy"] = 2,
    ["part_outfit_heavy"] = 2,
    ["part_outfit_light"] = 2,
    ["part_electro"] = 2
}

function actor_on_random_devices_new()
    local t = {}
    local text_new = ""
    for item, count in pairs(part) do
    alife():create(db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
    if t[item] ~= nil then
    t[item] = t[item] + 1
    else
    t[item] = 1
end
    text_new = text_new.."\\n"..game.translate_string(system_ini():r_string(item, "inv_name"))
    if count > 1 then
    text_new = text_new..string.format(" x %i", count)
end
end
    send_tip_devices("\\n%c[d_cyan]"..game.translate_string("st_dis_text_9").."\\n".."%c[ui_white]"..text_new)
end

Сделал по твойму но они спавняться все по 2шт. А мне нужно рандомное количество общих деталей например: что бы гг получил 2 или 4 детали.

Ссылка на комментарий
14 минут назад, Colder сказал(а):

["part_lighter"] = 2,

 

14 минут назад, Colder сказал(а):

но они спавняться все по 2шт.

Ну и кто же это написал?

Не я точно.

У тебя вообще в коде какая-то каша, все перемешано без смысла.

И крайний раз запускал ты его не в таком

17 минут назад, Colder сказал(а):

alife():create(db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())

виде. Потому что тут даже секции итема нет, чего спавнить. Такой вызов, приведет к движковому вылету с руганью на недостаток аргументов и/или не соответствующие типы аргументов.

18 минут назад, Colder сказал(а):

мне нужно рандомное количество

Используй math.random

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

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

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

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   1 пользователь

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