Мы+Яндекс=мониторинг любого сервера
|
php скрипт генерации маплистов. бонус 250-350 баллов
Автор |
Сообщение |
Admin Карма: 9 |
Добавлено: 17:33 2 февраля 2010 | Исправлялось: 1 раз (02-02-10 17:34, Admin) | |
Что хочется сделать:
инструмент для администраторов, который позволит создавать идеальные мапилсты, подходящие конкретному серверу, сравнивать имеющиеся маплисты с имеющимися и выдавать рекомендации
за исходные данные берется ассоциативный массив, например:
$a = array (dust=>10,dust2=>30,aztec=>15);
видим, что время, проведенное игроками на Д2 в 3 раза больше, чем на Д1 и в 2 раза больше, чем на ацтеке
В итоге надо получить список вида:
dust2
dust
dust2
aztec
dust2
aztec
в дальнейшем я добавлю параметр: "заполненность на карте", т.е. если при смене карты игроки разбегаются с сервера, время такой карты должно быть уменьшено.
но это в дальнейшем, а пока кто возьмется за построение простого маплиста?
Оплата:
Если делается просто скрипт преобразования ассоциативного массива в список - 250 баллов
Если к этому добавляется кнопка "Сохранить", при нажатии на которую предлагается сохранить созданный файл с названием mapcycle.txt на компьютер пользоателя - 350 баллов
|
Warcheg Карма: 0 |
Добавлено: 18:02 2 февраля 2010 | |
Чуть поконкретнее можешь расписать как список составляться должен, если например 5 мап есть?
$a = array (dust=>10,dust2=>30,aztec=>15,snow=>20,nuke=>35);
nuke
dust2
nuke
snow
nuke
aztec
nuke
dust
Я правильно понимаю?
|
Admin Карма: 9 |
Добавлено: 18:19 2 февраля 2010 | |
Число раз, сколько карта встречается в маплисте = intval($a[i]/min($a))
т.е.
dust - 1 раз
dust2 - 3 раза
aztec - 2
snow - 2
nuke - 4
как равномерно распределить эти карты с учетом числа вхождений, думаю, понятно.
Послкольку формала плевая и я ее уже написал, то задача изменяется:
нужен скрипт с кнопкой "Сохранить". Стоимость - 200 баллов
Получить 350 баллов еще возможно, если дополнить формулу и сделать ее более умной. Предложения по улучшению лучше сначала обсуждать, чтобы не сделать лишнего
|
YodL Карма: 1 |
Добавлено: 04:09 3 февраля 2010 | |
Раньше по 800 балов за такое давал, начал делать, а тут еще ниже опустилось =((
|
Admin Карма: 9 |
Добавлено: 09:48 3 февраля 2010 | |
чем меньше я представляю, как сделать скрипт, тем больше бонус
здесь всё предельно ясно. алгоритмы на уровне 1 курса информатики: сортировка массивов. пых - простой язык
самое сложное тут (для меня) - кнопка "Сохранить".
Но я готов дать 500 баллов, если в скрипте будет еще возможность сравнивать сгенерированный маплист с текущим маплистом сервера.
т.е. при отпревке запроса на генерацию, предлагается по желанию заполнить texarea, скопировав в неё текущий маплист.
После генерации скрипт сравнивает количество каджой карты там и там. Если карт, к примеру, Д2 не хватает, предлагает добавить их. А если что-то лишнее - убрать
|
Hafner Карма: 0 |
Добавлено: 13:50 3 февраля 2010 | Исправлялось: 1 раз (03-02-10 13:51, Hafner) | |
Начну с того, что сама задумка формирования маплистов на основе статистических данных хороша. Но учитывая разнообразие плагинов, которые народ применяет на своих серверах для ротации карт - текущая идея теряет смысл. Единицы используют стандартный мапшузер и следовательно mapcycle.txt. Админы и сами игроки предпочитают возможность голосования за карты, по итогам которого и происходит changelevel.
Единственный вариант, который, имхо, мог бы существовать - это учесть самые популярные плагины смены карты, дав возможность юзеру выбрать название его плагина и на основе этого выбора формировать маплист. Вот это действительно будет интересно и полезно.
Это так, пища для размышлений
А по поводу сабжа, то набросал вариантик, немного изменив формулу. Там пару моментов надо бы пофиксить, но сейчас уже ухожу и если позже необходимость в этом ещё будет, то исправлю.
ссылка
|
Warcheg Карма: 0 |
Добавлено: 14:11 3 февраля 2010 | Исправлялось: 1 раз (03-02-10 14:12, Warcheg) | |
Пока вот так:
ссылка
Все работает и сохранять можно.
Сравнение текущего маплиста - зачем? Все равно генерится новый, на основе других данных..
|
Warcheg Карма: 0 |
Добавлено: 14:17 3 февраля 2010 | |
Ну вот, буквально на минуты опоздал
Hafner, дай возможность баллы заработать и пхп подтянуть
|
Admin Карма: 9 |
Добавлено: 15:08 3 февраля 2010 | |
Автор: Hafner Цитата:
Начну с того, что сама задумка формирования маплистов на основе статистических данных хороша. Но учитывая разнообразие плагинов, которые народ применяет на своих серверах для ротации карт - текущая идея теряет смысл. Единицы используют стандартный мапшузер и следовательно mapcycle.txt. Админы и сами игроки предпочитают возможность голосования за карты, по итогам которого и происходит changelevel.
Единственный вариант, который, имхо, мог бы существовать - это учесть самые популярные плагины смены карты, дав возможность юзеру выбрать название его плагина и на основе этого выбора формировать маплист. Вот это действительно будет интересно и полезно.
Это так, пища для размышлений 
Об этом, конечно уже размышлял. Но делать сразу монстра считаю неправильным. Сделаем сначала лайтовый прототип. Может, быть появятся еще идеи.
|
Admin Карма: 9 |
Добавлено: 15:09 3 февраля 2010 | |
Автор: Warcheg Цитата:
Пока вот так:
ссылка
Все работает и сохранять можно.
Сравнение текущего маплиста - зачем? Все равно генерится новый, на основе других данных..
выложи код.
|
Warcheg Карма: 0 |
Добавлено: 15:19 3 февраля 2010 | Исправлялось: 2 раз (03-02-10 15:26, Warcheg) | |
ссылка
вот код
После того как посмотришь, удали это сообщение плз
|
Admin Карма: 9 |
Добавлено: 22:08 3 февраля 2010 | |
Hafner +300 - код мне нравится. Алгоритм элегантен, но -50 за shuffle, т.к. это допускает возможность одной и той же карты 2 раза подряд
Warcheg +50 - за попытку
|
Warcheg Карма: 0 |
Добавлено: 00:01 4 февраля 2010 | |
что значит "за попытку"? код рабочий, полностью соответствует заданию :/
Я понимаю что у Hafnerа вышло симпатичнее, но чет желание отбивается что-либо делать в дальнейшем..
|
Admin Карма: 9 |
Добавлено: 07:52 4 февраля 2010 | |
не только симпатичнее но и быстрее. золотые медали дают только за первые места. вот если бы твой код был лучше тогда 1 место.
а пока учи пых. будут ещё задания
|
Warcheg Карма: 0 |
Добавлено: 11:47 4 февраля 2010 | Исправлялось: 2 раз (04-02-10 11:48, Warcheg) | |
Собственно на таких заданиях я и учу пхп  Просто сидеть копаться без цели как то неинтересно..)
Погонял оба скрипта, Хафнера скрипт раза в 3 быстрее моего - щас буду сидеть понимать почему ))
Но есть одно большое и волосатое "но":
Если в качестве массива задать такое:
$a = array ("de_dust"=>10, "de_dust2"=>30, "de_aztec"=>15, "de_nuke"=>25, "de_train"=>40, "de_cpl_strike"=>5, "fy_snow"=>15, "test"=>1);
То его скрипт Хафнера генерирует примерно вот такой текст:
// Server Maplist
de_nuke
de_train
test
de_dust2
de_cpl_strike
de_train
de_dust2
de_dust
fy_snow
de_aztec
Как видно, реализация в итоге кривовата получилась - вне зависимости от времени карты, частота многих одинакова.
У меня ситуация чуть получше, но лист получается очень длинный, а под конец и повторяющийся:
e_train
de_dust2
de_nuke
fy_snow
de_aztec
de_dust
de_cpl_strike
test
de_train
de_dust2
de_nuke
fy_snow
de_aztec
de_dust
de_cpl_strike
de_train
de_dust2
de_nuke
fy_snow
de_aztec
de_dust
de_cpl_strike
de_train
de_dust2
de_nuke
fy_snow
de_aztec
de_dust
de_cpl_strike
de_train
de_dust2
de_nuke
fy_snow
de_aztec
de_dust
de_cpl_strike
de_train
de_dust2
de_nuke
fy_snow
de_aztec
de_dust
de_train
de_dust2
de_nuke
fy_snow
de_aztec
de_dust
А потом идет снова повторение:
"de_train
de_dust2
de_nuke
fy_snow
de_aztec
de_dust"
И так раз 5-6
В принципе на работе сервера это не должно отразиться.. но тем не менее небольшой смысловой косяк у меня есть, хотя он и не влияет на результат
|
Admin Карма: 9 |
Добавлено: 15:35 4 февраля 2010 | |
Автор: Warcheg Цитата:
Если в качестве массива задать такое:
$a = array ("de_dust"=>10, "de_dust2"=>30, "de_aztec"=>15, "de_nuke"=>25, "de_train"=>40, "de_cpl_strike"=>5, "fy_snow"=>15, "test"=>1);
То его скрипт Хафнера генерирует примерно вот такой текст
В его скрипте стоит опция "оставлять редкие карты", при использовании которой все карты будут в списке, но это не увеличивает число вхождений популярных карт как у тебя.
Чтобы тебе было проще понять, представь, что его скрипт сначала делает массив таким:
$a = array ("de_dust"=>20, "de_dust2"=>30, "de_aztec"=>20, "de_nuke"=>25, "de_train"=>40, "de_cpl_strike"=>20, "fy_snow"=>20, "test"=>20);
|
|
|
|
все моды
все регионы
Название фотографии
|