Class EventInstanceManager
java.lang.Object
scripting.EventInstanceManager
單一事件(PQ/副本/Boss 挑戰)執行中的實例管理器,負責維護參與角色、怪物、地圖與計時器的生命週期。
每個 EventManager 可同時持有多個具名的 EventInstanceManager(以 WeakHashMap 儲存);
本類別持有該實例的玩家清單(chars)、離線玩家 ID(dced)、怪物清單(mobs)、
擊殺計數(killCount)、所使用的地圖 ID 列表,以及 ScheduledFuture 計時器。
關鍵協作者:
EventManager:建立並持有本實例,提供腳本Invocable以回呼事件函式。MapleCharacter:透過setEventInstance與本實例雙向關聯。ScriptEngines:trackStructuralLock包覆ReentrantReadWriteLock,防止 GraalJS 引擎serialized()代理在持結構鎖時同步進入腳本 Context 而造成死結。Timer.EventTimer:排程事件逾時或週期性回呼。
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddPVPScore(MapleCharacter chr, int score) voidvoidaddToPair_chr(List<Pair<Integer, MapleCharacter>> e, int e1, MapleCharacter e2) voidapplyBuff(MapleCharacter chr, int id) voidapplySkill(MapleCharacter chr, int id) final voidbroadcastPacket(byte[] p) final voidbroadcastPlayerMsg(int type, String msg) final voidbroadcastTeamPacket(byte[] p, int team) voidchangedMap(MapleCharacter chr, int mapid) final MapleMapcreateInstanceMap(int mapid) final MapleMapcreateInstanceMapS(int mapid) final voidvoiddispose()voidfinal booleandisposeIfPlayerBelow(byte size, int towarp) final voidfinishPQ()intfinal MapleMapFactoryfinal MapleMapgetMapInstance(int args) getMobs()final StringgetName()final intfinal Propertiesfinal StringgetProperty(String key) longfinal voidgiveAchievement(int type) booleanbooleanisLeader(MapleCharacter chr) boolean取得傷害記錄開關狀態。booleanfinal voidleftParty(MapleCharacter chr) voidmonsterDamaged(MapleCharacter chr, MapleMonster mob, int damage) voidmonsterKilled(MapleCharacter chr, MapleMonster mob) newPair()final List<Pair<Integer, MapleCharacter>> voidonMapLoad(MapleCharacter chr) voidplayerDisconnected(MapleCharacter chr, int idz) voidvoidfinal voidregisterCarnivalParty(MapleCharacter leader, MapleMap map, byte team) voidvoidregisterParty(MapleParty party, MapleMap map) voidvoidregisterSquad(MapleSquad squad, MapleMap map, int questID) voidremoveDisconnected(int id) final voidvoidrestartEventTimer(long time) booleanfinal voidsaveBossQuest(int points) final voidsaveNX(int points) final voidfinal MapleMapsetInstanceMap(int mapid) final voidsetProperty(String key, String value) final ObjectsetProperty(String key, String value, boolean prev) voidsetRecordDamage(boolean recordDamage) 設定傷害記錄開關。voidstartEventTimer(long time) voidvoidtimeOut(long delay, EventInstanceManager eim) voidvoid
-
Constructor Details
-
EventInstanceManager
-
-
Method Details
-
registerPlayer
-
changedMap
-
timeOut
-
stopEventTimer
public void stopEventTimer() -
restartEventTimer
public void restartEventTimer(long time) -
startEventTimer
public void startEventTimer(long time) -
isTimerStarted
public boolean isTimerStarted() -
getTimeLeft
public long getTimeLeft() -
registerParty
-
unregisterPlayer
-
disposeIfPlayerBelow
public final boolean disposeIfPlayerBelow(byte size, int towarp) -
saveBossQuest
public final void saveBossQuest(int points) -
saveNX
public final void saveNX(int points) -
getPlayers
-
getDisconnected
-
getPlayerCount
public final int getPlayerCount() -
registerMonster
-
unregisterMonster
-
playerKilled
-
revivePlayer
-
playerDisconnected
-
monsterKilled
- Parameters:
chr-mob-
-
isRecordDamage
public boolean isRecordDamage()取得傷害記錄開關狀態。- Returns:
true表示已啟用monsterDamaged(MapleCharacter, MapleMonster, int)的傷害記錄回呼
-
setRecordDamage
public void setRecordDamage(boolean recordDamage) 設定傷害記錄開關。事件腳本須呼叫setRecordDamage(true)才會啟用monsterDamaged(MapleCharacter, MapleMonster, int)回呼。- Parameters:
recordDamage- 是否啟用傷害記錄
-
monsterDamaged
-
addPVPScore
-
getKillCount
-
dispose_NoLock
public void dispose_NoLock() -
dispose
public void dispose() -
getChannelServer
-
getMobs
-
giveAchievement
public final void giveAchievement(int type) -
broadcastPlayerMsg
-
newPair
-
addToPair
-
newPair_chr
-
addToPair_chr
-
broadcastPacket
public final void broadcastPacket(byte[] p) -
broadcastTeamPacket
public final void broadcastTeamPacket(byte[] p, int team) -
createInstanceMap
-
createInstanceMapS
-
setInstanceMap
-
getMapFactory
-
getMapInstance
-
schedule
-
getName
-
setProperty
-
setProperty
-
getProperty
-
getProperties
-
leftParty
-
disbandParty
public final void disbandParty() -
finishPQ
public final void finishPQ() -
removePlayer
-
registerCarnivalParty
-
onMapLoad
-
isLeader
-
registerSquad
-
isDisconnected
-
removeDisconnected
public void removeDisconnected(int id) -
getEventManager
-
applyBuff
-
applySkill
-
PQClearEffect
public void PQClearEffect()
-