Example #1
0
        public static void HandleAddAuction(int index, ref byte[] data)
        {
            int InvItem;
            int ItemNum;
            int Price;
            int MaxPrice;

            ByteStream buffer = new ByteStream(data);

            InvItem = buffer.ReadInt32();

            Price = buffer.ReadInt32();

            MaxPrice = buffer.ReadInt32();

            buffer.Dispose();

            ItemNum = S_Players.GetPlayerInvItemNum(index, InvItem);

            if (Price > 0)
            {
                AddAuction(index, ItemNum, 1, Price, MaxPrice);
            }
            else
            {
                S_NetworkSend.PlayerMsg(index, "Your Price Must Be Above 0!", (int)Enums.ColorType.Red);
            }
        }
Example #2
0
        public static void AddAuction(int Index, int ItemNum, int Amount, int Min, int Max)
        {
            int    i;
            string Filename = "";
            int    Unused   = 0;



            // Find a empty auction slot.
            for (i = 1; i <= 100; i++)
            {
                if (Auction[i].Owner == string.Empty)
                {
                    Unused = i;
                    break;
                }
            } // i


            Auction[Unused].Owner   = S_Players.GetPlayerName(Index);
            Auction[Unused].OwnerID = Index;
            Auction[Unused].Item    = ItemNum;
            Auction[Unused].Amount  = Amount;
            Auction[Unused].Price   = Min;
            Auction[Unused].MaxBid  = Max;
            Auction[Unused].Date    = String.Format(DateTime.Today.ToString(), "m/d/yyyy");
            Auction[Unused].EndDate = 31;

            modDatabase.SaveAuction(Unused);


            S_NetworkSend.SendAuctions();
        }
 internal static void Socket_ConnectionLost(int index)
 {
     Console.ForegroundColor = ConsoleColor.DarkRed;
     Console.WriteLine("Connection lost on index[" + index + "] - WAS IN GAME: " + modTypes.TempPlayer[index].InGame);
     Console.ResetColor();
     S_Players.LeftGame(index);
 }
Example #4
0
 public static void Packet_SaveHouses(int index, ref byte[] data)
 {
     checked
     {
         if (!(S_Players.GetPlayerAccess(index) < 2))
         {
             ByteStream buffer = new ByteStream(data);
             int        Count  = buffer.ReadInt32();
             if (Count > 0)
             {
                 int num = Count;
                 for (int z = 1; z <= num; z++)
                 {
                     int i = buffer.ReadInt32();
                     S_Housing.HouseConfig[i].ConfigName   = (buffer.ReadString().Trim());
                     S_Housing.HouseConfig[i].BaseMap      = buffer.ReadInt32();
                     S_Housing.HouseConfig[i].X            = buffer.ReadInt32();
                     S_Housing.HouseConfig[i].Y            = buffer.ReadInt32();
                     S_Housing.HouseConfig[i].Price        = buffer.ReadInt32();
                     S_Housing.HouseConfig[i].MaxFurniture = buffer.ReadInt32();
                     S_Housing.SaveHouse(i);
                     int playersOnline = S_GameLogic.GetPlayersOnline();
                     for (int x = 1; x <= playersOnline; x++)
                     {
                         if (S_NetworkConfig.IsPlaying(x) && modTypes.Player[x].Character[(int)modTypes.TempPlayer[x].CurChar].InHouse == i)
                         {
                             S_Housing.SendFurnitureToHouse(i);
                         }
                     }
                 }
             }
             buffer.Dispose();
         }
     }
 }
Example #5
0
        internal static void Packet_PartyRquest(int index, ref byte[] data)
        {
            modDatabase.Addlog("Recieved CMSG: CRequestParty", S_Constants.PACKET_LOG);
            Console.WriteLine("Recieved CMSG: CRequestParty");

            // Prevent partying with self
            if (modTypes.TempPlayer[index].Target == index)
            {
                return;
            }
            // make sure it's a valid target
            if (modTypes.TempPlayer[index].TargetType != (byte)Enums.TargetType.Player)
            {
                return;
            }

            // make sure they're connected and on the same map
            if (!S_NetworkConfig.Socket.IsConnected(modTypes.TempPlayer[index].Target) || !S_NetworkConfig.IsPlaying(modTypes.TempPlayer[index].Target))
            {
                return;
            }
            if (S_Players.GetPlayerMap(modTypes.TempPlayer[index].Target) != S_Players.GetPlayerMap(index))
            {
                return;
            }

            // init the request
            Party_Invite(index, modTypes.TempPlayer[index].Target);
        }
Example #6
0
        internal static void Party_PlayerLeave(int index)
        {
            int partyNum;
            int i;

            partyNum = modTypes.TempPlayer[index].InParty;

            if (partyNum > 0)
            {
                // find out how many members we have
                Party_CountMembers(partyNum);
                // make sure there's more than 2 people
                if (Party[partyNum].MemberCount > 2)
                {
                    // check if leader
                    if (Party[partyNum].Leader == index)
                    {
                        // set next person down as leader
                        for (i = 1; i <= Constants.MAX_PARTY_MEMBERS; i++)
                        {
                            if (Party[partyNum].Member[i] > 0 && Party[partyNum].Member[i] != index)
                            {
                                Party[partyNum].Leader = Party[partyNum].Member[i];
                                PartyMsg(partyNum, string.Format("{0} is now the party leader.", S_Players.GetPlayerName(i)));
                                break;
                            }
                        }
                        // leave party
                        PartyMsg(partyNum, string.Format("{0} has left the party.", S_Players.GetPlayerName(index)));
                        Party_RemoveFromParty(index, partyNum);
                    }
                    else
                    {
                        // not the leader, just leave
                        PartyMsg(partyNum, string.Format("{0} has left the party.", S_Players.GetPlayerName(index)));
                        Party_RemoveFromParty(index, partyNum);
                    }
                }
                else
                {
                    // find out how many members we have
                    Party_CountMembers(partyNum);
                    // only 2 people, disband
                    PartyMsg(partyNum, "The party has been disbanded.");

                    // clear out everyone's party
                    for (i = 1; i <= Constants.MAX_PARTY_MEMBERS; i++)
                    {
                        index = Party[partyNum].Member[i];
                        // player exist?
                        if (index > 0)
                        {
                            Party_RemoveFromParty(index, partyNum);
                        }
                    }
                    // clear out the party itself
                    ClearParty(partyNum);
                }
            }
        }
Example #7
0
        // Token: 0x060001DF RID: 479 RVA: 0x0003B69C File Offset: 0x0003989C
        public static void Packet_RequestEditHouse(int index, ref byte[] data)
        {
            bool flag = S_Players.GetPlayerAccess(index) < 2;

            checked
            {
                if (!flag)
                {
                    ByteStream buffer = new ByteStream(4);
                    buffer.WriteInt32(93);
                    int max_HOUSES = S_Housing.MAX_HOUSES;
                    for (int i = 1; i <= max_HOUSES; i++)
                    {
                        buffer.WriteString((S_Housing.HouseConfig[i].ConfigName.Trim()));
                        buffer.WriteInt32(S_Housing.HouseConfig[i].BaseMap);
                        buffer.WriteInt32(S_Housing.HouseConfig[i].X);
                        buffer.WriteInt32(S_Housing.HouseConfig[i].Y);
                        buffer.WriteInt32(S_Housing.HouseConfig[i].Price);
                        buffer.WriteInt32(S_Housing.HouseConfig[i].MaxFurniture);
                    }
                    S_NetworkConfig.Socket.SendDataTo(index, buffer.Data, buffer.Head);
                    buffer.Dispose();
                }
            }
        }
Example #8
0
        public static void HandleSaveProjectile(int index, ref byte[] data)
        {
            int        ProjectileNum;
            ByteStream buffer = new ByteStream(data);

            if (S_Players.GetPlayerAccess(index) < (byte)Enums.AdminType.Developer)
            {
                return;
            }

            ProjectileNum = buffer.ReadInt32();

            // Prevent hacking
            if (ProjectileNum < 0 || ProjectileNum > MAX_PROJECTILES)
            {
                return;
            }

            Projectiles[ProjectileNum].Name   = buffer.ReadString();
            Projectiles[ProjectileNum].Sprite = buffer.ReadInt32();
            Projectiles[ProjectileNum].Range  = (byte)buffer.ReadInt32();
            Projectiles[ProjectileNum].Speed  = buffer.ReadInt32();
            Projectiles[ProjectileNum].Damage = buffer.ReadInt32();

            // Save it
            SendUpdateProjectileToAll(ProjectileNum);
            SaveProjectile(ProjectileNum);
            modDatabase.Addlog(S_Players.GetPlayerLogin(index) + " saved Projectile #" + ProjectileNum + ".", S_Constants.ADMIN_LOG);
            buffer.Dispose();
        }
        public static void SendResourceCacheTo(int index, int Resource_num)
        {
            int        i;
            int        mapnum;
            ByteStream buffer = new ByteStream(4);

            mapnum = S_Players.GetPlayerMap(index);

            buffer.WriteInt32((int)Packets.ServerPackets.SResourceCache);
            buffer.WriteInt32(ResourceCache[mapnum].ResourceCount);

            S_General.AddDebug("Sent SMSG: SResourcesCache");

            if (ResourceCache[mapnum].ResourceCount > 0)
            {
                var loopTo = ResourceCache[mapnum].ResourceCount;
                for (i = 0; i <= loopTo; i++)
                {
                    buffer.WriteInt32(ResourceCache[mapnum].ResourceData[i].ResourceState);
                    buffer.WriteInt32(ResourceCache[mapnum].ResourceData[i].X);
                    buffer.WriteInt32(ResourceCache[mapnum].ResourceData[i].Y);
                }
            }

            S_NetworkConfig.Socket.SendDataTo(index, buffer.Data, buffer.Head);
            buffer.Dispose();
        }
Example #10
0
        internal static void UpdateCraft(int index)
        {
            int i;

            // ok, we made the item, give and take the shit
            if (S_Players.GiveInvItem(index, Recipe[modTypes.TempPlayer[index].CraftRecipe].MakeItemNum, Recipe[modTypes.TempPlayer[index].CraftRecipe].MakeItemAmount, true))
            {
                for (i = 1; i <= Constants.MAX_INGREDIENT; i++)
                {
                    S_Players.TakeInvItem(index, Recipe[modTypes.TempPlayer[index].CraftRecipe].Ingredients[i].ItemNum, Recipe[modTypes.TempPlayer[index].CraftRecipe].Ingredients[i].Value);
                }
                S_NetworkSend.PlayerMsg(index, "You created " + Microsoft.VisualBasic.Strings.Trim(Types.Item[Recipe[modTypes.TempPlayer[index].CraftRecipe].MakeItemNum].Name) + " X " + Recipe[modTypes.TempPlayer[index].CraftRecipe].MakeItemAmount, (int)Enums.ColorType.BrightGreen);
            }
            ;

            if (modTypes.TempPlayer[index].IsCrafting)
            {
                modTypes.TempPlayer[index].CraftAmount = modTypes.TempPlayer[index].CraftAmount - 1;

                if (modTypes.TempPlayer[index].CraftAmount > 0)
                {
                    modTypes.TempPlayer[index].CraftTimer      = S_General.GetTimeMs();
                    modTypes.TempPlayer[index].CraftTimeNeeded = Recipe[modTypes.TempPlayer[index].CraftRecipe].CreateTime;
                    modTypes.TempPlayer[index].CraftIt         = 1;
                    SendCraftUpdate(index, 0);
                }
                SendCraftUpdate(index, 1);
            }
        }
