双枪夜灵吧 关注:18贴子:445
  • 23回复贴,共1

估计夜灵用不到了,不过还是发一下吧。整理后洗点功能的代码

只看楼主收藏回复

一楼度娘


1楼2013-05-28 22:38回复

    思路是用自己的变量在洗点时把减少的点数记录下来,然后通过对话或菜单的触发加点
    首先洗点功能共分为三个部分:1、洗点,2、加点(属性点),3、加点(技能点)
    我们只讨论触发的操作块,至于如何触发(菜单、对话抑或是别的什么)以及触发的条件(需要昂贵道具之类)就不重要了。
    在具体操作之前,需要准备两个全局变量"$g_sklpoint_ply"和"$g_attrpoint_ply"并将它们置零(比如用触发器在第一次进入大地图时置零),还需要一个脚本来赋予初始的技能点和属性点的值。该脚本类似下面:
    #比如我打算将主角的初始值设为统御和骑术各一点,力敏智魅分别为5、5、4、5
    ("myp_skl_cal_player",
    [
    (assign,reg11,1),
    (assign,reg34,1),
    #上面的reg11代表统御因为skl_leadership的值为1
    #34-10=24即为skl_rider
    #我尽量避开了较常用的前10个寄存器,从reg10到reg46依次代表交易到铁骨。
    (assign,reg50,5),
    (assign,reg51,5),
    (assign,reg52,4),
    (assign,reg53,5),
    #reg50到reg53依次代表力敏智魅。
    ]),
    下面的" skl_clear"脚本将用到reg10到reg53这些的值。


    2楼2013-05-28 22:39
    回复
      1洗点。
      ("camp_myp_forget",[],"Forget
      what you have learned.",
      [
      #调用myp_reg_clear脚本,该脚本会将reg10到reg55的值设置为零
      (call_script,"script_myp_reg_clear"),
      #调用myp_skl_cal_player脚本,将角色的初始状态赋值给reg10到re55
      #不赋值的默认为零。
      (call_script,"script_myp_skl_cal_player"),
      #调用myp_skl_clear脚本,该脚本会将第一个参数所对应的角色的技能和属性还原到
      #reg10至reg53所记录的状态,并将减少的 技能点之和 及 减少的属性点之和 分别赋值给reg3 和 reg4
      (call_script,
      "script_myp_skl_clear","trp_player"),
      #将reg3、reg4的值增加到moder准备的全局变量中。
      (val_add,"$myp_sklpoint_ply",reg3),
      (val_add,"$myp_attrpoint_ply",reg4),
      ]
      ),
      如此,洗点的功能就完成了。


      3楼2013-05-28 22:41
      回复

        2、加点(属性点)
        属性点的加点比较轻松。
        [
        #假设我们需要给玩家加一点力量
        (assign,”:attr_id”,”ca_strength”),
        (assign,”:npc_id”,”trp_player”),
        (try_begin),
        #当"$myp_attrpoint_ply"大于0时
        (gt,"$myp_attrpoint_ply",0),
        (troop_raise_attribute,
        ”:npc_id”,":attr_id",1),
        (val_sub,"$myp_attrpoint_ply",1),
        (try_end),
        ]
        3、加点(技能点)
        技能在学习时除了需要考虑"$myp_sklpoint_ply"的值大于零之外。
        还需要考虑一、技能不超过对应属性值的三分之一,二、技能不超过十(或者有些mod为十五)。脚本myp_skl_up_judge提供了这个功能。
        [
        (assign,":skl_id",skl_ironflesh),
        (assign,":npc_id","trp_player"),
        #调用myp_skl_up_judge脚本,该脚本接受两个参数:技能id和角色id;返回#"$bool_is_learn_able"作为结果,值为1时表明可加,值为0时表明不可加。
        (call_script,"script_myp_skl_up_judge",":skl_id",":npc_id"),
        (try_begin),
        (eq,"$bool_is_learn_able",1),
        (gt, "$myp_sklpoint_ply",0),
        (troop_raise_skill,"trp_player",":skl_id",1),
        (val_sub,"$myp_sklpoint_ply",1),
        (try_end),
        ]


        4楼2013-05-28 22:43
        回复
          一些用到的脚本
          #判断技能点是否可加
          ("myp_skl_up_judge",
          [
          (store_script_param, ":my_skl_id", 1),
          (store_script_param, ":my_npc_id", 2),
          #判断技能是力敏智魅哪种技能
          (try_begin),
          (ge,2,":my_skl_id"),
          (assign,":my_attr_id",3),
          (else_try),
          (ge,":my_skl_id",3),
          (ge,17,":my_skl_id"),
          (assign,":my_attr_id",2),
          (else_try),
          (ge,":my_skl_id",18),
          (ge,27,":my_skl_id"),
          (assign,":my_attr_id",1),
          (else_try),
          (ge,":my_skl_id",28),
          (assign,":my_attr_id",0),
          (try_end),
          #初始化全局变量
          (assign,"$bool_is_learn_able",0),
          #存储属性等级
          (store_attribute_level,":attr_lvl",":my_npc_id",":my_attr_id"),
          #除三
          (val_div,":attr_lvl",3),
          #存储技能等级
          (store_skill_level,":skl_lvl",":my_skl_id",":my_npc_id"),
          (try_begin),
          #比较,若属性等级除三大于技能等级,变量设为一
          (gt,":attr_lvl",":skl_lvl"),
          (gt,10,":skl_lvl"),
          (gt,"$myp_sklpoint_ply",0),
          (assign,"$bool_is_learn_able",1),
          (try_end),
          ]
          ),


          5楼2013-05-28 22:45
          回复
            #洗点的核心
            ("myp_skl_clear",
            [
            (store_script_param,":my_npc_id", 1),
            #两个局部变量来保存减少的属性和技能点数量
            (assign,":skl_sum",0),(assign,":attr_sum",0),
            #交易技能:保存npc的交易技能点数
            (assign,":skl_id",0),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            #计算将交易技能变回初始值所需要的改变量(负值),并改变该技能为初始状态
            (store_sub,":raise_num",reg(10),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            #把改变量加起来
            (val_add,":skl_sum",":raise_num"),
            #下面同理
            (assign,":skl_id",1),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(11),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",2),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(12),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",7),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(17),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",8),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(18),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",9),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(19),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",10),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(20),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",11),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(21),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",12),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(22),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",13),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(23),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",14),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(24),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",15),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(25),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",16),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(26),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",17),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(27),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",22),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(32),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",23),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(33),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",24),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(34),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",25),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(35),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",26),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(36),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",27),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(37),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",33),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(43),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",34),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(44),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",35),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(45),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":skl_id",36),(store_skill_level,":skl_lvl",":skl_id",":my_npc_id"),
            (store_sub,":raise_num",reg(46),":skl_lvl"),(troop_raise_skill,":my_npc_id",":skl_id",":raise_num"),
            (val_add,":skl_sum",":raise_num"),
            (assign,":attr_id",0),(store_attribute_level,":attr_lvl",":my_npc_id",":attr_id",),
            (store_sub,":raise_num",reg(50),":attr_lvl"),(troop_raise_attribute,":my_npc_id",":attr_id",":raise_num"),
            (val_add,":attr_sum",":raise_num"),
            (assign,":attr_id",1),(store_attribute_level,":attr_lvl",":my_npc_id",":attr_id",),
            (store_sub,":raise_num",reg(51),":attr_lvl"),(troop_raise_attribute,":my_npc_id",":attr_id",":raise_num"),
            (val_add,":attr_sum",":raise_num"),
            (assign,":attr_id",2),(store_attribute_level,":attr_lvl",":my_npc_id",":attr_id",),
            (store_sub,":raise_num",reg(52),":attr_lvl"),(troop_raise_attribute,":my_npc_id",":attr_id",":raise_num"),
            (val_add,":attr_sum",":raise_num"),
            (assign,":attr_id",3),(store_attribute_level,":attr_lvl",":my_npc_id",":attr_id",),
            (store_sub,":raise_num",reg(53),":attr_lvl"),(troop_raise_attribute,":my_npc_id",":attr_id",":raise_num"),
            (val_add,":attr_sum",":raise_num"),
            #把减少的属性和技能点赋值给reg3reg4.
            (store_sub,reg3,0,":skl_sum"),
            (store_sub,reg4,0,":attr_sum"),
            ]),


            6楼2013-05-28 22:53
            回复
              7楼2013-05-28 22:58
              收起回复
                哟哟哟


                来自iPhone客户端8楼2013-05-29 07:14
                收起回复
                  好东西好顶赞


                  IP属地:四川来自iPad9楼2013-05-29 14:02
                  回复
                    可不可以把她射成一个script然后在触发器直接call script


                    IP属地:四川来自iPad10楼2013-05-29 14:04
                    收起回复
                      我曾经构思过这个设置,但比较的简单,是通过菜单与脚本联和起来用的。但后来发现有些地方还是不够好,就放下了。再后来我又自己利用脚本里food的设置和header_Oxxxx的注解完成了血瓶的设定。


                      来自手机贴吧11楼2013-05-29 17:03
                      收起回复
                        谢谢wc的代码和构思!哈哈!


                        来自手机贴吧12楼2013-05-29 17:04
                        收起回复