diff --git a/lib/GMLIB_API-JS.d.ts b/lib/GMLIB_API-JS.d.ts index ed07bc1..09c26f1 100644 --- a/lib/GMLIB_API-JS.d.ts +++ b/lib/GMLIB_API-JS.d.ts @@ -1097,12 +1097,6 @@ interface Player { /** 方块对象 */ block: Block ): number; - - /** (GMLIB)玩家是否拥有buff效果 */ - hasEffect( - /** 效果ID */ - effectId: number - ): boolean; } interface Entity { @@ -1162,6 +1156,12 @@ interface Entity { family: string ): boolean; + /** (GMLIB)实体是否拥有buff效果 */ + hasEffect( + /** 效果ID */ + effectId: number + ): boolean; + /** (GMLIB)获取buff信息 */ getEffectInfo( /** 效果ID */ diff --git a/lib/GMLIB_API-JS.js b/lib/GMLIB_API-JS.js index 0813107..93daa30 100644 --- a/lib/GMLIB_API-JS.js +++ b/lib/GMLIB_API-JS.js @@ -344,22 +344,24 @@ const GMLIB_API = { entityHasFamily: ll.import("GMLIB_API", "entityHasFamily"), /** 获取玩家破坏方块所需时间 @type {function(Player,Block):number} */ getPlayerDestroyBlockProgress: ll.import("GMLIB_API", "getPlayerDestroyBlockProgress"), - /** 获取玩家的buff是否显示 @type {function(Player,number):boolean} */ + /** 获取实体的buff是否显示 @type {function(Player,number):boolean} */ getEntityEffectVisible: ll.import("GMLIB_API", "getEntityEffectVisible"), - /** 获取玩家的buff持续时间 @type {function(Player,number):number} */ + /** 获取实体的buff持续时间 @type {function(Player,number):number} */ getEntityEffectDuration: ll.import("GMLIB_API", "getEntityEffectDuration"), - /** 获取玩家的buff简单模式下的持续时间 @type {function(Player,number):number} */ + /** 获取实体的buff简单模式下的持续时间 @type {function(Player,number):number} */ getEntityEffectDurationEasy: ll.import("GMLIB_API", "getEntityEffectDuration"), - /** 获取玩家的buff困难模式下的持续时间 @type {function(Player,number):number} */ + /** 获取实体的buff困难模式下的持续时间 @type {function(Player,number):number} */ getEntityEffectDurationHard: ll.import("GMLIB_API", "getEntityEffectDurationHard"), - /** 获取玩家的buff普通模式下的持续时间 @type {function(Player,number):number} */ + /** 获取实体的buff普通模式下的持续时间 @type {function(Player,number):number} */ getEntityEffectDurationNormal: ll.import("GMLIB_API", "getEntityEffectDurationNormal"), - /** 获取玩家的buff效果等级 @type {function(Player,number):number} */ + /** 获取实体的buff效果等级 @type {function(Player,number):number} */ getEntityEffectAmplifier: ll.import("GMLIB_API", "getEntityEffectAmplifier"), - /** 获取玩家的buff是否为信标给予 @type {function(Player,number):boolean} */ + /** 获取实体的buff是否为信标给予 @type {function(Player,number):boolean} */ getEntityEffectAmbient: ll.import("GMLIB_API", "getEntityEffectAmbient"), - /** 玩家是否拥有buff效果 @type {function(Player,number):boolean} */ + /** 实体是否拥有buff效果 @type {function(Player,number):boolean} */ entityHasEffect: ll.import("GMLIB_API", "entityHasEffect"), + /** 获取实体所有buff效果 @type {function(Entity):Array.} */ + getEntityAllEffects: ll.import("GMLIB_API", "getEntityAllEffects"), /** 获取游戏难度 @type {function():number} */ getGameDifficulty: ll.import("GMLIB_API", "getGameDifficulty"), /** 设置游戏难度 @type {function(difficulty):void} */ @@ -2585,7 +2587,7 @@ LLSE_Player.prototype.getDestroyProgress = LLSE_Entity.prototype.hasEffect = /** - * 玩家是否拥有buff效果 + * 实体是否拥有buff效果 * @param {number} effectId buff效果ID * @returns {boolean} */ diff --git a/src/CompatibilityApi.cpp b/src/CompatibilityApi.cpp index e09c092..ef3326c 100644 --- a/src/CompatibilityApi.cpp +++ b/src/CompatibilityApi.cpp @@ -1,5 +1,6 @@ #include "Global.h" #include +#include bool isInteger(const std::string& str) { std::regex pattern("^[+-]?\\d+$"); @@ -935,6 +936,14 @@ void Export_Compatibility_API() { RemoteCall::exportAs("GMLIB_API", "entityHasEffect", [](Actor* entity, int effectId) -> int { return entity->hasEffect(*MobEffect::getById(effectId)); }); + RemoteCall::exportAs("GMLIB_API", "getEntityAllEffects", [](Actor* entity) -> std::vector { + auto effects = entity->getAllEffects(); + std::vector results = {}; + for (auto effect : effects) { + results.push_back((int)effect.mId); + } + return results; + }); RemoteCall::exportAs("GMLIB_API", "getGameDifficulty", []() -> int { if (auto level = ll::service::getLevel()) { return (int)level->getDifficulty();