Example #11
0
        public static void Packet_BuyHouse(int index, ref byte[] data)
        {
            ByteStream buffer = new ByteStream(data);
            int        i      = buffer.ReadInt32();

            if (i == 1)
            {
                if (modTypes.TempPlayer[index].BuyHouseindex > 0)
                {
                    int price = S_Housing.HouseConfig[modTypes.TempPlayer[index].BuyHouseindex].Price;
                    if (S_Players.HasItem(index, 1) >= price)
                    {
                        S_Players.TakeInvItem(index, 1, price);
                        modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].House.Houseindex = modTypes.TempPlayer[index].BuyHouseindex;
                        S_NetworkSend.PlayerMsg(index, "You just bought the " + (S_Housing.HouseConfig[modTypes.TempPlayer[index].BuyHouseindex].ConfigName.Trim()) + " house!", 10);
                        modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].LastMap = S_Players.GetPlayerMap(index);
                        modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].LastX   = S_Players.GetPlayerX(index);
                        modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].LastY   = S_Players.GetPlayerY(index);
                        modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].InHouse = index;
                        S_Players.PlayerWarp(index, S_Housing.HouseConfig[modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].House.Houseindex].BaseMap, S_Housing.HouseConfig[modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].House.Houseindex].X, S_Housing.HouseConfig[modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].House.Houseindex].Y, true, false);
                        modDatabase.SavePlayer(index);
                    }
                    else
                    {
                        S_NetworkSend.PlayerMsg(index, "You cannot afford this house!", 12);
                    }
                }
            }
            modTypes.TempPlayer[index].BuyHouseindex = 0;
            buffer.Dispose();
        }
 internal static void Socket_CrashReport(int index, string err)
 {
     if (!err.Contains("ForciblyClosed") && !err.Contains("BufferUnderflowException"))
     {
         Console.ForegroundColor = ConsoleColor.Red;
         Console.WriteLine("There was a network error -> Index[" + index + "]" + " - " + err);
         Console.ResetColor();
     }
     S_Players.LeftGame(index);
 }
Example #13
0
        internal static bool CanStartQuest(int index, int QuestNum)
        {
            bool CanStartQuest = false;
            bool flag          = QuestNum < 1 || QuestNum > 250;

            checked
            {
                if (!flag)
                {
                    bool flag2 = S_Quest.QuestInProgress(index, QuestNum);
                    if (!flag2)
                    {
                        bool flag3 = modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].PlayerQuest[QuestNum].Status == 0 || modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].PlayerQuest[QuestNum].Status == 3;
                        if (flag3)
                        {
                            int reqCount = S_Quest.Quest[QuestNum].ReqCount;
                            for (int i = 1; i <= reqCount; i++)
                            {
                                bool flag4 = S_Quest.Quest[QuestNum].Requirement[i] == 1;
                                if (flag4)
                                {
                                    bool flag5 = S_Quest.Quest[QuestNum].RequirementIndex[i] > 0 && S_Quest.Quest[QuestNum].RequirementIndex[i] <= 500;
                                    if (flag5)
                                    {
                                        bool flag6 = S_Players.HasItem(index, S_Quest.Quest[QuestNum].RequirementIndex[i]) == 0;
                                        if (flag6)
                                        {
                                            S_NetworkSend.PlayerMsg(index, "You need " + Types.Item[S_Quest.Quest[QuestNum].Requirement[2]].Name + " to take this quest!", 14);
                                            return(CanStartQuest);
                                        }
                                    }
                                }
                                bool flag7 = S_Quest.Quest[QuestNum].Requirement[i] == 2;
                                if (flag7)
                                {
                                    bool flag8 = S_Quest.Quest[QuestNum].RequirementIndex[i] > 0 && S_Quest.Quest[QuestNum].RequirementIndex[i] <= 250;
                                    if (flag8)
                                    {
                                        bool flag9 = modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].PlayerQuest[S_Quest.Quest[QuestNum].Requirement[2]].Status == 0 || modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].PlayerQuest[S_Quest.Quest[QuestNum].Requirement[2]].Status == 1;
                                        if (flag9)
                                        {
                                            S_NetworkSend.PlayerMsg(index, "You need to complete the " + S_Quest.Quest[S_Quest.Quest[QuestNum].Requirement[2]].Name.Trim() + " quest in order to take this quest!", 14);
                                            return(CanStartQuest);
                                        }
                                    }
                                }
                            }
                            CanStartQuest = true;
                        }
                    }
                }
                return(CanStartQuest);
            }
        }
