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

    Статус
    Оффлайн
    Регистрация
    21.12.2016
    Адрес
    Орша, Беларусь
    Сообщений
    26
    Репутация:
    1 ±

    Можно ли подробнее про format

    Привет ребят! Я вот читал про format, но так и не понял что к чему format(string, sizeof(string), "И тут текст", а вот тут что пишется и для чего? 1 аргумент это имя строки format( string(1), sizeof(типо за длинну строки отвечает, тут пишем название строки т.е string), "Далее сам текст", а после текста что должно быть?)Вообще объясните пожалуйста что тут на чем в этом format, ибо функция тоже важная.
    Допустим у нас есть код
    PHP код:
    format(stringsizeof(string), "%s валяется от смеха"GN(playerid)); 
    для чего после текста стоит GN(playerid)? Для того что бы показать кто в чате от смеха валяется? Почему тогда без него не покажет? И еще вопрос по поводу params[], как его использовать и где указывать? Допустим
    PHP код:
    cmd:ban(playeridparams[])) 
    И раз я уже задел params[], то sscanf тоже задену, это самые важные вопросы которые меня мучают: format, params[], sscanf, как и что и для чего их используют? Желательно объяснять подробнее, ибо может не дойти сразу, и с примерами показывайте, заранее спасибо.
    Последний раз редактировалось Mike_World; 24.12.2016 в 12:06.
    Мои работы:


    _______________________________
    Не будь как все, выделяйся из стада.

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

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    Далее идут имена переменных по очередности как теги в тексте.

    Для примера берем ваш код
    PHP код:
    format(stringsizeof(string), "%s валяется от смеха"GN(playerid)); 
    %s -это подобие ссылки на переменную GN(playerid)

    При форматировании данного текста и вывода его в чат
    нам покажет "Mike_World валяется от смеха"

    Mike_World - это ник игрока который был записан в данную переменную

    Таким образом можно форматировать любую информацию
    Например
    PHP код:
    format(stringsizeof(string), "Ваш ник: %s, Ваш ID:%i, Ваш Скин:%i"GN(playerid), id(playerid), GetPlayerSkin(playerid)); 
    Важно: Переменные должны соблюдать очередность как и теги в тексте.

    Форматы тегов:
    %s - Строка
    %i - Целое число
    %d - Целое число
    %f - исло с плавающей точкой

    Wiki: http://wiki.sa-mp.com/wiki/Format
    Последний раз редактировалось [ForD]; 24.12.2016 в 17:16.
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

  3. Пользователь сказал cпасибо:
    Mike_World (24.12.2016)
  4. #3
    Аватар для Mike_World
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.12.2016
    Адрес
    Орша, Беларусь
    Сообщений
    26
    Репутация:
    1 ±
    Цитата Сообщение от [ForD] Посмотреть сообщение
    Далее идут имена переменных по очередности как теги в тексте.

    Для примера берем ваш код
    PHP код:
    format(stringsizeof(string), "%s валяется от смеха"GN(playerid)); 
    %s -это подобие ссылки на переменную GN(playerid)

    При форматировании данного текста и вывода его в чат
    нам покажет "Mike_World валяется от смеха"

    Mike_World - это ник игрока которое было записанно в данную переменную

    Таким образом можно форматировать любую информацию
    Например
    PHP код:
    format(stringsizeof(string), "Ваш ник: %s, Ваш ID:%i,Ваш Скин:%i"GN(playerid), id(playerid), GetPlayerSkin(playerid)); 
    Важно: Переменные должны соблюдать очередность как и теги в тексте.

    Форматы тегов:
    %s - Строка
    %i - Целое число
    %d - Целое число
    %f - исло с плавающей точкой

    Wiki: http://wiki.sa-mp.com/wiki/Format
    Спасибо, а про
    PHP код:
    params[] 
    и
    PHP код:
    sscanf 
    можете так же разъяснить ?
    Мои работы:


    _______________________________
    Не будь как все, выделяйся из стада.

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от Mike_World Посмотреть сообщение
    Спасибо, а про
    PHP код:
    params[] 
    Обычный строковый аргумент, куда zcmd и все ему подобные обрезают то, что идёт после /команды.
    Т.е. вот пример что будет в params в зависимости от того, что вводит игрок:
    Код HTML:
    Ввод:
    /ban 55 3 Отдохните
    
    Содержимое params при вызове CMD:ban:
    55 3 Отдохните
    
    
    Ввод:
    /ban jkhfdgdkjfhgkjdfhgjf
    
    Содержимое params при вызове CMD:ban:
    jkhfdgdkjfhgkjdfhgjf
    
    
    Ввод:
    /ban              4 8 15 16 23 42
    
    Содержимое params при вызове CMD:ban:
    4 8 15 16 23 42
    
    
    Ввод:
    /ban
    
    Содержимое params при вызове CMD:ban:
    \1
    Как видно, в параметры идёт текст после самой команды и пробела, если же команда введена без параметров - params содержит символ '\1' (лучше также проверять и на пустоту вообще).

    Цитата Сообщение от Mike_World Посмотреть сообщение
    и
    PHP код:
    sscanf 
    можете так же разъяснить ?
    sscanf же тесно связан с предыдущим вопросом: он нужен уже для разделения параметров из строки params в отдельные переменные, альтернатива strtok по сути.
    Имеет свой синтаксис, так что за описанием лучше пойти в официальную тему, либо почитать её перевод.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

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

    Статус
    Оффлайн
    Регистрация
    21.12.2016
    Адрес
    Орша, Беларусь
    Сообщений
    26
    Репутация:
    1 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Обычный строковый аргумент, куда zcmd и все ему подобные обрезают то, что идёт после /команды.
    Т.е. вот пример что будет в params в зависимости от того, что вводит игрок:
    Код HTML:
    Ввод:
    /ban 55 3 Отдохните
    
    Содержимое params при вызове CMD:ban:
    55 3 Отдохните
    
    
    Ввод:
    /ban jkhfdgdkjfhgkjdfhgjf
    
    Содержимое params при вызове CMD:ban:
    jkhfdgdkjfhgkjdfhgjf
    
    
    Ввод:
    /ban              4 8 15 16 23 42
    
    Содержимое params при вызове CMD:ban:
    4 8 15 16 23 42
    
    
    Ввод:
    /ban
    
    Содержимое params при вызове CMD:ban:
    \1
    Как видно, в параметры идёт текст после самой команды и пробела, если же команда введена без параметров - params содержит символ '\1' (лучше также проверять и на пустоту вообще).


    sscanf же тесно связан с предыдущим вопросом: он нужен уже для разделения параметров из строки params в отдельные переменные, альтернатива strtok по сути.
    Имеет свой синтаксис, так что за описанием лучше пойти в официальную тему, либо почитать её перевод.
    А можно пример с использование sscanf и params, а потом и то и другое вместе, только пожалуйста подробно объясните.

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

    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Обычный строковый аргумент, куда zcmd и все ему подобные обрезают то, что идёт после /команды.
    Т.е. вот пример что будет в params в зависимости от того, что вводит игрок:
    Код HTML:
    Ввод:
    /ban 55 3 Отдохните
    
    Содержимое params при вызове CMD:ban:
    55 3 Отдохните
    
    
    Ввод:
    /ban jkhfdgdkjfhgkjdfhgjf
    
    Содержимое params при вызове CMD:ban:
    jkhfdgdkjfhgkjdfhgjf
    
    
    Ввод:
    /ban              4 8 15 16 23 42
    
    Содержимое params при вызове CMD:ban:
    4 8 15 16 23 42
    
    
    Ввод:
    /ban
    
    Содержимое params при вызове CMD:ban:
    \1
    Как видно, в параметры идёт текст после самой команды и пробела, если же команда введена без параметров - params содержит символ '\1' (лучше также проверять и на пустоту вообще).


    sscanf же тесно связан с предыдущим вопросом: он нужен уже для разделения параметров из строки params в отдельные переменные, альтернатива strtok по сути.
    Имеет свой синтаксис, так что за описанием лучше пойти в официальную тему, либо почитать её перевод.
    PHP код:
    CMD:podarok(playerid)
    {
        if(
    PI[playerid][pLogged] == || PI[playerid][pRegister] == 0) return SCM(playerid, -1"{ff0000}[X] Вы не авторизованы на сервере");
        if(
    PI[playerid][pBonus] == 0)
        {
            
    GivePlayerMoney(playerid100000);
            new 
    podarok[41];
            
    format(podaroksizeof(podarok), "%s вам выдали подарок в размере 100.000$"GN(playerid));
        }
        else
        {
            
    SCM(playerid, -1"Вы уже получали подарок!");
        }
        return 
    1;

    Правильно использовал format? Только в игре не выводит что то сообщения, только деньги дает и забирает сразу.
    Последний раз редактировалось Mike_World; 24.12.2016 в 13:28.
    Мои работы:


    _______________________________
    Не будь как все, выделяйся из стада.

  7. #6
    Аватар для Пельмень
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.12.2013
    Сообщений
    188
    Репутация:
    116 ±
    PHP код:
    new podarok[128];
    format(podaroksizeof(podarok), "%s вам выдали подарок в размере 100.000$"GN(playerid));
    SendClientMessage (playerid, -1podarok); 

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

    Статус
    Оффлайн
    Регистрация
    22.01.2016
    Сообщений
    40
    Репутация:
    7 ±
    Цитата Сообщение от Mike_World Посмотреть сообщение
    А можно пример с использование sscanf и params, а потом и то и другое вместе, только пожалуйста подробно объясните.

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

    PHP код:
    CMD:podarok(playerid)
    {
        if(
    PI[playerid][pLogged] == || PI[playerid][pRegister] == 0) return SCM(playerid, -1"{ff0000}[X] Вы не авторизованы на сервере");
        if(
    PI[playerid][pBonus] == 0)
        {
            
    GivePlayerMoney(playerid100000);
            new 
    podarok[41];
            
    format(podaroksizeof(podarok), "%s вам выдали подарок в размере 100.000$"GN(playerid));
        }
        else
        {
            
    SCM(playerid, -1"Вы уже получали подарок!");
        }
        return 
    1;

    Правильно использовал format? Только в игре не выводит что то сообщения, только деньги дает и забирает сразу.
    PHP код:
    static const str_format_text[] =
        
    "%s Вам выдали продарок в размере $100.000";
    new
        
    string[sizeof str_format_text + (-MAX_PLAYER_NAME)];
    format(stringsizeof stringstr_format_textGN(playerid));

    return 
    SendClientMessage(playerid, -1string); 
    Советую почитать урок по "правильному" подсчету размера строки.

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

    Статус
    Оффлайн
    Регистрация
    05.12.2013
    Сообщений
    188
    Репутация:
    116 ±
    Цитата Сообщение от middlematt Посмотреть сообщение
    PHP код:
    static const str_format_text[] =
        
    "%s Вам выдали продарок в размере $100.000";
    new
        
    string[sizeof str_format_text + (-MAX_PLAYER_NAME)];
    format(stringsizeof stringstr_format_textGN(playerid));

    return 
    SendClientMessage(playerid, -1string); 
    Советую почитать урок по "правильному" подсчету размера строки.
    2017 год, подсчитываем размер строки. Можно огнетушитель, пожалуйста?

  10. Пользователь сказал cпасибо:
    Nexius_Tailer (24.12.2016)
  11. #9
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    В 2017 году, по версии Пельменя, принято делать так, если вы не в теме
    PHP код:
    new string[1024];
    format(stringsizeof(string), "%s Вам выдали подарок в размере $100.000"GN(playerid));
    return 
    SendClientMessage(playerid, -1string); 
    Своеобразный возврат в 2007 год :3
    Последний раз редактировалось DeimoS; 24.12.2016 в 17:49.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  12. 2 пользователя(ей) сказали cпасибо:
    $continue$ (25.12.2016) [ForD] (24.12.2016)
  13. #10
    Аватар для Пельмень
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.12.2013
    Сообщений
    188
    Репутация:
    116 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    В 2017 году, по версии Пельменя, принято делать так, если вы не в теме
    PHP код:
    new string[1024];
    format(stringsizeof(string), "%s Вам выдали подарок в размере $100.000"GN(playerid));
    return 
    SendClientMessage(playerid, -1string); 
    Своеобразный возврат в 2007 год :3
    В 2017 году по версии Пельменя, принято делать так, если вы не в теме
    PHP код:
    va_SendClientMessage(palyerid, -1"%s Вам выдали подарок в размере $100.000", (GetPlayerName((playerid), Q@, 24), Q@)); 
    Последний раз редактировалось Пельмень; 31.12.2016 в 12:20.

 

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

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

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

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

Ваши права

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