Esempio n. 1
0
//		void Log(string fmt, params object[] obs)
//		{
//			Const.Log("Spawn", fmt, obs);
//		}

        Obj SpawnObj(SpawnData data, uint entry)
        {
            if (data.obtype == ObjectType.UNIT)
            {
                Unit u = new Unit(gameServer);

                Position  pos = data.point;
                SpawnData p   = null;
                if (entry != Const.SpawnPointEntry)
                {
                    p = data;
                    gameServer.PPoint.GetDest(data.map, pos, Const.rand.Next(6), Const.rand.Next((int)p.spawnDist[0]), out pos);
                }
                if (!u.Create(entry, data.map, pos, data.ang, p))
                {
                    if (LogMessageEvent != null)
                    {
                        LogMessageEvent("SpawnObj ERROR: unknown creature {0} entry :" + entry);
                    }
                    return(null);
                }
                gameServer.AddObj(u);
                return(u);
            }
            return(null);
        }
        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
        }