多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
>[danger] 注:在自定义技能中指定了动作为脚本类后,执行函数的名称即为MagicNpc里的函数名,函数声明格式和上面的Magic1001函数完全一致即可,返回True表示执行成功,返回False则执行失败。如果脚本动作为技能的第一个动作,返回失败后其后面的动作均不会执行 ``` Unit MagicNpc; Interface Uses Classes, SysUtils; { 怪物攻击技能选取 AMon: 当前执行攻击动作的怪物 ATarget: 被攻击的对象 AMagicID: 技能ID.默认为0,即普通的物理攻击 } Procedure Monselectmagicbeforeattack(AMon, ATarget: TActor; Var AMagicID: Integer); { 自定义技能脚本触发入口 ASource: 施法者(玩家、人形怪及怪物等) ATarget: 施法者鼠标指向的对象(可能为nil,即没选择任何目标) ATargetX, ATargetY: 施法者鼠标所指坐标(ATarget不为nil时即为ATarget的坐标) AMouseX, AMouseY: 施法者鼠标所指坐标 AList: 根据当前技能配置,技能在释放后选择的目标列表 AMagic: 当前魔法对象 } Function Magic208(ASource, ATarget: TActor; ATargetX, ATargetY, AMouseX, AMouseY: Integer; AList: TActorList; AMagic: TUserMagic): Boolean; Function Mag200(ASource, ATarget: TActor; ATargetX, ATargetY, AMouseX, AMouseY: Integer; AList: TActorList; AMagic: TUserMagic): Boolean; Implementation Procedure Monselectmagicbeforeattack(AMon, ATarget: TActor; Var AMagicID: Integer); Begin //case Random(10) of // 0: AMagicID := 11; //雷电术 // 1: AMagicID := 23; //爆裂火焰 // 2: AMagicID := 206; //推山掌 //end; End; Function Magic208(ASource, ATarget: TActor; ATargetX, ATargetY, AMouseX, AMouseY: Integer; AList: TActorList; AMagic: TUserMagic): Boolean; Begin //Gamelib.Broadcast(Format('%s 触发技能 %s 脚本', [ASource.Name, AMagic.Name])); Result := True; End; Function Mag200(ASource, ATarget: TActor; ATargetX, ATargetY, AMouseX, AMouseY: Integer; AList: TActorList; AMagic: TUserMagic): Boolean; Begin Result := True; End; End. ```