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

[SoC] Вопросы по SDK


faniloko

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

Русификатор удалил, заново попытался скомпилить, результат тот же - Can't find level.

 

FLIKER вот такие строки выскакивают

Object 'levels\darkvalley\darkvalley_part0001' - 'modelShape' has 2 invalid face(s). Removed.
Object 'levels\darkvalley\darkvalley_part0001' - 'modelShape' has 1 invalid face(s). Removed.
Surface: 'prop_fake_ladder_S' contains climable game material.
Object 'levels\darkvalley\darkvalley_part0001' - 'modelShape' has 1 invalid face(s). Removed.

 

Изменено пользователем parsek123
Ссылка на комментарий

Вот ещё вопрос, когда ставлю на локации новый предмет (Object), а затем жму Compile=>Build в логе выскакивает ошбка про несанкционированные или неопределённые, непомню как правильно, треугольники. Как это решается, или стаья может есть где? Вроде все статьи на сталкерине просмотрел но ничего определённого по банальному добавлению новых объектов не нашол.

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

В общем, несколькими способами попытался получить необходимые параметры, в конце концов воспользовавшись советом Loxotron'a разложил файл game.graph, в одном из выходных файло которого нашёл такие вот данные

; === first =============================

[first_to_second_edge_2]

edge_offset = 180

parent_level_vertex_id = 1053

target_level_id = 2

target_level_vertex_id = 24

; gg_edge properties

game_vertex_id = 3

distance = 1012.63421630859

 

; === second =============================

[second_to_first_edge_5]

edge_offset = 198

parent_level_vertex_id = 24

target_level_id = 1

target_level_vertex_id = 1053

; gg_edge properties

game_vertex_id = 1

distance = 1012.63421630859

 

 

эти данные совпадали с теми, что я получил с помощъю скрипта в игре. Я изменил all.spawn в соответствии с вновь получеными координатами, пересобрал.

[0]

; cse_abstract properties

section_name = zone_flame_small

name = level_prefix_zone_flame_small

position = -49.5736808776855,0.468000113964081,1.99847972393036

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 1

distance = 46.8999977111816

level_vertex_id = 156

object_flags = 0xffffff3e

 

; cse_shape properties

shapes = shape0

shape0:type = sphere

shape0:offset = 0,0,0

shape0:radius = 1

 

; cse_alife_space_restrictor properties

restrictor_type = 0

 

; cse_alife_custom_zone properties

max_power = 0.389999985694885

 

; cse_alife_anomalous_zone properties

offline_interactive_radius = 30

artefact_spawn_count = 32

 

 

[1]

; cse_abstract properties

section_name = level_changer

name = exit_to_second_01

position = -55.5357131958008,0,-8.88559055328369

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 0

distance = 0

level_vertex_id = 1018

object_flags = 0xffffff3e

custom_data = <<END

[pt_move_if_reject]

path = first_way_if_reject

END

 

; cse_shape properties

shapes = shape0

shape0:type = box

shape0:axis_x = 2.69019556045532,0,0

shape0:axis_y = 0,5.19939804077148,0

shape0:axis_z = 0,0,1

shape0:offset = 0,0,0

 

; cse_alife_space_restrictor properties

restrictor_type = 3

 

; cse_alife_level_changer properties

dest_game_vertex_id = 1

dest_level_vertex_id = 24

dest_position = -2,1,4

dest_direction = 0,0,1

dest_level_name = second

dest_graph_point = start_actor_02

 

 

[2]

; cse_abstract properties

section_name = stalker_sakharov

name = _stalker_sakharov

position = -56.3038024902344,0,-1.26166689395905

direction = 0,-1.6199996471405,0

 

; cse_alife_trader_abstract properties

money = 5000

character_profile = default

 

; cse_alife_object properties

game_vertex_id = 1

distance = 49.7000007629395

level_vertex_id = 25

object_flags = 0xffffffbf

custom_data = <<END

; stalker_custom_data.ltx

[game_info]

END

 

