Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 8 из 8
  1. #1
    Аватар для StevenH
    Пользователь

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

    Время (что то типа /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
    Сообщений
    151
    Репутация:
    17 ±
    DELETED.
    Мои глаза от твоего кода лезут на гавно-инфо и создают тему о расстановке пикапов.

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

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

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

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    469
    Репутация:
    13 ±
    Цитата Сообщение от 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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Нажал спасибо, за старание, но.. либо я ты не понял, либо я :).

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

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

    Steve Pavlina

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

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

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

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

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

    Steve Pavlina

 

 

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

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

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

Ваши права

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