引用 | 編輯
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的疑問: 我記得 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 |