Example #14
0
        internal static void ResetQuest(int index, int QuestNum)
        {
            if (S_Players.GetPlayerAccess(index) > 0)
            {
                modTypes.Player[index].Character[modTypes.TempPlayer[index].CurChar].PlayerQuest[QuestNum].Status       = (byte)Enums.QuestStatusType.NotStarted;
                modTypes.Player[index].Character[modTypes.TempPlayer[index].CurChar].PlayerQuest[QuestNum].ActualTask   = 1;
                modTypes.Player[index].Character[modTypes.TempPlayer[index].CurChar].PlayerQuest[QuestNum].CurrentCount = 0;

                SendPlayerQuests(index);
                S_NetworkSend.PlayerMsg(index, "Quest " + QuestNum + " reset!", (int)Enums.ColorType.BrightRed);
            }
        }
        public static void Packet_SaveAnimation(int index, ref byte[] data)
        {
            int        AnimNum;
            ByteStream buffer = new ByteStream(data);

            S_General.AddDebug("Recieved EMSG: SaveAnimation");

            AnimNum = buffer.ReadInt32();
            var loopTo = Information.UBound(Types.Animation[AnimNum].Frames);

            // Update the Animation
            for (var i = 0; i <= loopTo; i++)
            {
                Types.Animation[AnimNum].Frames[i] = buffer.ReadInt32();
            }
            var loopTo1 = Information.UBound(Types.Animation[AnimNum].LoopCount);

            for (int i = 0; i <= loopTo1; i++)
            {
                Types.Animation[AnimNum].LoopCount[i] = buffer.ReadInt32();
            }
            var loopTo2 = Information.UBound(Types.Animation[AnimNum].LoopTime);

            for (int i = 0; i <= loopTo2; i++)
            {
                Types.Animation[AnimNum].LoopTime[i] = buffer.ReadInt32();
            }

            Types.Animation[AnimNum].Name  = buffer.ReadString();
            Types.Animation[AnimNum].Sound = buffer.ReadString();

            if (Types.Animation[AnimNum].Name == null)
            {
                Types.Animation[AnimNum].Name = "";
            }
            if (Types.Animation[AnimNum].Sound == null)
            {
                Types.Animation[AnimNum].Sound = "";
            }
            var loopTo3 = Information.UBound(Types.Animation[AnimNum].Sprite);

            for (var i = 0; i <= loopTo3; i++)
            {
                Types.Animation[AnimNum].Sprite[i] = buffer.ReadInt32();
            }

            buffer.Dispose();

            // Save it
            SaveAnimation(AnimNum);
            SendUpdateAnimationToAll(AnimNum);
            modDatabase.Addlog(S_Players.GetPlayerLogin(index) + " saved Animation #" + AnimNum + ".", S_Constants.ADMIN_LOG);
        }
        public static void SendDataToMapBut(int index, int mapNum, ref byte[] data, int head)
        {
            var loopTo = S_GameLogic.GetPlayersOnline();

            for (int i = 1; i <= loopTo; i++)
            {
                if (IsPlaying(i) && S_Players.GetPlayerMap(i) == mapNum && i != index)
                {
                    Socket.SendDataTo(i, data, head);
                }
            }
        }
Example #17
0
        internal static void PlayerFireProjectile(int index, int IsSkill = 0)
        {
            int ProjectileSlot = 0;
            int ProjectileNum  = 0;
            int mapNum         = 0;
            int i = 0;

            mapNum = S_Players.GetPlayerMap(index);

            // Find a free projectile
            for (i = 1; i <= MAX_PROJECTILES; i++)
            {
                if (MapProjectiles[mapNum, i].ProjectileNum == 0)
                {
                    ProjectileSlot = i;
                    break;
                }
            }

            // Check for no projectile, if so just overwrite the first slot
            if (ProjectileSlot == 0)
            {
                ProjectileSlot = 1;
            }

            // Check for skill, if so then load data acordingly
            if (IsSkill > 0)
            {
                ProjectileNum = Types.Skill[IsSkill].Projectile;
            }
            else
            {
                ProjectileNum = Types.Item[S_Players.GetPlayerEquipment(index, Enums.EquipmentType.Weapon)].Projectile;
            }

            if (ProjectileNum == 0)
            {
                return;
            }

            {
                MapProjectiles[mapNum, ProjectileSlot].ProjectileNum = ProjectileNum;
                MapProjectiles[mapNum, ProjectileSlot].Owner         = index;
                MapProjectiles[mapNum, ProjectileSlot].OwnerType     = (byte)Enums.TargetType.Player;
                MapProjectiles[mapNum, ProjectileSlot].Dir           = (byte)S_Players.GetPlayerDir(index);
                MapProjectiles[mapNum, ProjectileSlot].X             = S_Players.GetPlayerX(index);
                MapProjectiles[mapNum, ProjectileSlot].Y             = S_Players.GetPlayerY(index);
                MapProjectiles[mapNum, ProjectileSlot].Timer         = S_General.GetTimeMs() + 60000;
            }

            SendProjectileToMap(mapNum, ProjectileSlot);
        }
