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

Тема: Sscanf

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

    Статус
    Оффлайн
    Регистрация
    03.05.2013
    Сообщений
    258
    Репутация:
    6 ±

    Sscanf

    Всем привет, хочу узнать как в команде сделать 1 необязательный параметр? сама команда с 1 параметром. То есть я ввожу /commands id игрока. Мне надо чтобы id игрока было необязательным.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Если команда на ZCMD/DC_CMD и в ней всего один параметр, то достаточно просто проверить строку params на пустоту.
    PHP код:
    CMD:commands(playeridparams[])
    {
        if (
    params[0] == '\0')
        {
            
    // ...
        
    }
        
    // ...

    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  3. #3
    Аватар для Gressie
    Пользователь

    Статус
    Оффлайн
    Регистрация
    03.05.2013
    Сообщений
    258
    Репутация:
    6 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Если команда на ZCMD/DC_CMD и в ней всего один параметр, то достаточно просто проверить строку params на пустоту.
    PHP код:
    CMD:commands(playeridparams[])
    {
        if (
    params[0] == '\0')
        {
            
    // ...
        
    }
        
    // ...

    А если например: команда выглядела вот так:
    PHP код:
    CMD:commands(playeridparams[])
    {
    if(
    sscanf(params"u"params[0])) return SendClientMessage(playerid, -1"Введите: /commands [id игрока]");

    // Тут действия
     
    return 1;

    Как оно должно выглядеть сейчас? Если я не укажу ID то другие действия чтоб были.

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

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от Maks5 Посмотреть сообщение
    А если например: команда выглядела вот так:
    Код:
    CMD:commands(playerid, params[])
    {
    if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, -1, "Введите: /commands [id игрока]");
    
    // Тут действия
     return 1;
    }
    Как оно должно выглядеть сейчас? Если я не укажу ID то другие действия чтоб были.
    Если сделать без возврата единицы в условии, то команда дальше будет работать, но сообщение будет мелькать.

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

    Статус
    Оффлайн
    Регистрация
    03.05.2013
    Сообщений
    258
    Репутация:
    6 ±
    Ещё вопрос:
    Имеется email адрес, он показывается в textdraw соответственно. Как сделать чтобы показывалась часть этого email адреса? В виде login. Полный адрес [email protected]

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Maks5 Посмотреть сообщение
    Ещё вопрос:
    Имеется email адрес, он показывается в textdraw соответственно. Как сделать чтобы показывалась часть этого email адреса? В виде login. Полный адрес [email protected]
    Вы как-то проверяете правильность адреса?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Набросал "функцию", работает :)

    PHP код:
    stock HidePlayerMain(email[])
    {
        for(new 
    istrfind(email"@"true); i++)
        {
            
    email[i] = '*';
        }
    }

    main()
    {
        new 
    str_1[128] = "[email protected]";
        
    printf("[До] %s"str_1);
        
    HidePlayerMain(str_1);
        
    printf("[После] %s"str_1);


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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Набросал "функцию", работает :)

    PHP код:
    stock HidePlayerMain(email[])
    {
        for(new 
    istrfind(email"@"true); i++)
        {
            
    email[i] = '*';
        }
    }

    main()
    {
        new 
    str_1[128] = "[email protected]";
        
    printf("[До] %s"str_1);
        
    HidePlayerMain(str_1);
        
    printf("[После] %s"str_1);

    strfind вызывается на каждой итерации, когда можно всего один раз узнать нужную позицию.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    03.05.2013
    Сообщений
    258
    Репутация:
    6 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Вы как-то проверяете правильность адреса?
    Регулярные выражения

    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    strfind вызывается на каждой итерации, когда можно всего один раз узнать нужную позицию.
    Тогда напишите как правильней.


    Цитата Сообщение от Untonyst Посмотреть сообщение
    Набросал "функцию", работает :)

    PHP код:
    stock HidePlayerMain(email[])
    {
        for(new 
    istrfind(email"@"true); i++)
        {
            
    email[i] = '*';
        }
    }

    main()
    {
        new 
    str_1[128] = "[email protected]";
        
    printf("[До] %s"str_1);
        
    HidePlayerMain(str_1);
        
    printf("[После] %s"str_1);

    Я просил чтобы вообще удалялись @domain.ru и показ был только login.

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Могу такой вариант предложить:
    PHP код:
    new
        
    mail_str[32] = "[email protected]",
        
    pos strfind(mail_str"@");

    strmid(mail_strmail_str0, (-== pos) ? sizeof(mail_str) : pos);
    print(
    mail_str); // вывод "login" 
    Последний раз редактировалось L0ndl3m; 19.11.2015 в 16:58.

 

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

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

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

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

Ваши права

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