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); } }
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); }
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(); } } }
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); }
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); } } }
// 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(); } } }
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(); }
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); } }
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); }
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); } }
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); } } }
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); }
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(); }
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(); }
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(); }
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(); }
// 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); } } }
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(); }
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); } } } }
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); }
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(); }
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); }