明月代码制作js篇:使用js代码完成基本的任务

更新时间:2024-06-04 22:24:44 来源:互联网 作者:木旦勿文
  使用js可以实现对步骤,参数,行为的精确控制;并实现复杂的功能,这里由木旦勿文大佬给大家分享明月如何使用js代码完成基本的任务。主要提供两个技巧:多函数共用、使用队列。

使用js代码实现对参数值的精确控制

  使用js值可以实现对对象,例如对装备属性(战力,各类),装备种类(部位,质量),守卫特殊(是否超暗,是否满级,开几格真灵)进行筛选,并可以按照自己的计划来进行培养。下面由木旦勿文大佬给大家举几个例来说明js代码如何实现对参数值的精确控制。

  1、魔法池守卫加血

  制作魔法池守卫加血代码的关键是筛选哪些守卫需要加血。这就需要对一波守卫进行分析,查找哪些守卫需要加血,需要加多少血,需要用哪些果实。
       功能目标:完成对某些守卫血量少于某个值时,自动使用1个体力果。
  步骤1:获取守卫列表数据;url:{!nc}magicquery;post:{ncs}&act=2010058;可以使用存值,也可以使用消息传值:hero;
  步骤2:魔法池加血;url:{!nc}magicexchange;  post : {ncs}&act=2010007&id=4&num=1&index={*:[CC:get_blood()]};
       get_blood()这个函数的主体需要写在js代码里。
  分析:index为参数名称,=右面的是使用了明月的批量执行标识{*:},{*:1,2,3,4}表示依次执行index=1,index=2,index=3,index=4。因此get_blood()函数的功能就是对守卫进行分析后,找出血量少于某值的守卫放在数组中,并最后使用“,”进行分隔。
  get_blood()函数主体如下
  function get_blood(){
         var hero=[msg];//调用上步骤的消息传值
         var i;
         var hl_length=hero.length;
         var hero_new=[];//建立新数组,用于存储经过筛选的守卫索引。
         for(i=0;i<hl_length;i++){
            if(hero[i].leftPhysical<=0){//判断守卫的血量为0时就自动使用一个普通体力果。0值可修改,可自定义为自己的值。
                 hero_new.push(hero[i].heroIndex);//push()是js中的压栈函数,将一个值装入数组中。
            }
         }
        return hero_new.join();//join()的作用是将hero_new数组中的值使用“,”进行分隔,并采用1,2,3,4,5的形式来组成字符串。这也是明月{*:}批量执行所需要的格式
       }

  2、自动升级守卫

        步骤1:获取守卫列表数据;url:{!nc}magicquery;post:{ncs}&act=2010058;可以使用存值,也可以使用消息传值:hero;
        步骤2:魔法池加血;url:{!nc}magicexchange;  post : {ncs}&act=2010007&pays=1&index={CC:qf_up({#21:crop},"index")}&id={CC:qf_up({#21:crop},"id")}&num={CC:qf_up({#21:crop},"num")}
   分析:查找守卫数据、果实数据,计算守卫升级经验值,计算需要多少果实。这个升级方法是比较经典的方法,之所以说经典,主要是思路清晰,而且代表着一种明月代码的开发思路,当然现在也有更好的升级方法,但是木旦勿文主要是用来说明一种思路。这里采用了三个或称多个变量值使用同一个函数来控制数据,{#21:crop}传入的是果实数据,而[msg]传递的是守卫数据。采用存值+消息传两种方法。采用两的意思是一下给大家演示两种传值的方法,实际过程中并不一定要这么做。
   亮点:采用了队列方法来处理守卫升级,队列的特点是:可以实现优先级,在前面的优先;队列也可以作为一个小型数据库,可删可减,可以定义哪些守卫可以升级,哪些不用升级,而不是一股脑的全部升级,浪费资源。
   js代码:
  var myHeroDatabase=[//定义队列
{"index":1,"heroId":72,  "style":"t","name":"大唐御弟"},
{"index":2,"heroId":180, "style":"t","name":"净坛使者"},
{"index":3,"heroId":161, "style":"g","name":"酒仙.李白"},
{"index":4,"heroId":159, "style":"g","name":"剑仙.李白"},
{"index":5,"heroId":158, "style":"g","name":"诗仙.李白"},
{"index":6,"heroId":210, "style":"g","name":"太白金星"},
{"index":7,"heroId":67,  "style":"f","name":"道祖太上老君"},
{"index":8,"heroId":69,  "style":"g","name":"托塔李天王"},
{"index":9,"heroId":63,  "style":"g","name":"昊天仙皇"},
{"index":10,"heroId":93, "style":"g","name":"彼岸花.魑"},
{"index":11,"heroId":98, "style":"f","name":"妖灵.魍"},
{"index":12,"heroId":112,"style":"f","name":"幽魂.魉"},
{"index":13,"heroId":34, "style":"g","name":"卧龙诸葛孔明"},
{"index":14,"heroId":84, "style":"g","name":"妖王.奉仙"},
{"index":15,"heroId":106,"style":"g","name":"黯帝.曹孟德"},
{"index":16,"heroId":54, "style":"g","name":"极,灭世仲颖"},
{"index":17,"heroId":172,"style":"f","name":"魔弓.汉升"},
{"index":18,"heroId":1 , "style":"t","name":"娃子"},
{"index":19,"heroId":2 , "style":"g","name":"胖墩"},
{"index":20,"heroId":5 , "style":"g","name":"老伯"},
{"index":21,"heroId":208,"style":"f","name":"武生兔爷"},
{"index":22,"heroId":87, "style":"g","name":"魔圣.云长"},
{"index":23,"heroId":107,"style":"g","name":"魔枪.子龙"},
{"index":24,"heroId":79, "style":"g","name":"黑炎.周公瑾"},
{"index":25,"heroId":95, "style":"g","name":"转世.哪咤"}
];
var myPeriod=600;//定义升级阶段,即一次升级多少经验
function qf_json_array_has(a,f1,v1,f2){//函数API,可重复使用,获取a数组中当f1字段的值等于v1时,另外一个字段f2的值,这里的一个应用是从果实中查找种子id为4时,它的数量是多少,这个api使用非常广泛。
  var i;
  var a_length=a.length;
  for(i=0;i<a_length;i++){
    if(a[i][f1]==v1){
      return a[i][f2];
    }
  }
  return false;
}
function qf_up(mycrop,rtype){//升级主体函数
  var hl=[msg];
  var hl_length=hl.length;
  var i,j;
 
  for(i=0;i<hl_length;i++){//循环体内通过查看守卫开几个真灵来计算最高等级
    var ss_num=0;
    for(j=0;j<4;j++){
      if(hl[i]["spriteLevel"][j]!=-1){
        ss_num++;
      }
    }
    hl[i]["maxLevel"]=30+ss_num*5;
  }
 
var self_def_hero_length=myHeroDatabase.length;
var need=[];
if(self_def_hero_length==0){
  for(i=0;i<hl_length;i++){
    if(hl[i]["heroLevel"]<hl[i]["maxLevel"]){//判断哪些守卫的实际等级小于最高等级,就是确定哪些守卫需要升级。
      need=hl[i];break;
    }
  }
}else{
  for(i=0;i<hl_length;i++){
     if(qf_json_array_has(myHeroDatabase,"heroId",hl[i]["heroId"],"heroId")&&hl[i]["heroLevel"]<hl[i]["maxLevel"]){
       need=hl[i];break;
     }
  }
}
if(need.length==0){//判断假如没有需要升级的守卫,则返回一个不存在的守卫
    if(rtype=="id"){return 7;}else if(rtype=="num"){return 5;}else{
      return 0;
    }
}
 
var pt_num=qf_json_array_has(mycrop,"crop_id",1,"crop_num");
var need_pt=Math.ceil(myPeriod/10);
if(need_pt<=pt_num){//判断普通经验种子是否满足需要
  if(rtype=="id"){return 1;}else if(rtype=="num"){return need_pt;}else{
     return need["heroIndex"];
  }
}
 
var zhongji_num=qf_json_array_has(mycrop,"crop_id",2,"crop_num");
var need_zj=Math.ceil(myPeriod/20);
if(need_zj<=zhongji_num){//判断高级经验种子是否满足需要
     if(rtype=="id"){return 2;}else if(rtype=="num"){return need_zj;}else{
        return need["heroIndex"];
    }
}
 
var gaoji_num=qf_json_array_has(mycrop,"crop_id",3,"crop_num");
var need_gj=Math.ceil(myPeriod/50);
if(need_gj<=gaoji_num){//判断中级经验种子是否满足需要
     if(rtype=="id"){return 3;}else if(rtype=="num"){return need_gj;}else{
      return need["heroIndex"];
    }
}
 
var teji_num=qf_json_array_has(mycrop,"crop_id",7,"crop_num");
var need_tj=Math.ceil(myPeriod/120);
if(need_tj<=teji_num){//判断高级经验种子是否满足需要
    if(rtype=="id"){return 7;}else if(rtype=="num"){return need_tj;}else{
      return need["heroIndex"];
    }
}
if(rtype=="id"){return 7;}else if(rtype=="num"){return 5;}else{
    return 0;
  }
}
  本文由农场大佬级玩家木旦勿文大佬贡献,欢迎大家前来投稿,分享自己的收获成果。青锋建站,提供专业的高品质网站制作服务,包括多语言网站建设,中英文建站,外贸网站制作,微小程序开发,APP开发,SEO,网络营销,PHP开发,网站建设知名品牌,全国接单,为企业构建强有力的营销平台。

转载请注明来源网址:青锋建站-http://www.sjzphp.com/kaifazhe/fuzhu/js_start_1919.html

电话 15632335515 | 邮箱 943703539@qq.com | QQ 943703539 | 微信 qingfengjianzhan

Copyright © 2016-2026 青锋建站 版权所有