Перейти к содержанию
Авторизация  
kick

Система Привязки Аккаунта К Hwid/ip

Рекомендуемые сообщения

Сервис представляет собой голосовую команду, после ввода которой открывается меню, в котором вы должны выбрать требующуюся опцию.

 

Вы можете выбрать, по какому компоненту ПК будет выполнена привязка (CPU/HDD/BIOS) или комбинировать их.

 

Для установки данного модуля требуется исходный код сервера.

 

Скрытый текст

 

image.png

 

* требуется наличие LameGuard

* требуется наличие исходного кода OverWorld или оверподобный

 

Установка:

1)идём в Исходники\gameserver\src\main\java\l2p\gameserver\handler\voicecommands\impl

2)создаём текстовый документ и переименовываем его в Security.java и вставляем код для тех кому лень скачиваем файл и закидываем сюда Исходники\gameserver\src\main\java\l2p\gameserver\handler\voicecommands\impl

скачать

Скрытый текст

 

package l2p.gameserver.handler.voicecommands.impl;

 

import l2p.gameserver.Config;

import l2p.gameserver.handler.voicecommands.IVoicedCommandHandler;

import l2p.gameserver.model.Player;

import l2p.gameserver.loginservercon.LoginServerCommunication;

import l2p.gameserver.lock.gspackets.ChangeAllowedHwid;

import l2p.gameserver.lock.gspackets.ChangeAllowedIp;

import l2p.gameserver.serverpackets.NpcHtmlMessage;

 

public class Security implements IVoicedCommandHandler

{

 

private String[] _commandList = { "lock", "unlock", "lockIp", "lockHwid", "unlockIp", "unlockHwid" };

 

@Override

public boolean useVoicedCommand(String command, Player activeChar, String target)

{

 

if(command.equalsIgnoreCase("lock"))

{

NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId());

html.setFile("command/lock/lock.htm");

html.replace("%ip_block%", IpBlockStatus());

html.replace("%hwid_block%", HwidBlockStatus());

html.replace("%hwid_val%", HwidBlockBy());

html.replace("%curIP%", activeChar.getIP());

activeChar.sendPacket(html);

return true;

}

 

else if(command.equalsIgnoreCase("lockIp"))

{

 

if(!Config.ALLOW_IP_LOCK)

return true;

 

AuthServerCommunication.getInstance().sendPacket(new ChangeAllowedIp(activeChar.getAccountName(), activeChar.getIP()));

 

NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId());

html.setFile("command/lock/lock_ip.htm");

html.replace("%curIP%", activeChar.getIP());

activeChar.sendPacket(html);

return true;

}

 

else if(command.equalsIgnoreCase("lockHwid"))

{

 

if(!Config.ALLOW_HWID_LOCK)

return true;

 

AuthServerCommunication.getInstance().sendPacket(new ChangeAllowedHwid(activeChar.getAccountName(), activeChar.getNetConnection().getHWID()));

NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId());

html.setFile("command/lock/lock_hwid.htm");

activeChar.sendPacket(html);

 

return true;

}

 

else if(command.equalsIgnoreCase("unlockIp"))

{

 

AuthServerCommunication.getInstance().sendPacket(new ChangeAllowedIp(activeChar.getAccountName(), ""));

 

NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId());

html.setFile("command/lock/unlock_ip.htm");

html.replace("%curIP", activeChar.getIP());

activeChar.sendPacket(html);

return true;

}

 

else if(command.equalsIgnoreCase("unlockHwid"))

{

 

AuthServerCommunication.getInstance().sendPacket(new ChangeAllowedHwid(activeChar.getAccountName(), ""));

 

NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId());

html.setFile("command/lock/unlock_hwid.htm");

activeChar.sendPacket(html);

 

return true;

}

 

return true;

}

 

private String IpBlockStatus()

{

if(Config.ALLOW_IP_LOCK)

return "Разрешено";

else

return "Запрещено";

}

 

private String HwidBlockStatus()

{

if(Config.ALLOW_HWID_LOCK)

return "Разрешено";

return "Запрещено";

}

 

private String HwidBlockBy()

{

String result = "(CPU/HDD)";

 

switch(Config.HWID_LOCK_MASK)

{

case 2:

result = "(HDD)";

break;

case 4:

result = "(BIOS)";

break;

case 6:

result = "(BIOS/HDD)";

break;

case 8:

result = "(CPU)";

break;

case 10:

result = "(CPU/HDD)";

break;

case 12:

result = "(CPU/BIOS)";

break;

case 14:

result = "(CPU/HDD/BIOS)";

break;

case 1:

case 3:

case 5:

case 7:

case 9:

case 11:

case 13:

default:

result = "(unknown)";

 

}

return result;

}

 

@Override

public String[] getVoicedCommandList()

{

return _commandList;

}

}

3)идём Исходники\gameserver\src\main\java\l2p\gameserver\handler\voicecommands открываем VoicedCommandHandler.java нажимаем сtrl+a и удаляем и вставляем это

Скрытый текст

 

 

package l2p.gameserver.handler.voicecommands;

 

import java.util.HashMap;

import java.util.Map;

 

import l2p.commons.data.xml.AbstractHolder;

import l2p.gameserver.handler.voicecommands.impl.Cfg;

import l2p.gameserver.handler.voicecommands.impl.Debug;

import l2p.gameserver.handler.voicecommands.impl.Hellbound;

import l2p.gameserver.handler.voicecommands.impl.Help;

import l2p.gameserver.handler.voicecommands.impl.Offline;

import l2p.gameserver.handler.voicecommands.impl.Repair;

import l2p.gameserver.handler.voicecommands.impl.ServerInfo;

import l2p.gameserver.handler.voicecommands.impl.Wedding;

import l2p.gameserver.handler.voicecommands.impl.WhoAmI;

import l2p.gameserver.handler.voicecommands.impl.Security;

 

public class VoicedCommandHandler extends AbstractHolder

{

private static final VoicedCommandHandler _instance = new VoicedCommandHandler();

 

public static VoicedCommandHandler getInstance()

{

return _instance;

}

 

private Map<String, IVoicedCommandHandler> _datatable = new HashMap<String, IVoicedCommandHandler>();

 

private VoicedCommandHandler()

{

registerVoicedCommandHandler(new Help());

registerVoicedCommandHandler(new Hellbound());

registerVoicedCommandHandler(new Cfg());

registerVoicedCommandHandler(new Offline());

registerVoicedCommandHandler(new Repair());

registerVoicedCommandHandler(new ServerInfo());

registerVoicedCommandHandler(new Wedding());

registerVoicedCommandHandler(new WhoAmI());

registerVoicedCommandHandler(new Debug());

registerVoicedCommandHandler(new Security());

}

 

public void registerVoicedCommandHandler(IVoicedCommandHandler handler)

{

String[] ids = handler.getVoicedCommandList();

for(String element : ids)

_datatable.put(element, handler);

}

 

public IVoicedCommandHandler getVoicedCommandHandler(String voicedCommand)

{

String command = voicedCommand;

if(voicedCommand.indexOf(" ") != -1)

command = voicedCommand.substring(0, voicedCommand.indexOf(" "));

 

return _datatable.get(command);

}

 

@Override

public int size()

{

return _datatable.size();

}

 

@Override

public void clear()

{

_datatable.clear();

}

}

4)скачиваем архив lock и извлекаем его в Исходники\gameserver\src\main\java\l2p\gameserver скачать

5)идём в Исходники\gameserver\src\main\java\l2p\gameserver\network и открываем GameClient

и видим вот эти импорты

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

вставляем ниже них

тут же находим код он находится в самом низу

Скрытый текст

 

@Override

public String toString()

{

return _state + " IP: " + getIpAddr() + (_login == null ? "" : " Account: " + _login) + (_activeChar == null ? "" : " Player : " + _activeChar);

и выше него вставляем

Скрытый текст

 

@SuppressWarnings("deprecation")

public void checkHwid(String allowedHwid)

{

if((!allowedHwid.equalsIgnoreCase("")) && (getHWID() != null) && (!HWID.isEquals(Utils.asByteArray(getHWID()), Utils.asByteArray(allowedHwid), Config.HWID_LOCK_MASK)))

closeNow(false);

}

тут же удаляем в самой последней строчке вот этот знак

Скрытый текст

 

}

и вставляем вот это

Скрытый текст

 

private String hwid;

private int instances;

private int patch;

private boolean isProtected;

 

public String getHWID() {

return hwid;

}

 

public int getInstanceCount() {

return instances;

}

 

public int getPatchVersion() {

return patch;

}

 

public boolean isProtected() {

return isProtected;

}

 

public void setHWID(String hwid) {

this.hwid = hwid;

}

 

public void setInstanceCount(int instances) {

this.instances = instances;

}

 

public void setPatchVersion(int patch) {

this.patch = patch;

}

 

public void setProtected(boolean isProtected) {

this.isProtected = isProtected;

}

}

6)идём сюда Исходники\gameserver\src\main\java\l2p\gameserver и открываем Config.java

вставляем

Скрытый текст

 

//

//Lock

//

public static boolean ALLOW_IP_LOCK;

public static boolean ALLOW_HWID_LOCK;

public static int HWID_LOCK_MASK;

это можно вставить сразу после

public static final String GM_ACCESS_FILES_DIR = "config/GMAccess.d/";

