幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5889|回复: 5

[NS] 从零开始学NS时碰到的小问题总结

[复制链接]

2

主题

7

帖子

70

积分

②入门

积分
70
QQ
发表于 2009-12-1 10:55:55 | 显示全部楼层 |阅读模式
虽然N年前看过一下NS,可是真正铁了心学习NS是上周的事情。由于是从零开始(没有任何电脑编程基础),绕了不少弯路。

花了三天时间,总算把基本的一些功能摸清楚了。

我想做的游戏是一个类似《FATE》的文字小说游戏,脚本和支线流程已经做好,功能比较简单,也想把自己在摸索过程中的一些问题记录下来,在这里分享。我想和我一样从零开始学NS的人应该不在少数,希望能有点帮助,也希望这里的前辈能不吝指点当中的谬误,谢谢。

一、对话框
1. 预先定义对话框的格式

这个游戏中,有常用的对话框、字速快的对话框、大字对话框这三种。开始的时候,每次出现对话框我都要打上setwindow那一长串东西……后来发现,是可以先定义的。

在0.txt的define区,可以先把这三种对话框先定义,这样,在游戏中就可以直接输入代码了。

*define
defsub frame;一般对话框
defsub frame1;大字对话框
defsub frame2;迅速字对话框
;=====对话框设定
game
*frame
setwindow 30,150,30,3,17,17,0,2,80,1,1,":a;other\frame.jpg",0,118
return
*frame1
setwindow 30,150,16,2,28,28,0,2,80,1,1,":a;other\frame.jpg",0,118
return
*frame2
setwindow 30,150,30,3,17,17,0,2,300,1,1,":a;other\frame.jpg",0,118
return

defsub写在define区,具体的定义在game下面,放在游戏本体前。

比如,在游戏中我要显示这么个东西:



没有定义的话,写成:
setwindow 30,150,30,3,17,17,0,2,80,1,1,":a;other\frame.jpg",0,118
今天阳光明媚,
东方司令部新的一天开始了。\

作出了定义,就可以直接用frame来代替那串:
frame
今天阳光明媚,
东方司令部新的一天开始了。\

2. 关于对话框字数的测算
我在PS里面,新建一个和游戏屏幕大小一致的画布,先在上面画好对话框,再用文字工具测量大概可容纳多少个字。

3. 关于半透明的对话框
对话框用工具转成阿尔法透明图后,把右边需要半透明的黑色部分替换成X%的黑色(如50%黑),那样就会呈现半透明效果,如下图:



4. 关于显示对话的主人
游戏的文字默认颜色是白色,我设定对话主人的显示颜色是蓝灰,这个也可以在define区先定义格式:

*define
defsub riza
defsub louis
defsub roy
game
*riza
#B3E9FF【中尉】#ffffff
return
*louis
#B3E9FF【阿姆斯特朗少佐】#ffffff
return
*roy
#B3E9FF【大佐】#ffffff
return

要特别注意:不要忘记“return”。

这样就可以用代码roy来代替#B3E9FF【大佐】#ffffff这一长串……
人格问题专属伪程序员
回复

使用道具 举报

9

主题

48

帖子

569

积分

⑤进阶

积分
569
发表于 2009-12-4 08:59:04 | 显示全部楼层
如果真的要做出类似Fate特效的话,建议不要用NS。

曾经试过,但做到Fate一开始卫宫士郎早上出门站在十字路口介绍家附近的街道时,需要实现几个地点图片的如下变化:

水平或垂直移动,从屏幕外移到屏幕内;α透明度从0渐变到255。

几个图层一叠加,移动起来引擎效率就很低了……
我的百度空间:hi.baidu.com/wildgun
回复 支持 反对

使用道具 举报

2

主题

7

帖子

70

积分

②入门

积分
70
QQ
 楼主| 发表于 2009-12-4 19:46:07 | 显示全部楼层
to wildgun:不敢学Fate,只是想做那种类型的游戏,靠选择肢推动剧情前进啦。
现在只弄清楚了立绘显示、bg和最简单的lsp滚动  
周末回去继续努力
人格问题专属伪程序员
回复 支持 反对

使用道具 举报

2

主题

7

帖子

70

积分

②入门

积分
70
QQ
 楼主| 发表于 2010-1-6 11:57:16 | 显示全部楼层
隔了一个多月再来接着写~

二、一些规范
其实这个“二”该放到第一点来写……我真是想到哪儿写到哪儿的西瓜皮典型。

NS的脚本从0.txt到99.txt。按顺序执行。你喜欢的话把所有脚本都放在0.txt里面也不是不行,但看起来太麻烦了,乱。还是分开来比较好。
1. *define
0.txt存放*define部分的脚本,例如:
;NS里面的“;”,后面的文字一概不会起作用,可以用它来表示“注释说明”的开始。
;mode800;==这里设定了游戏屏幕的宽度,格式 ;modexxx (前面要带;)屏幕宽高比例4:3,一定是在*define之前的。
*define
defaultfont "字体" ;==一定是电脑系统里有的字体,如果不是太高要求的话,可以选用幼圆或黑体
clickstr ",。",1 ;==设定游戏对话框的文字,遇到什么标点的时候自动换页
caption "游戏标题" ;==游戏标题,显示在游戏屏幕标题栏的
deletemenu ;==把这个去掉,看看会出现什么~

接下来就可以写defsub了。defsub 定义一个指令,把原先一大串的代码简化。而具体这个指令指代什么,在*game后面记得设定
defsub xxx;这里的“xxx”可以是英文字母、数字,都必须半角
defsub frame ;我通常会先定义对话框格式
defsub name ;还有定义“对话框角色名字”的颜色和文字。

2. game开头
接着,到game的部分。game一开始必须把你刚才在defsub里定义的指令具体说明。
游戏用nsa加密的话,也要写在game开头。
总之:define里面的代码定义、nsa,是必须写在game最开头,游戏正式开始之前。
我把这些写在1.txt,如果你的代码定义较多,可以分开多个txt写。

nsa; 用nsa软件加密图片音乐素材后必须加上,写在game上面一行,没有加密的话就忽略
game
注意:game前面没有*
*xxx
#B3E9FF【某人】#ffffff
return
*和return中间的部分,就是把defsub xxx里面的这个“xxx”代表什么写出来。#B3E9FF这些是文字颜色代码,可以用PHOTOSHOP的颜色盘来看。
*frame
setwindow 30,150,32,3,17,17,0,2,80,1,1,":a;bg\\frame.jpg",0,118
return
这里定义的是我对话框形式。具体代表啥请参考说明书(殴)

下一次写*start部分吧,包括OP画面、存取设置……
人格问题专属伪程序员
回复 支持 反对

使用道具 举报

0

主题

2

帖子

16

积分

②入门

积分
16
发表于 2013-2-5 21:20:40 | 显示全部楼层

回 3楼(rosina) 的帖子

現在NS其實是可以使用PNG檔的
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2013-2-5 22:29:39 | 显示全部楼层
LZ三年前写的东西。。。
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-3-29 14:04 , Processed in 0.025099 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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