Ejemplo n.º 1
0
    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;
        }
    }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
        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."); }));
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
    //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
    }