Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 10 из 10

Тема: dc_cmd

  1. #1
    Аватар для Mikiadier
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.08.2016
    Сообщений
    12
    Репутация:
    0 ±

    dc_cmd

    PHP код:
     if(strcmp(cmd"/motd"true) == 0)
        {
            if(
    IsPlayerConnected(playerid)) return true;
            if(
    PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playeridCOLOR_GREY"Нет прав на использование команды.");
            new 
    length strlen(cmdtext);
            while ((
    idx length) && (cmdtext[idx] <= ' '))
            {
                
    idx++;
            }
            new 
    offset idx;
            new 
    result[64];
            while ((
    idx length) && ((idx offset) < (sizeof(result) - 1)))
            {
                
    result[idx offset] = cmdtext[idx];
                
    idx++;
            }
            
    result[idx offset] = EOS;
            if(!
    strlen(result)) return SendClientMessage(playeridCOLOR_GREY"Используйте: /motd [текст]");
            
    strmid(MOTDINFO[PlayerInfo[playerid][pLeader]][mNews], result0strlen(result), 255);
            
    SendClientMessage(playerid,-1,"Вы установили новость для членов фракции.");
            
    SaveMotd();
        } 
    Кому не сложно переведите команду на DC_CMD, большое спасибо!

  2. #2
    Аватар для Saibot
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.08.2016
    Сообщений
    58
    Репутация:
    24 ±
    PHP код:
    CMD:motd(playeridparams[])
    {
        if(!
    PlayerInfo[playerid][pLeader])
            return 
    SendClientMessage(playerid, -1, !"Нет прав на использование команды.");
            
        if(
    sscanf(params"s[64]"params))
            return 
    SendClientMessage(playerid, -1, !"Используйте: /motd [текст]");

        
    strins(MOTDINFO[PlayerInfo[playerid][pLeader]][mNews], params0);
        
    SendClientMessage(playerid, -1, !"Вы установили новость для членов фракции.");
        return 
    SaveMotd();


  3. #3
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    PHP код:
    CMD:motd(playeridparams[])
    {
        new 
    leader PlayerInfo[playerid][pLeader];
        if (
    leader == 0) {
            
    SendClientMessage(playeridCOLOR_GREY"Нет прав на использование команды.");
            return 
    1;
        }

        if (
    isnull(params)) {
            
    SendClientMessage(playeridCOLOR_GREY"Используйте: /motd [текст]");
            return 
    1;
        }

        
    MOTDINFO[leader][mNews][0] = '\0';
        
    strcat(MOTDINFO[leader][mNews], params255);
        
    SaveMotd();

        
    SendClientMessage(playerid, -1"Вы установили новость для членов фракции.");
        return 
    1;

    Последний раз редактировалось ziggi; 08.09.2016 в 11:04.

  4. #4
    Аватар для Saibot
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.08.2016
    Сообщений
    58
    Репутация:
    24 ±
    Цитата Сообщение от ziggi
    PHP код:
    if (strlen(params) == 0) {
            
    SendClientMessage(playeridCOLOR_GREY"Используйте: /motd [текст]");
            return 
    1;
        } 
    Тогда уже лучше использовать макрос isnull, он проверяет только первый символ на \0, а strlen проходит через весь массив.

  5. #5
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Saibot Посмотреть сообщение
    Тогда уже лучше использовать макрос isnull, он проверяет только первый символ на \0, а strlen проходит через весь массив.
    Не совсем верно. strlen просматривает массив только до тех пор, пока не найдёт '\0', а меньшая производительность, чем в isnull, выходит из-за того, что strlen - нативная функция.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. Пользователь сказал cпасибо:
    VVWVV (08.09.2016)
  7. #6
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Saibot Посмотреть сообщение
    Тогда уже лучше использовать макрос isnull, он проверяет только первый символ на \0, а strlen проходит через весь массив.
    Что-то эта функция из головы вылетела, обновил.

  8. #7
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    А если добавить еще один аргумент, Ник игрока например. strcat уже не подойдет, что тогда подойдет?
    PHP код:
    CMD:motd(playeridparams[])
    {
        new 
    leader PlayerInfo[playerid][pLeader];
        if (
    leader == 0) {
            
    SendClientMessage(playeridCOLOR_GREY"Нет прав на использование команды.");
            return 
    1;
        }
        if (
    isnull(params)) {
            
    SendClientMessage(playeridCOLOR_GREY"Используйте: /motd [текст]");
            return 
    1;
        }
        
    MOTDINFO[leader][mNews][0] = '\0';
        
    strcat(PlayerInfo[playerid][pName],MOTDINFO[leader][mNews], params255); // Как ту поменять?
        
    SaveMotd();
        
    SendClientMessage(playerid, -1"Вы установили новость для членов фракции.");
        return 
    1;


  9. #8
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Skyline Посмотреть сообщение
    А если добавить еще один аргумент, Ник игрока например. strcat уже не подойдет, что тогда подойдет?
    PHP код:
    CMD:motd(playeridparams[])
    {
        new 
    leader PlayerInfo[playerid][pLeader];
        if (
    leader == 0) {
            
    SendClientMessage(playeridCOLOR_GREY"Нет прав на использование команды.");
            return 
    1;
        }
        if (
    isnull(params)) {
            
    SendClientMessage(playeridCOLOR_GREY"Используйте: /motd [текст]");
            return 
    1;
        }
        
    MOTDINFO[leader][mNews][0] = '\0';
        
    strcat(PlayerInfo[playerid][pName],MOTDINFO[leader][mNews], params255); // Как ту поменять?
        
    SaveMotd();
        
    SendClientMessage(playerid, -1"Вы установили новость для членов фракции.");
        return 
    1;

    PHP код:
    CMD:motd(playeridparams[])
    {
        new 
    leader PlayerInfo[playerid][pLeader];
        if (
    leader == 0) {
            
    SendClientMessage(playeridCOLOR_GREY"Нет прав на использование команды.");
            return 
    1;
        }
        if (
    isnull(params)) {
            
    SendClientMessage(playeridCOLOR_GREY"Используйте: /motd [текст]");
            return 
    1;
        }
        
    format(MOTDINFO[leader][mNews], 255"%s: %s"PlayerInfo[playerid][pName], params);
        
    SaveMotd();
        
    SendClientMessage(playerid, -1"Вы установили новость для членов фракции.");
        return 
    1;

    Последний раз редактировалось ziggi; 08.09.2016 в 16:05.

  10. #9
    Аватар для Skyline
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.01.2014
    Адрес
    Россия
    Сообщений
    304
    Репутация:
    2 ±
    Пробовал, warning 213: tag mismatch.

  11. #10
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Skyline Посмотреть сообщение
    Пробовал, warning 213: tag mismatch.
    Обновил

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •