在常見的服務端中,同一張地圖上的怪物會隨著怪物死亡後開始重生,
這時候因為服務端的一些機制導致重生的分佈不平均,
這是解決方法:
src\server\life\SpawnPoint.java
找到shouldSpawn函數
將
if (((mobTime != 0 || immobile) && spawnedMonsters.get() > 0) || spawnedMonsters.get() > 1) {
改为
if (((mobTime != 0 || immobile) && spawnedMonsters.get() > 0) || spawnedMonsters.get() > 0) {
src\server\maps\MapleMap.java
找到respawn函數
將
final int numShouldSpawn = maxRegularSpawn - spawnedMonstersOnMap.get();
if (numShouldSpawn > 0) {
int spawned = 0;
final List<Spawns> randomSpawn = new ArrayList<Spawns>(monsterSpawn);
Collections.shuffle(randomSpawn);
for (Spawns spawnPoint : randomSpawn) {
if ((!isSpawns) && (spawnPoint.getMobTime() > 0)) {
continue;
}
if (spawnPoint.shouldSpawn() || GameConstants.isForceRespawn(mapid)) {
spawnPoint.spawnMonster(this);
spawned++;
}
if (spawned >= numShouldSpawn) {
break;
}
}
}
改为
final int numShouldSpawn = maxRegularSpawn - spawnedMonstersOnMap.get();
if (numShouldSpawn > 0 && monsterSpawn.size() > 0) {
final List<Spawns> randomSpawn = new ArrayList<>(monsterSpawn);
Collections.shuffle(randomSpawn);
for (Spawns spawnPoint : randomSpawn) {
if (spawnPoint.shouldSpawn() || GameConstants.isForceRespawn(mapid)) {
spawnPoint.spawnMonster(this);
}
}
}