Machiavelli Posted September 7, 2020 Posted September 7, 2020 Hi, I've downloaded the C# 1.1 Attachment Sync but it doesn't work for me as I don't see the object on myself nor on other players when I/they try the /soda command. mapObject returns the correct .Model number, but on using .Exists it returns false.Console logs server:[COMMAND] Machiavelli: /soda current attachments: 337428855 Clientside Changes: private void EntityStreamIn(RAGE.Elements.Entity entity) { var attachments = entity.GetData<List<uint>>("Attachments"); if (attachments != null) { foreach (var key in attachments) { AttachObject(entity, key); } } } private void AttachObject(RAGE.Elements.Entity entity, uint key) { var entityObjects = entity.GetData<Dictionary<uint, MapObject>>("Objects"); if (AttachmentDictionary.ContainsKey(key) && !entityObjects.ContainsKey(key)) { var entityAttachment = AttachmentDictionary[key]; var mapObject = new MapObject(entityAttachment.Model, new Vector3(0, 0, 0), new Vector3(0, 0, 0)) { Dimension = uint.MaxValue }; mapObject.NotifyStreaming = true; // <----------------------------------------- added Chat.Output("attach model: " + entityAttachment.Model); //result: attach model: 114933932 --> (same result for mapObject.Model) var gameEntity = entity.GetGameEntity(); Entity.AttachEntityToEntity(mapObject.Handle, gameEntity.Handle, RAGE.Game.Ped.GetPedBoneIndex(gameEntity.Handle, entityAttachment.BoneId), entityAttachment.Offset.X, entityAttachment.Offset.Y, entityAttachment.Offset.Z, entityAttachment.Rotation.X, entityAttachment.Rotation.Y, entityAttachment.Rotation.Z, false, false, false, false, 2, true); if (Entity.IsEntityAttachedToEntity(mapObject.Handle, gameEntity.Handle)) { OnEntityAttachedEvent?.Invoke(gameEntity, entityAttachment.AttachmentEvent); } entityObjects.Add(key, mapObject); entity.SetData("Objects", entityObjects); } } Can anybody tell me what exactly I need to change and where I have to change it? Like, how do you check if it's streamed/loaded in or not? Might have to change more code in the other files too.
bogoslovniy Posted September 7, 2020 Posted September 7, 2020 As an option: When an object enters the stream zone, you create the object and put it in list / dictionary / queue. In "Events.Tick" you check list / dictionary / queue for the presence of values, if any, then attach the object. I couldn't think of a better solution. Sorry for my English
Xabi Posted September 8, 2020 Posted September 8, 2020 You have to create the object and set the NotifyStreaming = true before calling the EntityStreamIn event.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now