Воскресенье, 22.12.2024, 17:31

logo

Пользовательский поиск

Меню сайта
Категории раздела
Разное [15]
Tutorials
Создание карт [13]
Создание моделей [2]
Кодинг [14]
Создание карт CS [197]
Учебник cs-mapper
Свойства entity HL-CS [117]
Форма входа
Наш сервер CS 1.6
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 167
Друзья сайта


Главная » Статьи » HL Development » Кодинг


Как отучить халфу вылетать при ненайденой модели

Как отучить халфу вылетать при ненайденой модели

Как всем известно, халфа обожает вылетать, если вдруг она не нашла какой-либо модели.

Мало того, что она вылетает, так при этом еще ехидно заявляет, что модель не найдена - нажмите ок.

Я конечно понимаю, что 98 год и все такое, но даже первый квейк не отличался столь мерзким нравом. Меня давно мучил вопрос, как бы отучить халфу от подобного поведения, в результате чего и появился на свет данный тутор :)

Откройте util.h и где-нибудь в конце добавьте вот эти строчки

void UTIL_SetModel( edict_t *e, const char *model );
int UTIL_PrecacheModel( char* s );

 


Теперь откройте util.cpp и тоже куда-нить в конец добавьте вот эти функции

void UTIL_SetModel( edict_t *e, const char *model )
{
    if (!model || !*model) //model not specified ???
    {
              ALERT(at_console, "Error! Model not specified\n" );
        PRECACHE_MODEL( "models/error.mdl");
        SET_MODEL( e, "models/error.mdl" );
        return;
    }
   
    int length;
    const char *pFile = (char*)LOAD_FILE_FOR_ME( (char*)model, &length );
        
    if (pFile && length)
    {

        FREE_FILE( (char *)pFile );
        PRECACHE_MODEL( (char*)model);
        SET_MODEL( e, model );
    }
    else //invalid path ?
    {
        FREE_FILE( (char *)pFile );
              ALERT(at_console, "Error! Model %s not found\n", model );
        PRECACHE_MODEL( "models/error.mdl");
        SET_MODEL( e, "models/error.mdl" );
              return;
    }
}

int UTIL_PrecacheModel( char* s )
{
    if (FStringNull(MAKE_STRING(s))) //model not specified ???
        return NULL;
        
          int length;
    int model;
    char *pFile = (char*)LOAD_FILE_FOR_ME( (char*)s, &length );

    if (pFile && length)
    {
        FREE_FILE( pFile );
        model = PRECACHE_MODEL( (char*)s);
    }
    else
    {
              FREE_FILE( (char *)pFile );
        model = PRECACHE_MODEL( "models/error.mdl" );
    }
    return model;

}

 


Даннае функции выполняют сразу кучу полезных вещей - во первых они позволяют поискать файл, как в папке мода, так и в папке valve и если файл (модель или спрайт) не будет найден, UTIL_SetModel просто ругнется в консоль и продолжит загрузку карты.

Во вторых - параметры у функций совпадают с параметрами SET_MODEL и PRECACHE_MODEL, таким образом, чтобы подключить новые функции, вам нужно просто позаменять все найденные слова SET_MODEL в вашем проекте на UTIL_SetModel, а все PRECACHE_MODEL на UTIL_PrecacheModel.

Моделька ошибки в аттаче. Наслаждайтесь :)


g-cont 
 
copyright 2004 Shambler Team
 
Категория: Кодинг | Добавил: SuperStart (18.10.2010)
Просмотров: 3145 | Рейтинг: 0.0/0 |



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

Copyright www.akksimo.net © 2024