Перейти к содержимому


Фотография

Программа для выдачи ежедневных бонусов

конкурс программирование

  • Закрытая тема Тема закрыта
Сообщений в теме: 47

#31 Онлайн   Alex

Alex

    Орден К.А.

  • Автор темы
  • Администраторы
  • 3 063 сообщений

Отправлено 14 Июль 2014 - 15:22

Хмм... Я думаю, что добиться решения недочетов с переходом дат 30-1, 31-1, 29-1 можно добавив 5 дополнительных проверок в механизме проверки выполнения. Механизм вроде должен выглядеть так:

if tonumber(lastlogin)+1==tonumber(getDate()) then
count=totalDays+1
giftDaily(player)
writeAccountData(player, tonumber(getDate()), count)
elseif tonumber(string.sub(tostring(lastlogin))), 7,8)))==30 and tonumber(string.sub(tostring(getDate(), 7, 7))==1 then
--заплатка для случая перехода дат с 30 по 1, где длинна номера месяца больше 10(числа вроде 08 tonumber превращает в 8)
count=totalDays+1
giftDaily(player)
writeAccountData(player, tonumber(getDate()), count).......


Что это?????? Я же написал, как разницу проверять. Скрипт(а точнее комьютер) сам умно вычисляет разницу в астрономических секундах между любыми двумя датами, хоть на столетия вперед и между Днем рождения первого динозавра и полетом Гагарина в космос!!!! То есть компьютер знает календарь:) PHP файл лежит на нашем сайте. Вам нужно только отправить на него http запрос с двумя датами в указаном формате.

Я же написал в 25 посте этой темы. Просто используйте готовую функцию. Секунды разделите на 3600 и потом еще на 24 и округлите вниз, или правильнее наверно взять целую часть, чтобы получить количество целых дней отсутствия.
days_no_visit , _ = math.modf (tonumber(differenceDates(date0, date1))/3600/24)
Получите "0", если времени прошло меньше суток, "1" если день и "трошкы" и т.д.

Если days_no_visit <1 ничего не делаем, если = 1 то записываем в файл новую дату последнего посещения, а к количеству посещений подряд добавляем 1. И так до семи. Потом процесс обнуляем, а также обнуляем счетчик при детектировании зазора между посещениями 2 дня и больше.

Рука-лицо, честное слово.:)


#32 Оффлайн   MelnikovSM

MelnikovSM

    Интересующийся

  • Пользователи
  • Pip
  • 26 сообщений

Отправлено 14 Июль 2014 - 15:31

Ну а я решил сделать так, результат же будет такой-же - тока привязка идет не к часам с момента последнего входа, а к дате.

#33 Оффлайн   Syabro

Syabro

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 282 сообщений

Отправлено 14 Июль 2014 - 16:45

Ну что ж... попробую написать...

#34 Оффлайн   MelnikovSM

MelnikovSM

    Интересующийся

  • Пользователи
  • Pip
  • 26 сообщений

Отправлено 14 Июль 2014 - 16:55

Syabro, если хочешь - можем работать в команде. У меня уже что-то понаписано, осталось добавить выдачу ресов по праздникам и дебажить...

#35 Оффлайн   Syabro

Syabro

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 282 сообщений

Отправлено 14 Июль 2014 - 17:30

Syabro, если хочешь - можем работать в команде. У меня уже что-то понаписано, осталось добавить выдачу ресов по праздникам и дебажить...

Давай :-)

#36 Оффлайн   MelnikovSM

MelnikovSM

    Интересующийся

  • Пользователи
  • Pip
  • 26 сообщений

Отправлено 14 Июль 2014 - 17:34

Syabro, cкайп есть? Или через редкол?

#37 Оффлайн   Syabro

Syabro

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 282 сообщений

Отправлено 14 Июль 2014 - 18:44

Syabro, cкайп есть? Или через редкол?

Скайп есть! syabro98

