FiskPay brings cryptocurrency payment integration to Lineage 2 Java emulators, enabling seamless in-game transactions.
This repository is a customized integration project for Lineage 2 Java emulators, adding blockchain payment functionality through FiskPay. It enables in-game transactions (deposits and withdrawals) linked to Ethereum wallet addresses, allowing players to seamlessly interact with blockchain-based services on the Polygon Network.
- Blockchain Integration: Connects Lineage 2 Java emulators with the FiskPay blockchain service for handling deposits and withdrawals.
- Account Linking: Allows players to link/unlink their Ethereum wallet addresses with their in-game accounts.
- Game Server Communication: Uses asynchronous communication to handle requests between the Login Server and Game Servers.
- Secure Transactions: Implements security checks such as wallet ownership verification and anti-exploit measures.
- Real-time Transaction Verification: Ensures instant validation of blockchain transactions, reducing wait times and preventing fraud.
- Automated Delivery System: Delivers in-game currency automatically upon successful blockchain transaction confirmation.
- Support for Multiple Cryptocurrencies: Enables transactions using various cryptocurrencies, providing flexibility for administrators.
- User-friendly Payment Interface: Offers a seamless and intuitive payment experience, simplifying blockchain transactions for users.
- Lineage 2 Java emulator source files
- FiskPay blockchain service credentials
- Basic knowledge of how to apply patches using Java
- Web3 Wallet (i.e. MetaMask)
Depending your Lineage 2 Java emulator, copy all files from the emulators directory to your local L2J project.
Apply all .java.diff patch files to your L2J project.
Apply the SQL updates to your Login Server database.
The in-game reward item ID is not configured in the database. It is configured in your Login Server Blockchain.ini file using RewardId.
Set ConversionRate in Blockchain.ini to define how many in-game reward items equal one blockchain service unit. Accepted values are 1, 10, 100, and 1000.
Register your server at:
To register, connect your Web3 wallet and enter your desired Login Server password and remote IPv4 address. Registration creates an encrypted signer file locally in your browser. Download the file, keep its filename as signer.json, and place it in your Login Server config folder.
The signer file is encrypted with the same password you enter during registration. Keep this file private. It is required by the Login Server to sign withdrawal transactions.
Open your Login Server Blockchain.ini config file, enable the integration, and add your settings:
Enable = True
Symbol = USDT0
RewardId = 4037
ConversionRate = 1
Wallet = YOUR_WALLET_ADDRESS_HERE
Password = YOUR_SUPER_SECRET_PASSWORD_HERESymbol and Wallet are shared by all Game Servers connected to the Login Server.
RewardId must be a numeric item ID. The item must exist in the Game Server and must be stackable.
ConversionRate is only for game/UI conversion. The blockchain contract still uses raw service units. Accepted values are 1, 10, 100, and 1000.
Set Password to the same password used during registration. Make sure the downloaded signer file is available at ./config/signer.json relative to the Login Server.
Build and launch your L2J server, depending on your project.
Manage transactions between your server and the blockchain via the following link:
https://l2.fiskpay.com/YOUR_ETHEREUM_ADDRESS_HERE/
Replace YOUR_ETHEREUM_ADDRESS_HERE with your actual Ethereum wallet address.
Players can use .crypto in game to open the FiskPay panel. When linking or unlinking a wallet, players should use .otp in game and enter the displayed 6-character one-time password in the panel. The code is valid for 1 minute.
This patch is provided as an example of how the FiskPay service can be implemented in an L2J emulator.
How the service is installed, configured, modified, operated, and secured is the responsibility of each client or server owner. FiskPay is not responsible for improper use, insecure deployment, incompatible changes, or any damage caused by using this patch incorrectly.
