private IEnumerator <float> FishHandler(FishHandler fish) { var currentPath = 5f; while (true) { fish.MoveTo(GetPointInsideWater()); while (fish.IsMoving && currentPath > 0) { currentPath -= 0.1f; yield return(Timing.WaitForSeconds(0.1f)); } currentPath = 5f; } }
private void InitializeEventHandlers() { var reactionHandler = new ReactionRoleHandler(); KaguyaEvents.OnWarn += WarnHandler.OnWarn; KaguyaEvents.OnFish += async args => await FishHandler.OnFish(args); _client.UserJoined += GreetingService.Trigger; _client.UserJoined += AutoAssignedRoleHandler.Trigger; _client.JoinedGuild += NewOwnerNotificationService.Trigger; _client.ReactionAdded += OwnerGiveawayReactionService.ReactionAdded; _client.ReactionAdded += (cache, ch, e) => reactionHandler.ReactionChanged(cache, ch, e, true); _client.ReactionRemoved += (cache, ch, e) => reactionHandler.ReactionChanged(cache, ch, e, false); _lavaNode.OnTrackEnded += MusicService.OnTrackEnd; }
public static void ServerHandlerReceive(InPacket ip, Client gc) { var Header = ip.ReadShort(); // Read header ip.ReadInt(); // Original length + CRC ip.ReadInt(); #if DEBUG Log.Hex("Received {0}({1}) packet from {2}: ", ip.Array, ((ClientOpcode)Header).ToString(), Header, gc.Title); #endif switch ((ClientOpcode)Header) { // Game case ClientOpcode.COMMAND_REQ: GameHandler.Command_Req(ip, gc); break; case ClientOpcode.GAMELOG_REQ: GameHandler.Game_Log_Req(ip, gc); break; case ClientOpcode.QUICK_SLOT_REQ: GameHandler.Quick_Slot_Req(ip, gc); break; //2019-09-01 16:48 GMT+7 case ClientOpcode.CHARACTER_INFO_REQ: // OPCODE = 76 // Try Change test = E4 GameHandler.Character_Info_Req(ip, gc); break; case ClientOpcode.GAME_ISACTIVE: GameHandler.GameisActive_Ack(ip, gc); break; // Shop case ClientOpcode.NPC_SHOP_BUY_REQ: NpcShopHandler.Buy_Req(ip, gc); break; case ClientOpcode.NPC_SHOP_SELL_REQ: NpcShopHandler.Sell_Req(ip, gc); break; // Status case ClientOpcode.CHAR_DAMAGE_REQ: StatusHandler.Char_Damage_Req(ip, gc); break; case ClientOpcode.CHAR_DEAD_REQ: StatusHandler.Char_Dead_Req(ip, gc); break; case ClientOpcode.CHAR_STATUP_REQ: StatusHandler.Char_Statup_Req(ip, gc); break; case ClientOpcode.CHAR_FURY: StatusHandler.Char_Fury_Req(ip, gc); break; // Inventory case ClientOpcode.MOVE_ITEM_REQ: InventoryHandler.MoveItem_Req(ip, gc); break; case ClientOpcode.INVEN_SELECTSLOT_REQ: InventoryHandler.SelectSlot_Req(ip, gc); break; case ClientOpcode.USE_SPEND_REQ: InventoryHandler.UseSpend_Req(ip, gc); break; case ClientOpcode.INVEN_USESPEND_REQ: InventoryHandler.InvenUseSpendStart_Req(ip, gc); break; case ClientOpcode.INVEN_USESPEND_SHOUT_REQ: case ClientOpcode.INVEN_USESPEND_SHOUT_ALL_REQ: InventoryHandler.InvenUseSpendShout_Req(ip, gc); break; case ClientOpcode.PICKUP_ITEM: InventoryHandler.PickupItem(ip, gc); break; // Skill case ClientOpcode.SKILL_LEVELUP_REQ: SkillHandler.SkillLevelUp_Req(ip, gc); break; //case ClientOpcode.USE_SKILL_REQ: // SkillHandler.UseSkill_Req(ip, gc); // break; // Quest case ClientOpcode.QUEST_ALL_REQ: QuestHandler.Quest_All_Req(ip, gc); break; case ClientOpcode.QUEST_GIVEUP_REQ: QuestHandler.Quest_GiveUp_Req(ip, gc); break; case ClientOpcode.QUEST_DONE_REQ: QuestHandler.Quest_Done_Req(ip, gc); break; case ClientOpcode.QUEST_RETURN_REQ: QuestHandler.Quest_Return_Req(ip, gc); break; case ClientOpcode.QUEST_DONE2_REQ: QuestHandler.Quest_Done2_Req(ip, gc); break; case ClientOpcode.QUEST_UPDATE_REQ: QuestHandler.Quest_Update_Req(ip, gc); break; // Map case ClientOpcode.ENTER_WARP_ACK_REQ: MapHandler.WarpToMap_Req(ip, gc); break; case ClientOpcode.CAN_WARP_ACK_REQ: MapHandler.WarpToMapAuth_Req(ip, gc); break; // Monster case ClientOpcode.ATTACK_MONSTER_REQ: MonsterHandler.AttackMonster_Req(ip, gc); break; // Storage case ClientOpcode.MOVE_ITEM_STORAGE_REQ: StorageHandler.MoveItemToStorage(ip, gc); break; case ClientOpcode.MOVE_ITEM_TO_BAG_REQ: StorageHandler.MoveItemToBag(ip, gc); break; case ClientOpcode.SAVE_MONEY_REQ: StorageHandler.SaveStorageMoney(ip, gc); break; case ClientOpcode.GIVE_MONEY_REQ: StorageHandler.GiveStorageMoney(ip, gc); break; // Coupon case ClientOpcode.CASH_SN: CouponHandler.Use_Coupon_Req(ip, gc); break; // Action case ClientOpcode.P_WARP_C: ActionHandler.p_Warp_c(ip, gc); break; case ClientOpcode.P_MOVE_C: ActionHandler.p_Move_c(ip, gc); break; case ClientOpcode.P_JUMP_C: ActionHandler.p_Jump_c(ip, gc); break; case ClientOpcode.P_SPEED_C: ActionHandler.p_Speed_c(ip, gc); break; case ClientOpcode.P_ATTACK_C: ActionHandler.p_Attack_c(ip, gc); break; //case ClientOpcode.P_DAMAGE_C: // ActionHandler.p_Damage_c(ip, gc); // break; //case ClientOpcode.P_DEAD_C: // ActionHandler.p_Dead_c(ip, gc); // break; case ClientOpcode.P_MOVE_C_2: ActionHandler.p_Move_c_2(ip, gc); break; //case ClientOpcode.PET_MOVE_C: // ActionHandler.Pet_Move_C(ip, gc); // break; //case ClientOpcode.PET_ATTACK_C: // ActionHandler.Pet_Attack_C(ip, gc); // break; // Trade case ClientOpcode.TRADE_INVITE_REQ: TradeHandler.TradeInvite(ip, gc); break; case ClientOpcode.TRADE_INVITE_RESPONSE_REQ: TradeHandler.TradeInviteResponses(ip, gc); break; case ClientOpcode.TRADE_READY_REQ: TradeHandler.TradeReady(ip, gc); break; case ClientOpcode.TRADE_CONFIRM_REQ: TradeHandler.TradeConfirm(ip, gc); break; case ClientOpcode.TRADE_CANCEL_REQ: TradeHandler.TradeCancel(ip, gc); break; case ClientOpcode.TRADE_PUT_REQ: TradeHandler.TradePutItem(ip, gc); break; // Party case ClientOpcode.PARTY_INVITE_REQ: PartyHandler.PartyInvite(ip, gc); break; case ClientOpcode.PARTY_INVITE_RESPONSES_REQ: PartyHandler.PartyInviteResponses(ip, gc); break; case ClientOpcode.PARTY_LEAVE: PartyHandler.PartyLeave(ip, gc); break; // PvP case ClientOpcode.PVP_REQ: PvPHandler.PvPInvite(ip, gc); break; case ClientOpcode.PVP_ACK_REQ: PvPHandler.PvPInviteResponses(ip, gc); break; // PlayerShop case ClientOpcode.PSHOP_OPEN_REQ: PlayerShopHandler.OpenShop_Req(ip, gc); break; case ClientOpcode.PSHOP_SELLSTART_REQ: PlayerShopHandler.SellStart_Req(ip, gc); break; case ClientOpcode.PSHOP_SELLEND_REQ: PlayerShopHandler.SellEnd_Req(ip, gc); break; case ClientOpcode.PSHOP_INFO_REQ: PlayerShopHandler.ShopInfo_Req(ip, gc); break; case ClientOpcode.PSHOP_BUYACK_REQ: PlayerShopHandler.Buy_Req(ip, gc); break; // Fish case ClientOpcode.FISH_REQ: FishHandler.Fish_Req(ip, gc); break; // CashShop //case ClientOpcode.CASHSHOP_LIST_REQ: // CashShopHandler.CashShopList_Req(ip, gc); // break; case ClientOpcode.CASH_MGAMECASH_REQ: CashShopHandler.MgameCash_Req(ip, gc); break; case ClientOpcode.CASH_BUY_REQ: CashShopHandler.BuyCommodity_Req(ip, gc); break; case ClientOpcode.CASH_GIFT_REQ: CashShopHandler.Gifts_Req(ip, gc); break; case ClientOpcode.CASH_TO_INVEN_REQ: CashShopHandler.CommodityToInventory_Req(ip, gc); break; case ClientOpcode.ABILITY_RECOVER_REQ: CashShopHandler.AbilityRecover_Req(ip, gc); break; case ClientOpcode.CASH_CHECKCHARNAME_REQ: CashShopHandler.CheckName_Req(ip, gc); break; case ClientOpcode.DISMANTLE_REQ: CashShopHandler.Dismantle_Req(ip, gc); break; // Pet case ClientOpcode.PET_NAME_REQ: PetHandler.Pet_Name_Req(ip, gc); break; case ClientOpcode.SPIRIT_MOVE_REQ: SpiritHandler.SpiritMove(ip, gc); break; case ClientOpcode.EQUIPMENT_COMPOUND_REQ: SpiritHandler.EquipmentCompound(ip, gc); break; case ClientOpcode.EVENTITEM_ACK: TradeHandler.TradeEventItem(ip, gc); break; } }
public async Task Command() { User user = await DatabaseQueries.GetOrCreateUserAsync(Context.User.Id); Server server = await DatabaseQueries.GetOrCreateServerAsync(Context.Guild.Id); List <Fish> userFish = await DatabaseQueries.GetAllForUserAsync <Fish>(user.UserId); var countFishDicts = new List <Dictionary <FishType, int> >(); if (userFish.Count == 0) { await SendBasicErrorEmbedAsync($"You have never fished before. Try it out with " + $"`{server.CommandPrefix}fish`!"); return; } string ownedFishString = ""; int curFishValue = 0; int allTimeFishValue = 0; foreach (FishType type in Enum.GetValues(typeof(FishType))) { // Creates a new dictionary of how many unsold fish the user has of the given type. var dic = new Dictionary <FishType, int>(); List <Fish> fishMatchingType = await DatabaseQueries.GetUnsoldFishForUserAsync(user.UserId); fishMatchingType = fishMatchingType.Where(x => x.FishType == type).ToList(); // Filter the fish. if (userFish.Count == 0) { ownedFishString = $"You currently don't own any fish, go catch some!"; goto StatsEmbed; } // We don't care about BAIT_STOLEN because it's not actually a fish. if (fishMatchingType.Count != 0) { dic.Add(type, fishMatchingType.Count); countFishDicts.Add(dic); } } foreach (Fish fish in userFish) { allTimeFishValue += fish.Value; if (!fish.Sold) { curFishValue += Fish.GetPayoutForFish(fish, user.FishExp); } } foreach (Dictionary <FishType, int> dic in countFishDicts) { ownedFishString += $"Fish: `{dic.Keys.First().ToString()}` - Count: `{dic.Values.First():N0}` - " + $"Value: `{Fish.GetPayoutForFish(userFish.Where(x => x.FishType == dic.Keys.First() && !x.Sold).ToList(), user.FishExp):N0}` points\n"; } if (ownedFishString.IsNullOrEmpty()) { ownedFishString = "`No fish currently owned.`"; } StatsEmbed: string rarestFish = null; if (userFish.Count(x => !x.Sold && x.FishType != FishType.BAIT_STOLEN) != 0) { rarestFish = userFish .OrderBy(x => x.FishType) .First(x => x.Sold == false && x.FishType != FishType.BAIT_STOLEN) .FishType .ToString(); } var embed = new KaguyaEmbedBuilder { Title = $"Kaguya Fishing - Stats for {Context.User}", Fields = new List <EmbedFieldBuilder> { new EmbedFieldBuilder { Name = "Fish Level", Value = $"Fish Exp: `{user.FishExp:N0}` exp.\n" + $"Fish Level: `{(int) FishHandler.GetFishLevel(user.FishExp):N0}`\n" + $"{FishHandler.GetRewardString(user.FishExp, user, false)}" }, new EmbedFieldBuilder { Name = "Statistics", Value = $"Bait stolen: `{userFish.Count(x => x.FishType == FishType.BAIT_STOLEN):N0} times`\n" + $"All-time fish count: `{userFish.Count(x => x.FishType != FishType.BAIT_STOLEN):N0}`\n" + $"All-time fish value: `{allTimeFishValue:N0}` points\n" + $"Unsold fish value: `{curFishValue:N0}` points\n" + $"Total fish sold: `{userFish.Count(x => x.Sold && x.FishType != FishType.BAIT_STOLEN):N0}`\n" + $"Rarest owned fish: `{rarestFish ?? "No fish currently owned."}`\n" + $"Number of owned, unsold fish: `{userFish.Count(x => x.FishType != FishType.BAIT_STOLEN && !x.Sold):N0}`" }, new EmbedFieldBuilder { Name = "Currently Owned Fish", Value = ownedFishString } }, Footer = new EmbedFooterBuilder { Text = $"React with a checkmark if you would like all of your Fish IDs DM'd to you!" } }; // If they don't have any fish, we don't need to show them. if (rarestFish != null && rarestFish.ToLower().Contains("no fish")) { embed.Fields.RemoveAt(1); } await InlineReactionReplyAsync(new ReactionCallbackData("", embed.Build(), true, true, TimeSpan.FromSeconds(90)) .AddCallBack(GlobalProperties.CheckMarkEmoji(), async(c, r) => { using (var stream = new MemoryStream()) { var writer = new StreamWriter(stream); foreach (Fish fish in userFish.Where(x => x.FishType != FishType.BAIT_STOLEN && !x.Sold)) { await writer.WriteLineAsync($"Fish ID: {fish.FishId} - " + $"Fish Type: {fish.FishType.ToString()} - " + $"Value: {fish.Value}"); } await writer.FlushAsync(); stream.Seek(0, SeekOrigin.Begin); await c.User.SendFileAsync(stream, $"Fish for {c.User}.txt"); await c.Channel.SendBasicSuccessEmbedAsync($"{c.User.Mention} Alright, I've gone ahead " + $"and DM'd you all of your fish!"); } }) .AddCallBack(GlobalProperties.NoEntryEmoji(), async(c, r) => { await SendBasicErrorEmbedAsync("Okay, no action will be taken."); })); }
private static IHandlerMapper InitApi(ConfigurationProviderBase prov) { string root = "api/"; VerbRestrictingMatchRule verbs = new VerbRestrictingMatchRule(HttpVerbs.GET.ToString(), HttpVerbs.POST.ToString()); UrlBaseMatchRule url = new UrlBaseMatchRule(new string[] { root }); verbs.NextMatcher = url; ServerRouting router = new ServerRouting(); SessionIdHeader head = new SessionIdHeader(); head.Next = router; MatchRuleMapHandler mapper = new MatchRuleMapHandler(head, verbs); //add all other handlers Session s = new Session(); router.Map.Add(new UrlBaseMapHandler(s, root + s.BaseUrl)); Login l = new Login(); router.Map.Add(new UrlBaseMapHandler(l, root + l.BaseUrl)); UserAuthorizations au = new UserAuthorizations(); router.Map.Add(new UrlBaseMapHandler(au, root + au.BaseUrl)); UserAffiliationHandler uah = new UserAffiliationHandler(); router.Map.Add(new UrlBaseMapHandler(uah, root + uah.BaseUrl)); Request req = new Request(); router.Map.Add(new UrlBaseMapHandler(req, root + req.BaseUrl)); OrganizationHandler orgs = new OrganizationHandler(); router.Map.Add(new UrlBaseMapHandler(orgs, root + orgs.BaseUrl)); SitesHandler sites = new SitesHandler(); router.Map.Add(new UrlBaseMapHandler(sites, root + sites.BaseUrl)); ProjectsHandler projs = new ProjectsHandler(); router.Map.Add(new UrlBaseMapHandler(projs, root + projs.BaseUrl)); FieldActivitiesHandler fas = new FieldActivitiesHandler(); router.Map.Add(new UrlBaseMapHandler(fas, root + fas.BaseUrl)); FileTransferHandler fts = new FileTransferHandler(); router.Map.Add(new UrlBaseMapHandler(fts, root + fts.BaseUrl)); InstrumentsHandler inst = new InstrumentsHandler(); router.Map.Add(new UrlBaseMapHandler(inst, root + inst.BaseUrl)); PersonsHandler per = new PersonsHandler(); router.Map.Add(new UrlBaseMapHandler(per, root + per.BaseUrl)); TaxaHandler tax = new TaxaHandler(); router.Map.Add(new UrlBaseMapHandler(tax, root + tax.BaseUrl)); WQHandler wq = new WQHandler(); router.Map.Add(new UrlBaseMapHandler(wq, root + wq.BaseUrl)); FishHandler fish = new FishHandler(); router.Map.Add(new UrlBaseMapHandler(fish, root + fish.BaseUrl)); VegetationHandler veg = new VegetationHandler(); router.Map.Add(new UrlBaseMapHandler(veg, root + veg.BaseUrl)); EntityBundlesHandler ebh = new EntityBundlesHandler(); router.Map.Add(new UrlBaseMapHandler(ebh, root + ebh.BaseUrl)); DetsHandler det = new DetsHandler(); router.Map.Add(new UrlBaseMapHandler(det, root + det.BaseUrl)); return(mapper); }
//public void UpdateFish(float delta) //{ // //float deltatime = Time.deltaTime; // m_Handler.UpdateFishStatus(delta); // if (m_HP != null) // m_HP.UpdatePosition(); //} //public void FixedUpdateFish(float delta) //{ // m_Handler.FixedUpdateFishStatus(delta); //} #endregion #region private methods private void InitFishHandler() { m_Handler = new FishHandler(m_Info, transform); //Transform }