冒险岛单机论坛,冒险岛交流论坛,最新冒险岛

 找回密码
 立即注册
查看: 2393|回复: 25

从零开始维修教学day2

  [复制链接]
  • TA的每日心情
    开心
    2024-11-6 23:36
  • 签到天数: 319 天

    [LV.8]以坛为家I

    427

    主题

    840

    帖子

    8万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    85363
    发表于 3 天前 | 显示全部楼层 |阅读模式
    今天平有刚好有想写一个物品兑换的脚本~那刚好就拿出来讲吧!
    day1讲过的我就不重複解释了,今天篇幅会比较长!请耐心观看!
    会同时有2维阵列与for迴圈的使用!!!!



    1. /*
    2. *********************
    3. *   功能:物品兑换   *
    4. *     作者: *
    5. *  转载请说明出处   *
    6. *********************
    7. */
    8. //依旧是要函数定义~
    9. var status=-1;
    10. var item;
    11. var text="";
    12. var quer;
    13. var i;
    14. var a;
    15. var b;
    16. var r="\r\n"
    17. var 箭头="#fUI/UIWindow/Quest/icon2/7#";//这个是美化
    18. /*
    19. 其实var后面接的东西没有一定~看你如何命名~
    20. 讲白了就是取名子,至于要不要接等于多少其实都没关西,后面再定义也是可以的!
    21. 至于最后一个美化他是"#F"开头"#"结尾,中间塞你WZ中图片的位置,版上有做好的美化图集合
    22. 可以过去参考。
    23. 因为要做成万能通用型所以代码会比较长,请见谅!
    24. */

    25. /*
    26. 以下是阵列!
    27. 阵列他的判断方式是[[0],[1]]从0开始
    28. 中[]裡的第一个[]是0第二个是1!
    29. 然而我中[]裡面的中[]不只是个数值,而是4个
    30. 那麽一样也是从0开始[0[0,1,2,3],1[0,1,2,3]]
    31. 这样做的好处是可以用for精简你的代码
    32. */
    33. quer=[
    34. //材料,成品,材料数量,成品数量
    35. [4000000,2210000,10,1],
    36. [4000000,2210001,50,1]
    37. ]

    38. //一样起始
    39. function start(){
    40.         action(1,0,0);
    41. }

    42. //接著对话内容!
    43. function action(mode,type,selection){
    44.         status = (mode == 1 ? status+1 :cm.dispose());
    45.                 if(status==0){
    46.                 /*
    47.                 因为经过前一句"status = (mode == 1 ? status+1 :cm.dispose());"
    48.                 加上开启对话是mode1,所以status会+1~-1+1=0,故这个if裡面的东西会被启动
    49.                 */
    50.                 for(i=0;i<quer.length;i++){
    51.                 /*
    52.                 这裡是for迴圈,用途是自动读取选项,他进入这裡时i等同于0的效果
    53.                 他会一直执行大{}中的代码直到quer阵列中的项目结束目前有2向所以只会执行两次
    54.                 当然你也可以用<2,但是这样会受限制于项目数量,当项目有20个时你会算到起笑!
    55.                 */
    56.                 text+="#L"+i+"##z"+quer[i][1]+"##i"+quer[i][1]+"#";
    57.                 /*
    58.                 这边解释这条指令#LX#是选项的指令,X请改成数字
    59.                 但是这边却没有数字对不对!应为我用i代替了!
    60.                 第1圈过来i=0,第2圈过来是i=1所以我的第1个选项是#L0#
    61.                 这于后面的#z#,#i#这个是显示物品名称跟图片他正常要接代码,
    62.                 但是我用quer[i][1]他代替,第一圈过来时可以看成quer[0][1],
    63.                 所以应该是2210000这个物品代码!
    64.                 */
    65.                 }
    66.                 cm.sendNext("你要兑换什麽呢?"+r+text);
    67.                 /*这边的r我定义是\r\n,\r\n这个它是换行的意思+上for裡面定义的text内容
    68.                 对话会长得像这样:
    69.                 你要兑换什麽呢?
    70.                 菇菇宝贝的雕像 图片
    71.                 缎带肥肥的雕像 图片
    72.                 */
    73.                 }
    74.                 if(status==1){
    75.                 a=selection
    76.                 b+="#b#e#z"+quer[a][0]+"##i"+quer[a][0]+"#"+""+quer[a][3]
    77.                 cm.sendGetNumber(b+"个可以兑换成"+r+"#r#z"+quer[a][1]+"#"+"#i"+quer[a][1]+"#"+quer[a][3]+text3,1,1,9999);
    78.                 //cm.sendGetNumber(文字,预设数量,最小数量,最大数量)
    79.                 /*
    80.                 这裡是第二个对话框,其实这裡有三种写法
    81.                 1.用case0 case1 来分别编写功能
    82.                 2.用cm.openNPC来打开指定路进的脚本
    83.                 3.就是目前的这个方法
    84.                 各有各的好处
    85.                 如果兑换物品量小且同为一类,我会偏向方法3
    86.                 如果兑换物品多我会偏向方法二,降低单个脚本的代码量,减少複杂度
    87.                 至于方法3我自己是用不习惯,加上每个功能都要独立在case裡写
    88.                 会比较複杂且没必要
    89.                 挼果写万能NPC我会偏向用方法2
    90.                 */
    91.         }
    92.                 if(status==2){
    93.                 d=selection;
    94.                 e=d*quer[a][2]//计算需要材料
    95.                 f=d*quer[a][3]//计算给予的成品
    96.                 /*
    97.                 数学应该不用我教巴.....
    98.                 */
    99.                 c=cm.haveItem(quer[a][0],e)//判断物品
    100.                 /*我先把变数c他的值改设定cm.haveItem(quer[a][0],e)
    101.                 这样在多条件比较不会少东西,但是应为这个比较简单所以不这样做也行
    102.                 他会判断玩家背包中是否有quer[a][0](4000000)这个物品,以及数量是否有大于e
    103.                 计算出来得数值
    104.                 */
    105.                 if (cm.getSpace(1) < 3 &&cm.getSpace(2) < 3&&cm.getSpace(3) < 3&&cm.getSpace(4) < 3&&
    106.                 cm.getSpace(5) < 3&&cm.getSpace(6) < 3) {
    107.                         cm.sendOk(text5);
    108.                         cm.dispose();
    109.                         return;
    110.                 /*
    111.                 这边是判断背包是否有足够空间cm.getSpace()取得背包,()中的1是装备栏、2是消耗
    112.                 已次类推
    113.                 */
    114.                 }else if(c==true){
    115.                 /*
    116.                 我上面有设定过c=cm.haveItem(quer[a][0],e)那他为真的话就继续执行
    117.                 何谓"真",讲人话就是有需要的物品,且大于你要扣的数量
    118.                 */
    119.                         cm.gainItem(quer[a][1],f);
    120.                         cm.gainItem(quer[a][0],-e);
    121.                         //上面两行给物品跟收物品不多解释了,有问题就留言巴
    122.                         cm.sendOk(text4);
    123.                         cm.dispose();//结束对话
    124.                 }else{
    125.                         cm.sendOk("材料不足");
    126.                         //就材料不够,结果为"假"就执行这边
    127.                         //跟你说材料不足
    128.                         cm.dispose();
    129.                 }
    130.                
    131.         }
    132. }
    复制代码


    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    188

    帖子

    376

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    376
    发表于 3 天前 | 显示全部楼层
    没看完~~~~~~ 先顶,好同志
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    170

    帖子

    342

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    342
    发表于 3 天前 | 显示全部楼层
    可以  看看
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    205

    帖子

    410

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    410
    发表于 3 天前 | 显示全部楼层
    看起来很不错!
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    188

    帖子

    377

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    377
    发表于 3 天前 | 显示全部楼层
    有空来试试,支持下
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    183

    帖子

    366

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    366
    发表于 3 天前 | 显示全部楼层
    真心顶
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    169

    帖子

    338

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    338
    发表于 3 天前 | 显示全部楼层
    顶顶
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    173

    帖子

    346

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    346
    发表于 3 天前 | 显示全部楼层
    好帖就是要顶
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    192

    帖子

    385

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    385
    发表于 3 天前 | 显示全部楼层
    好帖就是要顶
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    178

    帖子

    357

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    357
    发表于 3 天前 | 显示全部楼层
    帮帮顶顶!!
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    185

    帖子

    370

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    370
    发表于 3 天前 | 显示全部楼层
    挺不错
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    187

    帖子

    374

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    374
    发表于 3 天前 | 显示全部楼层
    有空来试试,支持下
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    171

    帖子

    342

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    342
    发表于 3 天前 | 显示全部楼层
    很好哦
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    186

    帖子

    372

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    372
    发表于 3 天前 | 显示全部楼层
    可以  看看
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    167

    帖子

    335

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    335
    发表于 3 天前 | 显示全部楼层
    顶顶
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    |网站地图

    免责声明:论坛资源来源网络公开渠道,如有侵权,请及时告知,联系删除! 邮箱: 3591663665 @qq.com

    快速回复 返回顶部 返回列表