Power Pixel - Conteúdos e suporte a sua volta.
Redes Sociais:
FÓRUM ESTARÁ PASSANDO POR MUDANÇAS. SÁBADO, 01 JUL ESTAREMOS DE VOLTA 100%

Você não está conectado. Conecte-se ou registre-se

[FIX CALENDARIO DE ADVENTO PLUS] Calendario de advento [FIX CALENDARIO DE ADVENTO PLUS]

Mensagem - Página 1 de 2

Premium

avatar
ola eu ia deixar esse fix Privado mas vou dar ele para vocês !

Vá em Gameclient.cs e procure por:
Código:
_habbo.InitProcess();


Acima disso adicione :
Código:
if (PlusStaticGameSettings.CampaignCalendarEnabled)
SendMessage(new CampaignCalendarDataComposer(_habbo.GetStats().openedGifts));

Adicione no topo da gameclient.cs
Código:
using Plus.Communication.Packets.Outgoing.Campaigns;

Em seguida, abra PlusStaticGameSettings.cs procure por:
Código:
public const bool NewUserTutorialBotEnabled = true;

em baixo coloque:
Código:
public const bool CampaignCalendarEnabled = true;

crie agora na Outgoing uma pasta chamada campaigns 
depois crie uma classe.cs chamada CampaignCalendarDataComposer.cs e cole:

Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Plus.Communication.Packets.Outgoing.Campaigns
{
    class CampaignCalendarDataComposer : ServerPacket
    {
        public CampaignCalendarDataComposer(List<int> OpenedGifts)
            : base(ServerPacketHeader.CampaignCalendarDataMessageComposer)
        {
            int currentDate = DateTime.Now.Day - 1;

            base.WriteString("xmas16"); //eventTrigger
            base.WriteString(string.Empty); //idk? same as habbo ;P
            base.WriteInteger(currentDate); //currentDate
            base.WriteInteger(25); //totalAmountOfDays

            base.WriteInteger(OpenedGifts.Count); //countOpenGifts
            foreach (int Opened in OpenedGifts)
            {
                base.WriteInteger(Opened); //giftDay
            }

            List<int> MissedGifts = Enumerable.Range(0, (currentDate - 2)).Where(Day => !OpenedGifts.Contains(Day)).ToList();

            base.WriteInteger(MissedGifts.Count); //countMissedGifts
            foreach (int Missed in MissedGifts)
            {
                base.WriteInteger(Missed); //giftDay
            }
        }
    }



Vá em ServerPacketHeader.cs e adicione :
Código:
public const int CampaignCalendarDataMessageComposer = 2740;

Depois vá em Packets>Incoming>LandingView 
Crie uma classe dentro chamada OpenCalendarBoxEvent.cs e cole o código :

Código:
using Plus.Communication.Packets.Outgoing.Inventory.Furni;
using Plus.Communication.Packets.Outgoing.LandingView;
using Plus.Database.Interfaces;
using Plus.HabboHotel.Items;
using Plus.HabboHotel.Users;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Plus.Communication.Packets.Incoming.LandingView
{
    class OpenCalendarBoxEvent : IPacketEvent
    {
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            string eventName = Packet.PopString();
            int giftDay = Packet.PopInt();

            HabboStats habboStats = Session?.GetHabbo()?.GetStats();

            int currentDay = DateTime.Now.Day - 1;

            if (!PlusStaticGameSettings.CampaignCalendarEnabled || habboStats == null ||
                habboStats.openedGifts.Contains(giftDay) || giftDay < (currentDay-2) ||
                giftDay > currentDay || eventName != "xmas16")
            {
                return;
            }



Depois vá em Packets>Incoming>LandingView 
Crie uma classe dentro chamada CampaignCalendarGiftComposer.cs  e cole o código :

Código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Plus.Communication.Packets.Outgoing.LandingView
{
    class CampaignCalendarGiftComposer : ServerPacket
    {
        public CampaignCalendarGiftComposer(string iconName = "throne")
            : base(ServerPacketHeader.CampaignCalendarGiftMessageComposer)
        {
            base.WriteBoolean(true); // never bothered to check
            base.WriteString("xmas14_starfish"); //productName
            base.WriteString(""); //customImage
            base.WriteString(iconName); //iconName
        }
    }
}

Vá agora para LandingViewManager.cs e adicione esta função :

Código:
public bool GenerateCalendarItem(Habbo Habbo, string eventName, int eventDate, out Item newItem)
        {
            newItem = null;

            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT `item_id` FROM `campaign_calendar_gifts` WHERE `event_name` = @eventName AND `base_id` = @dayId LIMIT 1");
                dbClient.AddParameter("eventName", eventName);
                dbClient.AddParameter("dayId", eventDate);

                DataRow row = dbClient.getRow();
                ItemData itemData = null;

                if (row?["item_id"] != null &&
                    PlusEnvironment.GetGame().GetItemManager().GetItem((string)row["item_id"], out itemData))
                {
                    newItem = ItemFactory.CreateSingleItemNullable(itemData, Habbo, "", "");
                    return newItem != null;
                }

                return false;
            }
        }


Abra ItemDataManager.cs  procure por :

Código:
public bool GetItem(int Id, out ItemData Item)

Acima disso, coloque isso:

Código:
public bool GetItem(string itemName, out ItemData item)
        {
            item = this._items.Values.Where(x => x.ItemName == itemName).FirstOrDefault();
            return item != null;
        }



SQL para a Database:
[Você precisa estar registrado e conectado para ver este link.]

Print de como vai ficar :
[Você precisa estar registrado e conectado para ver este link.]

Obs: Se não souber não faça 

Créditos:
Do meu amigo StackOverflow-
Esse código será usado no Nouget server !

Membro Ouro

avatar
Olá joão, o conteúdo é bom mano. 
Mas o número do Packet varia de versões para versões, então o correto seria você especificar para qual PRODUCTION serve esse utilitário.

Premium

avatar
sim erno ! cada production é outra ID

Membro Bronze

avatar
Você não tem escolha de deixar ele privado ou não, não foi você quem criou e ele foi publicado na DevBest '-'

Membro

avatar
Erno escreveu:
Olá joão, o conteúdo é bom mano. 
Mas o número do Packet varia de versões para versões, então o correto seria você especificar para qual PRODUCTION serve esse utilitário.
Não é bem uma correção ele (Stack|Core) fez boa parte do código para adicionar o calendário na PRODUCTION-201612121204-107735592 ou na PRODUCTION-201610312204-296063264 mas usar o addon é atoa essa produção não está 100% pelo menos as que conseguiram crackear e postar em outros fórums, as trocas entre os usuários, bots, pets e alguns outros itens dão dc nos usuários Smile

Premium

avatar
impeachment™ escreveu:Você não tem escolha de deixar ele privado ou não, não foi você quem criou e ele foi publicado na DevBest '-'

mesmo assim a packet é diferente e eu ia colocar z.z

Membro Bronze

avatar
Algumas linhas estão faltando ... pra quem não sabe adiciona-la tera problemas ....

Aladim. escreveu:Algumas linhas estão faltando ... pra quem não sabe adiciona-la tera problemas ....
aladim preciso falar com voce tem skype?

Premium

avatar
sim aladim tem que acabar de adicionar códigos

joao qual seu skype?

Mensagem - Página 1 de 2

Ir à página : 1, 2  Seguinte

Tópicos similares

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum