幻想森林

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

[NS] 用ns寫像美少女夢工廠那樣的戰鬥系統(更新戰鬥+血條的製

[复制链接]

33

主题

129

帖子

1566

积分

⑥精研

积分
1566
发表于 2008-3-19 08:57:33 | 显示全部楼层 |阅读模式
昨天在巴哈姆特看到有人討論戀模的戰鬥思路
發現用ns來想也通
就試做看看了
發現其實蠻簡單的....
第一次貼語法類的東西
有錯誤請糾正
請多指教

主要分成這幾種
我方攻擊
敵方攻擊
使用藥物
敵方血值為零我贏
我方血值為零我輸
這樣思考就行了

*define
game
*start
mov %10,1000 ;敵人的血值
mov %11,20   ;敵人的攻擊力
mov %12,40   ;敵人的防禦力
mov %13,2000 ;我方的血值
mov %14,20   ;我方的攻擊力
mov %15,40   ;我方的防禦力
mov %16,10   ;我方藥品數量
*war
目前敵方血值%10
我方血值%13

select "攻擊",*mattack,"物品",*things

*mattack
我方攻擊!!
rnd2 %1,3,5;設 %1為傷害值,數值3-5之間
sub %10,%14
sub %10,%1
敵人的血值%10\
if %10<=0 goto*ydie
if %10>0 goto*yattack
end
*yattack
敵人攻擊!!
rnd2 %1,3,5;設 %1為傷害值,數值3-5之間
sub %13,%11
sub %13,%1
我方血值%13\
if %13<=0 goto*mdie
if %10>0 goto*war
end
*ydie
你贏了!!\
end
*mdie
你輸了!!\
end
*things

你現在有%16顆藥
select "使用",*open,"不使用",*war
*open
if %16>0 goto*youcanuse
if %16<=0 goto *youcantuse
end
*youcantuse
你沒藥了!!
goto*war
end
*youcanuse
if %13==2000 goto*nouse
if %13>=1800 goto*initial
if %13<1800  goto*add
end
*nouse
你的血值現在是2000
sub %16,1
mov %13,2000
goto*yattack
end
*initial
sub %16,1
你的血值現在是2000
mov %13,2000
goto*yattack
end
*add
sub %16,1
add %13,200
你的血值現在是%13
goto*yattack
end其他就是加上一些特效

加上先前有人發過的血條製作
美少女夢工廠的戰鬥系統就做出來了

....我發這個會不會太多餘了?
回复

使用道具 举报

2

主题

11

帖子

123

积分

③业余

积分
123
发表于 2008-3-19 14:56:08 | 显示全部楼层
当然不会多余,对新手来说也相当有参考价值...

AND,楼主能不能回答一下我那个关于数字显示的问题?
回复 支持 反对

使用道具 举报

33

主题

129

帖子

1566

积分

⑥精研

积分
1566
 楼主| 发表于 2008-3-19 15:54:02 | 显示全部楼层
D大教學中itoa那一段我看不大明白耶
如果你有時間且願意能先回答我的問題
我再把那一段看懂
然後回答你的問題(汗....)

一、%100和$100有什麼差別?
我的意思是:前面那個%和$是各自用在什麼地方?
感覺好像可以混用耶....
二、裡面說所有的參數都可以用變數代替
參數是前面說的數值
變數是什麼?
感覺好像是一樣的東西?@@

裡面說lsp 11,":s/25,25,0;#ffffff顯示文字",305,252

也可以等價於:

mov $132,"顯示文字"
lsp 11,":s/25,25,0;$132 ",305,252

但我寫了一段
*define
game
*start
mov $132,"顯示文字"
lsp 11,":s/25,25,0;$132 ",305,252
print 1

顯示了\\
end

結果顯示不能耶?


itoa可以將數位轉成文字列

???
不是直接就可以打上去了嗎?

嗯,數位又是指什麼....?

主要是一些專有名詞的定義不太明白

其實我也是ns新手= =
我們好好互相切搓吧
回复 支持 反对

使用道具 举报

2

主题

11

帖子

123

积分

③业余

积分
123
发表于 2008-3-19 19:16:47 | 显示全部楼层
itoa $0,120
    itoa $1,%2

-----------
那个,,%2 的%应该是用于"数字"变量,也就是1,2,3……
而$1的$应该是表示"文字"变量,也就是“你好”,“你不好”……




*define
game
*start
mov $132,"顯示文字"
lsp 11,":s/25,25,0;$132 ",305,252
print 1

顯示了\\
end

結果顯示不能耶?
----------
格式错误提示……没有加颜色……
lsp 11,":s/25,25,0;#ffffff$132 ",305,252 这样就可以了。

所谓参数,就是比如上面的颜色,或者X,Y坐标,这些都不是一定要固定的,可以用其他“变数”来代替。


至于itoa,当要显示的东西是变量的时候,比如说日期金钱什么的,你之前代入的数字如果是10,过了一天之后有可能就是15或者11,这个你预先不知道的情况下,就要用上面说的变量来做定义,而且因为不知道明天是个什么数,所以不存在直接打上去,而且直接打上去会很麻烦……比如说日期……总不能把365天都写一次吧。
回复 支持 反对

使用道具 举报

33

主题

129

帖子

1566

积分

⑥精研

积分
1566
 楼主| 发表于 2008-3-20 19:14:33 | 显示全部楼层
原來ns報錯有不止一種方式....
這是戰鬥+血條的製作,請多指教

;mode800
*define
game
*start
bg":c;Germany_1006.jpg",13,1000;背景
ld c,":a;敵人.jpg",3,1000       ;敵人
setwindow 200,227,23,17,24,24,0,2,80,1,1,":a;frame2.jpg",178,212
lsp 1,"我方頭像.jpg",0,482   ;用lsp來放置我方頭像、血條等等
lsp 2,"我方血條.jpg",120,558
lsp 3,"敵方血條.jpg",0,0

print 1


mov %10,2000;敵人的血值
mov %11,200   ;敵人的攻擊力
mov %12,40   ;敵人的防禦力
mov %13,2000 ;我方的血值
mov %14,20  ;我方的攻擊力
mov %15,40   ;我方的防禦力
mov %16,10   ;我方藥品數量
bar 1,%10,4,4,662,32,%10,#ff4444;敵人血條
bar 2,%13,125,562,662,38,%13,#ff4444;我方血條

print 10,500
*war

目前敵方血值%10
我方血值%13

select "攻擊",*mattack,"物品",*things
;bar 99,%100,40,300,100,30,%100,#ff4444
;bar 99,150-%1,40,300,100,30,%100,#ff4444;
*mattack
我方攻擊!!
quake 3,1000
rnd2 %1,3,5        ;設 %1為傷害值,數值3-5之間
sub %10,%14
sub %10,%1
bar 1,%10-%14-%1,4,4,662,32,2000,#ff4444  ;敵人血條減少
print 7,500
敵人的血值%10\\
if %10<=0 goto*ydie
if %10>0 goto*yattack
end
*yattack
敵人攻擊!!
quake 3,1000
rnd2 %1,3,5;設 %1為傷害值,數值3-5之間
sub %13,%11
sub %13,%1
bar 2,%13-%11-%1,125,562,662,38,2000,#ff4444
print 7,500
我方血值%13\\

if %13<=0 goto*mdie
if %10>0 goto*war
end
*ydie
你贏了!!\\
end
*mdie
你輸了!!\\
end
*things

你現在有%16顆藥
select "使用",*open,"不使用",*war
*open
sub %2,1
if %13==2000 goto*nouse
if %13>=1800 goto*initial
if %13<1800  goto*add
end
*nouse
你的血值現在是2000
sub %16,1
mov %13,2000
goto*yattack
end
*initial
sub %16,1
bar 2,2000,125,562,662,38,2000,#ff4444
print 7,500
你的血值現在是2000
mov %13,2000
goto*yattack
end
*add
sub %16,1
add %13,200
bar 2,%13+200,125,562,662,38,2000,#ff4444
print 7,500
你的血值現在是%13
goto*yattack
end

這是我做的檔,有興趣的可以下載
這是91file:http://www.91files.com/?5M51EY15DTA84Q08DR68
這是mofile:http://pickup.mofile.com/9216213030658992
回复 支持 反对

使用道具 举报

33

主题

129

帖子

1566

积分

⑥精研

积分
1566
 楼主| 发表于 2008-3-21 08:51:45 | 显示全部楼层
引用第3楼00ds于2008-03-19 19:16发表的  :
    itoa $0,120
    itoa $1,%2

-----------
那个,,%2 的%应该是用于"数字"变量,也就是1,2,3……
.......


謝謝你的解答
還有恭喜你的問題已經被回答了^^
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 07:41 , Processed in 0.021960 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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