Aller au contenu
  • Veuillez ne pas poster de message pour but d'insulter, incitation à la haine, propos sexuels et tout autre qui ne respecte pas nos conditions générales !

Wired - problème en l'ajoutant


Akil
Message ajouté par MatYou

Rectification du titre pour que le titre et le sujet soit cohérent.

Messages recommandés

Bonjour tout le monde.

D'habitude je sais me débrouiller seul mais voila un problème sur lequel je réfléchis et je ne trouve aucune solution/adaption.

J'ai un émulateur sous PlusEMU, quand je veux ajouter un wired partagé sur le net par exemple celui-ci

Pour avoir accès à ce lien, merci de vous connecter.

.

 

Je fais tout ce qu'il faut correctement, (aucune erreur, je suis pas un développeur en or mais je sais faire beaucoup de choses et je suis sûr de mon travail) et j'ai des erreurs du genre IWiredItem n'implémente pas correctement HandleSave etc...

Je sais pourquoi me je ne trouve pas le remède.

 

Je m'explique, voici un fichier au hasard d'un wired qui fonctionne sur l'ému que j'ai : 

using System;
using System.Linq;
using System.Text;
using System.Collections.Generic;
using System.Collections.Concurrent;

using Plus.Communication.Packets.Incoming;
using Plus.HabboHotel.Rooms;
using Plus.HabboHotel.Users;
using Plus.Communication.Packets.Outgoing.Rooms.Chat;

namespace Plus.HabboHotel.Items.Wired.Boxes.Effects
{
    class GiveUserBadgeBox : IWiredItem
    {
        public Room Instance { get; set; }

        public Item Item { get; set; }

        public WiredBoxType Type { get { return WiredBoxType.EffectGiveUserBadge; } }

        public List<Item> SetItems { get; set; }
        public WiredIntSettings Settings { get; set; }

        public string StringData { get; set; }

        public bool BoolData { get; set; }

        public string ItemsData { get; set; }

        public GiveUserBadgeBox(Room Instance, Item Item)
        {
            this.Settings = new WiredIntSettings();
            this.Instance = Instance;
            this.Item = Item;
            this.SetItems = new List<Item>();
        }

        public void HandleSave(List<int> Settings, List<Item> Items, string Data, int Int2, int Int3)
        {
            this.StringData = Data;
        }

        public bool Execute(WiredEventHandler Event)
        {
            var User = Event.User;

            var Item = Event.Item;

            if (User == null)
                return false;

            var Client = User.GetClient();

            if (Client == null)
                return false;

            var Player = Client.GetHabbo();
            if (String.IsNullOrEmpty(StringData))
                return false;

            if (Player.GetBadgeComponent().HasBadge(StringData))
                Player.GetClient().SendMessage(new WhisperComposer(User.VirtualId, "Oups, tu as déjà reçu ce badge.", 0, User.LastBubble));
            else
            {
                Player.GetBadgeComponent().GiveBadge(StringData, true);
                Player.GetClient().SendWhisper("Tu as reçu un badge !");
            }

            return true;
        }
    }
}

 

Voici maintenant un fichier de wired trouvé sur le net que je veux ajouter :

 

using System;
using System.Linq;
using System.Collections.Concurrent;

using Plus.Communication.Packets.Incoming;
using Plus.HabboHotel.Rooms;

namespace Plus.HabboHotel.Items.Wired.Boxes.Effects
{
    class CloseDiceBox : IWiredItem, IWiredCycle
    {
        public Room Instance { get; set; }
        public Item Item { get; set; }
        public WiredBoxType Type { get { return WiredBoxType.EffectCloseDice; } }
        public ConcurrentDictionary<int, Item> SetItems { get; set; }
        public int TickCount { get; set; }
        public string StringData { get; set; }
        public bool BoolData { get; set; }
        public int Delay { get { return this._delay; } set { this._delay = value; this.TickCount = value; } }
        public string ItemsData { get; set; }

        private long _next;
        private int _delay = 0;
        private bool Requested = false;

        public CloseDiceBox(Room Instance, Item Item)
        {
            this.Instance = Instance;
            this.Item = Item;
            this.SetItems = new ConcurrentDictionary<int, Item>();
        }

        public void HandleSave(ClientPacket Packet)
        {
            this.SetItems.Clear();
            int Unknown = Packet.PopInt();
            string Unknown2 = Packet.PopString();

            int FurniCount = Packet.PopInt();
            for (int i = 0; i < FurniCount; i++)
            {
                Item SelectedItem = Instance.GetRoomItemHandler().GetItem(Packet.PopInt());
                if (SelectedItem != null)
                    SetItems.TryAdd(SelectedItem.Id, SelectedItem);
            }

            int Delay = Packet.PopInt();
            this.Delay = Delay;
        }

        public bool Execute(params object[] Params)
        {
            if (this._next == 0 || this._next < PlusEnvironment.Now())
                this._next = PlusEnvironment.Now() + this.Delay;

            this.Requested = true;
            this.TickCount = Delay;
            return true;
        }

        public bool OnCycle()
        {
            if (this.SetItems.Count == 0 || !Requested)
                return false;

            long Now = PlusEnvironment.Now();
            if (_next < Now)
            {
                foreach (Item Item in this.SetItems.Values.ToList())
                {
                    if (Item == null)
                        continue;

                    if (!Instance.GetRoomItemHandler().GetFloor.Contains(Item))
                    {
                        Item n = null;
                        SetItems.TryRemove(Item.Id, out n);
                        continue;
                    }

                    Item.ExtraData = "0";
                    Item.UpdateState();
                }

                Requested = false;

                this._next = 0;
                this.TickCount = Delay;
   
            }
            return true;
        }
    }
}

Quand je crée le fichier CloseDiceBox.cs et que j'ajoute les codes dans WiredBoxType etc.., je génère et j'ai l'erreur suivante :

Pour avoir accès à cette image, merci de vous connecter.

 

Maintenant, j'ai remarqué que enfaite mon IWiredItem.cs est différent sur PlusEMU basique et sur l'ému que j'ai... si vous avez une solution comment adapter ? 

Si quelqu'un est chaud, on peut chercher à deux sur TV.

Lien à poster
Partager sur d’autres sites

  • Responsable modération
    Salut Akil ,
    Ton sujet a été déplacé pour une des deux raisons suivantes :

    - Ta demande a été résolue.

    - Ton sujet se trouvait dans la mauvaise catégorie.

        
      Ceci est un message automatique.

~ MatYouFR ~

 

+ French Player +

+ Player of Valorant, Battlefield 4 & 5, GTA 5, ETS 2, Rocket League +

+ Streamer on Twitch +

 

signature.png

Lien à poster
Partager sur d’autres sites

  • Responsable modération

Salut !

 

Merci d'éviter de créer plusieurs sujets dans "Aides et support", si le sujet n'est pas visible c'est parce qu'il doit être approuvé par l'équipe.

 

Mastoke

~ MatYouFR ~

 

+ French Player +

+ Player of Valorant, Battlefield 4 & 5, GTA 5, ETS 2, Rocket League +

+ Streamer on Twitch +

 

signature.png

Lien à poster
Partager sur d’autres sites

×
×
  • Créer...