仙五前修改吧 关注:172贴子:15,453

脚本的一些说明(草稿)

只看楼主收藏回复



IP属地:浙江1楼2015-02-21 21:57回复
    首先是lua语法介绍
    http://www.cnblogs.com/ly4cn/archive/2006/08/04/467550.html
    学过至少一种计算机语言的话,会比较容易掌握
    需要补充的一点:print不能输出到用MOD辅助工具打开的控制台。需要把print换成globa.Print


    IP属地:浙江2楼2015-02-21 21:59
    回复
      排序大多按字典序,偶有微调之处


      <battle>
      以battle开头的函数,多运用在战斗之中
      battle.Begin(a,b,c)
      触发编号b的战斗,地图编号为a(其实就是战斗的背景),c=1表示显示选人界面,c=0或者不写表示不显示选人界面。
      battle.ChangeNpc(a,b,c)
      把编号a的怪物换成编号b的怪物,并令其ID为c。场上只能有一个编号a的怪物,不然会报错。
      battle.ChangeNpcById(a,b)
      把ID为a的怪物换成编号b的怪物。
      a=battle.CheckNpcPlace(b)
      获取npc位置b是否有空位(对应mstteam.xml中的“位置b”)。有空位(或者说没有npc)那么a就是1,否则就是0。
      a=battle.CheckPlayerPlace(b)
      参考上面一条,位置分配规律类似。a是0代表没人,是1代表有活人,是2代表为死人。
      battle.End(a)
      以本场战斗经验a结束战斗。括号内不填则为默认经验值。
      a=battle.GetActingNpcID()
      获取当前活动NPC的ID,赋给a
      a=battle.GetActingPlayerID()
      获取当前活动角色的ID,赋给a
      a=battle.GetNpcSpeed(b)
      获取ID为b的NPC的身法,赋给a
      a=battle.GetSelfHP(b)
      获取自己的血量值(b=1)或比例(b=2)赋给a。
      battle.MagicToNpc(a,b,c)
      对ID为a的角色(如果是全体a=0)使用编号b的仙术/技能(skill.xml)。
      c=0是我方,c=1是敌方,这个对镜头有影响?
      battle.MagicToNpc(a,b,c)
      和上面一个类似
      battle.MakeNpcQueueFront(a)
      ID为a的NPC置于行动条最前(填player的ID好像也有效)
      battle.MakeNpcQueueEnd(a)
      ID为a的NPC置于行动条最末(填player的ID好像也有效)
      battle.MakeUpdate()
      一般用在battlebegin阶段,表示进入战斗
      battle.SetNpcSpeed(a,b)
      将ID为a的NPC身法设置为b
      battle.Skip()
      跳过回合


      IP属地:浙江本楼含有高级字体4楼2015-02-22 15:56
      收起回复
        <global>
        大多与游戏进程相关
        global.AddTimer(a,b)
        添加计时器,a秒后调用编号b的脚本,优先级低。计时器会在战斗结束后自动清空。
        global.BeginScene()
        打开剧情模式,地图和头像消失,人物无法操纵
        global.CallScript(a)
        立即调用编号a的脚本,优先级高
        global.ClearTimer()
        清除计时器
        global.EndScene()
        结束剧情模式
        global.GetGameCycle()
        读取周目数(怀疑是跟随global.sav)
        a=global.GetGameStat()
        应该是游戏状态,2是战斗外,其余不详
        global.Include(a)
        包含宏,脚本编号a。请阅读script\mainline\macro.lua。
        global.PauseTimer(0)..暂停??
        global.PlayMusic(a,b,c)
        以b%音量播放编号为a的音乐,c值与渐入有关,为0就是直接播放,调的比较大(比如2000)可以明显感觉到渐强效果。
        另外,如果此时游戏正播放编号a的音乐,则该指令无效。
        global.PlaySound(a,b)
        以b%的音量播放编号为a的声音
        global.SetGameCycle()
        设置周目数
        global.SetWideScreen(a)
        a为1时无法调远近(鼠标滚轮),为0时可以
        global.Wait(a)
        游戏进程等待a秒后再继续
        global.WaitForNpcTurn(a)
        等待NPC的扭头动作……


        IP属地:浙江本楼含有高级字体6楼2015-02-22 16:26
        收起回复
          这里需要提前说下两个概念:
          当前仙防:就是角色现在的仙防,结算伤害用的
          基础仙防:角色进入战斗时的仙防
          另外一下脚本凡剧情相关函数多为望文生义,错漏请指出
          <npc>
          npc.AddRefItem(a,49,c)
          给ID为a的npc绑模型编号c的武器(49有时候也是50,是什么意思?)
          npc.ChangeDef(a,b)
          ID为a的NPC物理防御增加b
          npc.ChangeHP(a,b,c,d)
          参考player.ChangeHP。
          npc.ChangeMagicDef(a,b,c)
          ①b=0,1,...7,ID为a的角色某系抗性(7表示全抗性)增加c
          ②b=8,当前仙防增加c
          npc.ContinuePatrol(a)
          恢复ID为a的NPC为巡逻状态
          npc.Create(a,b,c,d)
          在(c,d)处建立编号a的场景npc
          npc.CreateFloat
          没研究
          npc.Destroy(a)
          删除ID为a的NPC。在战斗中使用的话NPC直接就没了,好像也没有经验
          npc.Disable(a)
          让ID为a的NPC处于不可点击状态
          npc.Enable(a)
          恢复ID为a的NPC为可点击状态
          x,y,z=npc.GetPos(a)
          获取ID为a的角色位置坐标赋给x,y,z
          a=npc.GetTemplateID(b)
          获取ID为b的NPC的怪物编号,赋给a
          npc.HurtBy(a,b)
          ID为a的NPC只能被ID为b的角色打出伤害(其实加血也不行,但可以加状态)
          a=npc.IsCreated(b)
          ID为b的npc是否被创建?是,a=1,否,a=0
          npc.ScaleTo(a,b,c)
          ID为a的npc用时c毫秒均匀变成b%大小(相对于原大小)
          npc.SetAnim(a,b)
          a是npc编号,b是动画编号?
          1,2是一般的御敌状态,3,4是奔跑,5,6是菜刀,10~20为被命中、闪避、格挡、连击、施法、用道具,21~30濒死、死亡、普攻动作,后面多为子特效,超过100就出现剧情动作,摇头、微笑神马的
          npc.SetAtPos(a,b,c)
          npc朝向,一般该语句要接在建立npc后面,a是npc代号,(b,c)是坐标
          npc.SetHP(a,b)
          把ID为a的NPC血量设置为b。注意这个函数player没有。
          npc.SetMagicDef(a,b,c)
          设置ID为a的NPC第b属性仙术抗性为c,b为7表示7抗性都设置为c。
          b=8,当前仙防更改为基础仙防+c。
          npc.StopPatrol(a)
          ID为a的NPC停止巡逻
          npc.StopSE(a)
          ID为a的NPC消除特效
          npc.TurnToPlayer(a)
          让ID为a的NPC转向玩家(就是扭头)


          IP属地:浙江本楼含有高级字体8楼2015-02-22 16:37
          收起回复
            <ui>
            游戏中冒出来的各种文字,编号记录在data\str.xml
            ui.Dialog(a,b,c,d,0,0)
            a,语句编号
            b,头像编号
            c=0,头像在左边
            c=1,头像在左边,语句逐字展开
            c=2,头像在右边
            c=3,头像在右边,语句逐字展开
            c=4,无背景黑框(纯白色字覆盖于当前界面)
            c=5,同上,但语句逐字展开
            c>=6,无头像,有背景黑框
            d,场景npc编号(说话者)
            后面俩参数不明
            ui.Popo(a,b,c,d)
            泡泡框,ID为c的角色,编号为a
            b=1,c为场景npc的编号,b=2,c应为带队者ID
            d=0时,玩家点击,框消失后才会执行脚本下面的内容,d=1时直接执行下面的内容
            ui.Popo_Auto(a,b,c,d,e)
            泡泡框,d秒后自动消失,其余和上面相同
            ui.Message(a)
            提示信息,编号为a


            IP属地:浙江本楼含有高级字体10楼2015-02-22 16:44
            收起回复
              <常用语句集>
              {
              for pis=1,9,1
              do
              ____if battle.CheckPlayerPlace(pis)==1 then --判断有人
              _____pisd=battle.GetPlacePlayerID(pis) --位置人id
              _______****
              ____end
              end
              } --全体干某事(但没有全体的语句)
              (度娘吞缩进,用下划线占格子)


              IP属地:浙江本楼含有高级字体12楼2015-02-22 16:47
              回复
                @3025525B @大港口舰
                有兴趣的话可以随时补充


                IP属地:浙江来自Android客户端13楼2015-02-22 16:53
                收起回复
                  player.AddProperty(id,1,a) 单体力属性永久加a
                  player.AddProperty(id,2,a) 单体体属性永久加a
                  player.AddProperty(id,3,a) 单体速属性永久加a
                  player.AddProperty(id,4,a) 单体术属性永久加a
                  player.AddProperty(id,5,a) 单体运属性永久加a
                  battle.SetNpcExpDouble(id) 战胜后获得双倍经验
                  player.AddExp(a) 获得a经验
                  player.ChangeLevel(id,a) 修改等级为a 貌似超过99级属性会降低
                  battle.AddNpc(a,b) 战斗中添加编号为a的npc在b的位置上,多见boss召唤
                  player.SetXiuWei(id,a,b) a系修为变成b,a为0~6对应雷风水火土阴阳。


                  IP属地:内蒙古15楼2015-02-22 18:19
                  收起回复
                    3612 3611 3039 3224
                    3042 3048 3274 3255
                    3035 3229 3233 3234
                    3226 3227 3045 3228
                    3047 3230 3231 3650
                    这些编号可以放在skill的特效id里,显示的像是连携技的一个动画,
                    呃 没什么用


                    IP属地:内蒙古16楼2015-02-22 21:51
                    收起回复
                      合击特效:合击是串联特效,前面包括两个角色特写flash部分,后面是攻击段。
                      瑾瑕:3815+3600
                      瑕兰:3816+4096
                      瑾卓:3817+4095
                      岩萝:3818+4101
                      承岩:3819+4682
                      萝瑕:3820+4655
                      瑾承:3821+3217
                      承兰:3822+4667
                      溟波:3823+4155
                      卓谢:3824+4139
                      兰谢:3825+4694
                      我现在没有5Q,谁去试试对不对?


                      17楼2015-02-23 00:40
                      收起回复
                        来个人测一下4096的仙术伤害是威力的50%还是32倍


                        18楼2015-02-23 00:55
                        收起回复
                          如果我们掌握了所有的编号对应的内容


                          19楼2015-02-23 17:02
                          收起回复
                            player.ChangeYP(a)
                            元神增加a


                            IP属地:浙江来自Android客户端21楼2015-02-23 21:53
                            回复
                              global.WaitForBattleSEEnd(a)
                              等待编号a的特效播放完毕后再执行下面的脚本


                              IP属地:浙江22楼2015-02-23 22:03
                              收起回复