当前位置:铁资首页>>上古卷轴>>模组教程>>正文
MOD制作实例教学(二)
文章出处:铁资网  作者:sphinx  发布时间:2005-03-08
 
通过第一讲的学习,大家已经知道如何将物品放到理想的位置了,那么放在那的作用是什么呢?是纯装饰作用还是要实现某些功能呢?这一讲来讲解如何实现一些简单的功能。

思路:
功能的实现由条件所触发,通俗的讲也就是“当什么什么时,怎样怎样”。

条件方面本节只讲三个:
1
当点击该物品后怎样,怎样......(注意能点击的都是ACTIVATOR类物品)
这里要用到以下这个条件语句:
If ( OnActivate == 1 )
“这里写怎样怎样”
endif
这个语句用来探测玩家是否执行了点击该物品的动作。

2
当玩家装备上该物品后怎样、怎样......
这里要用到以下这个条件语句:
If ( Player -> HasItemEquipped "物品ID" == 1 )
这个语句用来探测玩家是否执行了装备该物品的动作。

3
当玩家背包里有多少个某物则怎样,怎样......
这里要用到以下这个条件语句:
if ( Player->GetItemCount “物品ID” >= “数量” )
例如:if ( Player->GetItemCount Gold_001 >= 100 ) 是当玩家金币不少于100时......


功能方面本讲只列出几个简单常用的

1
显示信息:这里要用到的是这个命令
MESSAGEBOX “这里写内容”
例如:messagebox "You may not come in, giant." 将持续显示引号内的内容几秒钟后自动消失。
如果要在显示信息的同时显示一个OK按钮,要玩家按按钮后信息才消失,那么这样写
messagebox "You may not come in, giant." “OK”(注意空格)
如果要显示选项供选择,那么这样写
MessageBox "Would you like to leave a donation of 100 gold?" "Yes" "No"
注意这种写法时要配合GetButtonPressed这个命令来探测玩家点的是哪个按钮,在本讲的实例部分大家可以看到具体是怎样配合的。

2
在玩家的物品背包里增、删物品:这里要用到这个命令
player->additem "物品ID" “数量”
看过我以前写的《控制台命令简明教程》的朋友对这个命令可能已经很熟悉了,这个要特别提一下的是与此对应还有个将物品从玩家背包里删除的命令
player->removeitem "物品ID" “数量”
例如:Player->RemoveItem Gold_001 100 这个命令将使玩家所持有的金币减少100。

3
让玩家学会或忘记特定法术:这里要用到这个命令
Player->addspell "法术ID" 或 Player->removespell "法术ID"

4
播放声音:这里要用到这个命令
PlaySound "声音ID"
例如:aalaptop3->PlaySound "conjuration hit"将使aalaptop3这个物品一次性播放召唤法术的声音。
如果要循环播放用这个命令
PlaySound3D "声音ID"
以上命令所播放的声音文件一般都为短促的WAV文件,如要播放较长且优美的MP3文件用这个命令
STREAMMUSIC “声音ID”

5
传送:
COC “单元ID”
例如Player->coc "vivec, jobasha's rare books"(注意逗号后面要加空格),这个命令将把玩家传送到VIVEC的桥八撒书店里面的入口处。这里要特别注意的是COC这个命令是传送到目标单元的中央位置,而中央位置并不一定是在出口,甚至不在房子里。所以使用后有时会发现自己被夹在了墙里或到处一片黑暗。要精确传送到目标单元的特定位置需要使用以下这个命令
positioncell “X” “Y” “Z” “ZDOT” "单元ID" (ZDOT是指传送过去之后玩家面朝的方向)

6
开关物品
disable这个命令可使目标物体完全隐形,既看不到也碰不到。与此对应的ENABLE命令用来使DISABLE的物品显示出来。

实例:
这个就是我在sphinx's blessing中为传送机写的脚本

begin aaatd

if ( menumode == 1 )
return
endif

short questionState
short button

if ( OnActivate == 1)
Set questionState to 1
Return
endif

if ( questionState == 0 )
Return
endif

if ( questionState == 1 )
if ( Player->GetItemCount Gold_001 >= 100 )
MessageBox "Would you like to leave a donation of 100 gold and ask for the
transport to Jobasha's bookshop?" "Yes" "No"
Set questionState to 2
Return
endif

MessageBox "This device was made as a convenient way to a famous bookshop for
the man who want learn more lore."
Set questionState to 0
Return

endif

if ( questionState == 2 )

set button to GetButtonPressed

if ( button == 0 )
Player->RemoveItem Gold_001 100
MessageBox "Thank you.your donation will be used as a part of research fund"
Player->coc "vivec, jobasha's rare books"
Set questionState to 0
endif

if ( button == 1 )
MessageBox "This device was made as a convenient way to a famous bookshop for
the man who want learn more lore."
Set questionState to 0
endif

endif


end aaatd

好,本讲结束。祝大家玩的快乐,生活的快乐

Sphinx于2005年2月24日发表

  [本文结束]

[返回顶部][责任编辑:Lejardo] 

§相关文章§
·MOD制作实例教学(一)
·经典MOD推荐V2.6
·控制台命令简明教程
§推荐文章§
·晨风美女MOD
·MOD制作实例教学(五)
·MOD制作实例教学(四)
·MOD制作实例教学(三)
·MOD制作实例教学(一)
·经典MOD推荐V2.6
Copyright©2003-2005 铁资网&铁血联盟资讯网.All rights reserved.
本站所有原创图文资料版权属原作者所有,转载请务必联系原作者并请注明本站出处.
Powered by: dedeCMS Version 2.1