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); } }
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); }
internal static void StartCraft(int index, int RecipeNum, int Amount) { if (modTypes.TempPlayer[index].IsCrafting) { modTypes.TempPlayer[index].CraftRecipe = RecipeNum; modTypes.TempPlayer[index].CraftAmount = Amount; modTypes.TempPlayer[index].CraftTimer = S_General.GetTimeMs(); modTypes.TempPlayer[index].CraftTimeNeeded = Recipe[RecipeNum].CreateTime; modTypes.TempPlayer[index].CraftIt = 1; } }
// 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); } } }
public static void CheckResource(int index, int x, int y) { int Resource_num; byte ResourceType; int Resource_index; int rX; int rY; int Damage; if (modTypes.Map[S_Players.GetPlayerMap(index)].Tile[x, y].Type == (byte)Enums.TileType.Resource) { Resource_num = 0; Resource_index = modTypes.Map[S_Players.GetPlayerMap(index)].Tile[x, y].Data1; ResourceType = (byte)Types.Resource[Resource_index].ResourceType; var loopTo = ResourceCache[S_Players.GetPlayerMap(index)].ResourceCount; // Get the cache number for (var i = 0; i <= loopTo; i++) { if (ResourceCache[S_Players.GetPlayerMap(index)].ResourceData[i].X == x) { if (ResourceCache[S_Players.GetPlayerMap(index)].ResourceData[i].Y == y) { Resource_num = i; } } } if (Resource_num > 0) { if (S_Players.GetPlayerEquipment(index, Enums.EquipmentType.Weapon) > 0 || Types.Resource[Resource_index].ToolRequired == 0) { if (Types.Item[S_Players.GetPlayerEquipment(index, Enums.EquipmentType.Weapon)].Data3 == Types.Resource[Resource_index].ToolRequired) { // inv space? if (Types.Resource[Resource_index].ItemReward > 0) { if (S_Players.FindOpenInvSlot(index, Types.Resource[Resource_index].ItemReward) == 0) { S_NetworkSend.PlayerMsg(index, "You have no inventory space.", (int)Enums.ColorType.Yellow); return; } } // required lvl? if (Types.Resource[Resource_index].LvlRequired > GetPlayerGatherSkillLvl(index, ResourceType)) { S_NetworkSend.PlayerMsg(index, "Your level is too low!", (int)Enums.ColorType.Yellow); return; } // check if already cut down if (ResourceCache[S_Players.GetPlayerMap(index)].ResourceData[Resource_num].ResourceState == 0) { rX = ResourceCache[S_Players.GetPlayerMap(index)].ResourceData[Resource_num].X; rY = ResourceCache[S_Players.GetPlayerMap(index)].ResourceData[Resource_num].Y; if (Types.Resource[Resource_index].ToolRequired == 0) { Damage = 1 * GetPlayerGatherSkillLvl(index, ResourceType); } else { Damage = Types.Item[S_Players.GetPlayerEquipment(index, Enums.EquipmentType.Weapon)].Data2; } // check if damage is more than health if (Damage > 0) { // cut it down! if (ResourceCache[S_Players.GetPlayerMap(index)].ResourceData[Resource_num].CurHealth - Damage <= 0) { ResourceCache[S_Players.GetPlayerMap(index)].ResourceData[Resource_num].ResourceState = 1; // Cut ResourceCache[S_Players.GetPlayerMap(index)].ResourceData[Resource_num].ResourceTimer = S_General.GetTimeMs(); SendResourceCacheToMap(S_Players.GetPlayerMap(index), Resource_num); S_NetworkSend.SendActionMsg(S_Players.GetPlayerMap(index), Types.Resource[Resource_index].SuccessMessage.Trim(), (int)Enums.ColorType.BrightGreen, 1, (S_Players.GetPlayerX(index) * 32), (S_Players.GetPlayerY(index) * 32)); S_Players.GiveInvItem(index, Types.Resource[Resource_index].ItemReward, 1); S_Animations.SendAnimation(S_Players.GetPlayerMap(index), Types.Resource[Resource_index].Animation, rX, rY); SetPlayerGatherSkillExp(index, ResourceType, GetPlayerGatherSkillExp(index, ResourceType) + Types.Resource[Resource_index].ExpReward); // send msg S_NetworkSend.PlayerMsg(index, string.Format("Your {0} has earned {1} experience. ({2}/{3})", GetResourceSkillName((Enums.ResourceSkills)ResourceType), Types.Resource[Resource_index].ExpReward, GetPlayerGatherSkillExp(index, ResourceType), GetPlayerGatherSkillMaxExp(index, ResourceType)), (int)Enums.ColorType.BrightGreen); S_NetworkSend.SendPlayerData(index); CheckResourceLevelUp(index, ResourceType); } else { // just do the damage ResourceCache[S_Players.GetPlayerMap(index)].ResourceData[Resource_num].CurHealth = (byte)(ResourceCache[S_Players.GetPlayerMap(index)].ResourceData[Resource_num].CurHealth - Damage); S_NetworkSend.SendActionMsg(S_Players.GetPlayerMap(index), "-" + Damage, (int)Enums.ColorType.BrightRed, 1, (rX * 32), (rY * 32)); S_Animations.SendAnimation(S_Players.GetPlayerMap(index), Types.Resource[Resource_index].Animation, rX, rY); } S_Quest.CheckTasks(index, (int)Enums.QuestType.Gather, Resource_index); } else { // too weak S_NetworkSend.SendActionMsg(S_Players.GetPlayerMap(index), "Miss!", (int)Enums.ColorType.BrightRed, 1, (rX * 32), (rY * 32)); } } else { S_NetworkSend.SendActionMsg(S_Players.GetPlayerMap(index), Types.Resource[Resource_index].EmptyMessage.Trim(), (int)Enums.ColorType.BrightRed, 1, (S_Players.GetPlayerX(index) * 32), (S_Players.GetPlayerY(index) * 32)); } } else { S_NetworkSend.PlayerMsg(index, "You have the wrong type of tool equiped.", (int)Enums.ColorType.Yellow); } } else { S_NetworkSend.PlayerMsg(index, "You need a tool to gather this resource.", (int)Enums.ColorType.Yellow); } } } }
public static void Packet_InviteToHouse(int index, ref byte[] data) { ByteStream buffer = new ByteStream(data); string Name = (buffer.ReadString().Trim()); int invitee = S_GameLogic.FindPlayer(Name); buffer.Dispose(); if (invitee == 0) { S_NetworkSend.PlayerMsg(index, "Player not found.", 12); } else { if (index == invitee) { S_NetworkSend.PlayerMsg(index, "You cannot invite yourself to you own house!", 12); } else { if (modTypes.TempPlayer[invitee].Invitationindex > 0) { if (modTypes.TempPlayer[invitee].InvitationTimer > S_General.GetTimeMs()) { S_NetworkSend.PlayerMsg(index, (S_Players.GetPlayerName(invitee).Trim()) + " is currently busy!", 14); return; } } if (modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].House.Houseindex > 0) { if (modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].InHouse > 0) { if (modTypes.Player[index].Character[(int)modTypes.TempPlayer[index].CurChar].InHouse == index) { if (modTypes.Player[invitee].Character[(int)modTypes.TempPlayer[invitee].CurChar].InHouse > 0) { if (modTypes.Player[invitee].Character[(int)modTypes.TempPlayer[invitee].CurChar].InHouse == index) { S_NetworkSend.PlayerMsg(index, (S_Players.GetPlayerName(invitee).Trim()) + " is already in your house!", 14); } else { S_NetworkSend.PlayerMsg(index, (S_Players.GetPlayerName(invitee).Trim()) + " is already visiting someone elses house!", 14); } } else { buffer = new ByteStream(4); buffer.WriteInt32(91); buffer.WriteInt32(index); S_NetworkConfig.Socket.SendDataTo(invitee, buffer.Data, buffer.Head); modTypes.TempPlayer[invitee].Invitationindex = index; modTypes.TempPlayer[invitee].InvitationTimer = checked (S_General.GetTimeMs() + 15000); buffer.Dispose(); } } else { S_NetworkSend.PlayerMsg(index, "Only the house owner can invite other players into their house.", 12); } } else { S_NetworkSend.PlayerMsg(index, "You must be inside your house before you can invite someone to visit!", 12); } } else { S_NetworkSend.PlayerMsg(index, "You do not have a house to invite anyone to!", 12); } } } }