Mangos源码分析(三)

时间:2021-11-30 20:19:49

Mangos源码分析

--Mangos game

 

Src/game目录

/// Read the client transmitted data

void WorldSocket::OnRead()

{

TcpSocket::OnRead();

        switch (_cmd)

        {

            case CMSG_PING:

            {

                _HandlePing(packet);

                break;

            }

            case CMSG_AUTH_SESSION://权限检查

            {

                _HandleAuthSession(packet);

                break;

            }

            default:

            {

                ///- Else, put it in the world session queue for this user (need to be already authenticated)

                if (_session)

                    _session->QueuePacket(packet);

                else

                    sLog.outDetail("Received out of place packet with cmdid 0x%.4X", _cmd);

                break;

            }

        }

}

 

/// Handle the client authentication packet

void WorldSocket::_HandleAuthSession(WorldPacket& recvPacket)

{

      //count表中检出对应的v,s

      //根据收到的包的内容计算v,s的值

  //  loginDatabase.PExecute("UPDATE `account` SET `v` = '0', `s` = '0' WHERE `username` = '%s'", safe_account.c_str());//v,s的值清0

      //比较数据表的中V值和计算出的V值是否相同,如果相同,则密码正确。

      //向客户端发送成功的数据包

 ///- Create a new WorldSession for the player and add it to the World

    _session = new WorldSession(id, this,security,tbc,mutetime,LocaleConstant(locale));

sWorld.AddSession(_session);

//更新对应的数据表字段

return;

}