потом ищем вот эту строчку public static void loadServerConfig()

выше этой строки вставляем GAME_SERVER_LOGIN_HOST = serverSettings.getProperty("LoginHost", "127.0.0.1");

7)идём сюда Исходники\dist\gameserver\config\default

и открываем server.properties и в самый низ вставляем вот это

Скрытый текст

 

 

# ---------------------------------------------------------------------------#

# Сервис привязки аккаунта к IP и Hwid

# ---------------------------------------------------------------------------#

 

# Разрешить игрокам привязывать аккаунт к IP

# Привязка осуществляется с помощью команды .lock

# По умолчанию: True

AllowLockIP = true

 

# Разрешить игрокам привязывать аккаунт к HWid

# Работает только в случае когда стоит LameGuard

# Привязка осуществляется с помощью команды .lock

# По умолчанию: True

AllowLockHwid = true

 

# Битовая маска привязки аккаунта по HWid

# 2 - HDD

# 4 - BIOS

# 8 - CPU

# Пример: HWIDBan = 10 (привязка по HWID будет считатся только по HDD и CPU)

# Пример: HWIDBan = 14 (привязка по HWID будет считатся по HDD, CPU и BIOS)

HwidLockMask = 14

# ---------------------------------------------------------------------------#

8)скачиваем скачать идём сюда Исходники\dist\gameserver\data\html-ru\command

и извлекаем архив

9)скачиваем библиотеку Скачать

lameguard и кладём её вод сюда Исходники\lib

10)прописываем в батнике GameServer:

com.LameGuard.LameGuard перед l2p

пример:

 

Скрытый текст

 

@echo off

:start

echo Starting L2s GameServer.

echo.

 

java -server -Dfile.encoding=UTF-8 -Xmx1G -cp config;./* com.LameGuard.LameGuard l2p.gameserver.GameServer

 

REM Debug ...

REM java -Dfile.encoding=UTF-8 -cp config;./* -Xmx1G -Xnoclassgc -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=7456 l2s.gameserver.GameServer

 

if ERRORLEVEL 2 goto restart

if ERRORLEVEL 1 goto error

goto end

:restart

echo.

echo Server restarted ...

echo.

goto start

:error

echo.

echo Server terminated abnormaly ...

echo.

:end

echo.

echo Server terminated ...

echo.

 

pause

Вот практически и всё

11)идём сюда Исходники\loginserver\src\main\java\l2p\loginserver\gameservercon и вставляем то что щас скачаете

Скачать

12)идём сюда Исходники\loginserver\src\main\java\l2p\loginserver\gameservercon и открываем PacketHandler

после :

import l2p.loginserver.gameservercon.gspackets.SetAccountInfo;

добавляем:

import l2p.loginserver.gameservercon.gspackets.ChangeAccessLevel;

import l2p.loginserver.gameservercon.gspackets.ChangeAllowedHwid;

после:

Скрытый текст

 

 

case 0x05:

packet = new SetAccountInfo();

break;

ниже добавляем:

Скрытый текст

 

 

case 0x07:

packet = new ChangeAllowedIp();

break;

case 0x09:

packet = new ChangeAllowedHwid();

break;

13)Исходники\dist\loginserver открываем батник логин сервера и ставим то что мы ставили в стартгамесервер

14)компилим сборку заходим в игру пишим .lock и должно выскочить такое окошко

15) Залить sql в БД - скачать

P.S буду радовать ещё такими фишками на серв

P.S.S если будут ошибки пишете помогу исправить

Автор КиК

Изменено пользователем Artur_xD
  • Upvote 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вау, просто молодец! Попробую переделать по себя!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Супер, но под ИТ пойдет такая штука ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А патч файлик сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Супер, но под ИТ пойдет такая штука ?

нет я написал то что для оверворлд и для оверподобных

 

А патч файлик сделать?

сори несмогу сделать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ultrakill могу тебе на л2п ит скинуть там наподобие этого

там пишешь .lock окно выскакиевает и вводишь сколько дней и нажимаешь установить блокировку по ипу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

без лямки или другого парсера инфы, никак не сделать такую привязку :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ultrakill могу тебе на л2п ит скинуть там наподобие этого

там пишешь .lock окно выскакиевает и вводишь сколько дней и нажимаешь установить блокировку по ипу

Да мне по ИПу не нужно... На ИП уже давно стоит привязка... А вот на HWID бы было хорошо....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

прошу прозения забыл последний пункт sql залить скачать

Модераторы добавьте пожалуйста 15 пунктом

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
прошу прозения забыл последний пункт sql залить скачать

Модераторы добавьте пожалуйста 15 пунктом

Добавил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а что мешает написать автору самим?

автор забанен

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...