本文作者:Zircon传奇爱好者

z服加衣服内外发光(翅膀)及骑马时翅膀显示错误修复

z服加衣服内外发光(翅膀)及骑马时翅膀显示错误修复 摘要: 装备的内发光处理有两个方法,一个是处理自己的,一个是处理你查看别人装备的,分别是:private void CharacterTab_BeforeChildrenDraw(obje...

装备的内发光处理有两个方法,一个是处理自己的,一个是处理你查看别人装备的,分别是:private void CharacterTab_BeforeChildrenDraw(object sender, EventArgs e)//自己装备内发光

private void CharacterTab_BeforeChildrenDraw(object sender, EventArgs e)//查看别人装备内发光
这个方法的原理就是switch (index)//定值判断图片资源编号确定内发光

什么意思呢,就是根据数据库里衣服的image来确定是什么衣服.

就拿夜叉斑盔甲来举例它的image分别是2007,2017(男/女)

这个方法里有个判断if (CEnvir.LibraryList.TryGetValue(LibraryFile.EquipEffect_UI, out effectLibrary))
这句我也不懂是什么意思,大概就是从EquipEffect_UI里读取数据吧
case 2007:
        image = effectLibrary.CreateImage(500 + (GameScene.Game.MapControl.Animation % 13), ImageType.Image);
        break;
case 2017:
        image = effectLibrary.CreateImage(520 + (GameScene.Game.MapControl.Animation % 13), ImageType.Image);

这是原来作者就写好了的,这两代码什么意思呢
用资源查看器打开EquipEffect_UI括号里500,520,就是夜叉斑盔甲内发光的第一帧图的编号,% 13就是这个内发光一组有多少帧,
当然内发光分有动画和无动画,无动画具体可以参考作者的写法!原理都一样,

那外发光又是咋回事呢
他在 private void DrawWings()中处理
同样用if (!CEnvir.LibraryList.TryGetValue(LibraryFile.EquipEffect_Part, out library)) return;来读取资源//这个很关键因为要添加新的外发光而这个外发光又在别的资源里要用到
switch (ArmourImage)通过imag来确定衣服
case 2007:
case 2017:

library.DrawBlend(600 + (GameScene.Game.MapControl.Animation / 2) % 13 + (int)Direction * 20, DrawX, DrawY, Color.White, true, 1f, ImageType.Image);
break;

同样600就是EquipEffect_Part外发光中的第一帧所在的编号% 13 是一组有多少帧DrawX, DrawY是资源的偏移这俩个字段很重要是修复骑马时外发光
显示错误的关键,
比如我要添加一个新外发光在EquipEffect-Full中,
要在Library/Libraries.cs/ public enum LibraryFile中添加新的字段EquipEffect_Full
在 public static Dictionary<LibraryFile, string> LibraryList = new Dictionary<LibraryFile, string>中添加路径//参照作者的写法
然后private void DrawWings()方法中添加if (!CEnvir.LibraryList.TryGetValue(LibraryFile.EquipEffect_Full, out library)) return//注意这句一定要添加在上一个switch的后面
根据你的衣服定制不一样的外发,
骑马时如何解决外发光显示错误?
这个要在处理发光的前面加上骑马状态判断
拿夜叉斑盔甲来举例
case 2007:
case 2017:
         if (MapObject.User.Horse != HorseType.None)//骑马判断//骑马
        {
            library.DrawBlend(600 + (GameScene.Game.MapControl.Animation / 2) % 13 + (int)Direction * 20, DrawX, DrawY-25, Color.White, true, 1f, ImageType.Image);//改变DrawY就行了!具体的数值根据资源细调
        break;
          }
           else
          {
             library.DrawBlend(600 + (GameScene.Game.MapControl.Animation / 2) % 13 + (int)Direction * 20, DrawX, DrawY, Color.White, true, 1f, ImageType.Image);
           break;//不骑马处理
             }

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享
您需要 登录账户 后才能发表评论

发表评论

快捷回复:

评论列表 (暂无评论,230人围观)参与讨论

还没有评论,来说两句吧...