// 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 }