Example #18
0
        public static void SendTimeTo(int index)
        {
            ByteStream buffer = new ByteStream(4);

            buffer.WriteInt32((int)Packets.ServerPackets.STime);
            buffer.WriteByte((byte)Time.Instance.TimeOfDay);
            S_NetworkConfig.Socket.SendDataTo(index, buffer.Data, buffer.Head);

            S_General.AddDebug("Sent SMSG: STime");

            S_General.AddDebug(" Player: " + S_Players.GetPlayerName(index) + " : " + " Time Of Day: " + Time.Instance.TimeOfDay);

            buffer.Dispose();
        }
Example #19
0
        public static void Packet_RequestEditQuest(int index, ref byte[] data)
        {
            // Prevent hacking
            if (S_Players.GetPlayerAccess(index) < (byte)Enums.AdminType.Developer)
            {
                return;
            }

            var Buffer = new ByteStream(4);

            Buffer.WriteInt32((byte)Packets.ServerPackets.SQuestEditor);
            S_NetworkConfig.Socket.SendDataTo(index, Buffer.Data, Buffer.Head);
            Buffer.Dispose();
        }
Example #20
0
        public static void HandleRequestEditProjectiles(int index, ref byte[] data)
        {
            ByteStream buffer = new ByteStream(4);

            // Prevent hacking
            if (S_Players.GetPlayerAccess(index) < (byte)Enums.AdminType.Developer)
            {
                return;
            }

            buffer.WriteInt32((byte)Packets.ServerPackets.SProjectileEditor);

            S_NetworkConfig.Socket.SendDataTo(index, buffer.Data, buffer.Head);
            buffer.Dispose();
        }
Example #21
0
        public static void SendGameClockTo(int index)
        {
            ByteStream buffer = new ByteStream(4);

            buffer.WriteInt32((int)Packets.ServerPackets.SClock);
            buffer.WriteInt32((int)Time.Instance.GameSpeed);
            buffer.WriteBytes(BitConverter.GetBytes(Time.Instance._Time.Ticks));
            S_NetworkConfig.Socket.SendDataTo(index, buffer.Data, buffer.Head);

            S_General.AddDebug("Sent SMSG: SClock");

            S_General.AddDebug(" Player: " + S_Players.GetPlayerName(index) + " : " + " GameSpeed: " + Time.Instance.GameSpeed + " Instance Time Ticks: " + Time.Instance._Time.Ticks);

            buffer.Dispose();
        }
