raid / Ts?

09/07/2020 10:28 loktaisong#1
Can I set the number of raids/TS per day?
For example: Witch Laurena can only start raids 3 times a day
09/07/2020 13:02 Kravos#2
Yes you can. Working on NosQuest for example (afaik) :)
09/07/2020 13:10 loktaisong#3
how to do
09/07/2020 15:18 redbull2905#4
in ScriptedInstancePacketHandler (WreqPacket)

Code:
 /// <summary>
        /// wreq packet
        /// </summary>
        /// <param name="packet"></param>
        public void GetWreq(WreqPacket packet)
        {
            short CharPositionX = Session.Character.PositionX;
            short CharPositionY = Session.Character.PositionY;
            foreach (ScriptedInstance portal in Session.CurrentMapInstance.ScriptedInstances)
            {
                if (CharPositionY >= portal.PositionY - 1 && CharPositionY
                                                                        <= portal.PositionY + 1
                                                                        && CharPositionX
                                                                        >= portal.PositionX - 1
                                                                        && CharPositionX
                                                                        <= portal.PositionX + 1)
                {
                    switch (packet.Value)
                    {
                        case 0:
                            if (packet.Param != 1
                                && Session.Character.Group?.Sessions.Find(s =>
                                    s.CurrentMapInstance.InstanceBag?.Lock == false
                                    && s.CurrentMapInstance.MapInstanceType == MapInstanceType.TimeSpaceInstance
                                    && s.Character.CharacterId != Session.Character.CharacterId
                                    && s.Character.Timespace?.Id == portal.Id
                                    && !s.Character.Timespace.IsIndividual) is ClientSession TeamMemberInInstance)
                            {
                                if (portal.DailyEntries > 0)
                                {
                                    var entries = portal.DailyEntries - Session.Character.GeneralLogs.CountLinq(s => s.LogType == "InstanceEntry" && short.Parse(s.LogData) == portal.Id && s.Timestamp.Date == DateTime.Today);
                                    Session.SendPacket(Session.Character.GenerateSay(string.Format(Language.Instance.GetMessageFromKey("INSTANCE_ENTRIES"), entries), 10));
                                }
                                Session.SendPacket(UserInterfaceHelper.GenerateDialog(
                                    $"#wreq^3^{TeamMemberInInstance.Character.CharacterId} #wreq^0^1 {Language.Instance.GetMessageFromKey("ASK_JOIN_TEAM_TS")}"));
                            }
                            else
                            {
                                if (portal.DailyEntries > 0)
                                {
                                    var entries = portal.DailyEntries - Session.Character.GeneralLogs.CountLinq(s => s.LogType == "InstanceEntry" && short.Parse(s.LogData) == portal.Id && s.Timestamp.Date == DateTime.Today);
                                    Session.SendPacket(Session.Character.GenerateSay(string.Format(Language.Instance.GetMessageFromKey("INSTANCE_ENTRIES"), entries), 10));
                                }
                                Session.SendPacket(portal.GenerateRbr());
                            }

                            break;

                        case 1:
                            if (!packet.Param.HasValue)
                            {
                                Session.Character.EnterInstance(portal);
                            }
                            break;

                        case 3:
                            ClientSession clientSession =
                                Session.Character.Group?.Sessions.Find(s => s.Character.CharacterId == packet.Param);
                            if (clientSession != null && clientSession.CurrentMapInstance.InstanceBag?.Lock == false && clientSession.Character?.Timespace is ScriptedInstance TeamTimeSpace && !TeamTimeSpace.IsIndividual)
                            {
                                if (portal.Id == TeamTimeSpace.Id)
                                {
                                    if (Session.Character.Level < TeamTimeSpace.LevelMinimum)
                                    {
                                        Session.SendPacket(
                                            UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("TOO_LOW_LVL"), 0));
                                        return;
                                    }
                                    if (Session.Character.Level > TeamTimeSpace.LevelMaximum)
                                    {
                                        Session.SendPacket(
                                            UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("TOO_HIGH_LVL"), 0));
                                        return;
                                    }

                                    var entries = TeamTimeSpace.DailyEntries - Session.Character.GeneralLogs.CountLinq(s => s.LogType == "InstanceEntry" && short.Parse(s.LogData) == TeamTimeSpace.Id && s.Timestamp.Date == DateTime.Today);
                                    if (TeamTimeSpace.DailyEntries == 0 || entries > 0)
                                    {
                                        foreach (Gift gift in TeamTimeSpace.RequiredItems)
                                        {
                                            if (Session.Character.Inventory.CountItem(gift.VNum) < gift.Amount)
                                            {
                                                Session.SendPacket(UserInterfaceHelper.GenerateMsg(
                                                    string.Format(Language.Instance.GetMessageFromKey("NO_ITEM_REQUIRED"),
                                                        ServerManager.GetItem(gift.VNum).Name), 0));
                                                return;
                                            }

                                            Session.Character.Inventory.RemoveItemAmount(gift.VNum, gift.Amount);
                                        }
                                        Session?.SendPackets(TeamTimeSpace.GenerateMinimap());
                                        Session?.SendPacket(TeamTimeSpace.GenerateMainInfo());
                                        Session?.SendPacket(TeamTimeSpace.FirstMap.InstanceBag.GenerateScore());
                                        if (TeamTimeSpace.StartX != 0 || TeamTimeSpace.StartY != 0)
                                        {
                                            ServerManager.Instance.ChangeMapInstance(Session.Character.CharacterId,
                                                clientSession.CurrentMapInstance.MapInstanceId, TeamTimeSpace.StartX, TeamTimeSpace.StartY);
                                        }
                                        else
                                        {
                                            ServerManager.Instance.TeleportOnRandomPlaceInMap(Session, clientSession.CurrentMapInstance.MapInstanceId);
                                        }
                                        Session.Character.Timespace = TeamTimeSpace;
                                    }
                                    else
                                    {
                                        Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("INSTANCE_NO_MORE_ENTRIES"), 0));
                                        Session.SendPacket(Session.Character.GenerateSay(Language.Instance.GetMessageFromKey("INSTANCE_NO_MORE_ENTRIES"), 10));
                                    }
                                }
                            }
                            else
                            {
                                GetWreq(new WreqPacket { Value = 0, Param = 1 });
                            }

                            // TODO: Implement
                            break;
                    }
                }
            }
        }