; cse_visual properties

visual_name = actors\ucheniy\ucheniy_1

 

; cse_alife_creature_abstract properties

g_team = 0

g_squad = 0

g_group = 0

health = 1

dynamic_out_restrictions =

dynamic_in_restrictions =

 

upd:health = 1

upd:timestamp = 0

upd:creature_flags = 0

upd:position = -56.3038024902344,0,-1.26166689395905

upd:o_model = 0

upd:o_torso = -1.6199996471405,0,0

upd:g_team = 0

upd:g_squad = 0

upd:g_group = 0

 

; cse_alife_monster_abstract properties

 

upd:next_game_vertex_id = 3

upd:prev_game_vertex_id = 1

upd:distance_from_point = 0

upd:distance_to_point = 0

 

; cse_alife_human_abstract properties

predicate5 = 2,2,0,0,2

predicate4 = 2,1,2,1

 

; cse_ph_skeleton properties

 

upd:start_dialog =

 

; se_stalker properties

 

 

[3]

; cse_abstract properties

section_name = level_changer

name = exit_to_first

position = -5.99213457107544,2.44799375534058,7.95419406890869

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 2

distance = 0

level_vertex_id = 23

object_flags = 0xffffff3e

custom_data = <<END

[pt_move_if_reject]

path = second_way_if_reject

END

 

; cse_shape properties

shapes = shape0

shape0:type = box

shape0:axis_x = 1,0,0

shape0:axis_y = 0,2.79099535942078,0

shape0:axis_z = 0,0,1

shape0:offset = 0,0,0

 

; cse_alife_space_restrictor properties

restrictor_type = 3

 

; cse_alife_level_changer properties

dest_game_vertex_id = 3

dest_level_vertex_id = 1053

dest_position = -13,0,-9

dest_direction = 0,0,-1

dest_level_name = first

dest_graph_point = start_actor_01

 

 

[4]

; cse_abstract properties

section_name = actor

name = _actor

position = 0.502203285694122,0.161999762058258,3.67083978652954

direction = 0,0,0

s_flags = 0x29

 

; cse_alife_object properties

game_vertex_id = 3

distance = 3006477056

level_vertex_id = 37

object_flags = 0xffffffbf

custom_data = <<END

 

[game_info]

END

 

; cse_visual properties

visual_name = actors\hero\stalker_novice

 

; cse_alife_creature_abstract properties

g_team = 0

g_squad = 0

g_group = 0

health = 1

dynamic_out_restrictions =

dynamic_in_restrictions =

 

upd:health = 1

upd:timestamp = 0

upd:creature_flags = 0

upd:position = 0.502203285694122,0.161999762058258,3.67083978652954

upd:o_model = 0

upd:o_torso = 0,0,0

upd:g_team = 0

upd:g_squad = 0

upd:g_group = 0

 

; cse_alife_trader_abstract properties

money = 40

trader_flags = 0

character_profile = default

 

; cse_ph_skeleton properties

 

; cse_alife_creature_actor properties

 

upd:actor_state = 0xd20

upd:actor_accel_header = 0

upd:actor_accel_data = 0

upd:actor_velocity_header = 0

upd:actor_velocity_data = 0

upd:actor_radiation = 0

upd:actor_weapon = 110

upd:num_items = 0

 

 

Запускаю игру, при переходе вновь вылет, на этот раз с таким логом:

* Detected CPU: GenuineIntel Pentium 4, F15/M2/S4, 1799.00 mhz, 84-clk 'rdtsc'

* CPU Features: RDTSC, MMX, SSE, SSE2

 

Initializing File System...

using fs-ltx fsgame.ltx

FS: 30675 files cached, 5454Kb memory used.

Init FileSystem 13.910396 sec

'xrCore' build 3116, Aug 15 2007

 

Initializing Engine...

Executing config-script "user.ltx"...

[c:\documents and settings\all users\Документы\stalker-shoc\user.ltx] successfully loaded.

Starting INPUT device...

Loading DLL: xrRender_R1.dll

