Регистрация - или - Войти
IspitatelIspitatel

Испытатель...

1/09/2003
Wilson Chronicles - Demo ReleaseWilson Chronicles - Demo Release

Вы - майор Даррен Вилсон, работающий на Военный Отдел Исследований Black Mesa....

16/08/2010

субтитры из паранойи.


  • Описание
  • Ссылка и установка

субтитры из паранойи

субтитры из паранойи.


Автор / ы урока : Alex_Gordon
Просмотров : 1454 ( +1 )
Скачиваний : 21
Прислал / (а) : Streit
Дата создания : 07.04.2011 18:35:07
Источник : http://www.hlfx.ru/forum
Рейтинг :
 ( 5 ) 
Поделиться :


Имеются следующие переводы : | русский |

Всем привет. Сейчас мы сделаем субтитры из паранойи. Первым делом нам понадобятся 2 файла: vgui_subtitles.cpp и vgui_subtitles.h (см. аттач) Добавим их на клиент. Теперь откроем Client, в нем найдем файл vgui_TeamFortressViewport.cpp. Откроем его. Найдем строку: Код: m_pCurrentCommandMenu = NULL; и после нее добавим: Код: m_pSubtitle = NULL; Теперь найдем: Код: App::getInstance()→setCursorOveride( App::getInstance()→getScheme()→getCursor(Scheme::SchemeCursor::scu_none) ); И после добавим: Код: m_pSubtitle = new CSubtitle(); m_pSubtitle→setParent(this); m_pSubtitle→setVisible(false); Теперь найдем функцию void TeamFortressViewport::Initialize( void ) и в нее добавим: Код: if (m_pSubtitle) m_pSubtitle→Initialize(); С этим файлом все. Откроем vgui_TeamFortressViewport.h Добавим новый инклюд: Код: #include "vgui_subtitles.h" Потом найдем строку Код: char m_szServerName[ MAX_SERVERNAME_LENGTH ]; и после нее напишем: Код: CSubtitle* m_pSubtitle;

Клиент можно компилировать. Переходим к серверу.

Откроем util.cpp и найдем там функцию UTIL_EmitAmbientSound Полностью заменим ее на: Код: void UTIL_EmitAmbientSound( edict_t *entity, const Vector &vecOrigin, const char *samp, float vol, float attenuation, int fFlags, int pitch ) { float rgfl[3]; vecOrigin.CopyToArray(rgfl);

if (samp && *samp == '!')
{
        char name[32];
        if (SENTENCEG_Lookup(samp, name) >= 0)
                EMIT_AMBIENT_SOUND(entity, rgfl, name, vol, attenuation, fFlags, pitch);
                UTIL_ShowMessagePVS( samp, vecOrigin );
        }
        else
                EMIT_AMBIENT_SOUND(entity, rgfl, samp, vol, attenuation, fFlags, pitch);
}

Теперь ищем функцию void UTIL_ShowMessageAll( const char *pString ) и после нее добавляем новую: Код: void UTIL_ShowMessagePVS( const char *pString, const Vector &org ) { // loop through all players for ( int i = 1; i ⇐ gpGlobals→maxClients; i++ ) { CBaseEntity *pPlayer = UTIL_PlayerByIndex( i ); if ( pPlayer && pPlayer→IsNetClient() ) { float flDist = (pPlayer→pev→origin - org ).Length(); if ( flDist > 300 ) continue; // MESSAGE_BEGIN( MSG_ONE, gmsgHudText, NULL, pEntity→edict() ); MESSAGE_BEGIN( MSG_PVS, gmsgHudText, org ); WRITE_STRING( pString ); MESSAGE_END(); } } }

Теперь откроем sound.cpp и найдем там функцию: Код: EMIT_SOUND_DYN(edict_t *entity, int channel, const char *sample, float volume, float attenuation, int flags, int pitch) Полностью заменим ее на: Код: void EMIT_SOUND_DYN(edict_t *entity, int channel, const char *sample, float volume, float attenuation, int flags, int pitch) { if (sample && *sample == !) { char name[32]; if (SENTENCEG_Lookup(sample, name) >= 0) { EMIT_SOUND_DYN2(entity, channel, name, volume, attenuation, flags, pitch); // ALERT(at_console, "play sentence %s, output %s\n", sample, name); } else ALERT( at_aiconsole, "Unable to find %s in sentences.txt\n", sample );

                // buz: send sencences as text messages to lookup subtitles in titles.txt
        //      UTIL_ShowMessageAll( sample );
                UTIL_ShowMessagePVS( sample, entity->v.origin );
        }
        else
        {
                EMIT_SOUND_DYN2(entity, channel, sample, volume, attenuation, flags, pitch);
        //      ALERT(at_console, "play sound %s\n", sample);
        }
}

Теперь откроем util.h и найдем там: Код: extern void UTIL_ShowMessageAll ( const char *pString ); После напишем: Код: extern void UTIL_ShowMessagePVS( const char *pString, const Vector &org ); // buz

Можно компилировать. Теперь сделаем текст самих субтитров. Он записывается в titles.txt предпочтительно в конец файла. Откроем этот файл, спустимся вниз и добавим там: Код: !BA_DESK { Барни: Здравствуйте, Мистер Фримен. У меня для вас было много сообщений, но из-за ошибки системы, которая произошла минут 20 назад, я не могу их вам передать. Еще один неудачный день… Проблемы в тест-камере были, но, насколько я знаю, они уже исправлены. Мне сказано проследить, что вы надели ваш HEV костюм. } Здесь !BA_DESK - это название сентенса из файла sentences.txt с восклицательным знаком перед ним. Результат:



1. ( 2.7 Kb )
Похожие1. Наследование классов в С++ - В этом туторе я попытаюсь кратко рассказать про наследование классов в С++
2. Water Splash - Добавляем брызги при выстреле по воде
Ссылки на объект
Полная ссылка на текущем языке :
Короткая ссылка :
Ссылка на превью-картинку :
Ссылка на картинку в полном размере :
Ссылка для вашего форума или сайта
BB код ссылка:
BB код ссылка с картинкой :
BB код картинки :
HTML код ссылка:
HTML код ссылка с картинкой :
HTML код картинки :
Вы не можете комментировать, т.к. вы не зарегистрированы.
    IMI Jericho 941 (Baby Desert Eagle)
    The SpecialistsIMI Jericho 941 (Baby Desert Eagle)
    Modified TetraGrammaton Berettas of Cleric John Preston
    The SpecialistsModified TetraGrammaton Berettas of Cleric John Preston
    AMT Long Side Hardballers (HITMAN)
    The SpecialistsAMT Long Side Hardballers (HITMAN)
    CZ-52
    The SpecialistsCZ-52