public void Read(byte[] bytes) { using (var io = IoBuffer.FromBytes(bytes, ByteOrder.LITTLE_ENDIAN)){ SuitData = io.ReadByte(); SuitScope = (VMSuitScope)io.ReadByte(); Flags = (VMChangeSuitOrAccessoryFlags)io.ReadUInt16(); } }
public static Appearance GetSuit(VMStackFrame context, VMSuitScope scope, ushort id) { switch (scope) { case VMSuitScope.Object: var suitTable = context.Callee.Object.Resource.Get <STR>(304); if (suitTable != null) { var suitFile = suitTable.GetString(id) + ".apr"; var apr = Content.Get().AvatarAppearances.Get(suitFile); return(apr); } return(null); default: throw new Exception("I dont know about this suit scope"); } }
public static object GetSuit(VMStackFrame context, VMSuitScope scope, ushort id) { STR suitTable = null; var avatar = (VMAvatar)context.Caller; switch (scope) { case VMSuitScope.Object: suitTable = context.CodeOwner.Resource.Get <STR>(304); break; case VMSuitScope.Global: suitTable = context.Global.Resource.Get <STR>(304); break; case VMSuitScope.Person: //get outfit from person if (context.VM.TS1) { return(GetPersonSuitTS1((VMAvatar)context.Caller, id)); } var type = (VMPersonSuits)id; bool male = (avatar.GetPersonData(VMPersonDataVariable.Gender) == 0); switch (type) { //todo: (tail etc), cockroach head case VMPersonSuits.DefaultDaywear: return(avatar.DefaultSuits.Daywear.ID); case VMPersonSuits.Naked: return((ulong)(male ? 0x24E0000000D : 0x10000000D)); case VMPersonSuits.DefaultSwimwear: return(avatar.DefaultSuits.Swimwear.ID); case VMPersonSuits.JobOutfit: if (context.VM.TS1) { return(null); } var job = avatar.GetPersonData(VMPersonDataVariable.OnlineJobID); if (job < 1 || job > 5) { return(null); } var level = Math.Max(0, Math.Min(3, (avatar.GetPersonData(VMPersonDataVariable.OnlineJobGrade) - 1) / 4)); return((ulong)(JobOutfits[male?0:1][job - 1][level])); case VMPersonSuits.DefaultSleepwear: return(avatar.DefaultSuits.Sleepwear.ID); case VMPersonSuits.SkeletonPlus: return((ulong)(0x5750000000D)); case VMPersonSuits.SkeletonMinus: return((ulong)(0x5740000000D)); case VMPersonSuits.TeleporterMishap: return((ulong)(male ? 0x2900000000D : 0x4A0000000D)); case VMPersonSuits.DynamicDaywear: return(avatar.DynamicSuits.Daywear); case VMPersonSuits.DynamicSleepwear: return(avatar.DynamicSuits.Sleepwear); case VMPersonSuits.DynamicSwimwear: return(avatar.DynamicSuits.Swimwear); case VMPersonSuits.DynamicCostume: return(avatar.DynamicSuits.Costume); case VMPersonSuits.DecorationHead: return(avatar.Decoration.Head); case VMPersonSuits.DecorationBack: return(avatar.Decoration.Back); case VMPersonSuits.DecorationShoes: return(avatar.Decoration.Shoes); case VMPersonSuits.DecorationTail: return(avatar.Decoration.Tail); } return(null); } if (suitTable != null) { var suitFile = suitTable.GetString(id) + ".apr"; return(suitFile); //var apr = FSO.Content.Content.Get().AvatarAppearances.Get(suitFile); //return apr; } return(null); }
public static object GetSuit(VMStackFrame context, VMSuitScope scope, ushort id) { STR suitTable = null; var avatar = (VMAvatar)context.Caller; switch (scope) { case VMSuitScope.Object: suitTable = context.Callee.Object.Resource.Get<STR>(304); break; case VMSuitScope.Global: suitTable = context.Global.Resource.Get<STR>(304); break; case VMSuitScope.Person: //get outfit from person var type = (VMPersonSuits)id; bool male = (avatar.GetPersonData(VMPersonDataVariable.Gender) == 0); switch (type) { //todo: Dynamic Daywear case VMPersonSuits.DefaultDaywear: return avatar.DefaultSuits.Daywear; case VMPersonSuits.Naked: return (ulong)(male ? 0x24E0000000D : 0x10000000D); case VMPersonSuits.DefaultSwimwear: return avatar.DefaultSuits.Swimwear; case VMPersonSuits.JobOutfit: var job = avatar.GetPersonData(VMPersonDataVariable.OnlineJobID); if (job < 1 || job > 5) return null; var level = Math.Max(0, Math.Min(3, (avatar.GetPersonData(VMPersonDataVariable.OnlineJobGrade) - 1) / 4)); return (ulong)(JobOutfits[male?0:1][job-1][level]); case VMPersonSuits.DefaultSleepwear: return avatar.DefaultSuits.Sleepwear; case VMPersonSuits.SkeletonPlus: return (ulong)(0x5750000000D); case VMPersonSuits.SkeletonMinus: return (ulong)(0x5740000000D); case VMPersonSuits.TeleporterMishap: return (ulong)(male ? 0x2900000000D : 0x4A0000000D); } return null; } if (suitTable != null) { var suitFile = suitTable.GetString(id) + ".apr"; return suitFile; //var apr = FSO.Content.Content.Get().AvatarAppearances.Get(suitFile); //return apr; } return null; }
public static Appearance GetSuit(VMStackFrame context, VMSuitScope scope, ushort id) { switch (scope) { case VMSuitScope.Object: var suitTable = context.Callee.Object.Resource.Get<STR>(304); if (suitTable != null){ var suitFile = suitTable.GetString(id) + ".apr"; var apr = FSO.Content.Content.Get().AvatarAppearances.Get(suitFile); return apr; } return null; default: return null; throw new VMSimanticsException("I dont know about this suit scope", context); } }