Как сабж реализовать в стороннем моде?
В Half-Life и Opposing Force при открытии меню Load game в списке отображаются названия глав. В модах я такого не помню, там отображаются названия файлов карт (без расширения). Пробовал ставить message у worldspawn - не помогло.
FreeSlave
Ну очевидно же - это вшито в движок, конкретно для халфы и опфора.
В ретрибушене тоже показываются названия глав, но только лишь потому, что там карты называются c0a0, c1a0 и т.п.
И ещё сейчас придёт Дядя Миша и расскажет про pfnSaveGameComment в ксаше.
XaeroX, спасибо.
Я думал, в ретрибьюшене оно так только для того, чтоб карты не показывались в списке мультиплеерных. А оказывается ещё и для лейблов сэйвов.
Я смотрю народ про эти сохранения вообще не вкурсе. Хотя казалось бы. Начнём стого, что эта табличка впервые появилась в кваке (а может и в дууме, но мне лень провирять).
C++ Source Code:
1
level_t levels[] =
2
{
3
{"start", "Entrance"}, // 0
4
5
{"e1m1", "Slipgate Complex"}, // 1
6
{"e1m2", "Castle of the Damned"},
7
{"e1m3", "The Necropolis"},
8
{"e1m4", "The Grisly Grotto"},
9
{"e1m5", "Gloom Keep"},
10
{"e1m6", "The Door To Chthon"},
11
{"e1m7", "The House of Chthon"},
12
{"e1m8", "Ziggurat Vertigo"},
13
14
{"e2m1", "The Installation"}, // 9
15
{"e2m2", "Ogre Citadel"},
16
{"e2m3", "Crypt of Decay"},
17
{"e2m4", "The Ebon Fortress"},
18
{"e2m5", "The Wizard's Manse"},
19
{"e2m6", "The Dismal Oubliette"},
20
{"e2m7", "Underearth"},
21
22
{"e3m1", "Termination Central"}, // 16
23
{"e3m2", "The Vaults of Zin"},
24
{"e3m3", "The Tomb of Terror"},
25
{"e3m4", "Satan's Dark Delight"},
26
{"e3m5", "Wind Tunnels"},
27
{"e3m6", "Chambers of Torment"},
28
{"e3m7", "The Haunted Halls"},
29
30
{"e4m1", "The Sewage System"}, // 23
31
{"e4m2", "The Tower of Despair"},
32
{"e4m3", "The Elder God Shrine"},
33
{"e4m4", "The Palace of Hate"},
34
{"e4m5", "Hell's Atrium"},
35
{"e4m6", "The Pain Maze"},
36
{"e4m7", "Azure Agony"},
37
{"e4m8", "The Nameless City"},
38
39
{"end", "Shub-Niggurath's Pit"}, // 31
40
41
{"dm1", "Place of Two Deaths"}, // 32
42
{"dm2", "Claustrophobopolis"},
43
{"dm3", "The Abandoned Base"},
44
{"dm4", "The Bad Place"},
45
{"dm5", "The Cistern"},
46
{"dm6", "The Dark Zone"}
47
};
Там же вкомпилено для хипнотика и рагуя, но я не стал их приводить - итак понятно.
Теперь про халфовскую:
C++ Source Code:
1
static TITLECOMMENT gTitleComments[] =
2
{
3
{ "T0A0", "#T0A0TITLE" },
4
{ "C0A0", "#C0A0TITLE" },
5
{ "C1A0", "#C1A0TITLE" },
6
{ "C0A1", "#C0A1TITLE" },
7
{ "C1A1", "#C1A1TITLE" },
8
{ "C1A2", "#C1A2TITLE" },
9
{ "C1A3", "#C1A3TITLE" },
10
{ "C1A4", "#C1A4TITLE" },
11
{ "C2A1", "#C2A1TITLE" },
12
{ "C2A2", "#C2A2TITLE" },
13
{ "C2A3", "#C2A3TITLE" },
14
{ "C2A4D", "#C2A4DTITLE" }, // These must appear before "C2A4" so all other map names starting with C2A4 get that title
15
{ "C2A4E", "#C2A4ETITLE" },
16
{ "C2A4F", "#C2A4FTITLE" },
17
{ "C2A4G", "#C2A4GTITLE" },
18
{ "C2A4", "#C2A4TITLE" },
19
{ "C2A5", "#C2A5TITLE" },
20
{ "C3A1", "#C3A1TITLE" },
21
{ "C3A2", "#C3A2TITLE" },
22
{ "C4A1A", "#C4A1ATITLE" }, // Order is important, see above
23
{ "C4A1B", "#C4A1BTITLE" },
24
{ "C4A1C", "#C4A1CTITLE" },
25
{ "C4A1D", "#C4A1DTITLE" },
26
{ "C4A1E", "#C4A1ETITLE" },
27
{ "C4A1", "#C4A1TITLE" },
28
{ "C4A2", "#C4A2TITLE" },
29
{ "C4A3", "#C4A3TITLE" },
30
{ "C5A1", "#C5A1TITLE" }
31
};
Вальва там конкретно напутала в эпизодах. По-хорошему имя для сейва должно было приходить из world->v.netname. Пример
C++ Source Code:
"chaptertitle""T0A0TITLE"
Но вальва или не стала свиазываться, или для локализации или они в каких-то именах некоторых карта там чота напутоле, ну корочи вместо того чтобы брать эту строчку из pev->netname закодили вот эту вот дурацкую табличку. Обратите внимание, что табличка не учитывает какие-то диапазоны уровней. Только те карты, которые есть в списке. Как оно распространяется на последующие уровни я понятия не имею, никогда не интерисовался. А ксаш всегда брал название из world->v.message, хотя по идее надо переделать на world->v.netname и взять реальную мессагу из titles.txt