廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 12893 個閱讀者
 
<< 上頁  1   2   3   4   5   6  下頁 >>(共 6 頁)
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
slyh
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x1 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

將第536行的set_task(1.0,"force_login",id)刪除就可以了


獻花 x0 回到頂端 [30 樓] From:香港和記電訊 | Posted:2011-02-28 07:56 |
hihihi321321
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

多謝你喔...那在想問一問喔-3-(很像很煩呢)...
同時顯示了

你的暱稱已被使用....
請說/login註冊/登錄... <===如何修改為不顯示呢-_-"


獻花 x0 回到頂端 [31 樓] From:沒有資料 | Posted:2011-03-01 20:59 |
slyh
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x1 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

回上文:
開啟源碼,尋找
複製程式
set_task(1.0,"not_login",id)
修改為
複製程式
set_task(1.0,"not_login",id+987654)

再將
複製程式
public not_login(id)
{
修改為
複製程式
public not_login(taskid)
{
       new id = taskid-987654

再在
複製程式
show_hudmessage(id,"你的暱稱已被使用,請登入或轉換另一個名字,否則你將會於 %i 秒後被踢除",user_rest[id])
下面加入
複製程式
remove_task(id+987654)

另外,我發現了一個問題,如果玩家載入速度過慢,可能會導致玩家於完全進入伺服器前被踢除,
在第15行後開一新行,加上
複製程式
new bool:user_putinserver[33]

尋找
複製程式
public client_putinserver(id)
{
修改為
複製程式
public client_putinserver(id)
{
       user_putinserver[id] = true
       if(!user_connect[id])
       {
              set_task(1.0, "force_login", id, _, _, "a", 20)
              set_task(20.0,"check_user",id)
       }

尋找
複製程式
public client_connect(id)
{
修改為
複製程式
public client_connect(id)
{
       user_putinserver[id] = false


複製程式
set_task(1.0, "force_login", id, _, _, "a", 20)
set_task(20.0,"check_user",id)
修改為
複製程式
if(user_putinserver[id])
{
       set_task(1.0, "force_login", id, _, _, "a", 20)
       set_task(20.0,"check_user",id)
}


[ 此文章被slyh在2011-03-02 14:58重新編輯 ]


獻花 x0 回到頂端 [32 樓] From:香港和記電訊 | Posted:2011-03-01 21:33 |
hihihi321321
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

感謝你的幫忙喔-3-
這個插件總是運行得人性化了-3-"
謝謝你不斷幫助我的提問呢=3="
小弟感激你了...


獻花 x0 回到頂端 [33 樓] From:沒有資料 | Posted:2011-03-01 22:25 |
slyh
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x1 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

抱歉,昨天寫的時候大意寫漏了一些東西,上文已經更新,請進行修改,否則載入慢的玩家還是被踢 表情


獻花 x0 回到頂端 [34 樓] From:香港和記電訊 | Posted:2011-03-02 15:03 |
Dragon-LinG
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x4 鮮花 x7
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

親愛的SLYH :
    請問一下能否把已正好的版本...重發一下= ="
因為跟據你們的討論...我修改後...在SMA轉AMXX時發現有錯誤...
而且插件在HLDS中也出現不少錯誤...

請大大重發一個修正完整的版本嗎-_-" 謝謝你~


獻花 x0 回到頂端 [35 樓] From:沒有資料 | Posted:2011-03-07 01:39 |
slyh
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x1 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

直接根據前文修改,能通過編譯,不過不保證沒有改錯的地方表情

有錯便回貼吧表情

直接貼出來比較方便表情

這是普通版本:
複製程式
#include <amxmodx>
#include <fakemeta>
#include <sqlx>
#include <cstrike>
#include <amxmisc>
#include <fun>

#define VERSION "1.0"
// 密碼最短長度
#define PASSWORD_MIN_LEN 6
#define MAX_LOGIN_ATTEMPTS 3
#define BAN_TIME 3
// user_activity 1 - 註冊中 2 - 登入中 3 - 輸入舊密碼 4 - 輸入新密碼
new user_status[33],user_activity[33],user_len[33],user_password[33][33],user_wrong[33],mysqlx_host,mysqlx_user,mysqlx_db,mysqlx_pass,gmsgScreenFade,user_rest[33]
new bool:user_putinserver[33]
new Handle:g_hTuple
new bool:user_connect[33]
new const szTables[][] = 
{
       "CREATE TABLE IF NOT EXISTS `register_system` ( `user_id` varchar(64) NOT NULL,`user_password` varchar(128) default NULL,`user_ip` varchar(32) default NULL,PRIMARY KEY (`user_id`) ) TYPE=MyISAM;"
}

public plugin_init()
{
       gmsgScreenFade = get_user_msgid("ScreenFade")
       register_plugin("註冊/登入系統", VERSION, "slyh")
       register_clcmd("say", "user_say", ADMIN_ALL)
       register_clcmd("say /login", "user_login", ADMIN_ALL)
       register_event("ScreenFade","Event_ScreenFade","b")
       register_forward(FM_ClientUserInfoChanged, "Fwd_ClientInfoChanged")
       mysqlx_host = register_cvar ("regsys_host", "localhost")
       mysqlx_user = register_cvar ("regsys_user", "")
       mysqlx_pass = register_cvar ("regsys_pass", "")
       mysqlx_db = register_cvar ("regsys_dbname", "register_system")
       MySQLx_Init()
}

public user_say(id,level,cid)
{
       if( ( !cmd_access(id, level, cid, 2) ) || user_activity[id] == 0)
              return PLUGIN_CONTINUE

       new name[32],message[128]
       get_user_name(id,name,31)
       switch(user_activity[id])
       {
              case 1:
              {
                     new arg_pass[32]
                     read_argv(1, arg_pass, 31)
                     new len = strlen(arg_pass);
                     if(len < PASSWORD_MIN_LEN || len > 20)
                     {
                            format(message,127,"^x04[hk-fun.com提醒你] ^x01密碼長度最少需有 %d 位, 最多不可超過 20 位, 請輸入一個新的密碼.",PASSWORD_MIN_LEN)
                            client_color(id,id,message)
                            client_cmd(id,"messagemode")
                            return PLUGIN_HANDLED
                     }
                     format(message,127,"^x04[hk-fun.com提醒你] ^x01你已成功註冊, 請謹記你的密碼: %s .",arg_pass)
                     access_user(id)
                     client_color(id,id,message)
                     user_password[id] = arg_pass
                     user_status[id] = 3
                     user_activity[id] = 0
                     set_task(2.5,"Reset_Screen",id)
                     set_task(3.0,"chooseteam",id)
                     set_task(1.1,"hud_finish",id)
                     client_cmd(id,"setinfo ^"_reg^" ^"%s^"",arg_pass)
                     new name[32],ip[32]
                     get_user_name(id,name,31)
                     get_user_ip(id,ip,31,1)
                     static szQuery[128];
                     formatex( szQuery, 127, "REPLACE INTO `register_system` (`user_id`, `user_password`, `user_ip`) VALUES ('%s', '%s', '%s');",name,arg_pass,ip)
                     SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
                     return PLUGIN_HANDLED
              }
              case 2:
              {
                     new arg_pass[32]
                     read_argv(1, arg_pass, 31)
                     user_password[id] = arg_pass
                     LoadData(id)
                     return PLUGIN_HANDLED
              }
              case 3:
              {
                     new arg_pass[32]
                     read_argv(1, arg_pass, 31)
                     user_password[id] = arg_pass
                     LoadData(id)
                     return PLUGIN_HANDLED
              }
              case 4:
              {
                     new arg_pass[32]
                     read_argv(1, arg_pass, 31)
                     new len = strlen(arg_pass);
                     if(len < PASSWORD_MIN_LEN || len > 20)
                     {
                            format(message,127,"^x04[hk-fun.com提醒你] ^x01密碼長度最少需有 %d 位, 最多不可超過 20 位, 請輸入一個新的密碼.",PASSWORD_MIN_LEN)
                            client_color(id,id,message)
                            client_cmd(id,"messagemode")
                            return PLUGIN_HANDLED
                     }
                     format(message,127,"^x04[hk-fun.com提醒你] ^x01你已成功更換密碼, 請謹記你的密碼: %s .",arg_pass)
                     client_color(id,id,message)
                     user_password[id] = arg_pass
                     user_status[id] = 3
                     user_activity[id] = 0
                     set_task(2.5,"Reset_Screen",id)
                     set_task(3.0,"chooseteam",id)
                     set_task(1.1,"hud_finish",id)
                     new name[32],ip[32]
                     get_user_name(id,name,31)
                     get_user_ip(id,ip,31,1)
                     static szQuery[128];
                     formatex( szQuery, 127, "REPLACE INTO `register_system` (`user_id`, `user_password`, `user_ip`) VALUES ('%s', '%s', '%s');",name,arg_pass,ip)
                     SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
                     return PLUGIN_HANDLED
              }
       }
       return PLUGIN_CONTINUE
}

public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
       if( iFailState == TQUERY_CONNECT_FAILED 
       || iFailState == TQUERY_QUERY_FAILED ) 
       { 
              log_amx( "%s", szError );
              
              return;
       } 
       else 
       { 
              new id = iData[ 0 ];
              
              new password = SQL_FieldNameToNum(hQuery, "user_password") 
              new pw[44]
              while (SQL_MoreResults(hQuery)) 
              {
                     new name[32],message[128]
                     get_user_name(id,name,31)
                     SQL_ReadResult(hQuery, password, pw, sizeof(pw)-1)
                     if(user_connect[id])
                     {
                            new password[32]
                            user_len[id] = strlen(pw)
                            user_connect[id] = false
                            get_user_info(id, "_reg", password, 31)
                            if(equali(pw, password))
                            {
                                   user_status[id] = 3
                                   access_user(id)
                            }
                            else
                            {
                                   if(user_putinserver[id])
                                   {
                                          set_task(1.0, "force_login", id, _, _, "a", 20)
                                          set_task(20.0,"check_user",id)
                                   }
                                   user_rest[id] = 20
                            }
                     }
                     else
                     {
                            if(!equali(pw, user_password[id]))
                            {
                                   format(message,127,"^x04[hk-fun.com提醒你] ^x01密碼錯誤, 你只有 %d 次機會.",MAX_LOGIN_ATTEMPTS)
                                   client_color(id,id,message)
                                   user_wrong[id] += 1
                                   client_cmd(id,"messagemode")
                                   if(user_wrong[id] >= MAX_LOGIN_ATTEMPTS)
                                   {
                                          format(message,127,"^x04[hk-fun.com提醒你] ^x01由於 ^x03%s^x01 輸入了 %d 次錯誤的密碼, 所以已被封禁 %d 分鐘.",name,MAX_LOGIN_ATTEMPTS,BAN_TIME)
                                          client_color(0,id,message)
                                          server_cmd("banid ^"%d^" ^"#%i^"",BAN_TIME,get_user_userid(id))
                                          server_cmd("kick #%i ^"由於你輸入了 %d 次錯誤的密碼, 所以已被封禁 %d 分鐘!^"",get_user_userid(id),MAX_LOGIN_ATTEMPTS,BAN_TIME);
                                   }
                            }
                            else
                            {
                                   if(user_activity[id] == 3)
                                   {
                                          format(message,127,"^x04[hk-fun.com提醒你] ^x01已認證身份, 請輸入新密碼.")
                                          client_color(id,id,message)
                                          user_activity[id] = 4
                                          client_cmd(id,"messagemode")
                                   }
                                   else
                                   {
                                          format(message,127,"^x04[hk-fun.com提醒你] ^x01你已成功登入.")
                                          client_color(id,id,message)
                                          user_status[id] = 3
                                          user_activity[id] = 0
                                          set_task(2.5,"Reset_Screen",id)
                                          set_task(3.0,"chooseteam",id)
                                          set_task(1.1,"hud_finish",id)
                                          access_user(id)
                                   }
                            }
                     }
                     SQL_NextRow(hQuery)
              }
       } 
}

public user_login(id)
{
       if(user_status[id] == 3)
       {
              new menu = menu_create("\y歡迎使用登記系統, 你現已登入:", "login_menu_handler")
              menu_additem(menu, "\d註冊", "1", 0)
              menu_additem(menu, "\d登錄", "2", 0)
              menu_additem(menu, "\w更改密碼", "3", 0)
              //menu_additem(menu, "\d設定(暫未開放)", "4", 0)
              menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
              menu_display(id, menu, 0)
              return PLUGIN_HANDLED
       }
       if(user_len[id] >= PASSWORD_MIN_LEN)
       {
              new menu = menu_create("\y歡迎使用登記系統, 請完成登入程序:", "login_menu_handler")
              menu_additem(menu, "\d註冊", "1", 0)
              menu_additem(menu, "\w登錄", "2", 0)
              menu_additem(menu, "\d更改密碼", "3", 0)
              menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
              menu_display(id, menu, 0)
              return PLUGIN_HANDLED
       }
       else
       {
              new menu = menu_create("\y歡迎使用登記系統, 請完成註冊程序:", "login_menu_handler")
              menu_additem(menu, "\w註冊", "1", 0)
              menu_additem(menu, "\d登錄", "2", 0)
              menu_additem(menu, "\d更改密碼", "3", 0)
              menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
              menu_display(id, menu, 0)
              return PLUGIN_HANDLED
       }
       return PLUGIN_HANDLED
}

public login_menu_handler(id, menu, item)
{
       if( item == MENU_EXIT )
       {
              menu_destroy(menu)
              return PLUGIN_HANDLED
       }

       new data[6], iName[64]
       new access, callback
       
       menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
       new key = str_to_num(data)
       switch(key)
       {
              case 1:
              {
                     if(user_status[id] != 3 && user_len[id] < PASSWORD_MIN_LEN)
                     {
                            user_activity[id] = 1
                            if(is_user_alive(id))
                            {
                                   user_kill(id)
                                   cs_set_user_deaths(id, cs_get_user_deaths(id) - 1)
                                   set_user_frags(id, get_user_frags(id) + 1 )
                            }
                            cs_set_user_team(id,CS_TEAM_SPECTATOR)
                            Fade_To_Black(id)
                            client_cmd(id,"messagemode")
                            hud(id)
                     }
              }
              case 2:
              {
                     if(user_status[id] != 3 && user_len[id] >= PASSWORD_MIN_LEN)
                     {
                            user_activity[id] = 2
                            if(is_user_alive(id))
                            {
                                   user_kill(id)
                                   cs_set_user_deaths(id, cs_get_user_deaths(id) - 1)
                                   set_user_frags(id, get_user_frags(id) + 1 )
                            }
                            cs_set_user_team(id,CS_TEAM_SPECTATOR)
                            Fade_To_Black(id)
                            client_cmd(id,"messagemode")
                            hud(id)
                     }
              }
              case 3:
              {
                     if(user_status[id] == 3)
                     {
                            user_activity[id] = 3
                            if(is_user_alive(id))
                            {
                                   user_kill(id)
                                   cs_set_user_deaths(id, cs_get_user_deaths(id) - 1)
                                   set_user_frags(id, get_user_frags(id) + 1 )
                            }
                            cs_set_user_team(id,CS_TEAM_SPECTATOR)
                            Fade_To_Black(id)
                            client_cmd(id,"messagemode")
                            hud(id)
                     }
              }
              case 4:
              {
                     //setting_menu(id)
              }
       }
       menu_destroy(menu)
       return PLUGIN_HANDLED
}

public setting_menu(id)
{
       new menu = menu_create("\y系統設定:", "setting_menu_handler")
       menu_additem(menu, "\w返回主目錄", "2", 0)
       menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
       menu_display(id, menu, 0)
}
public setting_menu_handler(id, menu, item)
{
       if( item == MENU_EXIT )
       {
              menu_destroy(menu)
              return PLUGIN_HANDLED
       }

       new data[6], iName[64]
       new access, callback
       
       menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
       new key = str_to_num(data)
       switch(key)
       {
              case 2:
              {
                     user_login(id)
              }
       }
       menu_destroy(menu)
       return PLUGIN_HANDLED
}

public hud(id)
{
       switch(user_activity[id])
       {
              case 1:
              {
                     set_hudmessage(0, 0, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.0, 0.0, -1)
                     show_hudmessage(id, "你只要輸入密碼, 再按Enter, 即完成整個註冊過程!^n注意事項:^n1.密碼長度不得短於 %d 位^n2.密碼長度不得長於 20 位",PASSWORD_MIN_LEN)
                     set_task(1.0,"hud",id)
              }
              case 2:
              {
                     set_hudmessage(0, 0, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.0, 0.0, -1)
                     show_hudmessage(id, "你只要輸入密碼, 再按Enter, 即完成整個登入過程!^n注意事項:^n你只有 %d 次錯誤輸入密碼的機會,^n機會用盡後, 你將會被封禁 %d 分鐘!",MAX_LOGIN_ATTEMPTS,BAN_TIME)
                     set_task(1.0,"hud",id)
              }
              case 3:
              {
                     set_hudmessage(0, 0, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.0, 0.0, -1)
                     show_hudmessage(id, "請你輸入舊密碼以確認身份!")
                     set_task(1.0,"hud",id)
              }
              case 4:
              {
                     set_hudmessage(0, 0, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.0, 0.0, -1)
                     show_hudmessage(id, "你只要新輸入密碼, 再按Enter, 即完成整個密碼更換過程!^n注意事項:^n1.新密碼長度不得短於 %d 位^n2.新密碼長度不得長於 20 位",PASSWORD_MIN_LEN)
                     set_task(1.0,"hud",id)
              }
       }
}

public Event_ScreenFade(id)
{
       if(user_activity[id] > 0)
       {
              Fade_To_Black(id)
       }
}

public Fade_To_Black(id)
{
       message_begin ( MSG_ONE_UNRELIABLE , gmsgScreenFade , _ , id ) ;
       write_short ( ( 1<<3 ) | ( 1<<8 ) | ( 1<<10 ) ) ;
       write_short ( ( 1<<3 ) | ( 1<<8 ) | ( 1<<10 ) ) ;
       write_short ( ( 1<<0 ) | ( 1<<2 ) ) ;
       write_byte ( 0 ) ;
       write_byte ( 0 ) ;
       write_byte ( 0 ) ;
       write_byte ( 255 ) ;
       message_end ( ) ;
}

public Reset_Screen(id)
{
       message_begin ( MSG_ONE_UNRELIABLE , gmsgScreenFade , _ , id ) ;
       write_short ( 1<<2 ) ;
       write_short ( 0 ) ;
       write_short ( 0 ) ;
       write_byte ( 0 ) ;
       write_byte ( 0 ) ;
       write_byte ( 0 ) ;
       write_byte ( 0 ) ;
       message_end ( ) ;
}

public MySQLx_Init()
{
       new szHost[64], szUser[32], szPass[32], szDB[128];

       get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) );
       get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) );
       get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) );
       get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) );

       g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB );

       for ( new i = 0; i < sizeof szTables; i++ )
       {
              SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables[i])
       }
}

