🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
``` unit Q2; interface uses Classes, SysUtils; procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs); implementation procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs); var AItem: TUserItem; I: Integer; begin //方法1: 使用CopyFrom执行属性完全拷贝 if Player.Wepon <> nil then //如果玩家穿戴了武器 begin AItem := Npc.GiveItem(Player, '乌木剑', False); //发放一把新武器乌木剑,因为需要属性拷贝,所以最后一个参数为False,减少了随机升级物品带来的开销 if AItem.CopyFrom(Player.Wepon) then //将乌木剑的属性从人物携带的武器上拷贝过来 Player.UpdateItem(AItem); //如果属性拷贝成功则通知客户端更新这把武器的属性 end; //CopyFrom是属性完全拷贝,但不影响物品类型和编号,比如上例,拷贝属性后乌木剑依旧为乌木剑,但是极品属性是从人物穿戴武器上拷贝而来 //方法2: 自定义属性拷贝 if Player.Wepon <> nil then //如果玩家穿戴了武器 begin AItem := Npc.GiveItem(Player, '乌木剑', False); //发放一把新武器乌木剑,因为需要属性拷贝,所以最后一个参数为False,减少了随机升级物品带来的开销 AItem.AddAC := Player.Wepon.AddAC; AItem.AddMAC := Player.Wepon.AddMAC; AItem.AddDC := Player.Wepon.AddDC; //拷贝物理攻击 AItem.AddMC := Player.Wepon.AddMC; //拷贝魔法攻击 AItem.AddSC := Player.Wepon.AddSC; //拷贝道术攻击 AItem.AddTC := Player.Wepon.AddTC; //拷贝射术攻击 AItem.AddPC := Player.Wepon.AddPC; //拷贝刺术攻击 for I := 0 to 6 do //拷贝附加属性 begin AItem.AddPoint[I].ValueType := Player.Wepon.AddPoint[I].ValueType; //拷贝属性类型 AItem.AddPoint[I].Value := Player.Wepon.AddPoint[I].Value; //拷贝属性值 end; //这里还可以拷贝强化属性、宝石镶嵌及绑定状态等 Player.UpdateItem(AItem); //如果属性拷贝成功则通知客户端更新这把武器的属性 end; //方法2比方法1复杂,但是方法2可以控制拷贝项 end; end. ```