本帖最后由 kwanz 于 2012-5-1 14:46 编辑
原帖地址 / Original Post:www.gtaforums.com/index.php?showtopic=415966
[CLEO 不完全教程]
原帖作者 / Author:Deji ,From GTAForums
翻译 / Translator:Oven_N,From 虚拟世界
未经许可 谢绝转载 前言 本教程主要介绍一些CLEO的小技巧,其中最有价值的是菜单面板代码的初步编写
其它两部分分别为随机数生成及计时器,它们都在《CLEO编程教程》有详细讲解
这里就只稍微提一下 正文 前略
Making Panels/创造面板
【我最讨厌的东西之一,为了做这样一个简单的东西就需要编写大量代码,让人反感。】它是个像菜单一样的面板,让玩家可以在上面选择某些选项。
【我将要教的是你该怎么做,至于用法需要由你自己去尝试和创新。】
首先我们需要创造一个面板……
- 08D4: 0@ = create_panel_with_title 'MYPAN' position 29.0 170.0 width 180.0 columns 1 interactive 1 background 1 alignment 0
复制代码
0@ 是储存及访问这个面板的局部变量。不知道什么是局部变量的话去看《CLEO编程教程》。
'MYPAN'是显示在这个面板顶部的标题(SA花式字体哦~)。不要以为标题显示的就是“MYPAN”这串字符,实际上它显示的是GXT文件里该名称对应的文字。不知道什么是GXT文件的话同样去看《CLEO编程教程》。
position 29.0 170.0 表示面板的位置。因为是显示在屏幕上的2D界面所以你不需要Z轴,具体多少由你自己决定。
width 180.0 是面板的宽度,用处你应该清楚。
columns 1 表示一共有多少列,不明白的话……幼儿园欢迎您。
interactive 1 表示是否能够选择面板里面的选项,1表示是,0表示否。
background 1 表示是否显示半透明的背景,参数同上。
alignment 0 表示对齐方式,有左对齐、右对齐和居中(作者没写对应数值,自己试吧……)
现在你创建了个什么都没有的基本面板,接着我们往里面加点料!
- 08DB: set_panel 0@ column 0 header '50' data '1' '2' '3' '4' '5' '6' '7' '8' '9' '0' '11' 'DUMMY'
复制代码
0@ 代表你刚创建的那个面板
column 0 代表你要设置的那一列
header '50' 代表菜单选项之前的提示文字,看起来挺丑的,如果你要加一些提示文字就写在这儿吧。
data '1' '2'...'DUMMY' 表示各列,绝对不要删除其中任何一项,否则后果你懂的。如果有哪一行不用的话在单引号内写“DUMMY”即可。
同样的,'50' '1' '2' ...这些单引号内的文字都应对应一个GXT项目名。在以上参数中'1' 为第一行选项,'DUMMY'为最后一行
你还可以用Opcode:08EE 来专门对面板内某一行进行设置,可带一个数值变量显示,虽然有些繁琐但操作更准确一些。
现在你终于有了一个有着不同选项的面板!可以用上下键选择项目!不过很可惜,当你按选择键(跑步,默认空格)或退出键(进出车辆,默认回车)时,什么都不会发生~
译者的附加说明:
面板部分居然就到此为止,坑爹呐……
关于08EE,我去Opcode数据库查了一下,是这样子的:
- 08EE: set_panel $IMPORT_CAR_PANEL column 1 row 4 text_1number GXT 'DOLLAR' number $IMPORT_CAR_PRICE
复制代码 参数依次为
$IMPORT_CAR_PANEL:储存面板的变量
column 1:列数
row 4:行数
'DOLLAR':GTX项目名
$IMPORT_CAR_PRICE:数字(用途不明?)
作用应该是把某一指定的菜单项设成GXT文字+数字这样的格式(大概是指像商店里买东西的菜单那种带价格的项目),具体大家可以在SB中搜索panel,把列出的Opcode都琢磨试验一下。
继续翻译 Randomization Tutorial/生成随机数
其实主要的内容就两个Opcode(用跳转列表的那个没啥实用性,就不翻了)
- 0209: 0@ = random_int_in_ranges Min Max
- 0208: 0@ = random_float_from Min _to_ Max
复制代码
在Min与Max之间生成一个随机数然后存到变量0@里
0209生成整数,0208生成浮点数(就是带小数点的数) Using Timers/使用计时器
简单地讲就是在游戏运行期内局部变量32@和33@的值每过1毫秒(千分之一秒)会自动加1,这个特性可用于做计时器。比如把32@设为0后就开始循环检查该变量,当到超过指定时间后触发事件啥的……
|