(已解決)對ExecuteHamB的疑問

Home Home
引用 | 編輯 s091140
2014-04-15 23:44
樓主
推文 x0
插件是DSHGFHDS十字弓插件

maxdamage乃傷害數值

而ptd是被擊中的人


下面有四種寫法

1)  fm_fakedamage(ptd, "arrowdamge", maxdamage, DMG_BLAST)   作者原版寫法 <-----運作正常無誤

2)  ExecuteHamB(Ham_TakeDamage, ptd, 0, pev(ent, pev_owner), maxdamage, 0)  寫法1 <-----運作正常無誤

但我想讓弓箭對npc/人質也有傷害

3)  ExecuteHamB(Ham_TakeDamage, -1, 0, pev(ent, pev_owner), maxdamage, 0)     寫法2<-----出現error log

4)  ExecuteHamB( Ham_TakeDamage, FM_NULLENT ,0 ,pev(ent, pev_owner),  maxdamage, DMG_BLAST )  寫法3<---出現error log


fw_Touch 是弓箭實體打中目標後給予目標傷害
寫法2,3出現的error log

L 04/15/2014 - 23:18:22: [HAMSANDWICH] Entity out of range (-1)
L 04/15/2014 - 23:18:22: [AMXX] Run time error 10: native error (native "ExecuteHamB")
L 04/15/2014 - 23:18:22: [AMXX]    [0] crossbow.sma::fw_Touch (line 479)

請問如何修正?

獻花 x0
引用 | 編輯 op47
2014-04-15 23:58
1樓
  
FM_NULLENT 是 -1 , -1 不是有效的物件 (> -1), 所以會出現Entity out of range (-1).
正確應該是用 由 fw_Touch 偵測到的 touched 的 id 而不是用 FM_NULLENT

獻花 x0
引用 | 編輯 弒血
2014-04-15 23:59
2樓
  
下面是引用 s091140 於 2014-04-15 23:44 發表的 對ExecuteHamB的疑問: 到引言文
插件是DSHGFHDS十字弓插件
maxdamage乃傷害數值
而ptd是被擊中的人

下面有四種寫法
.......



我記得 ptd的位置是受害者..


ExecuteHamB(Ham_TakeDamage, -1, 0, pev(ent, pev_owner), maxdamage, 0) //受害者是-1? 


怎麼不用個判斷..


if (!is_user_alive(ptd)) //給不是活著的玩家..進行
ExecuteHamB(Ham_TakeDamage, ptd, 0, pev(ent, pev_owner), maxdamage, 0) //讓不是活著的執行


有問題..再發問吧

獻花 x0
引用 | 編輯 op47
2014-04-16 00:00
3樓
  
Delete.

獻花 x0