public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
       if( iFailState == TQUERY_CONNECT_FAILED 
       || iFailState == TQUERY_QUERY_FAILED ) 
       { 
              log_amx( "%s", szError ); 
              
              return;
       } 
}

public LoadData(id)
{
       new name[32]
       get_user_name(id,name,31)

       static szQuery[ 128 ], iData[ 1 ]; 
       formatex( szQuery, 127, "SELECT `user_password` FROM `register_system` WHERE ( `user_id` = '%s' );",name); 

       iData[ 0 ] = id;
       SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
}

public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
       if( iFailState == TQUERY_CONNECT_FAILED 
       || iFailState == TQUERY_QUERY_FAILED ) 
       { 
              log_amx( "%s", szError ); 
              
              return;
       } 
}

public plugin_natives()
{
       register_native("get_user_status", "native_get_user_status", 1)
       register_native("get_user_pwlen", "native_get_user_pwlen", 1)
}

public hud_finish(id)
{
       set_hudmessage(0, 0, 0, -1.0, -1.0, 0, 0.0, 2.0, 0.0, 0.0, -1)
       show_hudmessage(id, "你已完成登入/註冊/更換密碼過程!")
}

public client_connect(id)
{
       user_putinserver[id] = false
       user_activity[id] = 0
       user_wrong[id] = 0
       user_status[id] = 0
       user_len[id] = 0
       user_connect[id] = true
       remove_task(id)
       LoadData(id)
}

