Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 3 из 4 ПерваяПервая 1 2 3 4 ПоследняяПоследняя
Показано с 21 по 30 из 38

Тема: /do

  1. #21
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от Иван Бубнов Посмотреть сообщение
    Тогда будет правильнее так, наверное
    PHP код:
    CMD:do(playeridparams[])
    {
        
    #if defined sscanf
            
    if (sscanf(params"s[124]"params))
        
    #else
            
    if (isnull(params))
        
    #endif
        
    {
            return 
    SendClientMessage(playerid, -1, !"Введите: /do <текст>");
        }

        new
            
    Float:PosXFloat:PosYFloat:PosZ,
            
    worldinterior,
            
    name[MAX_PLAYER_NAME], string[MAX_CHATBUBBLE_LENGTH+1];

        
    GetPlayerPos(playeridPosXPosYPosZ);
        
    GetPlayerName(playeridnamesizeof(name));

        
    world GetPlayerVirtualWorld(playerid);
        
    interior GetPlayerInterior(playerid);

        
    #if defined sscanf
            
    strcat(stringparams[0]);
        
    #else
            
    strcat(stringparams);
        
    #endif
        
    strcat(string" (");
        
    strcat(stringname);
        
    strcat(string")");

        
    #if defined foreach
            
    foreach(new Player)
            {
        
    #else
            
    for(new GetPlayerPoolSize(); != -1i--)
            {
                if ((
    == IsPlayerConnected(i))
                ||  (
    != IsPlayerNPC(i))) continue;
        
    #endif
            
    if(== IsPlayerInRangeOfPoint(i15.0PosXPosYPosZ)) continue;
            if((
    GetPlayerVirtualWorld(i) != world )
            || (
    GetPlayerInterior(i) != interior)) continue;

            
    SendClientMessage(i0xE600FFFFstring);
        }
        
    #if defined sscanf
            
    SetPlayerChatBubble(playeridparams[0], 0xE600FFFF30.010000);
        
    #else
            
    SetPlayerChatBubble(playeridparams0xE600FFFF30.010000);
        
    #endif
        
    return 1;

    Не, только хуже и ты так вроде только первый символ строки покажешь

  2. #22
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    Не, только хуже и ты так вроде только первый символ строки покажешь
    ай лол, тогда sscanf там не уместен.

  3. #23
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Обновил

  4. #24
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Обновил

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Можете реализовать команду без использования функции strcat?

  6. #26
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Можете реализовать команду без использования функции strcat?
    PHP код:
    CMD:do(playeridparams[])
    {
        if (
    isnull(params))
            return 
    SendClientMessage(playerid, -1, !"Введите: /do <текст>");
        new
            
    Float:PosXFloat:PosYFloat:PosZworldinterior,
            
    string[MAX_CHATBUBBLE_LENGTH+1];

        
    GetPlayerPos(playeridPosXPosYPosZ);
        
    GetPlayerName(playeridstringsizeof(string));

        
    world GetPlayerVirtualWorld(playerid);
        
    interior GetPlayerInterior(playerid);
       
        
    format(stringsizeof(string), "%s (%s)"paramsstring);

        
    #if defined foreach
            
    foreach(new Player)
            {
        
    #else
            
    for(new = -1; ++!= GetPlayerPoolSize();)
            {
                if ((
    == IsPlayerConnected(i))
                ||  (
    != IsPlayerNPC(i))) continue;
        
    #endif
            
    if(== IsPlayerInRangeOfPoint(i15.0PosXPosYPosZ)) continue;
            if((
    GetPlayerVirtualWorld(i) != world )
            || (
    GetPlayerInterior(i) != interior)) continue;

            
    SendClientMessage(i0xE600FFFFstring);
        }
        
    SetPlayerChatBubble(playeridparams0xE600FFFF30.010000);
        return 
    1;


  7. #27
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    1. Используй упакованные строки, ибо strcat позволяет это сделать.
    PHP код:
    string[MAX_CHATBUBBLE_LENGTH+1 char]; 
    PHP код:
    strcat(stringparams);
        
    strcat(string, !" (");
        
    strcat(stringname);
        
    strcat(string, !")"); 
    2. Использовать функцию GetPlayerPoolSize при каждой итерации - плохо.
    PHP код:
    for(new = -1; ++!= GetPlayerPoolSize();) 
    3. Не стоит забывать о тех, кто ещё сидит на версии 0.3e.
    PHP код:
    #if defined foreach
        
    foreach (new iPlayer)
    #else
        #if defined GetPlayerPoolSize
            
    for (new GetPlayerPoolSize(); --!= -1;)
        
    #else
            
    for (new = -1; ++!= MAX_PLAYERS;)
        
    #endif
            
    if (IsPlayerConnected(i) == || IsPlayerNPC(i) != 0) continue;
            else
    #endif
        
    {} 
    UPD:

    PHP код:
    CMD:do(playeridparams[])
    {
        if (
    isnull(params))
            return 
    SendClientMessage(playerid, -1, !"Введите: /do <текст>");
        new
            
    Float:PosXFloat:PosYFloat:PosZworldinterior,
            
    name[MAX_PLAYER_NAME], string[MAX_CHATBUBBLE_LENGTH+1 char];

        
    GetPlayerPos(playeridPosXPosYPosZ);
        
    GetPlayerName(playeridnamesizeof(name));

        
    world GetPlayerVirtualWorld(playerid);
        
    interior GetPlayerInterior(playerid);

        
    strcat(stringparams);
        
    strcat(string, !" (");
        
    strcat(stringname);
        
    strcat(string, !")");

    #if defined foreach
        
    foreach(new iPlayer)
    #else
        #if defined GetPlayerPoolSize
        
    for(new GetPlayerPoolSize() + 1; --!= -1;)
        
    #else
        
    for(new = -1; ++!= MAX_PLAYERS;)
        
    #endif
            
    if ((== IsPlayerConnected(i)) || (!= IsPlayerNPC(i))) continue;
        else
    #endif
        
    {
            if(
    == IsPlayerInRangeOfPoint(i15.0PosXPosYPosZ)) continue;
            if((
    GetPlayerVirtualWorld(i) != world )
            || (
    GetPlayerInterior(i) != interior)) continue;

            
    SendClientMessage(i0xE600FFFFstring);
        }
        
    SetPlayerChatBubble(playeridparams0xE600FFFF30.010000);
        return 
    1;

    Последний раз редактировалось VVWVV; 19.03.2016 в 18:53.

  8. Пользователь сказал cпасибо:
    Иван Бубнов (19.03.2016)
  9. #28
    Аватар для NewGreen
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.09.2014
    Сообщений
    61
    Репутация:
    44 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    3. Не стоит забывать о тех, кто ещё сидит на версии 0.3e.
    PHP код:
    #if defined foreach
        
    foreach (new iPlayer)
    #else
        #if defined GetPlayerPoolSize
            
    for (new GetPlayerPoolSize(); --!= -1;)
        
    #else
            
    for (new = -1; ++!= MAX_PLAYERS;)
        
    #endif
            
    if (IsPlayerConnected(i) == || IsPlayerNPC(i) != 0) continue;
            else
    #endif
        
    {} 
    Использовать for в такой извращенной форме плохо, когда есть уже готовые решения:

    PHP код:
    for(new 0GetPlayerPoolSize(); <= ji++) 
    а сейчас что мы имеем:

    GetPlayerPoolSize() - согласно wiki -Gets the highest playerid currently in use on the server. - т.е. получает самый старший playerid который используется в настоящее время на сервере.

    Допустим старший ID у нас 10:

    Запускаем код:
    PHP код:
    for (new 10/*GetPlayerPoolSize()*/; --!= -1;)
        
    printf("i = %d"i); 
    Получаем:

      Открыть/закрыть
    Код:
    i = 9
    i = 8
    i = 7
    i = 6
    i = 5
    i = 4
    i = 3
    i = 2
    i = 1
    i = 0


    т.е. ID номер 10 исключается из цикла.
    Последний раз редактировалось NewGreen; 19.03.2016 в 18:52.

  10. #29
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Обновлено

    - - - Добавлено - - -

    Цитата Сообщение от NewGreen Посмотреть сообщение
    Использовать for в такой извращенной форме плохо, когда есть уже готовые решения:

    PHP код:
    for(new 0GetPlayerPoolSize(); <= ji++) 
    Обоснуй

  11. #30
    Аватар для NewGreen
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.09.2014
    Сообщений
    61
    Репутация:
    44 ±
    Цитата Сообщение от Иван Бубнов Посмотреть сообщение
    Обновлено

    - - - Добавлено - - -



    Обоснуй
    см. спойлер в моем сообщении выше

 

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

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

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

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

Ваши права

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