CLEO是应用于Rockstar Games出品的单机游戏《侠盗猎车手》的插件,在游戏中扩展编码的可能性。最新版本为CLEO 4.3 ,官方更新于2014年3月。CLEO的脚本是一些扩展名为.cs的sanny builder编写脚本。
cleo_Cleo -What'sASI
它们(用于GTA的)都是动态链接库,换了个扩展名。换言之可以使用任何编写动态链接库的方法。要编写asi,建立一个dll工程,修改游戏的代码写在DllMain函数内。
这是C++的写法
要写出实用的asi插件,要学习汇编,逆向分析,一门编程语言。--熟悉游戏引擎和DirectX编程是成为大神的必经之路。
GTA3和VC自身就能加载asi,GTASA需要安装加载器
cleo_Cleo -功能
opcodes
CLEO为脚本编写者提供了许多有用的opcode(GTA3、VC各27个,SA100个),注意不能在main.scm里用。
脚本
CLEO的脚本是一些扩展名为.cs(custom script)的文件。用sanny builder编写。开始运行游戏的时候,CLEO会检测cleo文件夹下的所有该类型的文件并加载。成功后,脚本就开始执行其各自的功能了。避免了直接修改main.scm产生的存档不能用的问题。一般cleo脚本的安装非常简单:只需复制所有文件到cleo文件夹即可。删除对应的文件,你就卸载了这些脚本。你可以在网上各种网站或者论坛下载到你所需的插件。目前国内作者已知制作的脚本多达700-800个。
插件
cleo4提供了SDK让用户编写新opcode,扩展名为.cleo,放在cleo文件夹内即可生效,cleo插件也是动态链接库。
cleo_Cleo -安装
您也可以下载独立的存档或自动安装程序。安装CLEO非常简单,只需解压缩到游戏根目录或运行安装程序,并按照其指示进行。
您还可以安装Sanny Builder。运行Sanny Builder,选择好游戏文件夹。您将会看到CLEO这个词在状态栏显示为红色。阅读许可协议并按下'安装'按钮。
cleo_Cleo -教程
引言:CLEO的环境和基本说明
通过CLEO可以实现很多以前根本不敢想的功能(但不是CLEO的功劳),比如让游戏主角在天上飞,海里的鲨鱼会吃人,像蜘蛛侠一样爬到墙上,发射六脉神剑等等,可以说是其乐无穷的一种MOD。
想在游戏中使用CLEO功能,首先需要安装CLEO环境,去CLEO的主页下载最新的cleo4,下载后安装到你的游戏目录下,这时打开游戏目录,你会发现多了一个CLEO文件夹。以后你在网上下载的CLEO就可以放在这个文件夹下了。注意只有扩展名为.cs或.cm的文件才能放在CLEO目录,.fxt文件要放在CLEO_TEXT目录下。游戏运行时加载所有cs文件,玩家可以使用全部功能。
CLEO功能主文件的扩展名是cs(CLEO Script),一些任务类CLEO还有扩展名为cm(custom mission)的任务文件,放在CLEO文件夹下;此外还可能有扩展名为fxt的文件,是CLEO中所需要的文本描述,可以用记事本编辑,放在CLEOCLEO_TEXT文件夹下;如果还有扩展名为txd的,放在游戏目录下的modelstxd文件夹或models文件夹下。若还有其余文件请参考该MOD的说明。
在游戏中使用CLEO功能,需要详细阅读帮助文件,知道其功能,使用功能的方法(快捷键或作弊码),使用功能所需要的条件(步行或乘车),以及一些可能导致游戏错误的BUG的说明,尽量避免在这些情况下使用CLEO,这是很重要的,免得你在没存档之前错误退出而捶胸顿足。
CLEO的修改和制作需要一款软件:SannyBuilder(简称SB),在其官网上可以免费下载,安装完成以后就可以使用了。如果出错需要在Tools-Options里设置游戏的安装路径。
SB可以打开main.scm文件,.cs文件,.cm文件以及所有的文本文件。在打开文本文件的时候就是一个纯粹的文本编辑器;在打开CLEO文件和MAIN文件时先自动反编译出源代码存为txt放在当前目录,再打开该txt,我们做好修改以后,需要按下F7键,程序完成三个步骤:保存当前文档(txt),编译成CLEO的cs文件或main.scm文件,复制该文件到游戏目录(如果不在原始目录的话),cs和cm放到CLEO下,main.scm放到Script下,总之各归各位。大概就是这么一个流程。
cleo_Cleo -相关范例
这是一个代码很简单的CLEO,主文件名是repair.cs,主要功能是在车上的时候,按Y键可以把车修好,就不用去喷漆处了。
以下是该CLEO源码:
//ThisfilewasdecompiledusingSASCM.INIpublishedbySeemann(files/SASCM.rar)on13.10.2007
{$VERSION3.1.0027}
{$CLEO.cs}
//-------------MAIN---------------
//注意以上代码不可缺少,它标志着这是一个CLEO文件,而不是main.scm文件
thread'ENGINE'//引号里的是CLEO的名称,必须保证不会和已有的CLEO重名
:ENGINE_11//这是标签,为语句跳转所设
wait10//等待10毫秒
if//如果,条件判断
Player.Defined($PLAYER_CHAR)//玩家是否定义?真正含义不解,没有这个判断也行
jf@ENGINE_11//如果条件不满足的话跳转到ENGINE_11,满足的话继续执行
ifand//多条件必须同时满足,表示与的关系
0449:actor$PLAYER_ACTORin_a_car//主角是否在车里
00E1:player0pressed_key11//是否按下了功能键11(游戏默认是Y键)
jf@ENGINE_11//如果以上条件不满足就跳转到标签11
03C0:$CAR_REP=actor$PLAYER_ACTORcar//定义主角所乘车辆的句柄变量,把主角乘坐的车定义为$CAR_REP
0A30:repair_car$CAR_REP//修复自定义车辆$CAR_REP
jump@ENGINE_11//无条件跳转
0A93:end_custom_thread//结束01B2:give_actor2@weapon28ammo60//Loadtheweaponmodelbeforeusingthis//给对方设置武器01B9:set_actor2@armed_weapon_to0//武器最大弹药数量
cleo_Cleo -CLEO编写
当玩家在制作一个CLEO的cs脚本的时候,需要注意一些细节,比如:
1、使用循环时,不能直接jf到条件判断上,会导致游戏卡住(没有提示),请在if之前加等待命令
2、并不是创作一个很好的功能就必须使用大量的变量和各种高端代码,这是一个误区,opcode语句就像积木一样,并非需要把积木用雕刻刀雕琢的活灵活现才能做出好CLEO,积木的更大亮点在于拼接,利用各种语句和循环技巧进行组装调用,从而获得更多新的灵感和功能,这才是正规发展方向,然后才是高端技巧的掌握和学习,简单讲,就是CLEO需要创意大于技巧。
3、玩家要随时注意更新自己的OPCODE语句库,因为原版的sanny builder并没有搜集齐所有的OPCODE指令,这就需要玩家在网上各地寻找自己需要的资源并加以整合了。
4、学会使用障眼法,例如一个汽车发射炮弹的cleo,原理可以是在汽车上面创建一个人物,给人物武器,然后让人物开炮,最后隐藏人物,以此就达成了汽车开炮的目的。学会“高端技巧”之后,直接调用游戏制造导弹的方法。
5、不要在cleo里使用全局变量,会把main.scm里的变量复盖,主角等唯一物体除外