public client_putinserver(id)
{
       user_putinserver[id] = true
       if(!user_connect[id])
       {
              set_task(1.0, "force_login", id, _, _, "a", 20)
              set_task(20.0,"check_user",id)
       }
       if( ( get_user_flags(id) & ADMIN_KICK ) && ( user_status[id] !=3 ) )
       {
              remove_user_flags(id)
       }
       set_task(1.0,"not_login",id+987654)
}
public messengmode(id)
{
       client_cmd(id,"messagemode")
}

public client_disconnect(id)
{
       user_activity[id] = 0
       user_wrong[id] = 0
       user_status[id] = 0
       user_len[id] = 0
       remove_task(id)
       user_connect[id] = false
}

public Fwd_ClientInfoChanged(id, buffer)
{
       if (!is_user_connected(id))
              return FMRES_IGNORED;
       
       static name[32], val[32];
       get_user_name(id, name, sizeof name - 1)
       
       engfunc(EngFunc_InfoKeyValue, buffer, "name", val, sizeof val - 1);
       
       if(equal(val, name))
              return FMRES_IGNORED;
       
       engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name);
       
       client_cmd(id, "name ^"%s^"; setinfo name ^"%s^"", name, name);
       
       client_print(id, print_console, "遊戲中不允許更換名字.");
       
       return FMRES_SUPERCEDE;
}

