Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 18
  1. #1
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±

    Создание простейшей системы чата команды

    Команда
    PHP код:
    CMD:f(playeridparams[])//DC_CMD

        if(!
    strlen(params))
            return 
    SendClientMessage(playerid, -1"[ВВЕДИ]: (/f) [Текст]");         
            
        new 
            
    string[144],
            
    name[MAX_PLAYER_NAME]
        ; 
        
    GetPlayerName(playerid,name,sizeof(name));
        
    format(stringsizeof(string),"[Чат фракции]%s: %s"nameparams);
        
        
    TeamSendMsg(playerid, -1string); 
        
    SetPlayerChatBubble(playerid,params,-1,20.0,3500); 
        return 
    1

    Функция отправки сообщения команде
    PHP код:
    TeamSendMsg(playerid,colorstring[]) 

        foreach(
    Playeri)//for(new i=0;i<MAX_PLAYERS;i++)
        
    {
            
    /*if(!IsPlayerConnected(playerid)) 
                return 1;*/
            
    if(gTeam[i] == gTeam[playerid]) //Измените на своё
            
    {
                
    SendClientMessage(icolorstring); 
            }
        }
        return 
    1

    Автор: Salvador

    Специально для: Pro-Pawn.Ru


    Копирование данной статьи без разрешения автора запрещено!
    Последний раз редактировалось Salvacore; 10.09.2014 в 21:40.

  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Salvador Посмотреть сообщение
    Команда
    PHP код:
        static const fmt_str[] = "[Чат фракции]%s: %s";    
        new 
            
    string[sizeof(fmt_str)-2+MAX_PLAYER_NAME-2+128],
            
    name[MAX_PLAYER_NAME]
        ; 
    Вот к чему это извращение тут? Хотя да, проще написать лишнюю строку, нежели сосчитать 15 символов...
    Или я что-то не понимаю в этом мире, или подобный способ оправдывает себя только когда у нас есть огромное сообщение, раскиданное на несколько строг (дабы компилятор его прожевал) и которое может редактироваться в дальнейшем (правила сервера или список команд, например). А если под каждое короткое сообщение подобное делать, кол-во ненужных строк возрастёт раза в 2, что явно не отразится на читаемости... В общем, как-то вы уж перебарщиваете с этим извращением.

    Лучше бы убрал лишний массив, раз гоняешься за оптимизацией и сделал так
    Цитата Сообщение от Salvador Посмотреть сообщение
    Команда
    PHP код:
    CMD:f(playeridparams[])//DC_CMD

        if(
    sscanf(params"s[128]"params)) 
            return 
    SendClientMessage(playerid, -1"[ВВЕДИ]: (/f) [Текст]"); 
            
        static const 
    fmt_str[] = "[Чат фракции]%s: %s";    
        new 
            
    string[sizeof(fmt_str)-2+MAX_PLAYER_NAME-2+128]
        ; 
        
    GetPlayerName(playerid,string,MAX_PLAYER_NAME);
        
    format(stringsizeof(string),fmt_strstringparams);
        
        
    TeamSendMsg(playerid, -1string); 
        
    SetPlayerChatBubble(playerid,params,-1,20.0,3500); 
        return 
    1

    P.S. Ещё один камень в огород твоего способа подсчёта символов - это ограничения SA-MP. SendClientMessage не прожуёт сообщение больше 144 символов, а у тебя массив явно за 144 ячейки переваливает :)
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    static const fmt_str[] = "[Чат фракции]%s: %s";
    new
    string[sizeof(fmt_str)-2+MAX_PLAYER_NAME-2+128],
    name[MAX_PLAYER_NAME]
    ;
    Чего вы так за ячейками гоняетесь? И без того известно, что в чат больше 128 символов не уйдет.

  4. #4
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    Чего вы так за ячейками гоняетесь? И без того известно, что в чат больше 128 символов не уйдет.
    Я делаю так, чтобы не нагружать мод, вдруг у них RLS.
    А я тебя не оскорблял.

  5. #5
    Аватар для Nazarik
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.09.2013
    Адрес
    Ukraine | Lvov
    Сообщений
    20
    Репутация:
    11 ±
    Цитата Сообщение от Salvador Посмотреть сообщение
    PHP код:
        if(sscanf(params"s[128]"params)) 
            return 
    SendClientMessage(playerid, -1"[ВВЕДИ]: (/f) [Текст]"); 
    Бред...

    Лучше уж:
    PHP код:

    if(isnull(params)) return SendClientMessage(playerid, -1"[ВВЕДИ]: (/f) [Текст]"); 
    // ну или if(strlen(params) < 1) 
    макрос:
    PHP код:
    #define isnull(%1) \
        
    (((%1[0]) == 0) || ((%1[0]) == '\1') && ((%1[1]) == 0)) 

  6. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Salvador Посмотреть сообщение
    Я делаю так, чтобы не нагружать мод, вдруг у них RLS.
    А я тебя не оскорблял.
    Ты напечатал более 50 символов ради того, чтоб не считать 15... И после этого ты что-то на людей с P-I говоришь...
    Нравится насиловать себя и свой код - пожалуйста. Только не продвигайте это в массы
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    Цитата Сообщение от Nazarik Посмотреть сообщение
    Бред...

    Лучше уж:
    PHP код:

    if(isnull(params)) return SendClientMessage(playerid, -1"[ВВЕДИ]: (/f) [Текст]"); 
    // ну или if(strlen(params) < 1) 
    макрос:
    PHP код:
    #define isnull(%1) \
        
    (((%1[0]) == 0) || ((%1[0]) == '\1') && ((%1[1]) == 0)) 
    PHP код:
    if( !strlenparams ) )
    return 
    false
    Не?

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

    Статус
    Оффлайн
    Регистрация
    11.09.2013
    Адрес
    Ukraine | Lvov
    Сообщений
    20
    Репутация:
    11 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    PHP код:
    if( !strlenparams ) )
    return 
    false
    Не?
    Можна и так, но вроде в этом случае выведет сообщения "SERVER: Unknown Command".

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

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    Цитата Сообщение от Nazarik Посмотреть сообщение
    Можна и так, но вроде в этом случае выведет сообщения "SERVER: Unknown Command".
    Я как пример привёл же...

  10. #10
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Update.

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

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

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

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

Ваши права

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