Jump to content
  • 0

[HELP]After Installing L2JFrozen...


Failz0r

Question

Starting L2J-Frozen Core Game Server.
Official website : http://www.l2jfrozen.com
Enjoy by server core. Bee happy!
------------------------------

======================================================================-[ Team ]

         #     #####          ##### ##### ##### ##### ##### ##    #
         #         #          #     #   # #   #     # #     # #   #
         #      ###    ####   ###   #   # #   #   #   ###   #  #  #
         #     #              #     ###   #   # #     #     #   # #
         ##### #####          #     #  ## ##### ##### ##### #    ##

==================================================================-[ Database ]
MLog clients using java 1.4+ standard logging.
Initializing c3p0-0.9.1.2 [built 21-May-2007 15:04:56; debug? true; trace: 10]
Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ java.beans
.IntrospectionException: java.lang.reflect.InvocationTargetException [numThreads
AwaitingCheckoutDefaultUser] ]
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExcep
tion: Unknown database 'l2jdbl2jdb'
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
        at com.mysql.jdbc.Util.getInstance(Util.java:382)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3603)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3535)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:934)
        at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4104)
        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1299)
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2338)
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2
371)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:378)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java
:305)
        at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManag
erDataSource.java:119)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnecti
on(WrapperConnectionPoolDataSource.java:143)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnecti
on(WrapperConnectionPoolDataSource.java:132)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.initializeAu
tomaticTestTable(C3P0PooledConnectionPoolManager.java:772)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.createPooled
ConnectionPool(C3P0PooledConnectionPoolManager.java:696)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0
PooledConnectionPoolManager.java:257)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0
PooledConnectionPoolManager.java:271)
        at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(A
bstractPoolBackedDataSource.java:128)
        at com.l2jfrozen.util.database.L2DatabaseFactory_c3p0.<init>(L2DatabaseF
actory_c3p0.java:88)
        at com.l2jfrozen.util.database.L2DatabaseFactory.getInstance(L2DatabaseF
actory.java:51)
        at com.l2jfrozen.gameserver.GameServer.main(GameServer.java:191)

Server terminated abnormaly
Send you bug to : http://www.l2jfrozen.com

Link to comment
Share on other sites

Recommended Posts

  • 0

Έχω ξαναδεί αυτό το πρόβλημα σε pack, και δεν κατάφερα να το φτιάξω.

 

Απλά δοκίμασε new pack.

Πριν λιγο εκανα Compile το L2JFrozen... :S
Link to comment
Share on other sites

  • 0

Gameserver:

# ===================================#
#   Game Server Settings             #
# ===================================#
# This is the server configuration file. Here you can set up the connection information for your server.
# This was written with the assumption that you are behind a router.
# Dumbed Down Definitions...
# LAN (LOCAL area network) - typically consists of computers connected to the same router as you.
# WAN (WIDE area network) - typically consists of computers OUTSIDE of your router (ie. the internet).
# x.x.x.x - Format of an IP address. Do not include the x'es into settings. Must be real numbers.
# -----------------------------------------------------------------------------------------------------------------------------------------------------------------
# Networking
# -----------------------------------------------------------------------------------------------------------------------------------------------------------------
# This is transmitted to the clients connecting from an external network, so it has to be a public IP or resolvable hostname
# Common settings...
# 127.0.0.1 - If you are playing alone on a test server
# 192.168.x.x - This is if you are on a 192.168.x.x type network (behind a standard consumer router) and want other computers from JUST the internal network to be able to connect
# x.x.x.x - WAN IP obtained from http://www.whatismyip.com/. This is if you want people outside your internal network to be able to connect to your server.
# If this IP is resolvable by the Login Server, just leave *.
# ----------------------------------------------------------------------------------------

# Enter here (ip) address of your game server, or use the symbol *
GameserverHostname = *
GameserverPort = 7777

# Configure your external ip
ExternalHostname = la2idreamless.no-ip.info

# Configure your internal ip
InternalHostname = 127.0.0.1

# Bunch ID and game server. It is better not to change.
LoginPort = 9014
LoginHost = 127.0.0.1

# Database Pool Type
# Possible Values: c3p0 or BoneCP
# c3p0: more stable
# BoneCP: more performance
DatabasePoolType=c3p0

# Parameters Databases - MYSQL
Driver = com.mysql.jdbc.Driver
URL = jdbc:mysql://localhost/l2jdb

# Database name
GameserverDB = l2jdb
LoginserverDB = l2jdb

# Login - Mysql's user
Login = root
# Password - Mysql's Password
Password = 
# Attention: lazy init connections disabled!
# Please, set only real values for your database
# Default: 100
MaximumDbConnections = 50

# Default: 0
MaximumDbIdleTime = 0

# The timeout before a new connection to the database (in ms)
# 0 - to remove restrictions
TimeOutConDb = 0

# The timeout before the single connection must be closed (in ms)
# if a connection life is more then this timeout, a Runtime Exception
# is rised up. Post the exception on forum ([url=http://www.l2jfrozen.com]www.l2jfrozen.com[/url]) to solve
# it.
SingleConnectionTimeOutDb=200000

# Sets number of partitions to use.- BoneCP
# In order to reduce lock contention and thus improve performance, 
# each incoming connection request picks off a connection from a pool that has thread-affinity, 
# i.e. pool[threadId % partition_count]. The higher this number, the better your performance will be for the case 
# when you have plenty of short-lived threads. Beyond a certain threshold, maintenance of these pools will start 
# to have a negative effect on performance (and only for the case when connections on a partition start running out).
PartitionCount = 3

# Setting emulation off the kernel (package SendStatus)
RemoteWhoLog = True
RemoteWhoSendTrash = True
RemoteWhoMaxOnline = 329
RemoteOnlineIncrement = 50
RemoteWhoForceInc = 50
RemotePrivStoreFactor = 12

# Datapack folder
# DatapackRoot = C:/Work/tmp/DataPack

 

Loginserver:

 

#============================================================#
#                       Frozen Dev.Team                      #
#============================================================#
# This is the server configuration file. Here you can set up the connection for your server.
# Usually you have to change the ExternalHostname option to
# - 127.0.0.1 (if you want to play alone / testing purpose)
# - LAN IP* (if you want to play from another computer in the network)
# - WAN IP** (if you want to play with friends over internet)
# - Questions? => http://l2jfrozen.com
#
# * = If you want to get your LAN IP, simply choose "Start" => "Run..." then type "cmd" => "ipconfig"
# **= If you want to get you WAN IP, visit http://www.whatismyip.com
# ===================================================================================================

# ================================================================
# General server setting !!! REQUIRED to configure to everyone !!!
# ================================================================

# This is transmitted to the clients connecting from an external network, so it has to be a public IP or resolvable hostname
ExternalHostname = la2idreamless.no-ip.info

# This is transmitted to the client from the same network, so it has to be a local IP or resolvable hostname
InternalHostname = 127.0.0.1

# Bind ip of the loginServer, use * to bind on all available IPs
LoginserverHostname = *
LoginserverPort = 2106

# How many times you can provide an invalid account/pass before the IP gets banned
LoginTryBeforeBan = 20

# Time you won't be able to login back again after LoginTryBeforeBan tries to login. Provide a value in seconds. Default 10min. (600)  
LoginBlockAfterBan = 600
GMMinLevel = 100

# The address on which login will listen for GameServers, use * to bind on all available IPs  
LoginHostname = 127.0.0.1

# The port on which login will listen for GameServers
LoginPort = 9014

# If set to True any GameServer can register on your login's free slots
AcceptNewGameServer = False

# If False, the licence (after the login) will not be shown
# It is highly recomended for Account Seciurity to leave this option as defalut (True)
ShowLicence = True

# Database Pool Type
# Possible Values: c3p0 or BoneCP
# c3p0: more stable
# BoneCP: more performance
DatabasePoolType=c3p0

# Database info
Driver=com.mysql.jdbc.Driver
#Driver=org.hsqldb.jdbcDriver
#Driver=com.microsoft.sqlserver.jdbc.SQLServerDriver

# Database Settings
URL=jdbc:mysql://localhost/l2jdb
#URL=jdbc:hsqldb:hsql://localhost/l2jdb
#URL=jdbc:sqlserver://localhost/database=l2jdb/user=sa/password=

# Parameters Databases - MYSQL
# Login - Mysql's user
Login = root
# Password - Mysql's Password
Password = 
# maximum number of simultaneous connecting to the database
MaximumDbConnections = 50

# Default: 0
MaximumDbIdleTime = 0

# The timeout before a new connection to the database (in ms)
# default 0 disabled
TimeOutConDb = 0

# Sets number of partitions to use. - BoneCP
# In order to reduce lock contention and thus improve performance, 
# each incoming connection request picks off a connection from a pool that has thread-affinity, 
# i.e. pool[threadId % partition_count]. The higher this number, the better your performance will be for the case 
# when you have plenty of short-lived threads. Beyond a certain threshold, maintenance of these pools will start 
# to have a negative effect on performance (and only for the case when connections on a partition start running out).
PartitionCount = 3

# Limit fast connections (input username / password)
FastConnectionLimit = 15
# Time of the normal connection (in ms)
NormalConnectionTime = 700
# Time fast connection (in ms)
FastConnectionTime = 350
# Maximum connections with the 1st IP
MaxConnectionPerIP = 50

# The lifetime of the session with the login server. 
SessionTTL = 25000
MaxSessions = 100

# Choose the option: "true", to create an account when logging in automatically
AutoCreateAccounts = True

# Time to renew the IP address of the server in minutes (for dynamic IP)
IpUpdateTime = 0

# The configuration of the local subnet
# Example : 192.168
# Ppimer : 10.1
NetworkList = 192.168.;10.0.

# ===============================================================
# Test server configuration, not to switch on the game server!  =
# ===============================================================
# Use the GG client authentication
# Login server access let the client without GameGuard
ForceGGAuth = False

# Including protection from flood
# IMPORTANT: Put True for server security.
EnableFloodProtection = True

# Enable mode "debugging"
# With debug you will see more log on console and more messages in game.
Debug = False

# Switched on "development"
Developer = False

# =============================================================
# Anti Ddos protection. 
# This system works with iptables
# =============================================================
# iptables -A INPUT -p tcp --dport 7777 -j DROP
# IMPORTANT: Put True for server security.
# IMPORTANT: Active only with LINUX OS.
EnableDdosProSystem = False
# String deny_comms
# IMPORTANT: If you don't know what is it, leave as default
Deny_noallow_ip_ddos = /sbin/iptables -I INPUT 13 -p tcp --dport 7777 -s $IP -j ACCEPT
# Active full log on Login Server console about Ddos protection
Fulllog_mode_print = false

# =============================================================
# Anti Bruteforce protection. (credits RT-Interlude)
# =============================================================
#Count of trying connection to server, after which will be made checking IP addres
#for a possible BrutForce
#Reducing this value will increase the likelihood of false positives
#Increasing this value will reduce the effectiveness of security (more chance find passwords for large accounts)
BrutLogonAttempts = 15
#The average time (in seconds) between attempts to connect to the server
#Reducing this value will increase the likelihood of false positives
#Increasing this value will reduce the effectiveness of security (more chance find passwords for large accounts)
BrutAvgTime = 30
#Number of second, for ban IP addres, who time BrutAvgTime less specified
#900 second = 15 minute 
BrutBanIpTime = 900

#-------------------------------------------
# Additional login server logs settings    -
#-------------------------------------------
Debug = False
Assert = False
Developer = False
EnableAllExceptionsLog = false
DebugPackets = false

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Posts

    • UPDATE: Today I received 3 emails from PayPal stating the case was in my favor and I successfully got the full payment back from these scammers.   A warning to all - do NOT deal with this Unsimple as there are way more options out there that are honest and actually professional. Feel free to DM me if you have any more info about Unsimple and their shady practices or want advice.
    • i would like to add this option into Autofarm, if anyone have it or know someone, let me know thanks.
    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchihamkt.mysellix.io/ Join our server for more products : https://discord.gg/bDVQYKMUb3 https://campsite.bio/utchihaamkt
    • Hello guys who know what me need to change in code to use buff with cast animation like this:       package net.sf.l2j.gameserver.model.actor.instance; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.StringTokenizer; import net.sf.l2j.commons.lang.StringUtil; import net.sf.l2j.commons.math.MathUtil; import net.sf.l2j.Config; import net.sf.l2j.gameserver.data.SkillTable; import net.sf.l2j.gameserver.data.manager.BufferManager; import net.sf.l2j.gameserver.data.manager.BufferManager.BufferSchemeType; import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.model.actor.Summon; import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.skills.L2Skill; public class SchemeBuffer extends Folk { private static final int PAGE_LIMIT = 6; public SchemeBuffer(int objectId, NpcTemplate template) { super(objectId, template); } @Override public void onBypassFeedback(Player player, String command) { StringTokenizer st = new StringTokenizer(command, " "); String currentCommand = st.nextToken(); if (currentCommand.startsWith("menu")) { final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile(getHtmlPath(player, getNpcId(), 0)); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } else if (currentCommand.startsWith("cleanup")) { player.stopAllEffectsExceptThoseThatLastThroughDeath(); final Summon summon = player.getSummon(); if (summon != null) summon.stopAllEffectsExceptThoseThatLastThroughDeath(); final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile(getHtmlPath(player, getNpcId(), 0)); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } else if (currentCommand.startsWith("heal")) { player.getStatus().setMaxCpHpMp(); final Summon summon = player.getSummon(); if (summon != null) summon.getStatus().setMaxHpMp(); final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile(getHtmlPath(player, getNpcId(), 0)); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } else if (currentCommand.startsWith("support")) showGiveBuffsWindow(player); else if (currentCommand.startsWith("getscheme")) BufferManager.getInstance().getSchemeSkills(BufferSchemeType.valueOf(st.nextToken().toUpperCase())).forEach(buffId -> getEffect(player, buffId)); else if (currentCommand.startsWith("getbuff")) { final int skillId = Integer.parseInt(st.nextToken()); final int skillLevel = Integer.parseInt(st.nextToken()); List<L2Skill> list = new ArrayList<>(); list.add(SkillTable.getInstance().getInfo(skillId, skillLevel)); int cost = getFee(list); if (cost == 0 || player.reduceAdena("NPC Buffer", cost, this, true)) list.forEach(buffId -> getEffect(player, buffId)); } else if (currentCommand.startsWith("singlebuff")) showSingleBuffSelectionWindow(player, st.nextToken(), Integer.parseInt(st.nextToken())); else if (currentCommand.startsWith("givebuffs")) { final String schemeName = st.nextToken(); final int cost = Integer.parseInt(st.nextToken()); Creature target = null; if (st.hasMoreTokens()) { final String targetType = st.nextToken(); if (targetType != null && targetType.equalsIgnoreCase("pet")) target = player.getSummon(); } else target = player; if (target == null) player.sendMessage("You don't have a pet."); else if (cost == 0 || player.reduceAdena("NPC Buffer", cost, this, true)) BufferManager.getInstance().applySchemeEffects(this, target, player.getObjectId(), schemeName); } else if (currentCommand.startsWith("editschemes")) showEditSchemeWindow(player, st.nextToken(), st.nextToken(), Integer.parseInt(st.nextToken())); else if (currentCommand.startsWith("skill")) { final String groupType = st.nextToken(); final String schemeName = st.nextToken(); final int skillId = Integer.parseInt(st.nextToken()); final int skillLevel = Integer.parseInt(st.nextToken()); final int page = Integer.parseInt(st.nextToken()); L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel); final List<L2Skill> skills = BufferManager.getInstance().getScheme(player.getObjectId(), schemeName); premiumSkills(player, skills); if (currentCommand.startsWith("skillselect") && !schemeName.equalsIgnoreCase("none")) { if (skills.size() < player.getMaxBuffCount()) skills.add(skill); else player.sendMessage("This scheme has reached the maximum amount of buffs."); } else if (currentCommand.startsWith("skillunselect")) skills.remove(skill); showEditSchemeWindow(player, groupType, schemeName, page); } else if (currentCommand.startsWith("createscheme")) { try { final String schemeName = st.nextToken(); if (schemeName.length() > 14) { player.sendMessage("Scheme's name must contain up to 14 chars. Spaces are trimmed."); return; } final Map<String, ArrayList<L2Skill>> schemes = BufferManager.getInstance().getPlayerSchemes(player.getObjectId()); if (schemes != null) { if (schemes.size() == Config.BUFFER_MAX_SCHEMES) { player.sendMessage("Maximum schemes amount is already reached."); return; } if (schemes.containsKey(schemeName)) { player.sendMessage("The scheme name already exists."); return; } } BufferManager.getInstance().setScheme(player.getObjectId(), schemeName.trim(), new ArrayList<>()); showGiveBuffsWindow(player); } catch (Exception e) { player.sendMessage("Scheme's name must contain up to 14 chars. Spaces are trimmed."); } } else if (currentCommand.startsWith("deletescheme")) { try { final String schemeName = st.nextToken(); final Map<String, ArrayList<L2Skill>> schemes = BufferManager.getInstance().getPlayerSchemes(player.getObjectId()); if (schemes != null && schemes.containsKey(schemeName)) schemes.remove(schemeName); } catch (Exception e) { player.sendMessage("This scheme name is invalid."); } showGiveBuffsWindow(player); } super.onBypassFeedback(player, command); } private void getEffect(Player player, L2Skill buff) { buff.getEffects(this, player); } @Override public String getHtmlPath(Player player, int npcId, int val) { String filename = ""; if (val == 0) filename = "" + npcId; else filename = npcId + "-" + val; return player.isLang() + "mods/buffer/" + filename + ".htm"; } /** * Send an html packet to the {@link Player} set a parameter with Give Buffs menu info for player and pet, depending on targetType parameter {player, pet}. * @param player : The {@link Player} to make checks on. */ private void showGiveBuffsWindow(Player player) { final StringBuilder sb = new StringBuilder(200); final Map<String, ArrayList<L2Skill>> schemes = BufferManager.getInstance().getPlayerSchemes(player.getObjectId()); if (schemes == null || schemes.isEmpty()) sb.append("<font color=\"LEVEL\">You haven't defined any scheme.</font>"); else { for (Map.Entry<String, ArrayList<L2Skill>> scheme : schemes.entrySet()) { final int cost = getFee(scheme.getValue()); StringUtil.append(sb, "<font color=\"LEVEL\">", scheme.getKey(), " [", scheme.getValue().size(), " / ", player.getMaxBuffCount(), "]", ((cost > 0) ? " - cost: " + StringUtil.formatNumber(cost) : ""), "</font><br1>"); StringUtil.append(sb, "<a action=\"bypass npc_%objectId%_givebuffs ", scheme.getKey(), " ", cost, "\">Use on Me</a>&nbsp;|&nbsp;"); StringUtil.append(sb, "<a action=\"bypass npc_%objectId%_givebuffs ", scheme.getKey(), " ", cost, " pet\">Use on Pet</a>&nbsp;|&nbsp;"); StringUtil.append(sb, "<a action=\"bypass npc_%objectId%_editschemes Buffs ", scheme.getKey(), " 1\">Edit</a>&nbsp;|&nbsp;"); StringUtil.append(sb, "<a action=\"bypass npc_%objectId%_deletescheme ", scheme.getKey(), "\">Delete</a><br>"); } } final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile(getHtmlPath(player, getNpcId(), 1)); html.replace("%schemes%", sb.toString()); html.replace("%max_schemes%", Config.BUFFER_MAX_SCHEMES); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } /** * Send an html packet to the {@link Player} set as parameter with Edit Scheme Menu info. This allows the {@link Player} to edit each created scheme (add/delete skills) * @param player : The {@link Player} to make checks on. * @param groupType : The group of skills to select. * @param schemeName : The scheme to make check. * @param page : The current checked page. */ private void showEditSchemeWindow(Player player, String groupType, String schemeName, int page) { final NpcHtmlMessage html = new NpcHtmlMessage(0); final List<L2Skill> schemeSkills = BufferManager.getInstance().getScheme(player.getObjectId(), schemeName); premiumSkills(player, schemeSkills); html.setFile(getHtmlPath(player, getNpcId(), 2)); html.replace("%schemename%", schemeName); html.replace("%count%", schemeSkills.size() + " / " + player.getMaxBuffCount()); html.replace("%typesframe%", getTypesFrame(player, groupType, schemeName, false)); html.replace("%skilllistframe%", getGroupSkillList(player, groupType, schemeName, false, page)); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } private void showSingleBuffSelectionWindow(Player player, String groupType, int page) { final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile(getHtmlPath(player, getNpcId(), 3)); html.replace("%typesframe%", getTypesFrame(player, groupType, "", true)); html.replace("%skilllistframe%", getGroupSkillList(player, groupType, "", true, page)); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } /** * @param player : The {@link Player} to make checks on. * @param groupType : The group of skills to select. * @param schemeName : The scheme to make check. * @param singleSelection : Indicate if it's single buff selection or not. * @param page : The current checked page. * @return A {@link String} representing skills available for selection for a given groupType. */ private String getGroupSkillList(Player player, String groupType, String schemeName, boolean singleSelection, int page) { // Retrieve the entire skills list based on group type. List<L2Skill> skills = BufferManager.getInstance().getSkillsIdsByType(groupType); premiumSkills(player, skills); if (skills.isEmpty()) return "That group doesn't contain any skills."; // Calculate page number. final int max = MathUtil.countPagesNumber(skills.size(), PAGE_LIMIT); if (page > max) page = max; // Cut skills list up to page number. skills = skills.subList((page - 1) * PAGE_LIMIT, Math.min(page * PAGE_LIMIT, skills.size())); final List<L2Skill> schemeSkills = BufferManager.getInstance().getScheme(player.getObjectId(), schemeName); final StringBuilder sb = new StringBuilder(skills.size() * 150); int row = 0; for (L2Skill skill : skills) { int skillId = skill.getId(); int skillLevel = skill.getLevel(); sb.append(((row % 2) == 0 ? "<table width=\"280\" bgcolor=\"000000\"><tr>" : "<table width=\"280\"><tr>")); if (singleSelection) StringUtil.append(sb, "<td height=40 width=40><button action=\"bypass npc_" + getObjectId() + "_getbuff ", skillId, " ", skillLevel, " ", "\" width=32 height=32 back=\"", skill.getIcon(), "\" fore=\"", skill.getIcon(), "\" /></td><td width=190>", SkillTable.getInstance().getInfo(skillId, 1).getName(), "<br1><font color=\"B09878\">", BufferManager.getInstance().getAvailableBuff(skill).getDescription(), "</font></td>"); else { if (schemeSkills.contains(skill)) StringUtil.append(sb, "<td height=40 width=40><img src=\"", skill.getIcon(), "\" width=32 height=32></td><td width=190>", SkillTable.getInstance().getInfo(skillId, 1).getName(), "<br1><font color=\"B09878\">", BufferManager.getInstance().getAvailableBuff(skill).getDescription(), "</font></td><td><button action=\"bypass npc_%objectId%_skillunselect ", groupType, " ", schemeName, " ", skillId, " ", skillLevel, " ", page, "\" width=32 height=32 back=\"L2UI_CH3.mapbutton_zoomout2\" fore=\"L2UI_CH3.mapbutton_zoomout1\"></td>"); else StringUtil.append(sb, "<td height=40 width=40><img src=\"", skill.getIcon(), "\" width=32 height=32></td><td width=190>", SkillTable.getInstance().getInfo(skillId, 1).getName(), "<br1><font color=\"B09878\">", BufferManager.getInstance().getAvailableBuff(skill).getDescription(), "</font></td><td><button action=\"bypass npc_%objectId%_skillselect ", groupType, " ", schemeName, " ", skillId, " ", skillLevel, " ", page, "\" width=32 height=32 back=\"L2UI_CH3.mapbutton_zoomin2\" fore=\"L2UI_CH3.mapbutton_zoomin1\"></td>"); } sb.append("</tr></table><img src=\"L2UI.SquareGray\" width=280 height=1>"); row++; } for (int i = PAGE_LIMIT; i > row; i--) StringUtil.append(sb, "<img height=41>"); // Build page footer. sb.append("<br><img src=\"L2UI.SquareGray\" width=280 height=1><table width=\"100%\" bgcolor=000000><tr>"); if (page > 1) { if (singleSelection) StringUtil.append(sb, "<td align=left width=70><a action=\"bypass npc_" + getObjectId() + "_singlebuff ", groupType, " ", page - 1, "\">Previous</a></td>"); else StringUtil.append(sb, "<td align=left width=70><a action=\"bypass npc_" + getObjectId() + "_editschemes ", groupType, " ", schemeName, " ", page - 1, "\">Previous</a></td>"); } else StringUtil.append(sb, "<td align=left width=70>Previous</td>"); StringUtil.append(sb, "<td align=center width=100>Page ", page, "</td>"); if (page < max) { if (singleSelection) StringUtil.append(sb, "<td align=right width=70><a action=\"bypass npc_" + getObjectId() + "_singlebuff ", groupType, " ", page + 1, "\">Next</a></td>"); else StringUtil.append(sb, "<td align=right width=70><a action=\"bypass npc_" + getObjectId() + "_editschemes ", groupType, " ", schemeName, " ", page + 1, "\">Next</a></td>"); } else StringUtil.append(sb, "<td align=right width=70>Next</td>"); sb.append("</tr></table><img src=\"L2UI.SquareGray\" width=280 height=1>"); return sb.toString(); } /** * @param player * @param groupType : The group of skills to select. * @param schemeName : The scheme to make check. * @param singleSelection : Indicate if it's single buff selection or not. * @return A {@link String} representing all groupTypes available. The group currently on selection isn't linkable. */ private static String getTypesFrame(Player player, String groupType, String schemeName, boolean singleSelection) { final StringBuilder sb = new StringBuilder(500); sb.append("<table>"); int count = 0; for (String type : BufferManager.getInstance().getSkillTypes()) { if (player.getPremiumService() == 0) { if (Config.PREMIUM_BUFFS_CATEGORY.isEmpty()) continue; } if (count == 0) sb.append("<tr>"); if (groupType.equalsIgnoreCase(type)) StringUtil.append(sb, "<td width=65>", type, "</td>"); else { if (singleSelection) StringUtil.append(sb, "<td width=65><a action=\"bypass npc_%objectId%_singlebuff ", type, " 1\">", type, "</a></td>"); else StringUtil.append(sb, "<td width=65><a action=\"bypass npc_%objectId%_editschemes ", type, " ", schemeName, " 1\">", type, "</a></td>"); } count++; if (count == 4) { sb.append("</tr>"); count = 0; } } if (!sb.toString().endsWith("</tr>")) sb.append("</tr>"); sb.append("</table>"); return sb.toString(); } /** * @param list : A {@link List} of skill ids. * @return a global fee for all skills contained in the {@link List}. */ private static int getFee(List<L2Skill> list) { if (Config.BUFFER_STATIC_BUFF_COST > 0) return list.size() * Config.BUFFER_STATIC_BUFF_COST; int fee = 0; for (L2Skill sk : list) fee += BufferManager.getInstance().getAvailableBuff(sk).getPrice(); return fee; } private void premiumSkills(Player player, List<L2Skill> skills) { if (player.getPremiumService() == 0) skills.removeIf(skill -> Config.BUFFS_CATEGORY.contains(BufferManager.getInstance().getAvailableBuff(skill).getType())); } }
    • We've worked hard for 14 years to gather all the information for your preferred type of game server - we've put together your ideas, your suggestions, information and researches from different knowledge bases and we've made a lot of tests to make the project as good as you love it. Our goal is to create a masterpiece that everyone can enjoy. We are one of the best server and we will be forever. There are many things we did damn right in the past and we will do more in future! Because of that - you're going to see many things you have not seen before on any other servers! Our team knows what you want and what we should do! You value quality and technical excellence? You need safety and exceptional security? You seek true adventures, unique game world, exquisite and eventful game? It means you are in right place! Welcome to L2Blaze, only here you will find and enjoy real game! X150 WARFIRE INTERLUDE NEW SEASON 2024 SEPTEMBER 27th! Opening time: 19:00 UTC+3 Poland opening time: 18:00 UTC+2 Norway opening time: 18:00 UTC+2 UK opening time: 17:00 UTC+1 Brazil opening time: 11:00 UTC-3 OPENING BONUS Opening bonus for first 100 players who will reach 3rd class will receive VIP Coin as bonus! Automatic registration on game login window, unnecessary to register in website! Do you want stability? Lagless and bugless game? Instant support? Daily PVP? Long-Term playing? You are in the right place, time to start! How to connect STEP BY STEP: 1. Install clear Lineage2 Interlude client 2. Download our patch, delete old system folder and add our 3. Delete, turn off anti virus or add our system folder to anti virus exceptions 4. Run l2.exe from Lineage2/system 5. Enter data on login window and enjoy the game! * You have to remove, turn off or use exceptions of antivirus because of our security protection. It is not a virus. * If you have connection issues with Windows 8 or 10, press right mouse button on l2.exe icon, press Properties, choose compatibility and unmark compatibility mode. Hearts of War EVENT! Collect War Hearts from Hot Springs monsters: Yeti, Buffalo, Antelope, Bandersnatch, Atroxspawn, Flava, Nepenthes, Grendel (3%), Atrox with (6%) and Heart Breaker Boss in Hot Springs Stage 2! You can trade it, sell it or spend in shop! Raid Boss Heart Breaker spawn every 4 hours (+4 hours random) Custom Raid Boss drop list: - Raid Boss Horus, Ember and Brakki, Nakondas: 1 VIP COIN (25%) | Korim (70%). - Raid Boss Apepi, Shacram, Atraiban, Korim: 1 BEWS (10%). - Raid Boss Glaki, Olkuth: 1-2 BEAS (40%). - Raid Boss Golkonda, Galaxia: 1-3 BEAS (60%). - Raid Boss Shyeed: 1-3 BEWS (30%) | 1-7 BEAS (40%) | 1-5 TOP LS 76 (50%). - Raid Boss Shuriel: 1-7 TOP LS 76 (50%) | 1-4 BEAS (60%). - Raid Boss Ashakiel: 1-2 BEWS (30%) | 1-7 TOP LS 76 (50%) | 1-4 BEAS (75%). - Raid Boss Antharas Priest Cloe: 1-3 BEWS (30%) | 1-7 TOP LS 76 (70%). ------------------------------------------------ - Hestia: Demon Splinters / Forgotten Blande (30%). - Ember: Arcana Mace / Draconic Bow (30%). - Galaxia: Angel Slayer / Heaven's Divider (30%) Take your friends, clan, alliance, enemys, sharp your sword, clean your armors and meet your destiny at 2024 SEPTEMBER 27th! WEBSITE: http://WWW.L2BLAZE.NET
  • Topics

×
×
  • Create New...