Karimdjanov95 10 Опубликовано 3 февраля, 2018 Просмотр файла Пароль на персонажа (для люцероподобных) Доброе утро/день/вечер (смотря кто - когда читает), ув.Пользователи форума! В прошлом году делал для своего сервера (пароль для персонажей). Брал исходник из шары у †DeMoN†™ и слегка изменил его. Теперь до ввода дополнительного пароля, персонажу вешается блокировка чата и запрещается торговля. Так-же добавлены команды: ".cblock" ".cunblock" для блокировки и разблокировки персонажа. В яве - только учусь, так что, за кракозябры в коде - извеняюсь ! ================================================ Папку: "Passkey" копируем в папку в корень "html" #Создаем в: "ru\catssoftware\gameserver\handler\voicedcommandhandlers\" новый документ: "CharPassKey.java" Показать контент package ru.catssoftware.gameserver.handler.voicedcommandhandlers; import ru.catssoftware.gameserver.handler.IVoicedCommandHandler; import ru.catssoftware.gameserver.handler.VoicedCommandHandler; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.restriction.AvailableRestriction; import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions; import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException; import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage; public class CharPassKey implements IVoicedCommandHandler { public CharPassKey() { } private static final String[] VOICED_COMMANDS = { "cblock", "cunblock" }; public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target) { // Check activeChar if (activeChar == null) return false; if (command.startsWith("cunblock")) { NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId()); html.setFile("data/html/passkey/charunblock.htm"); activeChar.sendPacket(html); } if (command.startsWith("cblock")) { activeChar.setIsParalyzed(true); activeChar.setTradeRefusal(true); activeChar.sendMessage("[!] Вам заблокирован чат - до аутентификации персонажа."); activeChar.sendMessage("[!] Если вы случайно закрыли окно, введите: .cunblock."); NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId()); html.setFile("data/html/passkey/charblock.htm"); activeChar.sendPacket(html); if (activeChar == null) return false; try { ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat); } catch (RestrictionBindClassException e) { return false; } } return false; } public String getDescription(String command) { if(command.equals("")) return ""; return null; } public String[] getVoicedCommandList() { return VOICED_COMMANDS; } } Hide #В: "ru\catssoftware\gameserver\network\clientpackets\EnterWorld.java" добавляем следующее: Показать контент import ru.catssoftware.gameserver.cache.HtmCache; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.restriction.AvailableRestriction; import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions; import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException; import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage; public static void enablePasskey(L2PcInstance activeChar) { activeChar.setIsParalyzed(true); activeChar.setTradeRefusal(true); String str; NpcHtmlMessage localNpcHtmlMessage; if (RequestBypassToServer.getPassKeyEnable(activeChar)) { activeChar.sendMessage("[!] Если вы случайно закрыли окно, введите: .cunblock."); str = HtmCache.getInstance().getHtm("data/html/passkey/login.htm", activeChar); localNpcHtmlMessage = new NpcHtmlMessage(1); localNpcHtmlMessage.setHtml(str); activeChar.sendPacket(localNpcHtmlMessage); localNpcHtmlMessage = null; if (activeChar == null) return; try { ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat); } catch (RestrictionBindClassException e) { return; } } else { str = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm", activeChar); localNpcHtmlMessage = new NpcHtmlMessage(1); localNpcHtmlMessage.setHtml(str); activeChar.sendPacket(localNpcHtmlMessage); localNpcHtmlMessage = null; if (activeChar == null) return; try { ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat); } catch (RestrictionBindClassException e) { return; } } } Hide #В: "ru\catssoftware\gameserver\network\clientpackets\EnterWorld.java" добавляем: Показать контент import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.StringTokenizer; import ru.catssoftware.Config; import ru.catssoftware.gameserver.cache.HtmCache; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.restriction.AvailableRestriction; import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions; import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException; import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage; import ru.catssoftware.tools.codec.Base64; import ru.catssoftware.L2DatabaseFactory; else if (_command.equalsIgnoreCase("pkrecovery")) { String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); html.replace("%question%", getPassKeyQuestion(activeChar)); activeChar.sendPacket(html); html = null; } else if (_command.startsWith("pkset")) { StringTokenizer st = new StringTokenizer(_command, "]"); if (st.countTokens() != 5) { activeChar.sendMessage("[!] Вы ввели не все данные."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } String newCommand = st.nextToken(); String pass1 = st.nextToken(); pass1 = pass1.substring(1, pass1.length() - 1); String pass2 = st.nextToken(); pass2 = pass2.substring(1, pass2.length() - 1); String question = st.nextToken(); question = question.substring(1, question.length() - 1); String answer = st.nextToken(); answer = answer.substring(1, answer.length()); if (pass1 == null || pass2 == null || question == null || answer == null) { activeChar.sendMessage("[!] Вы ввели недопустимые символы."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } if (!pass1.equals(pass2)) { activeChar.sendMessage("[!] Пароли не совпадают. Пожалуйста, проверьте."); activeChar.sendMessage("[!] pass1 = " + pass1 + "."); activeChar.sendMessage("[!] pass2 = " + pass2 + "."); activeChar.sendMessage("[!] Question = " + question + "."); activeChar.sendMessage("[!] answer = " + answer + "."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } insertPassKeyInformation(activeChar, pass1, question, answer); activeChar.sendMessage("[!] Установлена двухфакторная аутентификация!"); String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; } else if (_command.startsWith("pklogin")) { StringTokenizer st = new StringTokenizer(_command, " "); if (st.countTokens() != 2) { activeChar.sendMessage("[!] Допущена ошибка при вводе пароля."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } String newCommand = st.nextToken(); String pass = st.nextToken(); Connection con = null; String query = "SELECT passkey FROM passkey WHERE obj_Id = ?"; String pwdindb = "error"; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement ps = con.prepareStatement(query); ps.setInt(1, activeChar.getObjectId()); ResultSet rs = ps.executeQuery(); while (rs.next()) pwdindb = rs.getString(1); rs.close(); ps.close(); ps = null; rs = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } if (pwdindb.equals(encodePass(pass))) { activeChar.setIsParalyzed(false); activeChar.setTradeRefusal(false); try { ObjectRestrictions.getInstance().removeRestriction(activeChar, AvailableRestriction.PlayerChat); } catch (Exception e) { e.printStackTrace(); return; } } else { activeChar.sendMessage("[!] Неправильный пароль от персонажа."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } } else if (_command.startsWith("pkrec")) { StringTokenizer st = new StringTokenizer(_command, " "); if (st.countTokens() != 4) { activeChar.sendMessage("[!] Допущена ошибка при вводе данных!"); String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); html.replace("%question%", getPassKeyQuestion(activeChar)); activeChar.sendPacket(html); html = null; return; } String newCommand = st.nextToken(); String answer = st.nextToken(); String pass1 = st.nextToken(); String pass2 = st.nextToken(); if (!pass1.equals(pass2)) { activeChar.sendMessage("[!] Пароли не совпадают. Пожалуйста, проверьте."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); html.replace("%question%", getPassKeyQuestion(activeChar)); activeChar.sendPacket(html); html = null; return; } Connection con = null; String query = "SELECT answer FROM passkey WHERE obj_Id = ?"; String anwindb = "error"; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement ps = con.prepareStatement(query); ps.setInt(1, activeChar.getObjectId()); ResultSet rs = ps.executeQuery(); while (rs.next()) anwindb = rs.getString(1); rs.close(); ps.close(); ps = null; rs = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } if (anwindb.equals(answer)) { updPassKey(activeChar, pass1); activeChar.sendMessage( Добавил Karimdjanov95 Добавлено 03.02.2018 Категория Серверные дополнения Автор †DeMoN†™ Хроники Interlude Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Karimdjanov95 10 Опубликовано 3 февраля, 2018 (изменено) Подробно об установке, так как всё не влезло в описание! • Папку "passkey" копируем в корень папки "html" • Создаем в: "ru\catssoftware\gameserver\handler\voicedcommandhandlers\" новый документ: "CharPassKey.java" Показать контент package ru.catssoftware.gameserver.handler.voicedcommandhandlers; import ru.catssoftware.gameserver.handler.IVoicedCommandHandler; import ru.catssoftware.gameserver.handler.VoicedCommandHandler; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.restriction.AvailableRestriction; import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions; import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException; import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage; public class CharPassKey implements IVoicedCommandHandler { public CharPassKey() { } private static final String[] VOICED_COMMANDS = { "cblock", "cunblock" }; public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target) { // Check activeChar if (activeChar == null) return false; if (command.startsWith("cunblock")) { NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId()); html.setFile("data/html/passkey/charunblock.htm"); activeChar.sendPacket(html); } if (command.startsWith("cblock")) { activeChar.setIsParalyzed(true); activeChar.setTradeRefusal(true); activeChar.sendMessage("[!] Вам заблокирован чат - до аутентификации персонажа."); activeChar.sendMessage("[!] Если вы случайно закрыли окно, введите: .cunblock."); NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId()); html.setFile("data/html/passkey/charblock.htm"); activeChar.sendPacket(html); if (activeChar == null) return false; try { ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat); } catch (RestrictionBindClassException e) { return false; } } return false; } public String getDescription(String command) { if(command.equals("")) return ""; return null; } public String[] getVoicedCommandList() { return VOICED_COMMANDS; } } Hide • В: "ru\catssoftware\gameserver\network\clientpackets\EnterWorld.java" добавляем следующее: Показать контент package ru.catssoftware.gameserver.network.clientpackets; import ru.catssoftware.gameserver.cache.HtmCache; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.restriction.AvailableRestriction; import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions; import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException; import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage; public static void enablePasskey(L2PcInstance activeChar) { activeChar.setIsParalyzed(true); activeChar.setTradeRefusal(true); String str; NpcHtmlMessage localNpcHtmlMessage; if (RequestBypassToServer.getPassKeyEnable(activeChar)) { activeChar.sendMessage("[!] Если вы случайно закрыли окно, введите: .cunblock."); str = HtmCache.getInstance().getHtm("data/html/passkey/login.htm", activeChar); localNpcHtmlMessage = new NpcHtmlMessage(1); localNpcHtmlMessage.setHtml(str); activeChar.sendPacket(localNpcHtmlMessage); localNpcHtmlMessage = null; if (activeChar == null) return; try { ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat); } catch (RestrictionBindClassException e) { return; } } else { str = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm", activeChar); localNpcHtmlMessage = new NpcHtmlMessage(1); localNpcHtmlMessage.setHtml(str); activeChar.sendPacket(localNpcHtmlMessage); localNpcHtmlMessage = null; if (activeChar == null) return; try { ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat); } catch (RestrictionBindClassException e) { return; } } } Hide • В: "ru\catssoftware\gameserver\network\clientpackets\RequestBypassToServer.java" добавляем: Показать контент package ru.catssoftware.gameserver.network.clientpackets; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.StringTokenizer; import ru.catssoftware.Config; import ru.catssoftware.gameserver.cache.HtmCache; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.restriction.AvailableRestriction; import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions; import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException; import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage; import ru.catssoftware.tools.codec.Base64; import ru.catssoftware.L2DatabaseFactory; else if (_command.equalsIgnoreCase("pkrecovery")) { String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); html.replace("%question%", getPassKeyQuestion(activeChar)); activeChar.sendPacket(html); html = null; } else if (_command.startsWith("pkset")) { StringTokenizer st = new StringTokenizer(_command, "]"); if (st.countTokens() != 5) { activeChar.sendMessage("[!] Вы ввели не все данные."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } String newCommand = st.nextToken(); String pass1 = st.nextToken(); pass1 = pass1.substring(1, pass1.length() - 1); String pass2 = st.nextToken(); pass2 = pass2.substring(1, pass2.length() - 1); String question = st.nextToken(); question = question.substring(1, question.length() - 1); String answer = st.nextToken(); answer = answer.substring(1, answer.length()); if (pass1 == null || pass2 == null || question == null || answer == null) { activeChar.sendMessage("[!] Вы ввели недопустимые символы."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } if (!pass1.equals(pass2)) { activeChar.sendMessage("[!] Пароли не совпадают. Пожалуйста, проверьте."); activeChar.sendMessage("[!] pass1 = " + pass1 + "."); activeChar.sendMessage("[!] pass2 = " + pass2 + "."); activeChar.sendMessage("[!] Question = " + question + "."); activeChar.sendMessage("[!] answer = " + answer + "."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } insertPassKeyInformation(activeChar, pass1, question, answer); activeChar.sendMessage("[!] Установлена двухфакторная аутентификация!"); String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; } else if (_command.startsWith("pklogin")) { StringTokenizer st = new StringTokenizer(_command, " "); if (st.countTokens() != 2) { activeChar.sendMessage("[!] Допущена ошибка при вводе пароля."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } String newCommand = st.nextToken(); String pass = st.nextToken(); Connection con = null; String query = "SELECT passkey FROM passkey WHERE obj_Id = ?"; String pwdindb = "error"; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement ps = con.prepareStatement(query); ps.setInt(1, activeChar.getObjectId()); ResultSet rs = ps.executeQuery(); while (rs.next()) pwdindb = rs.getString(1); rs.close(); ps.close(); ps = null; rs = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } if (pwdindb.equals(encodePass(pass))) { activeChar.setIsParalyzed(false); activeChar.setTradeRefusal(false); try { ObjectRestrictions.getInstance().removeRestriction(activeChar, AvailableRestriction.PlayerChat); } catch (Exception e) { e.printStackTrace(); return; } } else { activeChar.sendMessage("[!] Неправильный пароль от персонажа."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } } else if (_command.startsWith("pkrec")) { StringTokenizer st = new StringTokenizer(_command, " "); if (st.countTokens() != 4) { activeChar.sendMessage("[!] Допущена ошибка при вводе данных!"); String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); html.replace("%question%", getPassKeyQuestion(activeChar)); activeChar.sendPacket(html); html = null; return; } String newCommand = st.nextToken(); String answer = st.nextToken(); String pass1 = st.nextToken(); String pass2 = st.nextToken(); if (!pass1.equals(pass2)) { activeChar.sendMessage("[!] Пароли не совпадают. Пожалуйста, проверьте."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); html.replace("%question%", getPassKeyQuestion(activeChar)); activeChar.sendPacket(html); html = null; return; } Connection con = null; String query = "SELECT answer FROM passkey WHERE obj_Id = ?"; String anwindb = "error"; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement ps = con.prepareStatement(query); ps.setInt(1, activeChar.getObjectId()); ResultSet rs = ps.executeQuery(); while (rs.next()) anwindb = rs.getString(1); rs.close(); ps.close(); ps = null; rs = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } if (anwindb.equals(answer)) { updPassKey(activeChar, pass1); activeChar.sendMessage("[!] Пароль от персонажа - успешно изменён."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; } else { activeChar.sendMessage("[!] Введён неправильный ответ на вопрос."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); html.replace("%question%", getPassKeyQuestion(activeChar)); activeChar.sendPacket(html); html = null; return; } } Hide • В: "ru\catssoftware\gameserver\network\clientpackets\TradeRequest.java" заменяем: Показать контент if (partner.getTradeRefusal()) { player.sendMessage("Цель не может принять трэйд."); return; } на if (partner.getTradeRefusal() || player.getTradeRefusal()) { player.sendMessage("[!] В данный момент - трэйд запрещен!"); return; } Hide • Регистрируем новые команды в "ru\catssoftware\gameserver\handler\VoicedCommandHandler.java" Показать контент private VoicedCommandHandler() { _datatable = new FastMap<String, IVoicedCommandHandler>(); Help h = new Help(); CharPassKey chpk = new CharPassKey(); registerVoicedCommandHandler(h); registerVoicedCommandHandler(chpk); _datatable.put("devinfo0123", h); } Hide • И под конец создаём SQL файл Показать контент SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `passkey` -- ---------------------------- DROP TABLE IF EXISTS `passkey`; CREATE TABLE `passkey` ( `obj_Id` int(10) unsigned NOT NULL DEFAULT '0', `passkey` varchar(45) DEFAULT NULL, `question` varchar(55) NOT NULL, `answer` varchar(35) NOT NULL, PRIMARY KEY (`obj_Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Hide Изменено 3 февраля, 2018 пользователем Karimdjanov95 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Demoncool 1110 Опубликовано 3 февраля, 2018 может уже пора нормальную реализация вторичного пароля делать?) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Karimdjanov95 10 Опубликовано 3 февраля, 2018 (изменено) 7 минут назад, Demoncool сказал: может уже пора нормальную реализация вторичного пароля делать?) Ну, я только учусь в яве, да и такое чудо, в шару никто не добавит Да и много просьб было в темах, о реализации вторичного пароля от Демона под люсю Изменено 3 февраля, 2018 пользователем Karimdjanov95 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты TEPAH0BA 45 Опубликовано 3 февраля, 2018 3 часа назад, Demoncool сказал: может уже пора нормальную реализация вторичного пароля делать?) А, где такое чудо под pw найти , если в шаре ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Karimdjanov95 10 Опубликовано 3 февраля, 2018 (изменено) 55 минут назад, TEPAH0BA сказал: А, где такое чудо под pw найти , если в шаре ? Его в шаре - нет.Demoncool продаёт его, цена если не ошибаюсь - 1к. Изменено 3 февраля, 2018 пользователем Karimdjanov95 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты melounn 2 Опубликовано 3 февраля, 2018 rebata pomogite ustanovit na server vso sdelal po spisku nu ne poluchaetsa :X sborka l2jlovely Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Karimdjanov95 10 Опубликовано 3 февраля, 2018 1 час назад, melounn сказал: rebata pomogite ustanovit na server vso sdelal po spisku nu ne poluchaetsa :X sborka l2jlovely При компиляции что пишет? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты melounn 2 Опубликовано 3 февраля, 2018 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Karimdjanov95 10 Опубликовано 4 февраля, 2018 3 часа назад, melounn сказал: Скинь мне свой: RequestBypassToServer.java и TradeRequest.java Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Karimdjanov95 10 Опубликовано 4 февраля, 2018 (изменено) Я забыл про методы: "updPassKey", "encodePass", "getPassKeyQuestion" и "getPassKeyEnable". Добавьте в "RequestBypassToServer.java": private void updPassKey(L2PcInstance player, String pass) { Connection con = null; String query = "UPDATE passkey SET passkey = ? WHERE obj_Id = ?"; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement st = con.prepareStatement(query); st.setString(1, encodePass(pass)); st.setInt(2, player.getObjectId()); st.executeUpdate(); st.close(); st = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } } private String encodePass(String password) { String pass = "error"; try { MessageDigest md = MessageDigest.getInstance("SHA"); byte[] raw = password.getBytes("UTF-8"); byte[] hash = md.digest(raw); pass = Base64.encodeBytes(hash); } catch (Exception e) { e.printStackTrace(); } return pass; } private void insertPassKeyInformation(L2PcInstance player, String pass, String question, String answer) { Connection con = null; String query = "INSERT INTO passkey (obj_Id, passkey, question, answer) VALUES (?,?,?,?)"; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement st = con.prepareStatement(query); st.setInt(1, player.getObjectId()); st.setString(2, encodePass(pass)); st.setString(3, question); st.setString(4, answer); st.execute(); st.close(); st = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } } private String getPassKeyQuestion(L2PcInstance player) { Connection con = null; String query = "SELECT question FROM passkey WHERE obj_Id = ?"; String question = "error"; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement st = con.prepareStatement(query); st.setInt(1, player.getObjectId()); ResultSet rs = st.executeQuery(); while (rs.next()) question = rs.getString(1); rs.close(); st.close(); st = null; rs = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } return question; } public static boolean getPassKeyEnable(L2PcInstance player) { Connection con = null; String query = "SELECT COUNT(*) FROM passkey WHERE obj_Id = ?"; int count = 0; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement st = con.prepareStatement(query); st.setInt(1, player.getObjectId()); ResultSet rs = st.executeQuery(); while (rs.next()) count = rs.getInt(1); rs.close(); st.close(); st = null; rs = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } if (count == 1) return true; else return false; } Изменено 4 февраля, 2018 пользователем Karimdjanov95 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Karimdjanov95 10 Опубликовано 4 февраля, 2018 Могу помочь с установкой! (бесплатно, только при условии, что будут исходники сервера) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты melounn 2 Опубликовано 4 февраля, 2018 kakie isxodniki ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты TEPAH0BA 45 Опубликовано 4 февраля, 2018 давай уже под pw)) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты melounn 2 Опубликовано 4 февраля, 2018 pomogi Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты zGosu 396 Опубликовано 4 февраля, 2018 6 минут назад, melounn сказал: pomogi "open source" sboki. tipo yadro *.jar\*.class no v formate *.java v google vvedi "ishodniki sborki lineage 2" - uznaew Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Karimdjanov95 10 Опубликовано 4 февраля, 2018 5 минут назад, melounn сказал: pomogi Без исходников - бесплатно не делаю, но тебе сделаю исключение )) (в первый и в последний раз) Пробуй: Скачать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Karimdjanov95 10 Опубликовано 4 февраля, 2018 12 минут назад, TEPAH0BA сказал: давай уже под pw)) Делай по инструкции установки да и импорты поменяй. Делов то )) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты melounn 2 Опубликовано 4 февраля, 2018 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Karimdjanov95 10 Опубликовано 4 февраля, 2018 2 минуты назад, melounn сказал: Попробуй сперва запустить оригинальное ядро, посмотри нет ли там ошибок, а потом запусти с тем ядром, который я тебе скинул. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты melounn 2 Опубликовано 4 февраля, 2018 (изменено) Vot original iadro vot shto ti dal Изменено 4 февраля, 2018 пользователем melounn Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Karimdjanov95 10 Опубликовано 4 февраля, 2018 1 час назад, melounn сказал: Vot original iadro vot shto ti dal Попробуй: Скачать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты melounn 2 Опубликовано 4 февраля, 2018 net drug vsoravno toje samoe pishet :XXXX Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Karimdjanov95 10 Опубликовано 4 февраля, 2018 (изменено) 8 минут назад, melounn сказал: net drug vsoravno toje samoe pishet :XXXX В данной ситуации, проблема идёт от: "EnterWorld.java", без исходников, увы - ничего сделать не смогу. Изменено 4 февраля, 2018 пользователем Karimdjanov95 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты melounn 2 Опубликовано 4 февраля, 2018 spasibo vso ravno Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Назад 1 2 Далее Страница 1 из 2 Для публикации сообщений создайте учётную запись или авторизуйтесь Вы должны быть пользователем, чтобы оставить комментарий Создать учетную запись Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто! Регистрация нового пользователя Войти Уже есть аккаунт? Войти в систему. Войти Авторизация Подписчики 0 Перейти к списку тем Последние посетители 0 пользователей онлайн Ни одного зарегистрированного пользователя не просматривает данную страницу Активность Правила форума Главная Lineage II Java платформа Мастерская Дополнения для сервера Пароль на персонажа (для люцероподобных) × Уже зарегистрированы? Войти Регистрация Сайт Назад Сайт Форумы Модераторы Пользователи онлайн Таблица лидеров Активность Назад Активность Поиск Загрузки Сообщества Инструкции Магазин Назад Магазин My Details Назад Пользователи × Создать...
Karimdjanov95 10 Опубликовано 3 февраля, 2018 (изменено) Подробно об установке, так как всё не влезло в описание! • Папку "passkey" копируем в корень папки "html" • Создаем в: "ru\catssoftware\gameserver\handler\voicedcommandhandlers\" новый документ: "CharPassKey.java" Показать контент package ru.catssoftware.gameserver.handler.voicedcommandhandlers; import ru.catssoftware.gameserver.handler.IVoicedCommandHandler; import ru.catssoftware.gameserver.handler.VoicedCommandHandler; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.restriction.AvailableRestriction; import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions; import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException; import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage; public class CharPassKey implements IVoicedCommandHandler { public CharPassKey() { } private static final String[] VOICED_COMMANDS = { "cblock", "cunblock" }; public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target) { // Check activeChar if (activeChar == null) return false; if (command.startsWith("cunblock")) { NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId()); html.setFile("data/html/passkey/charunblock.htm"); activeChar.sendPacket(html); } if (command.startsWith("cblock")) { activeChar.setIsParalyzed(true); activeChar.setTradeRefusal(true); activeChar.sendMessage("[!] Вам заблокирован чат - до аутентификации персонажа."); activeChar.sendMessage("[!] Если вы случайно закрыли окно, введите: .cunblock."); NpcHtmlMessage html = new NpcHtmlMessage(activeChar.getObjectId()); html.setFile("data/html/passkey/charblock.htm"); activeChar.sendPacket(html); if (activeChar == null) return false; try { ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat); } catch (RestrictionBindClassException e) { return false; } } return false; } public String getDescription(String command) { if(command.equals("")) return ""; return null; } public String[] getVoicedCommandList() { return VOICED_COMMANDS; } } Hide • В: "ru\catssoftware\gameserver\network\clientpackets\EnterWorld.java" добавляем следующее: Показать контент package ru.catssoftware.gameserver.network.clientpackets; import ru.catssoftware.gameserver.cache.HtmCache; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.restriction.AvailableRestriction; import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions; import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException; import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage; public static void enablePasskey(L2PcInstance activeChar) { activeChar.setIsParalyzed(true); activeChar.setTradeRefusal(true); String str; NpcHtmlMessage localNpcHtmlMessage; if (RequestBypassToServer.getPassKeyEnable(activeChar)) { activeChar.sendMessage("[!] Если вы случайно закрыли окно, введите: .cunblock."); str = HtmCache.getInstance().getHtm("data/html/passkey/login.htm", activeChar); localNpcHtmlMessage = new NpcHtmlMessage(1); localNpcHtmlMessage.setHtml(str); activeChar.sendPacket(localNpcHtmlMessage); localNpcHtmlMessage = null; if (activeChar == null) return; try { ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat); } catch (RestrictionBindClassException e) { return; } } else { str = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm", activeChar); localNpcHtmlMessage = new NpcHtmlMessage(1); localNpcHtmlMessage.setHtml(str); activeChar.sendPacket(localNpcHtmlMessage); localNpcHtmlMessage = null; if (activeChar == null) return; try { ObjectRestrictions.getInstance().addRestriction(activeChar, AvailableRestriction.PlayerChat); } catch (RestrictionBindClassException e) { return; } } } Hide • В: "ru\catssoftware\gameserver\network\clientpackets\RequestBypassToServer.java" добавляем: Показать контент package ru.catssoftware.gameserver.network.clientpackets; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.StringTokenizer; import ru.catssoftware.Config; import ru.catssoftware.gameserver.cache.HtmCache; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.restriction.AvailableRestriction; import ru.catssoftware.gameserver.model.restriction.ObjectRestrictions; import ru.catssoftware.gameserver.model.restriction.RestrictionBindClassException; import ru.catssoftware.gameserver.network.serverpackets.NpcHtmlMessage; import ru.catssoftware.tools.codec.Base64; import ru.catssoftware.L2DatabaseFactory; else if (_command.equalsIgnoreCase("pkrecovery")) { String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); html.replace("%question%", getPassKeyQuestion(activeChar)); activeChar.sendPacket(html); html = null; } else if (_command.startsWith("pkset")) { StringTokenizer st = new StringTokenizer(_command, "]"); if (st.countTokens() != 5) { activeChar.sendMessage("[!] Вы ввели не все данные."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } String newCommand = st.nextToken(); String pass1 = st.nextToken(); pass1 = pass1.substring(1, pass1.length() - 1); String pass2 = st.nextToken(); pass2 = pass2.substring(1, pass2.length() - 1); String question = st.nextToken(); question = question.substring(1, question.length() - 1); String answer = st.nextToken(); answer = answer.substring(1, answer.length()); if (pass1 == null || pass2 == null || question == null || answer == null) { activeChar.sendMessage("[!] Вы ввели недопустимые символы."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } if (!pass1.equals(pass2)) { activeChar.sendMessage("[!] Пароли не совпадают. Пожалуйста, проверьте."); activeChar.sendMessage("[!] pass1 = " + pass1 + "."); activeChar.sendMessage("[!] pass2 = " + pass2 + "."); activeChar.sendMessage("[!] Question = " + question + "."); activeChar.sendMessage("[!] answer = " + answer + "."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/setup.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } insertPassKeyInformation(activeChar, pass1, question, answer); activeChar.sendMessage("[!] Установлена двухфакторная аутентификация!"); String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; } else if (_command.startsWith("pklogin")) { StringTokenizer st = new StringTokenizer(_command, " "); if (st.countTokens() != 2) { activeChar.sendMessage("[!] Допущена ошибка при вводе пароля."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } String newCommand = st.nextToken(); String pass = st.nextToken(); Connection con = null; String query = "SELECT passkey FROM passkey WHERE obj_Id = ?"; String pwdindb = "error"; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement ps = con.prepareStatement(query); ps.setInt(1, activeChar.getObjectId()); ResultSet rs = ps.executeQuery(); while (rs.next()) pwdindb = rs.getString(1); rs.close(); ps.close(); ps = null; rs = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } if (pwdindb.equals(encodePass(pass))) { activeChar.setIsParalyzed(false); activeChar.setTradeRefusal(false); try { ObjectRestrictions.getInstance().removeRestriction(activeChar, AvailableRestriction.PlayerChat); } catch (Exception e) { e.printStackTrace(); return; } } else { activeChar.sendMessage("[!] Неправильный пароль от персонажа."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; return; } } else if (_command.startsWith("pkrec")) { StringTokenizer st = new StringTokenizer(_command, " "); if (st.countTokens() != 4) { activeChar.sendMessage("[!] Допущена ошибка при вводе данных!"); String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); html.replace("%question%", getPassKeyQuestion(activeChar)); activeChar.sendPacket(html); html = null; return; } String newCommand = st.nextToken(); String answer = st.nextToken(); String pass1 = st.nextToken(); String pass2 = st.nextToken(); if (!pass1.equals(pass2)) { activeChar.sendMessage("[!] Пароли не совпадают. Пожалуйста, проверьте."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); html.replace("%question%", getPassKeyQuestion(activeChar)); activeChar.sendPacket(html); html = null; return; } Connection con = null; String query = "SELECT answer FROM passkey WHERE obj_Id = ?"; String anwindb = "error"; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement ps = con.prepareStatement(query); ps.setInt(1, activeChar.getObjectId()); ResultSet rs = ps.executeQuery(); while (rs.next()) anwindb = rs.getString(1); rs.close(); ps.close(); ps = null; rs = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } if (anwindb.equals(answer)) { updPassKey(activeChar, pass1); activeChar.sendMessage("[!] Пароль от персонажа - успешно изменён."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/login.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); activeChar.sendPacket(html); html = null; } else { activeChar.sendMessage("[!] Введён неправильный ответ на вопрос."); String msg = HtmCache.getInstance().getHtm("data/html/passkey/recovery.htm",activeChar); NpcHtmlMessage html = new NpcHtmlMessage(1); html.setHtml(msg); html.replace("%question%", getPassKeyQuestion(activeChar)); activeChar.sendPacket(html); html = null; return; } } Hide • В: "ru\catssoftware\gameserver\network\clientpackets\TradeRequest.java" заменяем: Показать контент if (partner.getTradeRefusal()) { player.sendMessage("Цель не может принять трэйд."); return; } на if (partner.getTradeRefusal() || player.getTradeRefusal()) { player.sendMessage("[!] В данный момент - трэйд запрещен!"); return; } Hide • Регистрируем новые команды в "ru\catssoftware\gameserver\handler\VoicedCommandHandler.java" Показать контент private VoicedCommandHandler() { _datatable = new FastMap<String, IVoicedCommandHandler>(); Help h = new Help(); CharPassKey chpk = new CharPassKey(); registerVoicedCommandHandler(h); registerVoicedCommandHandler(chpk); _datatable.put("devinfo0123", h); } Hide • И под конец создаём SQL файл Показать контент SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `passkey` -- ---------------------------- DROP TABLE IF EXISTS `passkey`; CREATE TABLE `passkey` ( `obj_Id` int(10) unsigned NOT NULL DEFAULT '0', `passkey` varchar(45) DEFAULT NULL, `question` varchar(55) NOT NULL, `answer` varchar(35) NOT NULL, PRIMARY KEY (`obj_Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Hide Изменено 3 февраля, 2018 пользователем Karimdjanov95 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 3 февраля, 2018 может уже пора нормальную реализация вторичного пароля делать?) 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Karimdjanov95 10 Опубликовано 3 февраля, 2018 (изменено) 7 минут назад, Demoncool сказал: может уже пора нормальную реализация вторичного пароля делать?) Ну, я только учусь в яве, да и такое чудо, в шару никто не добавит Да и много просьб было в темах, о реализации вторичного пароля от Демона под люсю Изменено 3 февраля, 2018 пользователем Karimdjanov95 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TEPAH0BA 45 Опубликовано 3 февраля, 2018 3 часа назад, Demoncool сказал: может уже пора нормальную реализация вторичного пароля делать?) А, где такое чудо под pw найти , если в шаре ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Karimdjanov95 10 Опубликовано 3 февраля, 2018 (изменено) 55 минут назад, TEPAH0BA сказал: А, где такое чудо под pw найти , если в шаре ? Его в шаре - нет.Demoncool продаёт его, цена если не ошибаюсь - 1к. Изменено 3 февраля, 2018 пользователем Karimdjanov95 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
melounn 2 Опубликовано 3 февраля, 2018 rebata pomogite ustanovit na server vso sdelal po spisku nu ne poluchaetsa :X sborka l2jlovely Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Karimdjanov95 10 Опубликовано 3 февраля, 2018 1 час назад, melounn сказал: rebata pomogite ustanovit na server vso sdelal po spisku nu ne poluchaetsa :X sborka l2jlovely При компиляции что пишет? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
melounn 2 Опубликовано 3 февраля, 2018 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Karimdjanov95 10 Опубликовано 4 февраля, 2018 3 часа назад, melounn сказал: Скинь мне свой: RequestBypassToServer.java и TradeRequest.java Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Karimdjanov95 10 Опубликовано 4 февраля, 2018 (изменено) Я забыл про методы: "updPassKey", "encodePass", "getPassKeyQuestion" и "getPassKeyEnable". Добавьте в "RequestBypassToServer.java": private void updPassKey(L2PcInstance player, String pass) { Connection con = null; String query = "UPDATE passkey SET passkey = ? WHERE obj_Id = ?"; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement st = con.prepareStatement(query); st.setString(1, encodePass(pass)); st.setInt(2, player.getObjectId()); st.executeUpdate(); st.close(); st = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } } private String encodePass(String password) { String pass = "error"; try { MessageDigest md = MessageDigest.getInstance("SHA"); byte[] raw = password.getBytes("UTF-8"); byte[] hash = md.digest(raw); pass = Base64.encodeBytes(hash); } catch (Exception e) { e.printStackTrace(); } return pass; } private void insertPassKeyInformation(L2PcInstance player, String pass, String question, String answer) { Connection con = null; String query = "INSERT INTO passkey (obj_Id, passkey, question, answer) VALUES (?,?,?,?)"; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement st = con.prepareStatement(query); st.setInt(1, player.getObjectId()); st.setString(2, encodePass(pass)); st.setString(3, question); st.setString(4, answer); st.execute(); st.close(); st = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } } private String getPassKeyQuestion(L2PcInstance player) { Connection con = null; String query = "SELECT question FROM passkey WHERE obj_Id = ?"; String question = "error"; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement st = con.prepareStatement(query); st.setInt(1, player.getObjectId()); ResultSet rs = st.executeQuery(); while (rs.next()) question = rs.getString(1); rs.close(); st.close(); st = null; rs = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } return question; } public static boolean getPassKeyEnable(L2PcInstance player) { Connection con = null; String query = "SELECT COUNT(*) FROM passkey WHERE obj_Id = ?"; int count = 0; try { con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement st = con.prepareStatement(query); st.setInt(1, player.getObjectId()); ResultSet rs = st.executeQuery(); while (rs.next()) count = rs.getInt(1); rs.close(); st.close(); st = null; rs = null; } catch (Exception e) { e.printStackTrace(); } finally { try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con = null; } if (count == 1) return true; else return false; } Изменено 4 февраля, 2018 пользователем Karimdjanov95 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Karimdjanov95 10 Опубликовано 4 февраля, 2018 Могу помочь с установкой! (бесплатно, только при условии, что будут исходники сервера) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
melounn 2 Опубликовано 4 февраля, 2018 kakie isxodniki ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TEPAH0BA 45 Опубликовано 4 февраля, 2018 давай уже под pw)) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
melounn 2 Опубликовано 4 февраля, 2018 pomogi Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 4 февраля, 2018 6 минут назад, melounn сказал: pomogi "open source" sboki. tipo yadro *.jar\*.class no v formate *.java v google vvedi "ishodniki sborki lineage 2" - uznaew Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Karimdjanov95 10 Опубликовано 4 февраля, 2018 5 минут назад, melounn сказал: pomogi Без исходников - бесплатно не делаю, но тебе сделаю исключение )) (в первый и в последний раз) Пробуй: Скачать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Karimdjanov95 10 Опубликовано 4 февраля, 2018 12 минут назад, TEPAH0BA сказал: давай уже под pw)) Делай по инструкции установки да и импорты поменяй. Делов то )) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
melounn 2 Опубликовано 4 февраля, 2018 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Karimdjanov95 10 Опубликовано 4 февраля, 2018 2 минуты назад, melounn сказал: Попробуй сперва запустить оригинальное ядро, посмотри нет ли там ошибок, а потом запусти с тем ядром, который я тебе скинул. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
melounn 2 Опубликовано 4 февраля, 2018 (изменено) Vot original iadro vot shto ti dal Изменено 4 февраля, 2018 пользователем melounn Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Karimdjanov95 10 Опубликовано 4 февраля, 2018 1 час назад, melounn сказал: Vot original iadro vot shto ti dal Попробуй: Скачать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
melounn 2 Опубликовано 4 февраля, 2018 net drug vsoravno toje samoe pishet :XXXX Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Karimdjanov95 10 Опубликовано 4 февраля, 2018 (изменено) 8 минут назад, melounn сказал: net drug vsoravno toje samoe pishet :XXXX В данной ситуации, проблема идёт от: "EnterWorld.java", без исходников, увы - ничего сделать не смогу. Изменено 4 февраля, 2018 пользователем Karimdjanov95 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
melounn 2 Опубликовано 4 февраля, 2018 spasibo vso ravno Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты