Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Простая система личных сообщений PM

Статус
В этой теме нельзя размещать новые ответы.

KACbIM

Дебютант
Всем привет. Если вы читаете эту тему, значит вы ищите самую простую систему личных сообщений или вам просто нужно придраться.
[HR][/HR]
И так. Для того чтобы работала наша команда "/pm" на нужен strtok:
Код:
strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }
    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}
В public OnPlayerCommandText впишем:
Код:
cmd = strtok(cmdtext, idx);
new tmp[255], string[255], cmd[255], idx, giveplayerid, sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
И там же добавим нашу команду:
Код:
if(!strcmp(cmd, "/pm", true))
{
    new pp; // Переменная для измерения длинны команды
    tmp = strtok(cmdtext, idx); // Запишем ID игрока во временную переменную
    if(!strlen(tmp)) return SendClientMessage(playerid, 0x919191FF, "{FF0000}[Инфо]{FFFF00}: {FFFFFF}Использование: \"/pm [ID] text\"."); //Если игрок не ввёл ID выводим сообщение
    giveplayerid = strval(tmp); // Запоминаем ID
    if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, 0x919191FF, "{FF0000}[Ошибка]{FFFF00}: {FFFFFF}Игрока с таким ID нет на сервере."); // Если игрока нет выводим сообщение
    if(giveplayerid==playerid) return SendClientMessage(playerid, 0x919191FF, "{FF0000}[Ошибка]{FFFF00}: {FFFFFF}Нельзя писать самому себе."); // Если пишем себе, то пишем что так нельзя
    pp = strlen(tmp)+5; // Теперь измеряем длину команды, включая ID
    tmp = strtok(cmdtext, idx); // Записываем то что идёт после ID
    if(!strlen(tmp)) return SendClientMessage(playerid, 0x919191FF, "{FF0000}[Инфо]{FFFF00}: {FFFFFF}Использование: \"/pm [ID] text\"."); // Проверяем текст, если нет, то пишем ошибку
    format(string,sizeof(string),"{FFD500}*PM %s(%d):{FFFFFF} %s",sendername, playerid, cmdtext[pp]); // Форматируем текст под себя
    SendClientMessage(giveplayerid, 0xAA00FFAA, string); // Отправляем сообщение
}
Проверки на мут нет и администраторы не читают сообщения.
Команду я пытался сделать максимально простой , чтобы можно было без лишних проблем вставить в любой мод.
Если есть решение проще то оставляйте ссылки на тему где проще, если вам была полезен этот мануал, то ставьте +rep в мою карму.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу