Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 8 из 8
  1. #1
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±

    Время (что то типа /c 060 как на АРП). Хелп)

    Всем доброго времени суток. Многие знают что на адвансе есть онлайн в /c 060 за сегодня/вчера и позавчера.
    Я сделал что то типа в переменной массив pTime[3];

    Тут всё хорошо, но как сделать например в рестарт что то типа такого, до рестарта в базе у одного игрока:
    233,413,311 - это естественно в секундах. И как сделать что бы было так?:

    0,233,413 (тоесть смещение во всех аккаунтах в право на одно число)..

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

    Конечно объяснил от бога, ну я думаю есть представление :(

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

    Даже я мало что понял, что написал. Поэтому напишу ещё раз со скриншотами..
    Вот скриншот с БД, где 3 поля (sscanf с разделителем запятой ,)


    273 это секунды игры за сегодня.
    Как сделать, что бы при рестарте, вот это 273 перешло в право на 1 раз (после запятой).
    Тоесть должно получиться что-то типа такого:
    0,273,-1

  2. #2
    Аватар для Роуди.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.07.2015
    Сообщений
    154
    Репутация:
    17 ±
    DELETED.
    Мои глаза от твоего кода лезут на гавно-инфо и создают тему о расстановке пикапов.

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

    Статус
    Оффлайн
    Регистрация
    29.11.2013
    Сообщений
    69
    Репутация:
    6 ±
    Делай в pTime 2 значения.

    PHP код:
    //пример загрузки
    new TimeGet[8];
    cache_get_field_content(0"pTime",TimeGetbase8); // base = mysql_connect

    sscanf(TimeGet"p<,>ii",pTime[1],pTime[2]);


    // либо делай 3 значения с добавлением 0

    new TimeGet[11];
    cache_get_field_content(0"pTime",TimeGetbase,11); // base = mysql_connect
    new x;
    sscanf(TimeGet"p<,>iiii",x,pTime[0],pTime[1],pTime[2]); 

  4. #4
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Можно попробовать всё автоматизировать :)
    То бишь:
    1) Создай одну переменную и в неё записывай сегодняшнее время (соответственно при входе/выходе работай именно с ячейкой сегодняшнего дня).
    2) В БД создай, помимо 3-х ячеек для записи времени, одну ячейку для записи даты, в которую будешь записывать дату последнего изменения значения.
    3) При каждом выходе с сервера загружай дату последнего изменения и значения всех 3-х ячеек, а далее уже пойдёт формула, типа
    PHP код:
    if(сохранённая_дата == текущая_дата//Можно обе даты разбить на 2 числа: день и месяц, и уже сверять их
    {
        
    //сохраняем в ячейку с сегодняшним временем
    }
    else if(
    текущая_дата-сохранённая_дата == 1)
    {
        
    //В столбец с позавчерашней датой сохраняем значение вчерашней, а в столбец со вчерашней сохраняем значение последней сегодняшней (не обновлённой), а в сегодняшний сохраняем текущее время
    }
    else if(
    текущая_дата-сохранённая_дата == 2)
    {
        
    //В столбец с позавчерашней датой сохраняем значение вчерашней, а в столбец со вчерашней сохраняем значение -1 (не был на сервере), а в сегодняшний сохраняем текущее время
    }
    else
    {
        
    //Игрок не был на сервере больше двух дней, поэтому вчерашнее и позавчерашнее время на -1, а сегодняшнее равно текущему

    Как-то так. Ну с использованием разделителя выйдет даже проще. Просто нужно будет сначала записать все 3 значения отдельно, а потом перетусовывать переменные в нужном порядке.
    Ну и если время надо будет часто отображать, то лучше тогда 3, я думаю, создать 3 переменных, как сделал изначально ты и хранить время в них. Но если ты его будешь, например, чисто в статистике показывать, то лучше подгружать его с помощью запроса, ИМХО.
    Вот. Если что не понятно - спрашивай
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  5. Пользователь сказал cпасибо:
    StevenH (23.01.2016)
  6. #5
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Можно попробовать всё автоматизировать :)
    То бишь:
    1) Создай одну переменную и в неё записывай сегодняшнее время (соответственно при входе/выходе работай именно с ячейкой сегодняшнего дня).
    2) В БД создай, помимо 3-х ячеек для записи времени, одну ячейку для записи даты, в которую будешь записывать дату последнего изменения значения.
    3) При каждом выходе с сервера загружай дату последнего изменения и значения всех 3-х ячеек, а далее уже пойдёт формула, типа
    PHP код:
    if(сохранённая_дата == текущая_дата//Можно обе даты разбить на 2 числа: день и месяц, и уже сверять их
    {
        
    //сохраняем в ячейку с сегодняшним временем
    }
    else if(
    текущая_дата-сохранённая_дата == 1)
    {
        
    //В столбец с позавчерашней датой сохраняем значение вчерашней, а в столбец со вчерашней сохраняем значение последней сегодняшней (не обновлённой), а в сегодняшний сохраняем текущее время
    }
    else if(
    текущая_дата-сохранённая_дата == 2)
    {
        
    //В столбец с позавчерашней датой сохраняем значение вчерашней, а в столбец со вчерашней сохраняем значение -1 (не был на сервере), а в сегодняшний сохраняем текущее время
    }
    else
    {
        
    //Игрок не был на сервере больше двух дней, поэтому вчерашнее и позавчерашнее время на -1, а сегодняшнее равно текущему

    Как-то так. Ну с использованием разделителя выйдет даже проще. Просто нужно будет сначала записать все 3 значения отдельно, а потом перетусовывать переменные в нужном порядке.
    Ну и если время надо будет часто отображать, то лучше тогда 3, я думаю, создать 3 переменных, как сделал изначально ты и хранить время в них. Но если ты его будешь, например, чисто в статистике показывать, то лучше подгружать его с помощью запроса, ИМХО.
    Вот. Если что не понятно - спрашивай
    Нажал спасибо, за старание, но.. либо я ты не понял, либо я :).

    Мне нужно что бы это как то при рестарте дата перемещалась.
    Ведь на адвансе, есть тоже такое. И там если допустим ты за сегодня играл 2 часа, и 2 дня не заходил, то будет что то типа такого.
    0,0,7200 // 7200 - 2 часа
    И не важно, заходил ты или нет.. Это дата как то при рестарте "передвигается"
    Последний раз редактировалось StevenH; 23.01.2016 в 20:54.

  7. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Нажал спасибо, за старание, но.. либо я ты не понял, либо я :).

    Мне нужно что бы это как то при рестарте дата перемещалась.
    Ведь на адвансе, есть тоже такое. И там если допустим ты за сегодня играл 2 часа, и 2 дня не заходил, то будет что то типа такого.
    0,0,7200 // 7200 - 2 часа
    И не важно, заходил ты или нет.. Это дата как то при рестарте "передвигается"
    Я тебе именно то и предлагаю. Только не при рестарте, а при выходе игрока совершать действия над записанным временем. Записываем текущее время и дату, а после сверяем дату последней записи данных в БД с текущей и если они не совпадают - перемещаем
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Я тебе именно то и предлагаю. Только не при рестарте, а при выходе игрока совершать действия над записанным временем. Записываем текущее время и дату, а после сверяем дату последней записи данных в БД с текущей и если они не совпадают - перемещаем
    Ну вот это хорошо, а надо что бы время передвигалось даже если игрок не заходил 2 дня. Как я написал выше пример.
    Например сегодня играл 2 часа (7200 секунд) и стало так, в базе:
    PHP код:
    7200,0,
    А если 2 дня вообще не заходить, ну и зайти, и будет так:
    PHP код:
    0,0,7200 
    Вот не понимаю как так сделать.

  9. #8
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Ну вот это хорошо, а надо что бы время передвигалось даже если игрок не заходил 2 дня. Как я написал выше пример.
    Например сегодня играл 2 часа (7200 секунд) и стало так, в базе:
    PHP код:
    7200,0,
    А если 2 дня вообще не заходить, ну и зайти, и будет так:
    PHP код:
    0,0,7200 
    Вот не понимаю как так сделать.
    Я же дал макет -_- Просто нужно теперь проследовать инструкциям и всё...
    Напишу ещё раз: учёт ведёшь только СЕГОДНЯШНЕГО времени. Так же, при записи в БД, записываешь и дату (хватит записи дня и месяца), когда было внесено изменение. Теперь перед каждым новым сохранением грузишь старые данные и начинаешь сверку дат. Если они равны, значит записываешь в первую ячейку. Отличаются на 1 день - вчерашняя. Два дня - позавчерашняя. Больше двух - записываешь в сегодняшнюю, а остальные отчищаешь. Всё.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

 

 

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

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

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

Ваши права

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