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 |
|
|
|