public override void OnSave() { if (lDirtyParams.Count == 0) { return; } var u = new List <UpdateDefinition <BsonDocument> >(); foreach (var v in lDirtyParams) { if (!dParams.ContainsKey(v)) { AOutput.LogError("Cannot find param " + v); return; } var aparam = dParams[v]; switch (aparam.eParamType) { case EParamType.String: u.Add(ADBAccessor.update(v, aparam.sParamValue)); break; case EParamType.Double: u.Add(ADBAccessor.update(v, aparam.dParamValue)); break; case EParamType.Int: u.Add(ADBAccessor.update(v, aparam.iParamValue)); break; case EParamType.Long: u.Add(ADBAccessor.update(v, aparam.lParamValue)); break; } } ADBManager.Get(InitValueDefs.dbconnect, InitValueDefs.dbname).UpdateOneData(ParamNameDefs.TableAvatar , ADBAccessor.filter_eq(ParamNameDefs.CollectionID, ownerServer.objectId), Builders <BsonDocument> .Update.Combine(u)); AOutput.Log("avatar " + owner.OnGetStringParamValue(ParamNameDefs.AvatarName) + " saved " + lDirtyParams.Count + " params"); var update = new LibPacket.PktParamUpdate(); foreach (var dp in lDirtyParams) { var info = new LibPacket.ParamInfo(); info.paramName = dp; info.paramValue = OnGetStringParamValue(dp); update.lInfos.Add(info); } ownerServer.OnSendToClient(update); lDirtyParams.Clear(); }