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

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 18
  1. #1
    Аватар для Salvacore
    Инжунер-погромист

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

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

    Команда
    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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Цитата Сообщение от 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 ячейки переваливает :)
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    560
    Репутация:
    272 ±
    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,282
    Репутация:
    417 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    Чего вы так за ячейками гоняетесь? И без того известно, что в чат больше 128 символов не уйдет.
    Я делаю так, чтобы не нагружать мод, вдруг у них RLS.
    А я тебя не оскорблял.

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

    Статус
    Оффлайн
    Регистрация
    11.09.2013
    Адрес
    Ukraine | Lvov
    Сообщений
    21
    Репутация:
    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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Цитата Сообщение от Salvador Посмотреть сообщение
    Я делаю так, чтобы не нагружать мод, вдруг у них RLS.
    А я тебя не оскорблял.
    Ты напечатал более 50 символов ради того, чтоб не считать 15... И после этого ты что-то на людей с P-I говоришь...
    Нравится насиловать себя и свой код - пожалуйста. Только не продвигайте это в массы
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    560
    Репутация:
    272 ±
    Цитата Сообщение от 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
    Сообщений
    21
    Репутация:
    11 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    PHP код:
    if( !strlenparams ) )
    return 
    false
    Не?
    Можна и так, но вроде в этом случае выведет сообщения "SERVER: Unknown Command".

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

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

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

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

 

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

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

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

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

Ваши права

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