internal static Pet CreatePet(uint UserId, string Name, int Type, string Race, string Color) { Pet pet = new Pet(404, UserId, 0, Name, (uint)Type, Race, Color, 0, 100, 100, 0, PiciEnvironment.GetUnixTimestamp(), 0, 0, 0.0); pet.DBState = DatabaseUpdateState.NeedsUpdate; using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor()) { if (dbClient.dbType == DatabaseType.MSSQL) dbClient.setQuery("INSERT INTO user_pets (user_id,name,type,race,color,expirience,energy,createstamp,nutrition,respect,x,y,z) OUTPUT INSERTED.* VALUES (" + pet.OwnerId + ",@" + pet.PetId + "name," + pet.Type + ",@" + pet.PetId + "race,@" + pet.PetId + "color,0,100,'" + pet.CreationStamp + "',0,0,0,0,0)"); else dbClient.setQuery("INSERT INTO user_pets (user_id,name,type,race,color,expirience,energy,createstamp) VALUES (" + pet.OwnerId + ",@" + pet.PetId + "name," + pet.Type + ",@" + pet.PetId + "race,@" + pet.PetId + "color,0,100,'" + pet.CreationStamp + "')"); dbClient.addParameter(pet.PetId + "name", pet.Name); dbClient.addParameter(pet.PetId + "race", pet.Race); dbClient.addParameter(pet.PetId + "color", pet.Color); pet.PetId = (uint)dbClient.insertQuery(); } return pet; }
internal RoomUser DeployBot(RoomBot Bot, Pet PetData) { RoomUser BotUser = new RoomUser(0, room.RoomId, primaryPrivateUserID++, room, false); int PersonalID = secondaryPrivateUserID++; BotUser.InternalRoomID = PersonalID; //this.UserList[PersonalID] = BotUser; userlist.Add(PersonalID, BotUser); DynamicRoomModel Model = room.GetGameMap().Model; if ((Bot.X > 0 && Bot.Y > 0) && Bot.X < Model.MapSizeX && Bot.Y < Model.MapSizeY) { BotUser.SetPos(Bot.X, Bot.Y, Bot.Z); BotUser.SetRot(Bot.Rot, false); } else { Bot.X = Model.DoorX; Bot.Y = Model.DoorY; BotUser.SetPos(Model.DoorX, Model.DoorY, Model.DoorZ); BotUser.SetRot(Model.DoorOrientation, false); } BotUser.BotData = Bot; BotUser.BotAI = Bot.GenerateBotAI(BotUser.VirtualId); if (BotUser.IsPet) { BotUser.BotAI.Init((int)Bot.BotId, BotUser.VirtualId, room.RoomId, BotUser, room); BotUser.PetData = PetData; BotUser.PetData.VirtualId = BotUser.VirtualId; } else { BotUser.BotAI.Init(-1, BotUser.VirtualId, room.RoomId, BotUser, room); } UpdateUserStatus(BotUser, false); BotUser.UpdateNeeded = true; ServerMessage EnterMessage = new ServerMessage(28); EnterMessage.AppendInt32(1); BotUser.Serialize(EnterMessage, room.GetGameMap().gotPublicPool); room.SendMessage(EnterMessage); BotUser.BotAI.OnSelfEnterRoom(); if (BotUser.BotData.AiType == AIType.Guide) room.guideBotIsCalled = true; if (BotUser.IsPet) { if (pets.ContainsKey(BotUser.PetData.PetId)) //Pet allready placed pets[BotUser.PetData.PetId] = BotUser; else pets.Add(BotUser.PetData.PetId, BotUser); petCount++; } return BotUser; }
internal void AddPet(Pet Pet) { isUpdated = false; if (Pet == null || InventoryPets.ContainsKey(Pet.PetId)) return; Pet.PlacedInRoom = false; Pet.RoomId = 0; InventoryPets.Add(Pet.PetId, Pet); //using (DatabaseClient dbClient = PiciEnvironment.GetDatabase().GetClient()) //{ // dbClient.addParameter("botid", Pet.PetId); // dbClient.runFastQuery("UPDATE user_pets SET room_id = 0, x = 0, y = 0, z = 0 WHERE id = @botid LIMIT 1"); //} ServerMessage AddMessage = new ServerMessage(603); Pet.SerializeInventory(AddMessage); GetClient().SendMessage(AddMessage); //UpdatePets(false); }