Loading DLL: xrGame.dll

* [win32]: free[2021792 K], reserved[17200 K], committed[58096 K]

* [ D3D ]: textures[0 K]

* [x-ray]: crt heap[7350 K], process heap[1140 K], game lua[0 K], engine lua[0 K], render[0 K]

* [x-ray]: economy: strings[1039 K], smem[0 K]

Executing config-script "c:\program files\gsc world publishing\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx"...

! cant convert dik_name for dik[16], prop=[

! cant convert dik_name for dik[17], prop=[

! cant convert dik_name for dik[18], prop=[

! cant convert dik_name for dik[19], prop=[

! cant convert dik_name for dik[20], prop=[

! cant convert dik_name for dik[21], prop=[

! cant convert dik_name for dik[22], prop=[

! cant convert dik_name for dik[23], prop=[

! cant convert dik_name for dik[24], prop=[

! cant convert dik_name for dik[25], prop=[

! cant convert dik_name for dik[26], prop=[

! cant convert dik_name for dik[27], prop=[

! cant convert dik_name for dik[30], prop=[

! cant convert dik_name for dik[31], prop=[

! cant convert dik_name for dik[32], prop=[

! cant convert dik_name for dik[33], prop=[

! cant convert dik_name for dik[34], prop=[

! cant convert dik_name for dik[35], prop=[

! cant convert dik_name for dik[36], prop=[

! cant convert dik_name for dik[37], prop=[

! cant convert dik_name for dik[38], prop=[

! cant convert dik_name for dik[39], prop=[

! cant convert dik_name for dik[40], prop=[

! cant convert dik_name for dik[41], prop=[

! cant convert dik_name for dik[44], prop=[

! cant convert dik_name for dik[45], prop=[

! cant convert dik_name for dik[46], prop=[

! cant convert dik_name for dik[47], prop=[

! cant convert dik_name for dik[48], prop=[

! cant convert dik_name for dik[49], prop=[

! cant convert dik_name for dik[50], prop=[

! cant convert dik_name for dik[51], prop=[

! cant convert dik_name for dik[52], prop=[

! cant convert dik_name for dik[144], prop=[

[c:\program files\gsc world publishing\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx] successfully loaded.

Executing config-script "user.ltx"...

Executing config-script "c:\program files\gsc world publishing\s.t.a.l.k.e.r\gamedata\config\rspec_default.ltx"...

! Unknown command: r__wallmark_ttl

! Unknown command: rs_skeleton_update

[c:\program files\gsc world publishing\s.t.a.l.k.e.r\gamedata\config\rspec_default.ltx] successfully loaded.

Executing config-script "c:\program files\gsc world publishing\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx"...

[c:\program files\gsc world publishing\s.t.a.l.k.e.r\gamedata\config\default_controls.ltx] successfully loaded.

[c:\documents and settings\all users\Документы\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 Hardware, Spec Version 1.1

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:332]: NVIDIA GeForce FX 5900XT

* GPU driver: 6.14.11.7519

* CREATE: DeviceREF: 1

* Vertex Processor: PURE HARDWARE

* Texture memory: 216 M

* DDI-level: 9.0

* GPU shading: vs(fffe0200/2.0/20), ps(ffff0200/2.0/20)

* GPU vertex cache: recognized, 24

* DVB created: 1536K

* DIB created: 512K

count of .thm files=1

load time=168 ms

* distortion: used, dev(20),need(14)

* SSample: 1024x768

* SSample: enabled

- r__tf_aniso 4

- r1_tf_mipbias 0.

Starting engine...

Loading DLL: xrGameSpy.dll

! Missing ogg-comment, file: c:\program files\gsc world publishing\s.t.a.l.k.e.r\gamedata\sounds\characters_voice\scenario\video\intro_gsc_wp_r.ogg

* DVB created: 1536K

* DIB created: 512K

- r__tf_aniso 4

- r1_tf_mipbias 0.

* SSample: 1024x768

* SSample: enabled

* GPU shading: vs(fffe0200/2.0/20), ps(ffff0200/2.0/20)

* GPU vertex cache: recognized, 24

*** RESET [363 ms]

"c:\program files\gsc world publishing\s.t.a.l.k.e.r\bin\xr_3da.exe"

* phase time: 0 ms

* phase cmem: 102820 K

Кэширование объектов...

Loading objects...

Loading models...

* [prefetch] time: 15068 ms

* [prefetch] memory: 84865Kb

* phase time: 15149 ms

* phase cmem: 176814 K

Сервер: Старт...

* phase time: 180 ms

* phase cmem: 177029 K

Сервер: Загрузка симуляции жизни...

* phase time: 22 ms

* phase cmem: 177029 K

Создание новой игры...

* Creating new game...

* Loading spawn registry...

* 5 spawn points are successfully loaded

* Saving spawns...

* Saving objects...

* 20 objects are successfully saved

* Game all.sav is successfully saved to file 'c:\documents and settings\all users\Документы\stalker-shoc\savedgames\all.sav'

* New game is successfully created!

* phase time: 164 ms

* phase cmem: 182650 K

Сервер: Соединяемся...

MaxPlayers = 32

* phase time: 35 ms

* phase cmem: 182650 K

Клиент: Соединение с localhost...

Player not found

* client : connection accepted - <>

* phase time: 30 ms

* phase cmem: 182674 K

Открытие потока...

* phase time: 32 ms

* phase cmem: 182678 K

Загрузка формы объектов...

* phase time: 64 ms

* phase cmem: 182971 K

Загрузка шейдеров...

* phase time: 206 ms

* phase cmem: 183688 K

Загрузка геометрии...

* [Loading VB] 5382 verts, 168 Kb

* [Loading IB] 15150 indices, 29 Kb

* phase time: 44 ms

* phase cmem: 183688 K

Загрузка базы пространств...

* phase time: 26 ms

* phase cmem: 183688 K

Загрузка детальных объектов...

* phase time: 24 ms

* phase cmem: 183688 K

Загрузка секторов и порталов...

WARNING: Occlusion map 'c:\program files\gsc world publishing\s.t.a.l.k.e.r\gamedata\levels\second\level.hom' not found.

* phase time: 23 ms

* phase cmem: 183688 K

Загрузка ИИ объектов...

- Loading music tracks from 'l02_garbage_musics'...

* phase time: 93 ms

* phase cmem: 183742 K

Клиент: Создание...

- Game configuring : Started

- Game configuring : Finished

* phase time: 1640 ms

* phase cmem: 184179 K

Загрузка текстур...

* t-report - base: 603, 85034 K

* t-report - lmap: 0, 0 K

* phase time: 1602 ms

* phase cmem: 184179 K

Клиент: Синхронизация...

* phase time: 61 ms

* phase cmem: 184179 K

* [win32]: free[1629868 K], reserved[58452 K], committed[408768 K]

* [ D3D ]: textures[85034 K]

* [x-ray]: crt heap[184179 K], process heap[156218 K], game lua[3002 K], engine lua[180 K], render[0 K]

* [x-ray]: economy: strings[1339 K], smem[28221 K]

Intro start 2478

* MEMORY USAGE: 189411 K

* Saving spawns...

* Saving objects...

* 20 objects are successfully saved

* Game Wervolf_autosave.sav is successfully saved to file 'c:\documents and settings\all users\Документы\stalker-shoc\savedgames\wervolf_autosave.sav'

- Disconnect

- Destroying level

* DVB created: 1536K

* DIB created: 512K

- r__tf_aniso 4

- r1_tf_mipbias 0.

* SSample: 1024x768

* SSample: enabled

* GPU shading: vs(fffe0200/2.0/20), ps(ffff0200/2.0/20)

* GPU vertex cache: recognized, 24

*** RESET [398 ms]

"c:\program files\gsc world publishing\s.t.a.l.k.e.r\bin\xr_3da.exe"

* phase time: 2 ms

* phase cmem: 179087 K

Сервер: Старт...

* phase time: 179 ms

* phase cmem: 179306 K

Сервер: Загрузка симуляции жизни...

* phase time: 23 ms

* phase cmem: 179310 K

Загрузка игры "wervolf_autosave.sav"...

* Loading spawn registry...

* 5 spawn points are successfully loaded

* Loading objects...

* 20 objects are successfully loaded

* Game wervolf_autosave is successfully loaded from file 'c:\documents and settings\all users\Документы\stalker-shoc\savedgames\wervolf_autosave.sav' (0.144s)

* phase time: 144 ms

* phase cmem: 179331 K

Сервер: Соединяемся...

MaxPlayers = 32

 

FATAL ERROR

 

[error]Expression : !object->used_ai_locations() || ai().level_graph().valid_vertex_id(object->m_tNodeID)

[error]Function : CALifeSwitchManager::add_online

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\alife_switch_manager.cpp

[error]Line : 64

[error]Description : Invalid vertex for object

[error]Arguments : single_player

 

 

stack trace:

 

 

неправильная вершина... Теперь-то что?

 

 

 

 

 

 

 

Лень - двигатель прогресса!

 

Domosed.gif

 

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

Немного не по теме, но всё же. Может ли кто то залить или дать ссылку на папку textures, в которой большое количество .thm файлов, а то очень много не хватает. Заранее спасибо.

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

parsek123

Обычно такие ошибки возникают из-за недостатка лодов или текстур к установленым объектам. выложи лог, не стесняйся

Лень - двигатель прогресса!

 

Domosed.gif

 

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

Domosed кажется, теперь понял, и в самом деле текстур то нет, я скачивал по ссылке из шапки контент с объектами для расстановки и там вместо файлов текстур *.thm файлы.

Соответственно возникает вопрос - как из thm восстановить необходимые мне текстуры.

 

И вот ещё лог на всякий случай, может это не из-за текстур всётаки - это после того как поставил новый кустик на земле.

*ERROR: Scene has '68' non associated face!
- scene object: 'detail\trava_sux_2' [O:'detail\trava_sux_2', M:'']
Object 'detail\trava_sux_2': engine shader 'details\blend' non compatible with compiler shader 'default'
*ERROR: Scene has non compatible shaders. See log.

 

Изменено пользователем parsek123
Ссылка на комментарий

parsek123,

*ERROR: Scene has '68' non associated face!
- пересчитай заново все порталы: Remove default, потом Create dafault.

Object 'detail\trava_sux_2': engine shader 'details\blend' non compatible with compiler shader 'default'

*ERROR: Scene has non compatible shaders. See log.

- енджин шейдер 'details\blend' не совместим с компилер шейдером 'default'. Поменяй 'default' на 'def_vertex'
Ссылка на комментарий

parsek123

текстуры восстанавливаются не из thm, а из dds файлов. Берёш утилиту типа dds2tga, dds-файлы из gamedata-> textures и конвертируешь.

А Object 'detail\trava_sux_2 и прочие детальные объекты лучше расставлять на уровне по материалу Глобальное_озеленение,_добавляем_траву_на_уровень

Изменено пользователем Domosed

Лень - двигатель прогресса!

 

Domosed.gif

 

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

Domosed,

Как я понял из предыдущих постов, при разборке all.spawn'a у Вас получились такие файлы:

alife_l01_escape.ltx; all.ltx ; section2.bin ; way_l01_escape.ltx.

 

Это говорит о том, что в Вашем all.spawn'e присутствует только одна локация - Кордон. Вы же пытаетесь с одной локации под названием first перейти на другую - second.

Отсюда вопрос: Каким образом это возможно, если в all.spawn'e присутствует только одна локация, и та Кордон?

Если это уже поправлено и acdc адаптирован, то какие сейчас файлы получаются на выходе при разборке all.spawn'a?

И откуда у Вас взяты вот эти показатели в секциях переходов:

 

section_name = level_changer

name = exit_to_second_01

...

dest_position = -2,1,4

 

section_name = level_changer

name = exit_to_first

...

dest_position = -13,0,-9

при разборе all.spawn'a таких показателей не может быть...

 

Забегая вперёд добавлю, чтобы не возникало таких проблем, при сборке gamegraph и all.spawn пользуйтесь утилитами Бардака, в частности, аивраппером.

Изменено пользователем banderos
Ссылка на комментарий

Здравствуйте, вот у меня тут непонятный момент на счёт ключа -with_lods при декомпиляции. Объясните пожалуйста в каких случаях следует обязательно использовать этот ключ и в каких без него можно обойтись. Например, вот ряд задачь, которые я ставлю на данном этапе перед СДК:

1. Добавление готовой локации (на ней ставлю только точки перехода на другие локации);

2. Добавление на локации спавн элементов и аномалий;

3. Добавление на локации новых объектов (растительность, декорации).

 

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

banderos

то, что в all.spawn присутствует только одна локация я уже понял после того, как разобрал алл спавн оригинальной игры. Это-то меня и удивляет. Пользуюсь aiwrapper от bardaka. Может быть порядок действий неправильный? Мой алгоритм такой:

после сборки обоих уровней в LE компилирую по очереди XRLC, после чего aiwrapperom прогоняю первый уровень с ключами "-draft -f" ; -verify; -f ; -g, затем второй с теми же ключами и в конце aiwrapper -m; aiwrapper -s. Полученый алл.спавн я и расскладывал и acdc. А координаты dest_position , это округлённые координаты, полученые из игры с помощью скрипта LVIDGVID_script.

 

parsek123 я декомпилировал уровни без -with lods, а нужные лоды добавлял по мере надобности. Этот ключ сильно увеличивает время декомпиляции.

Изменено пользователем Domosed

Лень - двигатель прогресса!

 

Domosed.gif

 

Ссылка на комментарий
Domosed , а в каком смысле по мере надобности, можеш объяснить подробнее?
Ссылка на комментарий

lod'ы нужны не для всех объектов, и не все объекты на твоей карте потребуют лоды. Зачем делать лоды к тем объектам, которые ты может быть никогда не будешь использоватьи никогда на свою карту не поставишь.

Лень - двигатель прогресса!

 

Domosed.gif

 

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

Domosed, прочитай тутор по подключению локаций. Тебе надо поправить acdc.pl, а именно

package levels;

use strict;

use constant levels_info => (

{ gvid0 => 3700, },

{ gvid0 => 552, name => 'id_твоей _локации3' },

{ gvid0 => 190, name => 'id_твоей _локации2' },

{ gvid0 => 0, name => 'id_твоей _локации1' },

 

Снять значения своих геймвертексов (gvid) можно прогой ggtool или ggrc из своего game.graph.

Изменено пользователем dimos
Цензура ограничивает творчество © by me
Ссылка на комментарий

Domosed, а использовать поиск?

Товарищи модераторы, закиньте ссылку на этот туториал KD87 в шапки тем: Новые локации, Сообщество Мапперов и в эту тему. Одни и те же вопросы постоянно...

Ссылка

Изменено пользователем dimos
Цензура ограничивает творчество © by me
Ссылка на комментарий

Duplicate object name already exists: 'predbannik_physic_destroyable_object_0000'

Вот такую ошибку выдаёт при проверке сцены, как найти это имя, ума не приложу?

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

parsek123

в режиме редактирования объектов нажми scene-> object list, там найди свой предбанник_0000, отметь его , затем show selected и клавишу delete. Такое происходит когда копия объекта имеет теже координаты, что и оригинал

Лень - двигатель прогресса!

 

Domosed.gif

 

Ссылка на комментарий
Domosed, спасибо тебе огромное, еле разобрался, прекомпиляция без единой заусенки прошла, сечас аивраппер мучить буду. Кстати во время кампиляции ЛЕ надо открытым держать или можно закрывать, больше не понадобится?
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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