/// <summary></summary> /// <param name="packet"></param> /// <param name="simulator"></param> private void EstateOwnerMessageHandler(Packet packet, Simulator simulator) { EstateOwnerMessagePacket message = (EstateOwnerMessagePacket)packet; uint estateID; string method = Helpers.FieldToUTF8String(message.MethodData.Method); List <string> parameters = new List <string>(); if (method == "estateupdateinfo") { string estateName = Helpers.FieldToUTF8String(message.ParamList[0].Parameter); LLUUID estateOwner = new LLUUID(Helpers.FieldToUTF8String(message.ParamList[1].Parameter)); estateID = Helpers.BytesToUInt(message.ParamList[2].Parameter); /* * foreach (EstateOwnerMessagePacket.ParamListBlock param in message.ParamList) * { * parameters.Add(Helpers.FieldToUTF8String(param.Parameter)); * } */ bool denyNoPaymentInfo; if (Helpers.BytesToUInt(message.ParamList[8].Parameter) == 0) { denyNoPaymentInfo = true; } else { denyNoPaymentInfo = false; } if (OnGetEstateUpdateInfo != null) { try { OnGetEstateUpdateInfo(estateName, estateOwner, estateID, denyNoPaymentInfo); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } else if (method == "setaccess") { int count; estateID = Helpers.BytesToUInt(message.ParamList[0].Parameter); if (message.ParamList.Length > 1) { EstateAccessReplyDelta accessType = (EstateAccessReplyDelta)Helpers.BytesToUInt(message.ParamList[1].Parameter); switch (accessType) { case EstateAccessReplyDelta.EstateManagers: if (OnGetEstateManagers != null) { count = (int)Helpers.BytesToUInt(message.ParamList[3].Parameter); List <LLUUID> managers = new List <LLUUID>(); if (message.ParamList.Length > 5) { for (int i = 5; i < message.ParamList.Length; i++) { LLUUID managerID; if (LLUUID.TryParse(Helpers.FieldToUTF8String(message.ParamList[i].Parameter), out managerID)) { managers.Add(managerID); } } try { OnGetEstateManagers(estateID, count, managers); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } break; case EstateAccessReplyDelta.EstateBans: if (OnGetEstateBans != null) { count = (int)Helpers.BytesToUInt(message.ParamList[4].Parameter); List <LLUUID> bannedUsers = new List <LLUUID>(); if (message.ParamList.Length > 5) { for (int i = 5; i < message.ParamList.Length; i++) { LLUUID bannedID; if (LLUUID.TryParse(Helpers.FieldToUTF8String(message.ParamList[i].Parameter), out bannedID)) { bannedUsers.Add(bannedID); } } try { OnGetEstateBans(estateID, count, bannedUsers); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } break; case EstateAccessReplyDelta.AllowedUsers: if (OnGetAllowedUsers != null) { count = (int)Helpers.BytesToUInt(message.ParamList[2].Parameter); List <LLUUID> allowedUsers = new List <LLUUID>(); if (message.ParamList.Length > 5) { for (int i = 5; i < message.ParamList.Length; i++) { LLUUID userID; if (LLUUID.TryParse(Helpers.FieldToUTF8String(message.ParamList[i].Parameter), out userID)) { allowedUsers.Add(userID); } } try { OnGetAllowedUsers(estateID, count, allowedUsers); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } break; case EstateAccessReplyDelta.AllowedGroups: if (OnGetAllowedGroups != null) { count = (int)Helpers.BytesToUInt(message.ParamList[3].Parameter); List <LLUUID> allowedGroups = new List <LLUUID>(); if (message.ParamList.Length > 5) { for (int i = 5; i < message.ParamList.Length; i++) { LLUUID groupID; if (LLUUID.TryParse(Helpers.FieldToUTF8String(message.ParamList[i].Parameter), out groupID)) { allowedGroups.Add(groupID); } } try { OnGetAllowedGroups(estateID, count, allowedGroups); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } break; } if (accessType == EstateAccessReplyDelta.EstateManagers) { if (OnGetEstateManagers != null) { count = (int)Helpers.BytesToUInt(message.ParamList[5].Parameter); List <LLUUID> managers = new List <LLUUID>(); for (int i = 5; i < message.ParamList.Length; i++) { LLUUID managerID; if (LLUUID.TryParse(Helpers.FieldToUTF8String(message.ParamList[i].Parameter), out managerID)) { managers.Add(managerID); } } try { OnGetEstateManagers(estateID, count, managers); } catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); } } } } } /* * Console.WriteLine("--- " + method + " ---"); * foreach (EstateOwnerMessagePacket.ParamListBlock block in message.ParamList) * { * Console.WriteLine(Helpers.FieldToUTF8String(block.Parameter)); * } * Console.WriteLine("------"); */ }