public native_get_user_status(id)
{
       return user_status[id]
}

public native_get_user_pwlen(id)
{
       return user_len[id]
}

public chooseteam(id)
{
       client_cmd(id,"chooseteam")
}

public client_color(playerid, colorid, msg[]){
message_begin(playerid?MSG_ONE:MSG_ALL,get_user_msgid("SayText"),{0,0,0},playerid) 
write_byte(colorid)
write_string(msg)
message_end()
}

public not_login(taskid)
{
       new id = taskid-987654
       if(user_status[id] != 3)
       {
              set_hudmessage(255, 0, 0, -1.0, 0.7, 0, 0.0, 0.1, 0.0, 0.0)
              show_hudmessage(id,"請說/login註冊/登錄, 否則你將受以下限制^n失去管理員權力")
              set_task(0.1,"not_login",id)
       }
}

access_user(id)
{
       remove_user_flags(id)
       
       new userip[32], userauthid[32], password[32], username[32]
       
       get_user_ip(id, userip, 31, 1)
       get_user_authid(id, userauthid, 31)
       get_user_name(id, username, 31)
       
       get_user_info(id, "_pw", password, 31)
       
       getAccess(id, username, userauthid, userip, password)

       return PLUGIN_CONTINUE
}

getAccess(id, name[], authid[], ip[], password[])
{
       new index = -1
       new result = 0
       
       static Count;
       static Flags;
       static Access;
       static AuthData[44];
       static Password[32];

       Count=admins_num();
       for (new i = 0; i < Count; ++i)
       {
              Flags=admins_lookup(i,AdminProp_Flags);
              admins_lookup(i,AdminProp_Auth,AuthData,sizeof(AuthData)-1);
              
              if (Flags & FLAG_AUTHID)
              {
                     if (equal(authid, AuthData))
                     {
                            index = i
                            break
                     }
              }
              else if (Flags & FLAG_IP)
              {
                     new c = strlen(AuthData)
                     
                     if (AuthData[c - 1] == '.')              /* check if this is not a xxx.xxx. format */
                     {
                            if (equal(AuthData, ip, c))
                            {
                                   index = i
                                   break
                            }
                     }                                                               /* in other case an IP must just match */
                     else if (equal(ip, AuthData))
                     {
                            index = i
                            break
                     }
              } 
              else 
              {
                     if (Flags & FLAG_CASE_SENSITIVE)
                     {
                            if (Flags & FLAG_TAG)
                            {
                                   if (contain(name, AuthData) != -1)
                                   {
                                          index = i
                                          break
                                   }
                            }
                            else if (equal(name, AuthData))
                            {
                                   index = i
                                   break
                            }
                     }
                     else
                     {
                            if (Flags & FLAG_TAG)
                            {
                                   if (containi(name, AuthData) != -1)
                                   {
                                          index = i
                                          break
                                   }
                            }
                            else if (equali(name, AuthData))
                            {
                                   index = i
                                   break
                            }
                     }
              }
       }

       if (index != -1)
       {
              Access=admins_lookup(index,AdminProp_Access);

              if (Flags & FLAG_NOPASS)
              {
                     result |= 8
                     new sflags[32]
                     
                     get_flags(Access, sflags, 31)
                     set_user_flags(id, Access)
                     
                     log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, AuthData, sflags, ip)
              }
              else 
              {
              
                     admins_lookup(index,AdminProp_Password,Password,sizeof(Password)-1);

                     if (equal(password, Password))
                     {
                            result |= 12
                            set_user_flags(id, Access)
                            
                            new sflags[32]
                            get_flags(Access, sflags, 31)
                            
                            log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, AuthData, sflags, ip)
                     } 
                     else 
                     {
                            result |= 1
                            
                            if (Flags & FLAG_KICK)
                            {
                                   result |= 2
                                   log_amx("Login: ^"%s<%d><%s><>^" kicked due to invalid password (account ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, AuthData, ip)
                            }
                     }
              }
       }
}

