Вот такие иконки я сделал для пони-ачивментов.
Если вам какая-то из них не нравится, предлагайте свои варианты в коментах. Иконка 32х32 png с прозрачным фоном.
Завтра вечером отдам администрации на исполнение.
Папка с иконками и файлом-описанием: http://yadi.sk/d/MODLGyIuDqdU4
Если вам какая-то из них не нравится, предлагайте свои варианты в коментах. Иконка 32х32 png с прозрачным фоном.
Завтра вечером отдам администрации на исполнение.
Папка с иконками и файлом-описанием: http://yadi.sk/d/MODLGyIuDqdU4
Подробнее
1.1. Новичок б. 1. Начинающий рисовальщик & 11. Хранитель Кантерлотской библиотеки 16. Любимчик Молестии & 2.2. Завсегдатай \| 7.2. Опытный художник! ф 12. Орден Октавии и Винил 17. Одобрение Лиры 21. Крутое зелье от Зекоры 22. Сапфировый кекс от Спайка 3.3. Легенда фандома! л 8.3. Великий художник Эквестрии! 13. Кинолюбитель 18. Рога Дискорда ©! 23. Смайл от Черили 4.1. Популяризатор Эквестрийской веры 9. Грамота Твайлайт 5.2. Теперь о пони знают все 10. Награда Понивильской библиотеки 14. Знак Вондерболта 15. Новый Эквестрийский Злодей © 19. Кексик от Пинки самому общительному! 20. Значок метконосца 24. Благодарственное письмо от Флаттершай 25. Местный параспрайт
my little pony,Мой маленький пони,фэндомы
Еще на тему
Автоматические уровневые:
Порядковый номер. Уровень. Описание при наведении на медаль - Условие получения
1. 1. Новичок. За 100 пони-рейтинга - Набрать 100 рейтинга в фандоме
2. 2. Завсегдатай. За 1000 пони-рейтинга - Набрать 1000 рейтинга в фандоме
3. 3. Легенда фандома! За 5000 пони-рейтинга (Л) - Набрать 5000 рейтинга в фандоме
4. 1. Популяризатор Эквестрийской веры. За 3 поста во внешнем мире - 3 поста с тегом "my little pony" на главной реактора
5. 2. Теперь о пони знают все! За 30 постов во внешнем мире (Л) - 30 постов с тегом "my little pony" на главной реактора
6. 1. Начинающий рисовальщик. За 10 хороших постов в теге "сделай сам mlp" - 10 постов с рейтингом выше "3" в теге "сделай сам mlp"
7. 2. Опытный художник! За 25 хороших постов в теге "сделай сам mlp" - 25 постов с рейтингом выше "5" в теге "сделай сам mlp"
8. 3. Великий художник Эквестрии! За 50 хороших постов в теге "сделай сам mlp" (Л) - 50 постов с рейтингом выше "7" в теге "сделай сам mlp"
9. 1. Грамота Твайлайт. За 10 годных переводов - 10 постов в теге "перевел сам mlp" с рейтингом выше 5.
10. 2.Награда Понивильской библиотеки. За 50 хороших переводов - За 50 хороших переводов в теге "перевел сам mlp" с рейтингом выше 7.
11. 3. Хранитель Кантерлотской библиотеки. За 100 шикарных переводов (Л) - За 100 постов в теге "перевел сам mlp" с рейтингом выше 10.
Автоматические безуровневые:
12. Орден Октавии и Винил. За 25 хороших музыкальных композиций - 25 постов с рейтом выше "4" в теге "mlp музыка" или теге "mlp Art & Music".
13. Кинолюбитель. За 25 хороших видео. - 25 постов в теге "mlp видео" с рейтингом выше "4"
14. Знак Вондерболта. За 25 хороших Flash-игр - 25 постов в теге "mlp flash" с рейтингом выше "4"
15. Новый Эквестрийский Злодей. За 50 годных постов в жестоких тегах - 50 постов с рейтингом выше "4" в тегах "mlp милитаризм", "mlp крипота", "mlp fallout"
16. Любимчик Молестии. За 50 годных постов в развратных тегах - 50 постов с рейтингом выше "4" в тегах "eropony", "моллестия".
17. Одобрение Лиры. За 50 годных постов в спорных тегах - 50 постов с рейтингом выше "4" в тегах "mlp anthro", "mlp хуманизация", "mlp шиппинг", "mlp фанфик".
18. Рога Дискорда. За пост, в котором набралось 100 комментариев. - Создателю поста с тегом "my little pony" в котором больше 100 комментариев.
19. Кексик от Пинки самому общительному! - пользователю у которого комментариев в постах с тегом "my little pony" больше 3000.
20. Значок метконосца. Прошло уже немало времени, но он так и не нашел свой талант - За 40 постов с тегом "mlp песочница"
Выдаются вручную:
21. Крутое зелье от Зекоры. За особые заслуги перед сообществом.
22. Сапфировый кекс от Спайка. За помошь ближнему.
23. Смайл от Черили. За наставление новичков на правильный путь.
24. Благодарственное письмо от Флаттершай.
25. Местный параспрайт.
Нарисуй, я поменяю :)
Профиль на медали - можно.
Хочешь, проси.
Вангую бугурт Вахаёба :3
:P
.
Хочешь бананчик? Следуй за нами!
на худой конец тот самый бананчик, с которым столько всего связано... или знамя с бананом, не?
//обычная работа по подсчёту кармы//
если есть совпадение в тегах поста и тегах из списка, то проверяем рейтинг поста по фильтру для совпадающего тега.
если рейтинг больше или равен граничному, то проверяем наличие поста в списке идущих в зачет для данного пользователя.
если пост отсутствует в списке - то добавляем его в список и повышаем переменную-счётчик для данного списка на 1.
если счётчик показывает число большее или равное необходимому для получения медали, то проверяем наличие медали.
если медали нет - выдаём медаль.
.
как-то так. зис из сайенс!
Надо просто выбрать и посчитать количество
из всех постов автора и всех тегов этих постов,
где тег совпадает с тегом ачивки и рейтинг поста больше или равен мин.рейтингу ачивки
из них выбрать ачивки,
имеющие количество найденных записей не менее, чем мин.количество постов ачивки.
Так для всех ачивок. Что останется - будет списком достижений юзера.
.
...у тебя (без обид) - не работает.
вот, например, самая первая строчка твоего алгоритма: "надо просто выбрать и посчитать..." - нет указания времени.
ну надо, ну и что?когда проводить подсчёт?опять же, твой вариант однократен: один раз прогнали - и всё, больше никто не сможет получить ни одну ачивку - если только не прогнать твой вариант по новой, заново перебирая уже проверенных в прошлый раз авторов/посты/теги... но в этом случае все уже имеющие ачивки получат ещё по одному комплекту.
.
информатика: начальный уровень. Джой образовательный)
1. каждый раз для каждого поста выбирать список всех допустимых тегов ачивок (причем, условие выполняется часто).
2. Хранить где-то список постов, идущих в зачет.
3. Хранить где-то счетчики идущих в зачет постов.
4. Делать это каждый раз, когда изменяется любой из параметров формулы. В частности, каждый раз, когда пользователь голосует за пост.
Причем, твой вариант имеет большую инерцию. В случае ошибки алгоритма или любых изменений правил выдачи ачивок, все эти списки и счетчики придется вычищать/пересчитывать.
Если же делать по простому, то не нужно никаких доп.таблиц, достаточно запускать по расписанию пересчет медалек для всех профилей, имеющих не-личные, не-удаленные посты, которые имеют минимальный для любой медали рейтинг - и готово. Причем пересчитывать можно как для всех пользователей, так и только для тех, кто запостил новые посты с момента последнего пересчета. Тогда это будет шустро и сложность не будет ильно расти с ростом количества постов, а доля постов каждого пользователя всё равно небольшая в общей массе.
Плюсы - меньшая инертность, простота, сам алгоритм автономный, хорошо поддается распараллеливанию.
Минусы - всё равно придется выбирать все посты пользователя, значит если это будет топовый пользователь с большим общим количеством постов, время выполнения может начать расти.
хотя, конечно, можно прогонять твой алгоритм каждые десять минут - для всех пользователей, для всех их постов... и каждые десять минут джой будет немножечко капельку незаметно лагать)
.
кстати, твоё "пересчитывать только для тех, кто запостил новые посты с момента последнего пересчета" - это несколько... нечистоплотно. с таким подходом получить + в копилку сможет только тот, кто вообще постит: человек запостил нужное число картинок, его посчитали - не прошел; через пару дней посты набрали нужный рейтинг - а ачивку не дают, потому что новых постов не было, и уже сделанные посты не считаются.
.
ещё, ты совершенно не рассматриваешь ситуацию с минусованием постов: по твоему "и готово" запросто может получиться так, что пользователь с тысячей перешедших через заявленный барьер постов не сможет получить ачивку за 50 постов, если все его посты будут минуситься после преодоления барьера.
.
и ты не учёл того самого "изменения правил получения ачивки": в твоём случае при этом изменении можно потерять уже полученную ачивку, что совсем не хорошо.
.
в моем варианте инерция отсутствует как таковая: реакция следует сразу же, как только выполнено условие. ошибка алгоритма - это из серии "у меня компьютер сам сломался, загорелся и утонул". любое изменение правил выдачи ачивок тут же идёт в работу просто потому, что они используются напрямую в реальном времени; однако уже полученные ачивки исчезнуть от такого изменения не могут.
.
ну и таки по списку:
1. список допустимых тегов - зе хоррор - абсолютно аналогичен списку подписок/блоков тегов.
2. список постов хранится на сервере, что с системой ачивок, что без. метка "пост идёт в зачет" хранится не в отдельном списке, а прилеплена к каждому посту.
3. счётчики идущих в зачет постов, равно как и счётчики сделанных постов/комментариев, хранятся
снова на серверев профиле пользователя.4. абсолютно тот же подход, что и с ростом кармы: на любой плюс/минус запускается формула пересчета.
.
и... пардон, наверное, за ядовитость. тяжелый день.
Всё же, прокомментирую некоторые моменты:
1. У варианта по расписанию - всё же латентность, а не инерция. Под инерцией имелось ввиду потеря актуальности старых данных после изменения правил на новые. Т.е. с таким алгоритмом данные будут неизбежно устаревать. Обычно это плохо, но не сейчас. Всё же, не дело отбирать старые медальки, если новые правила их не подразумевают - будет слишком болезненно, особенно если ачивка получена за год активного постинга. Если так важно брать неактуальные медальки, лучше уж руками чистить. Меньше будет самоубийств...
2. Латентность - да, есть, но это не проблема, т.к. уже есть задача по расписанию - пересчет кармы пользователя - и никто не ворчит, привыкли. Самый главный плюс - нет необходимости встраивать этот расчет (который может быть довольно сложным в итоге) - в каждое событие создания поста/голосования за пост. По идее, процесс формирования страницы должен быть максимально облегчен, а вся логика отдана на откуп фоновым заданиям. Думаю, сейчас именно так - и это очень хорошо. MVC, все дела...
По твоим пунктам:
2. Зачетные посты требуют отдельного списка. У нас же один ко многим - один пост в зачет сразу нескольких ачивок (postid, achievementid).
3. То же и со счетчиками. Опять отдельная табличка - (userid, achievementid, matches). На случай возможных глюков (где-то не прибавилось, где-то наоборот, зачлось два раза) можно её каждую ночь приводить в порядок согласно данным из п.2
И еще - имхо, любой статический счетчик - это потенциальный источник ошибок. Ничего плохого, если всё работает, но если можно без них - лучше без них.
С остальным согласен, беру свои слова насчет "слишком сложного" назад и спасибо за развернутый ответ.