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

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    133
    Репутация:
    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,487
    Репутация:
    276 ±
    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.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    133
    Репутация:
    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

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Цитата Сообщение от Unreal Посмотреть сообщение
    а можно ему что либо возвращать ?
    Кому? Для какой цели?
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

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

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Насиловать стек? Пожалуйста. В pawn крайне не рекомендуется возвращать строки.
    Используйте вариант, который вам был предложен от $continue, он более менее нормальный ( btw, можно было использовать 1 массив ).
    Окей. Обновил пост.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

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

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Только сейчас заметил, почему 2 аргумент необязателен? Если его пропустить то можно словить краш сервера.
    Бывает.
    P.S: Fix.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

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

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

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

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




    К большому сожалению я не смог вызвать данный краш. CrashDetec молчит. Покажи как вызвать?
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  14. Пользователь сказал cпасибо:
    VVWVV (20.12.2015)
 

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

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

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

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

Ваши права

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