#38 Оффлайн   MelnikovSM

MelnikovSM

    Интересующийся

  • Пользователи
  • Pip
  • 26 сообщений

Отправлено 14 Июль 2014 - 22:21

в 10-11 по мск го в скайп

#39 Оффлайн   MelnikovSM

MelnikovSM

    Интересующийся

  • Пользователи
  • Pip
  • 26 сообщений

Отправлено 02 Август 2014 - 08:32

Я благополучно прилетел из Египта.... А че конкурс заморозили?

#40 Онлайн   Alex

Alex

    Орден К.А.

  • Автор темы
  • Администраторы
  • 3 063 сообщений

Отправлено 02 Август 2014 - 08:38

Я благополучно прилетел из Египта....
А че конкурс заморозили?


Нет, "заморозились" игроки, видимо:) Идет "важное" обсуждение "важных модов" типа чизелей всяких. Не до конкурсов сейчас.:D


#41 Оффлайн   MelnikovSM

MelnikovSM

    Интересующийся

  • Пользователи
  • Pip
  • 26 сообщений

Отправлено 05 Август 2014 - 15:48

А, ок. Лучше-бы сборку облегчили а не моды сували...

#42 Онлайн   Alex

Alex

    Орден К.А.

  • Автор темы
  • Администраторы
  • 3 063 сообщений

Отправлено 05 Август 2014 - 16:15

А, ок.
Лучше-бы сборку облегчили а не моды сували...

Ты видимо иронии не понял про "мороз". Моды никому не надо, мне по крайней мере точно. Ты пишешь программу или нет?


#43 Оффлайн   MelnikovSM

MelnikovSM

    Интересующийся

  • Пользователи
  • Pip
  • 26 сообщений

Отправлено 06 Август 2014 - 10:35

Ну я в принципе прога то уже есть, но время она проверя5т все теми-же нагромождениями и выдача призов в праздники существует как куча if ... then ... end. В общем прогу я понемногу пилю но проверить нормально AMI всееще не получается и пишу я вслепую в том-же gedit'е... Пока реализовано: Основная функция Выдача по праздникам Информирование игрока о выйгрыше (пока только на инглише) В общем все еще сыро и нужна критика со стороны. P.S. Прикрепил сорц чтобы виден был текущий этап развития и для критики окружающих.

Прикрепленные файлы

  • Прикрепленный файл  gifter.txt   7,05К   164 Количество загрузок:


#44 Онлайн   Alex

Alex

    Орден К.А.

  • Автор темы
  • Администраторы
  • 3 063 сообщений

Отправлено 12 Август 2014 - 16:27

В общем все еще сыро и нужна критика со стороны.
P.S. Прикрепил сорц чтобы виден был текущий этап развития и для критики окружающих.

Время конкурса подошло к концу. И так дал еще 12 дней. Спасибо всем, кто принял участие.
Так, как работ не много, а точнее одна, рассмотрим ее. Что можно сказать, работа сыровата, и находится на начальной стадии проектирования.

Вот как я в своей программке для Локи определял разницу во времени:
function getWorldTime()
    if not http then
        error("Set enable API_http in ComputerCraft.cfg")
    end
    local response = http.get("http://www.timeapi.org/pdt/in+11+hours")  --change args
    if response then
        local time_mess = response.readAll()
        response.close()
        return time_mess
        else
        return "not time"
    end
end

function differenceDates(date0, date1)
    local response = http.post("http://computercraft.ru/scr/days.php?d0="..date0.."&d1="..date1)
    if response then
        difference_of_dates = response.readAll()
        response.close()
    return difference_of_dates
    else return "not calculate time"
    end
end

