QQ登录

只需一步,快速开始

 找回密码
 定下契约(新注册)

QQ登录

只需一步,快速开始

查看: 1487|回复: 6
收起左侧

[进口教程]CLEO人物创建教程(GTAModding)

[复制链接]

传奇 Legend

谷歌翻译坑爹人肉版(不是人肉饭)

Rank: 16

UID
83
宝石
140 粒
金币
573 枚
节操
30 斤
灵石
0 块
精力
32 ℃
发表于 2012-4-20 19:15:01 | 显示全部楼层 |阅读模式

你这样只看不注册,真的大丈夫?~

您需要 登录 才可以下载或查看,没有账号?定下契约(新注册)

x
本帖最后由 kwanz 于 2012-4-20 19:35 编辑

原帖地址 http://www.gtamodding.com/index.php?title=Spawn_a_ped
CLEO人物创建教程

原帖作者/ 多位编辑者 @GTAModding 翻译/ kwanz @虚拟世界
未经许可 谢绝转载

创建PED(又称character/actor)并不是写一行代码那么简单。要成功地创建人物需要经过好几个步骤。本教程将演示如何用SB的句式创建人物。以下的示例用于SA,但稍作修改就可以用于III/VC。

创建线程
首先,创建一个线程。下面是一个例子:
  1. 004F: create_thread @LoadModel

  2. :LoadModel
  3. // 把下面用的示例代码放在这儿
  4. 004E: end_thread
复制代码



  1. create_thread @LoadModel

  2. :LoadModel
  3. // 把下面用的示例代码放在这儿
  4. end_thread
复制代码

请求模型
请求模型这个步骤很关键。你可以在III/VC的default.ide,SA的peds.ide里找到全部可用的人物列表。用opcode0247或命令Model.Load来请求人物模型。这一命令原本需要用到人物模型的ID号,但SB支持用#打头的人物名称表示。我们以列表中的第一个人物BFORI为例
  1. 0247: load_model #BFORI
复制代码


  1. Model.Load #BFORI
复制代码

有一些刷人opcode不需要请求人物模型,请参考下面的注记。
检测模型是否加载完毕
接下来,你需要检测模型是否加载完毕,这要用到带条件判断opcode0248的IF语句,或者Model.Available命令。如果你用一个不可用的模型创建人物,游戏会挂掉。
  1. repeat
  2.     wait 0 ms
  3.     if
  4.         0248:   model #BFORI available
  5.     then
  6.         break
  7.     end
  8. until false
