主页| 免费发布天堂1开机信息| 站长qq:1161903

怪物不攻击bug完善方法

来源:2TT天堂发布网 www.2tt.cc    发布时间:2018/9/2 22:50:23    浏览量:622

问题:
打王时,带著宠物过去,让boss开始打宠物后,主人登出或者强登,该boss就会被定住
再上线 打那隻boss  它会乖乖站在原地给你打 且不会还击
请问这有办法修正吗..小弟是想说 可否让boss不要攻击宠物?

解决方法:
前言:
这BUG是利用pet在消失的时候只用delteMe()消除,没有做AI的Clear动作所产生的bug。
那麽我们简单的修正就从参考pc登出的时候AI的Clear方法。

解决方法:
因为是要先参考pc在logout的时候如何将AI Clear,所以打开L1PcInstance寻找登出部分。
找到登出的方法
public void logout() {
L1World world = L1World.getInstance();
if (getClanid() != 0) // クラン所属
{
L1Clan clan = world.getClan(getClanname());
if (clan != null) {
if (clan.getWarehouseUsingChar() == getId()) // 自キャラがクラン仓库使用中
{
clan.setWarehouseUsingChar(0); // クラン仓库のロックを解除
}
}
}
notifyPlayersLogout(getKnownPlayers());
world.removeVisibleObject(this);
world.removeObject(this);
notifyPlayersLogout(world.getRecognizePlayer(this));
_inventory.clearItems();
_dwarf.clearItems();
removeAllKnownObjects();
stopHpRegeneration();
stopMpRegeneration();
setDead(true); // 使用方法说不定很可笑,不过,为了使NPC明白pc已经消除的事实。
setNetConnection(null);
setPacketOutput(null);
}
=============================================================
看到有注解的那一行,日本已经很贴心了告诉你哪边是Clear的方法,
那我们就在所有的pet.DelteMe();  下面一行加上pet.setDead(true); 即可。
(ClientThread & C_NPCAction)
=============================================================
后记:
额外的修正想法:
日本programmer也说了这是很可笑的方法,如果可能的话,
最好是将AI改写成目前线上游戏流行的仇恨值判断方法。
至于怎麽做,可能要请退隐已久的高手来实做才行。