Example #22
0
        // Token: 0x060001DD RID: 477 RVA: 0x0003A20C File Offset: 0x0003840C
        public static void Packet_AcceptInvite(int index, ref byte[] data)
        {
            ByteStream buffer   = new ByteStream(data);
            int        response = buffer.ReadInt32();

            buffer.Dispose();
            bool flag = response == 1;

            if (flag)
            {
                bool flag2 = modTypes.TempPlayer[index].Invitationindex > 0;
                if (flag2)
                {
                    bool flag3 = modTypes.TempPlayer[index].InvitationTimer > S_General.GetTimeMs();
                    if (flag3)
                    {
                        bool flag4 = S_NetworkConfig.IsPlaying(modTypes.TempPlayer[index].Invitationindex);
                        if (flag4)
                        {
                            modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].InHouse = modTypes.TempPlayer[index].Invitationindex;
                            modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].LastX   = S_Players.GetPlayerX(index);
                            modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].LastY   = S_Players.GetPlayerY(index);
                            modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].LastMap = S_Players.GetPlayerMap(index);
                            modTypes.TempPlayer[index].InvitationTimer = 0;
                            S_Players.PlayerWarp(index, modTypes.Player[modTypes.TempPlayer[index].Invitationindex].Character[(int)modTypes.TempPlayer[index].CurChar].Map, S_Housing.HouseConfig[modTypes.Player[modTypes.TempPlayer[index].Invitationindex].Character[(int)modTypes.TempPlayer[modTypes.TempPlayer[index].Invitationindex].CurChar].House.Houseindex].X, S_Housing.HouseConfig[modTypes.Player[modTypes.TempPlayer[index].Invitationindex].Character[(int)modTypes.TempPlayer[modTypes.TempPlayer[index].Invitationindex].CurChar].House.Houseindex].Y, true, true);
                        }
                        else
                        {
                            modTypes.TempPlayer[index].InvitationTimer = 0;
                            S_NetworkSend.PlayerMsg(index, "Cannot find player!", 12);
                        }
                    }
                    else
                    {
                        S_NetworkSend.PlayerMsg(index, "Your invitation has expired, have your friend re-invite you.", 14);
                    }
                }
            }
            else
            {
                bool flag5 = S_NetworkConfig.IsPlaying(modTypes.TempPlayer[index].Invitationindex);
                if (flag5)
                {
                    modTypes.TempPlayer[index].InvitationTimer = 0;
                    S_NetworkSend.PlayerMsg(modTypes.TempPlayer[index].Invitationindex, (S_Players.GetPlayerName(index).Trim()) + " rejected your invitation", 12);
                }
            }
        }
Example #23
0
        internal static void UpdateCraft(int index)
        {
            int i;

            // ok, we made the item, give and take the shit
            if (S_Players.GiveInvItem(index, Recipe[modTypes.TempPlayer[index].CraftRecipe].MakeItemNum, Recipe[modTypes.TempPlayer[index].CraftRecipe].MakeItemAmount, true))
            {
                for (i = 1; i <= Constants.MAX_INGREDIENT; i++)
                {
                    S_Players.TakeInvItem(index, Recipe[modTypes.TempPlayer[index].CraftRecipe].Ingredients[i].ItemNum, Recipe[modTypes.TempPlayer[index].CraftRecipe].Ingredients[i].Value);
                }
                S_NetworkSend.PlayerMsg(index, "You created " + Microsoft.VisualBasic.Strings.Trim(Types.Item[Recipe[modTypes.TempPlayer[index].CraftRecipe].MakeItemNum].Name) + " X " + Recipe[modTypes.TempPlayer[index].CraftRecipe].MakeItemAmount, (int)Enums.ColorType.BrightGreen);
            }
            ;
            //Todo Orion+#
        }
        public static void Packet_EditAnimation(int index, ref byte[] data)
        {
            S_General.AddDebug("Recieved EMSG: RequestEditAnimation");

            // Prevent hacking
            if (S_Players.GetPlayerAccess(index) < (int)Enums.AdminType.Developer)
            {
                return;
            }

            var Buffer = new ByteStream(4);

            Buffer.WriteInt32((int)Packets.ServerPackets.SAnimationEditor);
            S_NetworkConfig.Socket.SendDataTo(index, Buffer.Data, Buffer.Head);
            Buffer.Dispose();
        }
Example #25
0
        public static void PartyWarp(int index, int mapNum, int x, int y)
        {
            int i;

            if (Convert.ToBoolean(modTypes.TempPlayer[index].InParty))
            {
                if (Convert.ToBoolean(Party[modTypes.TempPlayer[index].InParty].Leader))
                {
                    var loopTo = Party[modTypes.TempPlayer[index].InParty].MemberCount;
                    for (i = 1; i <= loopTo; i++)
                    {
                        S_Players.PlayerWarp(Party[modTypes.TempPlayer[index].InParty].Member[i], mapNum, x, y);
                    }
                }
            }
        }
Example #26
0
        public static void Packet_QuestReset(int index, ref byte[] data)
        {
            int QuestNum;

            // Prevent hacking
            if (S_Players.GetPlayerAccess(index) < (byte)Enums.AdminType.Mapper)
            {
                return;
            }
            ByteStream buffer = new ByteStream(data);

            QuestNum = buffer.ReadInt32();

            ResetQuest(index, QuestNum);

            buffer.Dispose();
        }
        public static int GetTotalMapPlayers(int mapNum)
        {
            int i;
            int n;

            n = 0;
            var loopTo = GetPlayersOnline();

            for (i = 1; i <= loopTo; i++)
            {
                if (S_NetworkConfig.IsPlaying(i) && S_Players.GetPlayerMap(i) == mapNum)
                {
                    n = n + 1;
                }
            }

            return(n);
        }
Example #28
0
        internal static void LearnRecipe(int index, int RecipeNum, int InvNum)
        {
            if (CheckLearnedRecipe(index, RecipeNum))
            {
                S_NetworkSend.PlayerMsg(index, "You allready know this recipe!", (int)Enums.ColorType.BrightRed);
            }
            else
            {
                modTypes.Player[index].Character[modTypes.TempPlayer[index].CurChar].RecipeLearned[RecipeNum] = 1;

                S_NetworkSend.PlayerMsg(index, "You learned the " + Recipe[RecipeNum].Name + " recipe!", (int)Enums.ColorType.BrightGreen);

                S_Players.TakeInvItem(index, S_Players.GetPlayerInvItemNum(index, InvNum), 0);

                modDatabase.SavePlayer(index);
                S_NetworkSend.SendPlayerData(index);
            }
        }
        public static void Packet_SaveResource(int index, ref byte[] data)
        {
            int        resourcenum;
            ByteStream buffer = new ByteStream(data);

            S_General.AddDebug("Recieved EMSG: SaveResource");

            // Prevent hacking
            if (S_Players.GetPlayerAccess(index) < (int)Enums.AdminType.Developer)
            {
                return;
            }

            resourcenum = buffer.ReadInt32();

            // Prevent hacking
            if (resourcenum <= 0 || resourcenum > Constants.MAX_RESOURCES)
            {
                return;
            }

            Types.Resource[resourcenum].Animation      = buffer.ReadInt32();
            Types.Resource[resourcenum].EmptyMessage   = buffer.ReadString();
            Types.Resource[resourcenum].ExhaustedImage = buffer.ReadInt32();
            Types.Resource[resourcenum].Health         = buffer.ReadInt32();
            Types.Resource[resourcenum].ExpReward      = buffer.ReadInt32();
            Types.Resource[resourcenum].ItemReward     = buffer.ReadInt32();
            Types.Resource[resourcenum].Name           = buffer.ReadString();
            Types.Resource[resourcenum].ResourceImage  = buffer.ReadInt32();
            Types.Resource[resourcenum].ResourceType   = buffer.ReadInt32();
            Types.Resource[resourcenum].RespawnTime    = buffer.ReadInt32();
            Types.Resource[resourcenum].SuccessMessage = buffer.ReadString();
            Types.Resource[resourcenum].LvlRequired    = buffer.ReadInt32();
            Types.Resource[resourcenum].ToolRequired   = buffer.ReadInt32();
            Types.Resource[resourcenum].Walkthrough    = Convert.ToBoolean(buffer.ReadInt32());

            // Save it
            SendUpdateResourceToAll(resourcenum);
            SaveResource(resourcenum);

            modDatabase.Addlog(S_Players.GetPlayerLogin(index) + " saved Resource #" + resourcenum + ".", S_Constants.ADMIN_LOG);

            buffer.Dispose();
        }
Example #30
0
        public static void DestroyServer()
        {
            S_NetworkConfig.Socket.StopListening();

            Console.WriteLine("Saving players online...");
            modDatabase.SaveAllPlayersOnline();

            Console.WriteLine("Unloading players...");
            for (int i = 1; i <= Constants.MAX_PLAYERS; i++)
            {
                S_NetworkSend.SendLeftGame(i);
                S_Players.LeftGame(i);
            }

            S_NetworkConfig.DestroyNetwork();
            ClearGameData();

            Environment.Exit(0);
        }