Karimdjanov95

Пользователи
  • Публикаций

    29
  • Зарегистрирован

  • Посещение

  • Отзывы

    0%

Репутация

1

1 Подписчик

Информация о Karimdjanov95

  • Звание
    Только пришел

Информация

  • Пол
    Мужчина
  • Город
    Northwood C.

Контакты

Посетители профиля

1 074 просмотра профиля
  1. Бери исходники Lovely или-же Lucera и пили себе на радость (не мучаясь)... Имея под рукой исходники, ты сможешь устанавливать на свой сервер, разные плюшки, которых на форуме - навалом
  2. В данной ситуации, проблема идёт от: "EnterWorld.java", без исходников, увы - ничего сделать не смогу.
  3. Попробуй сперва запустить оригинальное ядро, посмотри нет ли там ошибок, а потом запусти с тем ядром, который я тебе скинул.
  4. Делай по инструкции установки да и импорты поменяй. Делов то ))
  5. Без исходников - бесплатно не делаю, но тебе сделаю исключение )) (в первый и в последний раз) Пробуй: Скачать.
  6. Могу помочь с установкой! (бесплатно, только при условии, что будут исходники сервера)
  7. Я забыл про методы: "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; }
  8. Скинь мне свой: RequestBypassToServer.java и TradeRequest.java
  9. При компиляции что пишет?
  10. Его в шаре - нет. Demoncool продаёт его, цена если не ошибаюсь - 1к.
  11. Ну, я только учусь в яве, да и такое чудо, в шару никто не добавит Да и много просьб было в темах, о реализации вторичного пароля от Демона под люсю
  12. Подробно об установке, так как всё не влезло в описание! • Папку "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
  13. Просмотр файла Пароль на персонажа (для люцероподобных) Доброе утро/день/вечер (смотря кто - когда читает), ув.Пользователи форума! В прошлом году делал для своего сервера (пароль для персонажей). Брал исходник из шары у †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(
  14. Версия 1.0.0

    27 раз скачали

    Доброе утро/день/вечер (смотря кто - когда читает), ув.Пользователи форума! В прошлом году делал для своего сервера (пароль для персонажей). Брал исходник из шары у †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(

    Бесплатный