当前位置:铁资首页>>上古卷轴>>模组教程>>正文
MOD制作实例教学(一)
文章出处:铁资网  作者:sphinx  发布时间:2005-03-08
 

 

我似乎有两个月没出原创了,这回将首先以我前一阶段做的MOD——“sphinx's blessing"为基础实例,由浅入深的向大家讲解有关MOD制作方面的知识,同时也欢迎大家参与讨论。

第一讲:物品放置

思路:
通常的方法是在编辑器的RENDER窗口中拖放实现,这样的好处是方便,缺点是不容易精确定位(例如将一枚金币放到一个小酒杯里)。那么这里我主要讲一下如何通过编写脚本实现精确定位,首先要确定你要将目标放在哪个位置,即X、Y、Z坐标。通过在开启控制台后点击一物品然后输入GETPOS X即可得到该物品的X坐标,同理得到Y、Z坐标。

简要流程
1
进入游戏,来到目的地,首先用ADDITEM “GOLD_001” 1来在玩家物品背包里加入一个金币,然后将其放到游戏中你想放目标物品的地方,开控制台、点金币、输入GETPOS X/Y/Z命令来知道该金币的3坐标,记下。
2
开启官方编辑器,选择你要放置的物品,例如一个箱子,最好新建ID(例如SPHINX11)。双击该物品开启其设置窗口,在SCRIPT里先什么也不选,然后将其拽到右下方目标单元,例如BALMORA法师工会,放到任意位置即可,放到外边的灰色地带也行。
3
进入游戏,接下来讲如何将想要放的物品放到金币那个位置,这里要用到SETPOS X “数字”这个命令将目标放到X坐标为“数字”的位置,同理再用SETPOS Y/Z将物品定位到已知的X,Y,Z坐标位置(可精确到小数点后两位)。
4
现在已经将目标物品放置到金币位置了,为了精益求精接下来讲微调。通过使用MOVE X “数字”这个命令来使该物品言其本身的X方向移动“数字”个单位。同理使用MOVE Y/Z完成将物品精确的放到你满意的地方。这时再使用GETPOS X/Y/Z命令来得知当前该物品的3坐标,记下(假设是100,111,222)。
5
开启官方编辑器,在顶端横排的菜单中的一个下拉菜单中找到EDITSCRIPT并点击进入脚本编辑窗口,点NEW新建,输入:
BEGIN SPHINX01
SPHINX11->SETPOS X 100
SPHINX11->SETPOS Y 111
SPHINX11->SETPOS Z 222
END SPHINX01
点保存,完成了。
6
再次开启该物品的设置窗口,在SCRIPT里的下拉菜单中选刚写好的脚本(SPHINX01),保存。
7
收尾。点编辑器的保存按钮存为ESP文件。使用相关工具例如TESTOOL清理一下GMST垃圾参数后,一个简单的MOD诞生了。


实例
关于第5步那个脚本只是让大家了解基本功能怎样实现的,要力求完美的话还差的远呢。以下是我写的用于那本卷轴的脚本:

begin aaspbk

short placeitem

If ( MenuMode == 1)
Return
Endif


If ( placeitem == 0)
aaspbk2->setpos z -662
aaspbk2->setpos x 507.5
aaspbk2->setpos y -287.42
aaspbk2->setangle x 90

aalaptop3->setpos z -761
aalaptop3->setpos x 47
aalaptop3->setpos y -773

aasplt3->setangle x 270
aasplt3->setpos z -640
aasplt3->setpos x -255
aasplt3->setpos y -270

set placeitem to 1
Endif


setpos z -500
setpos x 375.73
setpos y -431.81

aasplt1->setpos z -500
aasplt1->setpos x 375.73
aasplt1->setpos y -431.81

aasplt2->setpos z -450
aasplt2->setpos x 375.73
aasplt2->setpos y -431.81

aasw1->setpos z -650
aasw1->setpos x 510
aasw1->setpos y -748

aaatd1->setpos z -728.32
aaatd1->setpos x -788.66
aaatd1->setpos y -1041.19

aalaptop1->setangle x 270
aalaptop1->setangle z 270
aalaptop1->setpos z -640
aalaptop1->setpos x -370
aalaptop1->setpos y -637

aagouhuo->setpos z -550
aagouhuo->setpos x 490
aagouhuo->setpos y 0

aa_art_hwk_01->setangle z 90
aa_art_hwk_01->setangle x 270
aa_art_hwk_01->setpos z -230
aa_art_hwk_01->setpos x 321
aa_art_hwk_01->setpos y -2

aaspct1->setpos x -203.7
aaspct1->setpos y -440.6
aaspct1->setpos z -688.79

aalaptop4->setangle z 270
aalaptop4->setangle x 270
aalaptop4->setpos x -370
aalaptop4->setpos y -385
aalaptop4->setpos z -640

short done

if ( done == 1 )
Rotate x 30
Rotate y 40
Rotate Z 45
return
endif

if ( OnActivate == 0 )
Rotate x 30
Rotate y 40
Rotate Z 45
return
endif

PlaySound "Thunder2"
MessageBox "Ladies and gentlemen: I'm Sphinx,and happy to release this mod as a small gift to the fans of TESIII,specially to all the Chinese fans in China and overseas.Enjoy yourself and nice to meet you.Thank you. "
MessageBox "My gifts has been given to you."
player->addspell, "aaspell1"
player->additem, "aaspbt1" 1
player->additem, "aaspbt2" 1
player->additem, "aaspsd1" 1

set done to 1

end aaspbk

大家可以看到,通过这一个脚本我放置了不只一个物品。
关于开头用的
If ( MenuMode == 1)
Return
Endif
这个部分,是用来使该脚本在开启菜单模式时不运行,为了减少CPU占用率。

我用short placeitem这个命令来定义了一个变量(即placeitem),通过这个值的1和0来控制以下这部分物品:
If ( placeitem == 0)
aaspbk2->setpos z -662
aaspbk2->setpos x 507.5
aaspbk2->setpos y -287.42
aaspbk2->setangle x 90

aalaptop3->setpos z -761
aalaptop3->setpos x 47
aalaptop3->setpos y -773

aasplt3->setangle x 270
aasplt3->setpos z -640
aasplt3->setpos x -255
aasplt3->setpos y -270

set placeitem to 1
Endif
所有这部分物品都是“放一次就不再放置”的,也就是说在游戏中完家可拾起,而在这个条件语句之外放置的物品则是不可拾取(因为每时每刻都在执行SETPOS这个命令)

关于使物品旋转:通过这3个命令使该卷轴同时分别绕X、Y、Z轴以30、40、45的速度旋转。
Rotate x 30
Rotate y 40
Rotate Z 45

关于成一定角度放置物品:通过这个命令将aasplt3这个物品定位成X轴转270度的位置(本MOD中的几副画就是这样立起来的)。
aasplt3->setangle x 270

关于物品放置就讲到这里,希望对大家有帮助。
祝大家玩的快乐,生活的快乐。

Sphinx于2005年2月23日发表。

  [本文结束]

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

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