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

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

Рекомендуемые сообщения

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 баллов
  • резерв
  • резерв

    Победителя определим по количеству набранных баллов. Выполнение первого пункта обязательно!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На OpenComputers или на Computercraft?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На OpenComputers или на Computercraft?

OpenComputers не полностью корректно поддерживает все функции аддонов КК.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я уже придумал как это можно организовать! :-)

 

Но это нужно делать на OC

 

Нет, всеже лучше CC.

 

Ты главное ф-цию дай для получения мирового времени и блок для тестов!

 

Я вот только чет не понял... тебе чем ф-ция random(1,4) не нравится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

OpenComputers не полностью корректно поддерживает все функции аддонов КК.

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

я поставил вопрос с подвохом: опенкомп почему-то абсолютно не хочет работать с AMI он не получает ни объект мира, ни объект игрока он может только список игроков вывести, мною проверено у тебя в комнате!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я напишу на кк

 

Уже и алгоритм готов, только на комп написать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я поставил вопрос с подвохом: опенкомп почему-то абсолютно не хочет работать с AMI он не получает ни объект мира, ни объект игрока он может только список игроков вывести, мною проверено у тебя в комнате!

Во-во

 

Ну и не надо брать бензопилу, чтобы почистить яблоко. Делайте на КК. Этот мод более распространен пока и корректно работает со своими аддонами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Во-во

 

Ну и не надо брать бензопилу, чтобы почистить яблоко. Делайте на КК. Этот мод более распространен пока и корректно работает со своими аддонами.

можно и симбиоз попробовать, так сказать бензопилой держать ножик для чистки яблок

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Требую доступ к дому AlexCC для тестов и написания программы!

+ думаю будет лучше если у AlexCC будет не biolock а PIM

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Воу-воу парни! Вы там поменьше шастайте. А то еще натворите неописуемых бед. Там куча опасных блоков. Феникс в гости приходил просто. Это админ. блоки и последствия могут быть катастрофическими:)

 

Протестируйте в одиночке или вызовом псевдо-функции пустой, где просто принтится команда для ком. блока на экран.

строчка 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Окай, в египте по вечерам думать буду(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 существует, дайте ее код, а если есть в апи компкрафта - пинок в описание апи где я не заметил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хм... а мне нужно получит только дату в формате ГГГГММДД

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А... я уже все сам сделала, и Alex я не просил впускать всех туда, а только программера т.е. меня :)Like

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос у меня пока лишь как из текста на выводе получить понятнуюю информацию(дата ДДММГГГГ и время в виде 1415 где 14 это часы а 15 это минуты). Ответьте плз.Ну или как выловить из стринга текст с одного до другого символа.

Вот здесь Zer0Galaxy целую энциклопедию для юного сурка написал. Для кого такой титанический труд проведен? На крайний случай юзайте функцию string.sub(s, i, j), где s-строка, i и j индексы символов.

 

например string.sub("Hello world", 1, 4) -> "Hell"

Потом переведите строковою переменную в число функцией tonumber(e)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

AlexCC, спс - я прост чтот уже подзабыл так как изучал компкрафт полтора года назад.

Сябро, в таком случае у тя прога выдаст призы если изменится дата, так в 11 зашел, получил, в час ночи зашел - еще получил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

AlexCC, спс - я прост чтот уже подзабыл так как изучал компкрафт полтора года назад.

Сябро, в таком случае у тя прога выдаст призы если изменится дата, так в 11 зашел, получил, в час ночи зашел - еще получил.

Вообще-то в онлайн играх так и есть! Ведь потом ему ждать еще до следующих 00:00

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

постараюсь сделать все в точности как в играх! только призы могут для каждого дня рандомные быть... конченоже полностью настраиваемая программа!

Алекс, напиши таблицу типа: 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" или что еще напишеш... дальше я сам

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня почти готова, ща тестить буду...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Алекс, напиши таблицу типа: 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, тогда возможен принтинг русского текста в чат через командный блок. Но это я сделаю через фтп в корень компа. Если будет работать команда, призы выдам всей команде, не переживайте. Каждый бросит яблочко в трубу и получит приз. Так что за работу, друзья! Программа должна быть выполнена в срок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот выкладываю, исправил что нашел... В 1.5.2 функция playerLoginDetect не реагирует на вход. Ну думаю это из-за версии.

Gifter.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...