自動註冊 by BtOKy


1.開啟Login.cpp檔案,尋找:

else if(s == -1)
LoginPacket::loginError(player, 0x05);

這個代表輸入了無效的帳密,會出現「無此帳號」訊息
(先不管他)

2.接著往上尋找會找到:

int usersize = getShort(packet);

從這行開始一直複製到「兩個}}」

by BtOKy

3.接著我們回到步驟1的地方,把那二行當註解,句子最前方加上//
會變成這樣
//else if(s == -1)
//LoginPacket::loginError(player, 0x05);

然後在:
//LoginPacket::loginError(player, 0x05);
的下一行,我們加上這個:
else if(s == -1){
再接著把剛才複製很大一段的東西,貼到這裡

然後把剛才貼上那一大段的中間
if (MySQL::getInt("users", player->getUserid(), "ban_expire > NOW()") == 1) {
一直到
} else {
我們不需要用到它,所以都註解掉,或是刪掉也可以

by BtOKy

以上都ok之後,接著就是最重要的步驟了!我們要把輸入的帳號跟密碼直接插入SQL資料庫中
★★注意會有2處相同的地方,因為我們剛有複製,所以我們只要改else if(s == -1){以下的部份★★
尋找:
char username[MAX_FIELD_SIZE], password[MAX_FIELD_SIZE];
在下一行的地方加上:
char query[255];

尋找:
int s = checkLogin(username, password);
的上一行加上:
sprintf_s(query, 255, "INSERT INTO users (ID,username,password,pin,gender,gm,ban_expire,ban_reason,banned) VALUES (NULL,'%s','%s','0','0','0','0000-00-00 00:00:00','0','0')",username,password);
MySQL::insert(query);

紅字標示那段非常重要,因為版本的不同,資料庫欄位也會有些不同,請先查看你資料庫:users的欄位有哪些
而藍字所標示的地方,就是因為版本不同,有些版本的SQL並沒有這些欄位資料,所以要看清楚喔!
如果這個步驟沒有弄好,就會卡在登入帳密的畫面,不會進到選人物的地方
而完成圖,就是下面那張圖片了!!!!有興趣的可以仔細看看囉
by BtOKy
因為懶...所以用上面那張,注意看圖片中「這三行」的位置 by BtOKy

by BtOKy