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

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




    К большому сожалению я не смог вызвать данный краш. CrashDetec молчит. Покажи как вызвать?
    А вот при тестировании на хостинге, у меня, к сожалению, происходит краш. Если windows как-то "игнорирует" такие дыры в коде, то на том же линуксе у тебя не пройдет такая операция.

    Всё будет отлично, если убрать проверку где используется макрос "isnull".

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

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    133
    Репутация:
    4 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Насиловать стек? Пожалуйста. В pawn крайне не рекомендуется возвращать строки.
    Я имел ввиду ( return true/false )
    PHP код:
    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);
        return 
    true;

    Pro-pawn.ru

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

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

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

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    А не проще ли использовать в аргументах функции ссылки?

    PHP код:
    stock AFK_TimeConvetr(value, &hour, &minute, &second)
    {
        
    hour floatround(value 3600);
        
    minute floatround((value 60) - (hour 60));
        
    second floatround(value - ((hour 3600) + (minute 60)));
    }

    main()
    {
        new 
    afk_time;

        
    afk_time 61;

        new 
    afk_time_hafk_time_mafk_time_s;

        
    AFK_TimeConvetr(afk_timeafk_time_hafk_time_mafk_time_s);

        if (
    afk_time_h 0)
            
    printf("Игрок на паузе уже %02i:%02i:%02i"afk_time_hafk_time_mafk_time_s);
        else
            
    printf("Игрок на паузе уже %02i:%02i"afk_time_mafk_time_s);


  5. #15
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    У ТС принято записывать секунды полученные с таймера, а с вашим примером придётся вызывать функцию gettime (При использовании данной функций, потребность вашей функции пропадает, так как при использовании gettime мы можем получить время: в часах, в минутах, в секундах), после чего записывать в переменную, а после передавать их в функцию.
    Также вместо макроса isnull мы можем определять размер аргумента output, например (альтернативный вариант):
    PHP код:
    stock
        AnotherFunction
    (output[], size sizeof output)
        {
            if (
    size == 1) print("-- null --");
            else print(
    "-- not null --");
            return;
        }

    main()
    {
        
    AnotherFunction(""); // Result: -- null --
        
    AnotherFunction("1"); // Result: -- not null --


    Цитата Сообщение от Untonyst Посмотреть сообщение
    А не проще ли использовать в аргументах функции ссылки?
    Конечно можно, однако:
    Цитата Сообщение от Unreal Посмотреть сообщение
    Есть ли способы кроме ссылок и возврат. строки

    Идеальная функция получилась только у пользователя $continue$:

    Цитата Сообщение от $continue$ Посмотреть сообщение
    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);


  6. 2 пользователя(ей) сказали cпасибо:
    $continue$ (21.12.2015) Unreal (28.12.2015)
 

 
Страница 2 из 2 ПерваяПервая 1 2

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

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

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

Ваши права

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