文♂
|
分享:
▼
x0
|
[1.6][插件] [关于npc] NPC有几个问题要问一下各位高手
复制程式
npc_move(ent, Float:target[3], speed)
{
new Float:origin[3], Float:vTrace[3], Float:vTraceEnd[3], Float:hitOri[3]
pev(ent, pev_origin, origin)
velocity_by_aim(ent, 45, vTrace)
vTraceEnd[0] = vTrace[0] + origin[0]
vTraceEnd[1] = vTrace[1] + origin[1]
vTraceEnd[2] = vTrace[2] + origin[2] - 45.0
engfunc(EngFunc_TraceLine, origin, vTraceEnd, ent, ent, hitOri)
new Float:gdis2 = vector_distance(origin, hitOri)
if (gdis2 < 43)
{
origin[2] += 10.0
set_pev(ent, pev_origin, origin)
}
client_print(0, print_chat, "%d", floatround(gdis2))
ent_move_to(ent, target, speed)
set_anim(ent, 1)
enemy[ent] = 0
startact[ent] = 0
}
这是我npc的行走语法 其中... 复制程式
new Float:origin[3], Float:vTrace[3], Float:vTraceEnd[3], Float:hitOri[3]
pev(ent, pev_origin, origin)
velocity_by_aim(ent, 45, vTrace)
vTraceEnd[0] = vTrace[0] + origin[0]
vTraceEnd[1] = vTrace[1] + origin[1]
vTraceEnd[2] = vTrace[2] + origin[2] - 45.0
engfunc(EngFunc_TraceLine, origin, vTraceEnd, ent, ent, hitOri)
new Float:gdis2 = vector_distance(origin, hitOri)
if (gdis2 < 43)
{
origin[2] += 10.0
set_pev(ent, pev_origin, origin)
}
是用来解决卡住在一些玩家能上,npc不能的问题 经游戏测试 发现gdis2的数值过千, 还不断增加 请问我写错了怎么?
|
|
x0
[楼 主]
From:香港网上行 | Posted:2011-09-11 19:43 |
|
|
文♂
|
分享:
▲
▼
下面是引用 史来姆 于 2011-09-11 19:47 发表的 : engfunc(EngFunc_TraceLine, origin, vTraceEnd, ent, ent, hitOri) 这句根本不知是甚么来- -" 其实我都不懂是怎么用的 engine:trace_line(%1,%2,%3,%4) fakemeta:engfunc(EngFunc_TraceLine,%2,%3,%1,%1,%4)
|
|
x0
[2 楼]
From:香港网上行 | Posted:2011-09-11 19:53 |
|
|
文♂
|
分享:
▲
▼
下面是引用 i-c0112 于 2011-09-13 18:29 发表的 : 只要能读取 pev_v_angle 的数值应该就可以吧 复制程式
npc_move(ent, Float:target[3], speed)
{
new Float:origin[3], hitOri
pev(ent, pev_origin, origin)
origin[2] -= 15.9
target[2] -= 15.9
engfunc(EngFunc_TraceLine, origin, target, DONT_IGNORE_MONSTERS, ent, hitOri)
//new Float:gdis2 = vector_distance(origin, hitOri)
//if (gdis2 > 5000)
//{
// origin[2] += 10.0
// set_pev(ent, pev_origin, origin)
//}
client_print(0, print_chat, "%d %s", hitOri, hitOri)
target[2] += 15.9
ent_move_to(ent, target, speed)
set_anim(ent, 1)
enemy[ent] = 0
startact[ent] = 0
}
现在用EngFunc_TraceLine就是不能 trace_line反是成功了 求EngFunc_TraceLine的写法
|
|
x0
[8 楼]
From:香港网上行 | Posted:2011-09-13 19:04 |
|
|
Abcdzxc555
|
分享:
▲
复制程式
stock fm_trace_line(ignoreent, const Float:start[3], const Float:end[3], Float:ret[3])
{
engfunc(EngFunc_TraceLine, start, end, ignoreent == -1 ? 1 : 0, ignoreent, 0);
new ent = get_tr2(0, TR_pHit);
get_tr2(0, TR_vecEndPos, ret);
return pev_valid(ent) ? ent : 0;
}
|
|
x0
[9 楼]
From:香港网上行 | Posted:2011-09-13 20:25 |
|
|
|