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

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    123
    Репутация:
    4 ±

    есть ли альтернатив для Convert

    Всем привет
    В это коде возвращается строка, а как можно его избежать или как подругому использовать ?
    Есть ли способы кроме ссылок и возврат. строки
    PHP код:
    stock Convert(number)
    {
        new 
    hours 0,mins 0secs 0string[32];
        
    hours floatround(number 3600);
        
    mins floatround((number 60) - (hours 60));
        
    secs floatround(number - ((hours 3600) + (mins 60)));
        if(
    hours 0format(string,sizeof string"%dH:%02dM:%02dS"hoursminssecs);
        else 
    format(stringsizeof string"%d:%02d"minssecs);
        return 
    string;

    PHP код:
    format(string,sizeof(string),"AFK %s",Convert(AFK[playerid][AFK_Time]-3));
                    
    SetPlayerChatBubble(playerid,string,COLOR_ORANGE,30.0,3000); 
    Pro-pawn.ru

  2. #2
    Аватар для $continue$
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,467
    Репутация:
    265 ±
    ofс, можно.
    К препроцессорам:
    PHP код:
    #if !defined isnull
        #define isnull(%0) \
                    
    (strcmp(%0,"NULL",false) == 0)
    #endif 
    PHP код:

    /*! Конвертирует время для AFK
     * \param [in] number − время (в секундах)
     * \param [out] output − преобразованое значение 
     * \param [in] length − размер массива output
     */
    stock ConvertTimeForAFK(numberoutput[], length sizeof(output))
    {
        if(!
    isnull(output))
        {
            
    output[0] = '\0';
        }
        new 
    string[18];
        if(
    number 3599format(stringsizeof(string), "Íà ïàóçå %d:%02d:%02d"number 3600number 3600/60number 3600 60);
        else if(
    number 59format(stringsizeof(string), "Íà ïàóçå %d:%02d"number 60number 60);
        else 
    format(stringsizeof(string), "Íà ïàóçå %d ñåê."number);
        
    strins(outputstring0length);

    PHP код:
    main()
    {
        new 
    result[18];
        
    ConvertTimeForAFK(6000result);
        print(
    result);



    Вариант с 1 массивом:
    PHP код:
    main()
    {
        new 
    result[18];
        
    ConvertTimeForAFK(84000result);
        print(
    result);

    PHP код:
    stock ConvertTimeForAFK(numberoutput[], length sizeof(output))
    {
        if(!
    isnull(output))
        {
            
    output[0] = '\0';
        }
        if(
    number 3599format(outputlength"На паузе %d:%02d:%02d"number 3600number 3600/60number 3600 60);
        else if(
    number 59format(outputlength"На паузе %d:%02d"number 60number 60);
        else 
    format(outputlength"На паузе %d сек."number);

     Скрин
    Последний раз редактировалось $continue$; 20.12.2015 в 17:04.

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

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    123
    Репутация:
    4 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    ofс, можно.
    PHP код:

    /*! Конвертирует время для AFK
     * \param [in] number − время (в секундах)
     * \param [out] output − преобразованое значение 
     * \param [in] length − размер массива output
     */
    stock ConvertTimeForAFK(numberoutput[] = "\0"length sizeof(output))
    {
        new 
    string[18];
        if(
    number 3599format(stringsizeof(string), "На паузе %d:%02d:%02d"number 3600number 3600/60number 3600 60);
        else if(
    number 59format(stringsizeof(string), "На паузе %d:%02d"number 60number 60);
        else 
    format(stringsizeof(string), "На паузе %d сек."number);
        
    strins(outputstring0length);

    PHP код:
    main()
    {
        new 
    result[18];
        
    ConvertTimeForAFK(6000result);
        print(
    result);

    а можно ему что либо возвращать ?
    Pro-pawn.ru

  4. #4
    Аватар для $continue$
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,467
    Репутация:
    265 ±
    Цитата Сообщение от Unreal Посмотреть сообщение
    а можно ему что либо возвращать ?
    Кому? Для какой цели?

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,360
    Репутация:
    768 ±
    Цитата Сообщение от Unreal Посмотреть сообщение
    а можно ему что либо возвращать ?
    Насиловать стек? Пожалуйста. В pawn крайне не рекомендуется возвращать строки.
    Используйте вариант, который вам был предложен от $continue, он более менее нормальный ( btw, можно было использовать 1 массив ).

  6. Пользователь сказал cпасибо:
    $continue$ (20.12.2015)
  7. #6
    Аватар для $continue$
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,467
    Репутация:
    265 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Насиловать стек? Пожалуйста. В pawn крайне не рекомендуется возвращать строки.
    Используйте вариант, который вам был предложен от $continue, он более менее нормальный ( btw, можно было использовать 1 массив ).
    Окей. Обновил пост.

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,360
    Репутация:
    768 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Окей. Обновил пост.
    Только сейчас заметил, почему 2 аргумент необязателен? Если его пропустить то можно словить краш сервера.

  9. 2 пользователя(ей) сказали cпасибо:
    $continue$ (20.12.2015)VVWVV (20.12.2015)
  10. #8
    Аватар для $continue$
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,467
    Репутация:
    265 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Только сейчас заметил, почему 2 аргумент необязателен? Если его пропустить то можно словить краш сервера.
    Бывает.
    P.S: Fix.

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Сообщений
    1,360
    Репутация:
    768 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Бывает.
    P.S: Fix.
    Теперь, если массив не пустой, то первая ячейка этого массива будет концом строки => снова краш.
    Мне кажется тут без проверки будет лучше?
    Последний раз редактировалось L0ndl3m; 20.12.2015 в 18:01.

  12. #10
    Аватар для $continue$
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,467
    Репутация:
    265 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Теперь, если массив не пустой, то первая ячейка этого массива будет концом строки => снова краш.
    Мне кажется тут без проверки будет лучше?
      Открыть/закрыть




    К большому сожалению я не смог вызвать данный краш. CrashDetec молчит. Покажи как вызвать?

 

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

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

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

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

Ваши права

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