门清 发表于 2005-10-27 22:13:14

使用NS制作养成系统

制作养成系统的原理是系统给出0~9的随机数,当数值大于某一值时养成成功,否则养成失败。养成的成功率就用这个特定的数值来调整,比如想要成功率70%,就把这个值设定为2,当随机数小于等于3(0,1,2)时养成失败。
第一次写系统,写的比较笨,希望各位大大指教。

*define
defsub yangcheng
defsub wenke
defsub like

game
*yangcheng
rnd %1,9;给出0~9的随机数
if %1>=3 mov %2,1;养成成功,成功率70%
if %1<3 mov %2,0;养成失败
if %2=1 rnd2 %3,3,5;成功后加的数值是一个3~5的随机数
if %2=0 rnd2 %4,0,2;失败后减的数值是一个0~2的随机数
return

*wenke
for %97=1 to 6;每次增加1就不写step了
yangcheng
if %2=1 add %99,%3;养成成功则将成果加入文科成绩
if %2=0 sub %99,%4;同上
显示文科成绩。\
itoa $1,%99;转换为文字变量输出。
文科成绩是$1。\
next
return

*like
for %97=1 to 6
yangcheng
if %2=1 add %98,%3
if %2=0 sub %98,%4
显示理科成绩。\
itoa $2,%98
理科成绩是$2。\
next
return

*start
mov %99,50;设定初始值
mov %98,50
mov %97,1;设定开始日期为星期一
要学哪一门呢?\

select "文科",*wen,"理科",*li;标签应该是不可与公共事件同名

*wen
gosub *wenke
goto *endo

*li
gosub *like
goto *endo

*endo
end

完成了星期一至星期六循环的部分。大感谢ADV桑与TOZ桑。
接下来是插入剧情事件的中断,疲劳度的增加,受伤及生病的判定(跟心跳回忆学的),等上完选修课再说吧……

PS 超想做心跳那种守护小天使啊ToT

Advance 发表于 2005-10-27 23:42:09

for 变量标号=初始值 to 最大值 step 步进值
*开始循环
……
*循环结束
next

CountD 发表于 2005-10-27 23:59:03

<=养成最好不要用FOR循环.因为期间会插入月历事件...= =|||

金狐狸 发表于 2005-10-28 00:31:10

ns做养成系统 …………看起来就需要耐心的一个工程啊…………

门清 发表于 2005-10-28 12:19:49

插入事件用break行不行……不过那样要一个个设= =

下面是小白的问题时间……怎样能使数值像心跳回忆那样做变色滚动显示呢?

PS 原来是忘插入公共事件了 俺已然华丽地败了啊= =

门清 发表于 2005-10-28 15:44:36

*like
yangcheng
if %2=1 add %21,%3
if %2=0 sub %21,%4
itoa $99,%21
显示理科成绩。\\
$99。\\

for %99=1 to 6 step 1
goto *like
next
星期结束咯。\\

for循环是这样写的 想让执行六次理科学习后脱离循环 然则脱不出来……

toz 发表于 2005-10-28 15:52:46

前面那个请写成公共事件,然后在循环中用gosub来调用。
(为什么不直接写在循环里呢?)

公共事件格式

*标签
    ……
    (内容)
    ……
return

p.s.方便的话,请把顶楼的脚本也改一改吧(漏了一行)。楼主这个贴也算是类似教程的东东了,总不好在教程贴里出现无法运行的脚本吧?

如果for循环可以使用这样的写法:for %1=%1 to 7
用break来插入月历事件好像也行……事件完毕跳回for上面的标签继续循环就是了……
(把所有的月历事件都做成公共事件然后gosub过去也行吧?)

貌似听说ns里的循环不能超过40行……有此一说么(能拿:制造超长行来回避么?笑)?

门清 发表于 2005-10-28 16:10:48

顶楼的已经可以使用了 昨天滚的急 忘了加入公共事件调用命令= =(众:分明是你自己BC= =)

还有一个问题……在已有的脚本文件开头再插入命令行 会出现很灵异的错误 比如


numalias aiolia,%1
numalias shaka,%2

完全一样的命令 第一个能通过 第二个就报错……

而且 如果在两条命令之间加空格的话 错误还会顺延……

PS 不写在循环里的原因是……把养成数值生成部分做完之后才想起来要循环(众黑线|||||||||)

再PS 那个……月历事件是what?开始我以为就是中间插入的剧情事件 后来发现好像是指换月时翻过月历CG?

toz 发表于 2005-10-28 17:55:09

就是插入的剧情,不过应该是指的像过生日啊,过年过节啊之类的,这种在固定日期发生的剧情。(我猜是这些吧?没用过lm2,对这些专有名词不熟^^b)
lm2自己有个时间系统(是行程表么?),设定了什么时间发生什么事的话到日期就会自动跳到那个事件去。不过用ns的话就得自己弄了……

门清 发表于 2005-10-28 19:28:18

汗,俺初步的想法是制造几个全局变量来记录日期,如果到了生日或节日就用break打断进入事件……还没有试验过,等会试一下。

……对了,朋友生日也要BREAK……那要写好多吧(黑线||||||||||||||||)

有没有更简单的方法呢……
页: [1] 2 3
查看完整版本: 使用NS制作养成系统