[已解决] 取得伤害%数

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