From 4857867821dc138bf529da18a8220ccfd458ab79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=90=E6=B2=90=E5=91=80?= <163636894+zimuya4153@users.noreply.github.com> Date: Thu, 1 Aug 2024 21:23:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0getEntityAllEffects=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/GMLIB_API-JS.d.ts | 12 ++++++------ lib/GMLIB_API-JS.js | 20 +++++++++++--------- src/CompatibilityApi.cpp | 9 +++++++++ 3 files changed, 26 insertions(+), 15 deletions(-) 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();