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

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1570|回复: 12

[求助] BOT中文名字不太给力啊! [复制链接]

Rank: 3Rank: 3

帖子
251
精华
0
声望
876 点
金币
88 Mold
被赞许
0 次
注册时间
2009-9-11
发表于 2011-1-14 15:22:22 |显示全部楼层
本帖最后由 xuehui_mold 于 2011-1-14 15:25 编辑

之前我们论坛一位朋友发了BOT中文名字的插件!
自己用了下发现一些BUG。人数越多出现重名的几率很大。
比如:某BOT的名字为同盟社,很几率出现同盟社社这样的名字!
很是让人纠结.
PS:昨天电瓶车被万恶的小偷偷了,心情很郁闷!今天没上班,在家杀BOT,发现这个问题!
所以就拜托各位了!
如果指定哪些名字为T,哪些名字为CT 就更好了!o(∩_∩)o 哈哈

附件为BOT中文名字的插件
感谢原作者!因为原作者已经发了源码,我贴上应该不要紧吧!哈哈

  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <fakemeta>
  4. #include <memhack>

  5. new lpBot[60][32];
  6. new bool:readend;
  7. new lpTotal;
  8. new bool:Lp_SetEnd[33];
  9. new Lp_SetName[32][32];

  10. public plugin_init() // 插件初始化
  11. {
  12.         register_plugin("Bot中文名", "20101004", "小坏")
  13.         register_forward(FM_ClientUserInfoChanged, "on_FM_ClientUserInfoChanged") // Hook
  14.         readend = false;
  15. }

  16. public plugin_cfg()
  17. {
  18.         new configfile[128]
  19.         get_configsdir(configfile,127)
  20.         format(configfile, 127, "%s/Cn_Bot_Id.ini", configfile)
  21.         if(file_exists(configfile))
  22.         {
  23.                 lpTotal = 0;
  24.                 new size = file_size(configfile, 1)
  25.                 if(size > sizeof(lpBot))
  26.                         size = sizeof(lpBot)
  27.                        
  28.                 new trash, names[191]
  29.                 for(new i=0;i<size;i++)
  30.                 {
  31.                         read_file(configfile, i, names, 191, trash);
  32.                         format(lpBot[lpTotal], 32, "%s", names);
  33.                         lpTotal++;
  34.                 }
  35.                 readend = true;
  36.                 log_amx("读取到 %d 个Bot中文ID", lpTotal)
  37.         } else {
  38.                 log_amx("没有找到Bot中文ID配置文件 (%s)", configfile);
  39.                 readend = false
  40.         }
  41.         return PLUGIN_CONTINUE;
  42. }

  43. public client_putinserver(id)
  44. {
  45.         Lp_SetEnd[id] = false;
  46.         if(is_user_bot(id) && readend)
  47.         {
  48.                 new i = random_num(1, lpTotal) - 1;
  49.                 format(Lp_SetName[id], 32, "%s", lpBot[i]);
  50.                 Set_Name(id);
  51.         }
  52.         return PLUGIN_CONTINUE;
  53. }


  54. public on_FM_ClientUserInfoChanged(id, buffer) // 改名
  55. {
  56.         if(!is_user_connected(id))
  57.                 return FMRES_IGNORED
  58.                
  59.         if(Lp_SetEnd[id])
  60.         {
  61.                 new oldname[35], newname[35]
  62.                 get_user_name(id, oldname, 34)
  63.                 get_user_info(id, "name", newname, 34)
  64.                 if (strcmp(newname, oldname)==0)
  65.                         return FMRES_IGNORED
  66.                
  67.                 if(containi(newname, "[NoACG]")!=-1)
  68.                 {
  69.                         replace_all(oldname, charsmax(oldname), "[NoACG]", "")
  70.                         formatex(newname, 31, "[NoACG]%s", oldname)
  71.                         new offset = get_name_offset(buffer)
  72.                         new namelen = strlen(newname)
  73.                         new i
  74.                         for (i = 0; i < namelen; i++)
  75.                         {
  76.                                 memhack_set_char(buffer + offset + i, MEM_NULLBASE, newname[i], MEMTYPE_DATA, MEM_SIGNED)
  77.                         }
  78.                         memhack_set_char(buffer + offset + i, MEM_NULLBASE, 0, MEMTYPE_DATA, MEM_SIGNED)
  79.                 } else {
  80.                         new offset = get_name_offset(buffer)
  81.                         new namelen = strlen(oldname)
  82.                         for (new i = 0; i < namelen; i++)
  83.                         {
  84.                                 memhack_set_char(buffer + offset + i, MEM_NULLBASE, oldname[i], MEMTYPE_DATA, MEM_SIGNED)
  85.                         }
  86.                 }
  87.                 return FMRES_SUPERCEDE
  88.         }
  89.         new offset = get_name_offset(buffer)
  90.         new namelen = strlen(Lp_SetName[id])
  91.         for (new i = 0; i < namelen; i++)
  92.         {
  93.                 memhack_set_char(buffer + offset + i, MEM_NULLBASE, Lp_SetName[id][i], MEMTYPE_DATA, MEM_SIGNED)
  94.         }
  95.         Lp_SetEnd[id] = true
  96.         return FMRES_SUPERCEDE
  97. }

  98. public Set_Name(id)
  99. {
  100.         Lp_SetEnd[id] = false
  101.         new fakename[32] = "0123456789012345678901234567890" // 初始化字符串防止缓冲区过短引发一些了蛋疼的问题
  102.         fakename[strlen(Lp_SetName[id])] = 0 // 以0结尾
  103.         set_user_info(id, "name", fakename) // 修改name 触发Hook来修改中文ID
  104.         return PLUGIN_CONTINUE
  105. }

  106. stock get_name_offset(buffer)
  107. {
  108.         new strtmp1[256]
  109.         copy_infokey_buffer(buffer, strtmp1, 255)
  110.         return contain(strtmp1, "\name\") + 6
  111. }
复制代码
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 3Rank: 3

帖子
0
精华
0
声望
110 点
金币
40 Mold
被赞许
3 次
注册时间
2009-6-18
发表于 2011-1-14 15:36:11 |显示全部楼层
这个我也能修复..只是很懒
自己不感兴趣的就不想看
已有 1 人评分声望 收起 理由
xuehui_mold + 5 唉...我很纠结!

总评分: 声望 + 5   查看全部评分

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
1093
精华
0
声望
4196 点
金币
605 Mold
被赞许
1 次
注册时间
2009-5-16
发表于 2011-1-14 16:24:23 |显示全部楼层
板凳,这个真不错,谢谢LZ分享!
哎,CS外国的不要弄追击啊,不然我就白弄了!

使用道具 举报

Rank: 3Rank: 3

帖子
237
精华
0
声望
639 点
金币
88 Mold
被赞许
0 次
注册时间
2010-12-27
发表于 2011-1-14 21:59:08 |显示全部楼层
没兴趣- -但是支持一下啊

使用道具 举报

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

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

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

发表于 2011-1-14 22:32:01 |显示全部楼层
//没有尝试过的笨方法
52行 new i = random_num(1, lpTotal) - 1;
改为 new i = id; // 直接按ini里BOT名字顺序赋给名字就不会重名
已有 1 人评分声望 收起 理由
xuehui_mod + 10 谢谢!回家再试试!

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

使用道具 举报

Rank: 3Rank: 3

帖子
0
精华
0
声望
110 点
金币
40 Mold
被赞许
3 次
注册时间
2009-6-18
发表于 2011-1-14 23:11:29 |显示全部楼层
LS方法可行
LZ将就用吧..我很懒的
NPC路点跟随可不是那么好办的
已有 1 人评分声望 收起 理由
xuehui_mod + 10 偶非常蛋疼的告诉你,你赖到什么程度啊!好 ...

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

使用道具 举报

Rank: 3Rank: 3

帖子
221
精华
0
声望
458 点
金币
62 Mold
被赞许
-3 次
注册时间
2010-8-12
发表于 2011-1-15 00:01:37 |显示全部楼层
覆盖到哪里啊???????
倾力打造CS1.6MOD (高仿CF)!~

使用道具 举报

Rank: 2

帖子
54
精华
0
声望
123 点
金币
16 Mold
被赞许
0 次
注册时间
2011-6-3
发表于 2011-6-28 20:55:49 |显示全部楼层
多谢了,%>_<%,大爷.....

使用道具 举报

Rank: 1

帖子
16
精华
0
声望
16 点
金币
1 Mold
被赞许
0 次
注册时间
2011-6-29
发表于 2011-7-4 11:06:05 |显示全部楼层
哇!支持支持!!!!!!

使用道具 举报

Rank: 1

帖子
98
精华
0
声望
6 点
金币
7 Mold
被赞许
-1 次
注册时间
2011-11-12
发表于 2011-11-13 04:15:58 |显示全部楼层
板凳,这个真不错,谢谢LZ分享!

使用道具 举报

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

回顶部