Search the Community

Showing results for tags 'l2j'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Lineage II Server Packs [Java]
  • Lineage II Server Packs [PTS]
  • Lineage II Server Scripts
  • Lineage II Client Scripts
  • Lineage II Items & Chars
  • Website Templates


  • Articles


  • General Zone
    • Announcements and News
    • Newbies Introduce Urself
    • Maxcheaters Competitions & Events
    • Votes/Polls Area
    • Report Section
    • Downloads Section
  • Lineage II General Section
    • General Discussion [English]
    • Request Support [English]
  • Lineage II Hacks,Cheats and Bots
    • Hacks & Cheats [English]
    • Request Hacks & Cheats [English]
    • Botting [English]
    • Request Botting [English]
  • Lineage II Private Servers
    • LineZeus.GR - Η Επιστροφή!
    • Private Servers
    • [Previews] L2 Private Servers
    • Clans and Alliances
  • Lineage II Marketplace
    • Marketplace [Items & Chars]
    • Marketplace [L2Packs & Files]
    • Marketplace [Powerlvl & Support]
  • Lineage II OFF Server Development
    • Server Development Discussion [L2OFF]
    • Request Server Development Help [L2OFF]
    • Server Shares & Files [L2OFF]
  • Lineage II Java Server Development
    • Server Development Discussion [L2J]
    • Request Server Development Help [L2J]
    • Server Shares & Files [L2J]
    • Private Projects [L2J]
  • Lineage II Client Development
    • Client Development Discussion
  • MMO Games
    • League of Legends
    • World Of Warcraft Area
    • Other Multiplayer Games
  • General Section
    • General Marketplace
    • Consoles/Mobiles/PDA Gaming Zone
    • Webmasters Zone
    • Hacking/Coding Zone
  • Graphics/GFX Zone
    • Graphics/GFX General Discussion
    • Graphics/GFX Showcase
    • Graphics/GFX Resources/Tools
  • VIP/SVIP/Donators Zone
    • VIPs/Donators Discussion
    • VIPs Lineage II
    • VIPs [GFX] Zone
    • VIPs Download Area
  • MaxCheaters Corner
    • Tech/World News
    • Off-Topics
    • Spam Topics
  • Gaming Expiriance's Topics

