搜索
查看: 6042|回复: 22

我网吧用的显IP来源插件!~~

[复制链接]
发表于 2005-1-24 12:32:13 | 显示全部楼层 |阅读模式 来自 中国–广东–广州
借用hnroc和结合nwb13的优化代码,
我也作了自己的想法
因为网吧的服务器多数有60%是内部玩家,既然是内网就不必要再去查询Mysql数据库以免浪费资源
毕竟内网玩家老喜欢reconnect

代码如下:

  1. // last edit by YanOnline at 2005.1.24

  2. #include <amxmod>
  3. #include <amxmisc>
  4. #include <mysql>

  5. #define DEBUG

  6. new g_country[32][32],g_city[32][32]
  7. new g_buffer[512]
  8. new sBuffer[2048]
  9. new bool:g_sql_connected
  10. new g_dbc

  11. public plugin_init() {
  12.    register_plugin("Look Ip and City","1.0","hnroc")
  13.    register_clcmd("say /city", "cmdcity", 0, "- display city (MOTD)")
  14.    register_clcmd("say city", "cmdcity", 0, "- display city (MOTD)")
  15.    register_cvar("amx_mysql_host","127.0.0.1")
  16.    register_cvar("amx_mysql_user","root")
  17.    register_cvar("amx_mysql_pass","yan")
  18.    register_cvar("amx_mysql_db","amx")
  19.    register_cvar("amx_hideop","1")
  20.    register_srvcmd("amx_load_lic","sql_init")
  21.    new filename[32]
  22.    get_basedir( filename , 31 )
  23.    server_cmd("exec %s/config/mysql.cfg" , filename)
  24.    server_cmd("amx_load_lic")
  25. }

  26. public sql_init(){
  27.         new host[64],user[32],pass[32],dbname[32],error[32]
  28.         get_cvar_string("amx_mysql_host",host,63)
  29.         get_cvar_string("amx_mysql_user",user,31)
  30.         get_cvar_string("amx_mysql_pass",pass,31)
  31.         get_cvar_string("amx_mysql_db",dbname,31)
  32.         #if defined DEBUG
  33.         server_print("[AMX]Sql setting:host[%s] user[%s] password[%s] database[%s]",host,user,pass,dbname)
  34.         #endif
  35.         new dbc = mysql_connect(host,user,pass,dbname,error,32)
  36.         if (dbc < 1 ){
  37.                 server_print("[AMX] SQL Connection Failed! Try once")
  38.                 dbc = mysql_connect(host,user,pass,dbname,error,32)
  39.                 if (dbc < 1){
  40.                         server_print("[AMX] SQL Connection Failed! Check your sql server and its settings")
  41.                         g_sql_connected = false
  42.                         return PLUGIN_HANDLED
  43.                 }else{
  44.                         g_sql_connected = true
  45.                         g_dbc = dbc
  46.                 }
  47.         }else{
  48.                 g_sql_connected = true
  49.                 g_dbc = dbc
  50.         }
  51.         #if defined DEBUG
  52.         server_print("[AMX] SQL Connect OK!")
  53.         #endif
  54.         return PLUGIN_HANDLED
  55. }

  56. public client_connect(id){
  57.    if (!g_sql_connected)
  58.       return PLUGIN_CONTINUE

  59.    new query[512],error[128]
  60.    new ipb1[12],ipb2[12],ipb3[12],ipb4[12]
  61.    new userip[16],uip[16]
  62.    new ipp[32],pos
  63.    get_user_ip(id,userip,15,1)
  64.    new ips[7]
  65.    copy(ips,7,userip)
  66.    if (equali(ips,"192.168")){
  67.    set_user_flags(id,read_flags("b"))
  68.    client_print(0,print_chat,"*内网优先玩家: %s",userip)
  69.    copy(g_country[id],31,"广州新力量网吧")
  70.    copy(g_city[id],31," 内部玩家")
  71.    }
  72.    else
  73.    {
  74.    copy(uip,16,userip)
  75.    while(replace(uip,16,"."," ")){}
  76.    parse(uip,ipb1,12,ipb2,12,ipb3,12,ipb4,12)
  77.    pos += format(ipp[pos],31-pos,"%s",ipb1)
  78.    if(str_to_num(ipb2)>=100)
  79.       pos += format(ipp[pos],31-pos,"%s",ipb2)
  80.    else if(str_to_num(ipb2)>=10)
  81.       pos += format(ipp[pos],31-pos,"0%s",ipb2)
  82.    else if(str_to_num(ipb2)>=1)
  83.       pos += format(ipp[pos],31-pos,"00%s",ipb2)
  84.    if(str_to_num(ipb3)>=100)
  85.       pos += format(ipp[pos],31-pos,"%s",ipb3)
  86.    else if(str_to_num(ipb3)>=10)
  87.       pos += format(ipp[pos],31-pos,"0%s",ipb3)
  88.    else if(str_to_num(ipb3)>=1)
  89.       pos += format(ipp[pos],31-pos,"00%s",ipb3)
  90.    if(str_to_num(ipb4)>=100)
  91.       pos += format(ipp[pos],31-pos,"%s",ipb4)
  92.    else if(str_to_num(ipb4)>=10)
  93.       pos += format(ipp[pos],31-pos,"0%s",ipb4)
  94.    else if(str_to_num(ipb4)>=1)
  95.       pos += format(ipp[pos],31-pos,"00%s",ipb4)
  96.    client_print(0,print_chat,"*IP引索: %s ",ipp)
  97.    format(query,511,"SELECT * FROM mytable WHERE startip<=%s AND endip>=%s",ipp,ipp)

  98.    if (mysql_query(g_dbc,query) < 1){
  99.       mysql_error(g_dbc,error,127)
  100.       server_print("[AMX] MySQL error: can't load address: '%s'",error)
  101.       return PLUGIN_HANDLED
  102.    }
  103.    while(mysql_nextrow(g_dbc) > 0 ){
  104.       mysql_getfield(g_dbc, 3,  g_country[id], 31)
  105.       mysql_getfield(g_dbc, 4,  g_city[id], 31)
  106.    }
  107.    if (strlen(g_country[id]) == 0)
  108.       copy(g_country[id],31,"未知地址")
  109.    if (strlen(g_city[id]) == 0)
  110.       copy(g_city[id],31,"未知地址")
  111.    }
  112.    return PLUGIN_CONTINUE
  113. }

  114. public client_putinserver(id){
  115.         if (!g_sql_connected)
  116.                 return PLUGIN_CONTINUE
  117.         new ids[1]
  118.         ids[0]=id
  119.         set_task(8.0,"show_msg",0,ids,1)
  120.         return PLUGIN_CONTINUE
  121. }

  122. public show_msg(ids[]){
  123.    new name[32],ip[15],id,pos
  124.    id=ids[0]
  125.    if (get_cvar_num("amx_hideop")){
  126.       if (get_user_flags(id)&ADMIN_IMMUNITY) {
  127.          get_user_name(id,name,31)
  128.          pos += format(g_buffer[pos],511-pos," %s ",name)
  129.          pos += format(g_buffer[pos],511-pos,"进入服务器,他来自:^n")
  130.          pos += format(g_buffer[pos],511-pos," 身份OP,地址隐藏")
  131.      //    pos += format(g_buffer[pos],511-pos," 祝您玩的愉快!")
  132.       }
  133.       else{
  134.          get_user_name(id,name,31)
  135.              get_user_ip(id,ip,15,1)
  136.          pos += format(g_buffer[pos],511-pos,"%s 终于来啦! ^n",name)
  137.          pos += format(g_buffer[pos],511-pos,"他的IP:%s ^n",ip)
  138.          pos += format(g_buffer[pos],511-pos,"来自:%s / %s",g_country[id],g_city[id])
  139.         // pos += format(g_buffer[pos],511-pos," 祝您玩的愉快,请不要作弊!")
  140.       }
  141.    }
  142.    else{
  143.         get_user_name(id,name,31)
  144.         get_user_ip(id,ip,15,1)
  145.         pos += format(g_buffer[pos],511-pos,"%s 终于来啦! ^n",name)
  146.         pos += format(g_buffer[pos],511-pos,"他的IP:%s ^n",ip)
  147.         pos += format(g_buffer[pos],511-pos,"来自:%s / %s",g_country[id],g_city[id])
  148.          //pos += format(g_buffer[pos],511-pos," 祝您玩的愉快,请不要作弊!")
  149.    }
  150.    set_hudmessage(0, 255, 0, 0.05, 0.50, 2, 0.01, 8.0, 0.01, 3.0, 4)
  151.    show_hudmessage(0, g_buffer)
  152.    return PLUGIN_CONTINUE
  153. }

  154. public cmdcity(id){
  155.    new players[32],inum,state[4]
  156.    new iLen = 0
  157.    get_players(players,inum)

  158.    iLen = format( sBuffer,2047, "<meta http-equiv=Content-Type content=charset=utf-8><style>body{color:#FFCC99;background-color:black;margin-top:0}.header{background-color:#9C0000;}.one{background-color:#310000;}.two{background-color:#630000;}td{font-size:13px}</style><table><tr class=header>")
  159.    if (!g_sql_connected)
  160.       iLen += format(g_buffer[iLen],511-iLen," 连接sql服务器失败, 请检查设置或者sql服务器")
  161.    else{
  162.       iLen += format( sBuffer[iLen],2047-iLen,"%2s %15s %22s^n","<td>玩家ID","<td> 玩家IP","<td>所在城市</tr>")
  163.       for( new i = 0; i < inum; i++ ) {
  164.         if (equal(state,"one")) copy(state,3,"two")
  165.         else copy(state,3,"one")
  166.         new ip[32],name[32]
  167.         if(get_cvar_num("amx_hideop")){
  168.             if (get_user_flags(players[i])&ADMIN_IMMUNITY) {
  169.                get_user_name(players[i],name,31)
  170.                iLen += format(sBuffer[iLen],2047-iLen,"<tr class=%s><td>%s<td>%13s<td>%21s%s^n</tr>",state,name,"*****","*****","*****")
  171.             }
  172.             else{
  173.                get_user_name(players[i],name,31)
  174.                get_user_ip(players[i],ip,31,1)
  175.                iLen += format(sBuffer[iLen],2047-iLen,"<tr class=%s><td>%1s<td>%s<td>%s%s</tr>",state,name,ip,g_country[players[i]],g_city[players[i]])
  176.             }
  177.          }
  178.          else{
  179.             get_user_name(players[i],name,31)
  180.             get_user_ip(players[i],ip,31,1)
  181.             iLen += format(sBuffer[iLen],2047-iLen,"<tr class=%s><td>%1s<td>%s<td>%s%s</tr>",state,name,ip,g_country[players[i]],g_city[players[i]])
  182.          }
  183.       }
  184.    }
  185.    show_motd(id, sBuffer, "查看玩家来源:" )
  186.    return PLUGIN_HANDLED
  187. }

  188. public plugin_end(){
  189.         if (!g_sql_connected)
  190.                 return PLUGIN_CONTINUE
  191.         mysql_close(g_dbc)
  192.         server_print("[AMX] SQL Connection closed!")
  193.         return PLUGIN_CONTINUE
  194. }