public force_login(id)
{
       if(user_status[id] != 3)
       {
                     user_rest[id] -= 1
                     set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 0.0, 1.0, 0.0, 0.0)
                     show_hudmessage(id,"你的暱稱已被使用,請登入或轉換另一個名字,否則你將會於 %i 秒後被踢除",user_rest[id]) //這行可以更改
                     remove_task(id+987654)
       }
}

public check_user(id)
{
     if(user_status[id] != 3)
     {
           server_cmd("kick #%i ^"你因尚未登入而被踢除^"",get_user_userid(id)) // 這行也是可以更改
     }
}

這是第二方案:
複製程式
#include <amxmodx>
#include <fakemeta>
#include <sqlx>
#include <cstrike>
#include <amxmisc>
#include <fun>
#include <admin>

#define VERSION "1.0"
// 密碼最短長度
#define PASSWORD_MIN_LEN 6
#define MAX_LOGIN_ATTEMPTS 3
#define BAN_TIME 3
// user_activity 1 - 註冊中 2 - 登入中 3 - 輸入舊密碼 4 - 輸入新密碼
new user_status[33],user_activity[33],user_len[33],user_password[33][33],user_wrong[33],mysqlx_host,mysqlx_user,mysqlx_db,mysqlx_pass,gmsgScreenFade,user_rest[33]
new bool:user_putinserver[33]
new Handle:g_hTuple
new bool:user_connect[33]
new const szTables[][] = 
{
       "CREATE TABLE IF NOT EXISTS `register_system` ( `user_id` varchar(64) NOT NULL,`user_password` varchar(128) default NULL,`user_ip` varchar(32) default NULL,PRIMARY KEY (`user_id`) ) TYPE=MyISAM;"
}

public plugin_init()
{
       gmsgScreenFade = get_user_msgid("ScreenFade")
       register_plugin("註冊/登入系統", VERSION, "slyh")
       register_clcmd("say", "user_say", ADMIN_ALL)
       register_clcmd("say /login", "user_login", ADMIN_ALL)
       register_event("ScreenFade","Event_ScreenFade","b")
       register_forward(FM_ClientUserInfoChanged, "Fwd_ClientInfoChanged")
       mysqlx_host = register_cvar ("regsys_host", "localhost")
       mysqlx_user = register_cvar ("regsys_user", "")
       mysqlx_pass = register_cvar ("regsys_pass", "")
       mysqlx_db = register_cvar ("regsys_dbname", "register_system")
       MySQLx_Init()
}

public user_say(id,level,cid)
{
       if( ( !cmd_access(id, level, cid, 2) ) || user_activity[id] == 0)
              return PLUGIN_CONTINUE

       new name[32],message[128]
       get_user_name(id,name,31)
       switch(user_activity[id])
       {
              case 1:
              {
                     new arg_pass[32]
                     read_argv(1, arg_pass, 31)
                     new len = strlen(arg_pass);
                     if(len < PASSWORD_MIN_LEN || len > 20)
                     {
                            format(message,127,"^x04[hk-fun.com提醒你] ^x01密碼長度最少需有 %d 位, 最多不可超過 20 位, 請輸入一個新的密碼.",PASSWORD_MIN_LEN)
                            client_color(id,id,message)
                            client_cmd(id,"messagemode")
                            return PLUGIN_HANDLED
                     }
                     format(message,127,"^x04[hk-fun.com提醒你] ^x01你已成功註冊, 請謹記你的密碼: %s .",arg_pass)
                     access_user(id)
                     client_color(id,id,message)
                     user_password[id] = arg_pass
                     user_status[id] = 3
                     user_activity[id] = 0
                     set_task(2.5,"Reset_Screen",id)
                     set_task(3.0,"chooseteam",id)
                     set_task(1.1,"hud_finish",id)
                     client_cmd(id,"setinfo ^"_reg^" ^"%s^"",arg_pass)
                     new name[32],ip[32]
                     get_user_name(id,name,31)
                     get_user_ip(id,ip,31,1)
                     static szQuery[128];
                     formatex( szQuery, 127, "REPLACE INTO `register_system` (`user_id`, `user_password`, `user_ip`) VALUES ('%s', '%s', '%s');",name,arg_pass,ip)
                     SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
                     return PLUGIN_HANDLED
              }
              case 2:
              {
                     new arg_pass[32]
                     read_argv(1, arg_pass, 31)
                     user_password[id] = arg_pass
                     LoadData(id)
                     return PLUGIN_HANDLED
              }
              case 3:
              {
                     new arg_pass[32]
                     read_argv(1, arg_pass, 31)
                     user_password[id] = arg_pass
                     LoadData(id)
                     return PLUGIN_HANDLED
              }
              case 4:
              {
                     new arg_pass[32]
                     read_argv(1, arg_pass, 31)
                     new len = strlen(arg_pass);
                     if(len < PASSWORD_MIN_LEN || len > 20)
                     {
                            format(message,127,"^x04[hk-fun.com提醒你] ^x01密碼長度最少需有 %d 位, 最多不可超過 20 位, 請輸入一個新的密碼.",PASSWORD_MIN_LEN)
                            client_color(id,id,message)
                            client_cmd(id,"messagemode")
                            return PLUGIN_HANDLED
                     }
                     format(message,127,"^x04[hk-fun.com提醒你] ^x01你已成功更換密碼, 請謹記你的密碼: %s .",arg_pass)
                     client_color(id,id,message)
                     user_password[id] = arg_pass
                     user_status[id] = 3
                     user_activity[id] = 0
                     set_task(2.5,"Reset_Screen",id)
                     set_task(3.0,"chooseteam",id)
                     set_task(1.1,"hud_finish",id)
                     new name[32],ip[32]
                     get_user_name(id,name,31)
                     get_user_ip(id,ip,31,1)
                     static szQuery[128];
                     formatex( szQuery, 127, "REPLACE INTO `register_system` (`user_id`, `user_password`, `user_ip`) VALUES ('%s', '%s', '%s');",name,arg_pass,ip)
                     SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
                     return PLUGIN_HANDLED
              }
       }
       return PLUGIN_CONTINUE
}

public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
       if( iFailState == TQUERY_CONNECT_FAILED 
       || iFailState == TQUERY_QUERY_FAILED ) 
       { 
              log_amx( "%s", szError );
              
              return;
       } 
       else 
       { 
              new id = iData[ 0 ];
              
              new password = SQL_FieldNameToNum(hQuery, "user_password") 
              new pw[44]
              while (SQL_MoreResults(hQuery)) 
              {
                     new name[32],message[128]
                     get_user_name(id,name,31)
                     SQL_ReadResult(hQuery, password, pw, sizeof(pw)-1)
                     if(user_connect[id])
                     {
                            new password[32]
                            user_len[id] = strlen(pw)
                            user_connect[id] = false
                            get_user_info(id, "_reg", password, 31)
                            if(equali(pw, password))
                            {
                                   user_status[id] = 3
                                   access_user(id)
                            }
                            else
                            {
                                   if(user_putinserver[id])
                                   {
                                          set_task(1.0, "force_login", id, _, _, "a", 20)
                                          set_task(20.0,"check_user",id)
                                   }
                                   user_rest[id] = 20
                            }
                     }
                     else
                     {
                            if(!equali(pw, user_password[id]))
                            {
                                   format(message,127,"^x04[hk-fun.com提醒你] ^x01密碼錯誤, 你只有 %d 次機會.",MAX_LOGIN_ATTEMPTS)
                                   client_color(id,id,message)
                                   user_wrong[id] += 1
                                   client_cmd(id,"messagemode")
                                   if(user_wrong[id] >= MAX_LOGIN_ATTEMPTS)
                                   {
                                          format(message,127,"^x04[hk-fun.com提醒你] ^x01由於 ^x03%s^x01 輸入了 %d 次錯誤的密碼, 所以已被封禁 %d 分鐘.",name,MAX_LOGIN_ATTEMPTS,BAN_TIME)
                                          client_color(0,id,message)
                                          server_cmd("banid ^"%d^" ^"#%i^"",BAN_TIME,get_user_userid(id))
                                          server_cmd("kick #%i ^"由於你輸入了 %d 次錯誤的密碼, 所以已被封禁 %d 分鐘!^"",get_user_userid(id),MAX_LOGIN_ATTEMPTS,BAN_TIME);
                                   }
                            }
                            else
                            {
                                   if(user_activity[id] == 3)
                                   {
                                          format(message,127,"^x04[hk-fun.com提醒你] ^x01已認證身份, 請輸入新密碼.")
                                          client_color(id,id,message)
                                          user_activity[id] = 4
                                          client_cmd(id,"messagemode")
                                   }
                                   else
                                   {
                                          format(message,127,"^x04[hk-fun.com提醒你] ^x01你已成功登入.")
                                          client_color(id,id,message)
                                          user_status[id] = 3
                                          user_activity[id] = 0
                                          set_task(2.5,"Reset_Screen",id)
                                          set_task(3.0,"chooseteam",id)
                                          set_task(1.1,"hud_finish",id)
                                          access_user(id)
                                   }
                            }
                     }
                     SQL_NextRow(hQuery)
              }
       } 
}

public user_login(id)
{
       if(user_status[id] == 3)
       {
              new menu = menu_create("\y歡迎使用登記系統, 你現已登入:", "login_menu_handler")
              menu_additem(menu, "\d註冊", "1", 0)
              menu_additem(menu, "\d登錄", "2", 0)
              menu_additem(menu, "\w更改密碼", "3", 0)
              //menu_additem(menu, "\d設定(暫未開放)", "4", 0)
              menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
              menu_display(id, menu, 0)
              return PLUGIN_HANDLED
       }
       if(user_len[id] >= PASSWORD_MIN_LEN)
       {
              new menu = menu_create("\y歡迎使用登記系統, 請完成登入程序:", "login_menu_handler")
              menu_additem(menu, "\d註冊", "1", 0)
              menu_additem(menu, "\w登錄", "2", 0)
              menu_additem(menu, "\d更改密碼", "3", 0)
              menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
              menu_display(id, menu, 0)
              return PLUGIN_HANDLED
       }
       else
       {
              new menu = menu_create("\y歡迎使用登記系統, 請完成註冊程序:", "login_menu_handler")
              menu_additem(menu, "\w註冊", "1", 0)
              menu_additem(menu, "\d登錄", "2", 0)
              menu_additem(menu, "\d更改密碼", "3", 0)
              menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
              menu_display(id, menu, 0)
              return PLUGIN_HANDLED
       }
       return PLUGIN_HANDLED
}

