diff --git a/BilibiliDM_PluginFramework/BilibiliDM_PluginFramework.XML b/BilibiliDM_PluginFramework/BilibiliDM_PluginFramework.XML
new file mode 100644
index 0000000..f90bc42
--- /dev/null
+++ b/BilibiliDM_PluginFramework/BilibiliDM_PluginFramework.XML
@@ -0,0 +1,282 @@
+
+
+
+ BilibiliDM_PluginFramework
+
+
+
+
+ 插件名稱
+
+
+
+
+ 插件作者
+
+
+
+
+ 插件作者聯繫方式
+
+
+
+
+ 插件版本號
+
+
+
+
+ 插件描述
+
+
+
+
+ 插件描述, 已過期, 請使用PluginDesc
+
+
+
+
+ 插件狀態
+
+
+
+
+ 當前連接中的房間
+
+
+
+
+ 啟用插件方法 請重寫此方法
+
+
+
+
+ 禁用插件方法 請重寫此方法
+
+
+
+
+ 管理插件方法 請重寫此方法
+
+
+
+
+ 此方法在所有插件加载完毕后调用
+
+
+
+
+ 反初始化方法, 在弹幕姬主程序退出时调用, 若有需要请重写,
+
+
+
+
+ 打日志
+
+
+
+
+
+ 弹幕姬是否是以Debug模式启动的
+
+
+
+
+ 打彈幕
+
+
+
+
+
+
+ 发送伪春菜脚本, 前提是用户有打开伪春菜并允许弹幕姬和伪春菜联动(默认允许)
+
+ Sakura Script脚本
+
+
+
+ 彈幕
+
+
+
+
+ 禮物
+
+
+
+
+ 禮物排名
+
+
+
+
+ 歡迎老爷
+
+
+
+
+ 直播開始
+
+
+
+
+ 直播結束
+
+
+
+
+ 其他
+
+
+
+
+ 欢迎船员
+
+
+
+
+ 购买船票(上船)
+
+
+
+
+ 消息類型
+
+
+
+
+ 彈幕內容
+ 此项有值的消息类型:
+
+
+
+
+
+
+ 彈幕用戶
+
+
+
+
+ 消息触发者用户名
+ 此项有值的消息类型:
+
+
+
+
+
+
+
+
+
+
+ 消息触发者用户ID
+ 此项有值的消息类型:
+
+
+
+
+
+
+
+
+
+
+ 用户舰队等级
+ 0 为非船员 1 为总督 2 为提督 3 为舰长
+ 此项有值的消息类型:
+
+
+
+
+
+
+
+
+ 禮物用戶
+
+
+
+
+ 禮物名稱
+
+
+
+
+ 禮物數量
+
+
+
+
+ 礼物数量
+ 此项有值的消息类型:
+
+
+
+ 此字段也用于标识上船 的数量(月数)
+
+
+
+
+ 当前房间的礼物积分(Room Cost)
+ 因以前出现过不传递rcost的礼物,并且用处不大,所以弃用
+
+
+
+
+ 禮物排行
+ 此项有值的消息类型:
+
+
+
+
+
+
+ 该用户是否为房管(包括主播)
+ 此项有值的消息类型:
+
+
+
+
+
+
+
+ 是否VIP用戶(老爺)
+ 此项有值的消息类型:
+
+
+
+
+
+
+
+ , 事件对应的房间号
+
+
+
+
+ 原始数据, 高级开发用
+
+
+
+
+ 内部用, JSON数据版本号 通常应该是2
+
+
+
+
+ 用戶名
+
+
+
+
+ 花銷
+
+
+
+
+ UID
+
+
+
+
diff --git a/BilibiliDM_PluginFramework/BilibiliDM_PluginFramework.dll b/BilibiliDM_PluginFramework/BilibiliDM_PluginFramework.dll
new file mode 100644
index 0000000..af1a1e3
Binary files /dev/null and b/BilibiliDM_PluginFramework/BilibiliDM_PluginFramework.dll differ
diff --git a/GoldSilver/GoldSilver.cs b/GoldSilver/GoldSilver.cs
new file mode 100644
index 0000000..c784855
--- /dev/null
+++ b/GoldSilver/GoldSilver.cs
@@ -0,0 +1,50 @@
+using System;
+using BilibiliDM_PluginFramework;
+
+namespace GoldSilver
+{
+ public class GoldSilver : DMPlugin
+ {
+ public GoldSilver()
+ {
+ ReceivedDanmaku += B_ReceivedDanmaku;
+ PluginAuth = "lzblzr";
+ PluginName = "金银礼物";
+ PluginDesc = "在礼物后添加金银标识";
+ PluginCont = "lzggzr@gmail.com";
+ PluginVer = "v1.0.0";
+ Start();
+ }
+ private void B_ReceivedDanmaku(object sender, ReceivedDanmakuArgs e)
+ {
+ if (e.Danmaku.MsgType == MsgTypeEnum.GiftSend)
+ {
+ string rawData = e.Danmaku.RawData;
+ bool isGold = rawData.Contains("\"silver\":\"");
+ bool isSilver = rawData.Contains("\"gold\":\"");
+ e.Danmaku.GiftName += string.Format("({0})", isGold ? "金" : isSilver ? "银" : "包");
+ }
+ }
+ public override void Admin()
+ {
+ base.Admin();
+ Console.WriteLine("不要点啦, 没用的");
+ Log("不要点啦, 没用的");
+ AddDM("不要点啦, 没用的", true);
+ }
+ public override void Start()
+ {
+ base.Start();
+ Console.WriteLine("插件已启用");
+ Log("插件已启用");
+ AddDM("插件已启用", true);
+ }
+ public override void Stop()
+ {
+ base.Stop();
+ Console.WriteLine("插件已禁用");
+ Log("插件已禁用");
+ AddDM("插件已禁用", true);
+ }
+ }
+}
diff --git a/GoldSilver/GoldSilver.csproj b/GoldSilver/GoldSilver.csproj
new file mode 100644
index 0000000..f4a2c1c
--- /dev/null
+++ b/GoldSilver/GoldSilver.csproj
@@ -0,0 +1,44 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {1B1AAED6-3040-4E49-AAF5-AE144F7A277B}
+ Library
+ Properties
+ GoldSilver
+ GoldSilver
+ v4.0
+ 512
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\BilibiliDM_PluginFramework\BilibiliDM_PluginFramework.dll
+ False
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GoldSilver/Properties/AssemblyInfo.cs b/GoldSilver/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..585e647
--- /dev/null
+++ b/GoldSilver/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("GoldSilver")]
+[assembly: AssemblyDescription("在礼物后添加金银标识")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("1b1aaed6-3040-4e49-aaf5-ae144f7a277b")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/ShowUID/Properties/AssemblyInfo.cs b/ShowUID/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..c9e5c5b
--- /dev/null
+++ b/ShowUID/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("ShowUID")]
+[assembly: AssemblyDescription("在用户名后添加UID")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("16963e13-5741-4b7e-8295-a4706a0d9542")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/ShowUID/ShowUID.cs b/ShowUID/ShowUID.cs
new file mode 100644
index 0000000..088a7fb
--- /dev/null
+++ b/ShowUID/ShowUID.cs
@@ -0,0 +1,45 @@
+using System;
+using BilibiliDM_PluginFramework;
+
+namespace ShowUID
+{
+ public class ShowUID : DMPlugin
+ {
+ public ShowUID()
+ {
+ ReceivedDanmaku += B_ReceivedDanmaku;
+ PluginAuth = "lzblzr";
+ PluginName = "显示UID";
+ PluginDesc = "在用户名后添加UID";
+ PluginCont = "lzggzr@gmail.com";
+ PluginVer = "v1.0.1";
+ Start();
+ }
+ private void B_ReceivedDanmaku(object sender, ReceivedDanmakuArgs e)
+ {
+ if (e.Danmaku.UserID != 0)
+ e.Danmaku.UserName += string.Format(" ({0})", e.Danmaku.UserID);
+ }
+ public override void Admin()
+ {
+ base.Admin();
+ Console.WriteLine("不要点啦, 没用的");
+ Log("不要点啦, 没用的");
+ AddDM("不要点啦, 没用的", true);
+ }
+ public override void Start()
+ {
+ base.Start();
+ Console.WriteLine("插件已启用");
+ Log("插件已启用");
+ AddDM("插件已启用", true);
+ }
+ public override void Stop()
+ {
+ base.Stop();
+ Console.WriteLine("插件已禁用");
+ Log("插件已禁用");
+ AddDM("插件已禁用", true);
+ }
+ }
+}
diff --git a/ShowUID/ShowUID.csproj b/ShowUID/ShowUID.csproj
new file mode 100644
index 0000000..449370c
--- /dev/null
+++ b/ShowUID/ShowUID.csproj
@@ -0,0 +1,44 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {16963E13-5741-4B7E-8295-A4706A0D9542}
+ Library
+ Properties
+ ShowUID
+ ShowUID
+ v4.0
+ 512
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\BilibiliDM_PluginFramework\BilibiliDM_PluginFramework.dll
+ False
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bililive_dm_plugins.sln b/bililive_dm_plugins.sln
new file mode 100644
index 0000000..3274e1c
--- /dev/null
+++ b/bililive_dm_plugins.sln
@@ -0,0 +1,28 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26430.13
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShowUID", "ShowUID\ShowUID.csproj", "{16963E13-5741-4B7E-8295-A4706A0D9542}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GoldSilver", "GoldSilver\GoldSilver.csproj", "{1B1AAED6-3040-4E49-AAF5-AE144F7A277B}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {16963E13-5741-4B7E-8295-A4706A0D9542}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {16963E13-5741-4B7E-8295-A4706A0D9542}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {16963E13-5741-4B7E-8295-A4706A0D9542}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {16963E13-5741-4B7E-8295-A4706A0D9542}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1B1AAED6-3040-4E49-AAF5-AE144F7A277B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1B1AAED6-3040-4E49-AAF5-AE144F7A277B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1B1AAED6-3040-4E49-AAF5-AE144F7A277B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1B1AAED6-3040-4E49-AAF5-AE144F7A277B}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal