赵云传吧 关注:10,627贴子:91,080

三国赵云传mod制作心得9脚本(剧情制作)

只看楼主收藏回复

三国赵云传mod制作心得9脚本(剧情制作)



IP属地:黑龙江来自Android客户端1楼2018-11-19 07:23回复
    九、【制作MOD第八章】:写脚本
    脚本,其实就可以理解为一个简单的程序,赵云传中所有人物对话、进出地图、自动触发的剧情等等都是通过脚本来控制的。学过编程语言的吧友可能更容易理解赵云传的脚本,不过没学过也没关系,写赵云传的脚本不需要任何编程基础及经验,它比任何一种编程语言都要简单得多。下面且听我慢慢道来。(如果想制作自己的剧情,则需要修改或编写script /map里面的txt格式的脚本文件。)


    IP属地:黑龙江来自Android客户端2楼2018-11-19 07:23
    回复
      9.1几条常用脚本指令解析
      这里先重点分析几条最最常见的指令,其余指令请查阅《新剑侠情缘脚本指令修订版》。
      Return;
      首先说明一下,每条指令后都需要跟随上“;”这个与C语言等编程语言类似。
      “Return;”这条指令的作用是结束脚本操作,回到玩家控制的游戏界面,一般每个脚本中都有。一般脚本如果缺少这条指令,游戏就会一直陷在脚本中,导致角色无法动弹。
      举个例子:


      IP属地:黑龙江来自Android客户端3楼2018-11-19 07:24
      回复
        Talk("H003");
        SetNpcScript("笰 包","!_girl_1B.txt");
        Return;
        Talk
        Talk("X");赵云传中的多数对话都是通过这条语句实现的,X为某个对话,
        例如:
        Talk("G000");
        读取G000(需要在talk.txt编写对话)对话。


        IP属地:黑龙江来自Android客户端4楼2018-11-19 07:25
        回复
          talk.txt内容解析如下:
          [G000](对话名)
          head1=fac11200.rpc(头像)
          1=<Color=Yellow>[堵ρ]<Enter><Color=White>Τセㄆ秈<Enter>и堵瑌(乱码部分为对话文字(BIG5))
          head2=fac00100.rpc
          2=<Color=Yellow>[化冻]<Enter><Color=White>
          head3=fac02001.rpc
          3=<Color=Yellow>[甃獼孽]<Enter><Color=White>ぐ或堵瑌Τぐ或甀ヱ盾
          ……
          ……


          IP属地:黑龙江来自Android客户端5楼2018-11-19 07:25
          回复


            IP属地:山东来自手机贴吧7楼2018-11-19 07:27
            收起回复


              IP属地:黑龙江来自Android客户端13楼2018-11-19 07:35
              回复
                Say("酒肆老板:宁做太平犬,不为乱世人,唉!"); /*如果变量Suba不符合上述任何一个条件,则接下去执行这条指令*/
                Return; //结束脚本,返回玩家操作游戏界面


                IP属地:黑龙江来自Android客户端15楼2018-11-19 07:43
                回复
                  大家看这个脚本,可以发现当Suba等于210时,与酒肆老板对话会执行事件“Sub210”,此时第一次与老板对话时由于Talkchalaoban不等于1,酒肆老板会说“算……了。没见过你这样爱管闲事的……”,而再次点击酒肆老板时,由于Talkchalaoban的值被赋为了1,此时转到了事件Talk1,酒肆老板会说另一句话,这就是为什么游戏中点击同一npc多次会出现不同的对话内容。
                  变量搭配if判断语句,就能实现对游戏剧情发展的控制。


                  IP属地:黑龙江来自Android客户端17楼2018-11-19 07:44
                  回复
                    以上是脚本中最基本的指令,通过这几句指令就能构建出一个基本的脚本框架,其他的具体的功能指令请参阅《新剑侠情缘脚本指令修订版》.。


                    IP属地:黑龙江来自Android客户端18楼2018-11-19 07:45
                    回复
                      9.2一个脚本文件解析
                      为了加深大家对脚本的了解,在这里对一个脚本进行详细解析。脚本案例游戏已经提供给了我们,大家不妨时常看看赵云传的脚本,有助于大家写出更简洁、更有条理的脚本,
                      这是赵云传的startgame.txt(游戏开始的第一个脚本script/map/Mo108文件夹内)


                      IP属地:黑龙江来自Android客户端19楼2018-11-19 07:46
                      回复
                        LoadNpc("M0181.npc");
                        载入M0181.npc(npc文件)
                        LoadObj("M0181.obj");
                        载入M0181.obj(地图上的物品文件)
                        SetMainLum(31);
                        改变MainLum为31
                        DisableNpcAI();
                        禁止NPC战斗,包括伙伴
                        SetPlayerPosEx(-1,-1);
                        改变主角坐标为(-1,-1);
                        SetMapPos(3,5);
                        改变地图左上角的基点坐标(3,5);
                        EnableWideScreen();
                        DisableInput();
                        禁止操作


                        IP属地:黑龙江来自Android客户端20楼2018-11-19 07:46
                        回复
                          PlayMusic("barrack.mp3");
                          播放音乐barrack.mp3
                          FadeIn();
                          淡出
                          Sleep(500);
                          停顿多少帧
                          Talk("G001");
                          出现G001对话
                          NpcSpecialActionEx("そ甝禫","spe010.mpc");
                          让そ甝禫(npc)做出某个特殊动作,主角不能操作


                          IP属地:黑龙江来自Android客户端21楼2018-11-19 07:47
                          回复
                            Sleep(600);
                            停顿多少帧
                            NpcSpecialActionEx("癒 残","spe001.mpc");
                            让癒 残(npc)做出某个特殊动作,主角不能操作
                            Talk("G002");
                            出现G002对话
                            SetNpcDir("癒 残",1);
                            改变癒 残(npc)的朝向1
                            NpcGoto("そ甝禫",1,29);
                            そ甝禫(npc)走到地图1,29坐标
                            DelNpc("そ甝禫");
                            删除(npc) そ甝禫
                            NpcGoto("ゅ ﹛",8,24);
                            ゅ ﹛(npc)走到地图8,24坐标
                            SetNpcDir("ゅ ﹛",6);
                            改变ゅ ﹛(npc)的朝向6
                            PlaySound("wind.wav");
                            播放生效wind.wav
                            ShowSnow(1);
                            下雪
                            Talk("G003");
                            出现对话"G003
                            DelObj("001");
                            删除物品001
                            NpcGotoEx("aaa",10,25);
                            aaa(npc)走到10,25坐标
                            Talk("G004");
                            出现对话G004
                            //NpcGotoEx("002",4,34);
                            002(npc)走到坐标4,34
                            NpcGotoEx("ゅ ﹛",8,23);
                            ゅ ﹛(npc)走到坐标8,23
                            Sleep(1200);
                            停顿多少帧


                            IP属地:黑龙江来自Android客户端22楼2018-11-19 07:48
                            回复
                              //SetNpcDir("002",5);
                              改变002(npc)的朝向
                              SetNpcDir("ゅ ﹛",7);
                              改变ゅ ﹛(npc)的朝向
                              AddObj("灯光.ini",5,37);
                              在5,37坐标出现物品灯光.ini
                              //NpcGotoEx("002",1,34);
                              002(npc)走到坐标1,34
                              SetNpcDir("ゅ ﹛",7);
                              改变ゅ ﹛(npc)的朝向
                              Talk("G005");
                              出现对话G005
                              Sleep(500);
                              等待多少帧
                              FadeOut();
                              淡出(黑屏)


                              IP属地:黑龙江来自Android客户端23楼2018-11-19 07:48
                              回复