TA的每日心情 | 衰 2012-11-29 12:03 |
---|
签到天数: 51 天 [LV.5]王国居民I
|
发表于 2012-2-1 13:41:21
|
显示全部楼层
脚本在这,但求楼主教地图块 扣扣 601064186
来构想这样一个情景:
1. 首先你激活了一个精灵球.
2. 然后系统就会告诉你里面是个什么精灵,并询问你是否要.
3. 如果你回答否,那么精灵球仍旧在那里放着
4. 如果你回答是,那么这只精灵就属于你了,同时系统问你是否想给它起个昵称.
5. 当然,如果你已经有了第一只精灵,那么系统会显示另外一段话来回绝你.
以上的情景很熟悉吧?这就是火红/叶绿开始的情节,我们每个玩家都曾经历过,不过我们也应该注意到,以上的情节中存在着两个脚本.
3.1 让精灵消失
先不要误会,这里的”让精灵消失”并不是指让你已经拥有的精灵丢失,而是指你在得到精灵球中精灵的同时,地图上的那个精灵球也要消失的过程.这个过程远比得到精灵重要,同时,这种使得精灵球从地图上消失的技巧也可以用在NPC或者其它物品上.
那么这如何做到呢?
打开Advanced map,在EVENT页面选中任意一个人物,然后在右侧的边栏中找到People ID一项.还记得前面说的标识吗?这里的People ID就是系统内置的标识,如果我们要告诉系统这个事件已经发生过了,那么只要使用Setflag加上0x再加People ID就可以让人物消失了!这时系统会自动刷新屏幕.但是,必须在Setflag命令结束之后再加一个release命令,否则会发生意外!
如果把以上的内容镶嵌到物品赠与的脚本中,就要参照这个格式:
#ORG $begin
lock
faceplayer
checkflag 0×200
if B_true goto $done
message $aidtalk
boxset 6
giveitem 0xD 1
setflag 0×200
release
end
3.2 给予精灵的情形处理
现在一切都准备停当了,我们写下精灵给予的脚本:
#org $StartChik
checkflag 0×800
if B_True goto $NoBall
message $Chick
$Chick 1 = Chikorita!\lThe Fire Bird.\pTake the Chikorita?
boxset 5
compare LASTRESULT 1
if B_False goto $PutBack
以上的部分和物品赠与完全相同,不过现在我们要添加两条命令了:一条是Jingle,Jingle就是得到物品后的声音;而另一条命令我们来看下面:
givepokemon 152 5 0
jingle
message $GotChick
$GotChick 1 = You Recieved a Chikorita
boxset 6
对了,就是givepokemon命令,这个命令含有3个参数,它们依次为:编号、等级、携带物品,需要说明的是,编号参数和全国图鉴略有不同,它有一共411个值可供选择,至于为什么这里暂不解释;而物品的编号则需参照文末即将提供的一份文本列表,这和之前物品赠与的规则是一样的;而等级参数就写作10进制的数字就好,不过一定要靠谱.
现在来看看接下来发生的事:
3.3 给精灵起个昵称
给精灵起昵称的过程并不复杂,我们像往常一样:
message $NameChick
$NameChick 1 = Would You like to give Chikorita a name?
boxset 5
compare LASTRESULT 1
if b_False goto $GiveDex
Namepokemon
瞧,Namepokemon什么参数也没有!是的,Namepokemon命令只是触发了系统的命名功能,而具体的事情并不由我们来完成.但是为了告诉系统,我们已经命名,必须在其后写一个设立标识的语句,如下:
#org $StartChik
checkflag 0×800
if B_True goto $NoBall
message $Chick
$Chick 1 = Chikorita!\lThe Fire Bird.\pTake the Chikorita?
boxset 5
compare LASTRESULT 1
if B_False goto $PutBack
givepokemon 152 5 0
jingle
message $GotChick
$GotChick 1 = You Recieved a Chikorita
boxset 6
message $NameChick
$NameChick 1 = Would You like to give Chikorita a name?
boxset 5
compare LASTRESULT 1
if b_False goto $GiveDex
Namepokemon
setflag 0×203
goto $GiveDex
最后的goto命令无条件的跳转到了下一个环节:
3.4 让图鉴工作起来
事实上无论你获得或者捕捉到什么精灵,图鉴总会立即更新,但如果你还没有图鉴呢?那么游戏会变得很奇怪并且容易出错.
因此如果这是你改版的第一个脚本,我们得加上:
setflag 0×800
setflag 0×801
事实上,标识0×800使菜单中出现”精灵”这一项,而标识0×801才是打开图鉴的标志,但是很显然,二者都不可缺少.因此完整的脚本如下:
#org $StartChik
checkflag 0×800
if B_True goto $NoBall
message $Chick
$Chick 1 = Chikorita!\lThe Fire Bird.\pTake the Chikorita?
boxset 5
compare LASTRESULT 1
if B_False goto $PutBack
givepokemon 152 5 0
jingle
message $GotChick
$GotChick 1 = You Recieved a Chikorita
boxset 6
message $NameChick
$NameChick 1 = Would You like to give Chikorita a name?
boxset 5
compare LASTRESULT 1
if b_False goto $GiveDex
Namepokemon
setflag 0×203
goto $GiveDex
#org $StartShrew
checkflag 0×800
if B_True goto $NoBall
message $Shrew
$Shrew 1 = SandShrew!\lDesert Mole.\pTake the Sandshrew?
boxset 5
compare LASTRESULT 1
if B_False goto $PutBack
givepokemon 27 5 0
jingle
message $GotChick
$GotShrew 1 = You Recieved a Sandshrew
boxset 6
message $NameShrew
$NameShrew 1 = Would You like to give Sandshrew a name?
boxset 5
compare LASTRESULT 1
if b_False goto $GiveDex
Namepokemon
setflag 0×204
goto $GiveDex
#org $StartWing
checkflag 0×800
if B_True goto $NoBall
message $Chick
$Wing 1 = Wingull!\lThe Ocean Bird.\pTake the Wingull?
boxset 5
compare LASTRESULT 1
if B_False goto $PutBack
givepokemon 152 5 0
jingle
message $GotGull
$GotGull 1 = You Recieved a Wingull
boxset 6
message $NameGull
$NameGull 1 = Would You like to give Wingull a name?
boxset 5
compare LASTRESULT 1
if b_False goto $GiveDex
Namepokemon
setflag 0×205
goto $GiveDex
#org $GiveDex
setflag 0×800
setflag 0×801
message $Pokedex
$Pokedex 1 = I hope You like your new pokemon.\pWhile your on your journeys I have\la favour to ask you.\pProf OAK and I are trying to make an\lindex of everything pokemon.\pTake this pokedex with you and it\lwill log all the pokemon you see and catch.\pIt would greatly help our studies!
boxset 6
jingle
message $GotDex
$Gotdex 1 = You got the Pokedex!
boxset 6
end
#org $PutBack
message $PutBack
$PutBack 1 = You put the pokeball back.
boxset 6
end
#org $NoBall
message $Lastball
$Lastball 1 = You already have your pokemon.\nDont be so greedy!
boxset 6
注意,以上的脚本是专为”选择初始精灵”而准备的,如果是其它情形,则脚本还可以更简单.
L:大家仔细看脚本可以发现,其实激活图鉴是在获得精灵之后的,这显然不符合逻辑,有没有更好的写法呢?大家可以试试把goto $GiveDex提前,看看会出现什么结果. |
|