扛把子 发表于 2022-1-25 13:52:36

TS-直接把怪物对象变成玩家的宝宝[老论坛]

我目前属于初学者,希望大家多指点 谢谢啦!


//以FunctionNpc的玩家攻击触发为例:GameLib.onPlayerAttack = (Player : TPlayObject,UserMagic : TUserMagic,Target : TActor,Accept : boolean) : boolean => {    let a: TActor ;//声明一个空对象,用来判断    if (      Target.Master == a &&//判断目标的主人是空对象(即没有主人)      Target.IsNPC() == false &&//目标不是NPC      Target.IsPlayer() == false//目标不是玩家      ) {            Player.SlaveList.Add(Target);//在玩家的宝宝列表内加入目标对象            Target.Master = Player;//目标的主人设为玩家            Target.MasterRoyaltyTick = 86400000;//叛变时间,好像单位是毫秒            Target.Name = Target.Name;//刷新一下宝宝名,不然宝宝名字后面不出现"(玩家名)"            //下面这句在控制台会报错,有人能告诉我为什么吗            //初步猜测是玩家的宝宝列表没加上目标对象,可上面有加,所以有些懵啦                // Player.SendMessage('我的一号宝宝:'+ Player.SlaveList.Name, 3);            Target.SearchViewRange//之前目标变成宝宝后宝宝会打主人,加了这句好像就不会打人了(搜索可视范围,有攻击目标才会攻击)            Target.SendMessage('F我的主人是'+Target.Master.Name , 3);          }
报错的关键信息: Unable to get property 'Name' of undefined or null reference "undefined" TypeError: Unable to get property 'Name' of undefined or null reference

霸道永存 发表于 2022-1-25 15:16:43

需使用:Player.SlaveList.Actor(0)

TActorList 获取TActor时使用方法Actor(index: number),不是直接用下标
参考描述文件
declare class TActorList {        GetCount(): number;        Count: number;        Actor(index: number): TActor;        Add(Item: TActor): number;        Delete(Index: number): void;        Free: () => void;
}大包子:
哇 谢谢!学到了

扛把子 发表于 2022-2-6 15:57:47

最新:用 Target.SearchViewRange 刷新宝宝仇恨,让它不打主人好像有时候不生效。。

xiaonanhai 发表于 2022-3-21 12:39:13

大佬

hands.games 发表于 2023-12-19 12:10:11

感谢分享!!!
页: [1]
查看完整版本: TS-直接把怪物对象变成玩家的宝宝[老论坛]