helvene
Oct 12 2005, 04:54
Ответ ищу не первый день, пока - ноль. Но, может быть, кто-то знает.
Итак, кастомные двери с Generic Appearence. Если посмотреть 2da с их описанием, то там будут три столбца таблицы: первый - Label, второй - StrRef и последний - Name.
Собственно, вопросы - сразу, пачкой:
1. На что влияет запись столбца StrRef, если ссылка на название двери находится в Name?
2. Что определяет запись столбца Label?
3. Если значение в Name поставить равным -1, то имя модели в тулсете остается пустым, если его обнулить, то при попытке загрузки происходит ошибка. Данные, записанные в столбце Label, по моим наблюдениям, используются в каком-то неочевидном месте. Есть ли возможность как-то изменить название модели двери? Если да, то как? (насколько я помню, в СЕР это как-то сделали).
вообще то я сам кустомные двери не делал - я ленивый

..и в инете мона найти уже готовые почти на любой вкус...
QUOTE |
1. На что влияет запись столбца StrRef, если ссылка на название двери находится в Name?
|
по StrRef происходит реальная работа с дверью, а в Name ты можешь в принцыпе установить, что угодно..это так сказать наклейка на коробку печенья, а не то , что находиться внутри...
QUOTE |
3.Если значение в Name поставить равным -1, то имя модели в тулсете остается пустым |
..и только тогда ты можешь записать свое кустомное название двери( если НВН найдет в Name = -1 то он и отразит кустомное название(которе ты записала),иначе выберет по коду в Name из стандартного набора слов НВНа )..
...п.с. это мое личное мнение и оно может и не совпадать с действительностью , кто нибудь поправьте меня плз... ( я тебя "успокоил" ?

)
ммм ..кстати ,вообще то есть две 2дашки относяшиеся к дверям genericdoors.2da и doortypes.2da
helvene
Oct 12 2005, 12:44
QUOTE |
..и только тогда ты можешь записать свое кустомное название двери( если НВН найдет в Name = -1 то он и отразит кустомное название(которе ты записала),иначе выберет по коду в Name из стандартного набора слов НВНа ).. |
Куда его писать? В Label?
QUOTE |
кстати ,вообще то есть две 2дашки относяшиеся к дверям |
Речь идет о genericdoors.2da
QUOTE (helvene @ Oct 12 2005, 05:54) |
1. На что влияет запись столбца StrRef, если ссылка на название двери находится в Name? |
StrRef - ссылка на tlk файл. Если поставить ****, то название двери будет браться из Label'а
QUOTE (helvene @ Oct 12 2005, 05:54) |
2. Что определяет запись столбца Label? |
Имя двери в тулсете, если оно не указано в Name
helvene
Oct 12 2005, 13:25
QUOTE |
StrRef - ссылка на tlk файл. Если поставить ****, то название двери будет браться из Label'а |
Знаешь, я вот тоже так думала. Но - нифига.
QUOTE |
Имя двери в тулсете, если оно не указано в Name |
А можно еще раз, подробно, для особо тупых разжевать всю процедуру именования кастомной двери? Правильно ли я поняла, что столбец StrRef обнуляется, в столбец Name ставится значение -1, а в столбец Label - желаемое название?
ммм так, уточним , мы говорим о том, что
происходит при создании кустомной двери или о том, что гдеп написано в genericdoors.2da ?
дело в том что , по моему скромному наблюдению, это немношко разные вещи
helvene
Oct 12 2005, 14:15
При создании кастомной двери.
CODE |
# Door **** <model_name> 1 1 0 -1 |
Пример именования "пустышкой"
Для того чтобы вписать _действительно_ свое имя, нужно либо редактировать основной tlk, либо создавать свой, как показали эксперименты
вот пример 2дашки с кучей различных кустомных дверей из разных хаков для сравнительного анализа
CODE |
2DA V2.0
Label StrRef ModelName BlockSight VisibleModel SoundAppType Name 0 Wood_strong 5349 T_DOOR01 1 1 0 63750 1 Fancy 5349 T_DOOR02 1 1 0 14445 2 Porticullis 5349 T_Door03 0 1 11 63199 3 Porticullis2 5349 T_Door04 0 1 11 63752 4 Rusted 5349 T_Door05 1 1 7 14451 5 Metal 5349 T_Door06 1 1 7 14449 6 Stone_evil 5349 T_Door07 1 1 4 14444 7 Stone 5349 T_Door08 1 1 4 14452 8 Jeweled 5349 T_Door09 1 1 7 14448 9 Wood_weak 5349 T_Door10 1 1 0 63751 10 ForceField 5349 T_Door11 0 1 **** 63753 11 CageDoor 5349 v_generic_01 0 1 7 67954 12 SewerDoor1 5349 v_sewdoor_01 0 1 7 60336 13 SewerDoor2 5349 v_sewdoor_02 0 1 7 60336 14 **** **** **** **** **** **** **** 15 **** **** **** **** **** **** **** 16 **** **** **** **** **** **** **** 17 **** **** **** **** **** **** **** 18 **** **** **** **** **** **** **** 19 **** **** **** **** **** **** **** 20 **** **** **** **** **** **** **** 21 **** **** **** **** **** **** **** 22 **** **** **** **** **** **** **** 23 **** **** **** **** **** **** **** 24 **** **** **** **** **** **** **** 25 **** **** **** **** **** **** **** 26 **** **** **** **** **** **** **** 27 **** **** **** **** **** **** **** 28 **** **** **** **** **** **** **** 29 **** **** **** **** **** **** **** 30 Int_door2 **** t2Doora2 1 1 0 63750 31 InnDoorRich **** t3doorc5 1 1 0 63750 32 RichDoor **** t4doorc5 1 1 0 63750 33 DungeonDr5 **** t3doora1 1 1 7 63750 34 InnDoor **** t5doorc5 1 1 0 63750 35 FarmDoor **** t6doorc5 1 1 0 63750 36 Fortified **** t7doorc5 1 1 7 63750 37 TreeDoor **** t8doorc5 1 1 0 63750 38 Curtain **** v1curtain_02 1 1 33 63750 39 Curtain **** v2curtain_02 1 1 33 63750 40 CaveExit 5349 TDC_UDoor_09 0 0 34 63510 41 DungeonDr1 **** t_Doorb1 1 1 0 63750 42 DungeonDr2 **** t_doorb2 1 1 0 63750 43 Rustic_door1 **** t_Doora1 1 1 0 63750 44 Rustic_door2 **** t_Doora2 1 1 0 63750 45 Rustic_door3 **** t_doorc5 1 1 0 63750 46 DungeonDr3 **** t1Doora2 1 1 0 63750 47 DungeonDr4 **** t1doora1 1 1 0 63750 48 Wiz_door1 **** t1doorc5 1 1 0 63750 49 Int_door1 **** t2Doora1 1 1 0 63750 50 TempleDoor2*TD **** TCN_UDoor_03 0 1 11 63199 51 CaravanDoor **** t3doora2 1 1 0 63750 52 ori_door1 **** oridor12 1 1 16 63750 53 ori_door3 **** oridor14 1 1 16 63750 54 Webbed **** v3curtain_02 0 1 33 63750 55 CageDoor 5349 v_cage01 0 1 7 24998 56 Curtain 5349 v_curtain_02 1 1 **** 50958 57 LOK_WoodStr **** TDK_LOK01_08 1 1 0 63750 58 LOK_WoodStr2 **** TDK_LOK01_09 1 1 0 63750 59 **** **** **** **** **** **** **** 60 pas_Ice01 5349 pas_ic_door01 1 1 81 63750 61 pas_Glass01 5349 pas_gl_door01 0 1 80 63750 62 pas_Lava01 5349 pas_lv_door01 1 1 83 14452 63 pas_Curtain01 5349 pas_cu_nobl01 1 1 33 63750 64 pas_Curtain02 5349 pas_cu_drow01 1 1 33 63750 65 pas_StDwar01 5349 pas_st_dwar02 1 1 4 63750 66 pas_WdDwar01 5349 pas_wd_dwar01 1 1 0 63750 67 pas_WdDrow01 5349 pas_wd_drow01 1 1 0 63750 68 pas_StDrow01 5349 pas_st_drow01 1 1 4 63750 69 pas_Curtain03 5349 pas_cu_tent01 1 1 33 63750 70 pas_WdElf01 5349 pas_wd_elf01 1 1 0 14445 71 pas_WdElf02 5349 pas_wd_elf02 1 1 0 14445 72 pas_StEvil01 5349 pas_st_evil01 1 1 82 14444 73 pas_StDragon01 5349 pas_st_drag01 1 1 82 14452 74 pas_WdStrw01 5349 pas_wd_strw01 1 1 0 63751 75 pas_WdHard01 5349 pas_wd_hard01 1 1 0 63750 76 pas_WdDwar02 5349 pas_wd_dwar02 1 1 0 63750 77 pas_WdEvil01 5349 pas_wd_evil01 1 1 0 63750 78 pas_StIlli01 5349 pas_st_illi01 1 1 4 14452 79 pas_StIlli02 5349 pas_st_illi02 1 1 4 14452 80 pas_StElf01 5349 pas_st_elf01 1 1 82 14448 81 pas_StElf02 5349 pas_st_elf02 1 1 82 14448 82 pas_StElf03 5349 pas_st_elf03 1 1 82 14448 83 pas_StEmer01 5349 pas_st_emer01 1 1 82 14448 84 pas_MtBronze01 5349 pas_mt_bron01 1 1 7 63750 85 pas_MtDungn01 5349 pas_mt_dung01 1 1 7 63750 86 pas_WdHard02 5349 pas_wd_hard02 1 1 0 63750 87 ctp_reserved **** **** **** **** **** **** 88 ctp_reserved **** **** **** **** **** **** 89 ctp_reserved **** **** **** **** **** **** 90 ctp_reserved **** **** **** **** **** **** 91 ctp_reserved **** **** **** **** **** **** 92 ctp_reserved **** **** **** **** **** **** 93 ctp_reserved **** **** **** **** **** **** 94 ctp_reserved **** **** **** **** **** **** 95 ctp_reserved **** **** **** **** **** **** 96 ctp_reserved **** **** **** **** **** **** 97 ctp_reserved **** **** **** **** **** **** 98 ctp_reserved **** **** **** **** **** **** 99 ctp_reserved **** **** **** **** **** **** 100 **** **** **** **** **** **** **** 101 NewWood 5349 T_Door12 1 1 0 63751 102 Fabric 5349 T_Door13 1 1 0 63751 103 **** **** **** **** **** **** **** 104 **** **** **** **** **** **** **** 105 **** **** **** **** **** **** **** 106 **** **** **** **** **** **** **** 107 **** **** **** **** **** **** **** 108 **** **** **** **** **** **** **** 109 **** **** **** **** **** **** **** 110 Wood_strong 5349 M_DOOR01 1 1 0 63750 111 Fancy 5349 M_DOOR02 1 1 0 14445 112 Porticullis 5349 M_Door03 0 1 11 63199 113 Porticullis2 5349 M_Door04 0 1 11 63752 114 Rusted 5349 M_Door05 1 1 7 14451 115 Metal 5349 M_Door06 1 1 7 14449 116 Stone_evil 5349 M_Door07 1 1 4 14444 117 Stone 5349 M_Door08 1 1 4 14452 118 Jeweled 5349 M_Door09 1 1 7 14448 119 Wood_weak 5349 M_Door10 1 1 0 63751 120 ForceField 5349 M_Door11 0 1 **** 63753 121 **** **** **** **** **** **** ****
|
helvene
Oct 12 2005, 15:15
QUOTE |
Пример именования "пустышкой" |
А что выводиться вместо "пустышки"?
И для чего тогда все-таки используется Label?
QUOTE |
вот пример 2дашки с кучей различных кустомных дверей из разных хаков для сравнительного анализа |
Это мне все известно. Вопрос в следующем. Какое название модели выводится в этом случае?
CODE |
30 Int_door2 **** t2Doora2 1 1 0 63750 |
QUOTE (helvene @ Oct 12 2005, 16:15) |
А что выводиться вместо "пустышки"? |
В том то и дело, что ничего. Просто пустая строка. При ее выборе появляется дверь

