private void button1_Click(object sender, EventArgs e)
        {
            //Obj.BroadCastingInfo("haha");


            var danmuRawData = "{\"info\":[[0,1,25,16777215,1450888087,\"1450888075\",0,\"082b9a9b\",0],\"O_O\",[245166,\"往事如风\",0,\"0\"],[],[20,5685],[]],\"cmd\":\"DANMU_MSG\",\"roomid\":42728}";

            BilibiliDM_PluginFramework.DanmakuModel danmaku = new BilibiliDM_PluginFramework.DanmakuModel(danmuRawData, 2);

            var danmu = new BilibiliDM_PluginFramework.ReceivedDanmakuArgs();

            danmu.Danmaku = danmaku;

            //弹幕
            //"{\"info\":[[0,1,25,16777215,1450888087,\"1450888075\",0,\"082b9a9b\",0],\"O_O\",[245166,\"往事如风\",0,\"0\"],[],[20,5685],[]],\"cmd\":\"DANMU_MSG\",\"roomid\":42728}"

            //礼物
            //"{\"cmd\":\"SEND_GIFT\",\"data\":{\"giftName\":\"辣条\",\"num\":1,\"uname\":\"往事如风\",\"rcost\":48706,\"uid\":245166,\"top_list\":[],\"timestamp\":1450888185,\"giftId\":1,\"giftType\":0,\"action\":\"喂食\",\"super\":0,\"price\":100,\"rnd\":\"1450888075\",\"newMedal\":0,\"medal\":-1},\"roomid\":42728}"
            var danmaArg = new BroadcastEventArgs(danmu);

            Obj.BroadCastingDanmakuArgsInfo(danmaArg);
        }
