aCis 409 (Interlude)
Install the reference connector implementation for aCis 409
This implementation targets stock aCis 409. Modified revisions must be checked against their database schema and runtime API.
Requirements
- Java 25
- aCis 409 source and build environment
- MariaDB access through the aCis connection pool
portal-connector-core-<version>.jarminimal-json-0.9.5.jar
Advertised capabilities
VERIFY_GAME_CREDENTIALS
CREATE_GAME_ACCOUNT
GET_SERVER_STATUS
GET_ONLINE_COUNT
LIST_ACCOUNT_CHARACTERS
LIST_RANKINGS
SEARCH_GAME_CATALOG
SEARCH_SKILL_CATALOG
DELIVER_GRANT
CHARACTER_SERVICES
UNSTUCK_CHARACTERPLAYER_ONLINE_EVENT is not implemented.
Implementation behavior
- Credentials use the aCis bcrypt implementation.
- Account creation accepts lowercase alphanumeric names from 4 to 45 characters.
- Character and ranking queries use
characters.obj_Id. - Item and skill delivery requires the target character online.
- Rename and gender change require the target character online.
- Unstuck accepts only an offline character owned by the supplied account and moves it to the configured recovery coordinates.
- The bridge creates and uses the
portal_commandtable for idempotency.
Installation
-
Download the connector core and
minimal-json-0.9.5.jarfrom Admin → Game Servers and place both inaCis_gameserver/lib/. -
Copy the pack-specific sources from
connector/acis-409/src/net/sf/l2j/gameserver/portal/intoaCis_gameserver/java/net/sf/l2j/gameserver/portal/. When using the prebuilt core JAR, copy only the pack-specific classes; do not duplicatePortalConnector,PortalConfig,GameBridge, orGrantResult.AcisGameBridge.java CatalogSearcher.java CharacterLister.java GameAccountCreator.java GameCredentialVerifier.java GrantApplier.java PortalCommandStore.java RankingLister.java SkillCatalogSearcher.java Unstucker.java -
Add the startup hook after world and data initialization:
import net.sf.l2j.gameserver.portal.PortalConfig; import net.sf.l2j.gameserver.portal.PortalConnector; StringUtil.printSection("Portal"); PortalConfig.load(); PortalConnector.getInstance().start(); -
Add best-effort cleanup to the shutdown sequence:
import net.sf.l2j.gameserver.portal.PortalConnector; try { PortalConnector.getInstance().shutdown(); } catch (Exception ignored) { } -
Download
portal.properties, set the bridge class, and place the file ataCis_gameserver/config/portal.properties:Bridge=net.sf.l2j.gameserver.portal.AcisGameBridge -
Build the server:
cd aCis_gameserver ant dist -
Start the game server, confirm Connected, and run Connector check from Admin → Game Servers.