public login_menu_handler(id, menu, item)
{
       if( item == MENU_EXIT )
       {
              menu_destroy(menu)
              return PLUGIN_HANDLED
       }

       new data[6], iName[64]
       new access, callback
       
       menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
       new key = str_to_num(data)
       switch(key)
       {
              case 1:
              {
                     if(user_status[id] != 3 && user_len[id] < PASSWORD_MIN_LEN)
                     {
                            user_activity[id] = 1
                            if(is_user_alive(id))
                            {
                                   user_kill(id)
                                   cs_set_user_deaths(id, cs_get_user_deaths(id) - 1)
                                   set_user_frags(id, get_user_frags(id) + 1 )
                            }
                            cs_set_user_team(id,CS_TEAM_SPECTATOR)
                            Fade_To_Black(id)
                            client_cmd(id,"messagemode")
                            hud(id)
                     }
              }
              case 2:
              {
                     if(user_status[id] != 3 && user_len[id] >= PASSWORD_MIN_LEN)
                     {
                            user_activity[id] = 2
                            if(is_user_alive(id))
                            {
                                   user_kill(id)
                                   cs_set_user_deaths(id, cs_get_user_deaths(id) - 1)
                                   set_user_frags(id, get_user_frags(id) + 1 )
                            }
                            cs_set_user_team(id,CS_TEAM_SPECTATOR)
                            Fade_To_Black(id)
                            client_cmd(id,"messagemode")
                            hud(id)
                     }
              }
              case 3:
              {
                     if(user_status[id] == 3)
                     {
                            user_activity[id] = 3
                            if(is_user_alive(id))
                            {
                                   user_kill(id)
                                   cs_set_user_deaths(id, cs_get_user_deaths(id) - 1)
                                   set_user_frags(id, get_user_frags(id) + 1 )
                            }
                            cs_set_user_team(id,CS_TEAM_SPECTATOR)
                            Fade_To_Black(id)
                            client_cmd(id,"messagemode")
                            hud(id)
                     }
              }
              case 4:
              {
                     //setting_menu(id)
              }
       }
       menu_destroy(menu)
       return PLUGIN_HANDLED
}

public setting_menu(id)
{
       new menu = menu_create("\y系統設定:", "setting_menu_handler")
       menu_additem(menu, "\w返回主目錄", "2", 0)
       menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
       menu_display(id, menu, 0)
}
public setting_menu_handler(id, menu, item)
{
       if( item == MENU_EXIT )
       {
              menu_destroy(menu)
              return PLUGIN_HANDLED
       }

       new data[6], iName[64]
       new access, callback
       
       menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
       new key = str_to_num(data)
       switch(key)
       {
              case 2:
              {
                     user_login(id)
              }
       }
       menu_destroy(menu)
       return PLUGIN_HANDLED
}

public hud(id)
{
       switch(user_activity[id])
       {
              case 1:
              {
                     set_hudmessage(0, 0, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.0, 0.0, -1)
                     show_hudmessage(id, "你只要輸入密碼, 再按Enter, 即完成整個註冊過程!^n注意事項:^n1.密碼長度不得短於 %d 位^n2.密碼長度不得長於 20 位",PASSWORD_MIN_LEN)
                     set_task(1.0,"hud",id)
              }
              case 2:
              {
                     set_hudmessage(0, 0, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.0, 0.0, -1)
                     show_hudmessage(id, "你只要輸入密碼, 再按Enter, 即完成整個登入過程!^n注意事項:^n你只有 %d 次錯誤輸入密碼的機會,^n機會用盡後, 你將會被封禁 %d 分鐘!",MAX_LOGIN_ATTEMPTS,BAN_TIME)
                     set_task(1.0,"hud",id)
              }
              case 3:
              {
                     set_hudmessage(0, 0, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.0, 0.0, -1)
                     show_hudmessage(id, "請你輸入舊密碼以確認身份!")
                     set_task(1.0,"hud",id)
              }
              case 4:
              {
                     set_hudmessage(0, 0, 0, -1.0, -1.0, 2, 1.0, 1.0, 0.0, 0.0, -1)
                     show_hudmessage(id, "你只要新輸入密碼, 再按Enter, 即完成整個密碼更換過程!^n注意事項:^n1.新密碼長度不得短於 %d 位^n2.新密碼長度不得長於 20 位",PASSWORD_MIN_LEN)
                     set_task(1.0,"hud",id)
              }
       }
}

public Event_ScreenFade(id)
{
       if(user_activity[id] > 0)
       {
              Fade_To_Black(id)
       }
}

public Fade_To_Black(id)
{
       message_begin ( MSG_ONE_UNRELIABLE , gmsgScreenFade , _ , id ) ;
       write_short ( ( 1<<3 ) | ( 1<<8 ) | ( 1<<10 ) ) ;
       write_short ( ( 1<<3 ) | ( 1<<8 ) | ( 1<<10 ) ) ;
       write_short ( ( 1<<0 ) | ( 1<<2 ) ) ;
       write_byte ( 0 ) ;
       write_byte ( 0 ) ;
       write_byte ( 0 ) ;
       write_byte ( 255 ) ;
       message_end ( ) ;
}

public Reset_Screen(id)
{
       message_begin ( MSG_ONE_UNRELIABLE , gmsgScreenFade , _ , id ) ;
       write_short ( 1<<2 ) ;
       write_short ( 0 ) ;
       write_short ( 0 ) ;
       write_byte ( 0 ) ;
       write_byte ( 0 ) ;
       write_byte ( 0 ) ;
       write_byte ( 0 ) ;
       message_end ( ) ;
}

