引用 | 编辑
zxzyman
2014-04-04 23:25 |
楼主
▼ |
||
![]() 因为在僵尸里,有些生命较高,不易杀死的僵尸 我想到一个点子,攻击僵尸造成伤害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%) 结果愚蠢的下场就是失败... ![]()
|
引用 | 编辑
mischna09
2014-04-05 23:04 |
3楼
▲ ▼ |
set_user_health(victim, get_user_health(victim) * 0.7)
痾.. 一个提点的语法 不过如果一直这样子打僵尸的话的话他应该死不了...顶多某道具一次吧 ![]() |
引用 | 编辑
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 (几百万....) 请问我上面的逻辑有错吗?... 还是说没这么单纯... ![]() |
引用 | 编辑
Nailaz
2014-04-06 18:07 |
6楼
▲ ▼ |
应该是小数问题
把get_user_health(index) 改成 pev(index, pev_health) 应该可行 ![]() |
引用 | 编辑
[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 ![]() |
引用 | 编辑
弑血
2014-04-08 08:37 |
8楼
▲ ▼ |
下面是引用 zxzyman 于 2014-04-06 16:44 发表的 : 如果是我的话,我会先取得每只僵尸的最大生命值去做: 例如说 我有一只僵尸 血量 5000 先把伤害倍数乘于血量 = 新伤害倍数 再把新伤害倍数乘于1.0 = 伤害值 换句话说.. new Float:maxhealth, Float:adddmg, Float:newdmg; maxhealth = float(5000); //最大生命,重点是看你如何取的..我这个只是个例子... adddmg = 1.3; //30%伤害 newdmg = (damage + (maxhealth * adddmg)); // 取得旧伤害 + 伤害倍数 SetHamParamFloat(4, newdmg ); //给予新的伤害值 ![]() |
引用 | 编辑
zxzyman
2014-04-08 13:27 |
9楼
▲ ▼ |
下面是引用 s8720419 于 2014-04-08 08:37 发表的 : 原来不是只有%数要用Float.... 我参考您的作法,但省去maxhealth 我用zp_get_zombie_maxhealth 取得僵尸生命,成功做出%数伤害了 但是1.3并不是30%伤害,这样会变成130%伤害 (我刚刚想了很久发现就是错在这...) Nailaz 大大 误导了我们了 ![]() 感谢s8720419 大大指点帮助,貌似有学到了什么..~ ![]() 这样就能延伸出不一样的想法了,像是道具对复仇者有%数伤害 ![]() |
引用 | 编辑
a7811311622
2014-04-08 21:05 |
12楼
▲ ▼ |
10楼之前提到血量…可是没说是「最大」血量还是「当前」血量…
然后说 30% …可是也没说这是「增加」还是「减少」… 看完全部的回覆后…结论是变成了打目标一下目标的血量大概只剩下原血量的30%? ![]() ![]() ![]() ![]() |
引用 | 编辑
弑血
2014-04-08 21:40 |
13楼
▲ ▼ |
确实有可能 2~3下..就打死僵尸..
不过 看要不要设定机率处发 用YY大的方法 再伤害那边使用机率 不然这样..基本上 人类 一出场 僵尸稳死 ![]() |