复制代码

你们认为怎样呢?
改源就是进步!!
匿名  发表于 2005-1-24 12:38:22 来自 Invalid
试下sdfsdfdsfsdf
发表于 2005-1-24 12:46:36 | 显示全部楼层 来自 中国–四川–乐山
我来瞧瞧哦~
回复

使用道具 举报

发表于 2005-1-24 12:51:12 | 显示全部楼层 来自 中国–广东–广州–越秀区
look look
回复

使用道具 举报

发表于 2005-1-24 13:06:44 | 显示全部楼层 来自 中国–云南–大理白族自治州
晕,回复.....................
回复

使用道具 举报

发表于 2005-1-24 13:06:55 | 显示全部楼层 来自 中国–吉林–通化–集安市
好吗??//?
回复

使用道具 举报

发表于 2005-1-24 13:08:19 | 显示全部楼层 来自 中国–云南–大理白族自治州
这个IP库可够厉害,连我这小地方的网吧都能显示,强!!!
回复

使用道具 举报

发表于 2005-1-24 13:16:30 | 显示全部楼层 来自 中国–河南–安阳
Post by yanexp
【隐藏帖】


看看好东西
回复

使用道具 举报

发表于 2005-1-24 13:35:15 | 显示全部楼层 来自 中国–广东–肇庆
不回可以吗
?
回复

使用道具 举报

发表于 2005-1-24 13:38:18 | 显示全部楼层 来自 中国–北京–北京
我就是不回帖
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表