in ScriptedInstancePacketHandler (mkRaidPacket)

Code:
 /// <summary>
        /// mkraid packet
        /// </summary>
        /// <param name="mkRaidPacket"></param>
        public void GenerateRaid(MkRaidPacket mkRaidPacket)
        {
            if (Session.Character.Group?.Raid != null && Session.Character.Group.IsLeader(Session))
            {
                if (Session.Character.MapId == Session.Character.Group.Raid.MapId
                    && Map.GetDistance(
                        new MapCell { X = Session.Character.PositionX, Y = Session.Character.PositionY },
                        new MapCell { X = Session.Character.Group.Raid.PositionX, Y = Session.Character.Group.Raid.PositionY }) < 2)
                {
                    if ((Session.Character.Group.SessionCount > 0 || Session.Character.Authority >= AuthorityType.TGM)
                    && Session.Character.Group.Sessions.All(s => s.CurrentMapInstance == Session.CurrentMapInstance))
                    {
                        if (Session.Character.Group.Raid.FirstMap == null)
                        {
                            Session.Character.Group.Raid.LoadScript(MapInstanceType.RaidInstance, Session.Character);
                        }

                        if (Session.Character.Group.Raid.FirstMap == null)
                        {
                            return;
                        }

                        Session.Character.Group.Raid.InstanceBag.Lock = true;

                        /*Session.Character.Group.Characters.Where(s => s.CurrentMapInstance != Session.CurrentMapInstance).ToList().ForEach(
                        session =>
                        {
                            Session.Character.Group.LeaveGroup(session);
                            session.SendPacket(session.Character.GenerateRaid(1, true));
                            session.SendPacket(session.Character.GenerateRaid(2, true));
                        });*/

                        Session.Character.Group.Raid.InstanceBag.Lives = (short)Session.Character.Group.SessionCount;

                        foreach (ClientSession session in Session.Character.Group.Sessions.GetAllItems())
                        {
                            if (session != null)
                            {
                                ServerManager.Instance.ChangeMapInstance(session.Character.CharacterId,
                                    session.Character.Group.Raid.FirstMap.MapInstanceId,
                                    session.Character.Group.Raid.StartX, session.Character.Group.Raid.StartY);
                                session.SendPacket("raidbf 0 0 25");
                                session.SendPacket(session.Character.Group.GeneraterRaidmbf(session));
                                session.SendPacket(session.Character.GenerateRaid(5));
                                session.SendPacket(session.Character.GenerateRaid(4));
                                session.SendPacket(session.Character.GenerateRaid(3));
                                if (session.Character.Group.Raid.DailyEntries > 0)
                                {
                                    var entries = session.Character.Group.Raid.DailyEntries - session.Character.GeneralLogs.CountLinq(s => s.LogType == "InstanceEntry" && short.Parse(s.LogData) == session.Character.Group.Raid.Id && s.Timestamp.Date == DateTime.Today);
                                    session.SendPacket(session.Character.GenerateSay(string.Format(Language.Instance.GetMessageFromKey("INSTANCE_ENTRIES"), entries), 10));
                                }
                                
                            }
                        }

                        ServerManager.Instance.GroupList.Remove(Session.Character.Group);

                        Logger.LogUserEvent("RAID_START", Session.GenerateIdentity(),
                            $"RaidId: {Session.Character.Group.GroupId}");
                    }
                    else
                    {
                        Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("RAID_TEAM_NOT_READY"), 0));
                    }
                }
                else
                {
                    if (Session.Character.Group.Raid.IsSinglePortal == true)
                    {
                        if ((Session.Character.Group.SessionCount > 2 || Session.Character.Authority >= AuthorityType.TGM)
                        && Session.Character.Group.Sessions.All(s => s.CurrentMapInstance == Session.CurrentMapInstance))
                        {
                            if (Session.Character.Group.Raid.FirstMap == null)
                            {
                                Session.Character.Group.Raid.LoadScript(MapInstanceType.RaidInstance, Session.Character);
                            }

                            if (Session.Character.Group.Raid.FirstMap == null)
                            {
                                return;
                            }

                            Session.Character.Group.Raid.InstanceBag.Lock = true;

                            Session.Character.Group.Sessions.Where(s => s.CurrentMapInstance != Session.CurrentMapInstance).ToList().ForEach(
                            session =>
                            {
                                Session.Character.Group.LeaveGroup(session);
                                session.SendPacket(session.Character.GenerateRaid(1, true));
                                session.SendPacket(session.Character.GenerateRaid(2, true));
                            });

                            Session.Character.Group.Raid.InstanceBag.Lives = (short)Session.Character.Group.SessionCount;

                            foreach (ClientSession session in Session.Character.Group.Sessions.GetAllItems())
                            {
                                if (session != null)
                                {
                                    ServerManager.Instance.ChangeMapInstance(session.Character.CharacterId,
                                        session.Character.Group.Raid.FirstMap.MapInstanceId,
                                        session.Character.Group.Raid.StartX, session.Character.Group.Raid.StartY);
                                    session.SendPacket("raidbf 0 0 25");
                                    session.SendPacket(session.Character.Group.GeneraterRaidmbf(session));
                                    session.SendPacket(session.Character.GenerateRaid(5));
                                    session.SendPacket(session.Character.GenerateRaid(4));
                                    session.SendPacket(session.Character.GenerateRaid(3));
                                    if (session.Character.Group.Raid.DailyEntries > 0)
                                    {
                                        var entries = session.Character.Group.Raid.DailyEntries - session.Character.GeneralLogs.CountLinq(s => s.LogType == "InstanceEntry" && short.Parse(s.LogData) == session.Character.Group.Raid.Id && s.Timestamp.Date == DateTime.Today);
                                        session.SendPacket(session.Character.GenerateSay(string.Format(Language.Instance.GetMessageFromKey("INSTANCE_ENTRIES"), entries), 10));
                                    }
                                }
                            }

                            ServerManager.Instance.GroupList.Remove(Session.Character.Group);

                            Logger.LogUserEvent("RAID_START", Session.GenerateIdentity(),
                                $"RaidId: {Session.Character.Group.GroupId}");
                        }
                        else
                        {
                            Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("RAID_TEAM_NOT_READY"), 0));
                        }
                    }
                    else
                    {
                        Session.SendPacket(UserInterfaceHelper.GenerateMsg(Language.Instance.GetMessageFromKey("WRONG_PORTAL"), 0));
                    }

                }
            }
        }
in raid add line: DailyEntries Value="3" />

ps: i copy paste all code It will be easier for you
09/07/2020 17:03 loktaisong#5
<DailyEntries Value="3" /> Add to XML?
09/08/2020 10:20 redbull2905#6
Quote:
Originally Posted by loktaisong View Post
<DailyEntries Value="3" /> Add to XML?
yes
09/22/2020 21:12 NosSupreme#7
Quote:
Originally Posted by loktaisong View Post
<DailyEntries Value="3" /> Add to XML?
But why u want to set entry for laurena