黑枫叶冒险论坛

超级管理员

181

帖子

26

回复

1019

积分

楼主
发表于 2023-01-03 23:45:06 | 查看: 354 | 回复: 0

在常見的服務端中,同一張地圖上的怪物會隨著怪物死亡後開始重生,

這時候因為服務端的一些機制導致重生的分佈不平均,

這是解決方法: 


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);

                    }

                }

            }


您需要登录后才可以回帖 登录 | 立即注册

声明:本站一切资源均来自互联网分享,仅用于学习和研究请勿商业用途

版权所有 黑枫叶 V1.0 © 2023