Всем привет. Прошу помочь мне сделать систему "топ"(лучшие игроки, топ5 , как на ddrace ) для мода dm. Я не прошу давать мне весь код и инструкцию. Я только прошу помочь , "подтолкнуть" меня.( в каких файлах , и каким образом ) C ddrace систему я сдирать не собираюсь ( т.к. там не так как надо )
1) Где-то нужно хранить очки игроков, в любом виде, хоть Name;Score, обновлять, загружать этот список. 2) Из полученного списка создаешь список. Через массив не получиться, т.к неизвестно сколько игроков. 3) Сортируешь этот список, как сортировать думаю сам найдешь. 4) Выбираешь из списка, к примеру, 5 первых значений (если сортировал по уменьшению, то там будут 5) игроков с наибольшим количеством очков) выводишь через чат команду, опять же к примеру. Это было бы гораздо проще сделать, если бы у тебя данные хранились в SQL базе. Там наибольшие значения выводятся простым запросом. Как пример - http://mp.teeworlds.su/?page=lvltop
1) У меня есть файлы которые содержат эти lvl. 2) Из каждого мне нужно прочитать одну строчку. как ? хоть с выводом из файла я знаком... 3) С сортировкой вроде понятно. 4) Потом... Про SQL я ничего не знаю и не умею с ней работать.
Ну тогда открываешь все файлы, и формируешь список из этих lvl. Было бы куда удобнее, если бы все lvl хранились в одном месте.
Вот как записать lvl в файл я знаю и как вывести, но я не знаю как записать lvl разных пользователе в один список, а потом выводить их.
Можно еще сделать так: создаешь новый фаил, в него записывать будешь всего 5 строчек, лвлы и имена игроков, проверяешь при добавлении больше ли очки игрока чем у любого другого из списка, заменяешь эту строчку. Так сразу получиться топ5. Из недостатков лишь то, что в топе не будет тех аккаунтов, которые не заходили в игру, но имеют больше очков.
При запуске сервера создается файл "top5.txt" к примеру, Аккаунт система выглядит как набор файлов в папке. Сервер пустой, то есть нету аккаунтов. При запуске сервера в переменную грузятся 5 значений(если они есть) из файла "top5.txt", при LVLUP или при убийстве(смотря что тебе надо) проверяется все 5 значений, если например 5 место занимал человек с 10 лвл, а ты получил 11 то ты вытесняешь его, и файл перезаписывается.
А если тебе надо уже существующюю базу прогнать в файл то сделай сначала чтобы по всем аккам проходился сервер и глядел.