Jump to content

Recommended Posts

[Мод] Система рейтинга игроков

 

screenshot_1.png

 

Данный мод реализует систему рейтинга игроков, которая позволяет игрокам сравнивать своих персонажей по какому-либо критерию в зависимости от того, как администратор настроит систему. Например, можно определить рейтинг как сумму всех базовых характеристик персонажа (см. скриншот выше), тогда с помощью рейтинга можно понять насколько силен персонаж относительно другого. Либо можно выводить в рейтинге количество убитых игроков или монстров. Так же можно выводить количество золота, очков репутации и тому подобное. Система очень гибкая и зависит от фантазии администратора.

 

Рейтинг отображается над именем персонажей и выделяется цветом. После выхода персонажа из игры, рейтинг сохранятся в базе данных, таким образом, можно выводить рейтинг игроков на Вашем сайте.

 

screenshot_2.gif

 

 

Требования

 

Установленный Загрузчик модов для сервера и клиента (PKOdev.NET mod loader).

 

 

Информация о моде

 

Название: pkodev.mod.power;

Версия: 1.1;

Автор: V3ct0r;

Тип: для клиента и сервера (Game.exe и GameServer.exe);

Поддерживаемые исполняемые .exe файлы: GAME_13X_0, GAME_13X_1, GAME_13X_2, GAME_13X_3, GAME_13X_4, GAME_13X_5, GAMESERVER_136 и GAMESERVER_138.

 

Обновление мода от 17.01.2022

 

+ Исправлен баг, когда при убийстве монстра у персонажа игрока не обновлялось количество опыта (спасибо @Rewind и @Tera за обнаружение бага);

+ Формат вывода количества очков рейтинга вынесен в файл настроек pkodev.mod.power.cfg на стороне клиента:

- [{:power:}] -

screenshot_2.png

 

 

 

Установка

 

Сервер:

1) В директории "GameServer\mods" Вашего сервера создайте папку "pkodev.mod.power";

2) Поместите в неё файл DLL-библиотеки мода "pkodev.mod.power.server.13<x>.dll" для Вашей версии GameServer.exe;

3) В файл functions.lua ("GameServer\resource\script\calculate\") запишите следующий скрипт:

-- Power system (pkodev.mod.power)
-- Calculate player's character power amount
function CalculatePower(role)
	
	-- Get some character attributes
	local str = GetChaAttr(role, ATTR_STR)
	local agi = GetChaAttr(role, ATTR_AGI)
	local con = GetChaAttr(role, ATTR_CON)
	local spr = GetChaAttr(role, ATTR_STA)
	local acc = GetChaAttr(role, ATTR_DEX)
	
	-- Power formula
	local formula =  ( str + agi + con + spr + acc )
	
	-- Return calculated power amount and color
	return formula, GetPowerColor(formula)
	
end

-- Power system (pkodev.mod.power)
-- Get color of power value 
function GetPowerColor(power)

	-- Green color (0xFF00FF00)
	return 4278255360
	
end

4) В MSSQL Management Studio выполните SQL-запрос:

USE GameDB
ALTER TABLE character ADD power INT NOT NULL DEFAULT (0)

 

Клиент:

1) В директории "mods" Вашего клиента создайте папку "pkodev.mod.power";

2) Поместите в неё файл DLL-библиотеки мода "pkodev.mod.power.client.13x_<x>.dll" для Вашей версии Game.exe.

3) Поместите в неё файл настроек мода "pkodev.mod.power.cfg" и запишите в него желаемый формат вывода количества очков рейтинга персонажей (маркер {:power:}), например:

- [{:power:}] -

 

 

Настройка мода

 

1) В файле functions.lua, в функции CalculatePower(role) запишите код, который будет вычислять рейтинг персонажа игрока. На вход функции подается переменная role - дескриптор текущего персонажа. На выходе функция должна вернуть рейтинг в виде целого числа. В примере выше, скрипт вычисляет рейтинг как сумму базовых характеристик персонажа;

2) В файле functions.lua, в функции GetPowerColor(power), запишите код, который будет определять цвет рейтинга в зависимости от его числа - power. Например, можно сделать, чтобы рейтинг менее 50 выделялся желтым цветом, от 50 до 100 - зеленым, выше 100 - красным. Цвет необходимо записывать в формате 0xFFRRGGBB, в десятичной системе счисления. Пример: зеленый цвет = 0xFF00FF00, переводим в десятичную ССч и получим число 4278255360, его и нужно записать в скрипт;

3) Мод предусматривает сохранение рейтинга персонажа в базе данных после выхода из игры. Например, для вывода на сайте в различных ТОПах. Если Вам не нужна эта возможность, её можно отключить. Для этого пропустите пункт 4 раздела "Установка - Сервер" и закомментируйте следующие строки в исходном коде серверной части мода (проект pkodev.mod.power.server, файл dllmain.cpp, функции Start() и Stop()), после чего скомпилируйте проект:

DetourAttach(&(PVOID&)pkodev::pointer::CTableCha__SaveAllData, pkodev::hook::CTableCha__SaveAllData);

и

DetourDetach(&(PVOID&)pkodev::pointer::CTableCha__SaveAllData, pkodev::hook::CTableCha__SaveAllData);

4) Чтобы получить рейтинг персонажа из базы данных, выполните SQL-запрос:

SELECT power FROM GameDB.dbo.character WHERE cha_name = '<Имя персонажа>'

5) Настройка на стороне клиента не требуется.

 

 

Скачать

 

1) Бинарные файлы мода (.dll);

2) Исходный код мода для Visual Studio 2019 Community (C++).

 

 

Если Вы столкнулись с какой-либо проблемой, багом или у Вас возникли вопросы, то пишите в данной теме.

  • Like 1
  • Thanks 2

Share this post


Link to post
Share on other sites

Обновление мода от 17.01.2022

 

+ Исправлен баг, когда при убийстве монстра у персонажа игрока не обновлялось количество опыта (спасибо @Rewind и @Tera за обнаружение бага);

+ Формат вывода количества очков рейтинга вынесен в файл настроек pkodev.mod.power.cfg на стороне клиента:

- [{:power:}] -

screenshot_2.png

 

Скачать:

1) Бинарные файлы мода (.dll);

2) Исходный код мода для Visual Studio 2019 Community (C++).

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...