[已解決] 取得傷害%數

Home Home
引用 | 編輯 zxzyman
2014-04-04 23:25
樓主
推文 x0
不好意思...   希望有人能幫助我


因為在殭屍裡,有些生命較高,不易殺死的殭屍

我想到一個點子,攻擊殭屍造成傷害30%數, 這個不知道有沒有人想過




下面是插件內容 的一個部份

複製程式
 if (g_lasergun[attacker] && g_currentweapon[attacker] == CSW_AWP)
 { 
  static Float:originF[3]
  pev(victim, pev_origin, originF)
  
  new plrWeapId, plrClip, plrAmmo
  plrWeapId = get_user_weapon(attacker, plrClip, plrAmmo)
  if (plrWeapId == CSW_AWP)
   SetHamParamFloat(4, damage += get_user_health(victim))
  
  client_print(attacker, print_center, "Enemy Electrocuted!")
  if(get_pcvar_num(cvar_particles_dead))
   dead_efect(originF)
 }

上面是,damage += get_user_health(victim)       (也就是秒殺)

我想想後寫出, damage += (get_user_health(victim) *= 0.3 )     (傷害30%)

結果愚蠢的下場就是失敗...  

獻花 x0
引用 | 編輯 Nailaz
2014-04-05 00:20
1樓
  
damage *= 1.3

獻花 x1
引用 | 編輯 zxzyman
2014-04-05 22:57
2樓
  
下面是引用 Nailaz 於 2014-04-05 00:20 發表的 : 到引言文
damage *= 1.3

這樣會變成武器X1.3... 

獻花 x0
引用 | 編輯 mischna09
2014-04-05 23:04
3樓
  
set_user_health(victim, get_user_health(victim) * 0.7)
痾.. 一個提點的語法 不過如果一直這樣子打殭屍的話的話他應該死不了...頂多某道具一次吧

獻花 x0
引用 | 編輯 mischna09
2014-04-05 23:06
4樓
  
要把本來的傷害先弄成0哦..如果你純粹只要造成指定傷害的話

獻花 x0
引用 | 編輯 zxzyman
2014-04-06 16:44
5樓
  
我想到這個方法:   但失敗

new PlayHp, Hiting

PlayHp = get_user_health(victim)

new Float:Dam = 0.3
Hiting = PlayHp *= Dam

if (plrWeapId == CSW_AWP)
SetHamParamFloat(4, damage += Hiting )





假如玩家生命3000

3000 x 0.3 = 900

傷害 + 900    

結果打下去 傷害變成: 1398658 (幾百萬....)

請問我上面的邏輯有錯嗎?...   還是說沒這麼單純...

獻花 x0
引用 | 編輯 Nailaz
2014-04-06 18:07
6樓
  
應該是小數問題
把get_user_health(index)
改成
pev(index, pev_health)
應該可行

獻花 x1
引用 | 編輯 [NiGhT]-妖
2014-04-07 19:54
7樓
  
if (g_lasergun[attacker] && g_currentweapon[attacker] == CSW_AWP)
{
static Float:originF[3]
pev(victim, pev_origin, originF)

new plrWeapId, plrClip, plrAmmo
plrWeapId = get_user_weapon(attacker, plrClip, plrAmmo)
if (plrWeapId == CSW_AWP)
  SetHamParamFloat(4, damage += get_user_health(victim))

client_print(attacker, print_center, "Enemy Electrocuted!")
if(get_pcvar_num(cvar_particles_dead))
  dead_efect(originF)
}
get_user damger %
}
end

獻花 x0
引用 | 編輯 弒血
2014-04-08 08:37
8樓
  
下面是引用 zxzyman 於 2014-04-06 16:44 發表的 : 到引言文
我想到這個方法:   但失敗

new PlayHp, Hiting

PlayHp = get_user_health(victim)

new Float:Dam = 0.3
Hiting = PlayHp *= Dam

if (plrWeapId == CSW_AWP)
SetHamParamFloat(4, damage += Hiting )





假如玩家生命3000

3000 x 0.3 = 900

傷害 + 900    

結果打下去 傷害變成: 1398658 (幾百萬....)

請問我上面的邏輯有錯嗎?...   還是說沒這麼單純...



如果是我的話,我會先取得每隻殭屍的最大生命值去做:


例如說 我有一隻殭屍 血量 5000

先把傷害倍數乘於血量 = 新傷害倍數

再把新傷害倍數乘於1.0 = 傷害值


換句話說..

new Float:maxhealth, Float:adddmg, Float:newdmg;

maxhealth = float(5000); //最大生命,重點是看你如何取的..我這個只是個例子...
adddmg = 1.3; //30%傷害
newdmg = (damage + (maxhealth * adddmg)); // 取得舊傷害 + 傷害倍數
SetHamParamFloat(4, newdmg ); //給予新的傷害值