Example #2
0
        public void Order(BilibiliDM_PluginFramework.DanmakuModel model)
        {
            if (users.FirstOrDefault(x => x.Uid == model.UserID) != null)//如果是注册用户
            {
                User usr = users.FirstOrDefault(x => x.Uid == model.UserID);
                if (!usr.Update)
                {
                    usr.VipLv  = 1 + Convert.ToInt32(model.isVIP) + (Convert.ToInt32(model.isAdmin) + model.UserGuardLevel) * 2;
                    usr.Name   = model.UserName;
                    usr.Update = true;
                }
                if (model.MsgType == BilibiliDM_PluginFramework.MsgTypeEnum.GiftSend)
                {//礼物:充值内容
                    if (model.GiftName == "辣条")
                    {
                        usr.Money += 5 * model.GiftCount;
                        OutPut($"{usr.Name}:使用 {model.GiftName}*{model.GiftCount} 获得了 {5 * model.GiftCount} 金钱\n");
                    }
                    else
                    {
                        JObject staff  = JObject.Parse(model.RawData);
                        int     gifmon = staff["data"]["price"].ToObject <int>();
                        usr.Money += (int)(gifmon * 0.1 * model.GiftCount);//加钱
                        OutPut($"{usr.Name}:使用 {model.GiftName}*{model.GiftCount} 获得了 {(int)(gifmon * 0.1 * model.GiftCount)} 金钱\n");
                    }
                }
                else if (model.CommentText.Contains("#"))
                {//简单判断是否使用了指令
                    if (UserCanOrder(usr))
                    {
                        string[] order = model.CommentText.Trim().Split(' ');
                        switch (order[0])
                        {
                        case "#qd":
                        case "#签到":
                            if (UserOnline.Contains(model.UserID))    //如果已经签到
                            {
                                OutPut(model.UserName + ":您今天已经签到过了,请明天再来\n");
                            }
                            else
                            {
                                int gtmoney = rnd.Next(15, (int)(30 * usr.VipBuff() * Buffef()));
                                UserOnline.Add(model.UserID);
                                OutPut(model.UserName + ":签到成功 获得了" + gtmoney + "金钱 宠物体力已经恢复\n");
                                usr.Money += gtmoney;
                            }
                            break;

                        case "#dz":
                        case "#打坐":
                            int cisu = 1;    //打坐次数
                            if (order.Length == 2 && IsUnsignInt(order[1]))
                            {
                                cisu = Convert.ToInt32(order[1]);
                            }
                            if (usr.Action >= cisu)    //判断是否有足够的行动力
                            {
                                int gtexp;
                                gtexp       = (int)((rnd.Next(9, 32) * cisu + 1) * 0.1 * Buffef() * usr.VipBuff());
                                usr.Action -= cisu;
                                usr.Exp    += gtexp;
                                OutPut(model.UserName + ":打坐 消耗" + cisu + "点行动值 获得了" + gtexp + "点经验值\n");
                            }
                            else
                            {
                                OutPut(model.UserName + ":打坐 让你的宠物休息会吧!行动力不足!\n");
                            }
                            break;

                        case "#xx":
                        case "#信息":
                            OutPutAppend(model.UserName + ":金币", Color.Black, TextBox1.Font);
                            OutPutAppend(usr.Money.ToString(), Color.Blue, new Font(TextBox1.Font, FontStyle.Bold));
                            OutPutAppend(" Lv ", Color.Black, TextBox1.Font);
                            OutPutAppend(usr.Lv.ToString(), Color.Blue, new Font(TextBox1.Font, FontStyle.Bold));
                            OutPutAppend(" (" + intToRoman(Convert.ToInt32(Math.Sqrt(usr.Lv))) + ')' + " Exp ", Color.Black, TextBox1.Font);
                            OutPutAppend(usr.Exp.ToString(), Color.Blue, new Font(TextBox1.Font, FontStyle.Bold));
                            OutPutAppend("/" + usr.Lv * 2 + " HP/攻/防 ", Color.Black, TextBox1.Font);
                            OutPutAppend(usr.HPMax().ToString() + '/' + usr.Attact() + '/' + usr.Defense(), Color.Blue, new Font(TextBox1.Font, FontStyle.Bold));
                            OutPutAppend(" 行动值 ", Color.Black, TextBox1.Font);
                            OutPut(usr.Action.ToString() + '/' + usr.ActionMax() + '\n', Color.Blue, new Font(TextBox1.Font, FontStyle.Bold));
                            break;

                        case "#xj":
                        case "#献祭":
                            if (order.Length == 2 && IsUnsignInt(order[1]))
                            {
                                cisu = Convert.ToInt32(order[1]);
                                if (cisu < 25 || cisu > 250)
                                {
                                    OutPut(model.UserName + ":献祭最低25金币,最高250金币\n");
                                }
                                else if (usr.Money >= cisu)    //判断是否有足够的金钱
                                {
                                    usr.Money -= cisu;
                                    OutPut(model.UserName + ":献祭了" + cisu + "金币 " + RndPrice(usr, (int)(Math.Pow(cisu / 5, 1.1) * (1 + (usr.Lv + Buff) * 0.05) * usr.VipBuff())) + '\n');
                                }
                                else
                                {
                                    OutPut(model.UserName + ":没有足够多的金币进行献祭\n");
                                }
                            }
                            else
                            {
                                OutPut(model.UserName + ":错误的献祭金币数目\n");
                            }
                            break;

                        case "#sj":
                        case "#升级":
                            if (order.Length == 5 && IsUnsignInt(order[1]) && IsUnsignInt(order[2]) && IsUnsignInt(order[3]) && IsUnsignInt(order[4]))
                            {
                                if (usr.Lv * 2 <= usr.Exp)
                                {
                                    int    AT, K, HP, F;
                                    string Tmp = "";
                                    AT = Convert.ToInt32(order[1]);
                                    HP = Convert.ToInt32(order[2]);
                                    K  = Convert.ToInt32(order[3]);
                                    F  = Convert.ToInt32(order[4]);
                                    if (usr.Lv == AT + K + HP + F)
                                    {
                                        if (HP != 0)
                                        {
                                            Tmp         += HP * 2.5 + "HP上限, ";
                                            usr.HPMaxLv += HP;
                                        }
                                        if (K != 0)
                                        {
                                            Tmp          += (int)(K * 1.8) * 0.25 + "攻击力, ";
                                            usr.AttactLv += K;
                                        }
                                        if (F != 0)
                                        {
                                            Tmp           += (int)(F * 1.6) * 0.25 + "防御力, ";
                                            usr.DefenseLv += F;
                                        }
                                        if (AT != 0)
                                        {
                                            Tmp             += (AT * 3) * 0.25 + "行动值上限, ";
                                            usr.ActionMaxLv += AT;
                                        }
                                        usr.Lv    += 1;
                                        usr.Exp   -= usr.Lv * 2;
                                        usr.Action = (int)usr.ActionMax();
                                        OutPut(model.UserName + ":恭喜升级至 Lv" + usr.Lv + " 获得了 " + Tmp + "行动值已经恢复\n");
                                    }
                                    else
                                    {
                                        OutPut(model.UserName + ":升级失败 您拥有" + usr.Lv + "点分配,但您分配了" + (AT + K + HP + F) + "点\n");
                                    }
                                }
                                else
                                {
                                    OutPut(model.UserName + ":升级失败 经验值不足 " + usr.Exp + "/" + usr.Lv * 2 + "\n");
                                }
                            }
                            else
                            {
                                OutPut(model.UserName + ":升级失败 错误的升级参数\n");
                            }
                            break;

                        case "#sd":
                        case "#商店":
                            if (order.Length == 3 && IsUnsignInt(order[1]) && IsUnsignInt(order[2]))
                            {
                                cisu = Convert.ToInt32(order[2]);
                                switch (Convert.ToInt32(order[1]))
                                {
                                case 2:
                                    if (usr.Money >= cisu * 5)        //判断是否有足够的金钱 (*5是物品id2的物品价格)
                                    {
                                        usr.Money  -= cisu * 5;       //消耗金钱
                                        usr.Action += cisu * 4;       //商品内容 行动值*4
                                        OutPut(model.UserName + $":购买了'行动值*4'*{cisu} 花费{ cisu * 5 }金币 谢谢惠顾 \n");
                                    }
                                    else
                                    {
                                        OutPut(model.UserName + ":没有足够多的金币购买'行动值*4'\n");
                                    }
                                    break;

                                default:
                                    OutPut(model.UserName + ":商店 暂时没有这个商品");
                                    break;
                                }
                            }
                            else
                            {
                                OutPut(model.UserName + ":商店 错误的商店id和数量");
                            }
                            break;

                        case "#tz":
                        case "#挑战":
                            if (order.Length == 2)
                            {
                                if (usr.Action > usr.Lv)
                                {
                                    //usr.Action -= usr.Lv;
                                    OutPut(model.UserName + ":由于挑战模式还在测试中,将不会消耗经历值\n");
                                    User FitUr;
                                    if (IsUnsignInt(order[1]))
                                    {
                                        FitUr = users.FirstOrDefault(x => x.Uid == (Convert.ToInt32(order[1])));
                                    }
                                    else
                                    {
                                        FitUr = users.FirstOrDefault(x => x.Name == order[1]);
                                    }
                                    if (FitUr == null)
                                    {
                                        break;
                                    }
                                    OutPut(model.UserName + $":挑战{order[1]}战斗开始\n");
                                    Fight(usr, FitUr);
                                }
                                else
                                {
                                    OutPut(model.UserName + ":挑战 让你的宠物休息会吧!行动力不足!\n");
                                }
                            }
                            else
                            {
                                OutPut(model.UserName + ":挑战 错误的挑战参数");
                            }
                            break;
                        //case "#tx":
                        //case "#探险":
                        //    if (usr.Action > usr.Lv)
                        //    {
                        //        //usr.Action -= usr.Lv;
                        //        int dlv, dhp, dk, df;    //dluck
                        //        string dname;
                        //        dlv = 1 + rnd.Next((int)(usr.Lv * 0.8), (int)(usr.Lv * 1.3));
                        //        OutPut(model.UserName + ":由于探险模式还在测试中,将不会消耗经历值\n");
                        //        switch (rnd.Next(0))
                        //        {
                        //            default:
                        //                dname = "怪物";
                        //                dhp = rnd.Next((int)(dlv * 0.5) + 2, (int)(dlv) + 2);
                        //                dk = rnd.Next((int)(dlv * 0.2) + 2, (int)(dlv * 0.4) + 2);
                        //                df = rnd.Next((int)(dlv * 0.1) + 2, (int)(dlv * 0.2) + 2);
                        //                break;
                        //        }

                        //        //                                Case 1

                        //        //        dname = "怪物"

                        //        //        dhp = int((dlv * (rnd + 0.5)) ^ 1.8 + 5)

                        //        //        dk = int((dlv * (rnd * 0.4 + 0.5)) ^ 1.5 * 10) * 0.1

                        //        //        df = int((dlv * (rnd * 0.2 + 0.25)) ^ 1.4 * 10) * 0.1

                        //        //    Case 2

                        //        //        dname = "强盗"

                        //        //        dhp = int((dlv * (rnd * 0.5 + 0.5)) ^ 1.8 + 5)

                        //        //        dk = int((dlv * (rnd * 0.75 + 0.5)) ^ 1.5 * 10) * 0.1

                        //        //        df = int((dlv * (rnd * 0.25 + 0.25)) ^ 1.4 * 10) * 0.1

                        //        //    Case 3

                        //        //        dname = "森之妖精"

                        //        //        dhp = int((dlv * (rnd + 1.5)) ^ 1.8 + 5)

                        //        //        dk = int((dlv * (rnd * 0.4 + 0.5)) ^ 1.5 * 10) * 0.1

                        //        //        df = int((dlv * (rnd * 0.2 + 0.25)) ^ 1.4 * 10) * 0.1

                        //        //    Case 4

                        //        //        dname = "壬辰酱"

                        //        //        dhp = int((dlv * (rnd * 0.5 + 0.75)) ^ 1.8 + 5)

                        //        //        dk = int((dlv * (rnd * 0.5 + 0.75)) ^ 1.5 * 10) * 0.1

                        //        //        df = int((dlv * (rnd * 0.5 + 0.5)) ^ 1.4 * 10) * 0.1

                        //        //    Case 5

                        //        //        dlv = int(dlv * 1.2)

                        //        //        dname = "王司徒"

                        //        //        dhp = int((dlv * (rnd * 0.5 + 0.75)) ^ 1.8 + 5)

                        //        //        dk = int((dlv * (rnd * 0.5 + 0.6)) ^ 1.5 * 10) * 0.1

                        //        //        df = int((dlv * (rnd * 0.4 + 0.25)) ^ 1.4 * 10) * 0.1

                        //        //    Case 6

                        //        //        dlv = int(dlv * 1.2)

                        //        //        dname = "河蟹神兽"

                        //        //        dhp = int((dlv * (rnd * 0.5 + 0.5)) ^ 1.8 + 5)

                        //        //        dk = int((dlv * (rnd * 0.5 + 0.5)) ^ 1.5 * 10) * 0.1

                        //        //        df = int((dlv * (rnd * 0.5 + 0.5)) ^ 1.4 * 10) * 0.1

                        //        //    Case Else

                        //        //        '直接结算探险结束

                        //        //        BBS.Alert"探险完成," & RndPrice(int(1 + Interest(4) * 0.25) * 0.5),"?"

                        //        //        Exit Sub

                        //        //End Select
                        //        switch ((int)(Math.Sqrt(dlv) * 0.5))
                        //        {
                        //            case 0:
                        //                dname = "实习" + dname;
                        //                break;
                        //            case 1:
                        //                dname = "试用" + dname;
                        //                break;
                        //            case 2:
                        //                dname = "助理" + dname;
                        //                break;
                        //            case 3:
                        //                dname = "白银" + dname;
                        //                break;
                        //            case 4:
                        //                dname = "黄金" + dname;
                        //                break;
                        //            case 5:
                        //                dname = "白金" + dname;
                        //                break;
                        //            case 6:
                        //                dname = "钻石" + dname;
                        //                break;
                        //            default:
                        //                dname = intToRoman((int)(Math.Sqrt(dlv) * 0.5)) + "级" + dname;
                        //                break;
                        //        }
                        //        OutPut(model.UserName + $":探险 偶遇{dname} 战斗开始\n");
                        //        Fight(usr, new User(dname, dlv, dhp, df, dk));
                        //    }
                        //    else
                        //    {
                        //        OutPut(model.UserName + ":探险 让你的宠物休息会吧!行动力不足!\n");
                        //    }
                        //    break;
                        default:
                            OutPut(model.UserName + ":错误的指令参数,找不到指令'" + order[0] + "'\n");
                            break;
                        }
                    }
                    else if (usr.OrderMax == 101)
                    {
                        OutPut(model.UserName + ":今日指令次数已经用完\n", Color.Orange);
                    }
                }
            }
            else
            {//如果没有注册
                if (model.CommentText == "#注册")
                {
                    users.Add(new User(model.UserID));
                    OutPut(model.UserName + ":注册成功\n");
                }
            }
            //准备做个自动回复
        }