Class MapleCharacter
- All Implemented Interfaces:
MapleCharacterLook, Serializable
本類別以 MapleMapObject(經 AnimatedMapleMapObject)為基底代表一名在地圖上活動的玩家,
集中承載屬性、裝備、技能、buff、任務、社交與資料庫持久化等幾乎所有角色狀態,由 MapleClient 持有並透過
DatabaseConnection 載入與存檔(saveToDB)。為控制其規模,P5 重構已將數個子系統抽成 client.Character*Manager 協作者,
本類別保留簽名相同的一行委派:
CharacterLogManager(角色 log 資料表)、CharacterCooldownDiseaseManager(技能冷卻/異常狀態)、CharacterPetManager(寵物)、CharacterQuestManager(任務/組隊任務)。CharacterSocialManager(組隊/公會/家族/好友/密語)、CharacterStatsManager(等級/經驗/能力點)、CharacterAnticheatManager(防作弊/檢舉,內含CheatTracker)。
角色透過 changeMap 在 MapleMap 間移動,並大量被 handling.channel.handler.* 處理器、
tools.packet.* 封包 builder 及 scripts/ 的 GraalJS 腳本(以全域 cm 經 NPCConversationManager)取用。
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enum武陵道場的挑戰模式列舉。static enum送出聲望(fame/人氣)結果狀態。 -
Field Summary
FieldsModifier and TypeFieldDescriptionintint阿里安鬥技場目前累計分數。longlong本角色目前的武陵道場挑戰模式,預設為MapleCharacter.DojoMode.無。longbooleanboolean -
Method Summary
Modifier and TypeMethodDescriptionbooleanachievementFinished(int achievementid) 查詢指定成就是否已完成。void將阿里安鬥技場分數加 1。voidaddCarnivalRequest(MapleCarnivalChallenge request) 新增一筆怪物嘉年華挑戰請求至待處理佇列。voidaddCooldown(int skillId, long startTime, long length) 為指定技能加入冷卻時間。voidaddCP(int ammount) 增加嘉年華點數(CP)。void為此角色新增一個傳送門(魔法門)。voidaddEmptyStorageMsg(String msg) 將一段不含時間戳的原始字串追加至倉庫紀錄緩衝區。voidaddEmptyTradeMsg(String msg) 將一段不含時間戳的原始字串追加至交易聊天紀錄緩衝區。voidaddFame(int famechange) 增減角色的人氣值(fame)。final voidaddFriendShipToAdd(int points) 將指定點數累加至待加入的好感度點數暫存值。voidaddHonorExp(int amount, boolean show) 增加名譽(Honor)經驗值,達門檻時自動升級並送出更新封包。voidaddHP(int delta) Convenience function which adds the supplied parameter to the current hp then directly does a updateSingleStat.void將本角色目前所在地圖加入高級(VIP)傳送石清單,並標記為需存檔。void將一個連結召喚獸加入此角色的清單。voidaddMechDoor(MechDoor door) 為此角色新增一個機械門(機甲師技能)。void將怪物吸怪(Mob Vac)使用計數加一。voidaddMP(int delta) Convenience function which adds the supplied parameter to the current mp then directly does a updateSingleStat.voidaddMP(int delta, boolean ignore) 為此角色增加(或減少)MP,並送出單一屬性更新封包。voidaddMPHP(int hpDiff, int mpDiff) 同時增減此角色的 HP 與 MP,並以單一封包送出實際變更的屬性。void將累計線上時間加 1。static voidaddPartTime(int cid, byte job, long time, int reward) 將一筆兼職(part-time)工作紀錄寫入資料庫。static voidaddPartTime(PartTimeJob partTime) 由PartTimeJob物件新增一筆兼職工作紀錄至資料庫。void為此角色新增一隻寵物。booleanaddProfessionExp(int id, int expGain) 為指定專業技能增加經驗值,必要時自動升級並回饋對應特性(trait)經驗。void將本角色目前所在地圖加入特殊(記憶)傳送石清單,並標記為需存檔。voidaddReport(ReportType type) 為指定檢舉類型累加一次計數。void將本角色目前所在地圖加入城市傳送石清單,並標記為需存檔。voidaddRunningStack(int s) 將指定值累加至跑步(running)堆疊計數。voidaddStolenSkill(int skillID, int skillLevel) 為此角色(幻影)新增一個偷取的技能。voidaddStorageMsg(String name, String msg) 將一筆帶時間戳與角色名稱的倉庫操作訊息追加至紀錄緩衝區。void新增一隻召喚獸至此角色。voidaddTradeMsg(String name, String msg) 將一筆帶有目前時間戳與發話者名稱的交易訊息追加至交易聊天紀錄緩衝區。void將指定地圖物件加入此角色「可見物件」集合。voidafterAttack(int mobCount, int attackCount, int skillid) 攻擊命中後依職業處理能量充能、戰艦耗血與潛行類 buff 的取消。booleanallowedToTarget(MapleCharacter other) 判斷本角色是否允許將指定角色作為(攻擊/互動)目標。voidapplyIceGage(int x) 更新冰冷量表(ice gage)數值並同步至客戶端。voidautoJob()依目前職業與等級自動轉職(供自動/快速練功類設定使用)。final boolean對此角色所屬帳號執行「永久封鎖」(ban),並中斷其連線。static boolean依名稱或 IP 封鎖帳號(離線可用的靜態封鎖)。void補齊角色職業應有但尚未習得的基礎/預設技能。boolean判斷此角色目前能否與指定對象進行對戰。final booleancanBlood(long now) 判斷龍之血效果是否到達下一次扣血時點(每 4 秒)。void正常取消角色身上所有作用中的 buff 效果。void直接清空角色的所有效果表,不送出任何取消封包。void取消本角色身上所有的異常狀態(debuff),不論是否原本可解除。voidcancelBuffStats(MapleBuffStat... stat) 取消一組指定的 buff 狀態。void取消角色目前的對戰挑戰(challenge)。voidcancelEffect(MapleStatEffect effect, boolean overwrite, long startTime) voidcancelEffect(MapleStatEffect effect, boolean overwrite, long startTime, Map<MapleBuffStat, Integer> statups) 取消指定狀態效果並依需要清除其所有 buff 數值(核心多載)。void依 buff 狀態找出對應的效果並取消之。voidcancelEffectFromBuffStat(MapleBuffStat stat, int from) 依 buff 狀態取消效果,但僅當該效果來自指定來源角色時才取消。voidcancelFairySchedule(boolean exp) 取消精靈吊墜的加成排程。void取消釣魚循環任務(若正在進行)。void取消角色的魔法門(Magic Door)效果。void取消地圖停留時間限制計時器(若有)。void取消角色身上的變身(Morph)效果。voidcancelStolenSkill(int skillID) 取消由此角色施放之偷取技能在地圖上仍生效的 buff/debuff 效果。booleancanDOT(long now) 判斷持續傷害(DOT)是否到達下一次結算時點(每 8 秒)。final booleancanFairy(long now) 判斷精靈吊墜的每小時加成是否到期可再次觸發(僅讀取,不更新狀態)。final booleancanFamiliarEffect(long now, MapleStatEffect eff) 判斷距上次 familiar 被動效果是否已逾其間隔,可再次觸發。canGiveFame(MapleCharacter from) 判斷此角色目前能否向指定對象贈送人氣(fame)。final booleancanHold(int itemid) 判斷角色是否有足夠空格可容納指定道具。final booleancanHP(long now) 判斷距上次 HP 計時是否已逾 5 秒;若是則更新計時並回傳允許。final booleancanHPRecover(long now) 判斷是否到達 HP 自動回復間隔;若是則更新計時並回傳允許。final booleancanMP(long now) 判斷距上次 MP 計時是否已逾 5 秒;若是則更新計時並回傳允許。final booleancanMPRecover(long now) 判斷是否到達 MP 自動回復間隔;若是則更新計時並回傳允許。final booleancanRecover(long now) 判斷回復效果是否到達下一次觸發時點(每 5 秒)。boolean判斷距離上次召喚是否已逾預設冷卻(5000 毫秒)。booleancanSummon(int g) 判斷距離上次召喚是否已逾指定冷卻毫秒數,並在可召喚時重置計時。voidcanTalk(boolean talk) 設定本角色是否允許交談。final booleancanTrade()交易頻率閘門:更新最後交易時間並回傳是否允許交易。boolean判斷指定家族祝福是否已可再次使用(冷卻已過)。intCashShopGiftCount(int recipientid) 查詢資料庫中指定收件者尚未領取的商城禮物數量。voidchangeChannel(int channel) 將角色切換至指定的遊戲頻道。void標記擴充背包槽位資料已變更,待下次存檔時寫回資料庫。booleanchangeFace(int color) 在當前臉型基礎上套用指定的顏色偏移,切換為同款不同色的臉型。voidchangeJob(int newJob) 將角色轉職/轉生為指定職業,並套用所有相關連動處理。voidchangeKeybinding(int key, byte type, int action) 變更此角色的單一按鍵綁定(key binding)。voidchangeMap(int map) 依地圖 ID 將角色傳送至目標地圖的 0 號(預設)傳送點。voidchangeMap(int map, int portal) 依地圖 ID 與傳送點 ID 將角色傳送至目標地圖。void將角色傳送至目標地圖的 0 號(預設)傳送點。void將角色傳送至目標地圖的指定座標。voidchangeMap(MapleMap to, MaplePortal pto) 將角色傳送至目標地圖的指定傳送點。voidchangeMap(MapleMap to, MaplePortal pto, boolean changeMP) 將角色傳送至目標地圖的指定傳送點,並可選擇是否同步更新 MP。voidchangeMapBanish(int mapid, String portal, String msg) 將角色驅逐(banish)至指定地圖的具名傳送點,並先向其顯示一則訊息。voidchangeMapPortal(MapleMap to, MaplePortal pto) 將角色傳送至目標地圖的指定傳送點,並在進圖時將該傳送點傳入換圖流程。voidchangeProfessionLevelExp(int id, int level, int exp) 設定指定專業技能的等級與經驗值(兩者打包進同一技能等級欄位後寫入)。void執行角色離場前的清理(非斷線版本)。voidchangeRemoval(boolean dc) 執行角色離場前的清理,移除暫時性的場上物件與狀態。voidchangeSingleSkillLevel(Skill skill, int newLevel, byte newMasterlevel) 變更單一技能的等級與精通等級,到期時間採該技能的預設值(通常為一個月)。voidchangeSingleSkillLevel(Skill skill, int newLevel, byte newMasterlevel, long expiration) 變更單一技能的等級、精通等級與到期時間,並送出技能更新封包。booleanchangeSkillData(Skill skill, int newLevel, byte newMasterlevel, long expiration) 將單一技能的資料寫入此角色的技能表(不送封包、不重算屬性)。voidchangeSkillLevel(Skill skill, byte newLevel, byte newMasterlevel) 變更單一技能的等級與精通等級(不設過期時間)。voidchangeSkillLevel_Skip(Skill skil, int skilLevel, byte masterLevel) 套用單一臨時技能等級(不存入資料庫),並送出技能更新封包。voidchangeSkillLevel_Skip(Map<Skill, SkillEntry> skill, boolean write) 批次套用臨時技能等級(不存入資料庫)。voidchangeSkillsLevel(Map<Skill, SkillEntry> ss) 批次套用多個技能的等級/精通等級/到期時間變更,並一次送出技能更新封包。voidchangeTeachSkill(int skillId, int toCharId) 為本角色(線上)即時加入一個帶有傳授來源標記的技能。voidchangeTeam(int newTeam) 變更角色所屬隊伍(如椰子大賽/PVP 紅藍隊)並向客戶端與地圖呈現對應效果。void檢查並更新狂戰士「狂暴(Berserk)」被動的觸發狀態。voidcheckCopyItemsByID(int fromid, int itemid) 偵測道具複製(duping)作弊:掃描指定道具是否存在重複的「裝備專屬唯一 id」並予以查封。void檢查並終止目前的跟隨關係。void依角色職業檢查並補發專屬的轉職盾牌(force shield)。voidcheckMonsterAggro(MapleMonster monster) 確認此角色對指定怪物的仇恨控制狀態。boolean檢查目前是否仍處於傳送門節流時間窗(1.5 秒內)。boolean檢查目前是否仍處於換圖節流時間窗(1.5 秒內)。voidchooseStolenSkill(int skillID) 選用一個已偷取的幻影技能,並送出更換偷取技能的封包。void清除角色所有技能冷卻並通知客戶端。void清空所有待處理的嘉年華挑戰請求。void清除此角色的所有傳送門(魔法門)。void清空連結怪物(link monster)清單並取消相關 buff。void清除此角色的所有機械門。void清除所有檢舉類型的累計計數。voidclearReports(ReportType type) 清除指定檢舉類型的累計計數。void清除指定類型的記憶傳送點(設為 -1),並標記存檔。final void清除角色所有非專業技能(設為 0 級)。void清空本角色的商城願望清單(10 個欄位皆歸零),並標記為需存檔。final void在地圖上生成一個複製本角色外觀的分身並登記至分身陣列。建立一個複製本角色外觀的分身角色物件。voidcontrolMonster(MapleMonster monster, boolean aggro) 讓此角色開始控制指定怪物(成為其 controller),並送出控制封包。voidCPUpdate(boolean party, int available, int total, int team) 向自身連線送出嘉年華點數(CP)更新封包。final PlayerRandomStreamCRand()取得角色的隨機數串流(用於與客戶端同步的偽隨機序列)。int取得戰艦目前的 HP。voiddecMoneytoBank(long money) 將楓幣銀行存款金額減少指定值(先讀後寫)。void將戰艦目前的 HP 減少 1。voiddeleteFromHyperRocks(int map) 從高級(VIP)傳送石中移除指定地圖(找到第一個相符即停止),並標記為需存檔。voiddeleteFromRegRocks(int map) 從特殊(記憶)傳送石中移除指定地圖(找到第一個相符即停止),並標記為需存檔。voiddeleteFromRocks(int map) 從城市傳送石中移除指定地圖(找到第一個相符即停止),並標記為需存檔。voiddeleteNote(int id, int fame) 刪除指定的便箋;若該便箋附有名聲贈禮且金額相符,則同時為本角色加上名聲。static voiddeleteWhereCharacterId(Connection con, String sql, int id) 以角色編號為條件執行刪除(或更新)SQL,使用executeUpdate。static voiddeleteWhereCharacterId_NoLock(Connection con, String sql, int id) 以角色編號為條件執行刪除(或更新)SQL,使用execute(不取資料表鎖的變體)。voiddisease(int type, int level) 依怪物技能編號對角色施加對應的異常狀態(debuff)。voiddispel()驅散角色身上可被驅散的技能 buff。voiddispelBuff(int skillid) 取消指定來源 id 的第一個 buff 效果(不限於技能)。voiddispelDebuff(MapleDisease debuff) 解除指定的單一異常狀態(debuff)。void解除所有可解除的異常狀態(debuff)。voiddispelSkill(int skillid) 取消指定技能 id 所產生的第一個 buff 效果。void取消角色所有召喚獸(具召喚移動型態)的 buff 效果。final void清除本角色的所有分身並釋放相關資源。voiddoDOT()結算一次持續傷害(DOT),扣除累計傷害並清除 DOT 狀態。void執行龍之血(DRAGONBLOOD)週期扣血效果。voiddoFairy()執行精靈吊墜每小時觸發效果。voiddoFamiliarSchedule(long now) 週期性處理怪物寵物(familiar)的疲勞與被動效果。void移除此角色多餘的召喚獸,僅保留索引 0 的那一隻以外的逐一清除。voiddoReborn()執行角色轉生:重置等級/經驗並重新隨機分配四圍,溢出能力點轉入 AP 儲存。void執行回復術(RECOVERY)/機甲變形的週期回復效果。voiddropDebugMessage(String msg) 僅在本角色已開啟除錯訊息時,以系統訊息(type 6)向其用戶端輸出除錯文字。voiddropMessage(int type, String message) 依指定類型向本角色用戶端輸出一則訊息封包。voiddropMessage(String message) 以預設的系統訊息類型(type 6)向本角色用戶端輸出一則文字訊息。void以指定 NPC 的口吻向此角色發送一段對話訊息。void以預設 NPC(9010000)的口吻向此角色發送一段對話訊息。voidendPartyQuest(int questid) 結束指定的組隊任務。voidendStorageMsg(String name) 結束一段倉庫操作紀錄:將緩衝區內容寫入日誌檔後清空。voidendTradeMsg(String name) 結束一段交易紀錄:將緩衝區內容寫入日誌檔後清空。void將超過上限的 HP/MP 校正回最大值,並在有變動時送出狀態更新封包。voidequip(int itemId) 將指定道具穿戴到此角色身上(不取代既有裝備、必要時自動取得)。voidequip(int itemId, boolean replace) 將指定道具穿戴到此角色身上,可選擇是否取代既有裝備。voidequip(int itemId, boolean replace, boolean add) 將指定道具穿戴到此角色對應的裝備位。final void處理裝備變更後的連動更新。voidexpandInventory(byte type, int amount) 擴充指定背包類型的欄位數量。final voidexpirationTask(boolean pending, boolean firstLoad) 處理道具與技能的到期回收,分為「掛起通知」與「實際掃描」兩種模式。void在不真正重新連線的情況下,對客戶端模擬一次重登以刷新角色狀態。voidfamilyRep(int prevexp, int needed, boolean leveled) 累加家族聲望(Family Rep)並處理升等。void將此角色的最新資訊同步給家族(向家族成員廣播更新)。voidfinishAchievement(int id) 完成指定成就並發放對應獎勵。voidfly()切換角色的飛行(翱翔)模式(GM 指令用)。voidfly1()在已處於飛行狀態時重新套用翱翔效果(重登/換圖後恢復飛行用)。voidforceCompleteQuest(int id) 對本角色強制完成指定任務。voidforceReAddItem(Item item, MapleInventoryType type) 重新加回道具並送出一般道具特殊使用更新封包。voidforceReAddItem_Book(Item item, MapleInventoryType type) 重新加回道具並送出怪物圖鑑(monster book)升級封包。voidforceReAddItem_Flag(Item item, MapleInventoryType type) 重新加回道具並送出旗標(flag)變更的更新封包。voidforceReAddItem_NoUpdate(Item item, MapleInventoryType type) 將指定道具自其所在槽位移除後立即重新加回(不送任何更新封包)。voidgainAp(short ap) 增減角色的剩餘能力點數(AP)。voidgainAPS(int aps) 增加角色的能力點儲存量(AP storage)。voidgainExp(int total, boolean show, boolean inChat, boolean white) 給予此角色經驗值並處理升級結算。voidgainExpMonster(int gain, boolean show, boolean white, byte pty, int Class_Bonus_EXP, int Equipment_Bonus_EXP, int Premium_Bonus_EXP, boolean partyBonusMob, int partyBonusRate) 給予擊殺怪物所得的經驗值(含各類加成)並處理升級。voidgainHonor(int honor, boolean show) 增加名譽經驗值,並可選擇向用戶端顯示獲得提示。voidgainItem(int code, int amount) 給予角色指定數量的道具。voidgainMeso(int gain, boolean show) 給予(或扣除)楓幣。voidgainMeso(int gain, boolean show, boolean inChat) 給予(或扣除)此角色楓幣,並處理相關特效與成就。voidgainSP(int sp) 增減角色預設技能書的剩餘技能點數(SP)。voidgainSP(int sp, int skillbook) 增減角色指定技能書的剩餘技能點數(SP)。int取得此角色所屬的帳號 ID。int查詢角色的成就(ac)紀錄次數。取得角色目前所有 buff 的可序列化快照,依來源技能與等級合併同源狀態。final List<MapleDiseaseValueHolder> 取得目前所有異常狀態(debuff)的持有資料清單。byte取得在聯盟中的階級。取得連結怪物對應表(怪物 ID 對傷害增幅,回傳內部 Map 實體)。取得此角色所有連結召喚獸(link summon)的清單。int計算此角色所有已習得技能的等級總和(排除初心者技能與特殊技能)。取得角色目前的機器人(android)。取得可見物件集合並同時持有寫鎖,供呼叫端遍歷/修改。int傳回此角色的學徒角色 ID。intgetAPS()取得角色的能力點儲存量(AP storage)。getAriantRoomLeaderName(int room) 傳回指定阿里安鬥技場房間的房主名稱。int傳回阿里安鬥技場目前累計分數。intgetAriantSlotsRoom(int room) 傳回指定阿里安鬥技場房間目前的人數(座位)。boolean取得是否開啟攻擊(attack)除錯訊息。int取得目前可用的嘉年華點數(CP)。int計算當前地圖上所有玩家的平均等級。int計算所屬隊伍全體成員的平均等級。取得本月內已與此角色對戰過的帳號 ID 清單。int取得角色的戰鬥點數(PVP points)。final String取得提供「女皇的祝福」加成的來源角色名稱。final String取得提供「妖精的祝福」加成的來源角色名稱。intgetBossLog(String bossid) 查詢角色對指定 BOSS 的擊殺紀錄次數(每日門檻用)。取得以角色真實座標為基準的碰撞/命中矩形範圍。byte取得好友名單的容量上限。取得角色的好友清單。final IntegergetBuffedSkill_X(MapleBuffStat effect) 取得指定 buff 來源技能效果的 X 參數值。final IntegergetBuffedSkill_Y(MapleBuffStat effect) 取得指定 buff 來源技能效果的 Y 參數值。getBuffedStarttime(MapleBuffStat effect) 取得指定 buff 狀態的生效起始時間。getBuffedValue(MapleBuffStat effect) 取得指定 buff 狀態目前生效的數值。intgetBuffSource(MapleBuffStat stat) 取得指定 buff 狀態的來源編號(技能或道具 ID)。getBuffStats(MapleStatEffect effect, long startTime) 列出由同一狀態效果與起始時間提供的所有 buff 狀態。boolean查詢本角色目前是否允許交談(與 NPC/聊天互動)。byte傳回目前的卡片(card)堆疊數量。取得本角色所屬的怪物嘉年華隊伍。取得本角色的商城(CashShop)物品庫存。int取得本角色的商城點數加成。intgetCData(MapleCharacter sai, int questid) 讀取指定角色某任務自訂資料(customData)欄位的整數值。intgetChair()取得此角色目前使用中的椅子 ID。取得本角色目前的黑板(小黑板)文字內容。int取得角色目前的挑戰值(武陵道場等挑戰進度)。long取得最近一次換圖的時間戳記(毫秒)。static MapleCharactergetCharacterById(int cid) 依編號取得角色,線上則回傳線上實例,否則由資料庫載入。static MapleCharactergetCharacterByName(String name) 依名稱取得角色,線上則回傳線上實例,否則由資料庫載入。final MapleCharacterCards取得角色卡(character cards)集合。static intgetCharacterIdByName(int world, String name) 依名稱取得角色編號(指定世界)。static intgetCharacterIdByName(String name) 依名稱取得角色編號,優先查線上、未上線則查資料庫。static StringgetCharacterNameById(int id) 依編號取得角色名稱,優先查線上、未上線則查資料庫。取得本角色的作弊偵測追蹤器。boolean取得釣魚 VIP 狀態旗標。int取得角色持有的時空石(Chronosphere)數量。intgetChronosphereLog(String chronoLog) 查詢角色的時空(Chronosphere)紀錄次數。final MapleClient取得角色所屬的客戶端連線。取得本角色的分身弱參考陣列。final int計算目前存活(弱參考未被回收)的分身數量。final shortgetCombo()取得本角色目前的連擊(Combo)計數。取得此角色已取得的勳章及其完成時間。final List<MapleQuestStatus> 取得此角色所有已完成的任務狀態。int取得此角色目前控制中的怪物數量。int取得本角色目前正在對話的 NPC 對話實例編號。取得目前所有技能冷卻的持有資料清單。int取得目前處於冷卻中的技能數量。傳回此角色的核心光環(Core Aura)物件。int取得現金商城時空石(CS Chronosphere)數量。intgetCSPoints(int type) 取得指定類型的現金商城點數餘額。int取得目前的家族聲望值。intgetDamageIncrease(int lm) 取得指定連結怪物對應的傷害增幅。boolean取得是否開啟一般除錯訊息。static MapleCharactergetDefault(MapleClient client, LoginInformationProvider.JobType type) 建立指定職業類別的全新初始角色(角色建立流程用)。boolean取得刪除角色記錄開關狀態。int取得惡魔職業的印記值(demon marking)。intgetDex()取得角色的敏捷(DEX)數值。int取得本角色的對話方向狀態值。int取得目前生效中的異常狀態(debuff)數量。取得本角色目前的武陵道場挑戰模式。getDojoMode(int mode) 依整數代碼查詢對應的武陵道場挑戰模式。int自資料庫重新讀取並回傳本帳號的累計儲值金額。getDoors()取得此角色目前所有傳送門的複本清單。取得角色的龍(evan 龍)物件。int取得本角色的掉寶率加成。intgetElf()取得角色精靈耳朵(Elf ear)狀態。取得角色已穿戴裝備的槽位與道具編號對應表。取得此角色目前所在的活動實例(事件/組隊任務)。intgetExp()取得角色目前經驗值。double取得本角色的經驗值加成倍率。intgetExtendedSlot(int index) 取得指定索引的擴充背包槽位值。取得角色額外(擴充)背包槽位清單。取得本角色擺放的怪物抽取器(extractor)。intgetFace()byte取得目前累積的精靈吊墜經驗加成百分比。final int取得角色的墜落計數器(防摔/防卡點偵測用)。final intgetFame()取得角色人氣值。取得本月內已被此角色贈送過人氣的角色 ID 清單。取得角色擁有的所有怪物寵物(familiar)對應表。int取得此角色所屬家族 ID。short取得角色目前的疲勞值。intgetFH()取得本角色目前所在位置正下方的腳架(foothold)ID。取得本角色已完成的成就 ID 清單(回傳內部清單實體)。int取得連結怪物清單中的第一個怪物 ID。int取得目前跟隨對象的角色 ID。final int[]傳回好感度點數陣列(對應四位好感度 NPC)。final int傳回待加入的好感度點數暫存值。int取得角色的轉蛋經驗值。byte取得角色的性別(0=男、1=女)。intgetGiftLog(String bossid) 查詢角色的贈禮紀錄次數。int取得此角色的 GM 等級。getGuild()取得所屬的公會物件。int取得對公會的貢獻值。int取得所屬公會的 ID。byte取得在公會中的階級。boolean取得是否開啟外掛偵測訊息。intgetHair()取得角色的髮型 ID。int傳回名譽(Honor)等級。int傳回升至下一名譽等級所需的累計經驗門檻。int傳回目前的名譽(Honor)經驗值。intgetHp()取得角色目前的 HP。short取得已用於增加 HP 的能力點(AP)數量。int[]取得本角色的高級(VIP)傳送石地圖清單(固定長度 13 的地圖編號陣列)。int計算高級(VIP)傳送石中已登錄的地圖數量。intgetId()取得角色的資料庫唯一 id。MapleImp[]getImps()取得角色的小惡魔(imp)陣列。final StringgetInfoQuest(int questid) 取得任務的自訂資訊字串。取得任務自訂資訊的對映表。byte取得角色進入地圖時的初始重生點(傳送門)索引。傳回此角色的內在能力(Inner Ability)技能清單。intgetInt()取得角色的智力(INT)數值。intgetIntNoRecord(int questID) 讀取指定任務自訂資料並解析為整數,任務不存在時回傳 0(不會新增任務)。intgetIntRecord(int questID) 讀取指定任務自訂資料並解析為整數;任務不存在時會自動新增並初始化為 0。final MapleInventory取得此角色指定類型的庫存(內部參照,非複本)。final MapleInventory[]取得此角色的全部庫存陣列(內部參照,非複本)。int取得此角色目前播放中的道具效果 ID。intgetItemQuantity(int itemid, boolean checkEquipped) 計算角色持有指定道具的總數量。shortgetJob()取得角色的職業 ID。int取得角色的職業排名。int取得角色職業排名的名次變動量。int取得此角色在家族中的第一名徒弟(下線)角色 ID。int取得此角色在家族中的第二名徒弟(下線)角色 ID。final long取得上次施放長按蓄力技能的時間戳記。final MapleKeyLayout取得此角色的鍵盤配置(快捷鍵設定)。getKeyValue(String key) 取得指定自訂鍵所對應的值。final long取得上次連擊的時間戳記。final long取得上次贈送人氣(fame)的時間戳記。取得本角色最後一次的移動軌跡片段清單(用於同步移動)。取得最後一次公開發話的內容。final shortgetLevel()取得角色等級。int統一紀錄系統:取得指定維度在當前週期內的計數。int統一紀錄系統:getLog(LogScope, ResetType, String)的字串便利重載(給腳本用)。int取得幸運木桶(Lucky Barrels)小遊戲狀態。intgetLuk()取得角色的幸運(LUK)數值。final SkillMacro[]取得此角色的全部技能巨集陣列。getMap()取得角色目前所在的地圖物件。intgetMapId()取得角色目前的地圖 id。int取得角色的結婚編號。int取得角色的結婚戒指道具 ID。bytegetMasterLevel(int skill) 取得指定技能 ID 的精通等級(master level)。bytegetMasterLevel(Skill skill) 取得指定技能的精通等級(master level)。intgetMaxHp()取得角色的最大 HP。intgetMaxMp()取得角色的最大 MP。取得此角色目前所有機械門的複本清單。intgetMeso()取得此角色目前持有的楓幣(meso)數量。long從資料庫讀取此角色所屬帳號的楓幣銀行存款金額。取得此角色目前所在的聊天室(messenger)。getMFC()取得角色的家族成員資料。getMGC()取得此角色對應的公會成員資料物件。int取得怪物吸怪(Mob Vac)使用計數。取得角色的怪物圖鑑(Monster Book)。int取得目前作用中變身效果的來源技能 id。getMount()取得本角色的座騎(騎寵)物件。intgetMp()取得角色目前的 MP。boolean取得聊天訊息記錄開關狀態。boolean取得雇傭商人訊息記錄開關狀態。int取得本角色目前的武陵道場能量值。getName()取得角色名稱。int取得升至下一等級所需的經驗值。final MapleCarnivalChallenge取出並移除下一筆待處理的嘉年華挑戰請求。long取得下一次允許消耗(道具使用)的時間戳記。int取得家族中下屬(junior)的數量。int取得角色目前正在互動的 NPC 編號。byte取得目前待生成或記錄的分身數量。final int取得已開始任務的數量。intOid of players is always = the cid取得角色先前記錄的座標位置。getOneInfo(int questid, String key) 取得指定組隊任務中某個鍵對應的資訊值。getOneTempValue(String arg, String key) 自指定暫存鍵的值字串中,解析出單一子鍵對應的值。intgetOneTimeLog(String log) 查詢角色的一次性事件紀錄。static MapleCharactergetOnlineCharacterById(int cid) 依編號取得目前線上的角色(跨所有頻道查詢)。static MapleCharactergetOnlineCharacterByName(int world, String name) 依名稱取得目前線上的角色(指定世界)。static MapleCharacter依名稱取得目前線上的角色(跨所有頻道查詢)。int傳回此角色累計的線上時間。static PartTimeJobgetPartTime(int cid) 從資料庫讀取指定角色的兼職(part-time)工作紀錄。getParty()取得此角色所屬隊伍。final bytegetPetIndex(int petId) 依寵物道具 ID 取得其在出戰清單中的索引。final bytegetPetIndex(MaplePet petz) 取得指定寵物在出戰清單中的索引。final bytegetPetIndexById(int petId) 依寵物唯一 ID 取得其在出戰清單中的索引。getPets()取得此角色所有寵物清單。final int取得下一個可用的寵物出戰槽位。final byte[]取得各寵物欄位的存放狀態位元組陣列。取得本角色目前開設或互動中的玩家商店/交易室物件。int取得本角色帳號的點數(自資料庫讀取)。intgetPoints(MapleCharacter chr) 讀取指定角色帳號的點數(自accounts.points資料表欄位查詢)。intgetPrizeLog(String bossid) 查詢角色的領獎紀錄次數。shortgetProfessionExp(int id) 取得指定專業技能目前的經驗值。bytegetProfessionLevel(int id) 取得指定專業技能的等級。取得角色已習得的所有專業技能(profession)類別。取得角色目前所屬的金字塔/地鐵活動實例。final MapleQuestStatusgetQuest(MapleQuest quest) 取得指定任務的狀態物件(必要時新增)。final Map<MapleQuest, MapleQuestStatus> 取得任務定義對狀態物件的對映表。final MapleQuestStatusgetQuestNAdd(MapleQuest quest) 取得任務狀態物件,不存在則新增空狀態。final MapleQuestStatusgetQuestNoAdd(MapleQuest quest) 取得任務狀態物件,不存在則回傳null(不新增)。final MapleQuestStatusgetQuestRemove(MapleQuest quest) 移除並回傳指定任務的狀態物件。final bytegetQuestStatus(int quest) 取得指定任務的狀態碼。intgetRank()取得角色的總排名。int取得角色總排名的名次變動量。int取得角色的轉生(reborn)次數。getRebuy()取得商店「再買一次」(rebuy)暫存的道具清單。int[]取得本角色的特殊(記憶)傳送石地圖清單(固定長度 5 的地圖編號陣列)。int計算特殊(記憶)傳送石中已登錄的地圖數量。short取得角色剩餘能力點(AP)。int取得角色目前技能書的剩餘技能點(SP)。intgetRemainingSp(int skillbook) 取得指定技能書的剩餘技能點(SP)。int[]取得各技能書剩餘技能點(SP)的完整陣列。int取得技能點數陣列的大小(技能書數量)。final int取得各類型檢舉換算後的總點數。取得各檢舉類型對應的累計次數。final String取得各類型檢舉次數的彙整文字摘要。int自資料庫重新讀取並回傳角色的獎勵等級。getRings(boolean equip) 蒐集本角色身上的戒指,依類型分組並排序回傳。int[]getRocks()取得本角色的城市傳送石(Teleport Rock)地圖清單(固定長度 10 的地圖編號陣列)。int計算城市傳送石中已登錄的地圖數量。getRPS()取得角色目前的剪刀石頭布遊戲狀態。int傳回目前的跑步(running)堆疊計數。int取得指定類型的記憶傳送點地圖 ID。final int[]取得此角色的記憶傳送點陣列(內部參照,非複本)。int傳回累計的「說好話」(讚)時間值。short取得最近一次卷軸作用的裝備槽位。int取得此角色在家族中的師父(上線)角色 ID。getShop()取得此角色目前正在互動的商店。longgetSkillExpiry(Skill skill) 取得指定技能的到期時間(毫秒)。intgetSkillLevel(int skillid) 取得指定技能 id 的(基礎)技能等級。intgetSkillLevel(Skill skill) 取得指定技能的基礎等級(不含任何加成)。取得此角色技能表的唯讀檢視。longgetSkillWorking(int SkillID) 取得指定技能的作用(到期)時間。取得技能剩餘作用時間表(技能編號對應到期時間戳)。byte取得角色的膚色代碼。booleangetSmega()取得此角色是否接收世界喇叭訊息。final List<MapleQuestStatus> 取得此角色所有進行中的任務狀態。final PlayerStatsgetStat()取得此角色的屬性計算物件PlayerStats。getStatForBuff(MapleBuffStat effect) 取得提供指定 buff 狀態的MapleStatEffect。傳回此角色(幻影/Phantom)所偷取的技能清單。取得此角色帳號的倉庫物件。intgetStr()取得角色的力量(STR)數值。byte取得角色的職業子類別代碼(用於客戶端職業細分)。取得目前已召喚出場的怪物寵物(familiar)。final MaplePetgetSummonedPet(int index) 取得指定索引處已召喚的寵物。取得此角色目前已召喚(出戰)的寵物清單。取得召喚獸清單並同時持有讀鎖,供呼叫端安全遍歷。int取得此角色目前的召喚獸數量。intgetTeam()取得本角色所屬的隊伍編號(用於椰子大賽等活動)。取得角色目前的傳送目標名稱。getTempValue(String arg) 取得指定鍵的記憶體暫存值。int取得此角色目前的稱號效果 ID。int取得角色的累計戰鬥經驗(PVP exp)。int取得累計獲得的嘉年華總點數(CP)。int取得 PVP 累計敗場數。int取得家族累計總聲望值。intgetTotalSkillLevel(int skillid) 取得指定技能 id 的總技能等級(含裝備等加成)。intgetTotalSkillLevel(Skill skill) 取得指定技能的「實際有效等級」(含戰鬥指令、全技能加成與個別技能加成)。int取得 PVP 累計勝場數。取得角色目前裝備中的圖騰槽位與道具對應表。getTrade()取得此角色目前進行中的交易。取得指定類型的角色性向(trait)物件。int取得指定 buff 狀態的來源編號,並以正負號區分技能與道具來源。getType()取得此地圖物件的型別,角色固定為MapleMapObjectType.PLAYER。intgetVip()自資料庫重新讀取並回傳角色的 VIP 等級。int取得本角色的 V 點(投票點數)。boolean取得是否開啟移動(walk)除錯訊息。int[]取得本角色的商城願望清單(固定長度 10 的道具編號陣列)。int計算願望清單中已填入的道具數量。bytegetWorld()取得此角色所在的世界(World)編號。voidgiftMedal(int id) 贈予角色一枚勳章(裝備類)並向全服廣播祝賀訊息。voidgiveCoolDowns(int skillid, long starttime, long length) 賦予指定技能冷卻並送出對應封包。voidgiveCoolDowns(List<MapleCoolDownValueHolder> cooldowns) 由冷卻資料清單批次還原技能冷卻(多用於登入時還原)。voidgiveDebuff(MapleDisease disease, int x, long duration, int skillid, int level) 以明確參數對本角色施加異常狀態(debuff)。voidgiveDebuff(MapleDisease disease, MobSkill skill) 依怪物技能對本角色施加異常狀態(debuff)。final void靜默地(不發送特效封包)還原一批異常狀態,通常用於換頻或重新登入時重建狀態。void將此角色的最新等級/職業等資訊同步給公會(向公會成員廣播更新)。final voidhandleBattleshipHP(int damage) 處理海盜戰艇(Battleship)受到傷害後的耐久度扣減。void處理幻影(Phantom)卡牌堆疊的累積判定與封包同步。final voidhandleEnergyCharge(int skillid, int targets) 處理海盜「能量充滿」(Energy Charge)的能量累積與觸發。voidhandleForceGain(int oid, int skillid) 處理鬥氣(force/MP)累積,使用預設額外鬥氣 0。voidhandleForceGain(int oid, int skillid, int extraForce) 處理鬥氣(force)累積並回復對應 MP,同時可附加額外鬥氣。voidhandleOrbconsume(int howmany) 消耗角色身上的英雄連擊(Combo)能量球。final void處理戰士「英雄連擊」(Combo)的能量球累積。boolean傳回此角色目前是否擁有學徒。void記錄此角色已與指定對象對戰的事實。boolean判斷角色目前是否處於禁止操作背包的狀態。final booleanhasDisease(MapleDisease dis) 判斷本角色是否正受指定異常狀態影響。booleanhasDOT()判斷角色目前是否處於持續傷害(DOT)狀態。final booleanhasEquipped(int itemid) 判斷角色是否已穿戴指定道具。void記錄此角色已向指定對象贈送人氣的事實。booleanhasGmLevel(int level) 判斷此角色的 GM 等級是否達到指定門檻。booleanhasSkill(int skillid) 傳回此角色是否已學會指定技能(等級大於 0)。boolean判斷角色目前是否擁有召喚獸。final booleanhaveItem(int itemid) 判斷角色是否持有指定道具(至少一件,含已穿戴件數)。final booleanhaveItem(int itemid, int quantity) 判斷角色是否持有「至少」指定數量的道具(含已穿戴件數)。final booleanhaveItem(int itemid, int quantity, boolean checkEquipped, boolean greaterOrEquals) 判斷角色背包中是否持有指定數量的道具。voidhavePartyQuest(int itemId) 處理組隊任務取得指定道具的相關邏輯。voidhealHP(int delta) 為此角色回復 HP,並向自己與同地圖玩家送出回血特效封包。voidhealMP(int delta) 為此角色回復 MP,並向自己與同地圖玩家送出回復特效封包。void提升名譽(Honor)等級 1 級,並在特定等級獎勵內在能力技能。booleaninAzwan()判斷角色目前是否位於阿斯旺(Azwan)地圖區段。voidincMoneytoBank(long money) 將楓幣銀行存款金額增加指定值(先讀後寫)。void將 PVP 累計敗場數加一。void將 PVP 累計勝場數加一。void為此角色所屬帳號在mesobank資料表建立一筆金額為 0 的楓幣銀行紀錄。booleaninPVP()判斷角色是否處於 PVP 活動實例中。booleanisAdmin()是否為管理員(GM 等級 ≥ 5)。boolean判斷角色是否為冒險家(Adventurer)職業。booleanisAlive()判斷此角色目前是否存活(HP 大於 0)。booleanisAran()判斷角色是否為戰神(Aran)職業。booleanisBowman()判斷角色是否為弓箭手(Bowman)系職業,含冒險家、皇家騎士團與覺醒者的弓系職業。booleanisBuffFrom(MapleBuffStat stat, Skill skill) 判斷指定 buff 狀態是否來自特定技能。booleanisClone()判斷本角色物件是否為分身(clone)。booleanisCygnus()判斷角色是否為皇家騎士團(Cygnus)職業。booleanisDamage(int sec) 判斷玩家是否在最近sec毫秒內攻擊怪物。booleanisFlying()是否處於飛行(翱翔)狀態。boolean判斷本角色是否為跟隨關係的發起者。boolean判斷跟隨功能目前是否開啟。booleanisFreeSlot(int slot) 檢查所有背包類型(裝備/消耗/設置/其他/現金)是否都至少有指定數量的空格。booleanisGM()是否為 GM(GM 等級 > 0)。booleanisGod()是否為最高權限「神」(GM 等級 ≥ 100)。booleanisHidden()判斷角色是否處於隱身狀態。booleanisHyperRockMap(int id) 判斷指定地圖是否已登錄於高級(VIP)傳送石清單中。boolean判斷角色目前是否位於受限制(禁用部分功能)的地圖。booleanisIntern()是否為實習 GM(GM 等級 ≥ 1)。boolean判斷角色目前是否位於可正常使用城鎮功能的城鎮地圖。boolean判斷角色是否處於無敵狀態。boolean傳回此角色目前是否已送出交易邀請。booleanisKOC()判斷角色是否屬於騎士團(Knights of Cygnus)職業群。booleanisMage()判斷角色是否為法師(Mage)系職業,含冒險家、皇家騎士團、覺醒者與 22xx 系列法師。boolean判斷指定地圖物件目前對此角色是否可見。boolean傳回此角色目前是否正在操作倉庫。booleanisPirate()判斷角色是否為海盜(Pirate)系職業,含冒險家海盜與皇家騎士團的暴風使者。booleanisRegRockMap(int id) 判斷指定地圖是否已登錄於特殊(記憶)傳送石清單中。booleanisRockMap(int id) 判斷指定地圖是否已登錄於城市傳送石清單中。boolean是否顯示偵錯/管理資訊(等同isAdmin())。booleanisSkillWorking(int SkillID) 判斷指定技能是否仍在作用中(存在時間紀錄)。booleanisStaff()判斷角色是否為管理人員(GM 等級高於普通玩家)。booleanisTakeDamage(int sec) 判斷玩家是否在最近sec毫秒內被怪物攻擊。booleanisThief()判斷角色是否為盜賊(Thief)系職業,含冒險家盜賊與皇家騎士團的夜行者。boolean是否已使用堅固護身符(保護裝備的標記)。boolean是否已使用 VIP 護身符(防止經驗值損失的標記)。boolean判斷角色是否為劍士(Warrior)系職業,含冒險家、皇家騎士團與戰神的近戰職業。intitemQuantity(int itemid) 計算角色身上指定道具的總數量。final voidLearnSameSkill(MapleCharacter victim) 複製另一名角色的技能配置:先清除自身全部技能,再依對方的技能等級重新學習。void處理角色離開地圖時的各項清理工作。voidLevelMsg()於升級後送出等級相關的提示訊息。voidlevelUp()處理此角色升級(提升等級並分配 HP/MP/AP/SP 等)。static MapleCharacterloadCharFromDB(int charid, MapleClient client, boolean channelserver) 由資料庫載入指定角色,等同loadCharFromDB(charid, client, channelserver, null)。static MapleCharacterloadCharFromDB(int charid, MapleClient client, boolean channelserver, Map<Integer, CardData> cads) 由資料庫載入完整角色狀態(屬性、背包、技能、任務、buff、寵物、社交關係等)。void為角色建立座騎龍(evan 龍),並向所在地圖廣播生成封包。voidmakeMFC(int familyid, int seniorid, int junior1, int junior2) 建立角色的家族成員資料。final void將所有可學技能(編號< 90000000且適用)全部設為滿等。intmaxBattleshipHP(int skillid) 依指定技能計算戰艦的最大 HP。final void依角色目前職業將該職業可學技能設為滿等,並處理無用/極限冒險家技能。final void將角色已習得的專業(採集/製作)技能全部提升至 10 級。voidmobKilled(int id, int skillID) 通知任務系統此角色擊殺了某怪物,以推進相關任務的擊殺計數。voidmodifyCSPoints(int type, int quantity) 調整現金商城點數(不顯示提示訊息)。voidmodifyCSPoints(int type, int quantity, boolean show) 調整現金商城點數,並可選擇是否在聊天視窗顯示增減提示。modifyDamageTaken(double damage, MapleMapObject attacke) 依角色各項減傷/護盾/反傷被動與 buff,計算實際承受傷害並處理連帶效果。voidmulung_EnergyModify(boolean inc) 調整本角色的武陵道場能量值,並即時將新數值以封包傳送給用戶端。booleanOfflineBanById(int id, String reason) 依角色 id 進行離線封鎖(封鎖帳號、IP 與 MAC)。booleanOfflineBanByName(String name, String reason) 依角色名稱進行離線封鎖。voidonAttack(long maxhp, int maxmp, int skillid, int oid, long totDamage) 角色發動攻擊後的結算:處理吸血/吸魔、特定 buff 與技能的攻擊後效果。void處理此角色死亡時的全部後續結算。voidplayerDiedCPQ(String name, int lostCP, int team) 向自身連線送出嘉年華玩家陣亡(扣除 CP)的提示封包。void播放音效。final void將任務資訊寫入封包。static intrands(int lbound, int ubound) 回傳介於上下界之間(含兩端)的隨機整數。voidrecalcPartyQuestRank(int questid) 重新計算指定組隊任務的隊伍排名。void向同地圖的隊友請求其目前 HP 以更新隊伍血量顯示。voidReconstructChr(MapleCharacter player, MapleClient client) 將既有角色實例重新繫結至新連線並修正所在地圖(跨頻道搬移善後)。static final MapleCharacterReconstructChr(CharacterTransfer ct, MapleClient client, boolean isChannel) 由CharacterTransfer重建角色(跨頻道/進出商城時的角色搬移)。voidregisterEffect(MapleStatEffect effect, long starttime, ScheduledFuture<?> schedule, int from) 註冊狀態效果(buff)至角色,採用該效果的預設狀態增益與持續時間。voidregisterEffect(MapleStatEffect effect, long starttime, ScheduledFuture<?> schedule, Map<MapleBuffStat, Integer> statups, boolean silent, int localDuration, int cid) 註冊狀態效果(buff)至角色的核心多載。voidreloadC()重新整理角色在當前地圖的顯示資料。voidreloadEquip(Equip equip) 動態刷新單一裝備的能力顯示——不移除/重給道具,也不需換頻或重登。voidremoveAll(int id) 移除背包中所有指定 ID 的道具(不顯示提示)。voidremoveAll(int id, boolean show) 移除背包中所有指定 ID 的道具。voidremoveAll(int id, boolean show, boolean equip) 移除背包中所有指定 ID 的道具,並選擇性顯示移除提示。void移除角色的機器人並向地圖廣播停用。voidremoveAriantRoom(int room) 清空指定阿里安鬥技場房間的房主與人數資料。voidremoveCooldown(int skillId) 移除指定技能的冷卻時間。void移除角色開設的所有傳送門。void移除本角色目前擺放的怪物抽取器。void收回目前召喚的怪物寵物(familiar)。voidremoveItem(int id, int quantity) 自背包移除指定數量的道具,並送出物品變動提示封包。void從此角色的清單中移除指定的連結召喚獸。void移除角色開設的所有機械門(機械師職業)。static voidremovePartTime(int cid) 自資料庫刪除指定角色的兼職(part-time)工作紀錄。void自此角色移除一隻寵物。voidremoveSkillWorking(int SkillID) 移除指定技能的作用時間紀錄。voidremoveStolenSkill(int skillID) 移除一個已偷取的幻影技能,並重建該職業的偷取技能用戶端顯示。void自此角色移除一隻召喚獸。void將目前召喚的怪物寵物(familiar)自地圖視覺上移除並取消其被動效果。void將指定地圖物件自此角色「可見物件」集合移除。void將角色的剩餘 AP 與 SP 全部歸零。void將阿里安鬥技場分數歸零。voidresetCP()重設嘉年華點數,將總點數與可用點數歸零。void將跑步(running)堆疊計數歸零。voidresetSP()將角色所有技能書的剩餘技能點(SP)歸零。voidresetSP(int sp) 重置角色的剩餘技能點數(SP)為指定值。voidresetStats(int str, int dex, int int_, int luk) 將四項基本能力值重設為指定數值,並把多出的點數退回剩餘 AP。voidresetStatsByJob(boolean beginnerJob) 依職業將角色能力值重設為對應的初始配點。void將此角色的家族狀態寫回資料庫。void將此角色的公會狀態(公會 ID/階級/貢獻值)寫回資料庫。voidsaveInventory(Connection con) 將此角色所有背包欄位的道具寫回資料庫。void將指定類型的記憶傳送點設為此角色目前所在地圖,並標記存檔。voidsaveLocation(SavedLocationType type, int mapz) 將指定類型的記憶傳送點設為指定地圖,並標記存檔。static voidsaveNewCharToDB(MapleCharacter chr, LoginInformationProvider.JobType type, short db) 將全新建立的角色寫入資料庫(角色建立流程)。voidsaveToDB(boolean dc, boolean fromcs) 將此角色的完整狀態寫回資料庫。voidsendDestroyData(MapleClient client) 向指定客戶端送出「移除此角色」封包,使其自該玩家畫面消失。voidsendEnglishQuiz(String msg) 向客戶端發送英文問答(OX quiz)訊息。voidsendImp()向客戶端送出所有已存在小惡魔(imp)的召喚狀態。void向客戶端送出此角色的技能巨集(前 5 組)。void以本角色名義寄送一封不含名聲贈禮的便箋給指定收件者。void以本角色名義寄送一封便箋給指定收件者,並可附帶名聲贈禮。voidsendSpawnData(MapleClient client) 向指定客戶端送出「生成此角色」所需的完整封包序列,使其出現在該玩家畫面。voidset_DelChrLog(boolean control) 設定是否記錄刪除角色的開關。voidsetAchievementFinished(int id) 將指定成就標記為已完成。void寫入角色的成就(ac)紀錄(DB 寫入)。voidsetAllianceRank(byte rank) 設定在聯盟中的階級。void設定角色的機器人(android),並在地圖上生成與播放表情。voidsetApprentice(int app) 設定此角色的學徒(收徒系統)角色 ID。voidsetAriantRoomLeader(int room, String charname) 設定指定阿里安鬥技場房間的房主名稱。voidsetAriantSlotRoom(int room, int slot) 設定指定阿里安鬥技場房間的人數(座位)值。voidsetAttackDebugMessage(boolean x) 設定是否開啟攻擊(attack)除錯訊息。voidsetBattlePoints(int p) 設定角色的戰鬥點數(PVP points)並於有變動時通知客戶端。voidsetBattleshipHP(int v) 設定戰艦目前的 HP。voidsetBossLog(String bossid) 寫入角色對指定 BOSS 的擊殺紀錄(DB 寫入)。voidsetBuddyCapacity(byte capacity) 設定好友名單的容量上限。voidsetBuffedValue(MapleBuffStat effect, int value) 設定指定 buff 狀態目前生效的數值(該 buff 未生效時不作為)。voidsetCardStack(byte amount) 設定卡片(card)堆疊數量。void設定本角色所屬的怪物嘉年華隊伍。voidsetCData(int questid, int points) 將指定點數「累加」到某任務的自訂資料(customData)欄位上。voidsetChair(int chair) 設定此角色目前使用中的椅子,並重新觸發坐椅回復計算。voidsetChalkboard(String text) 設定本角色的黑板(小黑板)文字內容,並向同地圖玩家廣播。voidsetChallenge(int c) 設定角色目前的挑戰值。void將最近一次換圖時間記錄為目前系統時間。voidsetcheck_FishingVip(boolean x) 設定釣魚 VIP 狀態旗標。voidsetChronosphere(int count) 設定角色持有的時空石數量。voidsetChronosphereLog(String chronoLog) 寫入角色的時空(Chronosphere)紀錄(DB 寫入)。void清空商店「再買一次」暫存清單(若已建立)。final voidsetClient(MapleClient client) 設定角色所屬的客戶端連線(換頻/重建角色時使用)。voidsetClone(boolean c) 設定本角色物件是否為分身(clone)。voidsetCombo(short combo) 設定本角色目前的連擊(Combo)計數。voidsetConversation(int inst) 設定本角色目前正在對話的 NPC 對話實例編號。voidsetCSChronsphere(int count) 設定現金商城時空石(CS Chronosphere)數量。voidsetCurrentRep(int _rank) 設定目前的家族聲望值。voidsetDebugMessage(boolean control) 設定是否開啟一般除錯訊息。voidsetDemonMarking(int mark) 設定惡魔職業的印記值(demon marking)。voidsetDex(int dex) 設定角色的敏捷(DEX)數值,並重新計算衍生屬性。voidsetDirection(int inst) 設定本角色的對話方向狀態值。void設定本角色目前的武陵道場挑戰模式。voidsetDOT(int d, int source, int sourceLevel) 對角色施加持續傷害(DOT,多用於 PVP 毒霧)。void設定角色的龍(evan 龍)物件。voidsetElf(int elf) 設定角色精靈耳朵(Elf ear)狀態並更新外觀。voidsetEventInstance(EventInstanceManager eventInstance) 設定此角色目前所在的活動實例。voidsetExp(int exp) 設定角色經驗值。void設定本角色的怪物抽取器。voidsetFace(int face) 設定角色的臉型 ID。voidsetFallCounter(int fallcounter) 設定角色的墜落計數器。voidsetFame(int fame) 設定角色人氣值。voidsetFamily(int newf, int news, int newj1, int newj2) 設定角色的家族關係資料。voidsetFatigue(int j) 設定角色的疲勞值並同步至客戶端。voidsetFlying(boolean toggle) 設定飛行(翱翔)狀態旗標。voidsetFollowId(int fi) 設定跟隨對象的角色 ID。voidsetFollowInitiator(boolean fi) 設定本角色是否為跟隨關係的發起者。voidsetFollowOn(boolean fi) 設定跟隨功能的開啟狀態。final voidsetFriendShipPoints(int joejoe, int hermoninny, int littledragon, int ika) 一次設定四位好感度 NPC 的好感度點數。final voidsetFriendShipToAdd(int points) 設定待加入的好感度點數暫存值。voidsetGachExp(int ge) 設定角色的轉蛋經驗值。voidsetGender(byte gender) 設定角色的性別。voidsetGuildContribution(int _c) 設定對公會的貢獻值。voidsetGuildId(int _id) 設定所屬公會的 ID。voidsetGuildRank(byte _rank) 設定在公會中的階級。voidsetHackMessage(boolean control) 設定是否開啟外掛偵測訊息。voidsetHair(int hair) 設定角色的髮型 ID。voidsetHasSummon(boolean summ) 設定角色是否擁有召喚獸的旗標。voidsetHonorLevel(int level) 設定名譽(Honor)等級。voidsetHonourExp(int exp) 設定名譽(Honor)經驗值。voidsetHp(int amount) 設定角色目前的 HP(會夾在 0 與最大 HP 之間並更新狀態)。voidsetHpApUsed(short hpApUsed) 設定已用於增加 HP 的能力點(AP)數量。voidsetInt(int int_) 設定角色的智力(INT)數值,並重新計算衍生屬性。voidSetIntNoRecord(int questID, String point) 將指定任務的自訂資料(customData)設為給定字串,但不會新增不存在的任務。voidsetInvincible(boolean invinc) 設定角色的無敵狀態,並同步套用或解除對應的無敵 buff。voidsetInvited(boolean set) 設定此角色的交易邀請狀態旗標。voidsetItemEffect(int itemEffect) 設定此角色目前播放中的道具效果 ID。voidsetJob(int j) 設定角色的職業 ID(直接寫入欄位,不觸發轉職流程)。voidsetKeyDownSkill_Time(long keydown_skill) 設定上次施放長按蓄力技能的時間戳記。voidsetKeyValue(String key, String values) 設定一筆自訂鍵值(key-value)資料,並標記為已變更以待存檔。voidsetLastCombo(long combo) 設定上次連擊的時間戳記。voidsetLastDamage(Long time) 設定最後一次攻擊怪物的時間戳(毫秒)。voidsetLastRes(List<LifeMovementFragment> lastres) 設定本角色最後一次的移動軌跡片段清單。voidsetLastSpeak(String msg) 設定最後一次公開發話的內容。voidsetLastTakeDamage(Long time) 設定最後一次被怪物攻擊的時間戳(毫秒)。voidsetLevel(short level) 設定角色等級。voidsetLinkMid(int lm, int x) 設定(或更新)某連結怪物對應的傷害增幅。void統一紀錄系統:對指定維度的計數+1(UPSERT)。void統一紀錄系統:對指定維度的計數累加delta(UPSERT,依日曆邊界自動重置)。void統一紀錄系統:setLog(LogScope, ResetType, String)的字串便利重載(給腳本用)。void統一紀錄系統:setLog(LogScope, ResetType, String, int)的字串便利重載(給腳本用)。voidsetLuckyBarrelsStatus(int luckyBarrelsStatus) 設定幸運木桶(Lucky Barrels)小遊戲狀態。voidsetLuk(int luk) 設定角色的幸運(LUK)數值,並重新計算衍生屬性。voidsetMap(int PmapId) 設定角色記錄的地圖 id(僅更新 id 欄位,不變更getMap()物件參考)。void設定角色目前所在的地圖物件參考。voidsetMarriageId(int mi) 設定角色的結婚編號。voidsetMarriageItemId(int mi) 設定角色的結婚戒指道具 ID。voidsetMaxHp(int amount) 設定角色的最大 HP。voidsetMaxMp(int amount) 設定角色的最大 MP。voidsetMeso(int mesos) 直接設定此角色的楓幣數量(不送封包、不觸發成就)。voidsetMessenger(MapleMessenger messenger) 設定此角色目前所在的聊天室(messenger)。voidsetMoneytoBank(long money) 將此角色所屬帳號的楓幣銀行存款金額覆寫為指定值。voidsetMp(int amount) 設定角色目前的 MP(會夾在 0 與最大 MP 之間並更新狀態)。voidsetmsg_Chat(boolean control) 設定是否記錄聊天訊息的開關。voidsetmsg_HiredMerchant(boolean control) 設定是否記錄雇傭商人(販賣)相關訊息的開關。void設定角色名稱(僅變更記憶體欄位,不直接寫入資料庫)。voidsetNextConsume(long nc) 設定下一次允許消耗(道具使用)的時間戳記。voidsetNpcNow(int id) 設定角色目前正在互動的 NPC 編號。voidsetObjectId(int id) Throws unsupported operation exception, oid of players is read onlyvoid設定角色先前記錄的座標位置。voidsetOneTimeLog(String log) 寫入角色的一次性事件紀錄(DB 寫入)。voidsetOperateStorage(boolean set) 設定此角色是否正在操作倉庫的狀態旗標。voidsetParty(MapleParty party) 設定此角色所屬隊伍。voidsetPlayerShop(IMaplePlayerShop playerShop) 設定本角色目前開設或互動中的玩家商店/交易室物件。voidsetPoints(int p) 將指定點數寫入本角色帳號(更新accounts.points資料表欄位)。voidsetPrizeLog(String bossid) 寫入角色的領獎紀錄(DB 寫入)。void設定角色所屬的金字塔/地鐵活動實例。final voidsetQuestAdd(MapleQuest quest, byte status, String customData) 新增任務並設定其狀態與自訂資料。voidsetReborns(int rb) 以累加方式增加角色的轉生次數。void設定商店「再買一次」暫存的道具清單。voidsetRemainingAp(short remainingAp) 設定角色剩餘能力點(AP)。voidsetRemainingSp(int remainingSp) 設定角色目前技能書的剩餘技能點(SP)。voidsetRemainingSp(int remainingSp, int skillbook) 設定指定技能書的剩餘技能點數(SP)。voidsetRewardLevel(int reward) 設定角色獎勵等級並即時寫回資料庫。voidsetRPS(RockPaperScissors rps) 設定角色目前的剪刀石頭布遊戲狀態。voidsetSayGood(int time) 將指定時間值累加至「說好話」(讚)時間。voidsetSchedule(MapleBuffStat effect, ScheduledFuture<?> sched) 替換指定 buff 狀態的排程任務,並取消原排程。voidsetScrolledPosition(short s) 設定最近一次卷軸作用的裝備槽位。void設定此角色目前互動的商店。voidsetSkillWorking(int SkillID, long SkillTime) 設定指定技能的作用(到期)時間。voidsetSkinColor(byte skinColor) 設定角色的膚色代碼。voidsetSmega()切換此角色接收世界喇叭(super megaphone)訊息的開關,並提示目前狀態。voidsetStr(int str) 設定角色的力量(STR)數值,並重新計算衍生屬性。voidsetSubcategory(int z) 設定角色的職業子類別代碼。voidsetTeam(int v) 設定本角色所屬的隊伍編號(用於椰子大賽等活動)。voidsetTeleportName(String tname) 設定角色的傳送目標名稱。voidsetTempValue(String arg, String values) 設定(或清除)一筆記憶體暫存值。voidsetTitleEffect(int titleEffect) 設定此角色目前的稱號效果 ID。voidsetTotalBattleExp(int p) 設定角色的累計戰鬥經驗(PVP exp)並在有變動時重算 PVP 排名。voidsetTotalRep(int _rank) 設定家族累計總聲望值。voidsetTrade(MapleTrade trade) 設定此角色目前進行中的交易。voidsetUseFirmCharm(boolean useFirmCharm) 設定堅固護身符使用狀態。voidsetUseVipCharm(boolean useVipCharm) 設定 VIP 護身符使用狀態。voidsetVip(int vip) 設定角色 VIP 等級並即時寫回資料庫。voidsetVPoints(int p) 設定本角色的 V 點(投票點數)。voidsetWalkDebugMessage(boolean x) 設定是否開啟移動(walk)除錯訊息。voidsetWishlist(int[] wl) 設定本角色的商城願望清單,並標記為需存檔。voidsetWorld(byte world) 設定此角色所在的世界(World)編號。voidshowEffect(String effect, boolean broadcast) 播放畫面效果。void以畫面上方訊息(type -1)向本角色顯示一則資訊,可選擇加上方括號標題前綴。final voidshowInstruction(String msg, int width, int height) 向此角色的用戶端送出一則指定尺寸的提示框(hint)。voidshowMessage(int type, String msg) 向此角色的客戶端送出訊息。voidshowNote()查詢資料庫中寄給本角色的所有便箋,並將便箋列表封包傳送給本角色用戶端。void靜默地將目前 HP/MP 重新套用上限校正,不送出狀態更新封包。voidsilentGiveBuffs(List<PlayerBuffValueHolder> buffs) 靜默地為角色重新套用一組既存 buff(通常用於換頻/復原)。void靜默更新此角色在隊伍中的成員資料(不觸發客戶端可見的隊伍變動提示)。booleanskillisCooling(int skillId) 判斷指定技能是否正在冷卻中。void依據設定的分身數量在地圖上生成對應數量的分身。void在地圖上召喚指定的怪物寵物(familiar)並套用其被動效果。voidspawnPet(byte slot) 召喚指定欄位的寵物。voidspawnPet(byte slot, boolean lead) 召喚指定欄位的寵物,並指定是否設為領隊寵物。voidspawnPet(byte slot, boolean lead, boolean broadcast) 召喚指定欄位的寵物,並指定領隊與是否向地圖廣播。final void重新生成先前存檔的寵物。voidstartFairySchedule(boolean exp) 啟動精靈吊墜的每小時加成排程。voidstartFairySchedule(boolean exp, boolean equipped) 啟動精靈吊墜的每小時加成排程。voidstartFishingTask(boolean VIP) 啟動釣魚循環任務。voidstartMapTimeLimitTask(int time, MapleMap to) 啟動地圖停留時間限制計時器,時間到時自動傳送至指定地圖。voidstartMonsterCarnival(int enemyavailable, int enemytotal) 向自身連線送出開始怪物嘉年華的封包。booleanstartPartyQuest(int questid) 開始指定的組隊任務。voidstartPartySearch(List<Integer> jobs, int maxLevel, int minLevel, int membersNeeded) 於目前地圖搜尋符合條件的玩家並邀入隊伍(組隊搜尋)。voidstopControllingMonster(MapleMonster monster) 讓此角色停止控制指定怪物,將其自受控集合移除。intteachSkill(int skillId, int toCharId) 由本角色向另一名角色「傳授」一個技能(直接寫入資料庫的離線授予)。void對此角色所屬帳號執行「限時封鎖」(tempban),並中斷其連線。voidtryPartyQuest(int questid) 嘗試開始指定的組隊任務。voidunchooseStolenSkill(int skillID) 取消選用與指定技能同職業的所有已選偷取技能。voidunequip(int itemId) 卸下指定的已穿戴道具(放回背包,不從背包移除)。voidunequip(int itemId, boolean remove) 卸下指定的已穿戴道具,可選擇直接刪除而非放回背包。final void取消此角色所有寵物的出戰。voidunequipPet(MaplePet pet, boolean hunger) 取消指定寵物的出戰。void釋放getSummonsReadLock()取得的summonsLock讀鎖。void釋放getAndWriteLockVisibleMapObjects()取得的visibleMapObjectsLock寫鎖。voidupdateAndroid(short pos, int itemId) 更新機器人在指定槽位的外觀道具並向地圖廣播。voidupdateAP()重新向客戶端推送四項基礎能力值(STR/DEX/INT/LUK)。void向整張地圖廣播此角色最新的阿里安鬥技場分數。void將目前人氣值同步更新給客戶端。final voidupdateInfoQuest(int questid, String data) 更新任務的自訂資訊字串。voidupdateMacros(int position, SkillMacro updateMacro) 更新指定槽位的技能巨集(Skill Macro),並標記巨集資料為已變更以待存檔。voidupdateOneInfo(int questid, String key, String value) 更新指定組隊任務中某個鍵的資訊值。voidupdateOneTempValue(String arg, String key, String value) 更新指定暫存鍵內的單一子鍵值。void將此角色的 HP 變化廣播給隊伍其他成員。void更新寵物自動進食/自動撿取等自動行為設定。final voidupdateQuest(MapleQuestStatus quest) 更新任務狀態並送出對應封包。final voidupdateQuest(MapleQuestStatus quest, boolean update) 更新任務狀態,並依旗標決定是否送出封包。voidupdateSingleStat(MapleStat stat, int newval) 向客戶端送出單一屬性更新封包(不含道具反應)。voidupdateSingleStat(MapleStat stat, int newval, boolean itemReaction) Updates a single stat of this MapleCharacter for the client.voidupdateTick(int newTick) 更新反作弊用的客戶端時間刻度。voidupdateUsingPortal(boolean set) 標記或清除「正在使用傳送門」的時間戳(用於傳送門防連點節流)。voidupdateWarpingMap(boolean set) 標記或清除「正在換圖」的時間戳(用於換圖防連點節流)。voiduseCP(int ammount) 消耗指定數量的可用嘉年華點數(CP)。取得目前仍在冷卻中(不可使用)的家族祝福索引清單。voiduseFamilyBuff(MapleFamilyBuff buff) 使用指定的家族祝福並記錄使用時間。voidwriteEnergy(String type, String inc) 向用戶端傳送金字塔(PQ)能量更新封包。void將本角色目前的武陵道場能量值以封包重新傳送給用戶端(不更動數值)。voidwritePoint(String type, String inc) 向用戶端傳送幽靈船(Ghost)分數更新封包。voidwriteStatus(String type, String inc) 向用戶端傳送幽靈船(Ghost)狀態更新封包。Methods inherited from class AnimatedMapleMapObject
getFacingDirection, getStance, isFacingLeft, setStanceMethods inherited from class MapleMapObject
getPosition, getRange, getTruePosition, setPosition
-
Field Details
-
keyvalue_changed
public boolean keyvalue_changed -
innerskill_changed
public boolean innerskill_changed -
apprentice
public int apprentice -
dojoStartTime
public long dojoStartTime -
dojoMapEndTime
public long dojoMapEndTime -
dojoMapEndTimeTotal
public long dojoMapEndTimeTotal -
dojoMode
本角色目前的武陵道場挑戰模式,預設為MapleCharacter.DojoMode.無。 -
ariantScore
public int ariantScore阿里安鬥技場目前累計分數。
-
-
Method Details
-
getDefault
建立指定職業類別的全新初始角色(角色建立流程用)。套用各職業起手屬性點(STR/DEX/INT/LUK 與 HP/MP)並指定
level=1、空背包、 預設好友清單;同時以accountid查詢accounts資料表,將帳號名稱、 點數券(ACash/mPoints/points/vpoints)填入回傳角色。- Parameters:
client- 此角色所屬的連線type- 要建立的職業類別- Returns:
- 已套用初始屬性的新
MapleCharacter(尚未寫入資料庫)
-
ReconstructChr
public static final MapleCharacter ReconstructChr(CharacterTransfer ct, MapleClient client, boolean isChannel) 由CharacterTransfer重建角色(跨頻道/進出商城時的角色搬移)。不重新讀取資料庫,而是把搬移封包中的快照(屬性、背包、技能、buff 等)還原到一個 新的
MapleCharacter實例上,達成玩家在頻道與商城間移動時毋須重新登入。- Parameters:
ct- 來源頻道序列化的角色搬移資料client- 目標連線isChannel-true表示在頻道伺服器間搬移;false會改用ct的頻道編號- Returns:
- 由搬移資料重建出的
MapleCharacter
-
loadCharFromDB
由資料庫載入指定角色,等同loadCharFromDB(charid, client, channelserver, null)。- Parameters:
charid- 角色編號client- 此角色所屬的連線channelserver-true表示在頻道伺服器載入(會載入完整遊戲狀態)- Returns:
- 載入完成的角色
-
loadCharFromDB
public static MapleCharacter loadCharFromDB(int charid, MapleClient client, boolean channelserver, Map<Integer, CardData> cads) 由資料庫載入完整角色狀態(屬性、背包、技能、任務、buff、寵物、社交關係等)。角色實體的核心讀取進入點,會大量查詢
characters及其相關資料表並組裝出 可進入遊戲的MapleCharacter;channelserver為false時僅載入 角色選單所需的精簡資料。- Parameters:
charid- 角色編號client- 此角色所屬的連線channelserver-true表示在頻道伺服器載入完整遊戲狀態cads- 預先載入的角色卡資料(可為null)- Returns:
- 載入完成的角色
-
saveNewCharToDB
public static void saveNewCharToDB(MapleCharacter chr, LoginInformationProvider.JobType type, short db) 將全新建立的角色寫入資料庫(角色建立流程)。於單一交易內 INSERT
characters主紀錄並依職業類別寫入起始技能、背包、 鍵盤配置等附屬資料;失敗時回滾。會修改資料庫狀態。- Parameters:
chr- 待寫入的新角色type- 角色職業類別db- 起始技能組/資料變體選擇器
-
deleteWhereCharacterId
以角色編號為條件執行刪除(或更新)SQL,使用executeUpdate。- Parameters:
con- 共用連線(不會被關閉)sql- 帶單一?角色編號參數的 SQLid- 角色編號- Throws:
SQLException- 資料庫存取失敗時拋出
-
deleteWhereCharacterId_NoLock
public static void deleteWhereCharacterId_NoLock(Connection con, String sql, int id) throws SQLException 以角色編號為條件執行刪除(或更新)SQL,使用execute(不取資料表鎖的變體)。- Parameters:
con- 共用連線(不會被關閉)sql- 帶單一?角色編號參數的 SQLid- 角色編號- Throws:
SQLException- 資料庫存取失敗時拋出
-
rands
public static int rands(int lbound, int ubound) 回傳介於上下界之間(含兩端)的隨機整數。- Parameters:
lbound- 下界(含)ubound- 上界(含)- Returns:
[lbound, ubound]範圍內的隨機整數
-
ban
public static boolean ban(String id, String reason, boolean accountId, int gmlevel, boolean hellban) 依名稱或 IP 封鎖帳號(離線可用的靜態封鎖)。若
id形如 IP 則直接寫入ipbans;否則查出對應帳號並設定banned=1(僅當該帳號 gm 等級低於gmlevel時生效)。gmlevel>100的管理員封鎖會連帶封鎖該帳號最後登入 IP 與 MAC;hellban另以 email/IP 連坐封鎖。會修改資料庫狀態。- Parameters:
id- 目標帳號名稱、角色名稱或 IPreason- 封鎖原因accountId-true以帳號名稱查詢,false以角色名稱查詢gmlevel- 執行者的 GM 等級(僅能封鎖等級更低者)hellban- 是否連坐封鎖同 email/IP 的其他帳號- Returns:
- 成功封鎖回傳
true,找不到目標或發生例外回傳false
-
getOnlineCharacterByName
依名稱取得目前線上的角色(指定世界)。- Parameters:
world- 世界編號name- 角色名稱- Returns:
- 線上的角色,找不到則回傳
null
-
getCharacterIdByName
依名稱取得角色編號(指定世界)。優先查線上角色,未上線則查詢
characters資料表。- Parameters:
world- 世界編號name- 角色名稱- Returns:
- 角色編號,找不到則回傳
-1
-
getCharacterByName
依名稱取得角色,線上則回傳線上實例,否則由資料庫載入。未上線時會以暫時連線
loadCharFromDB(int, MapleClient, boolean)載入離線角色快照。- Parameters:
name- 角色名稱- Returns:
- 角色實例,找不到則回傳
null
-
getOnlineCharacterByName
依名稱取得目前線上的角色(跨所有頻道查詢)。- Parameters:
name- 角色名稱- Returns:
- 線上的角色,找不到則回傳
null
-
getCharacterIdByName
依名稱取得角色編號,優先查線上、未上線則查資料庫。- Parameters:
name- 角色名稱- Returns:
- 角色編號,找不到則回傳
-1
-
getCharacterById
依編號取得角色,線上則回傳線上實例,否則由資料庫載入。- Parameters:
cid- 角色編號- Returns:
- 角色實例,找不到則回傳
null
-
getCharacterNameById
依編號取得角色名稱,優先查線上、未上線則查資料庫。- Parameters:
id- 角色編號- Returns:
- 角色名稱,找不到則回傳
null
-
getOnlineCharacterById
依編號取得目前線上的角色(跨所有頻道查詢)。- Parameters:
cid- 角色編號- Returns:
- 線上的角色,找不到則回傳
null
-
ReconstructChr
將既有角色實例重新繫結至新連線並修正所在地圖(跨頻道搬移善後)。從暫存值還原暫時 IP 與帳號名稱,依目標頻道的
MapleMapFactory重新取得地圖 物件;若原地圖不存在則改送至杜鵑花森林(950000100),並處理強制返回地圖與出生點失效 的後備(退回 0 號出生點)。會修改player的連線、地圖與座標狀態。- Parameters:
player- 待重新繫結的角色client- 目標連線
-
saveToDB
-
saveInventory
將此角色所有背包欄位的道具寫回資料庫。彙整各
MapleInventory的道具後委由ItemLoader.INVENTORY儲存;con為null時改用其自有連線。會修改資料庫狀態。- Parameters:
con- 共用連線;為null時改由道具載入器自取連線- Throws:
SQLException- 資料庫存取失敗時拋出
-
getStat
-
QuestInfoPacket
- Parameters:
mplew- 目標封包寫入器
-
updateInfoQuest
更新任務的自訂資訊字串。委派至CharacterQuestManager.updateInfoQuest(int, String)。- Parameters:
questid- 任務編號data- 自訂資訊字串
-
getInfoQuest
取得任務的自訂資訊字串。委派至CharacterQuestManager.getInfoQuest(int)。- Parameters:
questid- 任務編號- Returns:
- 自訂資訊字串
-
getNumQuest
-
getQuestStatus
public final byte getQuestStatus(int quest) 取得指定任務的狀態碼。委派至CharacterQuestManager.getQuestStatus(int)。- Parameters:
quest- 任務編號- Returns:
- 任務狀態碼
-
getQuest
取得指定任務的狀態物件(必要時新增)。委派至CharacterQuestManager.getQuest(MapleQuest)。- Parameters:
quest- 任務定義- Returns:
- 任務狀態物件
-
setQuestAdd
新增任務並設定其狀態與自訂資料。委派至CharacterQuestManager.setQuestAdd(MapleQuest, byte, String)。- Parameters:
quest- 任務定義status- 任務狀態碼customData- 自訂資料字串
-
getQuestNAdd
取得任務狀態物件,不存在則新增空狀態。委派至CharacterQuestManager.getQuestNAdd(MapleQuest)。- Parameters:
quest- 任務定義- Returns:
- 任務狀態物件
-
getQuestNoAdd
取得任務狀態物件,不存在則回傳null(不新增)。 委派至CharacterQuestManager.getQuestNoAdd(MapleQuest)。- Parameters:
quest- 任務定義- Returns:
- 任務狀態物件,不存在則為
null
-
getQuestRemove
移除並回傳指定任務的狀態物件。委派至CharacterQuestManager.getQuestRemove(MapleQuest)。- Parameters:
quest- 任務定義- Returns:
- 被移除的任務狀態物件
-
updateQuest
更新任務狀態並送出對應封包。委派至CharacterQuestManager.updateQuest(MapleQuestStatus)。- Parameters:
quest- 任務狀態物件
-
updateQuest
更新任務狀態,並依旗標決定是否送出封包。 委派至CharacterQuestManager.updateQuest(MapleQuestStatus, boolean)。- Parameters:
quest- 任務狀態物件update-true表示同時送出更新封包
-
getInfoQuest_Map
取得任務自訂資訊的對映表。委派至CharacterQuestManager.getInfoQuest_Map()。- Returns:
- 任務編號對自訂資訊字串的對映
-
getQuest_Map
取得任務定義對狀態物件的對映表。委派至CharacterQuestManager.getQuest_Map()。- Returns:
- 任務定義對狀態物件的對映
-
getBuffedValue
取得指定 buff 狀態目前生效的數值。- Parameters:
effect- buff 狀態- Returns:
- 該 buff 的數值,未生效則回傳
null
-
getBuffedSkill_X
取得指定 buff 來源技能效果的 X 參數值。- Parameters:
effect- buff 狀態- Returns:
- 效果的 X 值,未生效則回傳
null
-
getBuffedSkill_Y
取得指定 buff 來源技能效果的 Y 參數值。- Parameters:
effect- buff 狀態- Returns:
- 效果的 Y 值,未生效則回傳
null
-
isBuffFrom
判斷指定 buff 狀態是否來自特定技能。- Parameters:
stat- buff 狀態skill- 待比對的技能- Returns:
- 該 buff 由此技能提供時回傳
true
-
getBuffSource
取得指定 buff 狀態的來源編號(技能或道具 ID)。- Parameters:
stat- buff 狀態- Returns:
- 來源編號,未生效則回傳
-1
-
getTrueBuffSource
取得指定 buff 狀態的來源編號,並以正負號區分技能與道具來源。技能來源回傳正值,道具來源回傳負值。
- Parameters:
stat- buff 狀態- Returns:
- 帶正負號的來源編號,未生效則回傳
-1
-
getItemQuantity
public int getItemQuantity(int itemid, boolean checkEquipped) 計算角色持有指定道具的總數量。- Parameters:
itemid- 道具編號checkEquipped-true時一併計入已裝備欄位的數量- Returns:
- 持有的道具數量
-
setBuffedValue
設定指定 buff 狀態目前生效的數值(該 buff 未生效時不作為)。- Parameters:
effect- buff 狀態value- 新數值
-
setSchedule
替換指定 buff 狀態的排程任務,並取消原排程。該 buff 未生效時不作為。
- Parameters:
effect- buff 狀態sched- 新的排程任務
-
getBuffedStarttime
取得指定 buff 狀態的生效起始時間。- Parameters:
effect- buff 狀態- Returns:
- 起始時間(毫秒),未生效則回傳
null
-
getStatForBuff
取得提供指定 buff 狀態的MapleStatEffect。- Parameters:
effect- buff 狀態- Returns:
- 對應的狀態效果,未生效則回傳
null
-
doDragonBlood
public void doDragonBlood()執行龍之血(DRAGONBLOOD)週期扣血效果。每次扣除效果 X 值的 HP;若扣血後 HP 將 ≤1 則改為取消該 buff。扣血時會對自身客戶端 與地圖廣播 buff 特效封包。會修改 HP 並送出封包。
-
canBlood
public final boolean canBlood(long now) 判斷龍之血效果是否到達下一次扣血時點(每 4 秒)。- Parameters:
now- 目前時間(毫秒)- Returns:
- 可再次觸發時回傳
true
-
doRecovery
public void doRecovery()執行回復術(RECOVERY)/機甲變形的週期回復效果。回復術會以效果 X 值回血、HP 滿時取消;機甲變形(來源 35121005)則持續扣 MP 維持, MP 不足時取消騎乘與變形 buff。會修改 HP/MP。
-
canRecover
public final boolean canRecover(long now) 判斷回復效果是否到達下一次觸發時點(每 5 秒)。- Parameters:
now- 目前時間(毫秒)- Returns:
- 可再次觸發時回傳
true
-
startMapTimeLimitTask
啟動地圖停留時間限制計時器,時間到時自動傳送至指定地圖。送出倒數時鐘封包並註冊
Timer.MapTimer任務;若目前位於監獄地圖,時間到時會更新監獄 相關任務的自訂資料以釋放角色,隨後執行changeMap(int)。會送出封包並可能觸發換圖。- Parameters:
time- 限制秒數(≤0 時以 1 秒處理)to- 時間到時要傳送的目標地圖
-
canDOT
public boolean canDOT(long now) 判斷持續傷害(DOT)是否到達下一次結算時點(每 8 秒)。- Parameters:
now- 目前時間(毫秒)- Returns:
- 可結算時回傳
true
-
hasDOT
public boolean hasDOT()判斷角色目前是否處於持續傷害(DOT)狀態。- Returns:
- 有持續傷害時回傳
true
-
doDOT
public void doDOT()結算一次持續傷害(DOT),扣除累計傷害並清除 DOT 狀態。扣除
dotHP*4的 HP 後歸零。會修改 HP。 -
setDOT
public void setDOT(int d, int source, int sourceLevel) 對角色施加持續傷害(DOT,多用於 PVP 毒霧)。立即扣除一次
d*4的 HP,並向地圖廣播毒霧封包;記錄起始時間供後續週期結算。 會修改 HP 並送出地圖廣播封包。- Parameters:
d- 每次結算的基礎傷害值source- 傷害來源編號sourceLevel- 傷害來源等級
-
startFishingTask
public void startFishingTask(boolean VIP) 啟動釣魚循環任務。註冊
Timer.EtcTimer週期任務,每次依魚餌種類消耗魚餌並隨機給予楓幣、經驗或道具獎勵, 並向自身客戶端送出釣魚更新封包、向地圖廣播上鉤特效。背包滿、無魚餌、伺服器關閉或楓幣異常 時會自動取消。會修改背包/楓幣/經驗並送出封包。- Parameters:
VIP- 是否使用 VIP 釣竿(較高獎勵與消耗對應的 VIP 魚餌)
-
cancelMapTimeLimitTask
public void cancelMapTimeLimitTask()取消地圖停留時間限制計時器(若有)。 -
getNeededExp
-
cancelFishingTask
public void cancelFishingTask()取消釣魚循環任務(若正在進行)。 -
registerEffect
public void registerEffect(MapleStatEffect effect, long starttime, ScheduledFuture<?> schedule, int from) 註冊狀態效果(buff)至角色,採用該效果的預設狀態增益與持續時間。等同呼叫完整多載並帶入
effect.getStatups()、非靜默、effect.getDuration()。- Parameters:
effect- 狀態效果starttime- 生效起始時間(毫秒)schedule- 到期解除的排程任務from- 來源角色編號
-
registerEffect
public void registerEffect(MapleStatEffect effect, long starttime, ScheduledFuture<?> schedule, Map<MapleBuffStat, Integer> statups, boolean silent, int localDuration, int cid) 註冊狀態效果(buff)至角色的核心多載。逐一將各
MapleBuffStat增益寫入內部 buff 表,並處理特殊效果的前置(隱身 GM 自地圖 移除、龍之血/回復計時、狂暴、騎乘啟動、海盜船血量、召喚分身等)。非靜默時會重算本地屬性。 會修改角色 buff 狀態並可能送出地圖廣播。- Parameters:
effect- 狀態效果starttime- 生效起始時間(毫秒)schedule- 到期解除的排程任務statups- 要套用的狀態增益對映silent-true時不重算本地屬性localDuration- 本地持續時間(毫秒)cid- 來源角色編號
-
getBuffStats
列出由同一狀態效果與起始時間提供的所有 buff 狀態。startTime為-1時忽略起始時間比對;可堆疊的狀態亦一律納入。- Parameters:
effect- 來源狀態效果startTime- 生效起始時間(-1表示不比對)- Returns:
- 符合條件的 buff 狀態清單
-
cancelEffect
- Parameters:
effect-overwrite- when overwrite is set no data is sent and all the Buffstats in the StatEffect are deregisteredstartTime-
-
cancelEffect
public void cancelEffect(MapleStatEffect effect, boolean overwrite, long startTime, Map<MapleBuffStat, Integer> statups) 取消指定狀態效果並依需要清除其所有 buff 數值(核心多載)。會處理門(魔法門/機械門)、坐騎、英雄連擊歸零等特殊效果的善後, 透過
deregisterBuffStats(List)解除 buff 註冊、cancelPlayerBuffs(List, boolean)對自身客戶端與地圖廣播取消封包;隱身 GM 取消時會重新對地圖廣播角色與寵物。 並會遞迴對所有分身(clones)連動取消。對無限(Infinity)效果有特例處理。 具封包送出、地圖廣播、狀態變動等副作用;effect為null時直接返回。- Parameters:
effect- 欲取消的狀態效果,null時不做任何事overwrite- 為true時不送資料、直接以statups的鍵集合解除註冊startTime- 該效果的起始時間,用於非覆寫模式比對statups- 覆寫模式下作為待解除 buff 來源的狀態映射
-
cancelBuffStats
取消一組指定的 buff 狀態。對給定的狀態先
deregisterBuffStats(List)解除註冊,再以非覆寫模式cancelPlayerBuffs(List, boolean)送出取消封包並向地圖廣播。具封包送出與廣播副作用。- Parameters:
stat- 欲取消的一個或多個 buff 狀態
-
cancelEffectFromBuffStat
依 buff 狀態找出對應的效果並取消之。若該狀態目前有作用中的效果,委由
cancelEffect(MapleStatEffect, boolean, long)取消(具封包/廣播副作用)。- Parameters:
stat- 欲取消其來源效果的 buff 狀態
-
cancelEffectFromBuffStat
依 buff 狀態取消效果,但僅當該效果來自指定來源角色時才取消。用於僅清除由特定施法者(
cid == from)所給予的 buff。具封包/廣播副作用。- Parameters:
stat- 欲取消其來源效果的 buff 狀態from- 必須相符的來源角色 id
-
dispel
public void dispel()驅散角色身上可被驅散的技能 buff。僅在非隱身狀態下作用;逐一取消屬於技能、且非變身/GM buff/坐騎/機甲變形/ 能量充滿/英雄連擊的有排程效果。具封包/廣播副作用。
-
dispelSkill
public void dispelSkill(int skillid) 取消指定技能 id 所產生的第一個 buff 效果。找到第一個來源為
skillid的技能效果即取消並停止。具封包/廣播副作用。- Parameters:
skillid- 欲驅散其 buff 的技能 id
-
dispelSummons
public void dispelSummons()取消角色所有召喚獸(具召喚移動型態)的 buff 效果。逐一取消所有
getSummonMovementType() != null的效果。具封包/廣播副作用。 -
dispelBuff
public void dispelBuff(int skillid) 取消指定來源 id 的第一個 buff 效果(不限於技能)。與
dispelSkill(int)類似,但不檢查是否為技能來源;找到第一個相符即取消並停止。 具封包/廣播副作用。- Parameters:
skillid- 欲驅散的 buff 來源 id
-
cancelAllBuffs_
public void cancelAllBuffs_()直接清空角色的所有效果表,不送出任何取消封包。僅清除內部
effects映射;不通知客戶端或地圖,通常用於登出/換頻等狀態重置。 -
cancelAllBuffs
public void cancelAllBuffs()正常取消角色身上所有作用中的 buff 效果。逐一以
cancelEffect(MapleStatEffect, boolean, long)取消,會送出取消封包並向地圖廣播 (與cancelAllBuffs_()的靜默清空不同)。 -
cancelMorphs
public void cancelMorphs()取消角色身上的變身(Morph)效果。逐一取消屬於變身的效果;遇到特定不可疊加的變身技能(如海盜變身系列)即提早返回以省略迴圈。 具封包/廣播副作用。
-
getMorphState
public int getMorphState()取得目前作用中變身效果的來源技能 id。- Returns:
- 第一個變身效果的來源技能 id;若無變身則回傳
-1
-
silentGiveBuffs
靜默地為角色重新套用一組既存 buff(通常用於換頻/復原)。逐一呼叫各效果的
silentApplyBuff以還原 buff 數值與排程,不送出一般取得 buff 的效果動畫。buffs為null或空時直接返回。- Parameters:
buffs- 欲還原的 buff 值持有者清單,可為null
-
getAllBuffs
取得角色目前所有 buff 的可序列化快照,依來源技能與等級合併同源狀態。常用於換頻/進出商城時把 buff 暫存至
PlayerBuffStorage。 相同(來源 id、等級)的多個 buff 狀態會合併到同一個PlayerBuffValueHolder內。- Returns:
- 合併後的 buff 值持有者清單
-
cancelMagicDoor
public void cancelMagicDoor()取消角色的魔法門(Magic Door)效果。找到第一個魔法門效果即取消並停止。具封包/廣播副作用(並由
cancelEffect(MapleStatEffect, boolean, long)一併移除門物件)。 -
getSkillLevel
public int getSkillLevel(int skillid) 取得指定技能 id 的(基礎)技能等級。- Parameters:
skillid- 技能 id- Returns:
- 該技能目前的等級,未學習則為 0
-
getTotalSkillLevel
public int getTotalSkillLevel(int skillid) 取得指定技能 id 的總技能等級(含裝備等加成)。- Parameters:
skillid- 技能 id- Returns:
- 該技能含加成後的總等級
-
handleEnergyCharge
public final void handleEnergyCharge(int skillid, int targets) 處理海盜「能量充滿」(Energy Charge)的能量累積與觸發。依命中目標數提升能量值;尚未開始充能時以無限時間套用充能 buff, 達上限(10000)時改為套用「能量爆發」效果。期間會送出效果動畫封包、向地圖廣播, 並送出能量條更新封包。具封包/廣播與 buff 狀態變動副作用。
- Parameters:
skillid- 能量充滿技能的 idtargets- 本次攻擊命中的目標數
-
handleBattleshipHP
public final void handleBattleshipHP(int damage) 處理海盜戰艇(Battleship)受到傷害後的耐久度扣減。僅在角色乘坐戰艇(坐騎效果來源為 5221006)時生效;扣減
battleshipHP並送出冷卻條更新封包,歸零時送出技能冷卻、加入冷卻時間並取消坐騎效果。 具封包送出與冷卻/狀態變動副作用。- Parameters:
damage- 戰艇受到的傷害量
-
handleOrbgain
public final void handleOrbgain()處理戰士「英雄連擊」(Combo)的能量球累積。依職業選擇連擊/進階連擊技能,命中時增加連擊球數(進階連擊可機率多加一球), 未達上限時更新
MapleBuffStat.COMBO數值並送出 buff 封包與地圖廣播。 具封包/廣播與 buff 狀態變動副作用。 -
handleOrbconsume
public void handleOrbconsume(int howmany) 消耗角色身上的英雄連擊(Combo)能量球。無連擊技能或無作用中連擊效果時直接返回;否則將連擊球數減少
howmany(最低保留 1), 更新MapleBuffStat.COMBO並送出 buff 封包與地圖廣播。具封包/廣播與 buff 狀態變動副作用。- Parameters:
howmany- 欲消耗的連擊球數
-
silentEnforceMaxHpMp
public void silentEnforceMaxHpMp()靜默地將目前 HP/MP 重新套用上限校正,不送出狀態更新封包。透過
PlayerStats重設 HP/MP 以套用最大值限制,不通知客戶端。 -
enforceMaxHpMp
public void enforceMaxHpMp()將超過上限的 HP/MP 校正回最大值,並在有變動時送出狀態更新封包。當目前 MP/HP 超過當前最大值時重設之,並把變動的
MapleStat透過updatePlayerStats封包送回客戶端。具封包送出副作用。 -
getMap
-
setMap
public void setMap(int PmapId) 設定角色記錄的地圖 id(僅更新 id 欄位,不變更getMap()物件參考)。- Parameters:
PmapId- 欲記錄的地圖 id
-
showEffect
播放畫面效果。broadcast為true時對整張地圖廣播CField.showEffect(String); 否則僅送給當前玩家。- Parameters:
effect- 效果資料名稱broadcast- 是否對整張地圖廣播
-
playSound
播放音效。broadcast為true時對整張地圖廣播CField.playSound(String); 否則僅送給當前玩家。- Parameters:
sound- 音效資料名稱broadcast- 是否對整張地圖廣播
-
getLastSpeak
取得最後一次公開發話的內容。此為地圖內暫存狀態,不寫入 DB,角色離線後即消失。
- Returns:
- 最後公開發話的內容(從未發話時為空字串)
-
setLastSpeak
-
setLastTakeDamage
設定最後一次被怪物攻擊的時間戳(毫秒)。- Parameters:
time- 時間戳(System.currentTimeMillis())
-
setLastDamage
設定最後一次攻擊怪物的時間戳(毫秒)。- Parameters:
time- 時間戳(System.currentTimeMillis())
-
isTakeDamage
public boolean isTakeDamage(int sec) 判斷玩家是否在最近sec毫秒內被怪物攻擊。- Parameters:
sec- 時間區間(毫秒)- Returns:
- 區間內曾被攻擊時回傳
true
-
isDamage
public boolean isDamage(int sec) 判斷玩家是否在最近sec毫秒內攻擊怪物。- Parameters:
sec- 時間區間(毫秒)- Returns:
- 區間內曾攻擊怪物時回傳
true
-
isFreeSlot
public boolean isFreeSlot(int slot) 檢查所有背包類型(裝備/消耗/設置/其他/現金)是否都至少有指定數量的空格。- Parameters:
slot- 每種背包所需的最少空格數- Returns:
- 所有背包類別空間都足夠時回傳
true,只要任一種不足即回傳false
-
setMap
-
getMonsterBook
-
getBossLog
查詢角色對指定 BOSS 的擊殺紀錄次數(每日門檻用)。委派至CharacterLogManager.getBossLog(String)。- Parameters:
bossid- BOSS 識別字- Returns:
- 紀錄中的次數
-
setBossLog
寫入角色對指定 BOSS 的擊殺紀錄(DB 寫入)。委派至CharacterLogManager.setBossLog(String)。- Parameters:
bossid- BOSS 識別字
-
getOneTimeLog
查詢角色的一次性事件紀錄。委派至CharacterLogManager.getOneTimeLog(String)。- Parameters:
log- 事件識別字- Returns:
- 紀錄中的次數
-
setOneTimeLog
寫入角色的一次性事件紀錄(DB 寫入)。委派至CharacterLogManager.setOneTimeLog(String)。- Parameters:
log- 事件識別字
-
setPrizeLog
寫入角色的領獎紀錄(DB 寫入)。委派至CharacterLogManager.setPrizeLog(String)。- Parameters:
bossid- 獎勵/BOSS 識別字
-
getPrizeLog
查詢角色的領獎紀錄次數。委派至CharacterLogManager.getPrizeLog(String)。- Parameters:
bossid- 獎勵/BOSS 識別字- Returns:
- 紀錄中的次數
-
setAcLog
寫入角色的成就(ac)紀錄(DB 寫入)。委派至CharacterLogManager.setAcLog(String)。- Parameters:
bossid- 成就/事件識別字
-
getAcLog
查詢角色的成就(ac)紀錄次數。委派至CharacterLogManager.getAcLog(String)。- Parameters:
bossid- 成就/事件識別字- Returns:
- 紀錄中的次數
-
getGiftLog
查詢角色的贈禮紀錄次數。委派至CharacterLogManager.getGiftLog(String)。- Parameters:
bossid- 贈禮/事件識別字- Returns:
- 紀錄中的次數
-
getChronosphereLog
查詢角色的時空(Chronosphere)紀錄次數。委派至CharacterLogManager.getChronosphereLog(String)。- Parameters:
chronoLog- 時空事件識別字- Returns:
- 紀錄中的次數
-
setChronosphereLog
寫入角色的時空(Chronosphere)紀錄(DB 寫入)。委派至CharacterLogManager.setChronosphereLog(String)。- Parameters:
chronoLog- 時空事件識別字
-
setLog
統一紀錄系統:對指定維度的計數+1(UPSERT)。委派至CharacterLogManager.setLog(LogScope, ResetType, String)。- Parameters:
scope- 範圍維度(角色/帳號)resetType- 重置週期維度(日/週/月/永久)eventName- 事件名稱(識別字)
-
setLog
統一紀錄系統:對指定維度的計數累加delta(UPSERT,依日曆邊界自動重置)。 委派至CharacterLogManager.setLog(LogScope, ResetType, String, int)。- Parameters:
scope- 範圍維度(角色/帳號)resetType- 重置週期維度(日/週/月/永久)eventName- 事件名稱(識別字)delta- 累加量
-
getLog
統一紀錄系統:取得指定維度在當前週期內的計數。委派至CharacterLogManager.getLog(LogScope, ResetType, String)。- Parameters:
scope- 範圍維度(角色/帳號)resetType- 重置週期維度(日/週/月/永久)eventName- 事件名稱(識別字)- Returns:
- 當前週期內的計數(查無/已過期回
0)
-
setLog
統一紀錄系統:setLog(LogScope, ResetType, String)的字串便利重載(給腳本用)。 委派至CharacterLogManager.setLog(String, String, String)。- Parameters:
scope- 範圍維度字串("CHAR"/"ACC")resetType- 重置週期字串("DAY"/"WEEK"/"MON"/"NEVER")eventName- 事件名稱(識別字)
-
setLog
統一紀錄系統:setLog(LogScope, ResetType, String, int)的字串便利重載(給腳本用)。 委派至CharacterLogManager.setLog(String, String, String, int)。- Parameters:
scope- 範圍維度字串("CHAR"/"ACC")resetType- 重置週期字串("DAY"/"WEEK"/"MON"/"NEVER")eventName- 事件名稱(識別字)delta- 累加量
-
getLog
統一紀錄系統:getLog(LogScope, ResetType, String)的字串便利重載(給腳本用)。 委派至CharacterLogManager.getLog(String, String, String)。- Parameters:
scope- 範圍維度字串("CHAR"/"ACC")resetType- 重置週期字串("DAY"/"WEEK"/"MON"/"NEVER")eventName- 事件名稱(識別字)- Returns:
- 當前週期內的計數(無法解析/查無/已過期回
0)
-
getMapId
public int getMapId()取得角色目前的地圖 id。若有地圖物件參考則回傳其 id,否則回傳記錄的
mapid欄位。- Returns:
- 目前地圖 id
-
getInitialSpawnpoint
public byte getInitialSpawnpoint()取得角色進入地圖時的初始重生點(傳送門)索引。- Returns:
- 初始重生點索引
-
getId
public int getId()取得角色的資料庫唯一 id。- Returns:
- 角色 id
-
getName
-
setName
-
canHold
public final boolean canHold(int itemid) 判斷角色是否有足夠空格可容納指定道具。依道具 id 推得其
MapleInventoryType並檢查對應背包是否仍有空格。- Parameters:
itemid- 道具 id- Returns:
- 對應背包尚有空格時為
true
-
getBlessOfFairyOrigin
-
getBlessOfEmpressOrigin
-
getLevel
-
setLevel
public void setLevel(short level) 設定角色等級。委派至CharacterStatsManager.setLevel(short)。- Parameters:
level- 新的角色等級
-
getFame
-
setFame
public void setFame(int fame) 設定角色人氣值。委派至CharacterStatsManager.setFame(int)。- Parameters:
fame- 新的人氣值
-
getFallCounter
public final int getFallCounter()取得角色的墜落計數器(防摔/防卡點偵測用)。- Returns:
- 墜落計數值
-
setFallCounter
public void setFallCounter(int fallcounter) 設定角色的墜落計數器。- Parameters:
fallcounter- 新的墜落計數值
-
getClient
-
setClient
設定角色所屬的客戶端連線(換頻/重建角色時使用)。- Parameters:
client- 新的MapleClient
-
getExp
-
setExp
-
getRemainingAp
public short getRemainingAp()取得角色剩餘能力點(AP)。委派至CharacterStatsManager.getRemainingAp()。- Returns:
- 剩餘 AP
-
setRemainingAp
public void setRemainingAp(short remainingAp) 設定角色剩餘能力點(AP)。委派至CharacterStatsManager.setRemainingAp(short)。- Parameters:
remainingAp- 新的剩餘 AP
-
getRemainingSp
public int getRemainingSp()取得角色目前技能書的剩餘技能點(SP)。委派至CharacterStatsManager.getRemainingSp()。- Returns:
- 剩餘 SP
-
setRemainingSp
public void setRemainingSp(int remainingSp) 設定角色目前技能書的剩餘技能點(SP)。委派至CharacterStatsManager.setRemainingSp(int)。- Parameters:
remainingSp- 新的剩餘 SP
-
getRemainingSp
public int getRemainingSp(int skillbook) 取得指定技能書的剩餘技能點(SP)。委派至CharacterStatsManager.getRemainingSp(int)。- Parameters:
skillbook- 技能書索引- Returns:
- 該技能書的剩餘 SP
-
getRemainingSps
public int[] getRemainingSps()取得各技能書剩餘技能點(SP)的完整陣列。委派至CharacterStatsManager.getRemainingSps()。- Returns:
- 以技能書為索引的剩餘 SP 陣列
-
getRemainingSpSize
public int getRemainingSpSize()取得技能點數陣列的大小(技能書數量)。委派至CharacterStatsManager.getRemainingSpSize()。- Returns:
- 各技能書剩餘 SP 陣列的長度
-
getHpApUsed
public short getHpApUsed()取得已用於增加 HP 的能力點(AP)數量。委派至CharacterStatsManager.getHpApUsed()。- Returns:
- 投入 HP 的 AP 數量
-
setHpApUsed
public void setHpApUsed(short hpApUsed) 設定已用於增加 HP 的能力點(AP)數量。委派至CharacterStatsManager.setHpApUsed(short)。- Parameters:
hpApUsed- 投入 HP 的 AP 數量
-
isHidden
public boolean isHidden()判斷角色是否處於隱身狀態。依
MapleBuffStat.DARKSIGHT的 buff 來源技能 ID 是否屬於 GM 隱身技能(前綴 9)判定, 因此 GM 的「隱身術」會回傳true,而一般黑暗視野不會。- Returns:
- 若角色目前隱身則為
true
-
getSkinColor
public byte getSkinColor()取得角色的膚色代碼。- Specified by:
getSkinColorin interfaceMapleCharacterLook- Returns:
- 膚色代碼
-
setSkinColor
public void setSkinColor(byte skinColor) 設定角色的膚色代碼。- Parameters:
skinColor- 膚色代碼
-
getJob
public short getJob()取得角色的職業 ID。- Specified by:
getJobin interfaceMapleCharacterLook- Returns:
- 職業 ID
-
setJob
public void setJob(int j) 設定角色的職業 ID(直接寫入欄位,不觸發轉職流程)。- Parameters:
j- 職業 ID
-
getGender
public byte getGender()取得角色的性別(0=男、1=女)。- Specified by:
getGenderin interfaceMapleCharacterLook- Returns:
- 性別代碼
-
setGender
public void setGender(byte gender) 設定角色的性別。- Parameters:
gender- 性別代碼(0=男、1=女)
-
getHair
public int getHair()取得角色的髮型 ID。- Specified by:
getHairin interfaceMapleCharacterLook- Returns:
- 髮型 ID
-
setHair
public void setHair(int hair) 設定角色的髮型 ID。- Parameters:
hair- 髮型 ID
-
getFace
public int getFace()- Specified by:
getFacein interfaceMapleCharacterLook
-
setFace
public void setFace(int face) 設定角色的臉型 ID。- Parameters:
face- 臉型 ID
-
getDemonMarking
public int getDemonMarking()取得惡魔職業的印記值(demon marking)。- Specified by:
getDemonMarkingin interfaceMapleCharacterLook- Returns:
- 惡魔印記值
-
setDemonMarking
public void setDemonMarking(int mark) 設定惡魔職業的印記值(demon marking)。- Parameters:
mark- 惡魔印記值
-
getOldPosition
-
setOldPosition
-
setRemainingSp
public void setRemainingSp(int remainingSp, int skillbook) 設定指定技能書的剩餘技能點數(SP)。委派至CharacterStatsManager.setRemainingSp(int, int)。- Parameters:
remainingSp- 剩餘 SP 數量skillbook- 技能書索引
-
isInvincible
public boolean isInvincible()判斷角色是否處於無敵狀態。- Returns:
- 若無敵則為
true
-
setInvincible
public void setInvincible(boolean invinc) 設定角色的無敵狀態,並同步套用或解除對應的無敵 buff。開啟時對自身套用技能
1010的效果(會送出 buff 封包); 關閉時呼叫dispelBuff(int)解除該技能。- Parameters:
invinc-true開啟無敵、false關閉
-
getCheatTracker
取得本角色的作弊偵測追蹤器。委派至CharacterAnticheatManager.getCheatTracker()。- Returns:
- 對應的
CheatTracker
-
getBuddylist
取得角色的好友清單。委派至CharacterSocialManager.getBuddylist()。- Returns:
- 對應的
BuddyList
-
addFame
public void addFame(int famechange) 增減角色的人氣值(fame)。委派至CharacterStatsManager.addFame(int)。- Parameters:
famechange- 人氣變動量(可為負數)
-
updateFame
public void updateFame()將目前人氣值同步更新給客戶端。委派至CharacterStatsManager.updateFame()。 -
getStr
public int getStr()取得角色的力量(STR)數值。- Returns:
- 力量數值
-
setStr
public void setStr(int str) 設定角色的力量(STR)數值,並重新計算衍生屬性。寫入後呼叫
PlayerStats.recalcLocalStats(MapleCharacter)重算本地屬性(不傳送封包)。- Parameters:
str- 力量數值
-
getInt
public int getInt()取得角色的智力(INT)數值。- Returns:
- 智力數值
-
setInt
public void setInt(int int_) 設定角色的智力(INT)數值,並重新計算衍生屬性。寫入後呼叫
PlayerStats.recalcLocalStats(MapleCharacter)重算本地屬性(不傳送封包)。- Parameters:
int_- 智力數值
-
getLuk
public int getLuk()取得角色的幸運(LUK)數值。- Returns:
- 幸運數值
-
setLuk
public void setLuk(int luk) 設定角色的幸運(LUK)數值,並重新計算衍生屬性。寫入後呼叫
PlayerStats.recalcLocalStats(MapleCharacter)重算本地屬性(不傳送封包)。- Parameters:
luk- 幸運數值
-
getDex
public int getDex()取得角色的敏捷(DEX)數值。- Returns:
- 敏捷數值
-
setDex
public void setDex(int dex) 設定角色的敏捷(DEX)數值,並重新計算衍生屬性。寫入後呼叫
PlayerStats.recalcLocalStats(MapleCharacter)重算本地屬性(不傳送封包)。- Parameters:
dex- 敏捷數值
-
getHp
public int getHp()取得角色目前的 HP。- Returns:
- 目前 HP
-
setHp
public void setHp(int amount) 設定角色目前的 HP(會夾在 0 與最大 HP 之間並更新狀態)。- Parameters:
amount- 目標 HP
-
getMp
public int getMp()取得角色目前的 MP。- Returns:
- 目前 MP
-
setMp
public void setMp(int amount) 設定角色目前的 MP(會夾在 0 與最大 MP 之間並更新狀態)。- Parameters:
amount- 目標 MP
-
getMaxHp
public int getMaxHp()取得角色的最大 HP。- Returns:
- 最大 HP
-
setMaxHp
public void setMaxHp(int amount) 設定角色的最大 HP。- Parameters:
amount- 最大 HP
-
getMaxMp
public int getMaxMp()取得角色的最大 MP。- Returns:
- 最大 MP
-
setMaxMp
public void setMaxMp(int amount) 設定角色的最大 MP。- Parameters:
amount- 最大 MP
-
changeMapBanish
將角色驅逐(banish)至指定地圖的具名傳送點,並先向其顯示一則訊息。先以類型 5 對自身
dropMessage(String)顯示msg,再依目標地圖的具名傳送點執行傳送。- Parameters:
mapid- 目標地圖 IDportal- 目標傳送點名稱msg- 傳送前顯示給玩家的訊息
-
changeMap
public void changeMap(int map) 依地圖 ID 將角色傳送至目標地圖的 0 號(預設)傳送點。等同於以傳送點 ID
0呼叫changeMap(int, int)。- Parameters:
map- 目標地圖 ID
-
changeMap
public void changeMap(int map, int portal) 依地圖 ID 與傳送點 ID 將角色傳送至目標地圖。會自當前頻道的地圖工廠取得目標
MapleMap,並執行換圖(送出換圖封包、離開原圖、加入新圖)。- Parameters:
map- 目標地圖 IDportal- 目標傳送點 ID
-
changeMap
-
changeMap
-
changeMap
將角色傳送至目標地圖的指定傳送點。- Parameters:
to- 目標MapleMappto- 目標MaplePortal
-
changeMap
將角色傳送至目標地圖的指定傳送點,並可選擇是否同步更新 MP。- Parameters:
to- 目標MapleMappto- 目標MaplePortalchangeMP- 若為true換圖後會送出一次 MP 屬性更新
-
changeMapPortal
將角色傳送至目標地圖的指定傳送點,並在進圖時將該傳送點傳入換圖流程。- Parameters:
to- 目標MapleMappto- 目標MaplePortal
-
cancelChallenge
public void cancelChallenge()取消角色目前的對戰挑戰(challenge)。若存在挑戰對象,會向對方送出「拒絕」訊息並清除其挑戰狀態,再清除自身的挑戰狀態。
-
leaveMap
-
changeJob
public void changeJob(int newJob) 將角色轉職/轉生為指定職業,並套用所有相關連動處理。此為轉職核心流程,會依新職業執行大量副作用:設定子分類(影武者/重砲指揮官)、 初心者重置屬性、依職業階級調整 HP/MP/SP、授予新職業基礎技能、更新職業欄位、 重算屬性並向地圖廣播職業效果與更新封包;若新舊職業跨大類,亦會處理對應的數值修正。 若角色身上有影分身或水之盾 buff,會先以類型 5 提示玩家關閉並中止本次轉職。 過程中的例外會記錄到
ScriptEx_Log。- Parameters:
newJob- 目標職業 ID
-
baseSkills
public void baseSkills()補齊角色職業應有但尚未習得的基礎/預設技能。針對三轉以上職業補上四轉技能與「英雄的意志」等被動,並為夜光(Evan)補魔法防護、 為米哈逸(Mercedes)與惡魔(Demon)補上其專屬的初始技能組。所有需新增的技能彙整後 透過
changeSkillsLevel(Map)一次寫入(會送出技能更新封包)。 -
makeDragon
public void makeDragon()為角色建立座騎龍(evan 龍),並向所在地圖廣播生成封包。會新建
MapleDragon指派給本角色,並透過map.broadcastMessage廣播給同圖玩家。 -
getDragon
-
setDragon
-
gainAp
public void gainAp(short ap) 增減角色的剩餘能力點數(AP)。委派至CharacterStatsManager.gainAp(short)。- Parameters:
ap- AP 變動量(可為負數)
-
gainSP
public void gainSP(int sp) 增減角色預設技能書的剩餘技能點數(SP)。委派至CharacterStatsManager.gainSP(int)。- Parameters:
sp- SP 變動量(可為負數)
-
gainSP
public void gainSP(int sp, int skillbook) 增減角色指定技能書的剩餘技能點數(SP)。委派至CharacterStatsManager.gainSP(int, int)。- Parameters:
sp- SP 變動量(可為負數)skillbook- 技能書索引
-
resetSP
public void resetSP(int sp) 重置角色的剩餘技能點數(SP)為指定值。委派至CharacterStatsManager.resetSP(int)。- Parameters:
sp- 重置後的 SP 數量
-
resetSP
public void resetSP()將角色所有技能書的剩餘技能點(SP)歸零。委派至CharacterStatsManager.resetSP()。 -
resetAPSP
public void resetAPSP()將角色的剩餘 AP 與 SP 全部歸零。先
resetSP(int)歸零 SP,再以gainAp(short)扣除目前剩餘 AP。 -
getProfessions
-
getProfessionLevel
public byte getProfessionLevel(int id) 取得指定專業技能的等級。專業技能的等級與經驗值打包在技能等級欄位中:本方法取其高位元組作為等級。
- Parameters:
id- 專業技能 ID- Returns:
- 專業技能等級,未習得則為 0
-
getProfessionExp
public short getProfessionExp(int id) 取得指定專業技能目前的經驗值。取技能等級欄位的低 16 位元作為經驗值(與等級共用同一欄位打包)。
- Parameters:
id- 專業技能 ID- Returns:
- 專業技能經驗值,未習得則為 0
-
addProfessionExp
public boolean addProfessionExp(int id, int expGain) 為指定專業技能增加經驗值,必要時自動升級並回饋對應特性(trait)經驗。若經驗達到該等級門檻則升一級(透過
changeProfessionLevelExp(int, int, int)),並依專業類別 為對應的MapleTrait.MapleTraitType(感性/意志/手藝)加上特性經驗;否則僅更新經驗值。 專業未習得或已達 10 級(上限)時不處理。- Parameters:
id- 專業技能 IDexpGain- 增加的經驗值- Returns:
- 若本次升級則為
true,否則為false
-
changeProfessionLevelExp
public void changeProfessionLevelExp(int id, int level, int exp) 設定指定專業技能的等級與經驗值(兩者打包進同一技能等級欄位後寫入)。將
level(高位元組)與exp(低 16 位元)打包,透過changeSingleSkillLevel(Skill, int, byte)寫入並送出技能更新封包。- Parameters:
id- 專業技能 IDlevel- 專業等級exp- 專業經驗值
-
changeSingleSkillLevel
變更單一技能的等級與精通等級,到期時間採該技能的預設值(通常為一個月)。skill為null時直接返回;否則委派至changeSingleSkillLevel(Skill, int, byte, long)。- Parameters:
skill- 目標技能,可為null(不處理)newLevel- 新的技能等級newMasterlevel- 新的精通等級
-
changeSingleSkillLevel
變更單一技能的等級、精通等級與到期時間,並送出技能更新封包。透過
changeSkillData(Skill, int, byte, long)寫入技能資料;若確有變更,會送出updateSkills封包, 並依該技能是否影響回復或屬性,呼叫reUpdateStat(boolean, boolean)重算。無任何變更時直接返回。- Parameters:
skill- 目標技能newLevel- 新的技能等級newMasterlevel- 新的精通等級expiration- 技能到期時間(毫秒時戳;-1表示永久)
-
changeSkillsLevel
批次套用多個技能的等級/精通等級/到期時間變更,並一次送出技能更新封包。逐一委派
changeSkillData(Skill, int, byte, long)寫入每個成功變更的技能;僅當至少有一個技能 確實變更時,才向客戶端送出CWvsContext.updateSkills(Map)並重算相關屬性 (回血類技能會重置回復、非召喚技能會觸發本地屬性重算)。會標記changed_skills。- Parameters:
ss- 欲變更的技能對應表(key 為Skill,value 為SkillEntry);空表時直接返回
-
changeSkillData
將單一技能的資料寫入此角色的技能表(不送封包、不重算屬性)。當
newLevel與newMasterlevel皆為 0 時表示移除該技能; 若技能不適用(非GameConstants.isApplicableSkill(int)系列)或無實際變更,則不做任何事。 通常由changeSkillsLevel(Map)呼叫以收集本次更新清單。- Parameters:
skill- 欲寫入的技能;為null或不適用時回傳falsenewLevel- 新的技能等級(0 表示移除)newMasterlevel- 新的精通等級expiration- 技能到期時間(毫秒;-1 表示永不過期)- Returns:
- 技能表確實變更回傳
true,否則false
-
changeSkillLevel_Skip
套用單一臨時技能等級(不存入資料庫),並送出技能更新封包。便利多載:包裝成單筆對應表後委派至
changeSkillLevel_Skip(Map, boolean),並以write=true送出封包。- Parameters:
skil- 欲設定的技能skilLevel- 技能等級(0 表示移除)masterLevel- 精通等級
-
changeSkillLevel_Skip
批次套用臨時技能等級(不存入資料庫)。專供「不寫回資料庫」的臨時技能使用:等級與精通皆為 0 時移除技能,否則寫入技能表。 當
write為真且確有變更時,向客戶端送出CWvsContext.updateSkills(Map)。 不會標記changed_skills,故重新登入後不保留。- Parameters:
skill- 欲套用的技能對應表;空表時直接返回write- 為true時送出技能更新封包
-
playerDead
public void playerDead()處理此角色死亡時的全部後續結算。依序進行:靈魂之石(SOUL_STONE)保命復活(免經驗懲罰、原地復活後直接返回); 通知所屬事件實例
EventInstanceManager.playerKilled(MapleCharacter);取消大量增益狀態與召喚獸; 依序消耗 VIP/強效/一般護身符以免除經驗懲罰(MapleInventoryManipulator.removeById(MapleClient, MapleInventoryType, int, int, boolean, boolean), 庫存異動+向客戶端送出護身符封包);無護身符時依地圖類型計算並扣除經驗值 (MapleStat.EXP);檢查裝備耐久;金字塔地鐵任務失敗結算。會送出多個封包、變更角色狀態與庫存。初心者職業或 PVP 中不扣經驗。
-
updatePartyMemberHP
public void updatePartyMemberHP()將此角色的 HP 變化廣播給隊伍其他成員。委派至CharacterSocialManager.updatePartyMemberHP()。 -
receivePartyMemberHP
public void receivePartyMemberHP()向同地圖的隊友請求其目前 HP 以更新隊伍血量顯示。委派至CharacterSocialManager.receivePartyMemberHP()。 -
healHP
public void healHP(int delta) 為此角色回復 HP,並向自己與同地圖玩家送出回血特效封包。透過
addHP(int)增加 HP,再送出EffectPacket.showOwnHpHealed(int)給自己並廣播EffectPacket.showHpHealed(int, int)至地圖(不含自己)。- Parameters:
delta- 回復的 HP 量
-
healMP
public void healMP(int delta) 為此角色回復 MP,並向自己與同地圖玩家送出回復特效封包。透過
addMP(int)增加 MP,再送出EffectPacket.showOwnHpHealed(int)給自己並廣播EffectPacket.showHpHealed(int, int)至地圖(不含自己)。- Parameters:
delta- 回復的 MP 量
-
addHP
public void addHP(int delta) Convenience function which adds the supplied parameter to the current hp then directly does a updateSingleStat.- Parameters:
delta-- See Also:
-
addMP
public void addMP(int delta) Convenience function which adds the supplied parameter to the current mp then directly does a updateSingleStat.- Parameters:
delta-- See Also:
-
addMP
public void addMP(int delta, boolean ignore) 為此角色增加(或減少)MP,並送出單一屬性更新封包。惡魔(Demon)職業在
ignore為false時不會被「增加」MP (僅允許扣減),因其以「需求」機制取代一般 MP;其他職業則照常增減。- Parameters:
delta- 變化量(可為負)ignore- 為true時略過惡魔職業限制,強制套用變化
-
addMPHP
public void addMPHP(int hpDiff, int mpDiff) 同時增減此角色的 HP 與 MP,並以單一封包送出實際變更的屬性。分別嘗試更新 HP/MP(惡魔職業在非扣減時不增加 MP,同
addMP(int, boolean)), 僅將確實變更的屬性彙整為一個CWvsContext.updatePlayerStats(Map, MapleCharacter)封包送出。- Parameters:
hpDiff- HP 變化量(可為負)mpDiff- MP 變化量(可為負)
-
updateSingleStat
向客戶端送出單一屬性更新封包(不含道具反應)。便利多載,委派至updateSingleStat(MapleStat, int, boolean)並帶入itemReaction=false。- Parameters:
stat- 欲更新的屬性newval- 新數值
-
updateSingleStat
Updates a single stat of this MapleCharacter for the client. This method only creates and sends an update packet, it does not update the stat stored in this MapleCharacter instance.- Parameters:
stat-newval-itemReaction-
-
gainExp
public void gainExp(int total, boolean show, boolean inChat, boolean white) 給予此角色經驗值並處理升級結算。委派至CharacterStatsManager.gainExp(int, boolean, boolean, boolean)。- Parameters:
total- 取得的經驗值總量show- 是否顯示取得經驗特效inChat- 是否於聊天視窗顯示white- 是否以白字顯示
-
familyRep
public void familyRep(int prevexp, int needed, boolean leveled) 累加家族聲望(Family Rep)並處理升等。委派至CharacterSocialManager.familyRep(int, int, boolean)。- Parameters:
prevexp- 先前的家族經驗needed- 升等所需經驗leveled- 是否已升等
-
gainExpMonster
public void gainExpMonster(int gain, boolean show, boolean white, byte pty, int Class_Bonus_EXP, int Equipment_Bonus_EXP, int Premium_Bonus_EXP, boolean partyBonusMob, int partyBonusRate) 給予擊殺怪物所得的經驗值(含各類加成)並處理升級。委派至CharacterStatsManager.gainExpMonster(int, boolean, boolean, byte, int, int, int, boolean, int)。- Parameters:
gain- 基礎經驗值show- 是否顯示取得經驗特效white- 是否以白字顯示pty- 隊伍成員數/分配係數Class_Bonus_EXP- 職業加成經驗Equipment_Bonus_EXP- 裝備加成經驗Premium_Bonus_EXP- 付費加成經驗partyBonusMob- 是否為提供組隊加成的怪物partyBonusRate- 組隊加成比率
-
forceReAddItem_NoUpdate
將指定道具自其所在槽位移除後立即重新加回(不送任何更新封包)。用於刷新道具的記憶體狀態而不通知客戶端;其他
forceReAddItem*多載皆以此為基礎再附帶不同的更新封包。- Parameters:
item- 欲重新加入的道具type- 該道具所屬的庫存類型
-
forceReAddItem
重新加回道具並送出一般道具特殊使用更新封包。用於耐久度、道具經驗/等級、擁有者等狀態變更後刷新顯示;先呼叫
forceReAddItem_NoUpdate(Item, MapleInventoryType)再送出InventoryPacket.updateSpecialItemUse(Item, byte, MapleCharacter)。- Parameters:
item- 欲重新加入的道具type- 該道具所屬的庫存類型;為UNDEFINED時不送封包
-
forceReAddItem_Flag
重新加回道具並送出旗標(flag)變更的更新封包。用於道具旗標變更(如鎖定/封印)後刷新顯示;先呼叫
forceReAddItem_NoUpdate(Item, MapleInventoryType)再送出InventoryPacket.updateSpecialItemUse_(Item, byte, MapleCharacter)。- Parameters:
item- 欲重新加入的道具type- 該道具所屬的庫存類型;為UNDEFINED時不送封包
-
forceReAddItem_Book
重新加回道具並送出怪物圖鑑(monster book)升級封包。用於怪物卡冊相關道具變更後刷新顯示;先呼叫
forceReAddItem_NoUpdate(Item, MapleInventoryType)再送出CWvsContext.upgradeBook(Item, MapleCharacter)。- Parameters:
item- 欲重新加入的道具type- 該道具所屬的庫存類型;為UNDEFINED時不送封包
-
reloadEquip
動態刷新單一裝備的能力顯示——不移除/重給道具,也不需換頻或重登。適用情境:腳本(或其他程式)已直接改好某件
Equip的記憶體屬性 (例如equip.setStr(999)),要讓客戶端立即反映變更,包含背包中滑鼠移上去 顯示的能力 tooltip。處理流程:- 依裝備槽位正負判定所屬庫存(負值=已穿戴
MapleInventoryType.EQUIPPED, 其餘=一般裝備背包MapleInventoryType.EQUIP),以forceReAddItem(Item, MapleInventoryType)在原槽位重新加回並送出InventoryPacket.updateSpecialItemUse(Item, byte, MapleCharacter)(單一封包內先移除 再加入、夾帶完整道具資訊),客戶端即重繪該槽位的道具與 tooltip; - 若該裝備正穿戴於身上(槽位為負),再呼叫
equipChanged()重新計算本地戰鬥屬性 並向同地圖廣播外觀更新,使能力變更即時生效、他人也看得到外觀變化。
本方法不寫入資料庫;變更會在角色存檔(登出/換頻/定時存檔)時一併持久化,與卷軸強化一致。
- Parameters:
equip- 已在記憶體改好屬性、要刷新顯示的裝備物件;為null時不做任何事
- 依裝備槽位正負判定所屬庫存(負值=已穿戴
-
silentPartyUpdate
public void silentPartyUpdate()靜默更新此角色在隊伍中的成員資料(不觸發客戶端可見的隊伍變動提示)。若身處隊伍中,向
World.Party送出PartyOperation.SILENT_UPDATE。 不在隊伍時不做任何事。 -
isIntern
public boolean isIntern()是否為實習 GM(GM 等級 ≥ 1)。- Returns:
- GM 等級不低於 1 回傳
true
-
isGM
public boolean isGM()是否為 GM(GM 等級 > 0)。- Returns:
- GM 等級大於 0 回傳
true
-
isGod
public boolean isGod()是否為最高權限「神」(GM 等級 ≥ 100)。- Returns:
- GM 等級不低於 100 回傳
true
-
isAdmin
public boolean isAdmin()是否為管理員(GM 等級 ≥ 5)。- Returns:
- GM 等級不低於 5 回傳
true
-
getGMLevel
public int getGMLevel()取得此角色的 GM 等級。- Returns:
- GM 等級(普通玩家為 0,神為 100)
-
hasGmLevel
public boolean hasGmLevel(int level) 判斷此角色的 GM 等級是否達到指定門檻。- Parameters:
level- 要比較的 GM 等級門檻- Returns:
- GM 等級不低於
level回傳true
-
isShowInfo
-
showMessage
向此角色的客戶端送出訊息。當
type介於 0~44 時以遊戲訊息(CField.getGameMessage(String, boolean))形式送出, 否則退回為一般伺服器通知(CWvsContext.serverNotice(int, String),type 5)。- Parameters:
type- 訊息類型(0~44 為遊戲訊息,其餘走伺服器通知)msg- 訊息內容
-
getInventory
取得此角色指定類型的庫存(內部參照,非複本)。- Parameters:
type- 庫存類型- Returns:
- 對應的
MapleInventory
-
getInventorys
取得此角色的全部庫存陣列(內部參照,非複本)。- Returns:
- 以庫存類型序數為索引的
MapleInventory陣列
-
expirationTask
public final void expirationTask(boolean pending, boolean firstLoad) 處理道具與技能的到期回收,分為「掛起通知」與「實際掃描」兩種模式。當
pending為真:送出先前掃描累積的到期道具/技能通知封包 (InfoPacket.itemExpired(int)、CWvsContext.updateSkills(Map)及伺服器訊息), 並清空pendingExpiration/pendingSkills後返回。當
pending為假:掃描全部庫存與技能,移除已過期項目(鎖定道具改為解鎖、 部分道具可被替換道具取代並重新入庫),更新吊飾槽相關任務,並處理寶盒(coreAura)到期重置 (存檔+送出CWvsContext.updateCoreAura(MapleCharacter)+重算屬性)。被移除的項目暫存於pendingExpiration/pendingSkills待下一次以pending=true發送通知。會變更庫存與技能狀態、可能標記
changed_skills、並送出多個封包。- Parameters:
pending-true僅送出先前累積的到期通知;false進行實際到期掃描firstLoad- 是否為登入首次載入(影響「登出即過期」道具的處理與是否提示替換道具)
-
getShop
-
setShop
-
getMeso
public int getMeso()取得此角色目前持有的楓幣(meso)數量。- Returns:
- 楓幣數量
-
setMeso
public void setMeso(int mesos) 直接設定此角色的楓幣數量(不送封包、不觸發成就)。- Parameters:
mesos- 新的楓幣數量
-
getSavedLocations
public final int[] getSavedLocations()取得此角色的記憶傳送點陣列(內部參照,非複本)。- Returns:
- 以
SavedLocationType序數為索引的地圖 ID 陣列
-
getSavedLocation
取得指定類型的記憶傳送點地圖 ID。- Parameters:
type- 記憶傳送點類型- Returns:
- 對應的地圖 ID,未設定時為 -1
-
saveLocation
將指定類型的記憶傳送點設為此角色目前所在地圖,並標記存檔。- Parameters:
type- 記憶傳送點類型
-
saveLocation
將指定類型的記憶傳送點設為指定地圖,並標記存檔。- Parameters:
type- 記憶傳送點類型mapz- 要記住的地圖 ID
-
clearSavedLocation
清除指定類型的記憶傳送點(設為 -1),並標記存檔。- Parameters:
type- 記憶傳送點類型
-
gainMeso
public void gainMeso(int gain, boolean show) 給予(或扣除)楓幣。便利多載,委派至gainMeso(int, boolean, boolean)並帶入inChat=false。- Parameters:
gain- 楓幣變化量(可為負)show- 是否顯示取得楓幣特效
-
gainMeso
public void gainMeso(int gain, boolean show, boolean inChat) 給予(或扣除)此角色楓幣,並處理相關特效與成就。若扣除後楓幣為負則僅送出
CWvsContext.enableActions()後返回(不變更)。 成功後更新楓幣、檢查百萬/千萬/億/十億等成就(finishAchievement(int))、 送出MapleStat.MESO與 enableActions,並依show送出InfoPacket.showMesoGain(int, boolean)。當ServerConstants.LOG_TRACE_GAINMESO開啟時會額外輸出堆疊追蹤檔案。- Parameters:
gain- 楓幣變化量(可為負)show- 是否顯示取得楓幣特效inChat- 是否於聊天視窗顯示
-
controlMonster
讓此角色開始控制指定怪物(成為其 controller),並送出控制封包。將怪物的 controller 設為自己、於
controlledLock寫鎖下加入受控集合, 再送出MobPacket.controlMonster(MapleMonster, boolean, boolean)與怪物狀態給此角色客戶端。 分身(clone)或怪物為null時不做任何事。- Parameters:
monster- 欲控制的怪物aggro- 是否帶有仇恨(aggro)狀態
-
stopControllingMonster
讓此角色停止控制指定怪物,將其自受控集合移除。於
controlledLock寫鎖下移除。分身(clone)或怪物為null時不做任何事。本方法不送封包,僅變更受控集合。- Parameters:
monster- 欲停止控制的怪物
-
checkMonsterAggro
確認此角色對指定怪物的仇恨控制狀態。若已是該怪物的 controller,則標記其 controller 具有仇恨;否則將控制權切換給自己 (
MapleMonster.switchController(MapleCharacter, boolean),帶仇恨)。分身或怪物為null時不做任何事。- Parameters:
monster- 要檢查的怪物
-
getControlledSize
public int getControlledSize()取得此角色目前控制中的怪物數量。- Returns:
- 受控怪物集合的大小
-
getAccountID
public int getAccountID()取得此角色所屬的帳號 ID。- Returns:
- 帳號 ID
-
mobKilled
public void mobKilled(int id, int skillID) 通知任務系統此角色擊殺了某怪物,以推進相關任務的擊殺計數。委派至CharacterQuestManager.mobKilled(int, int)。- Parameters:
id- 被擊殺怪物的 IDskillID- 造成擊殺的技能 ID
-
getStartedQuests
取得此角色所有進行中的任務狀態。委派至CharacterQuestManager.getStartedQuests()。- Returns:
- 進行中任務狀態清單
-
getCompletedQuests
取得此角色所有已完成的任務狀態。委派至CharacterQuestManager.getCompletedQuests()。- Returns:
- 已完成任務狀態清單
-
getCompletedMedals
取得此角色已取得的勳章及其完成時間。委派至CharacterQuestManager.getCompletedMedals()。- Returns:
- 勳章 ID 與完成時間(毫秒)的配對清單
-
getSkills
-
getTotalSkillLevel
取得指定技能的「實際有效等級」(含戰鬥指令、全技能加成與個別技能加成)。在基礎等級之上,非初心者技能會加上
combatOrders、(最大等級 > 10 時的)incAllskill與該技能的加成值,最後以技能真實上限封頂。- Parameters:
skill- 要查詢的技能;為null或未習得(等級 ≤ 0)時回傳 0- Returns:
- 套用各項加成並封頂後的有效技能等級
-
getAllSkillLevels
public int getAllSkillLevels()計算此角色所有已習得技能的等級總和(排除初心者技能與特殊技能)。- Returns:
- 各非初心者、非特殊技能的等級加總
-
getSkillExpiry
取得指定技能的到期時間(毫秒)。- Parameters:
skill- 要查詢的技能;為null或未習得(等級 ≤ 0)時回傳 0- Returns:
- 到期時間(毫秒;-1 表示永不過期)
-
getSkillLevel
取得指定技能的基礎等級(不含任何加成)。- Parameters:
skill- 要查詢的技能;為null或未習得(等級 ≤ 0)時回傳 0- Returns:
- 技能基礎等級
-
getMasterLevel
public byte getMasterLevel(int skill) 取得指定技能 ID 的精通等級(master level)。便利多載,先以SkillFactory.getSkill(int)解析後委派至getMasterLevel(Skill)。- Parameters:
skill- 技能 ID- Returns:
- 精通等級,未習得時為 0
-
getMasterLevel
取得指定技能的精通等級(master level)。- Parameters:
skill- 要查詢的技能- Returns:
- 精通等級,未習得時為 0
-
levelUp
public void levelUp()處理此角色升級(提升等級並分配 HP/MP/AP/SP 等)。委派至CharacterStatsManager.levelUp()。 -
autoJob
public void autoJob()依目前職業與等級自動轉職(供自動/快速練功類設定使用)。針對各職業線(英雄、聖騎士……至米哈逸等)在特定等級門檻 自動呼叫
changeJob(int)。會變更角色職業並送出對應封包。 -
LevelMsg
public void LevelMsg()於升級後送出等級相關的提示訊息。非 GM 角色達到 200 級時,向全服廣播恭賀訊息(
World.Broadcast, 含其勳章名稱與角色名)。另依職業(龍魔導士、伊班、一般職業)在可轉職的等級 顯示地圖效果提示(MapleMap.startMapEffect(String, int))。 -
changeKeybinding
public void changeKeybinding(int key, byte type, int action) 變更此角色的單一按鍵綁定(key binding)。當
type不為 0 時,於按鍵配置中設定該按鍵對應的 (type, action); 為 0 時則移除該按鍵綁定。僅變更記憶體中的按鍵配置。- Parameters:
key- 按鍵代碼type- 綁定類型(0 表示移除該綁定)action- 該按鍵對應的動作/技能 ID
-
sendMacros
public void sendMacros()向客戶端送出此角色的技能巨集(前 5 組)。僅在至少存在一組非空巨集時送出
CField.getMacros(SkillMacro[])(且只送一次)。 -
updateMacros
更新指定槽位的技能巨集(Skill Macro),並標記巨集資料為已變更以待存檔。- Parameters:
position- 巨集槽位索引updateMacro- 要寫入該槽位的SkillMacro
-
getMacros
-
tempban
對此角色所屬帳號執行「限時封鎖」(tempban),並中斷其連線。會送出 GM 警察封包後關閉連線,並寫入
accounts資料表的tempban/banreason/greason欄位(DB 寫入);若IPMac為真,另會封鎖該連線的 MAC 並將其 IP 寫入ipbans資料表。 SQL 例外僅記錄於 log,不向外拋出。- Parameters:
reason- 封鎖理由duration- 封鎖到期時間(以Calendar表示)greason- GM 封鎖原因代碼IPMac- 為true時一併封鎖 IP 與 MAC
-
ban
對此角色所屬帳號執行「永久封鎖」(ban),並中斷其連線。會送出 GM 警察封包,並更新
accounts資料表的banned/banreason(DB 寫入;autoban為真時 banned=2,否則 1)。若IPMac為真則封鎖 MAC 並將 IP 寫入ipbans;若再加上hellban,則連動封鎖同 email 或同 SessionIP 的所有帳號。完成後關閉連線。- Parameters:
reason- 封鎖理由IPMac- 為true時一併封鎖 IP 與 MACautoban- 為true表示系統自動封鎖(banned 標記為 2)hellban- 為true時連動封鎖同 email/同 IP 的帳號- Returns:
- 封鎖成功回傳
true;發生 SQL 例外回傳false - Throws:
RuntimeException- 若角色尚未完整載入(lastmonthfameids為 null)
-
getObjectId
public int getObjectId()Oid of players is always = the cid- Overrides:
getObjectIdin classMapleMapObject
-
setObjectId
public void setObjectId(int id) Throws unsupported operation exception, oid of players is read only- Overrides:
setObjectIdin classMapleMapObject
-
getStorage
-
addVisibleMapObject
將指定地圖物件加入此角色「可見物件」集合。分身(clone)角色直接略過。操作於
visibleMapObjectsLock寫鎖下進行。- Parameters:
mo- 要標記為可見的MapleMapObject
-
removeVisibleMapObject
將指定地圖物件自此角色「可見物件」集合移除。分身(clone)角色直接略過。操作於
visibleMapObjectsLock寫鎖下進行。- Parameters:
mo- 要移除的MapleMapObject
-
isMapObjectVisible
判斷指定地圖物件目前對此角色是否可見。於
visibleMapObjectsLock讀鎖下查詢;分身(clone)角色一律視為不可見。- Parameters:
mo- 欲查詢的MapleMapObject- Returns:
- 可見回傳
true,否則false
-
getAndWriteLockVisibleMapObjects
取得可見物件集合並同時持有寫鎖,供呼叫端遍歷/修改。注意:此方法回傳時
visibleMapObjectsLock寫鎖仍處於鎖定狀態, 呼叫端務必於用畢後呼叫unlockWriteVisibleMapObjects()解鎖,否則造成死鎖。- Returns:
- 可見地圖物件集合(內部參照,非複本)
-
unlockWriteVisibleMapObjects
public void unlockWriteVisibleMapObjects()釋放getAndWriteLockVisibleMapObjects()取得的visibleMapObjectsLock寫鎖。 -
isAlive
public boolean isAlive()判斷此角色目前是否存活(HP 大於 0)。- Returns:
- 存活回傳
true,否則false
-
sendDestroyData
向指定客戶端送出「移除此角色」封包,使其自該玩家畫面消失。送出
CField.removePlayerFromMap(int)封包(封包傳送),並遞迴對所有分身 (clone)執行相同處理。龍/機器人/召喚獸的移除由客戶端自行處理,故此處不另送。- Specified by:
sendDestroyDatain classMapleMapObject- Parameters:
client- 接收移除封包的目標客戶端
-
sendSpawnData
向指定客戶端送出「生成此角色」所需的完整封包序列,使其出現在該玩家畫面。僅在對方玩家
allowedToTarget(this)為真時才送出(封包傳送)。內容包含 玩家本體生成封包、隊伍 HP 同步、所有已召喚寵物、分身、龍、機器人、召喚的精靈 (familiar)、一般召喚獸(於summonsLock讀鎖下遍歷)以及跟隨效果。- Specified by:
sendSpawnDatain classMapleMapObject- Parameters:
client- 接收生成封包的目標客戶端
-
equipChanged
public final void equipChanged()處理裝備變更後的連動更新。向同地圖廣播更新外觀封包(
CField.updateCharLook(MapleCharacter),地圖廣播),重新計算 本地屬性(stats.recalcLocalStats,狀態變更),並在角色身處聊天室時同步 聊天室顯示資訊。地圖為 null 時直接返回。 -
getPets
取得此角色所有寵物清單。委派至CharacterPetManager.getPets()。- Returns:
- 寵物
MaplePet清單
-
addPet
為此角色新增一隻寵物。委派至CharacterPetManager.addPet(MaplePet)。- Parameters:
pet- 要新增的MaplePet
-
removePet
自此角色移除一隻寵物。委派至CharacterPetManager.removePet(MaplePet)。- Parameters:
pet- 要移除的MaplePet
-
getSummonedPets
取得此角色目前已召喚(出戰)的寵物清單。委派至CharacterPetManager.getSummonedPets()。- Returns:
- 已召喚的
MaplePet清單
-
getSummonedPet
取得指定索引處已召喚的寵物。委派至CharacterPetManager.getSummonedPet(int)。- Parameters:
index- 召喚寵物索引- Returns:
- 對應的
MaplePet,無則可能為 null
-
getPetSlotNext
public final int getPetSlotNext()取得下一個可用的寵物出戰槽位。委派至CharacterPetManager.getPetSlotNext()。- Returns:
- 下一個寵物槽位索引
-
getPetIndex
取得指定寵物在出戰清單中的索引。委派至CharacterPetManager.getPetIndex(MaplePet)。- Parameters:
petz- 目標MaplePet- Returns:
- 寵物索引
-
getPetIndex
public final byte getPetIndex(int petId) 依寵物道具 ID 取得其在出戰清單中的索引。委派至CharacterPetManager.getPetIndex(int)。- Parameters:
petId- 寵物道具 ID- Returns:
- 寵物索引
-
getPetIndexById
public final byte getPetIndexById(int petId) 依寵物唯一 ID 取得其在出戰清單中的索引。委派至CharacterPetManager.getPetIndexById(int)。- Parameters:
petId- 寵物唯一 ID- Returns:
- 寵物索引
-
unequipAllPets
public final void unequipAllPets()取消此角色所有寵物的出戰。委派至CharacterPetManager.unequipAllPets()。 -
unequipPet
取消指定寵物的出戰。委派至CharacterPetManager.unequipPet(MaplePet, boolean)。- Parameters:
pet- 要收回的MaplePethunger- 是否因飢餓值而收回
-
getLastFameTime
public final long getLastFameTime()取得上次贈送人氣(fame)的時間戳記。- Returns:
- 上次贈送人氣的時間(毫秒)
-
getFamedCharacters
-
getBattledCharacters
-
canGiveFame
判斷此角色目前能否向指定對象贈送人氣(fame)。規則:24 小時內已贈送過則為
MapleCharacter.FameStatus.NOT_TODAY;對象為 null、本月名單 未載入或本月已對該對象贈送過則為MapleCharacter.FameStatus.NOT_THIS_MONTH;否則為MapleCharacter.FameStatus.OK。- Parameters:
from- 欲贈送人氣的目標角色(可為 null)- Returns:
- 對應的
MapleCharacter.FameStatus結果
-
hasGivenFame
記錄此角色已向指定對象贈送人氣的事實。更新上次贈送時間、將對象加入本月名單,並寫入
famelog資料表(DB 寫入)。 SQL 例外僅記錄於 log。- Parameters:
to- 已被贈送人氣的目標角色
-
canBattle
判斷此角色目前能否與指定對象進行對戰。對象為 null、本月對戰名單未載入,或本月已與該對象的帳號對戰過時回傳
false。- Parameters:
to- 欲對戰的目標角色(可為 null)- Returns:
- 可對戰回傳
true,否則false
-
hasBattled
記錄此角色已與指定對象對戰的事實。將對象帳號加入本月對戰名單,並寫入
battlelog資料表(DB 寫入)。SQL 例外僅記錄於 log。- Parameters:
to- 已對戰的目標角色
-
getKeyLayout
-
getParty
取得此角色所屬隊伍。委派至CharacterSocialManager.getParty()。- Returns:
- 所屬
MapleParty,未組隊時為 null
-
setParty
設定此角色所屬隊伍。委派至CharacterSocialManager.setParty(MapleParty)。- Parameters:
party- 要設定的MapleParty(可為 null 表示離隊)
-
getWorld
public byte getWorld()取得此角色所在的世界(World)編號。- Returns:
- 世界編號
-
setWorld
public void setWorld(byte world) 設定此角色所在的世界(World)編號。- Parameters:
world- 世界編號
-
getTrade
-
setTrade
設定此角色目前進行中的交易。- Parameters:
trade- 要設定的MapleTrade(可為 null 表示結束交易)
-
getEventInstance
取得此角色目前所在的活動實例(事件/組隊任務)。- Returns:
- 所在的
EventInstanceManager,不在任何活動中時為 null
-
setEventInstance
設定此角色目前所在的活動實例。- Parameters:
eventInstance- 要設定的EventInstanceManager(可為 null)
-
addDoor
-
clearDoors
public void clearDoors()清除此角色的所有傳送門(魔法門)。 -
getDoors
-
addMechDoor
-
clearMechDoors
public void clearMechDoors()清除此角色的所有機械門。 -
getMechDoors
-
setSmega
public void setSmega()切換此角色接收世界喇叭(super megaphone)訊息的開關,並提示目前狀態。切換後會向此角色送出狀態提示訊息(封包傳送)。
-
getSmega
public boolean getSmega()取得此角色是否接收世界喇叭訊息。- Returns:
- 接收則為
true,否則false
-
getSummonsReadLock
取得召喚獸清單並同時持有讀鎖,供呼叫端安全遍歷。注意:回傳時
summonsLock讀鎖仍處於鎖定狀態,呼叫端務必於用畢後 呼叫unlockSummonsReadLock()解鎖。- Returns:
- 召喚獸
MapleSummon清單(內部參照,非複本)
-
getSummonsSize
public int getSummonsSize()取得此角色目前的召喚獸數量。- Returns:
- 召喚獸數量
-
unlockSummonsReadLock
public void unlockSummonsReadLock()釋放getSummonsReadLock()取得的summonsLock讀鎖。 -
addSummon
新增一隻召喚獸至此角色。操作於
summonsLock寫鎖下進行。- Parameters:
s- 要新增的MapleSummon
-
removeSummon
自此角色移除一隻召喚獸。操作於
summonsLock寫鎖下進行。- Parameters:
s- 要移除的MapleSummon
-
getChair
public int getChair()取得此角色目前使用中的椅子 ID。- Returns:
- 椅子 ID(0 表示未坐下)
-
setChair
public void setChair(int chair) 設定此角色目前使用中的椅子,並重新觸發坐椅回復計算。- Parameters:
chair- 椅子 ID(0 表示起身)
-
getItemEffect
public int getItemEffect()取得此角色目前播放中的道具效果 ID。- Returns:
- 道具效果 ID
-
setItemEffect
public void setItemEffect(int itemEffect) 設定此角色目前播放中的道具效果 ID。- Parameters:
itemEffect- 道具效果 ID
-
getTitleEffect
public int getTitleEffect()取得此角色目前的稱號效果 ID。- Returns:
- 稱號效果 ID
-
setTitleEffect
public void setTitleEffect(int titleEffect) 設定此角色目前的稱號效果 ID。- Parameters:
titleEffect- 稱號效果 ID
-
getType
取得此地圖物件的型別,角色固定為MapleMapObjectType.PLAYER。- Specified by:
getTypein classMapleMapObject- Returns:
- 恆為
MapleMapObjectType.PLAYER
-
getFamilyId
-
getSeniorId
public int getSeniorId()取得此角色在家族中的師父(上線)角色 ID。委派至CharacterSocialManager.getSeniorId()。- Returns:
- 師父角色 ID
-
getJunior1
public int getJunior1()取得此角色在家族中的第一名徒弟(下線)角色 ID。委派至CharacterSocialManager.getJunior1()。- Returns:
- 第一名徒弟角色 ID
-
getJunior2
public int getJunior2()取得此角色在家族中的第二名徒弟(下線)角色 ID。委派至CharacterSocialManager.getJunior2()。- Returns:
- 第二名徒弟角色 ID
-
getCurrentRep
-
setCurrentRep
public void setCurrentRep(int _rank) 設定目前的家族聲望值。委派至CharacterSocialManager.setCurrentRep(int)。- Parameters:
_rank- 新的聲望值
-
getTotalRep
-
setTotalRep
public void setTotalRep(int _rank) 設定家族累計總聲望值。委派至CharacterSocialManager.setTotalRep(int)。- Parameters:
_rank- 新的累計總聲望值
-
getTotalWins
public int getTotalWins()取得 PVP 累計勝場數。- Returns:
- 總勝場數
-
getTotalLosses
public int getTotalLosses()取得 PVP 累計敗場數。- Returns:
- 總敗場數
-
increaseTotalWins
public void increaseTotalWins()將 PVP 累計勝場數加一。 -
increaseTotalLosses
public void increaseTotalLosses()將 PVP 累計敗場數加一。 -
getGuildId
public int getGuildId()取得所屬公會的 ID。委派至CharacterSocialManager.getGuildId()。- Returns:
- 公會 ID,未加入公會時為 0
-
setGuildId
public void setGuildId(int _id) 設定所屬公會的 ID。委派至CharacterSocialManager.setGuildId(int)。- Parameters:
_id- 新的公會 ID
-
getGuildRank
-
setGuildRank
public void setGuildRank(byte _rank) 設定在公會中的階級。委派至CharacterSocialManager.setGuildRank(byte)。- Parameters:
_rank- 新的公會階級
-
getGuildContribution
public int getGuildContribution()取得對公會的貢獻值。委派至CharacterSocialManager.getGuildContribution()。- Returns:
- 公會貢獻值
-
setGuildContribution
public void setGuildContribution(int _c) 設定對公會的貢獻值。委派至CharacterSocialManager.setGuildContribution(int)。- Parameters:
_c- 新的公會貢獻值
-
getMGC
取得此角色對應的公會成員資料物件。委派至CharacterSocialManager.getMGC()。- Returns:
MapleGuildCharacter,未加入公會時可能為null
-
getAllianceRank
-
setAllianceRank
public void setAllianceRank(byte rank) 設定在聯盟中的階級。委派至CharacterSocialManager.setAllianceRank(byte)。- Parameters:
rank- 新的聯盟階級
-
getGuild
取得所屬的公會物件。委派至CharacterSocialManager.getGuild()。- Returns:
MapleGuild,未加入公會時可能為null
-
guildUpdate
public void guildUpdate()將此角色的最新等級/職業等資訊同步給公會(向公會成員廣播更新)。委派至CharacterSocialManager.guildUpdate()。會對公會頻道發送封包,無公會時為無作用。
-
saveGuildStatus
public void saveGuildStatus()將此角色的公會狀態(公會 ID/階級/貢獻值)寫回資料庫。委派至CharacterSocialManager.saveGuildStatus()。有資料庫寫入的副作用。
-
familyUpdate
public void familyUpdate()將此角色的最新資訊同步給家族(向家族成員廣播更新)。委派至CharacterSocialManager.familyUpdate()。會對家族發送封包,無家族時為無作用。
-
saveFamilyStatus
public void saveFamilyStatus()將此角色的家族狀態寫回資料庫。委派至CharacterSocialManager.saveFamilyStatus()。有資料庫寫入的副作用。
-
modifyCSPoints
public void modifyCSPoints(int type, int quantity) 調整現金商城點數(不顯示提示訊息)。等同呼叫
modifyCSPoints(int, int, boolean)並將show設為false。- Parameters:
type- 點數類型:0=樂豆點數(acash),1=楓葉點數(maplepoints)quantity- 增減量,可為負值
-
modifyCSPoints
public void modifyCSPoints(int type, int quantity, boolean show) 調整現金商城點數,並可選擇是否在聊天視窗顯示增減提示。若調整後點數會變為負值,則放棄此次調整(視為已達上限/不足),必要時送出提示訊息後直接返回。 否則更新對應的點數欄位。當
show為true且quantity != 0時, 向玩家發送一則獲得/損失點數的訊息。- Parameters:
type- 點數類型:0=樂豆點數(acash),1=楓葉點數(maplepoints)quantity- 增減量,可為負值show- 是否在聊天視窗顯示增減提示
-
getCSPoints
public int getCSPoints(int type) 取得指定類型的現金商城點數餘額。- Parameters:
type- 點數類型:0=樂豆點數(acash),1=楓葉點數(maplepoints)- Returns:
- 對應類型的點數餘額;類型無效時回傳
0
-
setCData
public void setCData(int questid, int points) 將指定點數「累加」到某任務的自訂資料(customData)欄位上。若該任務記錄已有自訂資料,則解析為整數後加上
points再寫回; 首次設定時直接寫入points。會在必要時新增該任務記錄。- Parameters:
questid- 任務 IDpoints- 欲累加的點數
-
getCData
讀取指定角色某任務自訂資料(customData)欄位的整數值。- Parameters:
sai- 欲查詢的目標角色questid- 任務 ID- Returns:
- 自訂資料解析後的整數值;尚未設定時回傳
0
-
hasEquipped
public final boolean hasEquipped(int itemid) 判斷角色是否已穿戴指定道具。- Parameters:
itemid- 道具 ID- Returns:
- 已穿戴(在 EQUIPPED 欄位中至少有一件)時為
true
-
haveItem
public final boolean haveItem(int itemid, int quantity, boolean checkEquipped, boolean greaterOrEquals) 判斷角色背包中是否持有指定數量的道具。若角色目前正在與 NPC 對話(
getNpcNow() != 0),會額外做防外掛檢查: 數量小於等於 0、或道具代碼不存在時,記錄漏洞日誌、送出CWvsContext.enableActions()並回傳false。對EQUIP類道具,checkEquipped為真時會把已穿戴的件數一併計入。- Parameters:
itemid- 道具 IDquantity- 欲檢查的數量checkEquipped- EQUIP 類道具是否將已穿戴件數計入greaterOrEquals-true=持有量「大於等於」即通過;false=必須「剛好等於」- Returns:
- 符合條件時為
true
-
haveItem
public final boolean haveItem(int itemid, int quantity) 判斷角色是否持有「至少」指定數量的道具(含已穿戴件數)。等同
haveItem(int, int, boolean, boolean)並將後兩參數皆設為true。- Parameters:
itemid- 道具 IDquantity- 欲檢查的數量- Returns:
- 持有量大於等於
quantity時為true
-
haveItem
public final boolean haveItem(int itemid) 判斷角色是否持有指定道具(至少一件,含已穿戴件數)。等同
haveItem(int, int, boolean, boolean)並以數量1、後兩參數皆true呼叫。- Parameters:
itemid- 道具 ID- Returns:
- 至少持有一件時為
true
-
dropNPC
以預設 NPC(9010000)的口吻向此角色發送一段對話訊息。向自身 client 送出
NPCPacket.getNPCTalk(int, byte, String, String, byte)封包。- Parameters:
message- 要顯示的訊息文字
-
dropNPC
以指定 NPC 的口吻向此角色發送一段對話訊息。向自身 client 送出
NPCPacket.getNPCTalk(int, byte, String, String, byte)封包。- Parameters:
npc- 發話的 NPC IDmessage- 要顯示的訊息文字
-
changeSkillLevel
變更單一技能的等級與精通等級(不設過期時間)。將該技能包裝為單筆
SkillEntry(過期時間與到期等級為 -1), 透過changeSkillLevel_Skip(Map, boolean)寫入(write為true,會持久化)。- Parameters:
skill- 欲變更的技能newLevel- 新的技能等級newMasterlevel- 新的精通(master)等級
-
getDebugMessage
public boolean getDebugMessage()取得是否開啟一般除錯訊息。- Returns:
- 已開啟時為
true
-
setDebugMessage
public void setDebugMessage(boolean control) 設定是否開啟一般除錯訊息。- Parameters:
control-true開啟、false關閉
-
getHackMessage
public boolean getHackMessage()取得是否開啟外掛偵測訊息。- Returns:
- 已開啟時為
true
-
setHackMessage
public void setHackMessage(boolean control) 設定是否開啟外掛偵測訊息。- Parameters:
control-true開啟、false關閉
-
getWalkDebugMessage
public boolean getWalkDebugMessage()取得是否開啟移動(walk)除錯訊息。- Returns:
- 已開啟時為
true
-
setWalkDebugMessage
public void setWalkDebugMessage(boolean x) 設定是否開啟移動(walk)除錯訊息。- Parameters:
x-true開啟、false關閉
-
getAttackDebugMessage
public boolean getAttackDebugMessage()取得是否開啟攻擊(attack)除錯訊息。- Returns:
- 已開啟時為
true
-
setAttackDebugMessage
public void setAttackDebugMessage(boolean x) 設定是否開啟攻擊(attack)除錯訊息。- Parameters:
x-true開啟、false關閉
-
isCygnus
public boolean isCygnus()判斷角色是否為皇家騎士團(Cygnus)職業。- Returns:
- 職業 ID 落在 1000–1512 區間時為
true
-
isKOC
public boolean isKOC()判斷角色是否屬於騎士團(Knights of Cygnus)職業群。- Returns:
- 職業 ID 落在 1000–1999 區間時為
true
-
isAdventurer
public boolean isAdventurer()判斷角色是否為冒險家(Adventurer)職業。- Returns:
- 職業 ID 落在 0–999 區間時為
true
-
isAran
public boolean isAran()判斷角色是否為戰神(Aran)職業。- Returns:
- 職業 ID 為 2000 或落在 2100–2112 區間時為
true
-
isPirate
public boolean isPirate()判斷角色是否為海盜(Pirate)系職業,含冒險家海盜與皇家騎士團的暴風使者。- Returns:
- 職業 ID 落在 500–522 或 1500–1512 區間時為
true
-
isThief
public boolean isThief()判斷角色是否為盜賊(Thief)系職業,含冒險家盜賊與皇家騎士團的夜行者。- Returns:
- 職業 ID 落在 400–422 或 1400–1412 區間時為
true
-
isBowman
public boolean isBowman()判斷角色是否為弓箭手(Bowman)系職業,含冒險家、皇家騎士團與覺醒者的弓系職業。- Returns:
- 職業 ID 落在 300–322、1300–1312 或 3300–3312 區間時為
true
-
isMage
public boolean isMage()判斷角色是否為法師(Mage)系職業,含冒險家、皇家騎士團、覺醒者與 22xx 系列法師。- Returns:
- 職業 ID 落在 200–232、1200–1212、3200–3212,或百位為 22 時為
true
-
isWarrior
public boolean isWarrior()判斷角色是否為劍士(Warrior)系職業,含冒險家、皇家騎士團與戰神的近戰職業。- Returns:
- 職業 ID 落在 100–132、1100–1112 或 2100–2112 區間時為
true
-
getAllLinksummon
取得此角色所有連結召喚獸(link summon)的清單。- Returns:
- 連結召喚獸清單(回傳內部清單本身)
-
addLinksummon
-
removeLinksummon
從此角色的清單中移除指定的連結召喚獸。清單為空時不做任何事。
- Parameters:
x- 要移除的MapleSummon
-
getBuddyCapacity
public byte getBuddyCapacity()取得好友名單的容量上限。委派至CharacterSocialManager.getBuddyCapacity()。- Returns:
- 好友名單容量
-
setBuddyCapacity
public void setBuddyCapacity(byte capacity) 設定好友名單的容量上限。委派至CharacterSocialManager.setBuddyCapacity(byte)。- Parameters:
capacity- 新的好友名單容量
-
getMessenger
取得此角色目前所在的聊天室(messenger)。委派至CharacterSocialManager.getMessenger()。- Returns:
MapleMessenger,未加入聊天室時可能為null
-
setMessenger
設定此角色目前所在的聊天室(messenger)。委派至CharacterSocialManager.setMessenger(MapleMessenger)。- Parameters:
messenger- 新的聊天室,可為null表示離開
-
addCooldown
public void addCooldown(int skillId, long startTime, long length) 為指定技能加入冷卻時間。委派至CharacterCooldownDiseaseManager.addCooldown(int, long, long)。- Parameters:
skillId- 技能 IDstartTime- 冷卻起算時間(毫秒)length- 冷卻持續時間(毫秒)
-
removeCooldown
public void removeCooldown(int skillId) 移除指定技能的冷卻時間。委派至CharacterCooldownDiseaseManager.removeCooldown(int)。- Parameters:
skillId- 技能 ID
-
skillisCooling
public boolean skillisCooling(int skillId) 判斷指定技能是否正在冷卻中。委派至CharacterCooldownDiseaseManager.skillisCooling(int)。- Parameters:
skillId- 技能 ID- Returns:
- 冷卻中時為
true
-
giveCoolDowns
public void giveCoolDowns(int skillid, long starttime, long length) 賦予指定技能冷卻並送出對應封包。委派至CharacterCooldownDiseaseManager.giveCoolDowns(int, long, long)。- Parameters:
skillid- 技能 IDstarttime- 冷卻起算時間(毫秒)length- 冷卻持續時間(毫秒)
-
giveCoolDowns
由冷卻資料清單批次還原技能冷卻(多用於登入時還原)。委派至CharacterCooldownDiseaseManager.giveCoolDowns(List)。- Parameters:
cooldowns- 冷卻資料清單
-
getCooldownSize
public int getCooldownSize()取得目前處於冷卻中的技能數量。委派至CharacterCooldownDiseaseManager.getCooldownSize()。- Returns:
- 冷卻中的技能數量
-
getcheck_FishingVip
public boolean getcheck_FishingVip()取得釣魚 VIP 狀態旗標。- Returns:
- 具備釣魚 VIP 時為
true
-
setcheck_FishingVip
public void setcheck_FishingVip(boolean x) 設定釣魚 VIP 狀態旗標。- Parameters:
x-true表示具備釣魚 VIP
-
getDiseaseSize
public int getDiseaseSize()取得目前生效中的異常狀態(debuff)數量。委派至CharacterCooldownDiseaseManager.getDiseaseSize()。- Returns:
- 異常狀態的數量
-
getCooldowns
取得目前所有技能冷卻的持有資料清單。委派至CharacterCooldownDiseaseManager.getCooldowns()。- Returns:
- 冷卻資料持有物件的清單
-
getAllDiseases
取得目前所有異常狀態(debuff)的持有資料清單。委派至CharacterCooldownDiseaseManager.getAllDiseases()。- Returns:
- 異常狀態資料持有物件的清單
-
hasDisease
判斷本角色是否正受指定異常狀態影響。委派至CharacterCooldownDiseaseManager.hasDisease(MapleDisease)。- Parameters:
dis- 要查詢的異常狀態- Returns:
- 若該異常狀態生效中則為
true
-
giveDebuff
依怪物技能對本角色施加異常狀態(debuff)。委派至CharacterCooldownDiseaseManager.giveDebuff(MapleDisease, MobSkill)。- Parameters:
disease- 要施加的異常狀態skill- 造成此異常狀態的怪物技能
-
giveDebuff
以明確參數對本角色施加異常狀態(debuff)。委派至CharacterCooldownDiseaseManager.giveDebuff(MapleDisease, MobSkill)。- Parameters:
disease- 要施加的異常狀態x- 異常狀態的效果數值duration- 持續時間(毫秒)skillid- 造成此異常狀態的技能編號level- 技能等級
-
giveSilentDebuff
靜默地(不發送特效封包)還原一批異常狀態,通常用於換頻或重新登入時重建狀態。委派至CharacterCooldownDiseaseManager.giveSilentDebuff(List)。- Parameters:
ld- 要還原的異常狀態資料清單
-
dispelDebuff
解除指定的單一異常狀態(debuff)。委派至CharacterCooldownDiseaseManager.dispelDebuff(MapleDisease)。- Parameters:
debuff- 要解除的異常狀態
-
dispelDebuffs
public void dispelDebuffs()解除所有可解除的異常狀態(debuff)。委派至CharacterCooldownDiseaseManager.dispelDebuffs()。 -
cancelAllDebuffs
public void cancelAllDebuffs()取消本角色身上所有的異常狀態(debuff),不論是否原本可解除。委派至CharacterCooldownDiseaseManager.cancelAllDebuffs()。 -
sendNote
以本角色名義寄送一封不含名聲贈禮的便箋給指定收件者。委派至
sendNote(String, String, int),名聲值固定為0。- Parameters:
to- 收件者角色名稱msg- 便箋內容
-
sendNote
以本角色名義寄送一封便箋給指定收件者,並可附帶名聲贈禮。委派至
MapleCharacterUtil.sendNote(String, String, String, int),寄件者為本角色名稱。便箋會寫入資料庫notes資料表。- Parameters:
to- 收件者角色名稱msg- 便箋內容fame- 隨便箋附贈的名聲值
-
showNote
public void showNote()查詢資料庫中寄給本角色的所有便箋,並將便箋列表封包傳送給本角色用戶端。讀取
notes資料表(依收件者名稱),統計筆數後送出MTSCSPacket.showNotes(ResultSet, int)。 發生SQLException時僅記錄錯誤、不向上拋出。 -
deleteNote
public void deleteNote(int id, int fame) 刪除指定的便箋;若該便箋附有名聲贈禮且金額相符,則同時為本角色加上名聲。先查詢
notes資料表確認贈禮金額,符合(且fame > 0)時呼叫addFame(int)、updateSingleStat(MapleStat, int)並送出InfoPacket.getShowFameGain(int), 接著從資料表刪除該便箋。發生SQLException時僅記錄錯誤、不向上拋出。- Parameters:
id- 便箋的資料庫主鍵fame- 用戶端宣告的贈禮名聲值,須與資料庫紀錄相符才會發放(防止外掛)
-
getDojoMode
-
setDojoMode
設定本角色目前的武陵道場挑戰模式。- Parameters:
mode- 要設定的MapleCharacter.DojoMode
-
getDojoMode
依整數代碼查詢對應的武陵道場挑戰模式。- Parameters:
mode- 模式代碼(簡單=0、普通=1、困難=2、排名=3、無=4)- Returns:
- 對應的
MapleCharacter.DojoMode;若無相符者則回傳null
-
getMulungEnergy
public int getMulungEnergy()取得本角色目前的武陵道場能量值。- Returns:
- 武陵道場能量值(0–10000)
-
mulung_EnergyModify
public void mulung_EnergyModify(boolean inc) 調整本角色的武陵道場能量值,並即時將新數值以封包傳送給用戶端。增加時每次 +100、上限封頂於 10000;非增加時直接歸零。隨後送出
CWvsContext.MulungEnergy(int)。- Parameters:
inc-true表示增加能量,false表示歸零
-
writeMulungEnergy
public void writeMulungEnergy()將本角色目前的武陵道場能量值以封包重新傳送給用戶端(不更動數值)。 -
writeEnergy
向用戶端傳送金字塔(PQ)能量更新封包。- Parameters:
type- 能量類型字串inc- 能量增減字串
-
writeStatus
向用戶端傳送幽靈船(Ghost)狀態更新封包。- Parameters:
type- 狀態類型字串inc- 狀態增減字串
-
writePoint
向用戶端傳送幽靈船(Ghost)分數更新封包。- Parameters:
type- 分數類型字串inc- 分數增減字串
-
getCombo
public final short getCombo()取得本角色目前的連擊(Combo)計數。- Returns:
- 連擊計數
-
setCombo
public void setCombo(short combo) 設定本角色目前的連擊(Combo)計數。- Parameters:
combo- 要設定的連擊計數
-
getLastCombo
public final long getLastCombo()取得上次連擊的時間戳記。- Returns:
- 上次連擊的時間(毫秒)
-
setLastCombo
public void setLastCombo(long combo) 設定上次連擊的時間戳記。- Parameters:
combo- 上次連擊的時間(毫秒)
-
getKeyDownSkill_Time
public final long getKeyDownSkill_Time()取得上次施放長按蓄力技能的時間戳記。- Returns:
- 長按技能的時間(毫秒)
-
setKeyDownSkill_Time
public void setKeyDownSkill_Time(long keydown_skill) 設定上次施放長按蓄力技能的時間戳記。- Parameters:
keydown_skill- 長按技能的時間(毫秒)
-
checkBerserk
public void checkBerserk()檢查並更新狂戰士「狂暴(Berserk)」被動的觸發狀態。僅對職業 132(英雄/狂戰士)生效,且距上次觸發須超過 10 秒。依目前 HP 是否低於技能門檻 決定
stats.Berserk,並向本角色與同地圖玩家廣播狂暴特效封包 (EffectPacket.showOwnBuffEffect(int, int, int, int)/EffectPacket.showBuffeffect(int, int, int, int, int))。 此被動不使用 WorldTimer,而是於攻擊時被動檢查。 -
getChalkboard
-
setChalkboard
設定本角色的黑板(小黑板)文字內容,並向同地圖玩家廣播。若
ServerConstants.log_chalkboard啟用,會將使用紀錄寫入記錄檔; 隨後向同地圖玩家廣播MTSCSPacket.useChalkboard(int, String)。傳入null或空字串通常代表收起黑板。- Parameters:
text- 要顯示的黑板文字,可為null
-
getMount
-
getWishlist
public int[] getWishlist()取得本角色的商城願望清單(固定長度 10 的道具編號陣列)。- Returns:
- 願望清單陣列
-
setWishlist
public void setWishlist(int[] wl) 設定本角色的商城願望清單,並標記為需存檔。- Parameters:
wl- 新的願望清單陣列
-
clearWishlist
public void clearWishlist()清空本角色的商城願望清單(10 個欄位皆歸零),並標記為需存檔。 -
getWishlistSize
public int getWishlistSize()計算願望清單中已填入的道具數量。- Returns:
- 願望清單中大於 0 的項目數
-
getRocks
public int[] getRocks()取得本角色的城市傳送石(Teleport Rock)地圖清單(固定長度 10 的地圖編號陣列)。- Returns:
- 傳送石地圖編號陣列;未使用的欄位以
999999999表示
-
getRockSize
public int getRockSize()計算城市傳送石中已登錄的地圖數量。- Returns:
- 已登錄的地圖數(陣列中不等於
999999999的項目數)
-
deleteFromRocks
public void deleteFromRocks(int map) 從城市傳送石中移除指定地圖(找到第一個相符即停止),並標記為需存檔。- Parameters:
map- 要移除的地圖編號
-
addRockMap
public void addRockMap()將本角色目前所在地圖加入城市傳送石清單,並標記為需存檔。若清單已滿(10 個)則不做任何事。
-
isRockMap
public boolean isRockMap(int id) 判斷指定地圖是否已登錄於城市傳送石清單中。- Parameters:
id- 要查詢的地圖編號- Returns:
- 若已登錄則為
true
-
getRegRocks
public int[] getRegRocks()取得本角色的特殊(記憶)傳送石地圖清單(固定長度 5 的地圖編號陣列)。- Returns:
- 特殊傳送石地圖編號陣列;未使用的欄位以
999999999表示
-
getRegRockSize
public int getRegRockSize()計算特殊(記憶)傳送石中已登錄的地圖數量。- Returns:
- 已登錄的地圖數(陣列中不等於
999999999的項目數)
-
deleteFromRegRocks
public void deleteFromRegRocks(int map) 從特殊(記憶)傳送石中移除指定地圖(找到第一個相符即停止),並標記為需存檔。- Parameters:
map- 要移除的地圖編號
-
addRegRockMap
public void addRegRockMap()將本角色目前所在地圖加入特殊(記憶)傳送石清單,並標記為需存檔。若清單已滿(5 個)則不做任何事。
-
isRegRockMap
public boolean isRegRockMap(int id) 判斷指定地圖是否已登錄於特殊(記憶)傳送石清單中。- Parameters:
id- 要查詢的地圖編號- Returns:
- 若已登錄則為
true
-
getHyperRocks
public int[] getHyperRocks()取得本角色的高級(VIP)傳送石地圖清單(固定長度 13 的地圖編號陣列)。- Returns:
- 高級傳送石地圖編號陣列;未使用的欄位以
999999999表示
-
getHyperRockSize
public int getHyperRockSize()計算高級(VIP)傳送石中已登錄的地圖數量。- Returns:
- 已登錄的地圖數(陣列中不等於
999999999的項目數)
-
deleteFromHyperRocks
public void deleteFromHyperRocks(int map) 從高級(VIP)傳送石中移除指定地圖(找到第一個相符即停止),並標記為需存檔。- Parameters:
map- 要移除的地圖編號
-
addHyperRockMap
public void addHyperRockMap()將本角色目前所在地圖加入高級(VIP)傳送石清單,並標記為需存檔。滿載檢查目前沿用
getRegRockSize()(須 < 13);通過後寫入getHyperRockSize()指向的空欄位。 -
isHyperRockMap
public boolean isHyperRockMap(int id) 判斷指定地圖是否已登錄於高級(VIP)傳送石清單中。- Parameters:
id- 要查詢的地圖編號- Returns:
- 若已登錄則為
true
-
getLastRes
取得本角色最後一次的移動軌跡片段清單(用於同步移動)。- Returns:
- 最後的移動片段清單,可能為
null
-
setLastRes
設定本角色最後一次的移動軌跡片段清單。- Parameters:
lastres- 要儲存的移動片段清單
-
dropDebugMessage
僅在本角色已開啟除錯訊息時,以系統訊息(type 6)向其用戶端輸出除錯文字。是否輸出取決於
getDebugMessage()。- Parameters:
msg- 要顯示的除錯訊息
-
dropMessage
以預設的系統訊息類型(type 6)向本角色用戶端輸出一則文字訊息。- Parameters:
message- 要顯示的訊息文字
-
dropMessage
依指定類型向本角色用戶端輸出一則訊息封包。負值對應特殊顯示通道:-1 畫面上方訊息、-2 商店聊天、-3/-4 一般聊天框(顯示/隱藏)、 -5/-6 系統公告(粉紅/白底)、-7/-8 畫面中央訊息;其餘(正值)則作為 serverNotice 的訊息類型。
- Parameters:
type- 訊息類型;負值對應上述特殊通道,其餘透過CWvsContext.serverNotice(int, String)送出message- 要顯示的訊息文字
-
showInfo
-
getPlayerShop
-
setPlayerShop
設定本角色目前開設或互動中的玩家商店/交易室物件。- Parameters:
playerShop- 玩家商店物件,可為null表示離開
-
getConversation
public int getConversation()取得本角色目前正在對話的 NPC 對話實例編號。- Returns:
- 對話實例編號(0 表示無對話進行中)
-
setConversation
public void setConversation(int inst) 設定本角色目前正在對話的 NPC 對話實例編號。- Parameters:
inst- 對話實例編號(0 表示清除對話狀態)
-
getDirection
public int getDirection()取得本角色的對話方向狀態值。- Returns:
- 方向狀態值
-
setDirection
public void setDirection(int inst) 設定本角色的對話方向狀態值。- Parameters:
inst- 方向狀態值
-
getCarnivalParty
-
setCarnivalParty
設定本角色所屬的怪物嘉年華隊伍。- Parameters:
party- 嘉年華隊伍物件,可為null表示離開隊伍
-
addCP
public void addCP(int ammount) 增加嘉年華點數(CP)。同時累加總點數與可用點數。
- Parameters:
ammount- 要增加的點數
-
useCP
public void useCP(int ammount) 消耗指定數量的可用嘉年華點數(CP)。- Parameters:
ammount- 要消耗的點數
-
getAvailableCP
public int getAvailableCP()取得目前可用的嘉年華點數(CP)。- Returns:
- 可用 CP
-
getTotalCP
public int getTotalCP()取得累計獲得的嘉年華總點數(CP)。- Returns:
- 總 CP
-
resetCP
public void resetCP()重設嘉年華點數,將總點數與可用點數歸零。 -
reloadC
public void reloadC()重新整理角色在當前地圖的顯示資料。先向自身連線送出角色資訊封包,再將玩家自地圖移除後重新加入, 以刷新其他玩家對本角色的可見狀態。
-
addCarnivalRequest
新增一筆怪物嘉年華挑戰請求至待處理佇列。- Parameters:
request- 嘉年華挑戰請求
-
getNextCarnivalRequest
取出並移除下一筆待處理的嘉年華挑戰請求。- Returns:
- 佇列尾端的挑戰請求;若佇列為空則回傳
null
-
clearCarnivalRequests
public void clearCarnivalRequests()清空所有待處理的嘉年華挑戰請求。 -
startMonsterCarnival
public void startMonsterCarnival(int enemyavailable, int enemytotal) 向自身連線送出開始怪物嘉年華的封包。- Parameters:
enemyavailable- 敵方可用怪物數enemytotal- 敵方怪物總數
-
CPUpdate
public void CPUpdate(boolean party, int available, int total, int team) 向自身連線送出嘉年華點數(CP)更新封包。- Parameters:
party- 是否為隊伍層級的更新available- 可用 CPtotal- 總 CPteam- 隊伍編號
-
playerDiedCPQ
向自身連線送出嘉年華玩家陣亡(扣除 CP)的提示封包。- Parameters:
name- 陣亡玩家名稱lostCP- 損失的 CPteam- 隊伍編號
-
setAchievementFinished
public void setAchievementFinished(int id) 將指定成就標記為已完成。若該成就尚未記錄,會加入已完成清單並設定變更旗標以待存檔; 此方法僅更新狀態,不發送完成獎勵或封包。
- Parameters:
id- 成就 ID
-
achievementFinished
public boolean achievementFinished(int achievementid) 查詢指定成就是否已完成。- Parameters:
achievementid- 成就 ID- Returns:
- 已完成回傳
true
-
finishAchievement
public void finishAchievement(int id) 完成指定成就並發放對應獎勵。僅在成就尚未完成、角色存活且非分身時,委派
MapleAchievements執行完成流程(可能發放獎勵、送出封包)。- Parameters:
id- 成就 ID
-
getFinishedAchievements
-
getCanTalk
public boolean getCanTalk()查詢本角色目前是否允許交談(與 NPC/聊天互動)。- Returns:
- 允許交談回傳
true
-
canTalk
public void canTalk(boolean talk) 設定本角色是否允許交談。- Parameters:
talk-true允許交談、false禁止
-
getEXPMod
public double getEXPMod()取得本角色的經驗值加成倍率。- Returns:
- 經驗加成倍率
-
getDropMod
public int getDropMod()取得本角色的掉寶率加成。- Returns:
- 掉寶率加成
-
getCashMod
public int getCashMod()取得本角色的商城點數加成。- Returns:
- 商城點數加成
-
getPoints
public int getPoints()取得本角色帳號的點數(自資料庫讀取)。- Returns:
- 帳號點數
- See Also:
-
setPoints
public void setPoints(int p) 將指定點數寫入本角色帳號(更新accounts.points資料表欄位)。有副作用:直接執行 DB 更新;連線或執行失敗時僅記錄錯誤而不拋出例外。
- Parameters:
p- 要寫入的點數值
-
getPoints
讀取指定角色帳號的點數(自accounts.points資料表欄位查詢)。有副作用:執行 DB 查詢。內含重試機制——讀取失敗時最多重試 10 次, 每次間隔 500 毫秒(重試期間會
Thread.sleep阻塞當前執行緒); 查詢或連線失敗時僅記錄錯誤而不拋出例外。- Parameters:
chr- 要查詢點數的角色- Returns:
- 帳號點數;多次重試後仍失敗則回傳 0
-
getVPoints
public int getVPoints()取得本角色的 V 點(投票點數)。- Returns:
- V 點數
-
setVPoints
public void setVPoints(int p) 設定本角色的 V 點(投票點數)。- Parameters:
p- V 點數
-
getCashInventory
-
removeItem
public void removeItem(int id, int quantity) 自背包移除指定數量的道具,並送出物品變動提示封包。有副作用:透過
MapleInventoryManipulator.removeById(MapleClient, MapleInventoryType, int, int, boolean, boolean)變更背包狀態, 並向自身連線送出物品獲得(負數量)提示。- Parameters:
id- 道具 IDquantity- 要移除的數量
-
removeAll
public void removeAll(int id) 移除背包中所有指定 ID 的道具(不顯示提示)。- Parameters:
id- 道具 ID- See Also:
-
removeAll
public void removeAll(int id, boolean show) 移除背包中所有指定 ID 的道具。- Parameters:
id- 道具 IDshow- 是否顯示移除提示- See Also:
-
removeAll
public void removeAll(int id, boolean show, boolean equip) 移除背包中所有指定 ID 的道具,並選擇性顯示移除提示。有副作用:依據道具 ID 推斷的背包類型,透過
MapleInventoryManipulator.removeById(MapleClient, MapleInventoryType, int, int, boolean, boolean)移除全部持有數量; 當show為true且確有移除時向自身連線送出提示封包。- Parameters:
id- 道具 IDshow- 是否顯示移除提示equip- 是否一併處理裝備(保留參數)
-
getRings
蒐集本角色身上的戒指,依類型分組並排序回傳。掃描已裝備(
MapleInventoryType.EQUIPPED)的裝備,找出帶有戒指的項目, 依情侶戒(crush)/友情戒(friendship)/婚戒(marriage)分為三類; 當equip為true時額外納入背包(MapleInventoryType.EQUIP)中的戒指, 否則每類僅取首枚。各類清單以MapleRing.RingComparator排序。- Parameters:
equip-true含背包內戒指(並標記裝備狀態);false僅取已裝備且每類首枚- Returns:
- 三元組,依序為情侶戒、友情戒、婚戒清單
-
getFH
public int getFH()取得本角色目前所在位置正下方的腳架(foothold)ID。- Returns:
- 正下方腳架的 ID;若該處無腳架則回傳 0
-
startFairySchedule
public void startFairySchedule(boolean exp) 啟動精靈吊墜的每小時加成排程。- Parameters:
exp- 是否同時重設累積的精靈經驗加成- See Also:
-
startFairySchedule
public void startFairySchedule(boolean exp, boolean equipped) 啟動精靈吊墜的每小時加成排程。視情況先取消既有排程並重設加成;若目前加成為零則以裝備的精靈值初始化, 並在尚未達上限(裝備值的 3 倍)時向自身送出提示訊息,最後更新計時起點。
- Parameters:
exp- 是否重設精靈經驗加成(未裝備精靈時亦會重設)equipped- 是否因裝備精靈而觸發,用於決定是否顯示提示訊息
-
canFairy
public final boolean canFairy(long now) 判斷精靈吊墜的每小時加成是否到期可再次觸發(僅讀取,不更新狀態)。- Parameters:
now- 目前時間(毫秒)- Returns:
- 距上次觸發已滿一小時則回傳
true
-
canHP
public final boolean canHP(long now) 判斷距上次 HP 計時是否已逾 5 秒;若是則更新計時並回傳允許。有副作用:通過時會將 HP 計時更新為
now。- Parameters:
now- 目前時間(毫秒)- Returns:
- 允許回傳
true
-
canMP
public final boolean canMP(long now) 判斷距上次 MP 計時是否已逾 5 秒;若是則更新計時並回傳允許。有副作用:通過時會將 MP 計時更新為
now。- Parameters:
now- 目前時間(毫秒)- Returns:
- 允許回傳
true
-
canHPRecover
public final boolean canHPRecover(long now) 判斷是否到達 HP 自動回復間隔;若是則更新計時並回傳允許。依角色的 HP 回復間隔(
stats.hpRecoverTime)判定;有副作用: 通過時會將 HP 計時更新為now。- Parameters:
now- 目前時間(毫秒)- Returns:
- 可回復回傳
true
-
canMPRecover
public final boolean canMPRecover(long now) 判斷是否到達 MP 自動回復間隔;若是則更新計時並回傳允許。依角色的 MP 回復間隔(
stats.mpRecoverTime)判定;有副作用: 通過時會將 MP 計時更新為now。- Parameters:
now- 目前時間(毫秒)- Returns:
- 可回復回傳
true
-
canTrade
public final boolean canTrade()交易頻率閘門:更新最後交易時間並回傳是否允許交易。有副作用:每次呼叫都會將最後交易時間更新為目前時間。目前的 500 毫秒間隔限制已被註解停用,故恆回傳
true。- Returns:
- 恆為
true
-
cancelFairySchedule
public void cancelFairySchedule(boolean exp) 取消精靈吊墜的加成排程。- Parameters:
exp-true時一併將累積的精靈經驗加成歸零
-
doFairy
public void doFairy()執行精靈吊墜每小時觸發效果。有多重副作用:在未達上限時提升精靈經驗加成並提示玩家;若有公會則為公會增加 公會點數(GP)並送出貢獻封包;提升意志(will)特性經驗;最後重新啟動精靈排程。
-
getFairyExp
public byte getFairyExp()取得目前累積的精靈吊墜經驗加成百分比。- Returns:
- 精靈經驗加成
-
getTeam
public int getTeam()取得本角色所屬的隊伍編號(用於椰子大賽等活動)。- Returns:
- 隊伍編號
-
setTeam
public void setTeam(int v) 設定本角色所屬的隊伍編號(用於椰子大賽等活動)。- Parameters:
v- 隊伍編號
-
spawnPet
public void spawnPet(byte slot) 召喚指定欄位的寵物。- Parameters:
slot- 寵物欄位索引
-
spawnPet
public void spawnPet(byte slot, boolean lead) 召喚指定欄位的寵物,並指定是否設為領隊寵物。- Parameters:
slot- 寵物欄位索引lead- 是否設為領隊寵物
-
spawnPet
public void spawnPet(byte slot, boolean lead, boolean broadcast) 召喚指定欄位的寵物,並指定領隊與是否向地圖廣播。- Parameters:
slot- 寵物欄位索引lead- 是否設為領隊寵物broadcast- 是否向地圖廣播召喚
-
clearLinkMid
public void clearLinkMid()清空連結怪物(link monster)清單並取消相關 buff。有副作用:移除導引飛彈(HOMING_BEACON)與秘法瞄準(ARCANE_AIM)兩項 buff 效果。
-
getFirstLinkMid
public int getFirstLinkMid()取得連結怪物清單中的第一個怪物 ID。- Returns:
- 第一個連結怪物 ID;清單為空則回傳 0
-
getAllLinkMid
-
setLinkMid
public void setLinkMid(int lm, int x) 設定(或更新)某連結怪物對應的傷害增幅。- Parameters:
lm- 連結怪物 IDx- 傷害增幅值
-
getDamageIncrease
public int getDamageIncrease(int lm) 取得指定連結怪物對應的傷害增幅。- Parameters:
lm- 連結怪物 ID- Returns:
- 該怪物的傷害增幅;無對應則回傳 0
-
isClone
public boolean isClone()判斷本角色物件是否為分身(clone)。- Returns:
- 為分身回傳
true
-
setClone
public void setClone(boolean c) 設定本角色物件是否為分身(clone)。- Parameters:
c-true標記為分身
-
getClones
-
cloneLooks
建立一個複製本角色外觀的分身角色物件。使用模擬連線(
MockIOSession)與隨機產生的唯一 ID 建立新的MapleCharacter,複製外觀、等級、職業、公會/聲望資訊與已裝備道具等狀態, 經驗/楓幣/能力點等則歸零並標記為分身。會持續遞增 ID 直到在當前地圖與頻道玩家儲存中 都不重複,最後將分身綁定回其模擬連線。- Returns:
- 新建立的分身角色物件
-
cloneLook
public final void cloneLook()在地圖上生成一個複製本角色外觀的分身並登記至分身陣列。若本身已是分身或處於 PVP 則不執行。有副作用:建立分身(見
cloneLooks())、 將其加入當前地圖、向地圖廣播外觀更新並移動至本角色位置,並佔用分身陣列的首個空槽。 -
disposeClones
public final void disposeClones()清除本角色的所有分身並釋放相關資源。有副作用:將每個存活分身自地圖移除、解除其與連線的關聯,並把分身陣列各槽 重設為空弱參考。
-
getCloneSize
public final int getCloneSize()計算目前存活(弱參考未被回收)的分身數量。- Returns:
- 存活分身數
-
spawnClones
public void spawnClones()依據設定的分身數量在地圖上生成對應數量的分身。有副作用:非 GM 時依角色是否具備分身能力(
stats.hasClone)重設待生成數, 接著逐一呼叫cloneLook()生成分身,最後將計數歸零。 -
getNumClones
public byte getNumClones()取得目前待生成或記錄的分身數量。- Returns:
- 分身數量
-
getExtractor
-
setExtractor
設定本角色的怪物抽取器。有副作用:會先移除既有抽取器(見
removeExtractor())再設定新的。- Parameters:
me- 新的抽取器物件
-
removeExtractor
public void removeExtractor()移除本角色目前擺放的怪物抽取器。有副作用:若存在抽取器,會向地圖廣播移除封包、自地圖物件移除該抽取器,並清空參考。
-
spawnSavedPets
public final void spawnSavedPets()重新生成先前存檔的寵物。 -
getPetStores
public final byte[] getPetStores()取得各寵物欄位的存放狀態位元組陣列。- Returns:
- 寵物欄位存放狀態的位元組陣列
-
resetStats
public void resetStats(int str, int dex, int int_, int luk) 將四項基本能力值重設為指定數值,並把多出的點數退回剩餘 AP。會以 STR/DEX/INT/LUK 之原值加上現有剩餘 AP 計算總點數,扣除新設定的四項數值後將餘額設為剩餘 AP, 接著重算本地能力值並向自身客戶端送出能力更新封包(
CWvsContext.updatePlayerStats(Map, MapleCharacter))。- Parameters:
str- 重設後的力量dex- 重設後的敏捷int_- 重設後的智力luk- 重設後的幸運
-
getPyramidSubway
-
setPyramidSubway
設定角色所屬的金字塔/地鐵活動實例。- Parameters:
ps- 活動實例,可為null以清除
-
getSubcategory
public byte getSubcategory()取得角色的職業子類別代碼(用於客戶端職業細分)。依目前職業推導:弩槍手系(430–434)回傳 1、加農砲手或新手回傳 2、其他已轉職者回傳 0, 僅未轉職的特殊狀態回傳實際儲存的
subcategory欄位值。- Returns:
- 職業子類別代碼
-
setSubcategory
public void setSubcategory(int z) 設定角色的職業子類別代碼。- Parameters:
z- 子類別代碼(將被轉型為byte儲存)
-
itemQuantity
public int itemQuantity(int itemid) 計算角色身上指定道具的總數量。依道具 ID 推導對應的背包類型後統計該道具的持有數量。
- Parameters:
itemid- 道具 ID- Returns:
- 該道具在對應背包中的總數量
-
getRPS
-
setRPS
-
getNextConsume
public long getNextConsume()取得下一次允許消耗(道具使用)的時間戳記。- Returns:
- 下一次可消耗的時間戳記(毫秒)
-
setNextConsume
public void setNextConsume(long nc) 設定下一次允許消耗(道具使用)的時間戳記。- Parameters:
nc- 下一次可消耗的時間戳記(毫秒)
-
getRank
public int getRank()取得角色的總排名。- Returns:
- 總排名名次
-
getRankMove
public int getRankMove()取得角色總排名的名次變動量。- Returns:
- 總排名名次的變動量
-
getJobRank
public int getJobRank()取得角色的職業排名。- Returns:
- 職業排名名次
-
getJobRankMove
public int getJobRankMove()取得角色職業排名的名次變動量。- Returns:
- 職業排名名次的變動量
-
changeChannel
public void changeChannel(int channel) 將角色切換至指定的遊戲頻道。若目標頻道與現頻道相同、頻道不存在或正在關閉,則送出伺服器阻擋封包並直接返回。 否則先存檔至資料庫,執行換頻清理(
changeRemoval()),靜默離開信使聊天, 將現有 buff/冷卻/異常狀態暫存至PlayerBuffStorage,透過World.ChannelChange_Data(MapleClient, MapleCharacter, int)轉移角色資料,從現頻道移除玩家、 更新登入狀態、新增 IP 授權並送出換頻封包,最後從地圖移除玩家並清空客戶端的玩家參照。具有大量副作用:DB 寫入、跨伺服器狀態轉移、封包送出與地圖/頻道狀態變更。
- Parameters:
channel- 目標頻道編號
-
expandInventory
public void expandInventory(byte type, int amount) 擴充指定背包類型的欄位數量。為對應背包增加指定數量的欄位,並向自身客戶端送出欄位更新封包 (
InventoryPacket.getSlotUpdate(byte, byte))。- Parameters:
type- 背包類型代碼amount- 欲增加的欄位數
-
allowedToTarget
判斷本角色是否允許將指定角色作為(攻擊/互動)目標。當對方非
null,且其未隱身、或本角色 GM 等級不低於對方時回傳true。- Parameters:
other- 目標角色,可為null- Returns:
- 允許鎖定目標時為
true
-
getFollowId
public int getFollowId()取得目前跟隨對象的角色 ID。- Returns:
- 跟隨對象的角色 ID,未跟隨時為 0
-
setFollowId
public void setFollowId(int fi) 設定跟隨對象的角色 ID。當傳入 0 時一併清除跟隨發起者與跟隨開啟旗標。
- Parameters:
fi- 跟隨對象的角色 ID,0 表示取消跟隨
-
isFollowOn
public boolean isFollowOn()判斷跟隨功能目前是否開啟。- Returns:
- 跟隨開啟時為
true
-
setFollowOn
public void setFollowOn(boolean fi) 設定跟隨功能的開啟狀態。- Parameters:
fi- 是否開啟跟隨
-
isFollowInitiator
public boolean isFollowInitiator()判斷本角色是否為跟隨關係的發起者。- Returns:
- 為發起者時為
true
-
setFollowInitiator
public void setFollowInitiator(boolean fi) 設定本角色是否為跟隨關係的發起者。- Parameters:
fi- 是否為發起者
-
checkFollow
public void checkFollow()檢查並終止目前的跟隨關係。若未跟隨任何對象則直接返回。否則若跟隨開啟,向地圖廣播雙方的跟隨特效封包, 接著向自身與對象客戶端送出「跟隨取消。」訊息,並將雙方的跟隨對象 ID 重設為 0。
副作用:地圖廣播與封包送出,並修改本角色與對象角色的跟隨狀態。
-
getMarriageId
public int getMarriageId()取得角色的結婚編號。- Returns:
- 結婚編號,未結婚時為 0
-
setMarriageId
public void setMarriageId(int mi) 設定角色的結婚編號。- Parameters:
mi- 結婚編號
-
getMarriageItemId
public int getMarriageItemId()取得角色的結婚戒指道具 ID。- Returns:
- 結婚戒指道具 ID
-
setMarriageItemId
public void setMarriageItemId(int mi) 設定角色的結婚戒指道具 ID。- Parameters:
mi- 結婚戒指道具 ID
-
isStaff
public boolean isStaff()判斷角色是否為管理人員(GM 等級高於普通玩家)。- Returns:
- 為管理人員時為
true
-
startPartyQuest
public boolean startPartyQuest(int questid) 開始指定的組隊任務。- Parameters:
questid- 任務 ID- Returns:
- 成功開始時為
true
-
getOneInfo
取得指定組隊任務中某個鍵對應的資訊值。- Parameters:
questid- 任務 IDkey- 資訊鍵- Returns:
- 對應的資訊值,可能為
null
-
updateOneInfo
更新指定組隊任務中某個鍵的資訊值。委派至
CharacterQuestManager.updateOneInfo(int, String, String)。- Parameters:
questid- 任務 IDkey- 資訊鍵value- 欲設定的資訊值
-
recalcPartyQuestRank
public void recalcPartyQuestRank(int questid) 重新計算指定組隊任務的隊伍排名。- Parameters:
questid- 任務 ID
-
tryPartyQuest
public void tryPartyQuest(int questid) 嘗試開始指定的組隊任務。- Parameters:
questid- 任務 ID
-
endPartyQuest
public void endPartyQuest(int questid) 結束指定的組隊任務。- Parameters:
questid- 任務 ID
-
havePartyQuest
public void havePartyQuest(int itemId) 處理組隊任務取得指定道具的相關邏輯。- Parameters:
itemId- 道具 ID
-
resetStatsByJob
public void resetStatsByJob(boolean beginnerJob) 依職業將角色能力值重設為對應的初始配點。依是否為新手職業推導基礎職業群組(如 1112 → 112 → 100),再依劍士/法師/弓箭手/盜賊系 套用該系的預設配點,並考量是否完成「終極冒險者」任務(
GameConstants.ULT_EXPLORER) 調整主屬性。最終透過resetStats(int, int, int, int)套用並送出能力更新封包。- Parameters:
beginnerJob- 是否以新手職業(取職業末三碼)作為重設基準
-
hasSummon
public boolean hasSummon()判斷角色目前是否擁有召喚獸。- Returns:
- 擁有召喚獸時為
true
-
setHasSummon
public void setHasSummon(boolean summ) 設定角色是否擁有召喚獸的旗標。- Parameters:
summ- 是否擁有召喚獸
-
removeDoor
public void removeDoor()移除角色開設的所有傳送門。向傳送門目標地圖與所在城鎮的所有玩家送出傳送門銷毀封包,從兩地地圖移除傳送門物件, 最後清空角色的傳送門集合。
副作用:對多名玩家送出封包並變更地圖物件狀態。
-
removeMechDoor
public void removeMechDoor()移除角色開設的所有機械門(機械師職業)。對每個機械門向地圖中所有玩家送出銷毀封包並從地圖移除該物件,最後清空機械門集合。
副作用:對多名玩家送出封包並變更地圖物件狀態。
-
changeRemoval
public void changeRemoval()執行角色離場前的清理(非斷線版本)。委派至
changeRemoval(boolean),以dc=false呼叫。 -
changeRemoval
public void changeRemoval(boolean dc) 執行角色離場前的清理,移除暫時性的場上物件與狀態。包含:斷線時釋放反作弊追蹤器;移除夥伴、解除召喚獸;非斷線時取消飛行/騎乘/機械變身/回復等 buff;結束金字塔/地鐵活動;處理個人商店(移除訪客、若為店主則設為開啟);移除傳送門與機械門; 釋放分身;透過
NPCScriptManager釋放 NPC 對話;並取消妖精排程。副作用:大量狀態清理、封包送出與地圖物件移除。
- Parameters:
dc- 是否因斷線而觸發;true時跳過部分需與客戶端互動的清理
-
updateTick
public void updateTick(int newTick) 更新反作弊用的客戶端時間刻度。目前實作已停用(內部呼叫被註解),呼叫不會產生任何效果。
- Parameters:
newTick- 新的時間刻度值
-
canUseFamilyBuff
判斷指定家族祝福是否已可再次使用(冷卻已過)。依該祝福對應任務(
buff.questID)的客製資料判斷:若無此任務狀態則視為可用; 否則以上次使用時間加上 24 小時與目前系統時間比較。- Parameters:
buff- 家族祝福類型- Returns:
- 已可再次使用時為
true
-
useFamilyBuff
使用指定的家族祝福並記錄使用時間。取得(必要時建立)該祝福對應任務的狀態,並將其客製資料設為目前系統時間,作為下次冷卻判斷依據。
- Parameters:
buff- 家族祝福類型
-
usedBuffs
取得目前仍在冷卻中(不可使用)的家族祝福索引清單。逐一檢查所有
MapleFamilyBuff值,將無法使用者的列舉索引加入回傳清單。- Returns:
- 冷卻中家族祝福的索引清單
-
getTeleportName
-
setTeleportName
-
getNoJuniors
public int getNoJuniors()取得家族中下屬(junior)的數量。- Returns:
- 下屬數量
-
getMFC
取得角色的家族成員資料。- Returns:
- 家族成員資料,未加入家族時可能為
null
-
makeMFC
public void makeMFC(int familyid, int seniorid, int junior1, int junior2) 建立角色的家族成員資料。- Parameters:
familyid- 家族 IDseniorid- 上司角色 IDjunior1- 第一位下屬角色 IDjunior2- 第二位下屬角色 ID
-
setFamily
public void setFamily(int newf, int news, int newj1, int newj2) 設定角色的家族關係資料。- Parameters:
newf- 家族 IDnews- 上司角色 IDnewj1- 第一位下屬角色 IDnewj2- 第二位下屬角色 ID
-
maxBattleshipHP
public int maxBattleshipHP(int skillid) 依指定技能計算戰艦的最大 HP。公式為「該技能總等級 × 5000」加上「(角色等級 − 120)× 3000」。
- Parameters:
skillid- 戰艦技能 ID- Returns:
- 戰艦最大 HP
-
currentBattleshipHP
public int currentBattleshipHP()取得戰艦目前的 HP。- Returns:
- 戰艦目前 HP
-
setBattleshipHP
public void setBattleshipHP(int v) 設定戰艦目前的 HP。- Parameters:
v- 戰艦 HP 數值
-
decreaseBattleshipHP
public void decreaseBattleshipHP()將戰艦目前的 HP 減少 1。 -
getGachExp
public int getGachExp()取得角色的轉蛋經驗值。- Returns:
- 轉蛋經驗值
-
setGachExp
public void setGachExp(int ge) 設定角色的轉蛋經驗值。- Parameters:
ge- 轉蛋經驗值
-
isInBlockedMap
public boolean isInBlockedMap()判斷角色目前是否位於受限制(禁用部分功能)的地圖。當角色已死亡、處於金字塔/地鐵活動、所在地圖屬於遠征隊或活動管理、位於特定地圖區段 (如 680000210–680000502、925020100 起的 92502 系、92503 系或監獄),或地圖列於
GameConstants.blockedMaps時,視為受限地圖。- Returns:
- 位於受限地圖時為
true
-
isInTownMap
public boolean isInTownMap()判斷角色目前是否位於可正常使用城鎮功能的城鎮地圖。當背包被封鎖、地圖非城鎮、地圖禁用回城卷(
FieldLimitType.VipRock)、 處於活動實例中,或地圖列於GameConstants.blockedMaps時回傳false。- Returns:
- 位於可用城鎮地圖時為
true
-
hasBlockedInventory
public boolean hasBlockedInventory()判斷角色目前是否處於禁止操作背包的狀態。當角色已死亡、正在交易、處於對話中、有設定方向(坐下等)、開設個人商店,或地圖為
null時, 視為背包被封鎖。- Returns:
- 背包被封鎖時為
true
-
startPartySearch
於目前地圖搜尋符合條件的玩家並邀入隊伍(組隊搜尋)。逐一檢查地圖中的玩家,篩選條件為:非本人、尚未組隊、等級介於指定上下限、職業符合(清單為空則不限), 且本角色為 GM 或對方非 GM。對符合者,若隊伍未滿(少於 6 人且少於所需人數)便將其加入隊伍、 透過
World.Party.updateParty(int, PartyOperation, MaplePartyCharacter)廣播加入並同步雙方隊員 HP;隊伍已滿則停止搜尋。副作用:修改其他玩家的隊伍狀態並進行跨伺服器隊伍廣播。
- Parameters:
jobs- 允許的職業 ID 清單,為空時不限職業maxLevel- 招募的最高等級minLevel- 招募的最低等級membersNeeded- 需要招募的隊員人數上限
-
getChallenge
public int getChallenge()取得角色目前的挑戰值(武陵道場等挑戰進度)。- Returns:
- 挑戰值
-
setChallenge
public void setChallenge(int c) 設定角色目前的挑戰值。- Parameters:
c- 新的挑戰值
-
getFatigue
public short getFatigue()取得角色目前的疲勞值。- Returns:
- 疲勞值
-
setFatigue
public void setFatigue(int j) 設定角色的疲勞值並同步至客戶端。數值會以
Math.max(0, j)夾為非負,再透過updateSingleStat(MapleStat, int)送出MapleStat.FATIGUE更新封包。- Parameters:
j- 欲設定的疲勞值(負值會被夾為 0)
-
fakeRelog
public void fakeRelog()在不真正重新連線的情況下,對客戶端模擬一次重登以刷新角色狀態。會重送角色資訊封包,並於目前地圖暫停狀態檢查(
setCheckStates(false))後 將玩家移除再加回(觸發完整的進場流程),最後恢復狀態檢查並補送怪物寵物(familiar)資訊。 -
canSummon
public boolean canSummon()判斷距離上次召喚是否已逾預設冷卻(5000 毫秒)。等同呼叫
canSummon(5000);回傳true時會一併更新上次召喚時間。- Returns:
- 已過冷卻可再次召喚則為
true
-
canSummon
public boolean canSummon(int g) 判斷距離上次召喚是否已逾指定冷卻毫秒數,並在可召喚時重置計時。具副作用:回傳
true的同時會將上次召喚時間更新為目前系統時間。- Parameters:
g- 冷卻間隔(毫秒)- Returns:
- 已過冷卻可再次召喚則為
true,否則為false
-
SetIntNoRecord
將指定任務的自訂資料(customData)設為給定字串,但不會新增不存在的任務。常用於以任務槽位充當整數計數器的暫存。
- Parameters:
questID- 任務編號point- 欲寫入的字串值
-
getIntNoRecord
public int getIntNoRecord(int questID) 讀取指定任務自訂資料並解析為整數,任務不存在時回傳 0(不會新增任務)。- Parameters:
questID- 任務編號- Returns:
- 解析後的整數值,任務或資料不存在時為 0
-
getIntRecord
public int getIntRecord(int questID) 讀取指定任務自訂資料並解析為整數;任務不存在時會自動新增並初始化為 0。與
getIntNoRecord(int)的差異在於本方法透過getQuestNAdd確保任務存在。- Parameters:
questID- 任務編號- Returns:
- 解析後的整數值
-
updatePetAuto
public void updatePetAuto()更新寵物自動進食/自動撿取等自動行為設定。 -
sendEnglishQuiz
向客戶端發送英文問答(OX quiz)訊息。目前實作已停用(封包送出語句被註解),呼叫不會產生任何效果。
- Parameters:
msg- 問答訊息內容
-
setChangeTime
public void setChangeTime()將最近一次換圖時間記錄為目前系統時間。 -
getChangeTime
public long getChangeTime()取得最近一次換圖的時間戳記(毫秒)。- Returns:
- 換圖時間戳記
-
getReports
取得各檢舉類型對應的累計次數。- Returns:
- 檢舉類型對應次數的對應表
-
addReport
為指定檢舉類型累加一次計數。- Parameters:
type- 檢舉類型
-
clearReports
清除指定檢舉類型的累計計數。- Parameters:
type- 欲清除的檢舉類型
-
clearReports
public void clearReports()清除所有檢舉類型的累計計數。 -
getReportPoints
public final int getReportPoints()取得各類型檢舉換算後的總點數。- Returns:
- 檢舉總點數
-
getReportSummary
取得各類型檢舉次數的彙整文字摘要。- Returns:
- 檢舉摘要字串
-
getScrolledPosition
public short getScrolledPosition()取得最近一次卷軸作用的裝備槽位。- Returns:
- 卷軸作用槽位
-
setScrolledPosition
public void setScrolledPosition(short s) 設定最近一次卷軸作用的裝備槽位。- Parameters:
s- 卷軸作用槽位
-
getTrait
取得指定類型的角色性向(trait)物件。- Parameters:
t- 性向類型- Returns:
- 對應的
MapleTrait,未持有時可能為null
-
forceCompleteQuest
public void forceCompleteQuest(int id) 對本角色強制完成指定任務。以固定 NPC 編號
9270035呼叫MapleQuest.forceComplete(MapleCharacter, int)強制結束任務。- Parameters:
id- 任務編號
-
getExtendedSlots
-
getExtendedSlot
public int getExtendedSlot(int index) 取得指定索引的擴充背包槽位值。- Parameters:
index- 槽位索引- Returns:
- 對應槽位值;索引越界(
< 0或>=清單大小)時回傳-1
-
changedExtended
public void changedExtended()標記擴充背包槽位資料已變更,待下次存檔時寫回資料庫。 -
getAndroid
-
setAndroid
設定角色的機器人(android),並在地圖上生成與播放表情。具副作用:當角色已在地圖中且
a非null時,會向地圖廣播機器人生成封包 與一個隨機表情(1~17)。傳入null僅清除欄位,不另行廣播移除。- Parameters:
a- 欲設定的機器人,可為null
-
updateAndroid
public void updateAndroid(short pos, int itemId) 更新機器人在指定槽位的外觀道具並向地圖廣播。具副作用:角色在地圖中時,向地圖廣播機器人外觀更新封包。
- Parameters:
pos- 機器人裝備槽位itemId- 套用的道具編號
-
removeAndroid
public void removeAndroid()移除角色的機器人並向地圖廣播停用。具副作用:角色在地圖中時,向地圖廣播機器人停用封包,最後清空機器人欄位。
-
getRebuy
-
setRebuy
-
setClearRebuy
public void setClearRebuy()清空商店「再買一次」暫存清單(若已建立)。 -
getFamiliars
取得角色擁有的所有怪物寵物(familiar)對應表。- Returns:
- familiar 編號對應
MonsterFamiliar的對應表,可能為null
-
getSummonedFamiliar
取得目前已召喚出場的怪物寵物(familiar)。- Returns:
- 已召喚的
MonsterFamiliar,未召喚時為null
-
removeFamiliar
public void removeFamiliar()收回目前召喚的怪物寵物(familiar)。具副作用:若已召喚且在地圖中,會透過
removeVisibleFamiliar()自地圖移除並廣播; 最後清空已召喚欄位。 -
removeVisibleFamiliar
public void removeVisibleFamiliar()將目前召喚的怪物寵物(familiar)自地圖視覺上移除並取消其被動效果。具副作用:自地圖移除地圖物件、自可見物件清單移除、向地圖廣播移除封包、重置反作弊 familiar 攻擊計數,並取消該 familiar 被動道具對應的 buff。呼叫前應確保
summonedFamiliar非null。 -
spawnFamiliar
在地圖上召喚指定的怪物寵物(familiar)並套用其被動效果。具副作用:設定為目前召喚的 familiar、定位於玩家座標與所在地面(foothold)、加入可見物件、 於地圖生成;若其被動效果為無間隔(interval ≤ 0)且機率判定成功,立即對自身套用該效果, 並記錄本次 familiar 效果時間。
- Parameters:
mf- 欲召喚的怪物寵物
-
canFamiliarEffect
判斷距上次 familiar 被動效果是否已逾其間隔,可再次觸發。- Parameters:
now- 目前時間戳記(毫秒)eff- familiar 被動效果,用以取得觸發間隔- Returns:
- 已過間隔且曾觸發過則為
true
-
doFamiliarSchedule
public void doFamiliarSchedule(long now) 週期性處理怪物寵物(familiar)的疲勞與被動效果。對已召喚的 familiar 增加疲勞並在符合間隔與機率時套用其被動效果(具副作用);其餘 familiar 則逐步回復疲勞。
familiars為null時直接返回。- Parameters:
now- 目前時間戳記(毫秒)
-
getImps
-
sendImp
public void sendImp()向客戶端送出所有已存在小惡魔(imp)的召喚狀態。具副作用:對每個非
null的 imp 送出標記為已召喚(SUMMONED)的更新封包。 -
getBattlePoints
public int getBattlePoints()取得角色的戰鬥點數(PVP points)。- Returns:
- 戰鬥點數
-
setBattlePoints
public void setBattlePoints(int p) 設定角色的戰鬥點數(PVP points)並於有變動時通知客戶端。具副作用:當新值與現值不同時,向客戶端送出點數增減訊息並更新
MapleStat.BATTLE_POINTS。- Parameters:
p- 新的戰鬥點數
-
getTotalBattleExp
public int getTotalBattleExp()取得角色的累計戰鬥經驗(PVP exp)。- Returns:
- 累計戰鬥經驗
-
setTotalBattleExp
public void setTotalBattleExp(int p) 設定角色的累計戰鬥經驗(PVP exp)並在有變動時重算 PVP 排名。具副作用:值有變動時呼叫
stats.recalcPVPRank,並更新MapleStat.BATTLE_EXP與MapleStat.BATTLE_RANK。- Parameters:
p- 新的累計戰鬥經驗
-
changeTeam
public void changeTeam(int newTeam) 變更角色所屬隊伍(如椰子大賽/PVP 紅藍隊)並向客戶端與地圖呈現對應效果。具副作用:設定隊伍編號後,PVP 中送出變身與隊伍變更廣播,否則向自身送出裝備特效封包。
- Parameters:
newTeam- 新的隊伍編號
-
disease
public void disease(int type, int level) 依怪物技能編號對角色施加對應的異常狀態(debuff)。具副作用:先強制起身(清除座椅、向自身送出取消座椅封包、向地圖廣播起身),再以
giveDebuff(MapleDisease, MobSkill)施加由type/level對應的怪物技能 debuff。當該技能無對應MapleDisease時直接返回。- Parameters:
type- 怪物技能編號(用以對應異常狀態)level- 怪物技能等級
-
inPVP
public boolean inPVP()判斷角色是否處於 PVP 活動實例中。- Returns:
- 所在事件實例名稱以
"PVP"開頭則為true
-
inAzwan
public boolean inAzwan()判斷角色目前是否位於阿斯旺(Azwan)地圖區段。- Returns:
- 地圖編號落在
262020000~262022999之間則為true
-
clearAllCooldowns
public void clearAllCooldowns()清除角色所有技能冷卻並通知客戶端。具副作用:逐一移除冷卻(委派狀態由
CharacterCooldownDiseaseManager管理)並向客戶端 送出冷卻歸零封包。 -
modifyDamageTaken
依角色各項減傷/護盾/反傷被動與 buff,計算實際承受傷害並處理連帶效果。此為傷害結算的核心邏輯,可能產生大量副作用:忽視傷害(ignoreDAM/ignoreDAMr)、神聖之盾/ 魔法護罩等抵銷、衛星安全、職業專屬的反擊/格擋技能(含對攻擊者造成傷害並廣播
MobPacket.damageMonster(int, long)、施加狀態、套用 buff、設定冷卻),以及力場護甲/黑暗之眼/ 召喚獸協同反傷等。對玩家攻擊者會直接扣血並彙整反傷數列,最後向地圖廣播 PVP 反傷封包。- Parameters:
damage- 原始承受傷害attacke- 攻擊來源地圖物件(MapleMonster或玩家),可能為null- Returns:
Pair:left 為結算後的實際傷害,right 表示是否已對攻擊者反彈傷害
-
onAttack
public void onAttack(long maxhp, int maxmp, int skillid, int oid, long totDamage) 角色發動攻擊後的結算:處理吸血/吸魔、特定 buff 與技能的攻擊後效果。此為攻擊後處理的核心邏輯,副作用眾多:依機率回復 HP/MP(hpRecover/mpRecover 與百分比)、 連擊吸取(COMBO_DRAIN)回 HP/MP、死神(REAPER)自動召喚、毒系職業累積連結傷害(linkMid), 以及依技能編號(如各式吸血、追蹤、美洲豹)套用回血或設定/清除連結傷害目標。
- Parameters:
maxhp- 用於回復上限換算的最大 HPmaxmp- 用於回復上限換算的最大 MPskillid- 本次攻擊使用的技能編號(0 表示無技能)oid- 攻擊目標的物件編號(用於連結傷害)totDamage- 本次攻擊造成的總傷害(用於百分比回復換算)
-
handleForceGain
public void handleForceGain(int oid, int skillid) 處理鬥氣(force/MP)累積,使用預設額外鬥氣 0。- Parameters:
oid- 來源物件編號skillid- 觸發的技能編號
-
handleForceGain
public void handleForceGain(int oid, int skillid, int extraForce) 處理鬥氣(force)累積並回復對應 MP,同時可附加額外鬥氣。具副作用:依等級決定基礎鬥氣量(30 以下 1、30~69 為 2、70~119 為 3、120 以上 4), 增加 MP 並向客戶端送出鬥氣封包;當
extraForce <= 0時,另依 mpRecover 機率再回復一次 並送出對應封包。當技能非鬥氣增益且extraForce <= 0時直接返回。- Parameters:
oid- 來源物件編號skillid- 觸發的技能編號extraForce- 額外鬥氣量;大於 0 時以此值取代基礎鬥氣並略過機率回復
-
afterAttack
public void afterAttack(int mobCount, int attackCount, int skillid) 攻擊命中後依職業處理能量充能、戰艦耗血與潛行類 buff 的取消。具副作用:海盜系(拳手/打手等)依擊中數累積能量充能、戰士系與幻影累積連擊球(orb); 貓頭鷹之靈(OWL_SPIRIT,借用戰艦 HP)扣血並於歸零時取消;非實習生身分則取消疾風步、 滲透與(依機率)黑暗之眼等暴露類 buff。
- Parameters:
mobCount- 本次攻擊命中的怪物數attackCount- 每隻怪物的攻擊次數skillid- 使用的技能編號(用於排除特定技能不給球,如吼叫)
-
applyIceGage
public void applyIceGage(int x) 更新冰冷量表(ice gage)數值並同步至客戶端。具副作用:透過
updateSingleStat(MapleStat, int)送出MapleStat.ICE_GAGE更新封包。- Parameters:
x- 新的冰冷量表值
-
getBounds
-
getEquips
-
CRand
-
getCharacterCard
取得角色卡(character cards)集合。- Returns:
MapleCharacterCards實例
-
getReborns
public int getReborns()取得角色的轉生(reborn)次數。- Returns:
- 轉生次數
-
setReborns
public void setReborns(int rb) 以累加方式增加角色的轉生次數。行為上為累加(
reborns += rb)而非直接設值,故傳入值會疊加至現有次數。- Parameters:
rb- 欲增加的轉生次數
-
getAPS
public int getAPS()取得角色的能力點儲存量(AP storage)。- Returns:
- AP 儲存量
-
gainAPS
public void gainAPS(int aps) 增加角色的能力點儲存量(AP storage)。- Parameters:
aps- 欲增加的 AP 量
-
doReborn
public void doReborn()執行角色轉生:重置等級/經驗並重新隨機分配四圍,溢出能力點轉入 AP 儲存。自訂功能。具副作用:轉生次數加一、等級設為 11、經驗與剩餘 AP 歸零;以原四圍為上限隨機產生 新的 STR/DEX/INT/LUK(每項至少 25),將「原四圍總和 − 新四圍總和 + 剩餘 AP」併入 AP 儲存 (
gainAPS(int));重算並套用新四圍,最後向客戶端送出等級/職業/經驗/四圍更新封包。 -
checkForceShield
public void checkForceShield()依角色職業檢查並補發專屬的轉職盾牌(force shield)。具副作用:依
job對應的盾牌道具編號建立裝備(部分職業會重置潛在能力),設定其位置為-10(特殊盾牌槽)、數量 1 並寫入 GM 取得紀錄;接著以forceReAddItem_NoUpdate(Item, MapleInventoryType)直接放入已穿戴背包,向客戶端送出裝備更新封包並觸發equipChanged()。職業無對應盾牌時不做任何事。 -
getTotems
取得角色目前裝備中的圖騰槽位與道具對應表。掃描
EQUIPPED背包,只收錄三個圖騰槽(負位置換算後 0~2)且道具編號落在1200000~1209999區間者。- Specified by:
getTotemsin interfaceMapleCharacterLook- Returns:
- 槽位(
byte0~2)對應圖騰道具編號的對應表,無圖騰時為空 map(不為null)
-
handleCardStack
public void handleCardStack()處理幻影(Phantom)卡牌堆疊的累積判定與封包同步。依角色職業(
2412上限 40、其餘2400/2410/2411上限 20) 決定堆疊上限;以對應卡牌技能(24120002進階 /24100003)的MapleStatEffect.makeChanceResult()機率判定是否疊加,成功時遞增cardStack與runningStack,並向自身客戶端送出gainCardStack/updateCardStack封包。 若兩種卡牌技能皆未習得則直接返回。副作用:變更角色卡牌堆疊狀態並送出封包;其中
gainCardStack使用Randomizer故為非確定性。 -
getChronosphere
public int getChronosphere()取得角色持有的時空石(Chronosphere)數量。- Returns:
- 時空石數量
-
setChronosphere
public void setChronosphere(int count) 設定角色持有的時空石數量。- Parameters:
count- 時空石數量
-
setCSChronsphere
public void setCSChronsphere(int count) 設定現金商城時空石(CS Chronosphere)數量。- Parameters:
count- 現金商城時空石數量
-
getCSChronosphere
public int getCSChronosphere()取得現金商城時空石(CS Chronosphere)數量。- Returns:
- 現金商城時空石數量
-
getVip
public int getVip()自資料庫重新讀取並回傳角色的 VIP 等級。副作用:對
characters資料表執行SELECT,並以查得值刷新欄位vip; 查詢例外會被吞掉(僅log.debug),此時回傳當前快取值。- Returns:
- 角色 VIP 等級
-
setVip
public void setVip(int vip) 設定角色 VIP 等級並即時寫回資料庫。副作用:更新欄位
vip,並對characters資料表執行UPDATE; 寫入例外會被吞掉(僅log.debug)。- Parameters:
vip- 新的 VIP 等級
-
getDonate
public int getDonate()自資料庫重新讀取並回傳本帳號的累計儲值金額。副作用:對
accounts資料表執行SELECT,並以查得值刷新欄位total_donate;查詢例外會被吞掉(僅log.debug),此時回傳當前快取值。- Returns:
- 帳號累計儲值金額(
total_donate)
-
getRewardLevel
public int getRewardLevel()自資料庫重新讀取並回傳角色的獎勵等級。副作用:對
characters資料表執行SELECT,並以查得值刷新欄位reward;查詢例外會被吞掉(僅log.debug),此時回傳當前快取值。- Returns:
- 角色獎勵等級(
reward)
-
setRewardLevel
public void setRewardLevel(int reward) 設定角色獎勵等級並即時寫回資料庫。副作用:更新欄位
reward,並對characters資料表執行UPDATE; 寫入例外會被吞掉(僅log.debug)。- Parameters:
reward- 新的獎勵等級
-
changeFace
public boolean changeFace(int color) 在當前臉型基礎上套用指定的顏色偏移,切換為同款不同色的臉型。依現有
face的色階區段(每 100 一段,0~700)歸零後加上color, 算出目標臉型編號;若該編號不存在(MapleItemInformationProvider.itemExists(int)為false)則不變更並回傳false。成功時更新face、送出MapleStat.FACE單一屬性更新並觸發equipChanged()。- Parameters:
color- 臉型顏色偏移量- Returns:
- 成功變更回傳
true;目標臉型不存在則回傳false
-
gainItem
public void gainItem(int code, int amount) 給予角色指定數量的道具。僅當
amount為正時,透過MapleInventoryManipulator.addById(MapleClient, int, short, String)加入背包; 非正數則不做任何事。- Parameters:
code- 道具編號amount- 給予數量(須為正才生效)
-
giftMedal
public void giftMedal(int id) 贈予角色一枚勳章(裝備類)並向全服廣播祝賀訊息。僅當
EQUIP背包未滿、且該道具在EQUIP與EQUIPPED背包中皆未持有時, 加入 1 件並透過World.Broadcast.broadcastMessage(byte[])對全服送出祝賀公告;否則不做任何事。副作用:修改背包並進行全服封包廣播。
- Parameters:
id- 勳章道具編號
-
getAveragePartyLevel
public int getAveragePartyLevel()計算所屬隊伍全體成員的平均等級。隊伍人數為 0 時退回回傳本角色自身等級。注意未檢查
getParty()是否為null(無隊伍時呼叫會擲NullPointerException)。- Returns:
- 隊伍平均等級;隊伍為空時為本角色等級
-
getAverageMapLevel
public int getAverageMapLevel()計算當前地圖上所有玩家的平均等級。地圖上無玩家時退回回傳本角色自身等級。
- Returns:
- 當前地圖平均等級;無玩家時為本角色等級
-
getNpcNow
public int getNpcNow()取得角色目前正在互動的 NPC 編號。- Returns:
- 目前互動的 NPC 編號
-
setNpcNow
public void setNpcNow(int id) 設定角色目前正在互動的 NPC 編號。- Parameters:
id- NPC 編號
-
getElf
public int getElf()取得角色精靈耳朵(Elf ear)狀態。由任務資訊
GameConstants.精靈耳朵的sw子值解析;無紀錄時回傳0。- Specified by:
getElfin interfaceMapleCharacterLook- Returns:
- 精靈耳朵狀態值,未設定時為
0
-
setElf
public void setElf(int elf) 設定角色精靈耳朵(Elf ear)狀態並更新外觀。將值寫入任務資訊
GameConstants.精靈耳朵的sw子值,並觸發equipChanged()同步外觀。- Parameters:
elf- 精靈耳朵狀態值
-
setTempValue
-
getTempValue
-
getOneTempValue
自指定暫存鍵的值字串中,解析出單一子鍵對應的值。透過
StringTool.getOneValue(String, String)解析key=value形式的子值; 暫存鍵不存在時回傳null。- Parameters:
arg- 暫存鍵key- 子鍵名稱- Returns:
- 子鍵對應的值;暫存鍵不存在時為
null
-
updateOneTempValue
更新指定暫存鍵內的單一子鍵值。透過
StringTool.updateOneValue(String, String, String)更新key=value子值後寫回;key為null時直接返回。若更新後字串為空則清除整個暫存鍵 (以null呼叫setTempValue(String, String))。- Parameters:
arg- 暫存鍵key- 子鍵名稱value- 子鍵新值
-
maxAllSkills
public final void maxAllSkills()將所有可學技能(編號< 90000000且適用)全部設為滿等。排除 db/附加/抵抗類技能;透過
changeSkillsLevel(java.util.Map)套用變更, 會送出技能更新封包並標記需存檔。 -
maxSkillsByJob
public final void maxSkillsByJob()依角色目前職業將該職業可學技能設為滿等,並處理無用/極限冒險家技能。對
GameConstants.isUselssSkill(int)判定的無用技能,除非角色具備極限冒險家任務 (ULT_EXPLORER)或該技能為對應職業的有用極限(連結)技能,否則清除(設為 0 級); 其餘可學且非專業技能設為滿等。透過changeSkillsLevel(java.util.Map)套用變更 (送出封包並標記存檔)。 -
maxTeachSkills
public final void maxTeachSkills()將角色已習得的專業(採集/製作)技能全部提升至 10 級。遍歷編號
92000000~92040000的專業技能,凡已習得者透過changeProfessionLevelExp(int, int, int)設為等級 10、經驗 0。 -
clearSkills
public final void clearSkills()清除角色所有非專業技能(設為 0 級)。專業技能(
GameConstants.isProfessionSkill(int))予以保留;其餘技能透過changeSkillsLevel(java.util.Map)重設為 0 級(送出封包並標記存檔)。 -
LearnSameSkill
複製另一名角色的技能配置:先清除自身全部技能,再依對方的技能等級重新學習。兩階段皆透過
changeSkillsLevel(java.util.Map)套用(送出封包並標記存檔); 學習階段採用victim的當前技能等級與技能本身的精通等級。- Parameters:
victim- 作為技能來源的角色
-
OfflineBanByName
依角色名稱進行離線封鎖。先查
characters資料表取得角色 id,查無(id 為 0)時回傳false; 否則委派OfflineBanById(int, String)執行實際封鎖。查詢例外會被吞掉 (僅log.debug)。- Parameters:
name- 目標角色名稱reason- 封鎖理由- Returns:
- 成功封鎖回傳
true;查無角色或封鎖失敗回傳false
-
OfflineBanById
依角色 id 進行離線封鎖(封鎖帳號、IP 與 MAC)。由角色 id 查得帳號 id(查無則回傳
false),接著:- 更新
accounts將該帳號標記為封鎖並寫入理由; - 查出該帳號的
SessionIP與mac,記錄至封鎖日誌檔; - 將該 IP 寫入
ipbans,並透過MapleClient.banSingleMacs(String)封鎖 MAC。
log.error)後回傳false。副作用:多筆資料庫寫入與檔案日誌;不會主動踢線目標連線(踢線區塊已註解停用)。
- Parameters:
id- 目標角色 idreason- 封鎖理由- Returns:
- 成功封鎖回傳
true;查無帳號或過程發生例外回傳false
- 更新
-
isUseVipCharm
public boolean isUseVipCharm()是否已使用 VIP 護身符(防止經驗值損失的標記)。- Returns:
- 已使用回傳
true
-
setUseVipCharm
public void setUseVipCharm(boolean useVipCharm) 設定 VIP 護身符使用狀態。- Parameters:
useVipCharm- 是否已使用 VIP 護身符
-
isUseFirmCharm
public boolean isUseFirmCharm()是否已使用堅固護身符(保護裝備的標記)。- Returns:
- 已使用回傳
true
-
setUseFirmCharm
public void setUseFirmCharm(boolean useFirmCharm) 設定堅固護身符使用狀態。- Parameters:
useFirmCharm- 是否已使用堅固護身符
-
updateAP
public void updateAP()重新向客戶端推送四項基礎能力值(STR/DEX/INT/LUK)。依當前
PlayerStats之值對MapleStat.STR/MapleStat.DEX/MapleStat.INT/MapleStat.LUK各送出一次單一屬性更新封包。 -
setmsg_HiredMerchant
public void setmsg_HiredMerchant(boolean control) 設定是否記錄雇傭商人(販賣)相關訊息的開關。- Parameters:
control- 開啟記錄為true
-
setmsg_Chat
public void setmsg_Chat(boolean control) 設定是否記錄聊天訊息的開關。- Parameters:
control- 開啟記錄為true
-
getmsg_HiredMerchant
public boolean getmsg_HiredMerchant()取得雇傭商人訊息記錄開關狀態。- Returns:
- 開啟記錄回傳
true
-
getmsg_Chat
public boolean getmsg_Chat()取得聊天訊息記錄開關狀態。- Returns:
- 開啟記錄回傳
true
-
getDelChrLog
public boolean getDelChrLog()取得刪除角色記錄開關狀態。- Returns:
- 開啟記錄回傳
true
-
set_DelChrLog
public void set_DelChrLog(boolean control) 設定是否記錄刪除角色的開關。- Parameters:
control- 開啟記錄為true
-
teachSkill
public int teachSkill(int skillId, int toCharId) 由本角色向另一名角色「傳授」一個技能(直接寫入資料庫的離線授予)。先刪除本角色(
teachId = this.id)先前對該技能的傳授紀錄;若目標角色尚未持有該技能, 則在skills資料表插入一筆(等級 1、精通 1、永久、teachId為本角色 id)並回傳 1; 若目標已持有則回傳 -1。SQL 例外會被記錄(log.error)並回傳 -1。副作用:對
skills資料表執行刪除與插入。- Parameters:
skillId- 要傳授的技能編號toCharId- 接受傳授的目標角色 id- Returns:
- 成功新增回傳 1;目標已持有或發生例外回傳 -1
-
changeTeachSkill
public void changeTeachSkill(int skillId, int toCharId) 為本角色(線上)即時加入一個帶有傳授來源標記的技能。技能不存在時直接返回。否則以等級 1、精通 1、永久、
teachId為toCharId寫入記憶體技能表,送出updateSkills封包至本客戶端,並標記changed_skills待存檔。副作用:修改記憶體技能狀態並送出封包。
- Parameters:
skillId- 要加入的技能編號toCharId- 傳授來源角色 id(寫入teachId)
-
fly
public void fly()切換角色的飛行(翱翔)模式(GM 指令用)。未飛行時先套用騎乘技能
80001069,若取得MapleBuffStat.MONSTER_RIDING則改套用翱翔技能80001089、取消騎乘 buff 並標記flying;已飛行時取消MapleBuffStat.SOARINGbuff 並關閉飛行。GM 會收到操作提示訊息。副作用:套用/取消 buff 並修改飛行狀態。
-
fly1
public void fly1()在已處於飛行狀態時重新套用翱翔效果(重登/換圖後恢復飛行用)。僅當
isFlying()為真才動作:套用騎乘技能80001069,取得MapleBuffStat.MONSTER_RIDING後改套用翱翔技能80001089並取消騎乘 buff; 非飛行狀態則不做任何事。副作用:套用/取消 buff。
-
isFlying
public boolean isFlying()是否處於飛行(翱翔)狀態。- Returns:
- 飛行中回傳
true
-
setFlying
public void setFlying(boolean toggle) 設定飛行(翱翔)狀態旗標。- Parameters:
toggle-true為飛行中
-
addMobVac
public void addMobVac()將怪物吸怪(Mob Vac)使用計數加一。用於反作弊偵測短時間內的吸怪頻率。
-
getMobVac
public int getMobVac()取得怪物吸怪(Mob Vac)使用計數。- Returns:
- 吸怪計數
-
updateWarpingMap
public void updateWarpingMap(boolean set) 標記或清除「正在換圖」的時間戳(用於換圖防連點節流)。- Parameters:
set-true記錄當前時間為換圖起點;false清除(歸 0)
-
checkWarpingMap
public boolean checkWarpingMap()檢查目前是否仍處於換圖節流時間窗(1.5 秒內)。未開始換圖(時間戳為 0)時回傳
false;換圖後 1.5 秒內回傳true,逾時回傳false。- Returns:
- 仍在節流窗內回傳
true
-
getSkillWorkings
-
removeSkillWorking
public void removeSkillWorking(int SkillID) 移除指定技能的作用時間紀錄。- Parameters:
SkillID- 技能編號
-
setSkillWorking
public void setSkillWorking(int SkillID, long SkillTime) 設定指定技能的作用(到期)時間。- Parameters:
SkillID- 技能編號SkillTime- 作用時間戳
-
isSkillWorking
public boolean isSkillWorking(int SkillID) 判斷指定技能是否仍在作用中(存在時間紀錄)。- Parameters:
SkillID- 技能編號- Returns:
- 仍在作用中回傳
true
-
getSkillWorking
public long getSkillWorking(int SkillID) 取得指定技能的作用(到期)時間。- Parameters:
SkillID- 技能編號- Returns:
- 作用時間戳;無紀錄時為
0
-
updateUsingPortal
public void updateUsingPortal(boolean set) 標記或清除「正在使用傳送門」的時間戳(用於傳送門防連點節流)。- Parameters:
set-true記錄當前時間為傳送起點;false清除(歸 0)
-
checkUsingPortal
public boolean checkUsingPortal()檢查目前是否仍處於傳送門節流時間窗(1.5 秒內)。未開始傳送(時間戳為 0)時回傳
false;傳送後 1.5 秒內回傳true,逾時回傳false。- Returns:
- 仍在節流窗內回傳
true
-
checkCopyItemsByID
public void checkCopyItemsByID(int fromid, int itemid) 偵測道具複製(duping)作弊:掃描指定道具是否存在重複的「裝備專屬唯一 id」並予以查封。遍歷本角色的
USE/EQUIP/EQUIPPED背包(以及來源角色fromid的EQUIP/EQUIPPED背包,當其有效且非自身時),以equipOnlyId為鍵偵測 同一唯一 id 重複出現的道具。一旦發現重複,移除相關道具(雙方),並透過AutobanManager.autoban(MapleClient, String)以「複製裝備.」為由自動封鎖涉事雙方。副作用:可能刪除背包道具並觸發自動封鎖。
- Parameters:
fromid- 道具來源角色 id(撿取者);-1或等於自身 id 時不納入來源角色檢查itemid- 要檢查的道具編號
-
getLuckyBarrelsStatus
public int getLuckyBarrelsStatus()取得幸運木桶(Lucky Barrels)小遊戲狀態。- Returns:
- 幸運木桶狀態值
-
setLuckyBarrelsStatus
public void setLuckyBarrelsStatus(int luckyBarrelsStatus) 設定幸運木桶(Lucky Barrels)小遊戲狀態。- Parameters:
luckyBarrelsStatus- 幸運木桶狀態值
-
endStorageMsg
結束一段倉庫操作紀錄:將緩衝區內容寫入日誌檔後清空。僅當
ServerConstants.log_storage開啟時,將累積的storagemsg寫入logs/data/倉庫紀錄.txt;不論是否寫檔都會清空緩衝區。name參數目前未被使用。- Parameters:
name- 角色名稱(目前未使用)
-
addEmptyStorageMsg
-
addStorageMsg
-
endTradeMsg
結束一段交易紀錄:將緩衝區內容寫入日誌檔後清空。僅當
ServerConstants.log_trade開啟時,將累積的chatmsg寫入logs/data/交易紀錄.txt;不論是否寫檔都會清空緩衝區。name參數目前未被使用。- Parameters:
name- 角色名稱(目前未使用)
-
addEmptyTradeMsg
-
addTradeMsg
-
isOperateStorage
public boolean isOperateStorage()傳回此角色目前是否正在操作倉庫。- Returns:
- 正在操作倉庫則為
true
-
setOperateStorage
public void setOperateStorage(boolean set) 設定此角色是否正在操作倉庫的狀態旗標。- Parameters:
set- 是否正在操作倉庫
-
isInvited
public boolean isInvited()傳回此角色目前是否已送出交易邀請。- Returns:
- 已送出交易邀請則為
true
-
setInvited
public void setInvited(boolean set) 設定此角色的交易邀請狀態旗標。- Parameters:
set- 是否已送出交易邀請
-
getSayGood
public int getSayGood()傳回累計的「說好話」(讚)時間值。- Returns:
- 累計的說好話時間值
-
setSayGood
public void setSayGood(int time) 將指定時間值累加至「說好話」(讚)時間。- Parameters:
time- 要累加的時間值
-
CashShopGiftCount
public int CashShopGiftCount(int recipientid) 查詢資料庫中指定收件者尚未領取的商城禮物數量。對
gifts資料表執行SELECT count(*)查詢;查詢失敗時記錄為 debug 並回傳 0。- Parameters:
recipientid- 收件者角色 ID- Returns:
- 該收件者的禮物筆數;發生 SQL 例外時為 0
-
showInstruction
向此角色的用戶端送出一則指定尺寸的提示框(hint)。透過
CField.sendHint(String, int, int)組包後送往自身用戶端。- Parameters:
msg- 提示內容文字width- 提示框寬度height- 提示框高度
-
initMesoBank
public void initMesoBank()為此角色所屬帳號在mesobank資料表建立一筆金額為 0 的楓幣銀行紀錄。以帳號 ID 為主鍵執行
INSERT;失敗時寫入錯誤紀錄檔。 -
getMesoFromBank
public long getMesoFromBank()從資料庫讀取此角色所屬帳號的楓幣銀行存款金額。查無紀錄時會呼叫
initMesoBank()建立並回傳 0。- Returns:
- 銀行存款金額;查無紀錄或發生例外時為 0
-
setMoneytoBank
public void setMoneytoBank(long money) 將此角色所屬帳號的楓幣銀行存款金額覆寫為指定值。以帳號 ID 為條件執行
UPDATE;失敗時寫入錯誤紀錄檔。- Parameters:
money- 要寫入的存款金額
-
incMoneytoBank
public void incMoneytoBank(long money) 將楓幣銀行存款金額增加指定值(先讀後寫)。- Parameters:
money- 要增加的金額
-
decMoneytoBank
public void decMoneytoBank(long money) 將楓幣銀行存款金額減少指定值(先讀後寫)。- Parameters:
money- 要扣除的金額
-
hasSkill
public boolean hasSkill(int skillid) 傳回此角色是否已學會指定技能(等級大於 0)。- Parameters:
skillid- 技能 ID- Returns:
- 已學會該技能則為
true;技能不存在時為false
-
getAriantRoomLeaderName
傳回指定阿里安鬥技場房間的房主名稱。- Parameters:
room- 房間索引- Returns:
- 該房間的房主角色名稱
-
getAriantSlotsRoom
public int getAriantSlotsRoom(int room) 傳回指定阿里安鬥技場房間目前的人數(座位)。- Parameters:
room- 房間索引- Returns:
- 該房間的座位/人數值
-
removeAriantRoom
public void removeAriantRoom(int room) 清空指定阿里安鬥技場房間的房主與人數資料。- Parameters:
room- 房間索引
-
setAriantRoomLeader
設定指定阿里安鬥技場房間的房主名稱。- Parameters:
room- 房間索引charname- 房主角色名稱
-
setAriantSlotRoom
public void setAriantSlotRoom(int room, int slot) 設定指定阿里安鬥技場房間的人數(座位)值。- Parameters:
room- 房間索引slot- 座位/人數值
-
setApprentice
public void setApprentice(int app) 設定此角色的學徒(收徒系統)角色 ID。- Parameters:
app- 學徒角色 ID
-
hasApprentice
public boolean hasApprentice()傳回此角色目前是否擁有學徒。- Returns:
- 學徒 ID 大於 0 則為
true
-
getApprentice
public int getApprentice()傳回此角色的學徒角色 ID。- Returns:
- 學徒角色 ID,無學徒時為 0
-
addAriantScore
public void addAriantScore()將阿里安鬥技場分數加 1。 -
resetAriantScore
public void resetAriantScore()將阿里安鬥技場分數歸零。 -
getAriantScore
public int getAriantScore()傳回阿里安鬥技場目前累計分數。- Returns:
- 目前分數
-
updateAriantScore
public void updateAriantScore()向整張地圖廣播此角色最新的阿里安鬥技場分數。透過
CField.updateAriantScore(String, int, boolean)組包後對所在地圖全體玩家廣播。 -
getCoreAura
-
getStolenSkills
-
chooseStolenSkill
public void chooseStolenSkill(int skillID) 選用一個已偷取的幻影技能,並送出更換偷取技能的封包。會先取消同職業的其他已選技能(透過
unchooseStolenSkill(int)),再將指定技能標記為選用並向自身用戶端送出JobPacket.PhantomPacket.replaceStolenSkill(int, int)封包。若偷取技能20031208處於冷卻或清單為null則僅提示並中止。- Parameters:
skillID- 欲選用的偷取技能 ID
-
unchooseStolenSkill
public void unchooseStolenSkill(int skillID) 取消選用與指定技能同職業的所有已選偷取技能。對同職業每個已選技能呼叫
cancelStolenSkill(int)取消其效果,並在有變更時透過changeSkillLevel_Skip(Skill, int, byte)與JobPacket.PhantomPacket.replaceStolenSkill(int, int)同步用戶端。 若偷取技能20031208處於冷卻或清單為null則僅提示並中止。- Parameters:
skillID- 用來判定職業的偷取技能 ID
-
addStolenSkill
public void addStolenSkill(int skillID, int skillLevel) 為此角色(幻影)新增一個偷取的技能。會檢查該技能可被偷取(
GameConstants.canSteal(Skill))、尚未偷過、且同職業已偷數量未達上限 (GameConstants.getNumSteal(int));條件符合時加入清單、設定changed_skills、以changeSkillLevel_Skip(Skill, int, byte)賦予技能,並向自身用戶端送出JobPacket.PhantomPacket.addStolenSkill(int, int, int, int)。 超過上限或重複時改送提示與CWvsContext.enableActions()。若20031208冷卻中或清單為null則中止。- Parameters:
skillID- 欲偷取的技能 IDskillLevel- 欲設定的技能等級(會被夾在技能最大等級與偷取主動技能等級之內)
-
removeStolenSkill
public void removeStolenSkill(int skillID) 移除一個已偷取的幻影技能,並重建該職業的偷取技能用戶端顯示。若該技能正被選用會先
unchooseStolenSkill(int);接著取消其效果、自清單移除、設定changed_skills、將技能等級歸零,並重送該職業所有剩餘偷取技能的封包以重建 UI。 若20031208冷卻中或清單為null則中止。- Parameters:
skillID- 欲移除的偷取技能 ID
-
cancelStolenSkill
public void cancelStolenSkill(int skillID) 取消由此角色施放之偷取技能在地圖上仍生效的 buff/debuff 效果。若該技能為怪物 debuff,會走訪地圖上所有怪物(
MapleMap.getAllMonstersThreadsafe())取消由本角色施放的對應狀態; 若為持續性的玩家增益,則對地圖上所有玩家(MapleMap.getCharactersThreadsafe())呼叫cancelEffect(MapleStatEffect, boolean, long)。- Parameters:
skillID- 偷取技能 ID
-
getInnerSkills
傳回此角色的內在能力(Inner Ability)技能清單。- Returns:
- 內在能力技能清單
-
getFriendShipPoints
public final int[] getFriendShipPoints()傳回好感度點數陣列(對應四位好感度 NPC)。- Returns:
- 好感度點數陣列
-
setFriendShipPoints
public final void setFriendShipPoints(int joejoe, int hermoninny, int littledragon, int ika) 一次設定四位好感度 NPC 的好感度點數。- Parameters:
joejoe- 第 0 格(喬喬)點數hermoninny- 第 1 格點數littledragon- 第 2 格(小龍)點數ika- 第 3 格點數
-
getFriendShipToAdd
public final int getFriendShipToAdd()傳回待加入的好感度點數暫存值。- Returns:
- 待加入的好感度點數
-
setFriendShipToAdd
public final void setFriendShipToAdd(int points) 設定待加入的好感度點數暫存值。- Parameters:
points- 待加入的好感度點數
-
addFriendShipToAdd
public final void addFriendShipToAdd(int points) 將指定點數累加至待加入的好感度點數暫存值。- Parameters:
points- 要累加的好感度點數
-
setHonourExp
public void setHonourExp(int exp) 設定名譽(Honor)經驗值。- Parameters:
exp- 名譽經驗值
-
getHonourExp
public int getHonourExp()傳回目前的名譽(Honor)經驗值。- Returns:
- 名譽經驗值
-
setHonorLevel
public void setHonorLevel(int level) 設定名譽(Honor)等級。- Parameters:
level- 名譽等級
-
getHonorLevel
public int getHonorLevel()傳回名譽(Honor)等級。副作用:若等級為 0 會先自增為 1 再回傳。
- Returns:
- 名譽等級(至少為 1)
-
addHonorExp
public void addHonorExp(int amount, boolean show) 增加名譽(Honor)經驗值,達門檻時自動升級並送出更新封包。經驗門檻為
名譽等級 * 500;跨越門檻時呼叫honorLevelUp()並結轉剩餘經驗。 向自身用戶端送出CWvsContext.updateAzwanFame(int, int, boolean)與CWvsContext.professionInfo(String, int, int, int)封包;show為真時並向玩家顯示獲得訊息。- Parameters:
amount- 要增加的名譽經驗值show- 是否顯示獲得提示訊息
-
honorLevelUp
public void honorLevelUp()提升名譽(Honor)等級 1 級,並在特定等級獎勵內在能力技能。升級後送出
CWvsContext.updateAzwanFame(int, int, boolean);於等級 2/30/70 時透過InnerAbillity取得一個新的內在能力技能、加入innerSkills、以changeSkillLevel(Skill, byte, byte)賦予,並送出CField.updateInnerPotential(byte, int, int, int)封包。 -
getHonorNextExp
public int getHonorNextExp()傳回升至下一名譽等級所需的累計經驗門檻。- Returns:
- 下一級所需經驗(
(名譽等級+1) * 500);等級為 0 時為 0
-
gainHonor
public void gainHonor(int honor, boolean show) 增加名譽經驗值,並可選擇向用戶端顯示獲得提示。委派至
addHonorExp(int, boolean)(以show=false呼叫); 當show為真時另送InfoPacket.showInfo(String)至自身用戶端。- Parameters:
honor- 要增加的名譽經驗值show- 是否顯示獲得提示
-
setKeyValue
-
getKeyValue
-
resetRunningStack
public void resetRunningStack()將跑步(running)堆疊計數歸零。 -
getRunningStack
public int getRunningStack()傳回目前的跑步(running)堆疊計數。- Returns:
- 跑步堆疊計數
-
addRunningStack
public void addRunningStack(int s) 將指定值累加至跑步(running)堆疊計數。- Parameters:
s- 要累加的數值
-
setCardStack
public void setCardStack(byte amount) 設定卡片(card)堆疊數量。- Parameters:
amount- 卡片堆疊數量
-
getCardStack
public byte getCardStack()傳回目前的卡片(card)堆疊數量。- Returns:
- 卡片堆疊數量
-
removePartTime
public static void removePartTime(int cid) 自資料庫刪除指定角色的兼職(part-time)工作紀錄。對
parttime資料表以角色 ID 為條件執行DELETE;失敗時記錄於日誌。- Parameters:
cid- 角色 ID
-
addPartTime
由PartTimeJob物件新增一筆兼職工作紀錄至資料庫。角色 ID 小於 1 時直接略過;否則委派至
addPartTime(int, byte, long, int)。- Parameters:
partTime- 兼職工作資料物件
-
addPartTime
public static void addPartTime(int cid, byte job, long time, int reward) 將一筆兼職(part-time)工作紀錄寫入資料庫。對
parttime資料表執行INSERT;失敗時記錄於日誌。- Parameters:
cid- 角色 IDjob- 兼職工作類別time- 工作時間值reward- 獎勵值
-
getPartTime
從資料庫讀取指定角色的兼職(part-time)工作紀錄。對
parttime資料表以角色 ID 查詢;查無紀錄時回傳僅含角色 ID 的空白物件。- Parameters:
cid- 角色 ID- Returns:
- 兼職工作資料物件(永不為
null)
-
equip
public void equip(int itemId) 將指定道具穿戴到此角色身上(不取代既有裝備、必要時自動取得)。委派至
equip(int, boolean, boolean),以replace=false、add=true呼叫。- Parameters:
itemId- 要穿戴的裝備道具 ID
-
equip
public void equip(int itemId, boolean replace) 將指定道具穿戴到此角色身上,可選擇是否取代既有裝備。委派至
equip(int, boolean, boolean),以add=true呼叫。- Parameters:
itemId- 要穿戴的裝備道具 IDreplace- 該裝備位若已有道具是否先卸下取代
-
equip
public void equip(int itemId, boolean replace, boolean add) 將指定道具穿戴到此角色對應的裝備位。於
EQUIP背包中尋找該道具;找不到且add為真時會自動產生並加入背包 (透過MapleInventoryManipulator.addbyItem(MapleClient, Item))。依ItemConstants.getEquipedSlot(int)決定裝備位, 找不到位置時對 GM 顯示提示後中止。replace為真且該位已有裝備時先卸下並送出InventoryPacket.dropInventoryItem(MapleInventoryType, short),最後以MapleInventoryManipulator.equip(MapleClient, short, short)完成穿戴。 會變更背包狀態並送出封包。- Parameters:
itemId- 要穿戴的裝備道具 IDreplace- 該裝備位若已有道具是否先卸下取代add- 背包中無此道具時是否自動產生並加入
-
unequip
public void unequip(int itemId) 卸下指定的已穿戴道具(放回背包,不從背包移除)。委派至
unequip(int, boolean),以remove=false呼叫。- Parameters:
itemId- 要卸下的道具 ID;負值時視為裝備位 slot
-
unequip
public void unequip(int itemId, boolean remove) 卸下指定的已穿戴道具,可選擇直接刪除而非放回背包。itemId為非負時依道具 ID 於EQUIPPED背包搜尋,為負時視為裝備位 slot 直接取得。remove為真時自裝備位移除並送出InventoryPacket.dropInventoryItem(MapleInventoryType, short);否則以MapleInventoryManipulator.unequip(MapleClient, short, short)卸至EQUIP背包空位。會變更背包狀態並送出封包。- Parameters:
itemId- 要卸下的道具 ID;負值時視為裝備位 slotremove- 是否直接刪除(true)而非放回背包(false)
-
dofkingputer
public void dofkingputer()移除此角色多餘的召喚獸,僅保留索引 0 的那一隻以外的逐一清除。同時取得
visibleMapObjectsLock與summonsLock的寫鎖(先鎖前者以避免死結); 對符合條件的召喚獸向地圖廣播SummonPacket.removeSummon(int, int)、自地圖移除、並自可見物件清單與召喚清單移除。 -
getOnlineTime
public int getOnlineTime()傳回此角色累計的線上時間。- Returns:
- 線上時間值
-
addOnlineTime
public void addOnlineTime()將累計線上時間加 1。
-