獻花 x1
引用 | 編輯 zxzyman
2014-04-08 13:27
9樓
  
  
下面是引用 s8720419 於 2014-04-08 08:37 發表的 : 到引言文




如果是我的話,我會先取得每隻殭屍的最大生命值去做:


例如說 我有一隻殭屍 血量 5000

先把傷害倍數乘於血量 = 新傷害倍數

再把新傷害倍數乘於1.0 = 傷害值


換句話說..

new Float:maxhealth, Float:adddmg, Float:newdmg;

maxhealth = float(5000); //最大生命,重點是看你如何取的..我這個只是個例子...
adddmg = 1.3; //30%傷害
newdmg = (damage + (maxhealth * adddmg)); // 取得舊傷害 + 傷害倍數
SetHamParamFloat(4, newdmg ); //給予新的傷害值

原來不是只有%數要用Float....

我參考您的作法,但省去maxhealth

我用zp_get_zombie_maxhealth 取得殭屍生命,成功做出%數傷害了

但是1.3並不是30%傷害,這樣會變成130%傷害 (我剛剛想了很久發現就是錯在這...)
Nailaz 大大 誤導了我們了  表情
感謝s8720419 大大指點幫助,貌似有學到了什麼..~   表情


這樣就能延伸出不一樣的想法了,像是道具對復仇者有%數傷害 

獻花 x0
引用 | 編輯 岳岳
2014-04-08 19:24
10樓
  
下面是引用 zxzyman 於 2014-04-08 13:27 發表的 : 到引言文
  

原來不是只有%數要用Float....

我參考您的作法,但省去maxhealth

我用zp_get_zombie_maxhealth 取得殭屍生命,成功做出%數傷害了

但是1.3並不是30%傷害,這樣會變成130%傷害 (我剛剛想了很久發現就是錯在這...)
Nailaz 大大 誤導了我們了  表情
感謝s8720419 大大指點幫助,貌似有學到了什麼..~   表情  


這樣就能延伸出不一樣的想法了,像是道具對復仇者有%數傷害 



30%傷害應該是 *0.7 才對 0.0

獻花 x0
引用 | 編輯 zxzyman
2014-04-08 20:53
11樓
  
下面是引用 岳岳 於 2014-04-08 19:24 發表的 : 到引言文




30%傷害應該是 *0.7 才對 0.0

我不是用類似BOT購買率的方式
(random_float(0.0, 1.0) > 0.7)    (30%機率)

是用最大生命 X 0.3 = 最大生命30%傷害...

像是用計算出來的...



但是BOT的購買率的30% 是0.7 就比較不了解了


忽然發現提到%會這麼多話題.... 

獻花 x0
引用 | 編輯 a7811311622
2014-04-08 21:05
12樓
  
10樓之前提到血量…可是沒說是「最大」血量還是「當前」血量…
然後說 30% …可是也沒說這是「增加」還是「減少」…
看完全部的回覆後…結論是變成了打目標一下目標的血量大概只剩下原血量的30%?
表情   表情   表情

獻花 x0
引用 | 編輯 弒血
2014-04-08 21:40
13樓
  
確實有可能 2~3下..就打死殭屍..

不過 看要不要設定機率處發

用YY大的方法 再傷害那邊使用機率

不然這樣..基本上 人類 一出場 殭屍穩死

獻花 x0
引用 | 編輯 zxzyman
2014-04-09 20:38
14樓
  
  
下面是引用 a7811311622 於 2014-04-08 21:05 發表的 : 到引言文
10樓之前提到血量…可是沒說是「最大」血量還是「當前」血量…
然後說 30% …可是也沒說這是「增加」還是「減少」…
看完全部的回覆後…結論是變成了打目標一下目標的血量大概只剩下原血量的30%?
表情       表情       表情  

哇~  是a78大  表情  


不好意思, 我傳訊息給您後,s8720419大就已經在協助我了

過程中有參考a78大的ZP指令.. 



我是想讓是殭屍最大生命,減30%的生命,

所以打4下就會死~

獻花 x0
引用 | 編輯 弒血
2014-04-18 18:41
15樓
  
下面是引用 zxzyman 於 2014-04-09 20:38 發表的 : 到引言文
  

哇~  是a78大  表情  


不好意思, 我傳訊息給您後, s802749大就已經在協助我了

過程中有參考a78大的ZP指令.. 



我是想讓是殭屍最大生命,減30%的生命,

所以打4下就會死~



題外話..


不好意思, 我傳訊息給您後, s802749大就已經在協助我了


名子好像錯了表情

獻花 x1