GTA5MOD

CLEO技术讨论贴

mika地狱 发表于 2019-4-7 23:27:45 | 显示全部楼层   [复制链接]
23 4630
本帖最后由 mika地狱 于 2019-4-26 16:41 编辑

这是我以前写的教程,看不懂可在此贴下方留言,有问必答。

cleo基础教程+常用资料(点击进入下载界面)提取码:tkng

这里是CLEO技术讨论贴
我是楼主mika地狱
大家可以一起在下方讨论有关cleo制作的内容哦。
(由于楼主是常年手机在线,所以有时候回帖回得慢,大家别介意哈~)
QQ图片20171216005013.jpg
         
发表于 2019-4-7 23:27:45 | 显示全部楼层
首先我要告诉大家怎么
利用Sanny Builder的代码搜索器
在Sanny Builder的菜单里,有个功能强大的代码搜索器在:Tools→IDE tools→Opcode search


里面有CLEO所要用到的全部代码,这需要一定的英语基础才知道要搜索什么内容:
如果想让某辆车跟着CJ,就需要知道“跟着”是follow,在输入框里输入follow就会出来全部的包含follow的语句。
也就是说,你想要关于什么都语句时,可以试着在代码库中输入有关的关键词,也许就能找到了。

这个特别方便于编写cleo。

想要哪一句在它上面点右键选复制就行了。
         
发表于 2019-4-7 22:18:50 | 显示全部楼层
硬核MIKA233
         
发表于 2019-4-7 23:02:14 | 显示全部楼层
怎么让摄像机瞄准被锁定的NPC,语句是什么。
         
发表于 2019-4-7 23:16:12 | 显示全部楼层
本帖最后由 mika地狱 于 2019-4-8 04:14 编辑
时崎狂三 发表于 2019-4-7 23:02
怎么让摄像机瞄准被锁定的NPC,语句是什么。

首先你要弄个搜索npc的判定循环
先用语句04C4: 设置主角的坐标,下面例子为4@ 5@ 6@,你可以设置为任意三个。
:标签1
0A3E: unknown_get_actor_in_sphere 4@ 5@ 6@ radius 3.0 3.0 3.0 handle_as 0@ // 在4@ 5@ 6@ 坐标周围3米内选取路人存为变量0@

标签2
wait 0 //等待0毫秒
if // 如果
  056D: actor 0@ defined // 如果0@变量是存在的,也就是说角色已经找到并选好了。
else_jump @标签1 //如果没有就跳转到标签1,直到搜索到路人,路人被定义为止再继续执行。

最后可以让主角朝向这个路人,有相应的语句写法,由于我是手机用户,不方便,但是你可以参考我制作的mod GTA SA 咒怨 2018,关于伽椰子的那个*.cs文件。

伽椰子向着主角爬的原理 内容就是:先创建一个 让一个人朝着另一个人的方向看 的大判定循环,在这个判定循环中可以 以其它判定条件来让 看人者 执行循环可移位的动作 移动到 被看者 那边去(不用担心 看人者 直走或者走歪,因为 被看者 的位置被锁定了, 被看者 在哪儿 看人者 就往哪儿移动),然后判定离 被看者 的距离有多远,如果到达指定距离就停止循环可移位的动作,如果没有就返回大循环前面内容继续执行循环可移动动作 继续让 看人者 朝着 被看者 那个方向看。到达指定距离后,结束那个大判定循环,后面触发什么内容(随机)...(咒怨2018版本这个mod是减少主角一定的血量)


当然,你也可以在 看人者 朝着 被看者 方向看 循环的时候 以某条件直接让 看人者 执行某动作,然后直接让 被看者 死亡,也行,玩法多样。
         
发表于 2019-4-7 23:37:33 | 显示全部楼层
硬核精品,必须大力支持!
         
发表于 2019-4-8 00:08:02 | 显示全部楼层
支持mika~
         
发表于 2019-4-8 19:01:52 | 显示全部楼层
子线程怎么定义来着
         
发表于 2019-4-12 17:01:49 | 显示全部楼层
本帖最后由 mika地狱 于 2019-4-12 17:10 编辑
时崎狂三 发表于 2019-4-8 19:01
子线程怎么定义来着


上面我发的资料里有子线程的各种用法解释.
用0a92这个语句调用子线程,
在子线程结尾设置个条件如 主角的血 设置为50,
然后在主线程 写个判定条件 如果主角的血 == 50...
这样主线程和子线程 就可以很好的连接了.
也可以 在子线程 put on (让主角瞬移到某xyz地点),然后
在主线程写个判定条件 判定 主角是否到达这个某xyz地点,
这样也可以 也可以是其他的 Actor(人) 不一定是 Player(主角)
         
发表于 2019-4-26 16:59:53 | 显示全部楼层
本帖最后由 mika地狱 于 2019-4-26 17:01 编辑
时崎狂三 发表于 2019-4-8 19:01
子线程怎么定义来着



{$CLEO .cs}     //此句的作用是编译后将文件保存为cs格式
将cs改成s,如下:
{$CLEO .s}     //编译后将文件保存为s格式
这样改后就可以在主CS文件中包含此文件了,然后在主线程写上这句
0A92: create_custom_thread "CLEO\***.s"  //***表示你的子线程的文件名
文件内的句子和这句话之后的句子将在此时同时执行所以也可以用此方法来解决一些需要同时进行的一些操作。
0ABA: end_custom_thread_named '***'
最后这句话用来结束文件调用,但是并不是此句话之后子线程就不发挥作用了,
一旦将他通过之前的语句调用进游戏让他发挥作用,
除非在执行他自己文件的语句中碰到“障碍”不然不会停止。
这点还是需要注意的。
比如



子线程0.s文件内容
{$CLEO .s}
0605: actor $PLAYER_ACTOR perform_animation "FIGHTA_1" IFP "ped" framedelta 4.0 loop 0 lockX 1 lockY 1 lockF 0 time -1  
//让主角做ped.ifp里的FIGHTA_1这个动作 (不锁定 移动X轴 移动Y轴 不循环做动作 -1持续动作本身.延长1000)

end_thread //结束线程

主线程的内容
{$CLEO .cs}  

:0
wait 0
if
player_defined($Player_Actor)
else_jump @0
//先判定游戏是否开始...
0A92: create_custom_thread "CLEO\0.s"  //调用子线程0.s文件
jump @1

然后判定子线程的内容
:1
wait 0
if
Actor.Animation($Player_Actor) == "FIGHTA_1"
else_jump@1
...


*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入我们,

发现科技可以让生活更美好...

立即注册

如果您已拥有本站账户,则可

IGTA热门作品

GTASA下载

IGTA工具栏

MOD安装 MOD教程

IGTA排行榜

    IGTA排行
GTAMOD整合版下载
返回顶部 返回列表