设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 491|回复: 6

[求助] AMXX数值转换问题 [复制链接]

Rank: 7Rank: 7Rank: 7

帖子
863
精华
0
声望
2462 点
金币
584 Mold
被赞许
7 次
注册时间
2010-5-7
发表于 2010-10-8 18:48:43 |显示全部楼层
请问如何把浮点小数转化为整数(四舍五入也行),查了一下pawn,好像没有发现类似 float_to_num的函数。。

另外检测玩家伤害用RegisterHam好还是clie***_damage好?

使用道具 举报

Rank: 3Rank: 3

帖子
195
精华
0
声望
762 点
金币
155 Mold
被赞许
0 次
注册时间
2009-7-3
发表于 2010-10-8 19:06:54 |显示全部楼层
%1.2f 2位小数
伤害随意如果是修改伤害用Hook
只是检测伤害显示随意

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
863
精华
0
声望
2462 点
金币
584 Mold
被赞许
7 次
注册时间
2010-5-7
发表于 2010-10-8 19:38:30 |显示全部楼层
回复 2# malygros


    第一句没看懂,关于伤害可以检测后加上,然后利用检测的damage再次修改HP应该可以吧。

使用道具 举报

Rank: 3Rank: 3

帖子
195
精华
0
声望
762 点
金币
155 Mold
被赞许
0 次
注册时间
2009-7-3
发表于 2010-10-9 01:53:58 |显示全部楼层
本帖最后由 malygros 于 2010-10-9 01:56 编辑

RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
        if(!is_user_con***ed(attacker)) //如果攻击着断开连接就不往下走
                return HAM_IGNORED;

        if(!(damage_type & DMG_BULLET)) //如果伤害类型不是子弹打中 不往下走
                return HAM_IGNORED;
               
        if((Lp_User[attacker] != -1) && (get_user_weapo***tacker) == Lp_Id[Lp_User[attacker]])) // 我这里是判断插件添加的新武器 你自己跟需求改
        {
                new Float:new_damage = damage * 2.0  //伤害*2.0倍
                SetHamParamFloat(4,new_damage)
                return HAM_IGNORED
        }
        return HAM_IGNORED
}


format(x, 10, "%1.2f", 9.99999)
x= "9.99"

format(x, 10, "%1.1f", 9.99999)
x= "9.9"

使用道具 举报

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

帖子
406
精华
0
声望
9411 点
金币
1421 Mold
被赞许
4 次
注册时间
2009-12-18
发表于 2010-10-10 01:54:28 |显示全部楼层
本帖最后由 a7811311622 于 2010-10-10 02:03 编辑
请问如何把浮点小数转化为整数(四舍五入也行),查了一下pawn,好像没有发现类似 float_to_num的函数。。
...
lyynyfy 发表于 2010-10-8 18:48

請參考<float>裡的內容:
  1. /* Different methods of rounding */
  2. enum floatround_method {
  3.         floatround_round = 0,
  4.         floatround_floor,
  5.         floatround_ceil,
  6.         floatround_tozero
  7. };

  8. /* Round a float into a integer value */
  9. native floatround(Float:value, floatround_method:method=floatround_round);
复制代码
以下是我找到有關Pawn對浮點數的解釋:
  1. floatround round
  2.         round to the nearest integer; a fractional part of
  3.         exactly 0.5 rounds upwards (this is the default)
  4. floatround floor
  5.         round downwards
  6. floatround ceil
  7.         round upwards
  8. floatround tozero
  9.         round downwards for positive values and up-
  10.         wards for negative values (“truncate”)
复制代码
例如:
static Float:num; num = 1.5
floatround(num, floatround_round) = 2 (四捨五入)
floatround(num, floatround_floor) = 1 (無條件捨去)
floatround(num, floatround_ceil) = 2 (無條件進位)
floatround(num, floatround_tozero) = 1 (數值為正,無條件捨去;數值為負,無條件進位)
常都用四捨五入只要寫成floatround(num)就行了…因為後面默認為0…

至於傷害偵測當然最好是用RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")…
使用client_damage偵測到的內容大部分是屬於<csx>自訂的傷害內容…
應該不會常用到…除非整群插件都是自己寫的才有機會用<csx>互相搭配…

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
863
精华
0
声望
2462 点
金币
584 Mold
被赞许
7 次
注册时间
2010-5-7
发表于 2010-10-10 06:13:14 |显示全部楼层
回复 5# a7811311622


    这样的话是针对player玩家实体的,对机器人是无效的,是不是还要用putinclient对机器人转化呢?应该怎么弄呢?谢谢

使用道具 举报

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

帖子
406
精华
0
声望
9411 点
金币
1421 Mold
被赞许
4 次
注册时间
2009-12-18
发表于 2010-10-10 12:07:45 |显示全部楼层
回复  a7811311622


    这样的话是针对player玩家实体的,对机器人是无效的,是不是还要用putinclient对 ...
lyynyfy 发表于 2010-10-10 06:13

呃…很多插件都有一套寫法能讓RegisterHam(Ham_???, "player", "???")
支援機器人吧…例如ZP原碼…或者某些改傷害插件原碼…都有提及…

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部