Vefang

Подсказка информации каждые 10 минут.

В теме 2 сообщения

Здравствуйте, дорогие друзья! Возможно, кому-то пригодится данная система.
Каждые 10 минут на сервере будет выводиться подсказка текста по очереди.

В начале мода.
 

#define publics:%0(%1)  forward %0(%1);public %0(%1)
#define MAX_TEXT 3 // Количество текстовых строк
#define MAX_TEXT_TIMES 10 // Интервал в минутах

new currentTextIndex = 0// Текущий индекс текста

new randomMessages[MAX_TEXT][128] =
{
    "{DC4747}[Подсказка]: СВОЙ ТЕКСТ",
    "{DC4747}[Подсказка]: СВОЙ ТЕКСТ",
    "{DC4747}[Подсказка]: СВОЙ ТЕКСТ"
};

В OnGameModeInit:
 

public OnGameModeInit()
{
   SetTimer("SendRandomMessage", MAX_TEXT_TIMES * 60 * 1000true);
   return 1;
}

В конце мода:
 

publics: SendRandomMessage()
{
    SendClientMessageToAll(-1, randomMessages[currentTextIndex]);

    currentTextIndex++;
    if (currentTextIndex >= MAX_TEXT)
    {
        currentTextIndex = 0;
    }

    return 1;
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Vefang,

8 часов назад, Vefang сказал:

new currentTextIndex = 0// Текущий индекс текста

чем меньше глобальных переменных, тем код лучше со стороны его чистоты. Стоило рассмотреть применение локальной статической переменной.

 

8 часов назад, Vefang сказал:

if (currentTextIndex >= MAX_TEXT)

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

 

8 часов назад, Vefang сказал:

#define MAX_TEXT 3 // Количество текстовых строк

А для чего? Фактически сами увеличиваете затраты своего времени, возлагая на себя задачу, которую спокойно может выполнить компилятор.

 

Спойлер

#define publics:%0(%1)  forward %0(%1);public %0(%1)
#define MAX_TEXT_TIMES 10 // Интервал в минутах

new randomMessages[][128] =
{
    "{DC4747}[Подсказка]: СВОЙ ТЕКСТ",
    "{DC4747}[Подсказка]: СВОЙ ТЕКСТ",
    "{DC4747}[Подсказка]: СВОЙ ТЕКСТ"
};

const MAX_TEXT = sizeof(randomMessages); // Количество текстовых строк

publics: SendRandomMessage()
{
    static currentTextIndex = 0;
    SendClientMessageToAll(-1, randomMessages[currentTextIndex]);

    if (++currentTextIndex == MAX_TEXT)
    {
        currentTextIndex = 0;
    }

    return 1;
}

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • gooding
      От gooding


      Скачать файл PAR RP | Доработанный мод Cruela RP | Без багов
      Всем здравствуйте, уважаемые читатели. Я много времени потратил на доработку данного игрового мода, чтобы его выставить на форум.
      Лог доработок можно посмотреть внизу, а скриншоты игрового мода внизу и верху.
      Основа данного мода: Cruela RP
       
       

      Добавил gooding Добавлено 20.11.2024 Категория Моды Автор GOODING (Я)  
    • gooding
      От gooding
      Всем здравствуйте, уважаемые читатели. Я много времени потратил на доработку данного игрового мода, чтобы его выставить на форум.
      Лог доработок можно посмотреть внизу, а скриншоты игрового мода внизу и верху.
      Основа данного мода: Cruela RP
       
       

    • Max Luilchack
      От Max Luilchack
      Нужен человек который сможет сделать примерную карту Украины для сервера crmp mobile. Если есть желающие пишите в дс: lamarlml
    • Yashich
      От Yashich
      Возникла проблема, не работает команда /giverank Что здесь может работать не так? Заранее спасибо за ответ)
      Вот строки кода связанные с этой командой (мод Аризона)
       
      CMD:giverank(playerid, params[]) {     if(PI[playerid][pMember]<=0)return 0;     if(PI[playerid][pRank] < 9 && PI[playerid][pLeader] == 0) return SCM(playerid, COLOR_RED, !"Отказано в доступе!");     if(sscanf(params,"ud",params[0],params[1])) return SCM(playerid, COLOR_RED, !"Используйте: /giverank [id] [rank]");     if(!ProxDetectorS(8.0, playerid, params[0])) return SCM(playerid, COLOR_GREY, !"Вы должны находиться рядом с игроком!");     if(PI[params[0]][pLeader] > 0 ) return SCM(playerid, COLOR_RED, !"Вы не можете изменять ранг лидеру");     if(params[1] < 1) return SCM(playerid, COLOR_GREY, !"Нельзя повысить до этого ранга");     if(Clother[params[0]]!=-1)return 0;     if(GetPlayerVirtualWorld(playerid)!=GetPlayerVirtualWorld(params[0]))return 0;     if(!IsPlayerConnected(params[0])) return SCM(playerid, COLOR_GREY, !"Игрок не найден");     if(PI[playerid][pRank] <= PI[params[0]][pRank]) return SCM(playerid, COLOR_GREY, !"Вы не можете повысить/понизить этого игрока");     if(PI[playerid][pRank] == 9 && params[1] > 8) return SCM(playerid, COLOR_RED, !"Нельзя выдать ранг больше 8");     if(params[1] > 9) return SCM(playerid, COLOR_GREY, !"Нельзя повысить до этого ранга");     if(PI[params[0]][pMember] != PI[playerid][pMember]) return SCM(playerid, COLOR_GREY, !"Игрок находиться в другой организации!");     str_1[0] = EOS;     f(str_1,100,"Лидер %s %s до %i ранга",PN(playerid),PI[params[0]][pRank] > params[1] ? ("понизил"):("повысил"),params[1]);     SCM(params[0],COLOR_LIGHTBLUE,str_1);     f(str_1,100,"Вы %sи игрока %s до %i ранга",PI[params[0]][pRank] > params[1] ? ("понизил"):("повысил"),PN(params[0]),params[1]);     SCM(playerid,COLOR_LIGHTBLUE,str_1);     PI[params[0]][pRank] = params[1];     UpdatePlayerDataInt(params[0], "Rank", params[1]);     if(PI[params[0]][pSex] == 2) if(TeamDuty{params[0]}) SetPlayerSkinEx(params[0],GOrgSkins[GetTeamID(params[0])][params[1]]), TogglePlayerControllable(params[0],true);     else if(TeamDuty{params[0]}) SetPlayerSkinEx(params[0],MOrgSkins[GetTeamID(params[0])][params[1]]), TogglePlayerControllable(params[0],true);     return 1; }