QUOTE (helvene @ Oct 12 2005, 16:15) |
Какое название модели выводится в этом случае? |
63750 - Wooden Door (Strong)
helvene
Oct 12 2005, 15:24
QUOTE |
В том то и дело, что ничего. Просто пустая строка. При ее выборе появляется дверь |
Тогда обясните, пожалйста, кто-нибудь, а для чего используется Label?
QUOTE |
Тогда обясните, пожалйста, кто-нибудь, а для чего используется Label?
|
для более удобной ориентации человеку работающему с 2да
мы люди...нам надо более информации, чем компу..ему то хватает нескоко кодов
Как показали эксперименты, он не нужен совсем. Все и так прекрасно работает
http://droaam.nm.ru/images/gdoors.gif
helvene
Oct 12 2005, 16:05
Vhall, а
Vhall... поделись 38, 54 и 86 дверкой, а?
QUOTE (helvene @ Oct 12 2005, 04:54) |
Есть ли возможность как-то изменить название модели двери? Если да, то как? (насколько я помню, в СЕР это как-то сделали). |
А что в СЕР сделали? Название блюпринта двери можно изменить только подредактировав сам блюпринт.
helvene
Oct 12 2005, 16:42
QUOTE |
А что в СЕР сделали? Название блюпринта двери можно изменить только подредактировав сам блюпринт. |
Причем здесь blueprint? Речь идет о названии модели двери в общем списке.
Если я правильно помню, создатели СЕР как минимум к одной из них приделали кастомное название, не редактируя при этом tlk.
Впрочем, в этом я уже сомневаюсь.
helvene
Oct 12 2005, 17:37
Благодарю.
Чуть позже от нашего дома вашему тоже будет
QUOTE (helvene @ Oct 12 2005, 16:42) |
Причем здесь blueprint? Речь идет о названии модели двери в общем списке. Если я правильно помню, создатели СЕР как минимум к одной из них приделали кастомное название, не редактируя при этом tlk.
Впрочем, в этом я уже сомневаюсь. |
Если речь идет о названии "внешнего вида" дверки в тулсете, то тем более это маловероятно. Без ссылки на тлк это название никак не поменять. И потом, о чем речь шла? В СЕР дверей нету..
helvene
Oct 12 2005, 19:17
QUOTE |
И потом, о чем речь шла? В СЕР дверей нету.. |
Значит, путаю. Значит, не в СЕР.
Но в каком-то хаке я это точно видела.
Плз, может вспомнишь в каком хаке?
helvene
Oct 12 2005, 19:43
QUOTE |
Плз, может вспомнишь в каком хаке? |
Если не в СЕР, то в Мит Драннорском.
Я не помню того, чтоб COPAP в свой хак сложили двери.
...кхмм кхм... Vhall ... это ваш genericdoors.2da реальный...то есть вы так и делаете свой, как на картинке, где сразу после 11 идет 13 после 13 - 38 итд?
тогда хочу заметить, что
1) номера строк в начале - это не просто так..весьма важно, что бы номер строки соответствовал ее реальному положению в 2дашке..иначе , работая так хаотично дальше вы можете нарваться на ситуацию, когда программа вас перестает понимать... лучше вставляйте в строки где ничего не пишете пустую линию с "****" в соотв позициях..(кстати а пустые линии в 2дашке добавить нужное количество сразу очень просто 2да редактором)
2)есть файлик в папке нвн safe2dalines называеться ...там даны номера строк с которых биотварь рекомендует начать свой кустом в 2дашки закладывать...
Добавлено в 09:36to helvene
ммм про кустомные названия ..ты хотела сделать что-то такое? (ррр..не могу картинку выставить напрямую =( )
.... так это не только изменением в 2дашки делаеться..
короче говоря, если надо, то я могу хак, где это реализовано, выслать( е-адрес плз

)..весит 4М в архиве, а так 10...
..для редактирования тебе наверняка понадобиться хороший ITP редактор...
helvene
Oct 13 2005, 11:02
QUOTE |
helvene ммм про кустомные названия ..ты хотела сделать что-то такое? |
Не только хотела, но и до сих пор хочу. Кастомные названия. Моделям дверей.
QUOTE |
... так это не только изменением в 2дашки делаеться.. |
tlk? меня интересуют именно налвания моделей, потому как когда их несколько с названием "custom door" или что-то в таком роде, я при тестировании путаться начинаю.
Добавлено в [mergetime]1129190675[/mergetime]
QUOTE |
..для редактирования тебе наверняка понадобиться хороший ITP редактор... |
Через палитру?
не через тлк ..эта система именно такая..правда названия на английском

...дай мыло пошлю - сама посмотришь

п.с. ... она с ваулта..токо адреса я больше не помню...так что токо е майлом
helvene
Oct 13 2005, 11:10
Названия на английском и должны быть.
Мыло указано в профиле.
Lemegeton
Oct 13 2005, 15:04
QUOTE (mamuc @ Oct 13 2005, 09:15) |
...кхмм кхм... Vhall ... это ваш genericdoors.2da реальный...то есть вы так и делаете свой, как на картинке, где сразу после 11 идет 13 после 13 - 38 итд? тогда хочу заметить, что 1) номера строк в начале - это не просто так..весьма важно, что бы номер строки соответствовал ее реальному положению в 2дашке..иначе , работая так хаотично дальше вы можете нарваться на ситуацию, когда программа вас перестает понимать... лучше вставляйте в строки где ничего не пишете пустую линию с "****" в соотв позициях..(кстати а пустые линии в 2дашке добавить нужное количество сразу очень просто 2да редактором) 2)есть файлик в папке нвн safe2dalines называеться ...там даны номера строк с которых биотварь рекомендует начать свой кустом в 2дашки закладывать... |
А-а-абсолютно по-барабану. Как показала практика, почти все 2da'шки ни коим образом не реагируют на столбец индекса строки и столбец Label, начиная, примерно, с версии 1.59 (до этой версии - возможно). А вот если неправильно посчитать строку... Тогда начнется...
QUOTE (helvene @ Oct 13 2005, 11:02) |
tlk? меня интересуют именно налвания моделей, потому как когда их несколько с названием "custom door" или что-то в таком роде, я при тестировании путаться начинаю. |
Все названия моделей, очевидно, берутся из tlk файла. Если нет желания трогать стандартный dialog.tlk, может персональный (кастомный) tlk подойдет? Там тоже можно попробовать изменить имя модели.
Не понятно, в чем проблемы с форматом названий в
genericdoors.2da???
1-ый столбец - номер строки. Не сильно важно, главное, что во всех остальных местах, номер строки будет считаться от начала файла, а не по той цифири, которая там стоит.
Label - текстовая метка записи. Сюда можно написать любое слово. Тоже не имеет большой роли.
StrRef - название модели в тулсете. Номер записи в файле .tlk.
ModelName - очевидно.
BlockSight - блокируется ли поле видимости целиком. 1/0
VisibleModel и
SoundAppType - даже не задумывался. Очевидно, ссылка на строку в 2da файле.
И, самое главное, поле
Name - ссылка на запись в файле .tlk - непосредственно имя двери в тулсете.
Очевидно, что, при таком раскладе, невозможно задать имя модели иначе, чем в .tlk файле (или палитре тулсета

) и указать его в соответствующем столбце
genericdoors.2da.
helvene
Oct 13 2005, 15:16
QUOTE |
почти все 2da'шки ни коим образом не реагируют на ... столбец Label |
Безобразие!
QUOTE (mamuc @ Oct 13 2005, 10:15) |
1) номера строк в начале - это не просто так..весьма важно, что бы номер строки соответствовал ее реальному положению в 2дашке..иначе , работая так хаотично дальше вы можете нарваться на ситуацию, когда программа вас перестает понимать... |
Да... я, конечно, в курсе. Хаотичное именование не рекомендуется в случае работы с зависимыми 2da (classes, racialtypes, appearence, etc). Т.е. теми, которые ссылаются на другие 2da в виде
порядковых номеров строк, а не той цифры, стоящей в id. Что до genericdoors, то это вполне автономная 2da, не требующая каких-либо ухищрений со стороны нумерации.
ПримерХак для проекта собираю один, и проблемные ситуации, связанные с 2da мне не грозят - все мои операции по изменению 2da я, считай, помню наизусть, несмотря на их большое количество
QUOTE (mamuc @ Oct 13 2005, 10:15) |
лучше вставляйте в строки где ничего не пишете пустую линию с "****" в соотв позициях..(кстати а пустые линии в 2дашке добавить нужное количество сразу очень просто 2да редактором) |
А вот это уже опасно. К примеру, "лишние" ("****") строки в race_feat_*.2da дают персонажу при создании ровно столько дополнительных фитов, сколько пустых строк в 2da (они автоматически выберутся из доступных фитов по принципу "сверху вниз").
QUOTE (mamuc @ Oct 13 2005, 10:15) |
2)есть файлик в папке нвн safe2dalines называеться ...там даны номера строк с которых биотварь рекомендует начать свой кустом в 2дашки закладывать... |
Safe 2da Lines существуют, в первую очередь, для добавления нового контента с патчами самими баотварями, и легкой совместимости хаков сторонних разработчиков (пример - специальные хаки с учетом поставленного cep'a), во вторую. Наш хак создается для использование в конкретном модуле - это отнюдь не "архив хороших\понравившехся хаков". Для чего учитывать эти safe lines? Псевдо удобство. Увольте...
helvene
Oct 13 2005, 17:13
QUOTE |
Safe 2da Lines существуют, в первую очередь, для добавления нового контента с патчами самими баотварями, и легкой совместимости хаков сторонних разработчиков (пример - специальные хаки с учетом поставленного cep'a), во вторую. Наш хак создается для использование в конкретном модуле - это отнюдь не "архив хороших\понравившехся хаков". Для чего учитывать эти safe lines? Псевдо удобство. Увольте... |
Vhall, вам это может быть неактуально. Но вообще замечание логичное для команд, готовящих хаки, которые в будущем могут обновляться и пересматриваться.
helvene
Oct 13 2005, 17:15
SoundAppType - таким образом указывается звук, с которым открывается дверь.
QUOTE |
Label - текстовая метка записи. Сюда можно написать любое слово. Тоже не имеет большой роли. |
И все-таки, для чего этот столбец вообще используется?
QUOTE (helvene @ Oct 13 2005, 18:13) |
Vhall, вам это может быть неактуально. Но вообще замечание логичное для команд, готовящих хаки, которые в будущем могут обновляться и пересматриваться. |
Это актуально только в случае адаптации хака под последующие версии патчей. Ну, или "супер популярные" хаки, типа cep'а. имхо
QUOTE (helvene @ Oct 13 2005, 18:15) |
И все-таки, для чего этот столбец вообще используется? |
Нигде в тулсете я не встречал ни строк Label, ни строк StrRef. Более того, я даже заменил их "****"
QUOTE |
А-а-абсолютно по-барабану. Как показала практика, почти все 2da'шки ни коим образом не реагируют на столбец индекса строки и столбец Label, начиная, примерно, с версии 1.59 (до этой версии - возможно). А вот если неправильно посчитать строку... Тогда начнется...
|
Леге правильный номер в начале строки именно и помогает точно считать эти строки ... а то вместо "38 попугаев" может получиться "37 попугаев" или "39 попугаев"

.
QUOTE |
Наш хак создается для использование в конкретном модуле - это отнюдь не "архив хороших\понравившехся хаков". Для чего учитывать эти safe lines? Псевдо удобство. Увольте... |
..одинаковый подход к стилю заполнения таблиц не есть порок..такие вещи не зря обуславливаеться ...рано или позно кто-то возьмет посмотреть твою "только для конкретного модуля" предназначеную 2дашку...и вероятнее всего это будет какой то начинающий разработчик, котрый захочет посмотреть пример ...и, тогда уверовав, что так можно делать ВЕЗДЕ, он также "поработает" с 2дашками где порядок строк весьсма важен..и начнеться большие траблы ... способ "обучать примером" действует не только в "+" но и в "-"....не надо создавать лишние проблемы , отнимающие потом не мало времени, не только конкретному человеку, но и нам - ведь именно сюда вероятнее всего обратиться с воплем о помощи, и укажет,что "а вот он делал так - я специально пример смотрел"...а переучивать труднее всего
... цени не только свою конкретную работу над конкретным модулем и сеюминутные удобства ...ты "не остров, а часть континента" говоря словами Хемингвея ....
QUOTE |
И все-таки, для чего этот столбец вообще используется?
|
ррр helvene ...сколько раз еще надо написать - как правило для удобства человека работающего с 2дашкой..так ему, человеку , легче ориентироваться в таблице, а для компа и определенного кода хватает...
..но это не мешает тебе в скрипте использовать этот столбец по своему... например на он опен обьекта(двери) поставить простой скрипт, который с 2дашки считывает этот столбец и дает всплывающую строку над головой или в талк игрока( или еще и в лог записывает, чтоб потом разбираться ) с кустомным названием обьекта( в конкретном случае двери) + и еще со всеми нужными подробностями в разработке...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.