Found 32 results

  1. Καλησπέρα... έχετε να μου προτείνετε ενα "Ready" java pack να ανοίξω κάνα σερβερ ? ξέρετε... να μη θέλει πολύ δουλειά..... :D :D :D -Pack -Backup -Patch. E.G. μην αρχίσετε το βρίσιμο κτλπ κτλπ...
  2. Hello i have a problem i fixed the most part of the code but i have a problem i get that red line here log.warning(StringUtil.concat( under concat only here is the code package net.sf.l2j.gameserver.masteriopack.rankpvpsystem; import; import; import; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.logging.Logger; import net.sf.l2j.commons.lang.StringUtil; import net.sf.l2j.gameserver.masteriopack.imageconverter.ServerSideImage; /** * This class initializes all global variables for configuration.<br> * If the key doesn't appear in properties file, a default value is set by this class.<br> * @author Masterio */ public final class RankPvpSystemConfig { private static final Logger log = Logger.getLogger(RankPvpSystemConfig.class.getName()); // Rank PvP System: public static boolean RANK_PVP_SYSTEM_ENABLED; public static int LEGAL_KILL_MIN_LVL; public static boolean LEGAL_COUNTER_ALTT_ENABLED; public static boolean LEGAL_KILL_FOR_PK_KILLER_ENABLED; public static boolean LEGAL_KILL_FOR_INNOCENT_KILL_ENABLED; public static int PROTECTION_TIME_RESET; public static int LEGAL_KILL_PROTECTION; public static int DAILY_LEGAL_KILL_PROTECTION; public static boolean GM_IGNORE_ENABLED; // PvP + RPC Reward: public static boolean RPC_REWARD_ENABLED; public static long RPC_REWARD_AMOUNT; public static int RPC_REWARD_MIN_LVL; public static boolean PVP_REWARD_ENABLED; public static int PVP_REWARD_ID; public static long PVP_REWARD_AMOUNT; public static int PVP_REWARD_MIN_LVL; public static boolean REWARD_FOR_PK_KILLER_ENABLED; public static boolean REWARD_FOR_INNOCENT_KILL_ENABLED; public static boolean RANK_PVP_REWARD_ENABLED; public static int RANK_PVP_REWARD_MIN_LVL; public static boolean REWARD_LEGAL_KILL_ENABLED; public static boolean RANK_LEVEL_REWARD_ENABLED; // Ranks: public static boolean RANKS_ENABLED; public static int RANK_POINTS_MIN_LVL; public static boolean RANK_POINTS_CUT_ENABLED; public static boolean RANK_RPC_ENABLED; public static boolean RANK_POINTS_DOWN_COUNT_ENABLED; public static List<Integer> RANK_POINTS_DOWN_AMOUNTS = new ArrayList<>(); public static boolean RANK_SHOUT_INFO_ON_KILL_ENABLED; public static boolean RANK_SHOUT_BONUS_INFO_ON_KILL_ENABLED; public static boolean RPC_EXCHANGE_ENABLED; public static boolean RPC_EXCHANGE_CONFIRM_BOX_ENABLED; // War Kills: public static boolean WAR_KILLS_ENABLED; public static double WAR_RANK_POINTS_RATIO; // Combo Kill: public static boolean COMBO_KILL_ENABLED; public static boolean COMBO_KILL_PROTECTION_WITH_LEGAL_KILL_ENABLED; public static boolean COMBO_KILL_PROTECTION_NO_REPEAT_ENABLED; public static Map<Integer, String> COMBO_KILL_LOCAL_AREA_MESSAGES = new HashMap<>(); public static Map<Integer, String> COMBO_KILL_GLOBAL_AREA_MESSAGES = new HashMap<>(); public static boolean COMBO_KILL_ALT_MESSAGES_ENABLED; public static String COMBO_KILL_ALT_MESSAGE; public static int COMBO_KILL_ALT_GLOBAL_MESSAGE_LVL; public static boolean COMBO_KILL_DEFEAT_MESSAGE_ENABLED; public static int COMBO_KILL_DEFEAT_MESSAGE_MIN_LVL; public static String COMBO_KILL_DEFEAT_MESSAGE; public static int COMBO_KILL_RESETER; public static boolean COMBO_KILL_RANK_POINTS_RATIO_ENABLED; public static Map<Integer, Double> COMBO_KILL_RANK_POINTS_RATIO = new HashMap<>(); // Title & Nick Color: public static boolean NICK_COLOR_ENABLED; public static boolean TITLE_COLOR_ENABLED; // Zones: public static List<Integer> ALLOWED_ZONES_IDS = new ArrayList<>(); public static List<Integer> RESTRICTED_ZONES_IDS = new ArrayList<>(); public static List<Integer> DEATH_MANAGER_RESTRICTED_ZONES_IDS = new ArrayList<>(); public static Map<Integer, Double> RANK_POINTS_BONUS_ZONES_IDS = new HashMap<>(); // pvpinfo command, pvp status window, death manager: public static boolean PVP_INFO_COMMAND_ENABLED; public static boolean PVP_INFO_USER_COMMAND_ENABLED; public static int PVP_INFO_USER_COMMAND_ID; public static boolean PVP_INFO_COMMAND_ON_DEATH_ENABLED; public static boolean DEATH_MANAGER_DETAILS_ENABLED; public static boolean DEATH_MANAGER_SHOW_ITEMS_ENABLED; public static boolean TOTAL_KILLS_IN_SHOUT_ENABLED; public static boolean TOTAL_KILLS_IN_PVPINFO_ENABLED; public static boolean TOTAL_KILLS_ON_ME_IN_PVPINFO_ENABLED; public static boolean SHOW_PLAYER_LEVEL_IN_PVPINFO_ENABLED; // Anti-Farm: public static boolean ANTI_FARM_CLAN_ALLY_ENABLED; public static boolean ANTI_FARM_PARTY_ENABLED; public static boolean ANTI_FARM_IP_ENABLED; // Top List (Community Board): public static boolean TOP_LIST_ENABLED; public static long TOP_LIST_IGNORE_TIME_LIMIT; // Database: public static long PVP_TABLE_UPDATE_INTERVAL; public static List<Long> TOP_TABLE_UPDATE_TIMES = new ArrayList<>(); public static boolean RPC_TABLE_FORCE_UPDATE_ENABLED; public static boolean DATABASE_CLEANER_ENABLED; public static long DATABASE_CLEANER_REPEAT_TIME; // Image: public static boolean SERVER_SIDE_IMAGES_ENABLED; public static int IMAGE_PREFIX; // Button style: public static String BUTTON_UP; public static String BUTTON_DOWN; public static String BUTTON_W; public static String BUTTON_H; public static String BUTTON_BIG_W; public static String BUTTON_BIG_H; /** * All required tables are initialized here. */ public static void load() {"> Initializing Rank PvP System ("+RANK_PVP_SYSTEM_VERSION+"):"); try { File cc = new File(RANK_PVP_SYSTEM_CONFIG_FILE); InputStream is = new FileInputStream(cc); Properties ccSettings = new Properties(); ccSettings.load(is); RANK_PVP_SYSTEM_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RankPvpSystemEnabled", "false")); LEGAL_COUNTER_ALTT_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("LegalCounterAltTEnabled", "false")); DATABASE_CLEANER_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("DatabaseCleanerEnabled", "false")); DATABASE_CLEANER_REPEAT_TIME = Integer.parseInt(ccSettings.getProperty("DatabaseCleanerRepeatTime", "0")); if (DATABASE_CLEANER_REPEAT_TIME <= 0) { DATABASE_CLEANER_ENABLED = false; log.warning("[DatabaseCleanerRepeatTime]: invalid config property -> \""+DATABASE_CLEANER_REPEAT_TIME+"\""); } else { DATABASE_CLEANER_REPEAT_TIME *= 86400000; } RPC_REWARD_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RpcRewardEnabled", "false")); RPC_REWARD_AMOUNT = Integer.parseInt(ccSettings.getProperty("RpcRewardAmmount", "1")); RPC_REWARD_MIN_LVL = Integer.parseInt(ccSettings.getProperty("RpcRewardMinLvl", "76")); PVP_REWARD_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("PvpRewardEnabled", "false")); PVP_REWARD_ID = Integer.parseInt(ccSettings.getProperty("PvpRewardId", "57")); PVP_REWARD_AMOUNT = Integer.parseInt(ccSettings.getProperty("PvpRewardAmount", "1")); PVP_REWARD_MIN_LVL = Integer.parseInt(ccSettings.getProperty("PvpRewardMinLvl", "76")); REWARD_FOR_PK_KILLER_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RewardForPkKillerEnabled", "true")); RANK_PVP_REWARD_MIN_LVL = Integer.parseInt(ccSettings.getProperty("RankPvpRewardMinLvl", "76")); REWARD_FOR_INNOCENT_KILL_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RewardForInnocentKillEnabled", "false")); RANK_PVP_REWARD_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RankPvpRewardEnabled", "true")); REWARD_LEGAL_KILL_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RewardLegalKillEnabled", "true")); RANK_LEVEL_REWARD_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RankLevelRewardEnabled", "true")); RANKS_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RanksEnabled", "false")); RANK_POINTS_MIN_LVL = Integer.parseInt(ccSettings.getProperty("RankPointsMinLvl", "76")); RANK_POINTS_CUT_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RankPointsCutEnabled", "true")); RANK_RPC_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RankRpcEnabled", "false")); // set rank's: String id1[] = ccSettings.getProperty("RankNames", "").split(","); String id2[] = ccSettings.getProperty("RankMinPoints", "").split(","); String id3[] = ccSettings.getProperty("RankPointsForKill", "").split(","); String id5[] = ccSettings.getProperty("RankRpcAmount", "").split(","); String id6[] = ccSettings.getProperty("NickColors", "").split(","); String id7[] = ccSettings.getProperty("TitleColors", "").split(","); if (RANK_PVP_SYSTEM_ENABLED || RANK_RPC_ENABLED || RANKS_ENABLED) { if (id1.length != id2.length || id1.length != id3.length || id1.length != id5.length || id1.length != id6.length || id1.length != id7.length) {"[RankPvpSystemConfig]: Arrays sizes should be the same!");"RANK_NAMES :" + id1.length);"RANK_MIN_POINTS :" + id2.length);"RANK_POINTS_FOR_KILL :" + id3.length);"RANK_RPC_AMOUNT :" + id5.length);"RANK_NICK_COLORS :" + id6.length);"RANK_TITLE_COLORS :" + id7.length); } else if(id1.length == 0 || id2.length == 0 || id3.length == 0 || id5.length == 0 || id6.length == 0 || id7.length == 0) {"[RankPvpSystemConfig]: Arrays sizes must be greater than 0!");"RANK_NAMES :" + id1.length);"RANK_MIN_POINTS :" + id2.length);"RANK_POINTS_FOR_KILL :" + id3.length);"RANK_RPC_AMOUNT :" + id5.length);"RANK_NICK_COLORS :" + id6.length);"RANK_TITLE_COLORS :" + id7.length); } else if(id2.length > 0 && Integer.parseInt(id2[id2.length - 1]) != 0) {"[RankMinPoints]: Last value must equal 0! Example: ...,6,5,4,3,2,1,0"); } else { for (int i = 1; i <= id1.length; i++) { Rank rank = new Rank(); rank.setId(i); rank.setName(id1[id1.length - i]); rank.setMinPoints(Long.parseLong(id2[id1.length - i])); rank.setPointsForKill(Integer.parseInt(id3[id1.length - i])); rank.setRpc(Integer.parseInt(id5[id1.length - i])); rank.setNickColor(Integer.decode("0x" + id6[id1.length - i])); rank.setTitleColor(Integer.decode("0x" + id7[id1.length - i])); RankTable.getInstance().getRankList().put(i, rank); } } } NICK_COLOR_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("NickColorEnabled", "false")); TITLE_COLOR_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("TitleColorEnabled", "false")); RANK_POINTS_DOWN_COUNT_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RankPointsDownCountEnabled", "false")); RANK_POINTS_DOWN_AMOUNTS = new ArrayList<>(); for (String id : ccSettings.getProperty("RankPointsDownAmounts", "").split(",")) { RANK_POINTS_DOWN_AMOUNTS.add(Integer.parseInt(id)); } RANK_SHOUT_INFO_ON_KILL_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RankShoutInfoOnKillEnabled", "false")); RANK_SHOUT_BONUS_INFO_ON_KILL_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RankShoutBonusInfoOnKillEnabled", "false")); WAR_KILLS_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("WarKillsEnabled", "false")); if (WAR_KILLS_ENABLED) { WAR_RANK_POINTS_RATIO = Double.parseDouble(ccSettings.getProperty("WarRankPointsRatio", "1.0")); } else { WAR_RANK_POINTS_RATIO = 1.0; } COMBO_KILL_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("ComboKillEnabled", "false")); COMBO_KILL_PROTECTION_WITH_LEGAL_KILL_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("ComboKillProtectionWithLegalKillEnabled", "false")); COMBO_KILL_PROTECTION_NO_REPEAT_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("ComboKillProtectionNoRepeatEnabled", "false")); String propertyValue = ccSettings.getProperty("ComboKillLocalAreaMessages"); if ((propertyValue != null) && (propertyValue.length() > 0)) { String[] propertySplit = propertyValue.split(";"); if (propertySplit.length > 0) { for (String value : propertySplit) { String[] valueSplit = value.split(","); if (valueSplit.length != 2) { log.warning(StringUtil.concat("[ComboKillLocalAreaMessages]: invalid config property -> \"", value, "\"")); } else { try { COMBO_KILL_LOCAL_AREA_MESSAGES.put(Integer.parseInt(valueSplit[0]), valueSplit[1]); } catch (NumberFormatException nfe) { if (!value.isEmpty()) { log.warning(StringUtil.concat("[ComboKillLocalAreaMessages]: invalid config property -> \"", valueSplit[0], "\"", valueSplit[1])); } } } } } } propertyValue = ccSettings.getProperty("ComboKillGlobalAreaMessages", ""); if ((propertyValue != null) && (propertyValue.length() > 0)) { String[] propertySplit = ccSettings.getProperty("ComboKillGlobalAreaMessages").split(";"); if (propertySplit.length > 0) { for (String value : propertySplit) { String[] valueSplit = value.split(","); if (valueSplit.length != 2) { log.warning(StringUtil.concat("[ComboKillGlobalAreaMessages]: invalid config property -> \"", value, "\"")); } else { try { COMBO_KILL_GLOBAL_AREA_MESSAGES.put(Integer.parseInt(valueSplit[0]), valueSplit[1]); } catch (NumberFormatException nfe) { if (!value.isEmpty()) { log.warning(StringUtil.concat("[ComboKillGlobalAreaMessages]: invalid config property -> \"", valueSplit[0], "\"", valueSplit[1])); } } } } } } COMBO_KILL_ALT_MESSAGES_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("ComboKillAltMessagesEnabled", "false")); COMBO_KILL_ALT_MESSAGE = ccSettings.getProperty("ComboKillAltMessage", "%killer% have %combo_level% Combo kills!"); COMBO_KILL_ALT_GLOBAL_MESSAGE_LVL = Integer.parseInt(ccSettings.getProperty("ComboKillAltGlobalMessageMinLvl", "0")); COMBO_KILL_DEFEAT_MESSAGE_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("ComboKillDefeatMessageEnabled", "true")); COMBO_KILL_DEFEAT_MESSAGE_MIN_LVL = Integer.parseInt(ccSettings.getProperty("ComboKillDefeatMessageMinComboLvl", "0")); COMBO_KILL_DEFEAT_MESSAGE = ccSettings.getProperty("ComboKillDefeatMessage", "%killer% is defeated with %combo_level% combo lvl!!!"); COMBO_KILL_RESETER = Integer.parseInt(ccSettings.getProperty("ComboKillReseter", "0")); COMBO_KILL_RANK_POINTS_RATIO_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("ComboKillRankPointsRatioEnabled", "false")); propertyValue = ccSettings.getProperty("ComboKillRankPointsRatio", ""); if ((propertyValue != null) && (propertyValue.length() > 0)) { String[] propertySplit = ccSettings.getProperty("ComboKillRankPointsRatio").split(";"); if (propertySplit.length > 0) { for (String value : propertySplit) { String[] valueSplit = value.split(","); if (valueSplit.length != 2) { log.warning(StringUtil.concat("[ComboKillRankPointsRatio]: invalid config property -> \"", value, "\"")); } else { try { COMBO_KILL_RANK_POINTS_RATIO.put(Integer.parseInt(valueSplit[0]), Double.parseDouble(valueSplit[1])); } catch (NumberFormatException nfe) { if (!value.isEmpty()) { log.warning(StringUtil.concat("[ComboKillRankPointsRatio]: invalid config property -> \"", valueSplit[0], "\"", valueSplit[1])); } } } } } } // additional security for combo kill system: if ((COMBO_KILL_LOCAL_AREA_MESSAGES.size() == 0) && (COMBO_KILL_GLOBAL_AREA_MESSAGES.size() == 0)) { COMBO_KILL_ENABLED = false; } int i = 0; String tempStr = ccSettings.getProperty("AllowedZonesIds"); if ((tempStr != null) && (tempStr.length() > 0)) { for (String rZoneId : tempStr.split(",")) { try { ALLOWED_ZONES_IDS.add(i, Integer.parseInt(rZoneId)); } catch (Exception e) {; } i++; } } i = 0; tempStr = ccSettings.getProperty("RestrictedZonesIds"); if ((tempStr != null) && (tempStr.length() > 0)) { for (String rZoneId : tempStr.split(",")) { try { RESTRICTED_ZONES_IDS.add(i, Integer.parseInt(rZoneId)); } catch (Exception e) {; } i++; } } LEGAL_KILL_MIN_LVL = Integer.parseInt(ccSettings.getProperty("LegalKillMinLvl", "1")); LEGAL_KILL_FOR_PK_KILLER_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("LegalKillForPkKillerEnabled", "true")); LEGAL_KILL_FOR_INNOCENT_KILL_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("LegalKillForInnocentKillEnabled", "false")); PROTECTION_TIME_RESET = Integer.parseInt(ccSettings.getProperty("ProtectionTimeReset", "0")); LEGAL_KILL_PROTECTION = Integer.parseInt(ccSettings.getProperty("LegalKillProtection", "0")); DAILY_LEGAL_KILL_PROTECTION = Integer.parseInt(ccSettings.getProperty("DailyLegalKillProtection", "0")); GM_IGNORE_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("GMIgnoreEnabled", "true")); PVP_INFO_COMMAND_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("PvpInfoCommandEnabled", "true")); PVP_INFO_USER_COMMAND_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("PvpInfoUserCommandEnabled", "false")); PVP_INFO_USER_COMMAND_ID = Integer.parseInt(ccSettings.getProperty("PvpInfoUserCommandId", "114")); PVP_INFO_COMMAND_ON_DEATH_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("PvpInfoCommandShowOnDeathEnabled", "true")); DEATH_MANAGER_DETAILS_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("DeathManagerDetailsEnabled", "true")); DEATH_MANAGER_SHOW_ITEMS_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("DeathManagerShowItemsEnabled", "true")); i = 0; tempStr = ccSettings.getProperty("DeathManagerRestrictedZonesIds"); if ((tempStr != null) && (tempStr.length() > 0)) { for (String rZoneId : tempStr.split(",")) { try { DEATH_MANAGER_RESTRICTED_ZONES_IDS.add(i, Integer.parseInt(rZoneId)); } catch (Exception e) {; } i++; } } propertyValue = ccSettings.getProperty("RankPointsBonusZonesIds", ""); if ((propertyValue != null) && (propertyValue.length() > 0)) { String[] propertySplit = ccSettings.getProperty("RankPointsBonusZonesIds", "").split(";"); if (propertySplit.length > 0) { for (String value : propertySplit) { String[] valueSplit = value.split(","); if (valueSplit.length != 2) { log.warning(StringUtil.concat("[RankPointsBonusZonesIds]: invalid config property -> \"", value, "\"")); } else { try { RANK_POINTS_BONUS_ZONES_IDS.put(Integer.parseInt(valueSplit[0]), Double.parseDouble(valueSplit[1])); } catch (NumberFormatException nfe) { if (!value.isEmpty()) { log.warning(StringUtil.concat("[RankPointsBonusZonesIds]: invalid config property -> \"", valueSplit[0], "\"", valueSplit[1])); } } } } } } TOTAL_KILLS_IN_SHOUT_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("TotalKillsInShoutEnabled", "true")); TOTAL_KILLS_IN_PVPINFO_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("TotalKillsInPvpInfoEnabled", "true")); TOTAL_KILLS_ON_ME_IN_PVPINFO_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("TotalKillsOnMeInPvpInfoEnabled", "true")); SHOW_PLAYER_LEVEL_IN_PVPINFO_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("ShowPlayerLevelInPvpInfoEnabled", "true")); RPC_EXCHANGE_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RpcExchangeEnabled", "true")); RPC_EXCHANGE_CONFIRM_BOX_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RpcExchangeConfirmBoxEnabled", "true")); ANTI_FARM_CLAN_ALLY_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("AntiFarmClanAllyEnabled", "true")); ANTI_FARM_PARTY_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("AntiFarmPartyEnabled", "true")); ANTI_FARM_IP_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("AntiFarmIpEnabled", "true")); PVP_TABLE_UPDATE_INTERVAL = (Integer.parseInt(ccSettings.getProperty("PvpTableUpdateInterval", "1")) * 60000); if (PVP_TABLE_UPDATE_INTERVAL < 1) { log.warning(StringUtil.concat("[PvpTableUpdateInterval]: invalid config property -> \"", Long.toString(PVP_TABLE_UPDATE_INTERVAL), "\"")); PVP_TABLE_UPDATE_INTERVAL = 60000; } RPC_TABLE_FORCE_UPDATE_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("RpcTableForceUpdate", "true")); // top table update times: propertyValue = ccSettings.getProperty("TopTableUpdateTimes", "3:00"); List<Long> temp_time_list = new ArrayList<>(); if ((propertyValue != null) && (propertyValue.length() > 0)) { String[] propertySplit = ccSettings.getProperty("TopTableUpdateTimes", "").split(","); if (propertySplit.length > 0) { for (String value : propertySplit) { String[] hm = value.split(":"); if (hm.length != 2) // hm table length { log.warning(StringUtil.concat("[TopTableUpdateTimes]: invalid config property -> \"", value, "\"")); } else { try { // prepare h & m: String h_s = hm[0]; String m_s = hm[1]; if(m_s.length() != 2) { log.warning(StringUtil.concat("[TopTableUpdateTimes]: invalid config property -> \"", value, "\" minutes format incorrect [hh:mm]")); break; } // check times like: [0]3:15, 3:[0]5. if(h_s.startsWith("0") && h_s.length() == 2) { h_s = h_s.substring(1); } if(m_s.startsWith("0") && m_s.length() == 2) { m_s = m_s.substring(1); } if(h_s.equals("0")) { h_s = "24"; } // calculate all times for times in ms from time 0:00. long h = Long.parseLong(h_s); long m = Long.parseLong(m_s); if(h < 0 || m < 0 || h > 24 || m > 59) { log.warning(StringUtil.concat("[TopTableUpdateTimes]: invalid config property -> \"", value, "\" minutes format incorrect [hh:mm]")); break; } long mili = (h * 60 + m) * 60000 - (3600000); // - 1h if(mili >= 0 && !temp_time_list.contains(mili)) temp_time_list.add(mili); } catch (NumberFormatException nfe) { } } } } } class LongComparator implements Comparator<Long> { @Override public int compare(Long v1, Long v2) { if (v1 > v2) { return 1; } else if (v1 == v2) { return 0; } else { return -1; } } } Comparator<Long> comp = new LongComparator(); Long[] aol = new Long[temp_time_list.size()]; Arrays.sort(temp_time_list.toArray(aol), comp); TOP_TABLE_UPDATE_TIMES = Arrays.asList(aol); TOP_LIST_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("TopListEnabled", "true")); TOP_LIST_IGNORE_TIME_LIMIT = Integer.parseInt(ccSettings.getProperty("TopListIgnoreTimeLimit", "0")); if (TOP_LIST_IGNORE_TIME_LIMIT > 0) { TOP_LIST_IGNORE_TIME_LIMIT *= 86400000; // in milliseconds } SERVER_SIDE_IMAGES_ENABLED = Boolean.parseBoolean(ccSettings.getProperty("ServerSideImagesEnabled", "true")); IMAGE_PREFIX = Integer.parseInt(ccSettings.getProperty("ImagePrefix", "1")); // Buttons style: BUTTON_UP = ccSettings.getProperty("ButtonFore", "L2UI_ch3.BigButton3_over"); BUTTON_DOWN = ccSettings.getProperty("ButtonBack", "L2UI_ch3.BigButton3"); BUTTON_W = ccSettings.getProperty("ButtonWidth", "134"); BUTTON_H = ccSettings.getProperty("ButtonHeight", "21"); BUTTON_BIG_W = ccSettings.getProperty("ButtonBigWidth", "180"); BUTTON_BIG_H = ccSettings.getProperty("ButtonBigHeight", "24"); log.warning(" - Rank Pvp System Config initialization complete."); } catch (Exception e) { log.warning("Config: " + e.getMessage()); throw new Error("Failed to Load " + RANK_PVP_SYSTEM_CONFIG_FILE + " File."); } // initializing system PvpTable.getInstance(); if(RPC_REWARD_ENABLED || RANK_RPC_ENABLED || RPC_TABLE_FORCE_UPDATE_ENABLED) RPCTable.getInstance(); else" - RPCTable: Disabled, players RPC will be not updated!"); if(RPC_REWARD_ENABLED || RPC_EXCHANGE_ENABLED) RPCRewardTable.getInstance(); else" - RPCRewardTable: Disabled."); if(PVP_REWARD_ENABLED || RANK_PVP_REWARD_ENABLED) RewardTable.getInstance(); else" - RewardTable: Disabled."); if(TOP_LIST_ENABLED) TopTable.getInstance(); else" - TopTable: Disabled."); ServerSideImage.getInstance(); } // -------------------------------------------------- // Constants - not placed in configuration file // -------------------------------------------------- public static final String RANK_PVP_SYSTEM_CONFIG_FILE = "./config/masterio/"; public static final String RANK_PVP_SYSTEM_VERSION = "3.8.7"; // CHAR_ID_COLUMN_NAME is not in configuration file. //public static final String CHAR_ID_COLUMN_NAME = "charId"; // H5 public static final String CHAR_ID_COLUMN_NAME = "obj_Id"; // IL }
  3. Hello i've searched alot but i didnt find anything does anyone know how can i make from 85 level max to 95? for hi5
  4. Hello once again, My Apologies for being away for sometime, at this tutorial we gonna discuss working with Linux as Hosting OS for your L2J Server an we will be talking about the advantages of using Linux. so let’s cut this off and get started. Table of Contents : – Who can use this tutorial ? – What is Linux ? – Which Distribution to use ? – Installing Linux on Personal PC or Virtual Machine – Getting familiar with Linux Command Line { Terminal } – Connect to Linux Server with through SSH Remotely – Learn to Manage Users, Group and Access Control – Repositories and Software – Installing and Configuring MySQL Server – Connect and Install Your Server Database – Installing and Configuring Oracle Java – Move and Setup your Server Files to Linux Server – Run and Stop Server – Installing and Configuring Apache2 – Host your Site and Domain - Ports and Firewall > To be Added – Manage Processes and Services > To Be Added – Advanced and Helpful Commands > To Be Added – What’s Next with Linux …. > To Be Added In the beginning i would like to answer some frequently asked questions . Who can use this Tutorial ? This Guide is meant to be for non System Administrators , so it basically will be a Step by Step guide to help those didn’t worked with Linux before, so if you have no experience at all with Linux then don’t worry you’ll get familiar with it today . What is Linux ? Well, Linux as a name refers to multiple things but mainly it refers to OS Kernel that spreading more and more everyday and guess what most likely you’re using Linux too , Huh ?? oh yes actually Android is based on Linux Kernel. For some people Linux is a monster, and actually it is a monster but a monster that fights you , or fighting in your side if you can deal with it Linux is not that thing you can go download and get like that (Ofc you can but this needs alot of advanced skills), instead it comes as packages called Linux Distributions and can be called Linux Distro, this distributions are usable packages for Linux packed with some tools and software and some of them comes with a GUI as well, and actually there are many Distributions out there, for example : Ubuntu, Fedora, CentOS, BackTrack, Kali …. etc Which Distribution to use ? Well there are actually many good distributes but as an advice if you good or moderate with Linux then use Ubuntu Server Distribute if you are not a command line guy/girl then use something with GUI like Ubuntu Desktop, Kubuntu, Fedora. Also you may need a UI to make changes and stuff , but if you’re an experienced or a command line lover then u wont need this GUI, since everything can be done via Terminal. Most likely when you buy your dedicated or VPS your hoster will ask your for which Distribute you want to be installed and this options are widely available in most if not all hosting providers like OVH which i recommend. In this Guide i’ll use Ubuntu Desktop and Kubuntu Installing Linux on Personal PC or Virtual Machine I don’t like to repeat what’s already done, since there are alot of good tutorials out there , here is one of the good guides, also i’ll add a detailed guide about this later – Getting familiar with Linux Command Line { Terminal } First i expect now you have a clean install of Linux, i have also a clean install of Ubuntu Desktop, so let’s login with your password created in installing process or provided by your host, Type your password and hit Enter Once you logged in Click on the Ubuntu Icon on left top corner then type “terminal” in search and click on terminal icon Now we have our terminal up and running so we can start playing around with commands Great, Let’s try same on another distribution ? Okay let’s go to Kubuntu Distribution Login with your username and password Then Click on Kubuntu Logo on the bottom left corner and type terminal in search then click on Konsole icon Here we go again with our terminal Now it’s the time to run some commands and get familiar with the new environment List files in current Directory : To see files in current working directory you can use command ls Here we can see all files and folders in current directory, but actually this is not all files and folders since by default the “ls” command wont show the hidden files, and to show all files including hidden files we can add options “-a” which stands for “list all” ls -a as you may notice in Linux hidden files and folders are those who starting with a dot “.”, any file starting with “.” will be considered as a hidden file See the current directory : To get the path of the current directory you’re working with you can use the command “pwd” which stands for “Print Working Directory” pwd Clear Screen : To Clear Terminal screen you can use the command clear Yes it’s as simple as that Make a new Folder : first of all in Linux Community it’s usually called Directory not Folder, so in order to make a new directory u can use the command “mkdir”, which stands for “Make Directory” followed by Directory name, normally this command will return nothing but this is normal so getting nothing back doesn’t mean it’s not working mkdir mxc_directory Note : Linux is a case sensitive system unlike windows, so for example mxc directory is not Mxc directory since “m” is not “M” so you can have two directories in same directory with same name but different letter case Change Current Directory : Well in order to move to another directory you can simply use command “cd” which stands for “Change Directory” followed by the patch to go or directory name cd mxc_directory Go to Upper / Parent Folder cd .. If you wanna go to to the very top directory use “cd” without any path, and if you wanna go quickly to user directory you can use that command cd ~ Create a new Empty file : Creating a new files in linux is very simple, let’s go to mxc_directory and make a file in it called hello.txt, i think you know how to go to mxc_directory and then create the file using touch command cd mxc_directory touch hello.txt Edit File Content in Terminal : To edit a text based files in terminal you can use nano (available on many distributions, some have vim instead), for example nano hello.txt You’ll get GNU nano Editor like this Now you can type or edit whatever you want and to Save Press CTRL+O then confirm file path and hit Enter, To Exist Nano Editor Press CTRL+X Show File Content into Terminal : If you wanna show a text based file contents into Terminal for a fast review you can use command “cat” followed by file name cat hello.txt Print Text to Terminal : To show text to a screen or to print out a message you can use command “echo” followed by message or text quoted echo "My Secret Message" Useless huh ? , Well just stay with me for next trick Send Terminal Output to a file : If you have any terminal output that you want to save to a file instead of printing it to screen, like a log or something which you may need this when working with L2J to quickly redirect out errors to a file for later review then you can use output redirect command which is used by appending “>” followed by output file after any command that you expect an output from echo "My Secret Message" > secret.txt Copy file : To copy a file you can use “cp” command followed by original file name/path followed by new file name/path, you have to provide path if it’s not in current working directory also you need to provide the name of the file on the new location cp secret.txt copied.txt But how to copy a folder instead of just a single file ? , well it’s simple you can still use “cp” command but this time followed by option “-R” which means Recursive , so let’s try to go to upper folder and copy mxc_directory cd .. cp -R mxc_directory copied_directory Move File : Moving files means it will be copied to another location and deleted from original one, and to do this we can use “mv” command followed by original file followed by new location along with the new file name, so for example to move copied.text to the upper directory we can do so mv copied.text ../moved.txt If you wanna move a directory we do as we did in coping directory by adding “-R” option Delete / Remove a File : To delete a file you can use command “rm” which stands for “remove” followed by file name rm secret.txt Same for Deleting Directory you can add -R option but take care since this operation can’t be undone Connect to Linux Server with through SSH Remotely Considering that you have a Linux VPS or Dedicated you will have what’s called SSH (Secure Shell) access in this case you’ll be able to login and control in terminal mode, and to do this there are many ways to connect through SSH but i prefer to use a small application called PuTTY which is free and easy to use. Download PuTTY : Click Here After downloading and installing (Really easy to install not a big deal) you can run this application, you’ll get something like this Enter you VPS or Dedicated Host name of IP on selected input and by default port will be 22 and then hit “Open”, you’ll get a black window like command line and will ask u for a username, put the username u use to login to your Linux then will ask for your password and now you are logged and can issue Linux commands remotely Learn to Manage Users, Group and Access Control Learning how to manage users and groups is very important when dealing with Linux since learning this will save you from a lot of troubles. I’ll try to simplify this as possible. In Linux in order to login into the system you must have a user credentials just like windows, so you can have multiple users into a Linux system also this users can be grouped into “Groups”, and whenever a user create a file or something this file will be “Owned” by this user and this is the user who has full permission on this file. Talking about Permissions there are 3 permission on each file : Read , Write and Execute, each one of this permission has something like a code as follow : Read (4), Write (2) and Execute (1). so for example full permission will be 4 + 2 + 1 = 7 => 7 is the code for Full Permission, 5 means you can Read and Execute but you can’t edit or modify the file, 0 means no permissions at all. When you wanna set a permission for a file you have to set it also for 3 things in order : Owner, Group and Others. Owner : Is the user who create the file. Group : Is users in same group as owner or the group owns the file Others : Is anyone else So for example Setting Permission for a file as 777 means everyone has all permissions, 775 means Owner user and Owner Group has full permissions while others can only Read and Execute but not Write or Modify It’s Always preferable to do your stuff using non-root user, since root user have full permission over system files which may cause problems because it’s a “Super User”, which in shortened called “su” Creating Users : So Let’s create our user that we will use to sort our server, to create a new user you have to be on a “Super User” / Root , and we gonna use command “useradd” and we can specify some options for example : -m : this will automatically create user home directory if not exist for example > /home/samdev/ -M : this option is used to tell Linux to no create user home directory even if system automatically create home directories for new users -d : this will allow us to specify custom user home directory location -U : will create a group with same name of username and add the new user to it automatically -e : will allow us to set expiring date which will make the account auto expire at a specific date There are many more options you can use but let’s Start small to keep thing as simple as possible, we gonna now create a user with a username of maxcheaters but issue this command useradd -m maxcheaters If you are not on a root user then prefix command with “sudo” then it will ask you for a root password, prefixing any command with “sudo” means that run this command as a “Super User” sudo useradd -m maxcheaters Well it’s created, we can confirm this by listing our users by cat the file /etc/passwd cat /etc/passwd Also here is a trick to show only usernames by cutting each line by delimiter “:” and print first one only cut -d : -f 1 /etc/passwd Well we have our new user create but actually we didn’t set a password for it , so how we can set a password for a user ? . Simple .. we can use the command “passwd” which stands for Password, and also this needs to be ran as “Super User” so you can prefix with “sudo” if you are not on root sudo passwd maxcheaters Nice, it’s not asking you for the new password, just enter a password and hit enter. then confirm it again Note : you wont see what you are typing so make sure you are typing it right Switch Accounts : Now we want to switch to our newly created account, which can be done using command “su” which stands for “Switch User”, don’t get confused about “su” when talking about “Super User” or “Switch User” , when we talk about commands it’s “Switch User” when talking about Terms in Linux Community it’s “Super User”, so here is how to switch to another user su - maxcheaters It may ask you for the password, so enter it and hit Enter Now if we check our current working directory using “pwd” command we will see that we automatically switched to maxcheaters user home directory About Groups : Each user has two different types of groups, Primary one and Secondary Groups, The primary group is usually a group with same name as username it’s created automatically when user created, this doesn’t mean it can’t be change .. no you can change this primary group but in most cases you wont need to do this. Secondary Groups are the groups that user subscribed to it after being created (ah it makes sense ) , so you can have your group and subscribe to other groups as well. So first let’s see what groups our new user has by issuing command “id” followed by username id maxcheaters Now we can start working with groups but to do this we need to be on “Super User” mode so we can do things on root which is not very good choice for security concerns or we can give permissions to our new user. Sudo Permissions : To give a user on a Linux system a permission to run “sudo” commands all we need to do is to switch to root access and add our user to the “sudo” group, so first let’s switch to root, and enter required password su - root Now we need to add our user “maxcheaters” to “sudo” group using command “usermod” followed by option -a which means “Append” followed by “G” then group name “sudo” followed by user to add “maxcheaters” usermod -aG sudo maxcheaters Now let’s Switch back to “maxcheaters” user, i guess you know how … right ? su - maxcheaters Create Groups : Creating is as simple as creating users with the command “groupadd” followed by new group name, note that this command is needs to be executed via a super user and since we switched to non-super user “maxcheaters” then we prefix it with “sudo” to do it as super user, not that it may ask you for the “maxcheaters password sudo groupadd cheaters To get list of all available groups you can cat the file “/etc/group” cat /etc/group Add a User to Group : Huh ?? we already did this , cant you remember ? … well anyway you can add user to a group by modifying user with “usermod” command followed by -aG, followed by group name then user name, and this is also a super user command so you need to prefix with sudo sudo usermod -aG cheaters maxcheaters Remove user from a Group : To remove user from a group you can use command “deluser” yes it means delete user but no worries if you use it correctly it wont affect user itself, only remove it from a group, also it needs to be used with “sudo” sudo deluser maxcheaters cheaters Delete a Group : Well we deleted the user from the group but we didn’t deleted the group it self , it still exist so if we wanna to delete the group “cheaters” we can use command “groupdel” followed by group name, also it will delete the group from all users subscribed to it automatically sudo groupdel cheaters Repositories and Software Repositories are some kind of online sources for downloading and getting software, Linux distributions comes with some default repositories that contains most and commonly used software, so it helps you to download software easy and fast and your system will search available or registered repositories for the software you want to install and download it for you. Note : this part of guide is for Distributions that uses “apt” as packages manager which is very common, some others like for example ArchLinux using “pacman” as packages manager, so if you have a different package manager lemme know the Distribution you use and i’ll try to assist you though it Update APT Database : It’s always good to update your repositories and this means let your system scan registered repositories and see if anything added or changed, and we do this using command “apt-get” followed by “update” sudo apt-get update Install a Software : To install a software you know first to know it’s name (logically ), then you can use command “apt-get” followed by “install” then application name, but actually in Linux community it’s usually called Package instead of application and things like this . so let’s try by installing “unzip” to be able to unzip .zip files sudo apt-get install unzip Very simple isn’t , it’s just like that, no annoying pop ups and dialogs … etc Note : Some Packages during installing will ask you about something needs confirm and you’ll be able to answer by typing “Y” for yes, and “n” for no Uninstall a Package : Maybe at some point you want to uninstall / remove a package installed before, and it’s not hard to do all u need is same “apt-get” command followed by “remove” instead of “install” followed by package name to remove sudo apt-get remove unzip But wait a moment cause this is not best way all the times, it can be good at sometimes and not in some other cases, since this way you removing only the package it self ,but sometimes a packages comes with another package and configuration files so to remove it all we can use another way by using “purge” instead of “remove” sudo apt-get purge unzip Installing and Configuring MySQL Server Now it’s time to install MySQL server on our Linux Server, but installing package named “mysql-server” sudo apt-get install mysql-server Congratulations it’s installed, but hold on … it’s not the time to celebrate … we still need to configure it Currently if we tried to log into our database it will be with username “root” and no password (by default) so it’s time to harden our database security a bit. MySQL Security Hardening : First thing after installing mysql server on Linux is to harden its default security configurations and this can be done by running the command that comes with mysql installation “mysql_secure_installation” as a super user sudo mysql_secure_installation At this part you need to enter the current password of root username (which is none by default ) so just hit enter, then it will ask you if you want to set a password for the “root” username (root of mysql server not system), just answer with “Y” for Yes Now it will ask you to set a new password for the “root” user, write a password (it wont show so just type it carefully) and Confirm it again Done, and it’s asking you if you wanna remove anonymous users, Of course “Y” we don’t want anonymous access to our database The Good Question is here … Do you want to “Disallow” root user to be logged remotely ? well maybe you need remote access to manage your database from your pc or from any where and i also want that but it’s really a bad idea to allow remote access for “root” so i would say “Y”es Disallow root login remotely and later i’ll tell you how to make a good remote access without root. Do you want to remove test database and access to it ?? Hell yeah who needs a test database .. do you ? Now Let’s Reload Privileges ?? YES Now our MySQL Server has a better security . Login to MySQL Server We have our Database Server now ,why not trying to login via Linux , Let’s go for it … Note : this method is applicable to all Operating Systems since it’s related to MySQL it self not OS. How we gonna do this ? Simple use command “mysql” followed by -h (to identify host default is localhost) followed by host “localhost” followed by -u ( to identify user) followed by username (root is the only one we got now) followed by -p to identify that this username has a password mysql -h localhost -u root -p and it will ask you to enter the password just type it and hit Enter Now we can run any MySQL Queries / Commands for example let’s see the databases we have so far SHOW DATABASES; Note : All MySQL Queries and Commands ends with ; (semi-colon) Create a Database : Since in this Guide i’m planning to demonstrate using aCis Server pack so i’ll create a database called acis_db, using mysql command “CREATE DATABASE” followed by database name CREATE DATABASE acis_db; Succeed . Create a Database User : Isn’t the time to use another user for MySQL instead of root ?, i guess it’s good idea to create a new user with limited access using this MySQL Command CREATE USER 'USERNAME'@'HOST' IDENTIFIED BY 'PASSWORD'; USERNAME : is the username you want to create HOST : This is really important since by default this is “localhost” but doing this wont allow you to connect remotely with this user, since connection from this user will be accepted only if it’s from “localhost” or same machine , so if you want to allow remote access from anywhere you can set it to (%), or even set it to a specific host if you wanna a very specific security layers PASSWORD : is where you put this user password Now just Hit Enter after you customize this command as you need … and your new user will be created Give Access on Database : You successfully create a database user, but actually this user by default will have no access on any database so it’s time to give this user access on our “acis_db” database, using “GRANT” command GRANT ALL ON acis_db.* TO 'maxcheaters'@'%' IDENTIFIED BY 'PASSWORD'; This line of MySQL command means : Give All Permission on the Database “acis_db” including All (*) Tables to the user “maxcheaters” that have remote access and password of “PASSWORD” Amazing , But to be honest with you this wont affect database instantly , we need to force MySQL server to reload permissions and access by issuing this command FLUSH PRIVILEGES; Maintain Remote Access : We Created our user with remote access , so let’s try to connect to the host with your favorite MySQL Database App, most L2 Admins uses Navicat but i hate that Application so i use an application called HeidiSQL , so just connect with whatever you want … Oh Come on, we created a user with remote access why it’s not working ? …… Actually we set this user to have remote access but MySQL Server it self is not yet configured to support remote access Support, so let’s Do this. but first quit MySQL Command Line by typing “exit” and hit Enter. First we need to modify MySQL configuration file which by default on location of /etc/mysql/my.cnf , so i’ll use nano editor for this, as we did before to edit files . sudo nano /etc/mysql/my.cnf Scroll down a lil bit using Keyboard Arrows til you find “bind-address” and set its value to your public ip or DNS Then Save it using CTRL+O, then Exit Editor using CTRL+X, and to make this changes has effect we need to restart MySQL Server or Service using this command sudo service mysql restart Now it should work if we test again … Yes it does …. Note : it you may can’t login to your database server remotely also if your firewall blocked 3306 port, if that’s the case, no worries we will take about Firewalls later. Connect and Install Your Server Database Well i guess you already connected not it’s time to export your database and import it into your new database server. To do so on HeidiSQL, right click on your local database and click on Export Database as SQL Now Select your Exporting Preferences and Export Location then click on Export After SQL File Exported Now back to your Remote MySQL Session and Select “acis_db” database and activate “Query” Tab On “Query” Tab Script Area Right Click and Choose “Load SQL File…” and check where you saved the exported SQL Script and then Hit Run Icon Now your Server Database Installed, Congratulations so far Installing and Configuring Oracle Java Since you have your database up and running we still need Java to be installed on our Linux System to be able to run GameServer and LoginServer, so let’s learn how to install “Oracle” Java successfully . First some Linux Distributions comes with java already but “Open”JDK not “Oracle” JDK and we need to install Oracle JDK to run without problems, so we can use “apt-get” command as before but the problem is Oracle JDK is not always available on Default Repositories so we may need to add that Repository contains Oracle Java. Adding a Repository : Adding a Repository is just a 1 line command that self explanatory using command “add-apt-repository” followed by repository identifier, and the repository that contains Oracle Java is “ppa:webupd8team/java” , so let’s add this sudo add-apt-repository ppa:webupd8team/java It May ask you for Confirming just Hit Enter Since we added a new Repository so we may need to update our APT database as we learned before sudo apt-get update Install Required Packages : Before Proceeding with installing java we need to install a required package to avoid further errors, this is the “python-software-properties” software sudo apt-get install python-software-properties Accept Oracle License : Usually if this is your first time installing Oracle Java then you’ll get Error with exit code of -1, and this is happens since you’re required to accept Oracle License before installing Java, and to do this via Terminal is very easy , i’ll give you the solution, just run this command once echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections Install Java 8 : Now we can Proceed with Installation normally with “apt-get” command to install the package “oracle-java8-installer” sudo apt-get install oracle-java8-installer It may ask you for some confirmations just answer with “Y” for Yes Well it’s Installed Successfully Set Default Java : By default Java 8 will set it self as default but if you have multiple java installation you can change default one using command “update-alternatives” followed by option “–config” to set what you wanna configure followed by “java” sudo update-alternatives --config java Here you can type the number of which installation to be default, or leave blank to keep settings as is, and i can see java 8 is selected by default so i’ll keep it as is. Also you can confirm this by running java version command java -version Move and Setup your Server Files Now things getting more excited .. so let’s stay focused til the end Uploading Files : Since you need to upload your server so let’s zip our “compiled” server, and now to upload it actually you have many ways it’s all about your taste 1st : Using Files Hosting This way is very simple all you need is just upload to a Files Hosting Service , i prefer , or you can use any Hosting you want and go to your Linux Desktop and download it with Firefox (Default Browser for many Linux Distributions) but this way considering that you have Remote Desktop Access to the Linux Server, and you can’t simply use “Windows Remote Desktop” directly since it’s for Windows Only. Note : You can make “Windows Remote Desktop” able to access a Linux Desktop but installing a package called “xrdp”, but actually it’s very bad and slow So if you have a way to remotely access your Linux Desktop go for it , if not then i’ll tell you how you can do this using VNC. Installing VNC Server : VNC Server is a good way to remotely connect to a Linux Desktop and it’s much faster than XRDP, so let’s start installing it sudo apt-get install tightvncserver Once installed let’s start it by issuing this command tightvncserver At First time it will ask you for a password, enter the password and hit Enter Note : VNC support only 8 characters length for password, so even if you entered more than 8 characters it will use only first 8 characters Then it will ask you if you want a view-only password which means with this view only password you can only see the desktop but not interact Now you need to download and install VNC Viewer on your machine to connect to VNC Server where you can Download Here . Once Downloaded and Install, Run it will you get this window, where you want to add your Linux IP or DNS followed by ( :: ) then default port of 590x then click Connect, where x is the id of your Session ID you got in your Linux when started VNC, for Example “SamDev:1” means port is 5901, SamDev:2 means port is 5902 . After Clicking Connect, it will ask you for the Password you set for this Session , Enter it and Click Ok Now you are finally Connected So lets start downloading our Server Zip file By Default it will be Downloaded to the Current Logged User Downloads Folder Note : More way will be added soon Let’s go to User Directory and Downloads Folder cd ~/Downloads Do you still have “unzip” installed ? np if you removed it install it again sudo apt-get install unzip Unzipping a Zipped File : To unzip a file using unzip package it’s really easy unzip Rename File/Directory : Do you need to rename this folder to L2Server for example ? no problem we didn’t mentioned this but it’s very simple since there is no direct command for renaming but instead we use the moving command “mv” mv Live L2Server Create Starting Shells [OPTIONAL] : Well this Step is optional but i prefer to do it like this since original Shell Scripts are running automatically running with no-hup ( No Hanging Up ), which is really good but actually i prefer to do this manually and to have default Shell Scripts beside the custom HUP Scripts specially in development Level. So let’s Create our Shell for GameServer, First head to “gameserver” directory cd ~/Downloads/L2Server/gameserver and then i’ll use nano to create and edit a new Shell Script file . Note : Shell Files should end with .sh extension nano Then Add this Script #!/bin/bash java -Xmx2G -cp ./libs/*:l2jserver.jar net.sf.l2j.gameserver.GameServer Now Save and Exit : CTRL + O > CTRL + X Let’s Head to login Directory and do almost same cd ../login And Create our Login Shell nano and Add this Script #!/bin/bash nice -n -2 java -Xmx512m -cp ./libs/*:l2jserver.jar net.sf.l2j.loginserver.L2LoginServer Save and Exit Again : CTRL+O > CTRL+X Configure Server : Now you need to Configure your server Database Information, which is located in Login : login/config/ GameServer : gameserver/config/ Configure Game Server : Change Directory to Game Server Config Folder cd ~/Downloads/L2Server/gameserver/config Then i’ll use Nano to Edit nano Locate this Configs and Change them with your database name , username and password When you done > CTRL + O to Save, CTRL + X to Exit Configure Login : Change Directory to Game Server Config Folder cd ~/Downloads/L2Server/login/config Then i’ll use Nano to Edit nano Locate this Configs and Change them with your database name , username and password When you done > CTRL + O to Save, CTRL + X to Exit Allow Shells to be Executable : Before you start server you need to know that in Linux you need to run .sh scripts instead of .bat, and by default .sh has no permission to run so we need to give those files permission to run using command “chmod” followed by permissions followed by file name, but changing each file would be time consuming so here is a trick to set a permission for all .sh files in one line by adding a wildcard in file name (*), so let’s first go to gameserver directory cd ~/Downloads/L2Server/gameserver Then we change permissions for .sh files sudo chmod -R a+x *.sh Now our .sh files turned Green which means it’s executable. So let’s do Same with login directory cd ../login sudo chmod -R a+x *.sh Congratulations i think your server now is well configured. Run and Stop Server Well let’s log to our server via VNC as we learned before , remember ? then open your terminal Note : if you wanna do this via SSH, you can use a package called Screen , Find more Run Login Server First we need to go to our login folder of the server cd ~/Downloads/L2Server/login Now we need to execute our Shell Script, you can execute original one or our created one depends on the situation and stability level of your server, so it’s all up to you sudo ./ Great, Login Server is Running, now time for Game Server. Run Game Server Open a New Terminal or a new Tab, File > new Tab or CTRL + SHIFT + T on the New Tab go to gameserver Directory location cd ../gameserver Now time to start gameserver sudo ./ You L2 Server is not up and running Close Game / Login Server : To Close either Login or Game Server just close the terminal or click CTRL+C to close but keep Terminal open. Installing and Configuring Apache2 To get Apache Server or a Web Hosting Server you can simply install LAMPP , it’s full package of Apache, PHP and MySQL together, but personally i don’t like to go this way, since i always prefer to go with non-preconfigured stuff to be able to have full control over every little detail, also it will be good for you to know how everything work and how they linked smoothly together. Install Apache2 : Installing Apache2 is same as installing any package we did before sudo apt-get install apache2 Apache2 Installed Successfully now let’s Install PHP as well . Install PHP 7 : In this Guide i’ll install PHP 7, but you can install older versions if you want, it’s just same procedures .. First we need to add the Repository that has what we need sudo add-apt-repository ppa:ondrej/php Now let’s Update our Repositories Database sudo apt-get update After that we gonna install PHP 7 along with some PHP Extensions needed commonly : sudo apt-get install php7.0 php7.0-cli php7.0-common libapache2-mod-php7.0 php7.0-mysql php7.0-fpm php7.0-curl php7.0-gd php7.0-bz2 Here i’m installing PHP 7.0 with some extra PHP library all in one command, then we need to host our site… Host your Site and Domain First of all you need to have your domain which can be bought from any provider, i would suggest , very good services, skilled support team and really fast orders and problems processing. For this guide we will try to host the domain “” on our Linux Server, so first go to your domain provider panel , in this case it’s GoDaddy, so go to your domains and click “DNS” : Now we need to modify the “A” record When you get into edit mode, add your server IPv4 into Value/Points to. then save. Sometimes this modification takes time to propagate but in GoDaddy as i been using it for many years i found that it’s one of the fastest, most of times it takes less than 10 seconds to take effect. so let’s see if our domain working and connected to our server Yeah, as it says “It works!” … But why it show the main page of server, we need it to have a separate content … well then let’s do this Create Apache2 Host : To Create an Apache2 Host we need to follow few step, by creating the directory that will contain our site files, then we create a configuration file for this site to tell Apache how this site will work and where its files located, then we have to enable it. So First let’s create a directory that will host our site , by default Apache look in files inside Directory /var/www , so i’ll create a directory on the path of /var/www/ , and in this case we gonna use the command “mkdir” to make a directory with option “-p” to automatically create all parent directories required for us. sudo mkdir -p /var/www/ Maybe now we need to change Owner and Permission to avoid further problems sudo chown -R $USER:$USER /var/www/ sudo chmod -R 755 /var/www/ Now we need to create the configuration file, so let’s start by copy the default configuration file. sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ We need now to edit that configuration file … sudo nano /etc/apache2/sites-available/ Note : All Lines starting with ( # ) is just a comments, so it wont affect anything, you can remove it or leave it , doesn’t matter At this moment we need to modify this file to look like this CTRL+O to Save, CTRL+X to Exit … One more step to go .. we need now to Enable our new site using command a2ensite (Apache2 Enable Site). sudo a2ensite To Take Effect we need to restart our Apache2 Server sudo service apache2 restart Let’s Create a simple php file to test … sudo echo "<?php echo 'Greetings from PHP';?>" > /var/www/ So time to test … Yes, it's working :) Thanks for taking a look into this guide and i hope it's useful for someone out there ... lemme know if you got question and i'll update this topic soon with more parts Thanks and Regard,
  5. Hello alll im glad to going back at this forum GREETS ALL!. I used to host some server at interlude chronicle but now im sicked of all this form of preinstaled c6 servers so i want to ask u guys likley all who asked so time a go. What is best option with acces to source and procetion from adrenaline,bots etc for interlude. Told ya about premium and just for free. Greets rismok since 2005 here.
  6. Hi, I'm here to introduce you to my project. Online Day 11 November - 14:00 GMT -3 Website: INTERLUDE SERVER OFICIAL PTS Rates XP - SP - x200 | Premium Accounts x400 Adena - x100 | Premium Accounts x200 Drop Itens - x5 | Premium Accounts x10 Seal Stones - x10 Quest Experiencia (EXP) - x100 Quest Skill Points (SP) - x100 Quest Adena - x150 Quest Drop Itens - x10 Spoil - x5 Weight Limit - x10 Itens D,C,B,A-Grade itens for ADENA S-Grade Itens Drop Part ou Craft Shield parry for Mystic Sacred Bonus ( Angels,Saints, Gods ) In Armor and Jewels Sacred Jewels Core and Orfen Heavens Divider One Handed Dual Dragon Slayer * Dragon Slayer Dual Dark Legion's * Dark Legion's Sacred Dyes +5-2 Enchants Safe +4 Max Armor/Jewelry +15 Max Weapon +20 Max. Enchant Normal Scroll - +15 Max. Enchant Normal Blessed - +15 Normal Scroll chance 50% for +15 Blessed Scroll Armor chance 70% for +10 Blessed Scroll Weapon chance 70% for +20 Crystal Scroll Weapon Min +20 Max +25 for 90% Chance ( Fail Back +20 ) Crystal Scroll Armor min +10 Max +15 for 90% Chance ( Fail Back para +10 ) Gameplay Official PTS Interlude no Custom Itens Frintezza / Sailren and all grand Bosses Running Unlimited Dual Box Off-Trade: Your Store stays ingame without being online. Subclass without quest Lock exp gain with commands xpoff & xpon in .menu Disabled all clan penalties Sieges: Every Saturday and Sunday The catacombs are open 24 / 7 Teleport and free buffs to Level 40 Blesseds enchants farm in custom areas Clanhall: new sales system Droplist Info Shift+Click Farm Areas Acient Adena: Catacombs/Necropolis rate x8 Medans and Fragments: All Mobs Adena/Blesseds: Aligator Sland +70% Drop/Craft S: Field of Silence Drop/Craft S: Field of Winsper Npc's Global Gatekeeper Npc BUFFER Npc Boss Status Weapon Shop, Armor Shop, Grocery Shop Noblesse Barakiel with Nobles Status Awards for the party that gives the last hit Barakiel Respawn 4h (Chaotic Zone) Ember Respawn 4h (Chaotic Zone) Boses All Epic bosses Level 80+ Valakas, antharas Spawn 48h Baium,Zaken,Frintezza Spawn 36hs Queen Ant, Core, Orfen Spawn 24h Ketra's Hero Hekaton Varka's Hero Shadith Cherub Galaxia Palibati Queen Themis Longhorn Golkonda Shilens Messenger Cabrio Drops : Medals : 60% 100-250 Blessed Enchants Armor/Weapon A/S/B - (100-300) Ancient Adena - (14.000.000) Top Grade Stones - ( 10 - 15) Events Team Vs Team ( Top Killer wins Status Hero for 2 Hours ) NPc Buffs Not Allowed at Event L2 Day Event where you change the letters by Scrolls of buffs to use in the events Party vs Party Every Day at 22:00 Raid Boss And Others :) Auto Clan Level Automatic Clan level awards based on online players Level 6 = 10 Players online Level 7 = 20 Players online Level 8 = 25 Players online Buffs Buff Slot 28 + 4 (Divine Inspiration in NPC ) Pet Buffs no NPC Scheme Buffs no NPC Hot Springs e Noblesse a venda por medal no NPC Buff tempo de 2 horas Olympiad Period : 7 days, hero every Saturday 12:00 Time of battles 16:00 for 23:59 GMT-3 Max Enchant +6 Class Based disabled Min 9 Matches to be Hero Server Commands .menu (xpon, xpoff, Autoloot) .deposit .withdraw - Converte 500.000.000 Adena em Gold Bars .whoiam ( Check all status ) Anti Zerg Max 1 Clan for Ally No Royal's Maximo 40 Players for Clan Infos Server Time - GMT -3 SmartGuard Protection Geodata Ativado Anti DDOS Protection
  7. Hello all, Since I love to help people if my knowledge can provide the solution, I'm here to help you with your requests/problems about l2j. I'm usually on for 3-4 hours per day so don't expect fast respond. I'd love to create your idea and give you the code ready but get real, I wont spend hours for just one thing , so don't request something big Feel free to ask any thing you cant understand, blame is not allowed here :) I have no idea for anything related to client side. Atm I'm working on aCis project (feel free to ask something which is related to another project ). Finally, I want to do this because it will be useful (for some members) but for me too, I'm learning java and I would like to improve my skills so I found it great idea. If this post is in wrong section please a mod move it to the proper one :) Thank you!
  8. Hello some times when i have gameserver open i get this error nothing happens on the gameplay server runs smooth but i want to see if anyone knows how to fix it..i tried but nothing still the same here is the error
  9. Hello guys, Yes, we are back! After few years we decide to come back. It’s the same team Lex and Tzu. For the guys that are new in Lineage 2 Community we had succesfull projects L2Pharos our 3rd server after (~8 years ago, not .EU ) And The ‘old guys’ can confirm that those servers were successfully ones without this `greedy-coruption-servers` etiquette that were killed by DDoS because we were competition. Also one of our biggest success was L2Silver which i think it doesn't need any presentation Let’s present us a bit: Lex – the guy who talk to the players all days and comes with ideas and improvements for server to make it a long-term server. Always thinking of new content/events/possibilities to make the server enjoyable. Tzu – the guy who don’t talk so much to players ( not really good at socializing like Lex), but who is the back of the server and take care of implementing Lex ideas. A little bit obsessed to check all the time if all is performant. Currently being Software Developer for 3 years ( sadly in C#, but it’s not such a big difference) Now how we decided to come back: In all this time ( 5 years ) by keep talking and last year we meet in a city and had few beers talking about that great times when we were having server and working on the server, and when one of us was distracted by something else, the other one would call him 24/7 to work on server ), after that we decided to watch L2Scene to see what’s happening, we saw that it’s in a more bad way that when we left, but the players community increased. After that, in 5 months, Lex arrived at my house (Tzu) and in a night we decided to come back and make it great again. A few thanks for the guys from: L2PlayInEra they started to change a bit the community and they had a nice success and I respect them. So in last 4 months we took informations, regarding all problems, what players want, we tested few servers and I think we understood what is wanted and put some time to start working on the idea. What we saw that was missing very much: a place where players can be a community without being forced all the time to move from one server to another and choosing not a good server, but the server that is not the worst. And that's what we try to accomplish. To make Private Servers community a little bit better. We want to see more good servers. We are still working on the server side, but the website is in BETA-Phase and we already have a forum: – Website - Community Forum We’ve also added some features of the server and we will still add on the list more informations. We understand that is far from perfect, that’s why we delay the opening, even thought I think we will make it not even close to near perfect, with your help, we will! We ask you to give us any advises, or any suggestions that you may have As we you may have guessed we made a mid rate with the next features: Rates: Experience(XP): 30x Skill Points(SP): 30x Adena: 15x Drop: 15x Spoil: 15x Raidboss: 4x Grandboss: 1x(1 jewel per epic) Quest Drop: 3x Quest Reward: 2x Manor: 3x Weight Limit: 10x Enchants: Safe enchant: +4 Max Enchant: +15 Normal Scroll chance: 55% Blessed Scroll chance: 60% Elemental Stone Chance: 50% Elemental Crystal Chance: 40% Basic Features: Buff time: 2h Buff slots: 24 Dance/Songs slots: 12 Trigger slots: 12 Max clients per PC: 3 Subclass Max Level: 85 Protection(SGuard + Report system: enabled Geodata: enabled Subclass Quest: disabled Class Master: enabled AutoLoot: enabled AutoLoot Raidboss: disabled Offline shops: enabled Offline buffers: enabled Different Community Board: enabled Auction system: enabled Private messages history: enabled Droplist search: enabled Away system: enabled So far we do not have any Beta Date/ Opening date but we have an interval between 1 and 3 months.
  10. As title say.. Source 4Shared Direct Link for DP Direct Link for Core Enjoy fuckers..
  11. Hello i have a problem when i wear some custom dual daggers/blades and maces it wears it on 1 hand here is a picture i can wear shield with them Click Here couldnt upload 3 images
  12. [L2j] L2Damage

    GRAND NEWS SEASON START FROM: 2017/10/28, SATURDAY, 17:00 +2GMT. After months of intensive playing we dedicated to make server wipe. All characters will be deleted and game starts from zero for everyone. This wipe will bring important fixes and updates for server and players, list of updates players will see in web page and inside game. It`s great chance for new and old players to start, who got bored. We promise you a good, interesting and stable long term game then ever before. See you all from - 28/10/2017 Rates: » Xp 9000x. » Sp 9000x. » Aden 9000x. » Drop 9000x. » PartyXp 2x. » PartySp 2x. » Starting character level - 20. Enchant rates: » Safe enchant +4. » Blessed and simple scrolls max enchant (+16). » Crystal scrolls max enchant (+20). » Simple enchant scrolls chance - 80%. » Blessed enchant scrolls chance - 100%. » Crystal enchant scrolls chance - 100%. Augmentations: » Mid life stone skill chance - 5%. » High life stone skill chance - 10%. » Top life stone skill chance - 15%. Unique features: » Main towns - Giran, Goddard, Gludio. » Working all castle sieges. » Stackable scrolls, lifestones, book of giants. » Unique primeval isle flag vs flag pvp area. » More then 9 active raid bosses. » Casino event manager. » Unique aden system. » Wedding system. » Unique farming areas. » Npc skill enchanter. » A grade items for free. » Shops till top S grade. » Unique tattoos. » Full npc buffer with auto buff. » Max count of buffs - 76. » Max subclasses - 5. » Free and no quest class change. » Free and no quest sub class. » Free nobless status. » No weight limit. » No grade limit. » Quake pvp system. » Pvp/pk show on title. » Online password change. » Top 20 pvp/pk npc in game. » Augmentation system (preconfigured). » Server information npc. » Unique monsters. » Offline trade system. » Interlude retail skills. » Server up-time [24/7] [99]%. » Perfect class balance. » No custom items ! Voiced commands: .tvtjoin .tvtleave - Join or leave tvt event. .ctfjoin .ctfleave - Join or leave ctf event. .dmjoin .dmleave - Join of leave dm event. .online - current online players count. .repair - repairs stuck character in world. .menu - opens online menu panel. .vote - opens vote panel in every place. .check - opens captcha panel. Event system: » TVT event [12:00 15:00 17:00 20:00 23:00] hours. » CTF event [13:00 16:00 19:00 21:00 24:00] hours. » DM event [11:00 14:00 18:00 22:00] hours. » Quiz event delay [120] minutes. » Casino event working [24/7]. » Unique event shop. Olympiad game: » Retail olympiad game. » Competition period [1] week. » Olympiad start time [18:00] end [00:00]. » Olympoiad start/end times can be found in olympiad manager. More info at web sites: Web site - Forum - Movie -
  13. Hello mates, Since all my previous posts was for H5 Chronicle so i think i’ll start post some content for Interlude Chronicle, so here is my first Interlude guide, but after all Java is Java, no matter Interlude, H5, … etc all are just Java files The Server Pack i’m gonna use in this guide will be ( aCis Rev.360 [Free Version] ), and for the IDE will use NetBeans, of course you can use Eclipse it’s just personal preferences. ---------------------------------------------------------------------------------- Requirements : – I expect that you have aCis Source Pack Installed on your computer or server – We won’t go through the process of installing and starting server, since there are a lot of good guides about this here. – You need a Java IDE (Eclipse, Netbeans, IntelliJ or any else) i’ll use NetBeans but you can use Any. – Stay Relaxed, No Stress, Coding is just Entertaining. ---------------------------------------------------------------------------------- – How things happen in Game ? Well In Lineage 2 Every thing has two sides (Client and Server), whatever you do in Client (Game) it will automatically send a request to server, then server analyze this request, start processing it and response with a response . That data the fly between Client and Server called Packets , This Packets can be a Request Packet or Response Packet, and each Packet has special code or identifier, if you click here you will find the main Packets for Interlude. For Example : You Click on Community or ALT+B, your game client will send a packet to server called RequestShowboardwith code 57, this is sent from Client to Server, so it’s ClientPacket. So if we want to do any special thing when Player try to show the community board we need to find this packet code which since it’s a ClientPacket then it will be in that package : When Server Analyze that request and see things like if it’s enabled … etc it will reply with another Packet which is ShowBoard with code 6E (if board enabled ofc), and this is sent from Server to Client, so it’s a ServerPacket, and since it’s a ServerPacket so we can find it in that package : , and we can expect that this class or java file will be responsible for what will be shown on the board. By now we know how to find where magic happens, but what about more power ? ---------------------------------------------------------------------------------- What is Bypass and how it works ? Whenever you click on a button or a link for an NPC or even in Community Board this buttons and links meant to do something when a player click on it, but how it happens ? and how server knows which button player clicked and what should happen after that ? Well if you try to show the code of any l2j html file that contain a link or a button, for example i’ll view source code of aCis main buffer by @Tryskell, which located in gamserver/data/html/mods/buffer/50008.htm <html><body> <center><img src="L2UI_CH3.herotower_deco" width=256 height=32 /></center><br> Hello stranger!<br> I'm Tryskell. Yup, you're right, I created an avatar of myself and decided to share some of my powerful buffs in order to improve your pew-pew-bum-zap abilities.<br> What can I do for you ? Do you want to hear <font color="LEVEL"><a action="bypass -h npc_%objectId%_Chat 9">my story</a></font> ?<br> <center> <a action="bypass -h npc_%objectId%_support player">Magic support</a><br> <a action="bypass -h npc_%objectId%_manageschemes">Manage my schemes</a><br1> <a action="bypass -h npc_%objectId%_editschemes none none">Edit my schemes</a><br> <a action="bypass -h npc_%objectId%_heal">Heal me and my pet</a><br1> <a action="bypass -h npc_%objectId%_cleanup">Cleanup all effects on me and my pet</a> </center> </body></html> Here you can see the attribute action contains something like : let’s split this action in parts and see what every part do : bypass : tells your client to send a packet RequestBypassToServer with OP Code 0x21 (0x identify a hex decimal > a numeric base 16 value ) -h : tells your client to hide the window on click event npc_%objectId%_Chat 9 : is the command that will be bypassed to server So if we wanna make a bypass to server we just wanna set the action of the link (<a>) or button to something like : “bypass -h command” or just “bypass command” But actually we still dunno what commands already available or if we can create a new custom ….. ----------------------------------------------------------- Track the Bypass down : I can just give you a list of possible bypass commands but i hate limitations, so i’ll give you a quick guide about how to find them and learn about what they do all on your own and then will give you some examples, also this will help you work with almost any pack or chronicle, so let’s see how it works. First packets sent to server will be sent to a class called, which in aCis it’s located at : , and then this class will redirect that packet to the proper Handler or class depending on the received packet OPCode, and since we know that RequestBypassToServer have the OPCode of 0x21 so what about search about this in that Java File : As we can see it call a class called RequestBypassToServer, if we click on this class name : For Netbeans : Right Click > Navigate > Declaration (or CTRL+B) For Eclipse : Right Click > Go To > Declaration It will open that file we will find a part of the code like this (i removed some part just to be easier to read) : if (_command.startsWith("admin_")) { .... } else if (_command.startsWith("player_help ")) { .... } else if (_command.startsWith("npc_")) { .... } else if (_command.startsWith("manor_menu_select?")) { .... } else if (_command.startsWith("bbs_") || _command.startsWith("_bbs") || _command.startsWith("_friend") || _command.startsWith("_mail") || _command.startsWith("_block")) { .... } else if (_command.startsWith("Quest ")) { .... } else if (_command.startsWith("_match")) { .... } else if (_command.startsWith("_diary")) { .... } else if (_command.startsWith("arenachange")) { .... } So as we can see the current supported bypasses are commands that started with : Of course you can add another main custom command by adding another “else if” statement or even create a bypass handler or replace this one with an extended one. Why we don’t go further and inspect how this npc_ thing work ….. here the code of that section : else if (_command.startsWith("npc_")) { if (!activeChar.validateBypass(_command)) return; int endOfId = _command.indexOf('_', 5); String id; if (endOfId > 0) id = _command.substring(4, endOfId); else id = _command.substring(4); try { final L2Object object = L2World.getInstance().getObject(Integer.parseInt(id)); if (object != null && object instanceof L2Npc && endOfId > 0 && ((L2Npc) object).canInteract(activeChar)) ((L2Npc) object).onBypassFeedback(activeChar, _command.substring(endOfId + 1)); activeChar.sendPacket(ActionFailed.STATIC_PACKET); } catch (NumberFormatException nfe) { } } The first part can be lil confusing if you’re not very familiar with java, so lemme explain it to you . That part looking for a number that comes after npc_ that followed by an “_” for example : npc_123456 , and before we saw that command npc_%objectId%_Chat 9 , so here we expect that %objectId% is a number and yes it is since server will automatically replace %objectId% with a unique numeric identifier for the NPC you’re talking to, and it’s not the id you use to spawn it, since you may spawn that npc multiple times so server needs to identify each one of them. So for now we know that command is used like this : Later in this code we will find that part : final L2Object object = L2World.getInstance().getObject(Integer.parseInt(id)); if (object != null && object instanceof L2Npc && endOfId > 0 && ((L2Npc) object).canInteract(activeChar)) ((L2Npc) object).onBypassFeedback(activeChar, _command.substring(endOfId + 1)); activeChar.sendPacket(ActionFailed.STATIC_PACKET); Also let me explain this for you, this code will search the L2World for something with that unique identifier and if found it will use it as L2Npc object and call the method onBypassFeedback to process the command in our case the command will be Chat 9. So Lets Go to declaration of that L2Npc class (as we learned how before), and lets see what this onBypassFeedback do we will find something like this : if (command.equalsIgnoreCase("TerritoryStatus")) { .... } else if (command.startsWith("Quest")) { .... } else if (command.startsWith("Chat")) { .... } else if (command.startsWith("Link")) { .... } else if (command.startsWith("Loto")) { .... } else if (command.startsWith("CPRecovery")) { .... } else if (command.startsWith("SupportMagic")) { .... } else if (command.startsWith("multisell")) { .... } else if (command.startsWith("exc_multisell")) { .... } else if (command.startsWith("Augment")) { .... } else if (command.startsWith("EnterRift")) { .... } else if (command.startsWith("ChangeRiftRoom")) { .... } else if (command.startsWith("ExitRift")) { .... } As we can see we can now expect that we can use npc_ commands as follow : But in the previous example there were number 9 in the end as npc_%objectId%_Chat 9, what this would mean ? well here is the code of Chat command : else if (command.startsWith("Chat")) { int val = 0; try { val = Integer.parseInt(command.substring(5)); } catch (IndexOutOfBoundsException ioobe) {} catch (NumberFormatException nfe) {} showChatWindow(player, val); } As we can see here it will look for that number (9 in our case) and pass it to a method called showChatWindow , which will look for an htm file with same npc id ended with -9 for example this npc id is 50008 so it will looks for 50008-9.htm , and yes it’s right : Now we know how to track things down but one thing left, which is what if you found an bypass in an npc which you cannot find in L2Npc Class, well some npc don’t directly based on L2Npc type but sometimes it’s based on something else that based on L2Npc, for example this NPC in our example has a bypass like : this “heal” command not exist but if we go to our npcs folder in path of gameserver/data/xml/npcs , and we opened the file 50000-50099.xml since our npc id is 50008 and look into that npc definition you will find this : As you can see it’s based on L2Buffer, not L2Npc directly, so we can expect that this class called L2Buffer will contain a method called onBypassFeedback and it will contain an implementation for this “heal” command, but wait a second … you’ll never find a class called L2Buffer, simply because in aCis Packs L2Buffer will redirect to a class called L2BufferInstance and L2BlaBla will redirect to L2BlaBlaInstance, it’s just how aCis simplify things, so just keep that in mind we looking for L2BufferInstance … If we go to that class which is located in the package of : (btw this package contains a lot of interesting stuff) we will find that part inside the onBypassFeedback method : Yay , it’s here, so if we want to use this command on another npc we have 3 options : – Add this code to the main RequestBypassToServer – Set the NPC type to L2Buffer – Create a new NPC instance and implement this on it Or we can even add it to community board :D ------------------------------------------------------------------- Do you learned something from this guide ? Personally i don’t learn any thing without getting my hands into it in real action, so why not create something real, like a multi function npc and as a bonus we will create a new NPC type as well, also we can work a bit with Community Board . . . let’s go friends ------------------------------------------------------------------- 1.1 : Create a new NPC Type : Let’s Create a new Class in the package, and i’ll call it L2MultiFunctionInstance (Name it whatever u want but don’t forget suffix it with Instance) , Just right click on the package and New > Java Class : Now i’ll make it extends the L2NpcInstance or you can use L2Npc class only, but L2NpcInstance has cool implementation so i’ll go for it, and now Server will know it’s an NPC, but you may want for example extends L2BufferInstance to take benefit of Buffer commands or anything else that considered as NPC, but i’ll go pure in this guide , and to simplify thing and to not go off topic i’ll create a simple class code for you which you can use it and i’ll highlight the important parts : //TODO: Add your Custom Bypasses Here At this place we can add our custom bypass commands “data/html/custom/multifunction/” this is where our .htm files will be located for npcs with this type ------------------------------------------------------------- 1.1 Create the Actual NPC So First let’s create our NPC, i’ll add it Below Tryskell NPC so it will be in file 50000-50099.xml : <npc id="50009" idTemplate="31324" name="Relina" title="Multifunction NPC"> <set name="level" val="70"/> <set name="radius" val="8"/> <set name="height" val="23"/> <set name="rHand" val="316"/> <set name="lHand" val="0"/> <set name="type" val="L2MultiFunction"/> <set name="exp" val="0"/> <set name="sp" val="0"/> <set name="hp" val="2444.46819"/> <set name="mp" val="1345.8"/> <set name="hpRegen" val="7.5"/> <set name="mpRegen" val="2.7"/> <set name="pAtk" val="688.86373"/> <set name="pDef" val="295.91597"/> <set name="mAtk" val="470.40463"/> <set name="mDef" val="216.53847"/> <set name="crit" val="4"/> <set name="atkSpd" val="253"/> <set name="str" val="40"/> <set name="int" val="21"/> <set name="dex" val="30"/> <set name="wit" val="20"/> <set name="con" val="43"/> <set name="men" val="20"/> <set name="corpseTime" val="7"/> <set name="walkSpd" val="50"/> <set name="runSpd" val="120"/> <set name="dropHerbGroup" val="0"/> <ai type="DEFAULT" ssCount="0" ssRate="0" spsCount="0" spsRate="0" aggro="0" canMove="true" seedable="false"/> <skills> <skill id="4045" level="1"/> <skill id="4416" level="16"/> </skills> </npc> Note that it has id of 50009 and type of L2MultiFunction (without Instance) ------------------------------------------------------------ 1.2 Create the html files Now the html part, we gonna create a folder called custom inside html folder and inside it will create multifunction folder which it’s where we gonna have our html files, First we need the main htm which will be on our created folder with name 50009.htm : <html> <body> <br> <center> <img src="L2UI_CH3.herotower_deco" width=256 height=32 /> <font color="D5C003">Hello Player</font><br> <font color="DDDEC0">I'm the Multi Function NPC with Awesome Customs</font><br> <button value="Open Another Chat" action="bypass -h npc_%objectId%_Chat 1" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Show a Multi Sell" action="bypass -h npc_%objectId%_multisell 50009" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Multisell [Inv.Maintain]" action="bypass -h npc_%objectId%_exc_multisell 50009" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Community Board" action="bypass _bbshome" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Acumen Buff - No Close" action="bypass npc_%objectId%_giveAcumen" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Teleport To Giran" action="bypass -h npc_%objectId%_gotogiran" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Augment" action="bypass -h npc_%objectId%_Augment 1" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <button value="Warehouse" action="bypass npc_%objectId%_warehouse_deposit" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <img src="L2UI_CH3.herotower_deco" width=256 height=32 /> </center> </body> </html> Thanks to @Sinister Smile for the buttons, and to make it work, you need to have this file > Download Also we will need another htm file for testing which will be named 50009-1.htm : <html> <body> <br> <center> <img src="L2UI_CH3.herotower_deco" width=256 height=32 /><br > <font color="D5C003">Hello Once Again</font><br> <font color="DDDEC0">This is another Chat of me</font><br> <button value="Back to Main" action="bypass -h npc_%objectId%_Chat 0" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> <img src="L2UI_CH3.herotower_deco" width=256 height=32 /> </center> </body> </html> ----------------------------------------------------------------- 1.3 Create the Multisell File I’ll Create a multisell file with name 50009.xml in multisell folder : <?xml version='1.0' encoding='utf-8'?> <list maintainEnchantment="true"> <item> <production id="6608" count="1"/> <ingredient id="6579" count="1" /> </item> <item> <production id="5643" count="1" /> <ingredient id="151" count="1"/> </item> </list> --------------------------------------------------------------- 1.4 Start Server (If not Yet) and let’s Test Each one Open Another Chat : Action : bypass -h npc_%objectId%_Chat 1 This will Open the htm file called 50009-1.htm Show Multi Sell : Action : bypass -h npc_%objectId%_multisell 50009 This will Show a Multisell with id of 50009, and will show all items even items player can’t buy Multi Sell [Inv.Maintain] : Action : bypass -h npc_%objectId%_exc_multisell 50009 This will Show a Multisell with id of 50009, and will show only items player can buy (have the required items for it) Community Board : Action : bypass _bbshome Will Show Community Board if enabled, you can also use : Augment : Action : bypass -h npc_%objectId%_Augment 1 Will Show Augment Panel, also you can use bypass -h npc_%objectId%_Augment 2, to show Remove Augment Panel ----------------------------------------------------------- 1.5 Implement Missed Bypasses : So Now we need to add our custom bypasses to the NPC Type which are : giveAcument, gotogiran, warehouse_deposit Let’s get back to Java and inside onBypassFeedback in the Class we just created we will add this : if(command.equalsIgnoreCase("giveAcumen")) { SkillTable.getInstance().getInfo(1085, SkillTable.getInstance().getMaxLevel(1085)).getEffects(player, player); } else if(command.equalsIgnoreCase("gotogiran")) { player.teleToLocation(82698,148638,-3473,0); } else if(command.equalsIgnoreCase("warehouse_deposit")) { player.sendPacket(ActionFailed.STATIC_PACKET); player.setActiveWarehouse(player.getWarehouse()); player.tempInventoryDisable(); player.sendPacket(new WarehouseDepositList(player, WarehouseDepositList.PRIVATE)); } else { super.onBypassFeedback(player, command); } ------------------------------------------------------------------ 1.6 Let’s Test this When we test this everything will be find except one thing, which is Warehouse, it will show deposit window, but when you confirm, it will not move items to warehouse, since in client packet of SendWareHouseDepositList it will check if the last npc was a Warehouse and our npc is not warehouse : And to Fix this it simple, just we can add another method to our custom NPC class which will make it pretend as being warehouse : @Override public boolean isWarehouse() { return true; } So we end up with this code : package; import net.sf.l2j.gameserver.cache.HtmCache; import net.sf.l2j.gameserver.datatables.SkillTable; import; import; import; /** * Multi Function NPC Instance * * Made for MxC Bypasses Guide * * @author Sam Dev */ public class L2MultiFunctionInstance extends L2NpcInstance { public L2MultiFunctionInstance(int objectId, NpcTemplate template) { super(objectId, template); } @Override public void onBypassFeedback(L2PcInstance player, String command) { if(command.equalsIgnoreCase("giveAcumen")) { SkillTable.getInstance().getInfo(1085, SkillTable.getInstance().getMaxLevel(1085)).getEffects(player, player); } else if(command.equalsIgnoreCase("gotogiran")) { player.teleToLocation(82698,148638,-3473,0); } else if(command.equalsIgnoreCase("warehouse_deposit")) { player.sendPacket(ActionFailed.STATIC_PACKET); player.setActiveWarehouse(player.getWarehouse()); player.tempInventoryDisable(); player.sendPacket(new WarehouseDepositList(player, WarehouseDepositList.PRIVATE)); } else { super.onBypassFeedback(player, command); } } @Override public boolean isWarehouse() { return true; } @Override public String getHtmlPath(int npcId, int val) { String filename = "data/html/custom/multifunction/" + npcId + ((val == 0) ? "" : "-"+ val ) + ".htm"; return (HtmCache.getInstance().isLoadable(filename)) ? filename : "data/html/npcdefault.htm"; } } By Now we have our Multi Function NPC, But Guess what .... we have a Bonus in this Guide . ----------------------------------------------------------------- 2.0 The Bonus : How to Open a Multisell in Community Board Well i’m sure it’s easy for you now, all we need to do is to add another command to CommunityBoard since we can’t use npc_%objectId% stuff here ----------------------------------------------------------------- 2.1 Add the Command to the You can find it in the package : net.sf.l2j.gameserver.communitybbs , Then we gonna add this code after the _bbshome code else if(command.startsWith("_bbsmultisell")) {MultisellData.getInstance().separateAndSend(command.substring(13).trim(), activeChar, null, false);} To look like : ----------------------------------------------------- 2.1 Add the Mutlisell Button to the Community Board Home Go to : data/html/CommunityBoard/top/Index.htm, and add this code any where you like it to appear : <br> <center> <button value="Multisell In Community" action="bypass _bbsmultisell 50009" width=150 height=22 back="TutorialBut.fortut" fore="TutorialBut.fortut"> </center> ------------------------------------------------------- 2.2 Now Build your Server Core and Restart Server to Test Now Guess What ?? it’s Working and we have Multisell in Community Board At the End i hope you learned something new, and i wish it’s useful to anyone Thanks and Regards
  14. Hello i have a problem when i try to run i get this error i have set the passwords correct but i dont know what is that problem...the startLoginServer .sh works fine here is
  15. [L2J] L2Slice

    Website: EXP: x5000 SP: x5000 Safe Enchant : +6 Max Enchant with Normal Scrolls: +16 [55%] Max Enchant with Blessed Scrolls: +16 [100%] Max Enchant with Crystals Scrolls: +20 [100%] Top Life Stones Rate: 25% High Life Stones Rate: 10% Mid Life Stones Rate: 8% L2 Slice x5000 Server based on retail like gameplay mixed with high rates! Main Town: GIRAN Buff Slots: 72 Fully working skills Working Clan Halls All Raid Bosses + [You can find them from RB's Manager] Olympiad 100% Retail like without feed 100% Retail like gameplay DualBox allowed Flawless Geodata & Pathnodes Active GM Team Balanced Classes [80%] 100% Uptime Max Subclasses: 4 Max Clans on Alliance = 3 All Augments working! (Only 1 ACTIVE + 1 PASSIVE) PvP Protection System Per IP Olympiad Protection Per IP Event Protection Per IP Mass Reward Protection Per IP Mass PvP Zone [Random PvP Spawn System x3] Dynamic Zone with Drops Chaotic Zone PvP Title Colors [100,300,500, 800, 1200, 2500, 4000, 6000, 8000] PK Title Colors [100,300,500, 800, 1200] Custom Start Location Custom Start Name Color Killing Spree System PvP/PK System [1 PvP Reward per kill] Shout Chat With 5 PvP (Unable to Talk before 80lvl) Clan Leader With Clan Lvl 8 Has Color Name Anti-Buff Shield Blocks any kind of buff. PVP Color's on Title/Name *(Name by PvP , Title By PK)* SIEGES Siegable Castles Siege period: 1 Week Giran Castle Gludio Castle Dion Castle Oren Castle Innadril Castle Goddard Castle Rune Castle Schuttgard Castle OLYMPIAD Olympiad auto skill reuse on every match Olympiad Period 1 Week Good Balance between Classes Max Enchant in olympiad +6 FARM FEATURES ADENA ZONE, AA ZONE, SAFE ZONE FARM ITEMS: ADENA, SEAL STONES/AA RAID BOSS INFO HERO BOSS Flame of Splendor Barakiel Ketra's Hero Hekaton Ketra's Commander Tayr Ketra's Chief Brakki Varka's Hero Shadith Varka's Commander Mos Flamestone Giant Varka's Chief Horus EVENTS DeathMatch Team VS Team Domination Double Domination Last Man Standing Lucky Chests Simon Says VIP Team vs Team Capture The Flag Mutant Korean TVT SERVER ANNOUNCEMENTS Top PVP Character Top PK Character Castle Lord RaidBosses Killing Spree in a row. [Vote System] L2Hopzone [Vote System] L2Network SPECIAL ITEMS L2 Slice Dusk Shield L2 Slice Monster Shield L2Slice Event Reward L2Slice Vote Reward L2Slice PVP Reward L2Slice Farm Items L2Slice Noblesse [Noblesse with double click] L2 Slice Hero Item L2 Slice Clan Item L2Slice Tattoo [RETAIL TATTOOS] CUSTOM NPC GM Shop Special Shop Skill Enchanter / Augmenter Boss Information Custom Buffer World Gatekeeper Class Manager Class Changer Wedding Manager Top Manager Clan Hall Manager WareHouse Vote Manager Castle Manager Password Changer Symbol Maker Grabd Olympiad Manager Olympiad Rank Dynamic Zone Manager SERVER COMMANDS /unstuck .menu .info .vote .exit .online .deposit .withdraw .repair .register To Event .unregister To Event
  16. START SERVER: 14/10/2017 Are you ready for the great adventure? L2 DRAIN X100 NO CUSTOM INTERLUDE PTS FILES FARM. Website: Forum: Rates information Experience (EXP) x100 Skill Points (SP) x100 Adena x100 Party Exp x2 Party Sp x2 Drop Itens x1 Scrolls Information Safe: +4 Full Armors/ Jewels: +12 Full Weapons: +16 Enchant Rate: 5-9 40% | 10-12 20% | 13-16 15% Blessed Rate: Rate: 5-9 50% | 10-12 30% | 13-16 25% Drain Rate: Rate: 5-9 60% | 10-12 40% | 13-16 35% Trade Server C-Grade and B-Grade by Adenas. A-Grade and S-Grade by Farm All drops of Lifestones, Blessed Enchants, Enchant and Drain Enchant unique way to adquire is killing raid bosses from special list or farm items. Beginner Shop All have received a coin to get access to npc when you are in lv.21 so you will get all the grade items D. See the images below. Clan Leaders All clans that confirm their clan in our forum on opening day will receive clan lv.6 and 15k of Free Reputation. Information System Time Server (UTC-3) Jobs: 1ª Job, 2ª Job and 3ª Job by Adenas Cancel Advanced, buffs return after 10 seconds 24 Slots (Divine Inspiration Free) 2 Hour Buffer Time Summoners Buffs: 20 minutes All buffs Free in NPC Mana Potion restores 500 MP Noblesse made by quest Auto learning Skills (fishing and Divine Inspiration skill need be learn manualy) Auto loot System (expect raid's drops) Offline Shop: Need a special item selling in GM Shop, each item can stay 2 days with shop activated Chaotic Zone in all Semi and Epic Raid Bosses Skill Restore Life was disabled from the server Only 1 Clans per Ally Event Team vs Team: 2 in 2 hours. Weight limit is increased twice No Donations that affect game balance. Special Areas Farm Solo Farm: Field of Whisper & Monastery of Silence Drops: Party zone: School of Dark Arts Drops: Olympiads Olympiad start time 18:00 end 00:00 (UTC-3) Start to: 15 of October Duration: 2 weeks Retail olympiad game. Sieges Start to: 21 of October Our sieges will be from 14 days. Special Bosses 80 Level - Flame Splendor of Barakiel: 6 Hours (Chaotic Zone) 80 Level - Ketra's Hero Hekaton 6 Hours (Chaotic Zone) 80 Level - Ketra's Commander Tayr 6 Hours (Chaotic Zone) 80 Level - Ketra's Chief Brakki 6 Hours (Chaotic Zone) 80 Level - Varka's Hero Shadith 6 Hours (Chaotic Zone) 80 Level - Varka's Commander Mos 6 Hours (Chaotic Zone) 80 Level - Varka's Chief Horus 6 Hours (Chaotic Zone) Drops: Epic Bosses 85 Level - Valakas: 264h Hours (Chaotic Zone) 80 Level - Antharas: 192h Hours (Chaotic Zone) 80 Level - Baium: 120 Hours (Chaotic Zone) 80 Level - Frintezza: 72 Hours (Chaotic Zone) 80 Level - Zaken: 48 Hours (Chaotic Zone) 80 Level - Queen Ant: 24 Hours (Chaotic Zone) 80 Level - Core: 24 Hours (Chaotic Zone) 80 Level - Orfen: 24 Hours (Chaotic Zone) Information Jewels Drops Valakas, Antharas, Baium, Frintezza and Zaken are 100% Information Jewels Drops of Core, Orfen and Queen Ant are 50% Sell of Item Quest for Teleport in GM Shop Epic Jewels Control on Website Drops: Protection Server Anti Bot System - Hyperfilter. Support Player Email:
  17. Hello i have a problem with gameserver when i add more ram than this -Xmx1024m -Xms1024m I get this 2 errors I have java 7 x64 on my computer and 8gb ram
  18. Hello, I'm wondering how to make an item to split equally to all party members like adenas does. Thanks, George
  19. Καλησπέρα, Έχω ένα source, έκανα κάποιες βασικές αλλαγές στην Java, έκτισα και τώρα στο pack μου έχω βάλει αρκετά custom NPCs, έχω διάφορες αλλαγές στην SQL και πολλά ακόμα (στον gameserver, εκτός eclipse). Κάποια στιγμή πρέπει να γυρίσω στο Eclipse για να αλλάξω ακόμα κάποια πράγματα στην Java αλλά το καινούργιο build θα μου κάνει overwrite τις αλλαγές μου. Όποτε τι κάνουμε τώρα; Να περάσω της αλλαγές που έχω κάνει στο pack μέσα στο source ώστε να κάνω build και να είναι όλα έτοιμα ή να έχω backup όλα τα υπόλοιπα που έβαλα στο pack και ένα αρχείο .sql για τις αλλαγές ώστε κάθε φορά που θα κάνω build θα κάνω ένα copy-paste και καθάρισα; Ψάχνω την "φόρμουλα", τον θεωρητικά πιο σωστό τρόπο ώστε να κάνω την ζωή μου ευκολότερη. Υ.Γ. Είμαι στα πρώτα βήματα στον τομέα και μπορεί η λογική μου στο πως να το κάνω όλο αυτό να είναι εξ αρχής λάθος οπότε οποιαδήποτε συμβουλή, είμαι όλος "μάτια". Thanks, George
  20. Hello Cheaters, I wanna introduce to you my new Project which is a Desktop Application based on .NET named L2Ninja. Table of Contents : – What is L2Ninja – System Requirements – Objectives – The Plan & Main Features – Feedback and Suggestions – Current State – Future Plans – Reported Bugs – ScreenShots – How to Help ? – Releasing Information - Update Log What is L2Ninja ? L2Ninja is a desktop application based on .NET core that aim to help L2 Server and Client Developers to be able to work with L2 Files and do their routine task easily with the less bugs possible. System Requirements : – Operating System : It’s mainly built for Windows OS, maybe in feature will consider working for a Linux version, have no decision about this yet. Application been developed and pretested on Windows 10 64 bit-based Processor, but should be working fine with Windows 8 and 7. will confirm that when testers prepare their report. – .NET Framework : This Application based on .NET core which means you need the proper .NET version to be installed in order to run it. Required .NET version for this to run is .NET Framework 4.5 . Also there will be two Installer Packages for this Software one of them will be shipped with proper .NET Offline Installer, and the other one without to reduce installer Disk Size. – Disk Space : For the current State and version the application needs approximately 50 MegaBytes as Diskspace Objectives and Aims : First i started this project a private little tool that help me to work with Lineage Development to reduce time and efforts, also i was using a lot of well known tools which was annoying process routine to use about 2 or 3 programs to do a simple task, so i wanted to create a tool that combine what’s needed to do Lineage stuff. It had a very non-organized interface and a mess everywhere but who cares it was just a private thing to make job done no more, after that i decided to make more researches on Lineage communities to see what applications they use and what known bugs are out there to improve my little application … and after some fixes i decided to improve it more to be usable but someone else so i started a Discussion to ask people in MxC community, about what they think about it and how to make it useful to others. By the community members feedback i got new suggestions, ideas and problems that L2 Developers face when working with there daily tasks. At that point i had new objectives : – Create an organized and clean interface – Best User Experience … working on Accessibility and Easy to Use concepts to be usable by anyone without very extensive experience requirements – Provide many tools in one application so you can give your Alt-tab a lil mercy – As most Coders/Developers spend a lot of time in front of their screens so they need an Eyes relaxing mechanism, that why i work on multi Interface Colors Schemes so applications users can adjust it to fit better in their working environment lightning – Reliability ….. i got reported by a friend on MxC community that some L2 Tools out there sometimes deletes and corrupt files by mistake, so i try to work hard on reliability and backups mechanism, and the main concept here is to make that application never use your files directly or replace it until it’s verified as a valid modification process. – Listening and Listening then Listening …. i believe that something made for the community should be made by the community it self, that’s why i insist to ask people about their opinions and listen for their problems and suggestions . – Responsibility … wont leave this project and stop updating at least until i can rely on another .NET developer to take the flag so i can take a break then i back again, until then i’ll be responsible for the updates and fixing bugs ( i don’t pretend to be a good coder and will never do but i’ll try my best) – Eyes Catches First … i’ll try to achieve a beautiful interface to make it at least non-disturbing looking if not catchy The Plan & Main Features : – UTX Files : Supporting the main tasks for UTX Files such as decrypting, encrypting, searching inside the file, view items, export a single/multi/all to readable and editable files – System Files (dat, ini, int) : The ability to work with System files and edit them in a more readable way by listing it’s contents into a Grid for more readability, save them back or export, as well as searching, replacing and validation, also providing a new feature which is Applying patch so you can share modifications with others to import it into there system – Splash Tool : Capability of working with L2 Splash Image files with features as encrypt, decrypt, replace original with new one and viewing an encrypted file with respect of Transparency mechanism in Lineage so it will show it after applying the transparency mechanism so you wont see that green and pinky colors. Also the capability of replacing original BMP Splashes with almost any image format and support transparency so the application will process your transparent pixels and apply the original Lineage Transparency Keys and definitions – Server XML Files : Editing XML Server Files visually without caring to open/closing tags, attributes … etc, which can cause big problems for a simple mistake if done by hand. Well we all know that XML Files structure are different so i’ll implement an XSD Validation to detect the XSD that XML uses and apply it to it . But older chronicles pack doesn’t support XSD, in this case i’ll make it skip XSD Validation and just scan the file to detect scheme, but i have plans to add custom XSDs to the application for certain packs like aCis, since it has fans so i can’t skip fans of aCis so application we have a special support for aCis server files – Config Editor : Work with .properties file, i know it’s plain easy to edit files, but why not just having all in one with some extra features and auto complete organized editor – HTML Designer : Not a regular HTML Designer but a special WYSIWYG HTML designer and Editor made for Lineage, how many time you had to start the server and log just to see how the html button will look like or if some color fit or not, it’s just pain also most of us got Critical Errors just for an HTML mistake. – Database Tools Just a little tool that helps you with backups, monitoring and custom modifications such as adding agumentations, change access levels, change passwords, scan for dual boxes and much more … but how can i know the database structure ? Well i’ll implement a database scheme definitions for most known packs (at least known to me) so you can you can select the pack you work with and application will load proper definitions – Icon Finder A tool that help you search and find the icon you want and it will be working in three ways : First : Search by src .. ex. : Icon.blablabla and this will show you the icon preview Second : looking into a list of icons and get the src location of what you selected, based on extensive search into a file you select or default files set by application Third : Search by Item ID, ex. : 57 > will show Adena Icon Also this tool will be integrated into HTML Designer, so you add icons to HTML document on the fly without even know the src for it. – Color Tools Here you will get a color picker so no need to open Photoshop just for picking a color, also get the valid color codes Lineage system files or HTML files – Report Tool So if you got a bug or problem or something you can send me a report without leaving the application and go to forums or emails … etc – Snippets Desktops are screaming nowadays .. everytime we found a good snippet, link, guide … etc we create a new text file to desktop and save it to it, by time ending up with many text files, so with this tool you can save your snippets, todo lists, links in organized categories that’s created by you. – More features coming to futures plans or maybe to current plan if requested by the community Feedback and Suggestions : – Some editors deletes file even when doing the process right Credits : VanGon Status : Fixed – Try to improve it as much as you can Credits : baksteen Status : I’m on it – Being able to import files and create ready to use utx Credits : SweeTs Status : It Supports UTX files operation but working on more operations – You could add drag’n’drop as a optional way to load files Credits : SweeTs Status : Done – add a small ‘preview’ window for the UTX files. So, you can see what icon it is, if you want to see it bigger/detailed, then you click ‘view selected’ button. Credits : SweeTs Status : Done – Improving DDF Files Credits : Sdw Status : Fixed Some as npcgrp.ddf, itemname-e.ddf and need testing to detect other problems to fix - Thing of creating your own project's website, and gather all the traffic from your users there (reports,requests,download etc). Credits : @`NeverMore Status : Published at - have a script to automatically encrypt+overwrite existing in directory Credit : @big man bill Status : In Progress Current State : – Metro Style Interface – Multi Themes adjustable by use via Application Settings Panel – Encrypt a UTX file with one-click – Decrypt a UTX file with one-click – UTX Browser : Browse UTX Encrypted Files, look inside contents with a grid sortable by type and name, search inside it, export selected textures, export all at once, view selected texture or content, (Adding a live preview without a click) – System File Editor : Open Lineage system Files, Show Contents to a sortable grid, Modify, Search, Replace, Patch, Export to Text File, Save them after validation to original file or another location based on user decision – File Editor Chronicles Support : it support from C3 to GrandCursade – Modified DDF files for the System File Editor to reduce errors and bugs – Splash Tool : Open an Encrypted Lineage Image such as Splash screen and live preview it – Splash Tool Automatic Encryption or Decryption State, so the application will recognize if the loaded image is encrypted or not – Decrypt Encrypted Lineage Image – Convert Encrypted or Decrypted Lineage Images to another Formats – Replace Encrypted Original Lineage Image with none Encrypted Image – Transparent Preserve for L2 Images so you see a transparent image into the preview without green and pink extra colors – Ability to replace original Lineage Bmp Image with non-BMP files with automatic Transparency translation for PNG files to Original Lineage Transparency Mechanism – Drag and Drop Editor : you can now drag and drop a lineage file to the application and it will load the proper tool for it – Shortcuts for most Application Functions - UTX Browser Now have a live preview support which means when you click on a texture from the grid you'll see how it look like in a preview box, and you can click Full Definition Button for full preview - Adapted File Edit Grid with the Selected theme for better visualization Future Plans : I’m aiming high for the future to this application to a very handy tool for Lineage Development progress and make it easy to attach a server project to it to provide a management tool for the server as well as monitoring and maybe it will come with a server pack in future… who knows …. Reported Bugs : will be posted here when receive it from testers …. Screenshots : - Live Preview Added September 2nd - File Edit Theme Adaption : Added 10th September 2017 - Color Detection : Added 10th September 2017 - Advanced Color Picker : Added 10th September 2017 Note : Will add more Screens over time How to help ? Well any hand will be appreciated, here is a list with things i could use a hand at : – Report bug or Problem that exist now days when work with L2 Files – Suggest a Feature or Update or even a simple modification for any thing even if buttons order – Pm me if you can join the project as a Tester to find bugs – Share any opinion with me Releasing Information : The plan is that Project should be Ready on 15th of September, getting more hands and help as listed in “How to help ?” section will make things faster Update Log : - 2nd September 2017 Add Live Preview to UTX Browser > Thanks to @SweeTs Enhance Search Process , you can now just type in and out and it will be processed without a single button click Modify Grids to Adapt automatically with Selected Theme and Style for better Visualization Add Screen shot of Live Preview and Search within UTX Browser - 10th September 2017 - Adapt File Edit Grid with the Selected theme for better visualization - Automatically Detect Colors Parameters and Add it as Background, for accessibility purpose. So you don't need to check how this color looks like anymore - With Double Click on a Colored Element you get an Adobe-Like Color picker, which automatically translate values to the valid syntax of dat files (rgb and rgba) Note : A Video will be available soon
  21. [L2J] Lifedrain World

    The New START of Classic x100 server: 16/12/2017 + BIG UPDATES, GIFTS & EVENTS ⚠️ The Grand START: 16th of December - L][LifeDrain [Christmas Season] Interlude x100 Craft-PvP + BONUS START & GIFTS❗❗❗ BIGGEST UPDATES and FIXES like never before. Website: Forum: The Newest server's info:
  22. Hi MXC Community. I'm just going to leave those files here because I saw some people selling this files as their "Own Work". So lets take a look what this pack have: Those screenshots is just part of the MODs of this pack have, also this pack was used for L2Ava project in 2015. So here are the links: Compiled Pack: Download Sources Pack: Download Geodata: Download Patch System: Download Enjoy it..!!! Cheers
  23. L2J aCis Custom Pack Hello to everyone, The main goal of this project is to provide the most important, useful and necessary custom features in L2J aCis project that every pvp server rely on, I've chosen L2J aCis because it’s a very clean and maintainable pack and of course I am going to keep it in that way. Every second week I release 15 new custom features from GitHub and of course you are welcome to join in our team. I want to mention here that I am using only the latest free revision of aCis which the current is 360. The members who gives reputation on the first post will get full access for every release, and they don't need to wait for every 15 updates, I will make a private repository for them as well, I will give them my full support for any adoption, if for example they have acisVersion>acisFreeVersion exclusively, there is no problem at all ! GitHub Link => NPCs Scheme Buffer =============================================================================================== Gatekeeper =============================================================================================== Warehouse Augmenter =============================================================================================== Skill Enchanter Ranking =============================================================================================== Class Manager PasswordManager designed and developed by me =============================================================================================== Custom Properties CustomStartingLvl = True CharLvl = 80 CharTitle = True CharAddTitle = EnablePvPColorSystem = True PvpAmount1 = 500 ColorForAmount1 = 293546 PvpAmount2 = 1000 ColorForAmount2 = 00ff00 PvpAmount3 = 1500 ColorForAmount3 = 0000ff PvpAmount4 = 2500 ColorForAmount4 = ffff00 PvpAmount5 = 5000 ColorForAmount5 = ff0000 CustomSpawn = True SpawnX = 149999 SpawnY = 46728 SpawnZ = -3414 OnlineOnLogin = True WelcomeHtm = True PMWelcomeShow = True PMServerName = L2-Sample PMText1 = Have Fun and Nice Stay on PMText2 = Vote for us every 24h NewPlayerEffect = True EnableNobleCustomItem = True AnnouncePkKill = True AnnouncePvPKill = True EnableHeroCustomItem = True HeroCustomHours = 1 EnableCustomSubClass= True =============================================================================================== Balance Balance System Added + (Anarchy balance system http://www.maxcheate...ancer-for-acis/) =============================================================================================== Events TVT Event Added =============================================================================================== User Commands .tvt_join (joins the user in tvt) .tvt_leave (leave the user from tvt) .tvtstatus =============================================================================================== Admin Commands //balance //reload balance //tvt_start (not waiting for the TVT_EVENT_INTERVAL and immediately starting the event, if and only if the state == EventState.INACTIVE) //tvt_cancel (immediately cancel the event, if and only if the state == EventState.PARTICIPATING) //tvt_add (adding a simple user in the tvt) //tvt_remove (removing a simple user from the tvt)
  24. [L2J] Playinera

    LIVE SEPTEMBER 30, 2017 Welcome Newbie! Let's get started on how our server works! PlayINERA's 18x mid-rate is different than most servers. Visit us at Step 1: You'll find yourself in a world of blood stones. But what are they and what purpose do they serve? Step 2: You'll quickly find out that farming is an essential part of the game. This is like retail but with a twist. Step 3: There is no place to hide. The world is a viscous place and your friends may become enemies. Step 4: There is a marketplace for everything. And don't worry dwarves we haven't destroyed the markets. Step 5: There is a time and a place for charitable work. Will you be selfish, or will you help the server? Step 6: That wraps up the basics of the server. Be sure to read further if you're interested in PlayINERA. Congratulations! You've made it this far which is fantastic. Let's take a look at some of the more astonishing PlayINERA facts. We've developed a brand new event engine from scratch called PIE, with 10-15 new events no one has. We've developed a progressive system from scratch called the blood engine to balance the game's flow. We've added a PVP penalty of currency exchange subsequently giving purpose to the player vs player. Hardcoded the retail beauty engine into the Epilogue client, hundreds of diff aesthetics available to you Hardcoded a unique on-screen retail damage UI into Epilogue from scratch to better help you track dmg. Incorporated the L2-Store into action, simplifying the buy process and developed a Play to Win system. Latest anti-bot software from L2-Scripts with additional algorithms by our own developers. Statistical traces. Integrated a hall of fame with a museum for various different milestones for all classes and races. Rewards! Integrated a brand new ranking system that tracks every imaginable statistic for your character, clan, or ally. Created a new community board from scratch, focusing on functionality and ease of use. No superfluous feats. We've put our files through rigorous testing for over 2 years. We're likely the only stable L2J Epilogue source. We focus on keeping the integrity of the chronicle, no custom cloaks, items, or weapons. No olf' shirt. Retail. The server is NOT easy; it will take you time to do well, to accomplish your goals. It is hard and will test you. We've made it really fun, all the feedback has been very positive, so definitely check it out if you're curious. Thank you! Everyone has been very supportive. We'll leave you with some photos of the server we took a while back. Working rates, always in balance, may be changed, reference website for more information. Collect Blood Stones, like medals, buy things, make life easy, cannot be stashed, traded or sold. Level up the server, it has 10 stages. Donate stones to temple, get rewards, unlock content. Kill your enemy, steal some of his blood stones. You can hunt players and make progress that way. We built a brand new event engine (PIE). Twelve new events, never before seen, caution: they are fun! We added over 200 new hairstyles and faces from retail and created an interface for them. We coded the retail meter into Epilogue to better help you track your damage amidst fighting. Raids drop clan reputation boxes, use them, sell them, leverage them, everyone needs reputation. Buy stuff using your stones, items can be cheap, or not. Donate stones or spend them. Thank you for reading our post. You can find more information at All concepts were developed by our team in house. 2017
  25. Professional Lineage 2 High Five Emulator! Server emulator fully written in Java. Telegram channel: We are waiting you, regards!