function deltaTimeLastVisitPlayer(name_user)--2014-07-13T21:39:45-07:00
local current_time = getWorldTime()
if current_time == "not time" then return "error get time" end
    if fs.exists(UsersPath..name_user) then
        array_user = readFromFile(UsersPath..name_user)
        last_visit_user_time = array_user[1]
        if last_visit_user_time == "not time" then return "error get time user" end
    else return "not found file of player"   
    end
    date0 = string.sub(last_visit_user_time, 1,10).."%20"..string.sub(last_visit_user_time, 12,19)
    date1 = string.sub(current_time, 1,10).."%20"..string.sub(current_time, 12,19)
    diff = differenceDates(date0, date1)
    result_diff_time = tonumber(diff)
    if result_diff_time ~=  nil then return result_diff_time
    else return "not calculate time"
    end
end

function sayVisitLongAgo()
    while true do
    sleep(math.random(300, 700)) --600 3600 10 мин - 60 мин
        local array_user = getUserNames()
            if #array_user >= 1 then
            local target_user = array_user[math.random(1,#array_user)]
            result_info_visit = deltaTimeLastVisitPlayer(target_user)
                if result_info_visit == "not found file of player" then
                -- вы ни разу не посещали божество
                commandBlock.setCommand("/say "..target_user.."!"..getMsg("special", "79"))
                commandBlock.runCommand()
                end
                result_info_visit = tonumber(result_info_visit)
                if result_info_visit~=nil then
                hours = math.floor(result_info_visit/3600)
                minutes = math.floor((result_info_visit - hours*3600)/60)
                sec = result_info_visit - hours*3600 - minutes*60
                commandBlock.setCommand("/say "..target_user.."!"..getMsg("special", "80").." ("..hours..")"..getMsg("special", "81")..", ".."("..minutes..")"..getMsg("special", "82")..", ".."("..sec..")"..getMsg("special", "83")..getMsg("special", "84").."!")
                commandBlock.runCommand()
                end
            end
     end
end
Так и даты удобнее хранить, и время получаешь с точностью до секунды между двумя любыми датами.

За старания, учитывая возраст, и то, что в одиночку сражался с программой, получаешь статус победителя "Конкурса № 1".
Приз назначу сам, не так как планировалось рандомно при поморщи труб, а именно, комлект нано-костюма, и золотой префикс в чате [Winner]
Получишь костюм на новом сервере Computers & Science II, Аpocalypse.


#45 Оффлайн   1Ridav

1Ridav

    Орден К.А.

  • Администраторы
  • 242 сообщений

Награды

         2         

Отправлено 01 Сентябрь 2014 - 20:14

Изображение

С AlexCC на пару сделали то, что не смогли игроки... Времени ушло ровно 1 вечер
Лог в файл и на монитор
Выдача призов каждые сутки. После 48 часов отсутствия счетчик сбрасывается до 1
Ну и тд и тд...


#46 Онлайн   Alex

Alex

    Орден К.А.

  • Автор темы
  • Администраторы
  • 3 063 сообщений

Отправлено 01 Сентябрь 2014 - 20:49

Самая крутая штучка, это буфер по обработке потоков данных, на обработку которых требуется разное время. Надо будет с подробными комментариями выложить исходник, как это все работает.


#47 Оффлайн   1Ridav

1Ridav

    Орден К.А.

  • Администраторы
  • 242 сообщений

Награды

         2         

Отправлено 29 Сентябрь 2014 - 12:28

https://github.com/1...lob/master/core
Выложил исходник на гитхаб


#48 Оффлайн   Syabro

Syabro

    Свой человек

  • Пользователи
  • PipPipPipPipPipPipPip
  • 282 сообщений

Отправлено 29 Сентябрь 2014 - 19:34

Изображение

С AlexCC на пару сделали то, что не смогли игроки... Времени ушло ровно 1 вечер
Лог в файл и на монитор
Выдача призов каждые сутки. После 48 часов отсутствия счетчик сбрасывается до 1
Ну и тд и тд...

Был бы рабочий лаунчер и время я б тоже сделал!





Темы с аналогичным тегами конкурс, программирование

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных


Яндекс.Метрика