Rubbish-Nec
|
分享:
▼
x0
|
[1.6] 关于SMA的entity
开始着手想写一下复仇者火箭筒 但是对entity的用法还是有一点的疑问…… 下面是yymmychat大神的超级M4的写法: 有一点不太有用的就删掉他吧 复制程式
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if (pev_valid(ent))
{
// get entity's origin and velocity
new view_dist = 45
new Float:velocity[3], Float:origin[3], Float:temp
fm_get_aim_vector(id, view_dist, velocity, origin)
temp = float(Grenade_Start_Speed) / (view_dist)
xs_vec_mul_scalar(velocity, temp, velocity)
// set entity's status
set_pev(ent, pev_classname, "zp_M203_Grenade")
set_pev(ent, pev_solid, SOLID_BBOX)
set_pev(ent, pev_movetype, MOVETYPE_BOUNCE)
set_pev(ent, pev_sequence, 1)
// set entity's size
new Float:mins[3] = { -2.5, -5.0, -2.5 }
new Float:maxs[3] = { 2.5, 5.0, 2.5 }
engfunc(EngFunc_SetSize, ent, mins, maxs)
// set entity's angle same as player's angle
new Float:angles[3]
pev(id, pev_angles, angles)
set_pev(ent, pev_angles, angles)
// set entity's model
engfunc(EngFunc_SetModel, ent, M203_Grenade_Model)
// set entity's origin
set_pev(ent, pev_origin, origin)
// set entity's gravity
set_pev(ent, pev_gravity, 0.60)
// set entity's status flag value
set_pev(ent, pev_iuser1, id) //记录发射枪榴弹的玩家ID
set_pev(ent, pev_iuser2, 0) //记录枪榴弹是否有碰撞过障碍物的flag (此数值是一有碰撞过就一直设定成 1,用于判别是否有经过第一次的碰撞)
set_pev(ent, pev_iuser3, 0) //记录枪榴弹是否有碰撞过障碍物的flag (数值为 1 时代表刚刚有碰撞过)
set_pev(ent, pev_iuser4, 0) //记录枪榴弹发射后是否已过了保险时间的flag (数值为 1 时代表已经过了保险时间)
// set entity's velocity
set_pev(ent, pev_velocity, velocity)
new param[5]
param[0] = ent //记录M203枪榴弹的物件ID
param[1] = 80 //设定M203最迟的爆炸时间,即最多延迟到这个时间一定会爆炸.(单位:0.1's)
//param[2] = 5 //设定M203枪榴弹发射后的保险时间,即至少要过了保险时间后才会爆炸.(单位:0.1's)
param[2] = 2 //设定M203枪榴弹发射后的保险时间,即至少要过了保险时间后才会爆炸.(单位:0.1's)
param[3] = 0 //记录枪榴弹物件是否有卡住的情况的连续次数
param[4] = 0 //记录枪榴弹随机改变一次物件的角度所使用的时间记录变数
set_task(0.1, "M203_grenade_process", TASK_ID_1, param, 5)
Orz……一堆看不懂,谁能教一下……
|
已成过去的中二少年。
|
x0
[楼 主]
From:香港城市电讯 | Posted:2010-04-01 16:09 |
|
|
Rubbish-Nec
|
分享:
▲
▼
下面是引用 a7811311622 于 2010-04-01 16:20 发表的 : 有些内容解释起来也很麻烦…你就先把部分内容当作写entity的公式就好啦~ 我记得yymmychat大神说过这是必需的阿 复制程式
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if (pev_valid(ent))
{
// set entity's status
set_pev(ent, pev_classname, "zp_M203_Grenade")
set_pev(ent, pev_solid, SOLID_BBOX)
set_pev(ent, pev_movetype, MOVETYPE_BOUNCE)
set_pev(ent, pev_sequence, 1)
} [/pre]
|
已成过去的中二少年。
|
x0
[2 楼]
From:香港城市电讯 | Posted:2010-04-01 18:35 |
|
|
a7811311622
我…在工作了…
级别: 版主
版区: CS提问区
x771
x2152
|
分享:
▲
下面是引用 Rubbish-Nec 于 2010-04-01 18:35 发表的 :
我记得yymmychat大神说过这是必需的阿 复制程式
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if (pev_valid(ent))
{
// set entity's status
set_pev(ent, pev_classname, "zp_M203_Grenade")
set_pev(ent, pev_solid, SOLID_BBOX)
set_pev(ent, pev_movetype, MOVETYPE_BOUNCE)
set_pev(ent, pev_sequence, 1)
}
除了"set_pev(ent, pev_sequence, 1)"之外…的确都算是必要的没错…
|
|
x0
[3 楼]
From:台湾教育部 | Posted:2010-04-01 19:26 |
|
|
|