Понедельник, 07.10.2024, 01:37
Приветствую Вас Guest | RSS
Главная страница | Статьи | Регистрация | Вход
Меню сайта

Случайный рисунок

Категории каталога
Туториалы по маппингу (HL2) [68]
Туториалы по маппингу для Half-Life
Туториалы по текстурированию (HL2) [10]
Туторы по текстурированию для Half-Life
Туториалы по моделированию (HL2) [9]
Туторы по моделированию для Half-Life
Туториалы по программированию (HL2) [53]
Туторы по прагроммированию для Half-life
Другие туториалы (HL1 и HL2) [4]
Туторы которые не вошли в другие категории
Half-Life 2 Beta [1]
Статьи о npc и weapon в бете Half-Life 2, а так же мануалы и FAQ.
Туториалы по маппингу (HL1) [14]
Туторы по маппингу для Half-Life 1
Туториалы по текстурированию (HL1) [1]
Туторы по текстурированию для Half-Life 1
Туториалы по моделированию (HL1) [1]
Туторы по моделированию для Half-Life 1
Туториалы по программированию (HL1) [30]
Туторы по программированию для Half-Life 1

Наш опрос
Приводить ли сайт в чувство?
Всего ответов: 737

Начало » Статьи » Туториалы по программированию (HL1)

[HL1]Поддержка мапконфигов
Original tutorial: Alex_Gordon
Source code: Spirit of Half-Life

Итак, представьте ситуацию: вы делаете мод под GoldSRC. В вашем моде куча наворотов, типа шейдеров, детальных текстур, свечения, моушн блура и т.д. Но в моде есть одна темная карта, на которой эти все эффекты - бесполезны, и лишь только жрут память. Как их отключить? Выводить мессагу типа "Юзер, введи в консоли то-то и то-то!"? Но некоторые юзеры настолько н00бы, что не знают, что такое консоль. Оставлять эти эффекты на этой карте = задаром понизить работоспособность. Или может бросить мод и пойти почитать Шекспира? Хм, вариант хороший, но мод - тоже хорошая вещь. Итак, нам на помощь приходит система MapConfig от SoHL.
Устроена она так: в папке мода создается папка mapconfig, и в ней создаются cfg файлы соответствующие названиям карт. При переходе с предыдущей карты на указанную cfg выполняется, и все комманды, записанные в нем, выполняются. Такая система была не только в SoHL, но и в HLFX.
Теперь как это реализовать.
На сервере откройте файл client.cpp и спуститесь до функции void ParmsChangeLevel( void ). Она отвечает за то, что происходит, когда пользователь проходит через trigger_changelevel.
В SoHL есть следующий код:

Code
    if(!(pEntity->v.flags & FL_FAKECLIENT)) // Check that client isn't a bot, for future using
      {
          // load mapname.cfg
          char szCommand[128];
          sprintf(szCommand, "exec mapconfig/%s.cfg\n", STRING(gpGlobals->mapname));
          CLIENT_COMMAND(pEntity, szCommand);
      }

Но во-первых, он стоит в функции ClientConnect, а она нам не подходит. А во-вторых, если его пихнуть в функцию
void ParmsChangeLevel( void ) без изменений, компилятор выдаст ошибку. Итак, преобразуем его до следующего вида:
Code
        // load mapname.cfg
          char szCommand[128];
          sprintf(szCommand, "exec mapconfig/%s.cfg\n", STRING(gpGlobals->mapname));
          SERVER_COMMAND(szCommand);

И вставляем в void ParmsChangeLevel( void ). Компилируем, создаем конфиги, и радуемся! smile
Категория: Туториалы по программированию (HL1) | Добавил: AlexGordon (06.11.2010)
Просмотров: 1691 | Комментарии: 4 | Рейтинг: 5.0 |

Всего комментариев: 4
2 AlexGordon  
1
Не, Root2x, ты ж знаешь, у меня свои коварные планы biggrin

3 Hitmen  
1
А там бы ты пригодился. Проект же отечественный. И по-качеству идеи раритет (хоть это далеко и не так) smile

4 AlexGordon  
0
надо будет - сами найдут)

1 Root2x  
1
Тебе бы в Half-Life Confession wink

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Кто в Онлайн

Друзья сайта

Баннеры

  Сайт CrazyArts   Black   Сообщество сайтов о Half-Life   Самый   Только   Все   hl2 top 100     Rambler's Top100  

игры
игры

  Каталог сайтов Планета Топ 100 - Planet Top 100       ТОП ЛУЧШИХ ИГРОВЫХ САЙТОВ           Detroit Team Site :: Моды от Detroit Team, видео, новости.   Naruto-kun[Звезда Наруто]  


The idea of dising: Homie7