MelnikovSM 2 Опубликовано: 13 июля, 2014 Так же я пока в замешательстве, как отслеживать смену месяца и года. Если сравнивать только дату, то как быть, если человек зашел 30-го, а потом 1-го числа. А в месяце сколько дней? 30 или 31? Как это отслеживать? Надо подумать.. Я тоже думаю как это сделать и это в прогу не включил(( Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 13 июля, 2014 Вот выкладываю, исправил что нашел... В 1.5.2 функция playerLoginDetect не реагирует на вход. Ну думаю это из-за версии.в коде поставь вместо N в строчке ami = peripheral.wrap("adventure map interface_N") номер врапмодема, и активуруй его. Блок должен засветиться зелеными лампочками. И в одиночке если ты тестишь, прога может не успевать поймать твой логин. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro 80 Опубликовано: 13 июля, 2014 Я почти написал и понял как решить проблемы с месяцом, предлагаю на 7-ой день с шансом 1/1000 дать квантовый генератор или 1/10000 а я планирую использовать консоль для настройки... дабы не выключать серв и к стате можно выдавать квантовый генератор только если рандомное число от 1 до 1000 будет равно рандомному числу от 1 до 1000 тоесть if random(1,1000) == random(1,1000) then give end Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 13 июля, 2014 Ну я хз че жт за мод, я прогу написал, там можно изменять призы - массивы в начале функций gift. AlexCC, протести плз - а дни с выдачей суперпризов я могу добавить, а вот фикс с 30 по первое число нет. А победитель будет обьявлен по функционалу или по скорости написания? Ну тогда квантовый генератор буднт впервые выигран через 600 лет Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 13 июля, 2014 А победитель будет объявлен по функционалу или по скорости написания?По функционалу, конечно! Работы будут рассмотрены только после конца срока написания. До этого можете их даже не выкладывать. ... а вот фикс с 30 по первое число нет. Что касается определения дат. На нашем сайте был размещен PHP скрипт, который возвращает разницу между двумя датами в секундах! <?php $d0=$_GET["d0"]; $d1=$_GET["d1"]; $ts1 = strtotime($d0); $ts2 = strtotime($d1); $seconds_diff = $ts2 - $ts1; echo floor($seconds_diff); ?> Вот сама функция получения разницы во времени: local date0 = "2014-07-10%2018:16:00" local date1 = "2014-07-13%2018:16:00" 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 false end end2014-07-10%2018:16:00 - это формат даты, %20-это символ пробела, так как в строке http адреса пробелов не бывает. Секунды, я думаю, переведете в дни с округлением. Первую дату берете из файла юзера, вторую с сайта мирового времени. Вот пример http://computercraft.ru/scr/days.php?d0=2014-12-20 20:12:10&d1=2014-12-24 20:12:10 строчка http://www.timeapi.org/pdt/in+11+hours вернет 2014-07-13T21:39:45-07:00 Это время МСК Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 13 июля, 2014 Я почти написал и понял как решить проблемы с месяцом, предлагаю на 7-ой день с шансом 1/1000 дать квантовый генератор или 1/10000 а я планирую использовать консоль для настройки... дабы не выключать серв и к стате можно выдавать квантовый генератор только если рандомное число от 1 до 1000 будет равно рандомному числу от 1 до 1000 тоесть if random(1,1000) == random(1,1000) then give end Прога должна выдавать бонус за регулярные посещения. Рандомые же подарки нереальные, подарки опыта и еще миллион всяких действий в зависимости от прокачки характеристик будут возложены на божество по имени Локи А вот выдачу призов к знаменательным датам надо реализовать. Позже выложу требования к программе и за каждую реализованную возможность назначу баллы. Победителем будет тот, кто реализует качественно максимум функционала и наберет соответственно больше всех баллов. Так что не брезгуйте ни менюшками, ни обработкой ошибок, ни логированием и прочим. Вот так вот Так же готовая и отлаженная программа будет помещена в последствии в зал славы. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 14 июля, 2014 Ну до вылета написать это все не успею скорее всего - а до 2 августа никто ждать наверно не будет и пока я на море плаваю все уже сделают проги и победителя обявят... В общем сдаю позиции((( Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 14 июля, 2014 Нельзя прекращать борьбу, тем более в начале пути. А конкурентов не так и много. Что-то один игрок реализует, что-то другой. Приз будет всем. А сроки все таки условны, не известно, когда реально подадут работы, и подадут ли вообще Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 14 июля, 2014 Ну ладно, постараюсь.... Ток до 2го не закрывайте конкурс плз... Я в Египте по вечерам в кафешке с WiFi-ем буду скидывать наработки и общаться.. Кстате AMI эт из какого мода? Мне над сделать сборку... P.S. Я не играю на сервере (из-за безбожных лагов на моем железе) и приз мне не нужен... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 14 июля, 2014 Хмм... Я думаю, что добиться решения недочетов с переходом дат 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) elseif tonumber(string.sub(tostring(lastlogin))), 7,8)))==31 and tonumber(string.sub(tostring(getDate(), 7, 7))==1 then --заплатка для случая перехода дат с 31 по 1, где длинна номера месяца больше 10(числа вроде 08 tonumber превращает в 8) count=totalDays+1 giftDaily(player) writeAccountData(player, tonumber(getDate()), count) elseif tonumber(string.sub(tostring(lastlogin))), 6,7)))==30 and tonumber(string.sub(tostring(getDate(), 6, 6))==1 then --заплатка для случая перехода дат с 30 по 1, где длинна номера месяца не больше 10(числа вроде 08 tonumber превращает в 8) count=totalDays+1 giftDaily(player) writeAccountData(player, tonumber(getDate()), count) elseif tonumber(string.sub(tostring(lastlogin))), 6,7)))==31 and tonumber(string.sub(tostring(getDate(), 6, 6))==1 then --заплатка для случая перехода дат с 31 по 1, где длинна номера месяца небольше 10(числа вроде 08 tonumber превращает в 8) count=totalDays+1 giftDaily(player) writeAccountData(player, tonumber(getDate()), count) elseif tonumber(string.sub(tostring(lastlogin))), 5,5)))==2 and tonumber(string.sub(tostring(lastlogin))), 6,7)))==29 and tonumber(string.sub(tostring(getDate(), 6, 6))==1 then --заплатка для случая перехода дат с 29 по 1 (февраль-март), где длинна номера месяца больше 10(числа вроде 08 tonumber превращает в 8) count=totalDays+1 giftDaily(player) writeAccountData(player, tonumber(getDate()), count) else sayChat("[Gifter] " .. player .. "'s account reset: he not joined game yesterday!") makeAccount(player) end Осталось тока пофиксить что я не нашел, добавить логирование, сообщения с помощью, которые бы писались после чьего-то захода, отправка инфы(скока дней осталось, скоко дней заходил итд) в ЛС игроку ну и конечно вывод лога на экран. P.S. Выкладываю сорц для теста ибо у самого нет возможности тестить. Напишите если че не так - постараюсь исправить. Gifter.txt Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 14 июля, 2014 Хмм... Я думаю, что добиться решения недочетов с переходом дат 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 Рука-лицо, честное слово. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 14 июля, 2014 Ну а я решил сделать так, результат же будет такой-же - тока привязка идет не к часам с момента последнего входа, а к дате. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro 80 Опубликовано: 14 июля, 2014 Ну что ж... попробую написать... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 14 июля, 2014 Syabro, если хочешь - можем работать в команде. У меня уже что-то понаписано, осталось добавить выдачу ресов по праздникам и дебажить... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro 80 Опубликовано: 14 июля, 2014 Syabro, если хочешь - можем работать в команде. У меня уже что-то понаписано, осталось добавить выдачу ресов по праздникам и дебажить...Давай :-) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 14 июля, 2014 Syabro, cкайп есть? Или через редкол? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro 80 Опубликовано: 14 июля, 2014 Syabro, cкайп есть? Или через редкол?Скайп есть! syabro98 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 14 июля, 2014 в 10-11 по мск го в скайп Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 2 августа, 2014 Я благополучно прилетел из Египта.... А че конкурс заморозили? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 2 августа, 2014 Я благополучно прилетел из Египта.... А че конкурс заморозили? Нет, "заморозились" игроки, видимо Идет "важное" обсуждение "важных модов" типа чизелей всяких. Не до конкурсов сейчас. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах