- 0
-
Posts
-
I can see that the admins arent taking any action, yet they still seem willing to share information about various other people names and IP addresses. But when it comes to scams, no one reacts.
-
By Kingstonas · Posted
Server Info Chronicle: Interlude XP: 100x | SP: 100x | Drop: 50x | Adena: 75x Enchant: Safe +3 | Max +21 Website: Website Link Discord: Discord Link WHY? When I was a teenager I had this idea. Build my own Lineage 2 server. My own rules. My own world. I wasn't a programmer. I had no idea how any of it worked. I tried, hit a wall, and quit. But the idea never left. I came back years later. Got further. Quit again. Watched friends try similar things. The idea stayed stuck in my head for fifteen years. I'm a developer now. I finally finished it. Not because I suddenly had more time - I have a full-time job and real responsibilities. An hour before bed if I'm lucky. That's actually exactly why I finished it. The problem I kept running into I still love this game. But every server I tried as an adult made that one hour feel worthless. Log in, kill a few mobs, make no real progress, log out frustrated. The game was designed for someone with unlimited time. That person doesn't exist in my life anymore. I looked around. Everyone I used to play with has the same problem. Same love for the game. Same lack of time. Jobs, families, maybe an hour late at night. So I stopped waiting for someone else to build it. WHAT? Custom starting zone in Gludin (up until 2nd profession start) Talent system - rebirth at level 80 and choose your talents Bounty hunter system - daily tasks to kill random monsters to receive great reward! Potion crafting system - custom HP/MP potions and recipes Custom 1st & 2nd class quests (shorter) Scheme buffer Shop until C grade Visit our website to get more info: Website Link The philosophy 95% of the game is completely soloable. No clan required. No raid schedules. No guilt when you have to log off. You are the solo director of your own session. Log in, pursue your goal for an hour, log out on your own terms. When you've conquered what you wanted - you stop naturally. A new season drops with fresh Talent Tree changes and you come back to build something completely different. No endless stretched grind. No pay-to-win. No shady admin decisions. No surprise wipes. I'm one developer who built this because I love it. This is the server I needed fifteen years ago. Glad I finally had the skills to build it. Come see what I made. [Forever Lineage] -
By MathewTombs · Posted
Hello MaxCheaters community! We’ve all been there: you spend months customizing your NPCs, balancing classes, and setting up the perfect farm zones. You launch your server, the hype is real, and suddenly you hit 200 players—and the "delay" starts. The mobs stop reacting, the Olympiad matches stutter, and your players start complaining on Discord. Many "newbie" admins think the solution is just throwing more RAM at the VPS. While hardware matters, Java is a finicky beast. If you don't tune your JVM (Java Virtual Machine) and your core code, you’ll lag even on a NASA supercomputer. Today, I’m sharing a deep dive into optimizing your L2 server for maximum performance. 1. The Myth of "More RAM" The biggest mistake people make is assigning 32GB of RAM to a server that only needs 8GB. In Java, if your Heap size is too large, the "Garbage Collector" (GC) has to work much harder. When the GC runs a "Full GC" cycle on a massive heap, it performs a "Stop-the-World" event. This literally freezes your server threads for 1–3 seconds to clear memory. Recommendation: For a mid-rate server with 500 players, 6GB to 8GB of Xmx (Max Heap) is usually the sweet spot. Use G1GC (Garbage First Garbage Collector) instead of the old ParallelGC. It handles large heaps much more gracefully by breaking memory into regions. 2. JVM Startup Flags (The Secret Sauce) Don't just run java -jar l2jserver.jar. You need specific flags to ensure the CPU prioritizes the right tasks. Try adding these to your start.sh or start.bat: Bash -Xms6G -Xmx6G -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:+OptimizeStringConcat -XX:+UseStringDeduplication -XX:+ParallelRefProcEnabled -XX:+TieredCompilation MaxGCPauseMillis=50: This tells Java, "Try not to freeze the server for more than 50ms at a time." It makes the gameplay feel much smoother for the end-user. 3. Geodata and Pathfinding Optimization Geodata is the biggest CPU killer in Lineage 2. Every time a mob moves or a player clicks, the server calculates "Can I see this target?" and "Is there a wall in the way?". The Fix: Use a "Pathfinding Cache." If 100 players are running from the Giran Gate to the Luxury Shop, the server shouldn't calculate that path 100 times. Check your Geodata format: Ensure you are using the .l2j or .dat formats optimized for your specific core. If your console is flooded with "Pathfind node limit reached," increase your node limit in the geo.properties file, but be prepared for higher RAM usage. 4. Database Pooling (HikariCP vs. C3P0) If your server freezes for a split second every time someone saves their character or buys an item, your Database Connection Pool is the bottleneck. Most old L2J cores use C3P0, which is outdated and slow. Switch to HikariCP: It is significantly faster and handles "dead" connections much better. Also, ensure your characters and items tables are indexed correctly in MySQL. Running a VACUUM or OPTIMIZE TABLE once a week can prevent those annoying "saving player data" spikes. 5. Network Threading In your server settings, look for "Network" or "Thread" configurations. Usually, you’ll see SelectorThreads and WorkerThreads. Selector Threads: Should be equal to the number of physical CPU cores. Worker Threads: This is where the logic happens (skills, movement). If this is too low, actions will "queue up," creating a delay even if your ping is low. 6. Community Board (BBS) Optimization On MaxCheaters, we love fancy Community Boards. However, if your Buffer or Shop script is poorly coded, it might be reloading the entire HTML from the hard drive every time a player clicks a button. The Fix: Ensure your scripts cache the HTML in the RAM. Reading from an SSD is fast, but reading from RAM is thousands of times faster. Conclusion Optimization isn't a "one-click" fix; it’s about finding the balance between your hardware and your software. Start with your JVM flags, clean up your Geodata settings, and make sure your Database isn't choking on old logs. If you found this helpful, leave a comment or a "Thank You" below! If you have specific lag issues with a certain core (aCis, L2Emu, etc.), post your server.properties and I’ll try to help you tune it.
-
Topics

Question
dr3am3r
Καλησπέρα παιδιά, έχω ένα θεματάκι, κατέβασα δοκιμαστικά το source του l2mythras και έκανα κανονικά το compile χωρίς προβλήματα και κάνω σύνδεση κανονικά αλλά από άλλον υπολογιστή στο ίδιο δίκτυο δεν μπορώ να συνδεθώ.
Μήπως έχω κάνει κάποιο λάθος στις ρυθμίσεις;
Αυτά είναι τα config που έχω
LoginserverConfigs
# =================================================
# Settings authorization server
# =================================================
# Host and port for client connections
LoginserverHostname = *
LoginserverPort = 2106
# Host and port for game servers
LoginHost = 127.0.0.1
LoginPort = 9014
# Accept new game server in a free slot
AcceptNewGameServer = True
# Database Settings
Driver = com.mysql.jdbc.Driver
URL = jdbc:mysql://localhost/l2mythras
Login = root
Password = root
MaximumDbConnections = 100
# How many seconds after the last activity will update database connection, default is 600 (10 minutes)
MaxIdleConnectionTimeout = 600
# Check interval of inactive connections, default is 60 (1 minute)
IdleConnectionTestPeriod = 60
# Automatically create accounts
AutoCreateAccounts = true
# Template for a login and password
AccountTemplate = [A-Za-z0-9]{4,14}
PasswordTemplate = [A-Za-z0-9]{4,16}
# Hash for passwords
# News hashing recommended whirlpool2
PasswordHash = whirlpool2
# Secondary check with an alternative encryption
# Use it if you already have accounts created with another encryption
LegacyPasswordHash = sha1
# Caching Keys
BlowFishKeys = 20
RSAKeyPairs = 10
# Highway IP
# The number of failed logins, to ban the IP
LoginTryBeforeBan = 250
# Allowable minimum time between authorization from one IP (in seconds)
LoginTryTimeout = 50
# Banlength IP, if exceeded the number of failed logins (seconds)
IpBanTime = 600
# Adequately logged a successful login to the database
LoginLog = false
# Ping Game Server
# The time between pings, in seconds, 0 - off
GameServerPingDelay = 30
# Maximum number of failed ping, above which, the connection to the game server is interrupted
GameServerPingRetry = 4
# Protection against Brutus. Unless the correct password, entering the server will appear as off.
FakeLogin = False
# Hide online number of players against hacking tools.
HideOnline = True
Gameserver Configs
# ===============================
# Network Configuration Server #
# ===============================
# IP which Bind Game server, * - all possible
GameserverHostname = *
GameserverPort = 7777
# This is transmitted to the clients connecting from an external network, so it has to be a public IP or resolvable hostname
ExternalHostname = 127.0.0.1
# This is transmitted to the client from the same network, so it has to be a local IP or resolvable host name
InternalHostname = 127.0.0.1
# AdvIpSystem Make more GameServerIDs. Every Ip should be Protected by a DDoS Guard.
# Your Server will have Success with this system Online.
AdvIPSystem = False
# Address \ port LS
LoginPort = 9014
LoginHost = 127.0.0.1
LoginUseCrypt = true
# How to request ID of LS
RequestServerID = 4
# Permission to take a different id, if requested busy
AcceptAlternateID = False
# ====================
# NEW VOTE SYSTEM #
VoteTopzoneApiKey = b5e197c45ef378d2291a94764060389d
VoteTopzoneServerId = 12754
# ====================
# ====================
# Database Settings #
# ====================
# Database connection GameServer
Driver = com.mysql.jdbc.Driver
GameURL = jdbc:mysql://localhost/l2mythras?UseUnicode=true&characterEncoding=UTF-8
GameUser = root
GamePassword = root
# Database connection LoginServer
LoginURL = jdbc:mysql://localhost/l2mythras?UseUnicode=true&characterEncoding=UTF-8
LoginUser = root
LoginPassword = root
# Maximum number of connections to the database
MaximumDbConnections = 7000
# How many seconds after the last activity will update database connection, default is 600 (10 minutes)
# This parameter is important to coordinate with the settings in the MySql server option interactive_timeout (default 28800 (8:00))
MaxIdleConnectionTimeout = 600
# Check interval of inactive connections, default is 60 (1 minute)
# Assuming a stable connection to the database and correct SETUP MaxIdleConnectionTimeout, you can put 1 (not verified)
IdleConnectionTestPeriod = 60
# Auto-save state characters
Autosave = true
# =========================
# Settings name patterns #
# =========================
CnameTemplate = ([0-9A-Za-z]{2,16})|([0-9\u0410-\u044f-\u4e00-\u9fa5]{2,16})
# Clan name
ClanNameTemplate = ([0-9A-Za-z]{3,16})|([0-9\u0410]{3,16})
# Clan title
ClanTitleTemplate = ([0-9A-Za-z \\p{Punct}]{1,16})|([0-9\u0410 \\p{Punct}]{1,16})
# Alliance name
AllyNameTemplate = ([0-9A-Za-z]{3,16})|([0-9\u0410]{3,16})
# ========================
# Vote Reward System
# ========================
EnableVoteReward = True
# Vote Address
# Example: http://website.com/StringTake.php?IP=
VoteAddress = http://l2sample/stringtake.php?IP=
# ========================
# Display Options Serer #
# ========================
# NORMAL; RELAX; TEST; NO_LABEL; RESTRICTED; EVENT; FREE
ServerType = NORMAL
# Limit on age
ServerAgeLimit = 0
# Server only for game masters
ServerGMOnly = false
# [] Appears before the name server
ServerBrackets = false
# Its pvp server?
PvPServer = false
# =========================
# Configuration Protocol #
# =========================
# Minimum and maximum client protocols to access the server
# High Five: Part 4 = 267
MinProtocolRevision = 1
MaxProtocolRevision = 999
# ===================================
# Service to link your IP and Hwid #
# ===================================
# Allow players to bind to IP Account
# Bind use the command .lock
AllowLockIP = false
# Allow players to bind to account HWid
# Works only in the case when there is a LameGuard/fGuard
# Bind use the command .lock
AllowLockHwid = true
# Bit mask to link your HWid
# 2 - HDD
# 4 - BIOS
# 8 - CPU
# Example: HWIDBan = 10 (reference to HWID will be deemed only HDD and CPU)
# Example: HWIDBan = 14 (reference to HWID will be deemed to HDD, CPU and BIOS)
HwidLockMask = 10
# ======================
# Settings pool sizes #
# ======================
# Size of the thread pool to execute scheduled tasks, recommended setting: CPU x 4
ScheduledThreadPoolSize = 16
# Size of the thread pool, for the immediate implementation of the tasks recommended value: CPU x 2
ExecutorThreadPoolSize = 8
# Statistics collection launches, create and run-time problems. Reset the file to the server zavresheniyu or on command telnet.
EnableRunnableStats = false
# =======================
# Settings Interchange #
# =======================
# Downtime mainstream treatment of compounds, the read / write
SelectorSleepTime = 3
# Delay before installation of the Desirable
InterestDelay = 30
# The maximum number of packets to be sent in a single pass
MaxSendPerPass = 32
# Buffer size for reading
ReadBufferSize = 65536
# Size of the buffer to write
WriteBufferSize = 131072
# Pool size for the temporary buffer read / write
BufferPoolSize = 64
# The number of managers to work with the effects of
EffectTaskManagers = 1
# ====================
# Language Settings #
# ====================
# The following values can be changed by users of the game team. Lang, the default value
# Language dialogue default options ru, en
DefaultLang = en
# Timer to remove chars, 0 removed immediately
DeleteCharAfterDays = 3
# Directory data pack
DatapackRoot =.
# ============================
# Setup the server restarts #
# ============================
# Daily Auto-Restart on schedule. The restart format chronology.
# * * * * * command to be executed
# ? ? ? ? ?
# ? ? ? ? ?
# ? ? ? ? ?
# ? ? ? ? ?????? day of week (0 - 6) (0 or 6 are Sunday to Saturday, or use names)
# ? ? ? ??????????? month (1 - 12)
# ? ? ???????????????? day of month (1 - 31)
# ? ????????????????????? hour (0 - 23)
# ?????????????????????????? min (0 - 59)
# If the field is empty, the daily Auto-Restart is disabled by default, 5:00
# Every day at hour 05:00 = AutoRestartAt = 0 5 * * *
# Every day at hour 23:00 = AutoRestartAt = 0 23 * * *
# Every Monday at hour 05:00 = AutoRestartAt = 0 5 * * 1
AutoRestartAt =
# ========================
# Settings game-masters #
# ========================
# Hide the status of game masters in /gmlist and Community Board
HideGMStatus = False
# Announce entrance of game masters in the game if he is not in invis
ShowGMLogin = False
# Save game-effects wizards silence, gmspeed, invul etc.
SaveGMEffects = True
# ===================================
# Region setting of the game world #
# ===================================
# The whole world is divided into regions, the size of the region is the size of the client card, namely 32768x32768, Z range from -32768 to 32767, identification card in the client is given XX_YY.
# To make working with objects on the server, the world is divided into regions, both horizontally and vertically. The size of the region and its closest neighbors is equal to the scope of the player.
# When you set up to remember: the smaller the size of the region, the less strain on the CPU, the less scope player, the less outgoing traffic, but the more memory consumption
# This parameter determines the size of the region, horizontal: 1 << n, with a value of n = 15 - complies with the customer's card size, a value of 12 size is 4096, 11 - 2048
HShift = 11
# This parameter defines the height of the region to the vertical, with a value of 10 - height is 1024
VShift = 11
# Limit the height coordinates for the world, because The world does not use the full range of -32768 to 32767, it can be reduced to -16 384 .. 16383, thus saving memory
MapMinZ = -32768
MapMaxZ = 32767
# Size of the sector areas. Default - 32.
LinearTerritoryCellSize = 32
# ==================
# Settings geodata #
# ==================
# Takes damage from falling
DamageFromFalling = false
# Host to connect to the L2J-GeoEditor
GeoEditorHost = 127.0.0.1
# =========================
# Settings cursed weapon #
# =========================
# Are they (the default true)
AllowCursedWeapons = True
# Drops to the ground at gun disconnects \ kicked from the server
DropCursedWeaponsOnKick = True
# Maximum number of reflective
MaxReflectionsCount = 300
# Check GameServer ping, response time in seconds
PingServer = True
WaitPingTime = 5
# Call frequency task bypass, in seconds
PurgeTaskFrequency = 60
# Delay replay movement and attack
MovePacketDelay = 100
AttackPacketDelay = 500
# The packets below are heavy and sent way too often to the client.
# Character info for example is sent from each player to the client at every X milliseconds (you set them here).
# If you are on a siege with 100 players around you and you've set the BroadcastCharInfoInterval = 100
# This means that you get 100 heavy packets in 100 milliseconds, which is a lot for a client, like a mini-ddos.
# If players experience graphical lags during sieges or other places where many players roam around, its suggested
# to rise up the intervals so players don't get so flooded with packets that slow-down the client.
# Suggested values: 100ms - 1000ms. Above 1000ms should start to show noticeable rather negative effects on game play.
# Interval packet is sent UserInfo
UserInfoInterval = 100
# Enable sending stats
BroadcastStatsInterval = true
# Interval sending CharInfo
BroadcastCharInfoInterval = 100
# Maximum number of players on the server
MaximumOnlineUsers = 3500
# Auto-delete things lying on the ground, time in seconds, 0 - do not delete; 600 (10 minutes)
AutoDestroyDroppedItemAfter = 6000
# Separate setting for the ejected player or fallen from a PC, the default is 1200 (20 minutes)
AutoDestroyPlayerDroppedItemAfter = 1200
# Include warehouse
AllowWarehouse = True
# Include mail
AllowMail = True
# Time of things to try on the map
WearDelay = 10
# Can players throw things on the ground
AllowDiscardItem = True
# Don't allow players to drop items in town (pace zone)
AllowDiscardItemInTown = False
# Is the water (if the GEODATA necessarily include)
AllowWater = True
# If true, all players have administrator rights (convenient for the test server)
# Template with the privileges are in a file GMAccess.xml, for PlayerID set = "0"
EverybodyHasAdminRights = True
# Permission for all special teams players ( example ///fly)
AllowSpecialCommands = False
# Should we allow entering instances?
AllowEnterInstance = True
# Should we allow Stores?
AllowStores = True
# Allow talk with NPCS
AllowTalkToNpcs = True
# Allow only MoveBackwardToLocation packet?
AllowJustMoving = False
# Allow Tutorial on EnterWorld?
AllowTutorial = True
# Allow HWID Engine
AllowHWIDEngine = True
# Allow logging Skills Statistics
AllowSkillStatsLogger = False
# Allow Items Logging
AllowItemsLogging = False
# Allow Spawn Protection
AllowSpawnProtection = True
# -------------------------------------------------------------
# 2 - all conversations are cached at server
# 1 - The dialogues are cached as treatment
# 0 - cache disabled (for testing)
HtmCacheMode = 0
# The path to generate a static external web server (with / at the end)
# The way to generate a static external web server (with / at the end)
WebServerRoot =./webserver/
# Generation period, 0 - disable
# The period of generation, 0 - off
WebServerDelay = 0
# Setting Angel NevitSystem
AltVitalityNevitUpPoint = 100
AltVitalityNevitPoint = 100
AllowAddonsConfig = True
# ===========================
# LOG Services #
# ===========================
Services = True
# ==================================================================
# Settings to set a password on your character SA (Secondary Auth) #
# Pre-include this option in the client (UseSecondaryAuth = true) #
# ==================================================================
# Include whether the system SA
SAEnabled = False
# Ban account after a user has exceeded the number of password attempts?
SABanAccEnabled = true
# Enhanced password system, combined with the odd even sure!
SAStrongPass = false
# Maximum number of password attempts
SAMaxAttemps = 5
# Ban length Character for failure password (in minutes)
SABanTime = 480
# Link to the password recovery page
SARecoveryLink = http://website.com/charPassRec.php
# ===========================
# Email #
# ===========================
# https://accounts.google.com/displayunlockcaptcha
MailUser = l2sample@gmail.com
MailPass = samplepass
Subject = Donation to L2Mythras Report
# DONT FORGET TO ADD %PIN% where you want your TransactionID PIN to be displayed in the message!
Message = Thank you for your donation! You can receive your donation reward automatically in game. All you have to do is to login and then type .donate and your paypal email adress.Ex: .donate jhonsmith@xyz.com. Thank you for your support! Best regards,L2Mythras Team!
Ευχαριστώ.
10 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now