Русское сообщество по скриптингу

Hook RoundEnd/RoundStart

Все вопросы по скриптингу для Metamod, помощь в редактировании плагинов.
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для
Metamod.


Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник плагина.

Hook RoundEnd/RoundStart

Сообщение Juli » 15 мар 2016, 11:36

Уже неделю ломаю голову над тем, как отловить начало и конец раунда. Может кто подскажет? Смотрела сурсы AMXX, конкретно LogEvent и как-то я ничего не поняла :-D .
Аватара пользователя
Juli
 
Сообщения: 661
Зарегистрирован: 09 июн 2013, 00:13
Благодарил (а): 140 раз.
Поблагодарили: 250 раз.
Опыт программирования: Больше трех лет

Re: Hook RoundEnd/RoundStart

Сообщение Depresie » 15 мар 2016, 12:02

MetaAttach -> GetEngineAPI -> AlertMessage
Код: Выделить всё
void AlertMessage(ALERT_TYPE aType, const char *sFmt, ...) {
    if (aType != at_logged) {
        RETURN_META(MRES_IGNORED);
    }

    char szLogMessage[512];

    va_list pArgs;
    va_start(pArgs, sFmt);
    vsprintf(szLogMessage, sFmt, pArgs);
    va_end(pArgs);

    if (FStrEq(szLogMessage, "World triggered \"Round_Start\"\n")) {
        //roundStart
    }
    else if (FStrEq(szLogMessage, "World triggered \"Round_End\"\n")) {
        //roundEnd
    }

    RETURN_META(MRES_IGNORED);
Аватара пользователя
Depresie
 
Сообщения: 14
Зарегистрирован: 24 фев 2016, 13:24
Благодарил (а): 0 раз.
Поблагодарили: 25 раз.

Re: Hook RoundEnd/RoundStart

Сообщение quckly » 03 апр 2016, 18:29

Код: Выделить всё
// Global vars
int MSGID_HLTV;
bool Hook_HLTV_byte false

Код: Выделить всё
void MessageBegin(int msg_destint msg_type, const float *pOriginedict_t *ed)
{
    static 
bool LoadedMSGS false;
    if(!
LoadedMSGS)
    {
        
// Get Msg ids
        
MSGID_HLTV GET_USER_MSG_ID(PLID"HLTV"NULL);

        
LoadedMSGS true;
    }

    
// New round
    
if(msg_type == MSGID_HLTV && msg_dest == MSG_SPEC)
    {
        
Hook_HLTV_byte true;
    }

    
RETURN_META(MRES_IGNORED);
}

void WriteByte(int iValue)
{
    if(
Hook_HLTV_byte)
    {
        if(
iValue != 0)
            
Hook_HLTV_byte false;
    }

    
RETURN_META(MRES_IGNORED);
}

void MessageEnd()
{
    if(
Hook_HLTV_byte)
    {
        
Hook_HLTV_byte false;

        
// New round started here
    
}

    
RETURN_META(MRES_IGNORED);
}
 
Аватара пользователя
quckly
Скриптер
 
Сообщения: 403
Зарегистрирован: 20 ноя 2009, 10:03
Благодарил (а): 41 раз.
Поблагодарили: 235 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Hook RoundEnd/RoundStart

Сообщение Asmodai » 03 апр 2016, 19:02

Мессаги вообще лучше не юзать по таким мелочам.
Аватара пользователя
Asmodai
 
Сообщения: 441
Зарегистрирован: 24 фев 2011, 20:48
Благодарил (а): 0 раз.
Поблагодарили: 373 раз.
Языки программирования: Counter-Strike 1.6

Re: Hook RoundEnd/RoundStart

Сообщение Juli » 03 апр 2016, 20:06

Asmodai, hltv другим способом и не отловишь.
Аватара пользователя
Juli
 
Сообщения: 661
Зарегистрирован: 09 июн 2013, 00:13
Благодарил (а): 140 раз.
Поблагодарили: 250 раз.
Опыт программирования: Больше трех лет

Re: Hook RoundEnd/RoundStart

Сообщение Bos93 » 03 апр 2016, 22:56

Для начала раунда можно и виртуальную функцию: Ham_CS_RoundRespawn.
Всем добра, любви и осознанности.

Nosce animum tuum.

А осознание и есть, что понял и осмыслил..
А коль не думал ты о том, то кто о том замыслил..?
Аватара пользователя
Bos93
 
Сообщения: 1426
Зарегистрирован: 03 апр 2010, 13:44
Благодарил (а): 149 раз.
Поблагодарили: 509 раз.

Re: Hook RoundEnd/RoundStart

Сообщение Chuvi » 04 апр 2016, 04:32

Bos93, речь про метамод. Какая ветчина, вы вообще про что?

"Незнание английского языка - это ваша проблема."

Плагинами на заказ не занимаюсь. Своих дел хватает.
Аватара пользователя
Chuvi
Модератор
 
Сообщения: 2226
Зарегистрирован: 24 ноя 2011, 08:03
Благодарил (а): 127 раз.
Поблагодарили: 550 раз.

Re: Hook RoundEnd/RoundStart

Сообщение Bos93 » 04 апр 2016, 10:24

А что мешает в метамоде хукнуть виртуальную функцию?
Всем добра, любви и осознанности.

Nosce animum tuum.

А осознание и есть, что понял и осмыслил..
А коль не думал ты о том, то кто о том замыслил..?
Аватара пользователя
Bos93
 
Сообщения: 1426
Зарегистрирован: 03 апр 2010, 13:44
Благодарил (а): 149 раз.
Поблагодарили: 509 раз.

Re: Hook RoundEnd/RoundStart

Сообщение Juli » 04 апр 2016, 10:58

Bos93 писал(а):Для начала раунда можно и виртуальную функцию: Ham_CS_RoundRespawn.

Она же будет вызываться и при спавне, разве нет? Тем более для респавна игроков в AMXX используют как раз Ham_CS_RoundRespawn. Кстати, раз уж это про мету, то давайте уберем префикс "Ham_" :D
Аватара пользователя
Juli
 
Сообщения: 661
Зарегистрирован: 09 июн 2013, 00:13
Благодарил (а): 140 раз.
Поблагодарили: 250 раз.
Опыт программирования: Больше трех лет

Re: Hook RoundEnd/RoundStart

Сообщение Bos93 » 04 апр 2016, 16:53

Приставка просто для понимания. Каждый спавн игрока ловит Ham_Spawn, а Ham_CS_RoundRespawn вызывается в новом раунде. Но его просто используют для возрождения.

Ну если я ошибаюсь, так как мало уже, что помню в павне, можно в гейм длл посмотреть. Но вроде как верно написал.
Всем добра, любви и осознанности.

Nosce animum tuum.

А осознание и есть, что понял и осмыслил..
А коль не думал ты о том, то кто о том замыслил..?
Аватара пользователя
Bos93
 
Сообщения: 1426
Зарегистрирован: 03 апр 2010, 13:44
Благодарил (а): 149 раз.
Поблагодарили: 509 раз.

След.

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1