复制代码


  1. repeat
  2.     wait 0
  3.     if
  4.         Model.Available(#BFORI)
  5.     then
  6.         break
  7.     end
  8. until false
复制代码

另外,如果在请求模型以后调用038B,检测的步骤可以跳过,但是这种代码上的简化会导致游戏的卡顿,因为模型是以流的形式存储的。
下面是检测模型加载完毕的代码。
  1. while 8248:   not model #BFORI available
  2.     wait 0
  3. end
复制代码

创建人物
现在你可以调用创建人物的主要opcode009A了,或者也可以用命令Actor.Create。Opcode的参数包括人物的类型(pedtype)和创建人物的坐标。SB内置有坐标检测工具,可以在游戏运行中点击Tools>IDE Tools>Coords manager...或按快捷键Ctrl+Alt+1,显示玩家的当前坐标。
  1. 009A: 0@ = create_actor_pedtype 4 model #BFORI at 0.0 0.0 0.0
复制代码


  1. Actor.Create(0@, 4, #BFORI, 0.0, 0.0, 0.0)
复制代码

--------------------------------------
其他opcode
其他创建不同状况的人物的opcode包括:
0129: 创建人物作为司机

描述
在车辆驾驶座上创建一个人物
调用格式
0129: [var] = create_actor_pedtype [int1] model [int2] in_car [car_handle] driverseat
参数
[var] 存储人物标识符的变量
[int1] 人物类型(pedtype)
[int2] IDE文件的PEDS节定义的有效人物模型ID或者#+[模型的DFF文件名]
[car handle] 车辆标识符
对应的原生函数(Native functions用于GTA IV)
CREATE_CHAR_INSIDE_CAR

这一opcode在车辆驾驶座上创建一个人物,调用需要存在的车辆和0247检测,否则游戏出错。

01C8: 创建人物作为乘客

描述
在乘客座位上创建一个人物
调用格式
01C8: [var] = create_actor [int1] [int2] in_car [car_handle] passenger_seat [int3]
参数
[var] 存储人物标识符的变量
[int1] 人物类型(pedtype)
[int2] IDE文件的PEDS节定义的有效人物模型ID或者#+[模型的DFF文件名]
[car_handle] 车辆标识符
[int3] 座位号
对应的原生函数(Native functions用于GTA IV)
CREATE_CHAR_AS_PASSENGER

类似009A,opcode在乘客座上创建人物,调用需要存在的车辆和0247检测,否则游戏出错。只要车辆存在,人物甚至可以创建在毁坏的车辆上。如果没有更多的程序控制,当玩家上车时,人物会离开车辆。可以调0526之类让人物留在车上。
如果你在一个不存在的座位上创建人物,人物仍然会创建出来,不过人物不可见。通常的让人物下车的动作不再有效,但可以调opcode强迫人物离开车辆。

以下是一些不需要请求模型直接创建随机人物的opcode。
0376: 创建随机人物
0560: 在驾驶座上创建随机人物
0561: 在乘客座上创建随机人物

Pedtype的限制
某些pedtype只能用于特定的模型,否则游戏会出错。
·Pedtype 6只能用于模型0-4(#null,#cop,#swat,#fbi,#army)
·Pedtype 16只能用于模型5(#medic)
·Pedtype 17只能用于模型6(#fireman)

释放模型
人物创建完毕后,不再需要模型,可以用opcode0249或命令Model.Destroy释放模型
  1. 0249: release_model #BFORI
复制代码


  1. Model.Destroy(#BFORI)
复制代码


设定人物属性
现在你可以为人物添加设置和属性,比如旋转人物,播放动画等等。比如变量0@作为人物的句柄,也就是标识符。在用ped相关opcode时,只需要传入人物句柄即可。你可以用SB的opcode搜索工具找到想用的opcode。点击Tools>IDE Tools>Opcode Search...或按快捷键Ctrl+Alt+2,然后在搜索框中输入actor,就可以找到相关opcode列表。

完整示例
  1. // load model, required to prevent unnecessary crash!
  2. 0247: request_model #BFORI
  3. // check if model is loaded
  4. repeat
  5.     wait 0
  6.     if
  7.         0248:   model #BFORI available
  8.     then
  9.         break
  10.     end
  11. until false
  12. // spawn character
  13. 009A: 0@ = create_actor 4 #BFORI at 0.0 0.0 0.0
  14. // cleanup
  15. 0249: release_model #BFORI
复制代码


附:3/VC全人物图鉴

传奇 Legend

Rank: 16

UID
391
宝石
109 粒
金币
2310 枚
节操
205 斤
灵石
0 块
精力
73 ℃

宝石达人---大丈夫!!!灼眼的夏娜

发表于 2012-4-20 19:20:47 | 显示全部楼层
我也会翻译一点点、- -。

点评

那就没什么好说的了,来帮忙干活!!  发表于 2012-4-20 20:10

评分

参与人数 1金币 +8 收起 理由
root + 8 抢楼奖励

查看全部评分

游戏多读书,少生孩子多养猪

版主

Rank: 32Rank: 32

宝石
343 粒
金币
33148 枚
节操
6394 斤
灵石
12 块
精力
24474 ℃

宝石达人---大丈夫!!!魔光普照善恶天使BRS暴走

发表于 2012-4-20 19:24:17 | 显示全部楼层
貌似很难!

评分

参与人数 1金币 +6 收起 理由
root + 6 抢楼奖励

查看全部评分

传奇 Legend

Rank: 16

UID
280
宝石
2 粒
金币
5557 枚
节操
-39 斤
灵石
0 块
精力
4042 ℃
发表于 2012-4-20 19:57:21 | 显示全部楼层
完全看不懂:dizzy:

世界工人

心之所向

Rank: 16

UID
1
宝石
30 粒
金币
3508 枚
节操
1236 斤
灵石
2 块
精力
12213 ℃

sex lady精力射线真の绅士

发表于 2012-4-20 23:59:40 | 显示全部楼层
适用于sanny的,3和VC只不过是前面的执行码不一样,在OP库里用关键词搜索呗

传奇 Legend

虚拟世界,属于你的世界

Rank: 16

UID
4
宝石
154 粒
金币
5594 枚
节操
458 斤
灵石
0 块
精力
509 ℃
QQ
发表于 2012-4-23 16:28:13 | 显示全部楼层
好东西支持

平凡 Ordinary

Rank: 2Rank: 2

UID
1441
宝石
2 粒
金币
356 枚
节操
0 斤
灵石
0 块
精力
1 ℃
发表于 2012-4-24 01:53:24 | 显示全部楼层
深奥。。~~不太看得懂

本版积分规则

    切换繁體
    Archiver|手机版|小黑屋|

GMT+8, 2024-5-3 15:03 , Processed in 0.175140 second(s), 106 queries .

沪ICP备2021020632号-1

快速回复 返回顶部 返回列表