[FIX CALENDARIO DE ADVENTO PLUS] Calendario de advento [FIX CALENDARIO DE ADVENTO PLUS] 20.12.16 2:33
ola eu ia deixar esse fix Privado mas vou dar ele para vocês !
Vá em Gameclient.cs e procure por:
Acima disso adicione :
Adicione no topo da gameclient.cs
Em seguida, abra PlusStaticGameSettings.cs procure por:
em baixo coloque:
crie agora na Outgoing uma pasta chamada campaigns
depois crie uma classe.cs chamada CampaignCalendarDataComposer.cs e cole:
Vá em ServerPacketHeader.cs e adicione :
Depois vá em Packets>Incoming>LandingView
Crie uma classe dentro chamada OpenCalendarBoxEvent.cs e cole o código :
Depois vá em Packets>Incoming>LandingView
Crie uma classe dentro chamada CampaignCalendarGiftComposer.cs e cole o código :
Vá agora para LandingViewManager.cs e adicione esta função :
Abra ItemDataManager.cs procure por :
Acima disso, coloque isso:
SQL para a Database:
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Print de como vai ficar :
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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 !
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:
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Print de como vai ficar :
[Tens de ter uma conta e sessão iniciada para poderes visualizar 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 !