Skip to content

Instantly share code, notes, and snippets.

package com.aionemu.commons.network.packet;
import com.aionemu.commons.network.AConnection;
import java.nio.ByteBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Base class for every Client Packet
*
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aion.pts</groupId>
<artifactId>aion-server</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>aion-commons</module>
<module>aion-database</module>
package com.aionemu.commons.network;
import com.aionemu.commons.options.Assertion;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.channels.SelectableChannel;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
я хочу сделать с нуля сервер айон на джава с чего мне начать ?
Чтобы сделать сервер Aion на Java с нуля, начните с изучения готовых open-source эмуляторов (например, Aion-Unique, AL-Community или Aion Lightning), так как написание движка полностью с чистой страницы займет годы. Разработка серверной части сводится к поднятию готового Java-кода, его кастомизации и компиляции.
Ниже представлен пошаговый план, разделенный на логические этапы.
## 1. Подготовка софта (Инструменты разработки)
Вам понадобится базовый стек технологий для работы с Java и базами данных:
* Java Development Kit (JDK) — обычно требуется версия JDK 8 или JDK 11 (зависит от выбранной сборки сервера).
package com.aionemu.commons.network;
import com.aionemu.commons.network.util.ThreadPoolManager;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.SelectionKey;
import java.nio.channels.ServerSocketChannel;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
package com.aionemu.gameserver.model.team2.group;
import com.aionemu.commons.callbacks.metadata.GlobalCallback;
import com.aionemu.gameserver.configs.main.GroupConfig;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.model.team2.TeamType;
import com.aionemu.gameserver.model.team2.common.events.PlayerLeavedEvent.LeaveReson;
import com.aionemu.gameserver.model.team2.common.events.ShowBrandEvent;
import com.aionemu.gameserver.model.team2.common.events.TeamKinahDistributionEvent;
import com.aionemu.gameserver.model.team2.common.legacy.GroupEvent;
enum SpawnIdType : __int32
{
SPAWN_ID_NONE = 0x0,
SPAWN_ID_1 = 0x1,
SPAWN_ID_2 = 0x2,
SPAWN_ID_3 = 0x3,
SPAWN_ID_4 = 0x4,
SPAWN_ID_5 = 0x5,
MAX_SPAWN_ID = 0x6,
.data:000000014178C450 ; const tagNpcEventInfo gc_npcEventInfos[103]
.data:000000014178C450 ?gc_npcEventInfos@@3QBUtagNpcEventInfo@@B tagNpcEventInfo <offset aOnWakeUp, 0>
.data:000000014178C450 ; DATA XREF: GetEventType(wchar_t const *)+19↑o
.data:000000014178C450 ; _NpcEventHasParam(NpcEventType const &,unsigned __int64)+8↑o ...
.data:000000014178C450 tagNpcEventInfo <offset aOnSeeUser, 200h> ; "on_see_attacked" ...
.data:000000014178C450 tagNpcEventInfo <offset aOnSeeNpc, 400h>
.data:000000014178C450 tagNpcEventInfo <offset aOnDamaged, 201000001h>
.data:000000014178C450 tagNpcEventInfo <offset aOnMostHatingUp, 100000h>
.data:000000014178C450 tagNpcEventInfo <offset aOnAttacked, 4000000000001h>
.data:000000014178C450 tagNpcEventInfo <offset aOnSeeAttacked, 41h>
__int64 __fastcall CPatternManager::Load(CPatternManager *this, const char *c_lpszFilePath, std::map<std::wstring,std::wstring> *loadedNpcs)
{
char v3; // di
std::map<std::wstring,std::wstring> *v4; // r14
__int64 *v6; // rax
__int64 v7; // rcx
int v8; // ebx
int v9; // eax
__int64 v10; // r8
__int64 v11; // rdx
char __fastcall CPatternManager::LoadPatterns(CPatternManager *this, const char *pszPrefix)
{
char *v2; // rax
std::_Tree_alloc<0,std::_Tree_base_types<std::pair<std::wstring const ,std::wstring >> > *v4; // rcx
HANDLE v5; // r12
char v6; // r15
int v7; // er13
unsigned __int64 v8; // r8
char v9; // al
unsigned __int64 v10; // r14