コード例 #1
0
        void DoMsgCreate(eWoW.OP code, PlayerConnection conn)
        {
            if (charids.Count >= 10)
            {
                conn.Send(OP.SMSG_CHAR_CREATE, new byte[] { (byte)CHAR.CREATE_MAX_PLAYER_REALM });
                return;
            }

            string name;

            conn.Seek(2).Get(out name);

            if (gameServer.GetCharacter(name) != 0)
            {
                gameServer.LogMessage("Create character error nametaken:" + conn.userName + " name: " + name);
                conn.Send(OP.SMSG_CHAR_CREATE, new byte[] { (byte)CHAR.CREATE_NAME_IN_USE });
                return;
            }

            Character c = new Character(gameServer);

            if (!c.CreateNew(conn, name))
            {
                conn.Send(OP.SMSG_CHAR_CREATE, new byte[] { (byte)CHAR.CREATE_FAILED });
                return;
            }

            if (gameServer.Type.ToLower() == "pvp")
            {
                int side = Side(c.Race);
                foreach (string id in charids)
                {
                    Character nc = gameServer.LoadCharacter(conn, id);
                    if (nc != null && Side(nc.Race) != side)
                    {
                        gameServer.DelCharacter(c);
                        gameServer.LogMessage("CMSG_CHAR_CREATE NotSameSide" + conn.userName + " name: " + name);
                        conn.Send(OP.SMSG_CHAR_CREATE, new byte[] { (byte)CHAR.CREATE_NOT_SAME_SIDE });
                        return;
                    }
                }
            }
            gameServer.AddCharacter(name, c.GUID, (byte)c.Race, (byte)c.Gender, (byte)c.Class);
            gameServer.AddObj(c);

            charids.Add(name);
            string str = "";

            foreach (string n in charids)
            {
                str += n + " ";
            }
            gameServer.SetChar(conn.userName, str.Trim());

            conn.Send(OP.SMSG_CHAR_CREATE, new byte[] { (byte)CHAR.CREATE_OK }); // create ok
        }
コード例 #2
0
        void NameQuery(OP code, PlayerConnection c)
        {
            uint guid;

            c.Seek(2).Get(out guid);

            ByteArrayBuilder pack = new ByteArrayBuilder(false);

            pack.Add(guid, 0);

            byte   race, gender, cls;
            string nm = gameServer.GetCharacter(guid, out race, out gender, out cls);

            if (nm != null)
            {
                pack.Add(nm).Add((uint)race, (uint)gender, (uint)cls);
            }
            else
            {
                pack.Add("Unknown").Add((uint)0, 0, 0);
            }
            c.Send(OP.SMSG_NAME_QUERY_RESPONSE, pack);
        }