文♂
|
分享:
▼
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 |
|
|
|