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

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 995|回复: 4

[讨论] 观察pev_flags的一段代码 [复制链接]

Super Moderator

此人已辞职,有事找别人.

Rank: 10Rank: 10Rank: 10

帖子
2341
精华
3
声望
9852 点
金币
3913 Mold
被赞许
-37 次
注册时间
2004-7-17

Modchina元老

发表于 2011-1-18 19:49:16 |显示全部楼层
取自shptools.sma
采用祯比较 打印输出状态变化
  1. #include <amxmodx>
  2. #include <fakemeta>

  3. public plugin_init()
  4. {
  5.         register_forward(FM_PlayerPreThink,"PreThink");
  6. }

  7. UTIL_flags(flags)
  8. {
  9.         new str[128], len
  10.         if(flags & FL_FLY) len += formatex(str[len], 128-len, "FL_FLY | ")
  11.         if(flags & FL_SWIM) len += formatex(str[len], 128-len, "FL_SWIM | ")
  12.         if(flags & FL_CONVEYOR) len += formatex(str[len], 128-len, "FL_CONVEYOR | ")
  13.         if(flags & FL_CLIENT) len += formatex(str[len], 128-len, "FL_CLIENT | ")
  14.         if(flags & FL_INWATER) len += formatex(str[len], 128-len, "FL_INWATER | ")
  15.         if(flags & FL_MONSTER) len += formatex(str[len], 128-len, "FL_MONSTER | ")
  16.         if(flags & FL_GODMODE) len += formatex(str[len], 128-len, "FL_GODMODE | ")
  17.         if(flags & FL_NOTARGET) len += formatex(str[len], 128-len, "FL_NOTARGET | ")
  18.         if(flags & FL_SKIPLOCALHOST) len += formatex(str[len], 128-len, "FL_SKIPLOCALHOST | ")
  19.         if(flags & FL_ONGROUND) len += formatex(str[len], 128-len, "FL_ONGROUND | ")
  20.         if(flags & FL_PARTIALGROUND) len += formatex(str[len], 128-len, "FL_PARTIALGROUND | ")
  21.         if(flags & FL_WATERJUMP) len += formatex(str[len], 128-len, "FL_WATERJUMP | ")
  22.         if(flags & FL_FROZEN) len += formatex(str[len], 128-len, "FL_FROZEN | ")
  23.         if(flags & FL_FAKECLIENT) len += formatex(str[len], 128-len, "FL_FAKECLIENT | ")
  24.         if(flags & FL_DUCKING) len += formatex(str[len], 128-len, "FL_DUCKING | ")
  25.         if(flags & FL_FLOAT) len += formatex(str[len], 128-len, "FL_FLOAT | ")
  26.         if(flags & FL_GRAPHED) len += formatex(str[len], 128-len, "FL_GRAPHED | ")
  27.         if(flags & FL_IMMUNE_WATER) len += formatex(str[len], 128-len, "FL_IMMUNE_WATER | ")
  28.         if(flags & FL_IMMUNE_SLIME) len += formatex(str[len], 128-len, "FL_IMMUNE_SLIME | ")
  29.         if(flags & FL_IMMUNE_LAVA) len += formatex(str[len], 128-len, "FL_IMMUNE_LAVA | ")
  30.         if(flags & FL_PROXY) len += formatex(str[len], 128-len, "FL_PROXY | ")
  31.         if(flags & FL_ALWAYSTHINK) len += formatex(str[len], 128-len, "FL_ALWAYSTHINK | ")
  32.         if(flags & FL_BASEVELOCITY) len += formatex(str[len], 128-len, "FL_BASEVELOCITY | ")
  33.         if(flags & FL_MONSTERCLIP) len += formatex(str[len], 128-len, "FL_MONSTERCLIP | ")
  34.         if(flags & FL_ONTRAIN) len += formatex(str[len], 128-len, "FL_ONTRAIN | ")
  35.         if(flags & FL_WORLDBRUSH) len += formatex(str[len], 128-len, "FL_WORLDBRUSH | ")
  36.         if(flags & FL_SPECTATOR) len += formatex(str[len], 128-len, "FL_SPECTATOR | ")
  37.         if(flags & (1<<27)) len += formatex(str[len], 128-len, "UNKNOWN (1<<27) | ")
  38.         if(flags & (1<<28)) len += formatex(str[len], 128-len, "UNKNOWN (1<<28) | ")
  39.         if(flags & FL_CUSTOMENTITY) len += formatex(str[len], 128-len, "FL_CUSTOMENTITY | ")
  40.         if(flags & FL_KILLME) len += formatex(str[len], 128-len, "FL_KILLME | ")
  41.         if(flags & FL_DORMANT) len += formatex(str[len], 128-len, "FL_DORMANT | ")
  42.         if(strlen(str) > 2) str[strlen(str)-3] = 0
  43.         return str
  44. }

  45. public PreThink(id)
  46. {
  47.         if(!is_user_connected(id)||!is_user_alive(id))return FMRES_IGNORED;
  48.        
  49.         static fflags[33]=0;
  50.         if(fflags[id]!=pev(id, pev_flags)){
  51.         fflags[id]=pev(id, pev_flags);
  52.         client_print(0,print_chat,"id:%d pev_flags = %d (%s)", id,fflags[id], UTIL_flags(fflags[id]))
  53.         }       
  54.         return FMRES_IGNORED
  55. }
复制代码
已有 1 人评分声望 金币 收起 理由
p5248891 + 10 + 1 是你了~

总评分: 声望 + 10  金币 + 1   查看全部评分

此号待删除,不再登陆.

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

帖子
1011
精华
2
声望
24573 点
金币
154 Mold
被赞许
14 次
注册时间
2008-8-7

新人进步奖 Modchina元老 可爱小猫 懒人勋章

发表于 2011-1-18 20:10:27 |显示全部楼层
我觉得这个和你推荐的ent_info.amxx都很有利于开发。

使用道具 举报

Super Moderator

此人已辞职,有事找别人.

Rank: 10Rank: 10Rank: 10

帖子
2341
精华
3
声望
9852 点
金币
3913 Mold
被赞许
-37 次
注册时间
2004-7-17

Modchina元老

发表于 2011-1-18 20:19:19 |显示全部楼层
回复 2# p5248891


    只能用于状态检测 是无法通过插件修改这些状态的 它们的算法在client端完成
此号待删除,不再登陆.

使用道具 举报

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

帖子
1011
精华
2
声望
24573 点
金币
154 Mold
被赞许
14 次
注册时间
2008-8-7

新人进步奖 Modchina元老 可爱小猫 懒人勋章

发表于 2011-1-18 20:33:48 |显示全部楼层
对啊,正是用于检测人物状态。
修改状态是用这句吧set_pev(id, pev_flags, pev(id, pev_flags) | FL_XXX);

使用道具 举报

Super Moderator

此人已辞职,有事找别人.

Rank: 10Rank: 10Rank: 10

帖子
2341
精华
3
声望
9852 点
金币
3913 Mold
被赞许
-37 次
注册时间
2004-7-17

Modchina元老

发表于 2011-1-18 21:10:09 |显示全部楼层
回复 4# p5248891


    pev_flags pev_gaitsequence等你改不了
与PM events有关
代码在mod mp.dll和client.dll都
此号待删除,不再登陆.

使用道具 举报

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

回顶部