Благодарности: Docaner - За большую помощь с Array-частью + nVault-часть. ( взял с его системы предупреждений игрокам )
xUnicorn ( t3rkecorejz ) - за SQL-часть. ( взял с его системы денег )
Данный плагин добавляет на ваш сервер "Ранк-Систему". Да, я знаю, таких плагинов море, но, я попытался сделать плагин на приемлимом коде с кучей настроек =). При тесте плагина ошибок не замечалось. Всё работало прекрасно. В том числе и системы сохранения. Если будут какие-то баги с плагином, можете написать в комментарии. В след.версиях я попытаюсь их исправить.
В чём её особенности ? - Гибкая настройка. Можно настроить всю систему. - Присутствует два конфигурационных файла. В одном настройка всей системы, в другом настройка ранков и опыта. - Два типа сохранения. nVault / SQL - Доп.меню для выдачи опыта/уровня и просмотра информации о игроках.
Предусловия: - Перед тем как подключать плагин к SQL, создайте бд ( базу данных ) в этом самом SQL. - Указав то название БД, которое вы указали в кваре "zp_sql_data_database". - В левел системе есть "0 уровень", он вписан в ини файле, и его не следует удалять. - Почему так? Потому что отсчёт Аррая начинается с 0. В след.версиях возможно пофикшу это дело. А пока так - Ещё скажу, что система сделана именно под первый уровень. Так что, сделать активным 0 уровень не получится. - Если вы собираетесь установить уровень игроку который ниже его собственного, опыт игрока обнуляется. - Натив "zp_get_user_rankname". Как им пользоваться ? Все гениально просто. 1. Создаём переменную с массивом 64. ( Пример: new szRankName[64]; ). ( Переменная может быть любого названия ). 2. Получаем нативом ранк. ( Пример: zp_get_user_rankname(iPlayer, 0, szRankName, charsmax(szRankName)); ) - Почему надо делать именно так ? Давайте разбираться. И так, первые два аргумента этого натива - Индекс игрока и команда. 0 - Люди. 1 - Зомби. - Следующие два аргумента - это то, куда будет записываться название ранка, и размер этого массива. - В нашем случае, мы создали переменную szRankName с массивом 64. И с помощью функции charsmax вычислили размер этого массива. 3. Когда вам надо будет где-то вписать этот ранк, вы должны вписать не сам натив, а тот самый массив, который мы создали. - Пример: show_hudmessage(0, "%s", szRankName); - В данном примере, я вывел худ-сообщение как ранк игрока. - Почему именно спецификатор %s ? Потому что %s обозначает строку. - Сохранение данных игрока идёт так: Уровень человека, Опыт человека, Уровень зомби, Опыт зомби.
Видео:
// Тип сохранения - nVault. Закомментируйте, если хотите сохранение по SQL. #define SAVE_TYPE_NVAULT
// Путь до вашего ini/cfg файла. Изначально они такие: // configs/z_ranks_system/z_ranks.ini | z_ranks_system/z_ranks.cfg // Папку configs вписывать в путь не надо. Она автоматически добавляется при чтении файлов. #define INI_FILE_PATH "z_ranks_system/z_ranks.ini" #define CFG_FILE_PATH "z_ranks_system/z_ranks.cfg"
#define TASK_SHOW_HUD 523131 // Таск худа
// iTeam - Команда игрока. Всего их две. // 0 - люди, 1 - зомби. Поставите выше либо ниже - будет ошибка.
native zp_get_user_level(pPlayer, iTeam); native zp_get_user_max_level(pPlayer, iTeam); native zp_get_user_exp(pPlayer, iTeam); native zp_get_user_next_exp(pPlayer, iTeam); native zp_get_user_rankname(pPlayer, iTeam, szRankName[], iLen); // Перед тем как получать название ранка, прочитайте предусловие по поводу этого натива.
// Конфигурационный файл плагина "Z-Ranks System". // В этом файле вы можете изменить настройки данного плагина. //
zp_sql_data_host "127.0.0.1" // Название хоста ( изначально стоит локальный ) zp_sql_data_user "root" // Логин от SQL zp_sql_data_password "" // Пароль от SQL zp_sql_data_database "zranks_database" // Название БД ( базы данных ) zp_sql_data_tablename "zp_zranks_system" // Название таблицы
zp_nvault_data_database "zranks_users" // Название БД ( базы данных ) для nVault. ( Если не используете, можете оставить пустым )
zp_infected_human_exp "1" // сколько опыта давать игроку за заражение человека. zp_killed_zombie_exp "1" // Сколько опыта давать игроку за убийство зомби. zp_killed_human_exp "2" // Сколько опыта давать игроку за убийство человека. zp_killed_nemesis_exp "3" // Сколько опыта давать игроку за убийство немезиды. zp_killed_survivor_exp "3" // Сколько опыта давать игроку за убийство выжившего. zp_killed_last_human_exp "3" // Сколько опыта давать игроку за убийство последнего человека. zp_killed_last_zombie_exp "3" // Сколько опыта давать игроку за убийство последнего зомби. zp_killed_first_zombie_exp "2" // Сколько опыта давать игроку за убийство первого зомби.
zp_experience_reset "0" // Обнулять ли опыт после получения нового уровня ? [ 0 - нет | 1 - да ] zp_level_up_message "1" // Отправлять ли игроку сообщение с поздравлением после получения нового уровня ? [ 0 - нет | 1 - да ] zp_special_round_worked "1" // Добавлять ли опыт Немезиде/Выжившему в раундах "Немезида | Выживший". [ 0 - нет | 1 - да ] zp_level_up_text "!g[Z-Ranks] !yПоздравляем! Вы получили новый !gуровень!y!" // само сообщение ( если включена отправка этого сообщения ). // !g - Зеленый | !y - желтый | !t - Цвет команды
zp_hud_enable "1" // Включить ли худ-сообщение оповещающее о том, какой у игрока уровень/опыт/ранк. zp_hud_rgb_color "200 166 150" // Цвет худ-сообщения ( если включен сам худ ). // Сейчас сам худ находится под радаром. zp_hud_pos_x "0.01" // Координата X у худа. Идёт слево-направо. zp_hud_pos_y "0.15" // Координата Y у худа. Идёт сверху-вниз.
; Конфигурационный файл плагина "Z-Ranks System". ; В этом файле вы можете настроить кол-во необходимого опыта до след.уровня, а так же звания на этом/след.уровне. ; Настройки: ; "Кол-во необходимого Опыта (Люди)" "Звание (Люди)"" "Кол-во необходимого Опыта (Зомби)" "Звание (Зомби)" ; Пример: ; "20" "Новичок" "20" "Зомбарь"
"" "" "" "" // 0 уровень ( не используется | не удалять, чтобы потом не было проблем с опытом и ранками ) "50" "Новичок" "100" "Инфицированный" // 1 уровень "150" "Бродяга" "230" "Зараженный" // 2 уровень, дальше мне лень писать "200" "Солдат" "340" "Зомбарь" "400" "Воин" "600" "Мутант" "650" "Уцелевший" "950" "Гигант" "1000" "Выживший" "1250" "Немезида"
1. Array можно и не с нуля считать, это не предъява я просто ставлю в известность. 2. Подобных плагинов на звания для зм серверов уже достаточно) Идёт изобретание велосипеда, да за такие слова я понимаю что можете забросать тапками. Но суть то ясна и очевидна.