public MySQLx_Init()
{
       new szHost[64], szUser[32], szPass[32], szDB[128];

       get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) );
       get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) );
       get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) );
       get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) );

       g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB );

       for ( new i = 0; i < sizeof szTables; i++ )
       {
              SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables[i])
       }
}

public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
       if( iFailState == TQUERY_CONNECT_FAILED 
       || iFailState == TQUERY_QUERY_FAILED ) 
       { 
              log_amx( "%s", szError ); 
              
              return;
       } 
}

public LoadData(id)
{
       new name[32]
       get_user_name(id,name,31)

       static szQuery[ 128 ], iData[ 1 ]; 
       formatex( szQuery, 127, "SELECT `user_password` FROM `register_system` WHERE ( `user_id` = '%s' );",name); 

       iData[ 0 ] = id;
       SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
}

public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) 
{ 
       if( iFailState == TQUERY_CONNECT_FAILED 
       || iFailState == TQUERY_QUERY_FAILED ) 
       { 
              log_amx( "%s", szError ); 
              
              return;
       } 
}

public plugin_natives()
{
       register_native("get_user_status", "native_get_user_status", 1)
       register_native("get_user_pwlen", "native_get_user_pwlen", 1)
}

public hud_finish(id)
{
       set_hudmessage(0, 0, 0, -1.0, -1.0, 0, 0.0, 2.0, 0.0, 0.0, -1)
       show_hudmessage(id, "你已完成登入/註冊/更換密碼過程!")
}

public client_connect(id)
{
       user_putinserver[id] = false
       user_activity[id] = 0
       user_wrong[id] = 0
       user_status[id] = 0
       user_len[id] = 0
       user_connect[id] = true
       remove_task(id)
       LoadData(id)
}

public client_putinserver(id)
{
       user_putinserver[id] = true
       if(!user_connect[id])
       {
              set_task(1.0, "force_login", id, _, _, "a", 20)
              set_task(20.0,"check_user",id)
       }
       if( ( get_user_flags(id) & ADMIN_KICK ) && ( user_status[id] !=3 ) )
       {
              remove_user_flags(id)
       }
       set_task(1.0,"not_login",id+987654)
}
public messengmode(id)
{
       client_cmd(id,"messagemode")
}

public client_disconnect(id)
{
       user_activity[id] = 0
       user_wrong[id] = 0
       user_status[id] = 0
       user_len[id] = 0
       remove_task(id)
       user_connect[id] = false
}

public Fwd_ClientInfoChanged(id, buffer)
{
       if (!is_user_connected(id))
              return FMRES_IGNORED;
       
       static name[32], val[32];
       get_user_name(id, name, sizeof name - 1)
       
       engfunc(EngFunc_InfoKeyValue, buffer, "name", val, sizeof val - 1);
       
       if(equal(val, name))
              return FMRES_IGNORED;
       
       engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name);
       
       client_cmd(id, "name ^"%s^"; setinfo name ^"%s^"", name, name);
       
       client_print(id, print_console, "遊戲中不允許更換名字.");
       
       return FMRES_SUPERCEDE;
}

public native_get_user_status(id)
{
       return user_status[id]
}

public native_get_user_pwlen(id)
{
       return user_len[id]
}

public chooseteam(id)
{
       client_cmd(id,"chooseteam")
}

public client_color(playerid, colorid, msg[]){
message_begin(playerid?MSG_ONE:MSG_ALL,get_user_msgid("SayText"),{0,0,0},playerid) 
write_byte(colorid)
write_string(msg)
message_end()
}

public not_login(taskid)
{
       new id = taskid-987654
       if(user_status[id] != 3)
       {
              set_hudmessage(255, 0, 0, -1.0, 0.7, 0, 0.0, 0.1, 0.0, 0.0)
              show_hudmessage(id,"請說/login註冊/登錄, 否則你將受以下限制^n失去管理員權力")
              set_task(0.1,"not_login",id)
       }
}

public force_login(id)
{
       if(user_status[id] != 3)
       {
              user_rest[id] -= 1
              set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 0.0, 1.0, 0.0, 0.0)
              show_hudmessage(id,"你的暱稱已被使用,請登入或轉換另一個名字,否則你將會於 %i 秒後被踢除",user_rest[id]) //這行可以更改
              remove_task(id+987654)
       }
}

public check_user(id)
{
       if(user_status[id] != 3)
       {
              server_cmd("kick #%i ^"你因尚未登入而被踢除^"",get_user_userid(id)) // 這行也是可以更改
       }
}


獻花 x0 回到頂端 [36 樓] From:香港和記電訊 | Posted:2011-03-07 21:38 |
Dragon-LinG
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x4 鮮花 x7
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

不好意思, 因為要工作的關係...
晚了來這喔~...你最後所發的版本..
我測試過運行正確無誤...非常感謝你喔...
希望你可以發更多實用插件呢...
多謝你~


獻花 x0 回到頂端 [37 樓] From:沒有資料 | Posted:2011-03-08 20:04 |
tyty3131hkhk 手機
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x1 鮮花 x26
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

我不太會設定啊!!希望有人可以幫幫我
我是使用自己的電腦來開MYSQL的

設定如下:
regsys_host "localhost"// 數據庫伺服器IP (大部份情況為localhost)
regsys_user "root"// 數據庫用戶名
regsys_pass ""// 數據庫密碼
regsys_dbname "id"// 數據庫名稱

我設定完後伺服器出現
you have an eorr in your SQL syntax; check the manual that corresponds to your MySQL server server version for the right syntax to user near 'TYPE=MyISAM' at line 1


獻花 x0 回到頂端 [38 樓] From:香港和記電訊 | Posted:2011-04-11 08:25 |
slyh
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x1 鮮花 x2
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

請將源碼中的TYPE=MyISAM替換成ENGINE=MyISAM


獻花 x0 回到頂端 [39 樓] From:香港和記電訊 | Posted:2011-04-11 16:17 |

<< 上頁  1   2   3   4   5   6  下頁 >>(共 6 頁)
首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.069491 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言