第一讲 序言与基本数据修改

转载自铁血丹心论坛 苍半 DIY专区

http://www.txdx.net/thread-498689-1-1.html

转载注明出处!

------------------------------------------------------------------------------------------


第一讲 序言与基本数据修改


1.1   序言
      之前断断续续发有关于DIY修改的方法,现在想把它统一起来,形成更系统化的新手教学,里面再掺杂一些编程思想、编程技巧等知识。我的目标是做成一个属于自己的金庸MOD心得手册。

      由于我自己也是九月份初才开始接触DIY,有不少东西理解不是很透,甚至出来错误不合理的地方,希望大家莫怪,更希望各位高手能指出。时间不长所以目前未有什么教学计划,只是把自己所学到的东西分享出来,随着以后的学习,我会努力把这些东西进行再一次的重新更新与整合。

      lua的语法不准备进行多说
      我认为只有打好基础,你的MOD内容才更会丰富,更实际
      有一些我自己认为比较复杂的,会先不放出来,留到以后配合实例再进行详细的讲解。
      每一次都尽量配上实例,空理论我自己看也会头疼。
      每一次都会配上相应的文件、源码下载
      尽量做到每天一更新

1.2   开始第一讲,基本数据的修改
      学习的目标:理解基本数据的定义,以及如何去修改这些数据。
      
遗留难点:商店数据,暂时不进行讲解,以后会配合事件编辑,打造属于自己的小卖部。

1.3   先看定义

1.    JY.Base={};          --基本数据

2.    JY.PersonNum=0;     --人物个数

3.    JY.Person={};       --人物数据

4.    JY.ThingNum=0       --物品数量

5.    JY.Thing={};        --物品数据

6.    JY.SceneNum=0       --场景数量

7.    JY.Scene={};        --场景数据,场景数据都初始化好了的。建议不要修改

8.    JY.WugongNum=0       --武功数量

9.    JY.Wugong={};        --武功数据

10.  JY.ShopNum=0        --商店数量

11.  JY.Shop={};         --商店数据

复制代码

JY.Base保存基本数据

1.    JY.Base["乘船"] =0;  --是否乘船,1乘船,0走路。船现在都不用了。。。

2.    JY.Base["无用"] = 0;       --此参数作用未明,不知道初始化了什么数据,似乎是子场景

3.    JY.Base["X"] = 0;               --人物在大地图上的X坐标

4.    JY.Base["Y"] = 0;               --人物在大地图上的Y坐标

5.    JY.Base["X1"] = 0;               --人物在小场景上的X坐标

6.    JY.Base["Y1"] = 0;               --人物在小场景上的Y坐标

7.    JY.Base["队伍1"] = 0;               --队友的人物编号,从队伍1 - 队伍6。如果位置上没有队友那么这个数据返回-1,比如只有主角JY.Base["队伍2"]的值就会是-1

8.    JY.Base["物品1"] = 0;               --人物身上的物品编号,数据范围1-200如果不包含物品返回-1

9.    JY.Base["物品数量1"] = 0;       --对应身上物品的数量

复制代码

1.4   实例
1.4.1   瞬间移动

      JY.Base["人X1"] = 30;
      JY.Base["人Y1"] = 40;
      人物直接移到(30,40)的位置,如果这个坐标是场景的出口或者入口,那会是一个什么情况呢

1.4.2    获得队友
      JY.Base["队伍2"] = 1;
      --直接胡斐入队(胡斐编号是1)
      判断队友中是否同时有胡斐和程灵素,咱们引入一个全局变量CC.TeamNum,它保存可加入最大的队伍数量,当前值为6

1.    local n = 0;

2.    for i=1, CC.TeamNum do

3.           if JY.Base["队伍"..i] == 1 or JY.Base["队伍"..i] == 2 then

4.                   n = n+1;

5.           end

6.    end

7.    if n == 2 then

8.           DrawStrBoxWaitKey("胡斐和程灵素在手",C_ORANGE,CC.DefaultFont);               --居中的弹出框

9.    else

10.          DrawStrBoxWaitKey("你的队伍中不同时有胡斐和程灵素",C_ORANGE,CC.DefaultFont);

11.  end

复制代码

1.4.3    新增物品

1.    --此方法只说明原理

2.    local thingid = 0;               --小还丹编号

3.    local num       =        1;       --新增数量,如果设置为负数,就相当于减少数量

4.     

5.    for i=1, CC.MyThingNum do                              --再引入一个全局变量CC.MyThingNum,可拥有的最大物品种类数量,200

6.           if JY.Base["物品"..i] == thingid then               --如果包里有这个物品,累加数量

7.                   JY.Base["物品数量"..i] =JY.Base["物品数量"..i]+ num;

8.                   break;

9.           end

10.          elseif JY.Base["物品" .. i]==-1then                --如果这个物品在包里不存在,新增物品

11.                 JY.Base["物品"..i]= thingid;

12.                 JY.Base["物品数量"..i]= num;

13.          end

14.  end

复制代码

1.4.3   减少物品,和新增物品差不多,但是必须考虑如果此物品用光了之后的情况,现在把这两个内容整合起来

1.    --完整的新增与减少物品的方法

2.    local thingid = 0;               --小还丹编号

3.    local num   =  -2;        --新增数量,如果设置为负数,就相当于减少数量

4.    local pos = 0;       --定义一个标志变量,用来标志物品变更的位置

5.    for i=1, CC.MyThingNum do               

6.           if JY.Base["物品"..i] == thingid then               --如果包里有这个物品,累加数量

7.                   JY.Base["物品数量"..i] =JY.Base["物品数量"..i]+ num;

8.                   pos = i;               --把物品的位置记录下来

9.                   break;

10.          --end  多了个end,语法错误了,悲剧

11.          elseif JY.Base["物品" .. i]==-1 andnum > 0 then               --如果这个物品在包里不存在,新增物品

12.                 JY.Base["物品"..i]= thingid;

13.                 JY.Base["物品数量"..i]= num;

14.                 break;

15.          end

16.  end

17.   

18.  if pos > 0 and JY.Base["物品数量"..pos] <= 0then                --如果物品用光了

19.          for i=pos+1, CC.MyThingNumdo                --必须把这个物品移掉,并且后面的物品都需要向前移动一格

20.                 JY.Base["物品"..i-1]= JY.Base["物品"..i];

21.                 JY.Base["物品数量"..i-1]= JY.Base["物品数量"..i];

22.          end

23.          

24.          --最后那个物品直接清掉

25.          JY.Base["物品"..CC.MyThingNum]= -1;

26.          JY.Base["物品数量"..CC.MyThingNum]= 0;

27.  end

复制代码

上面就是一个比较完整的新增物品了(包括减少物品),思想和用数组定义链表一样,中间断了后面的都要往前移,要不然就有空物品出现了

     基本数据先到这里吧,下次再讲人物数据的相关修改

1.5   结束语

      虽然现在有一些函数已经实现了某些功能,但是我认为还是基础最重要,所以不打算讲关于函数的。
      只有学会了基础,你才可以更随意的定义属于自己的函数,为个性化的MOD做好铺垫

1.6   补充知识
      由于会有一部分新手不知道这些代码怎么去用,所以在这里增加了一点
      首先苍炎版本必须是905版以上(目前最高是905,据S大说国庆会更新)
      比如你的苍炎目录在d:\苍炎,按下面三个步骤走:
      第一步:用记事本打开d:\苍炎\script\DIY.lua文件
      第二步:以第二个实例加入胡斐入队,在DIY.lua文件中输入JY.Base["队伍2"] = 1;
      第三步:进入游戏(如果之前游戏开着可以不用重开),按ESC键,系统菜单,倒数第二项《我的代码》,再确定
      胡斐就直接加入了,其它实例都是按照这种方法

      后面的其它数据修改就不再重复使用DIY的步骤,如果新手请知晓。

      
最后一个获得物品的方法看起来可能比较复杂,新手估计没有人能看得懂,但是获得物品的方法应该就是这样写的,可能以后会简单点直接用函数,但是还是希望各位同学能够认真的推敲一下,对以后的讲解中用到的东西能更容易的理解。代码直接复制到DIY.lua文件里面是可以运行的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值