Reference examples

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>.jar
  • minimal-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_CHARACTER

PLAYER_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_command table for idempotency.

Installation

  1. Download the connector core and minimal-json-0.9.5.jar from Admin → Game Servers and place both in aCis_gameserver/lib/.

  2. Copy the pack-specific sources from connector/acis-409/src/net/sf/l2j/gameserver/portal/ into aCis_gameserver/java/net/sf/l2j/gameserver/portal/. When using the prebuilt core JAR, copy only the pack-specific classes; do not duplicate PortalConnector, PortalConfig, GameBridge, or GrantResult.

    AcisGameBridge.java
    CatalogSearcher.java
    CharacterLister.java
    GameAccountCreator.java
    GameCredentialVerifier.java
    GrantApplier.java
    PortalCommandStore.java
    RankingLister.java
    SkillCatalogSearcher.java
    Unstucker.java
  3. 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();
  4. Add best-effort cleanup to the shutdown sequence:

    import net.sf.l2j.gameserver.portal.PortalConnector;
    
    try
    {
        PortalConnector.getInstance().shutdown();
    }
    catch (Exception ignored)
    {
    }
  5. Download portal.properties, set the bridge class, and place the file at aCis_gameserver/config/portal.properties:

    Bridge=net.sf.l2j.gameserver.portal.AcisGameBridge
  6. Build the server:

    cd aCis_gameserver
    ant dist
  7. Start the game server, confirm Connected, and run Connector check from Admin → Game Servers.

On this page