Alex 4 683 Опубликовано: 10 июля, 2014 https://www.youtube.com/watch?v=kkH49U7PDRQ Описание и условия конкурса:Программа должна отслеживать регулярность посещений игроками сервера игры, игроки за регулярное посещение (каждый день игрок хотя бы раз зашел на сервер) получают приз, который с каждым днем немного увеличиваеться, а на седьмой день регулярных посещений получает уже весомый хороший приз (случайный из таблицы)Установка рекомендуемая (админ. комплектация) ПК командный блок glasses bridge adventure map interface Конкурсные требования к программе: выполнение основной функции - 70 баллов меню - 25 баллов лог (в файл) - 20 баллов чистка старых логов - 15 баллов принтинг событий на внешний экран (англ. яз, со скроллингом вверх) - 25 баллов доступ к меню и работе с таблицами на ПК не прерывая работы программы - 10 баллов чистка ненужных файлов пользователей (которых давно нет в игре и прочее) - 15 баллов принтинг событий в чат (русск. яз, сообщения для чата хранить в тхт файлах UTF-8 и подгружать нужную строчку) - 25 баллов подарки к календарным праздникам - 40 баллов удобная структура таблиц айтемов (а лучше в файле хранить списки ИД, и их русское название), чтобы игрок при получении приза видел что-то типа: Привет, Vika18! Вы зашли сегодня (5) день подряд. Вы получаете (15) алмазов. Проверьте инвентарь. И т.п. - 20 баллов принт основных событий на очки админу (логин и выдача призов) - 30 баллов удаленный останов программы через очки - 10 баллов автостарт программ, при старте проверка файлов, устройств и чистка старых логов или огромного размера(>2Mb) файлов. Рекомендую логи писать в отдельную папочку, имена файла лога привязывать ко времени майна. При старте создавать новый логфайл. Но админ должен почитать лог как минимум за 2-3 дня последних. Остальное можно чистить. Надо прикинуть, сколько места под СС ПК выделено, по моему 2 или 4 Mb HDD - 20 баллов игроки в отдельной папке, где файлы имеют имя игрока. Файл хранит последнюю дату посещения, количество текущих каждодневных посещений подряд и возможно еще какую-то инфу. (эти файлы тоже надо чистить, то есть удалять ненужные) - 20 баллов возможно отслеживание лидера по самой длинной серии посещений подряд (по желанию) - 60 баллов резерв резервПобедителя определим по количеству набранных баллов. Выполнение первого пункта обязательно! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fenixrus 17 Опубликовано: 11 июля, 2014 На OpenComputers или на Computercraft? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 11 июля, 2014 На OpenComputers или на Computercraft?OpenComputers не полностью корректно поддерживает все функции аддонов КК. На мой взгляд, OpenComputers целесообразно использовать для каких-то графических, серверных и др. трудоемких приложений. Хотя графика там пока криво работает по отзывам одного из игроков. При программировании мобильных ПК приоритет остается за роботами из OpenComputers, а не не черепашками из КК, хотя тоже смотря для каких целей . Критической разницы в принципе нет совсем. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro 81 Опубликовано: 11 июля, 2014 Я уже придумал как это можно организовать! :-) Но это нужно делать на OC Нет, всеже лучше CC. Ты главное ф-цию дай для получения мирового времени и блок для тестов! Я вот только чет не понял... тебе чем ф-ция random(1,4) не нравится? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fenixrus 17 Опубликовано: 11 июля, 2014 OpenComputers не полностью корректно поддерживает все функции аддонов КК. На мой взгляд, OpenComputers целесообразно использовать для каких-то графических, серверных и др. трудоемких приложений. Хотя графика там пока криво работает по отзывам одного из игроков. При программировании мобильных ПК приоритет остается за роботами из OpenComputers, а не не черепашками из КК, хотя тоже смотря для каких целей . Критической разницы в принципе нет совсем. я поставил вопрос с подвохом: опенкомп почему-то абсолютно не хочет работать с AMI он не получает ни объект мира, ни объект игрока он может только список игроков вывести, мною проверено у тебя в комнате! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro 81 Опубликовано: 11 июля, 2014 Я напишу на кк Уже и алгоритм готов, только на комп написать... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 11 июля, 2014 я поставил вопрос с подвохом: опенкомп почему-то абсолютно не хочет работать с AMI он не получает ни объект мира, ни объект игрока он может только список игроков вывести, мною проверено у тебя в комнате!Во-во Ну и не надо брать бензопилу, чтобы почистить яблоко. Делайте на КК. Этот мод более распространен пока и корректно работает со своими аддонами. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
fenixrus 17 Опубликовано: 12 июля, 2014 Во-во Ну и не надо брать бензопилу, чтобы почистить яблоко. Делайте на КК. Этот мод более распространен пока и корректно работает со своими аддонами. можно и симбиоз попробовать, так сказать бензопилой держать ножик для чистки яблок Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro 81 Опубликовано: 12 июля, 2014 Требую доступ к дому AlexCC для тестов и написания программы! + думаю будет лучше если у AlexCC будет не biolock а PIM Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 12 июля, 2014 Воу-воу парни! Вы там поменьше шастайте. А то еще натворите неописуемых бед. Там куча опасных блоков. Феникс в гости приходил просто. Это админ. блоки и последствия могут быть катастрофическими Протестируйте в одиночке или вызовом псевдо-функции пустой, где просто принтится команда для ком. блока на экран. строчка http://www.timeapi.org/pdt/in+11+hours вернет время МСК Вот все что вам нужно в домике Алекса узнать. Больше вам ничего не понадобиться. Программка должна вести лог, подобие меню должно быть, а не черный экран на компе и поди узнай, что там происходит, добавление ид предметов удобно сделать желательно и пр. ami = peripheral.wrap("adventure map interface_N") function getWorldTime() if not http then print("Pastebin requires http API!!!") print("Set enable API_http in ComputerCraft.cfg") error() end local response = http.get("http://www.timeapi.org/utc/now") --change args if response then local time_mess = response.readAll() response.close() return time_mess else return false end end function playerLoginDetect() while true do local e, user_name = os.pullEvent("player_login") .... end end function sayChat(msg) commandBlock.setCommand("/say "..msg) commandBlock.runCommand() end function giveItem(name_player, [id], count) commandBlock.setCommand(.....) commandBlock.runCommand() end Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 12 июля, 2014 Окай, в египте по вечерам думать буду(18ого лечу)... Вопрос у меня пока лишь как из текста на выводе получить понятнуюю информацию(дата ДДММГГГГ и время в виде 1415 где 14 это часы а 15 это минуты). Ответьте плз. Ну или как выловить из стринга текст с одного до другого символа. Вот кусок кода с переводом времени на понятный язык где я "ниасилил": worldTime=getWorldTime() function cfs(string, first, last) -- функция, возвращающая текст из стринга с одного смвола до другого .... -- тут я незнаю че писать(( end date=toNumber(cfs(worldTime,1,4) .. cfs(worldTime, 5,6) .. cfs(worldTime, 8, 9)) time=toNumber(cfs(worldTime, 12, 13) .. cfs(worldTime, 15, 16)) P. S. Если функция cfs существует, дайте ее код, а если есть в апи компкрафта - пинок в описание апи где я не заметил. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro 81 Опубликовано: 12 июля, 2014 Хм... а мне нужно получит только дату в формате ГГГГММДД Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro 81 Опубликовано: 12 июля, 2014 А... я уже все сам сделала, и Alex я не просил впускать всех туда, а только программера т.е. меня :)Like Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 12 июля, 2014 Вопрос у меня пока лишь как из текста на выводе получить понятнуюю информацию(дата ДДММГГГГ и время в виде 1415 где 14 это часы а 15 это минуты). Ответьте плз.Ну или как выловить из стринга текст с одного до другого символа.Вот здесь Zer0Galaxy целую энциклопедию для юного сурка написал. Для кого такой титанический труд проведен? На крайний случай юзайте функцию string.sub(s, i, j), где s-строка, i и j индексы символов. например string.sub("Hello world", 1, 4) -> "Hell" Потом переведите строковою переменную в число функцией tonumber(e) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 13 июля, 2014 AlexCC, спс - я прост чтот уже подзабыл так как изучал компкрафт полтора года назад. Сябро, в таком случае у тя прога выдаст призы если изменится дата, так в 11 зашел, получил, в час ночи зашел - еще получил. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro 81 Опубликовано: 13 июля, 2014 AlexCC, спс - я прост чтот уже подзабыл так как изучал компкрафт полтора года назад. Сябро, в таком случае у тя прога выдаст призы если изменится дата, так в 11 зашел, получил, в час ночи зашел - еще получил. Вообще-то в онлайн играх так и есть! Ведь потом ему ждать еще до следующих 00:00 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Syabro 81 Опубликовано: 13 июля, 2014 постараюсь сделать все в точности как в играх! только призы могут для каждого дня рандомные быть... конченоже полностью настраиваемая программа! Алекс, напиши таблицу типа: priz={ {id1_1, id1_2, id1_3}, {id2_1, id2_2, id2_3}, {id3_1, id3_2, id3_3} } Где id1...idn это предмет рандомно выбранный для каждого дня. Например: priz{ {"stone","wood",7}, {"tnt","..."}, {...} } для приза за первый день будет рандомно выбран один из "stone", "wood" или 7 для второго соответственно "tnt" или что еще напишеш... дальше я сам Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 13 июля, 2014 У меня почти готова, ща тестить буду... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 13 июля, 2014 Алекс, напиши таблицу типа: priz={ {id1_1, id1_2, id1_3}, {id2_1, id2_2, id2_3}, {id3_1, id3_2, id3_3} }таблицу пока сам накидай, камешки, песочек и прочее. Потом создадим табличку айдишек, когда все заработает. local id = priz[math.random(1,#priz)][math.random(1,3)] - по идее это должно работать. Хотя таблицу можно и одномерную сделать. А для весомых призов хороших другую таблицу. Главное, чтобы программка была понятной, удобной и гибкой. Ну и самое главное - выполняла весь замысел. local command_give = "/give "..nick.." "..id.." "..current_day_visit - выдача в в первый день одного предмета, во второй день два и т.д. Это если current_day_visit Я думаю, это будет работать. Поправьте, если что не так. Так же я пока в замешательстве, как отслеживать смену месяца и года. Если сравнивать только дату, то как быть, если человек зашел 30-го, а потом 1-го числа. А в месяце сколько дней? 30 или 31? Как это отслеживать? Надо подумать. Так же желательно создать табличку праздников: Новый год, дата создания майнкрафт, дата создания проекта нашего, День рождения Маркуса Перссона, День шахтера и т.д. и выдавать в эти дни независимые призыLike Работы непочатый край и программка у нас должна получиться занятной. Текстовые сообщения нужно хранить в текстовых файлах UTF-8, тогда возможен принтинг русского текста в чат через командный блок. Но это я сделаю через фтп в корень компа. Если будет работать команда, призы выдам всей команде, не переживайте. Каждый бросит яблочко в трубу и получит приз. Так что за работу, друзья! Программа должна быть выполнена в срок. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
MelnikovSM 2 Опубликовано: 13 июля, 2014 Вот выкладываю, исправил что нашел... В 1.5.2 функция playerLoginDetect не реагирует на вход. Ну думаю это из-за версии. Gifter.txt Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах