純美蘋果園

跑團活動區 => 網團活動區 => 赛博小猫面包房 => 主题作者是: Nithfirith 于 2023-11-24, 周五 08:06:46

主题: 【团报?】《冰风谷:冰霜女士的雾凇》实验性质的在线归档
作者: Nithfirith2023-11-24, 周五 08:06:46
话不多说,地址在这:冰风谷纪事 (https://chartreuse-condition-d2e.notion.site/79566dd111234aaaba6323022ec223ae?pvs=4)
名词部分还没有整理,但大致上的log和任务记录都已经归纳好了。
本站内容都是实时更新的——也就是说,可能一周后再看,角色信息和事件资料都会有变化!

因为网站的归档没考虑剧透问题,所以点开角色介绍、事件总结或者名词解释都有可能被剧透到log里靠后期的内容。
如果希望有沉浸式的连载体验,当然还是推荐看果园的log帖的。

原帖地址:
冰风谷:冰霜女士的雾凇 (https://www.goddessfantasy.net/bbs/index.php?topic=128567.0)
冰风邮件:特快专递 (https://www.goddessfantasy.net/bbs/index.php?topic=135754.0)

原帖的log由DM更新,我只是把Discord服务器里的内容搬运到Notion上面……和进行了一些小小的美术加工。

因为我们是在Discord上跑团和整理资料,所以把东西搬运到同样使用markdown的Notion上面非常方便且美观
我们的服务器里有很多东西,要是不整理出来就太可惜了!

又因为这个团(尤其是本篇的冰风谷)对比起我的其他团确实更有日式dnd的感觉,所以在绘制角色插画(就那几张头像……是我自己画的)的时候有意模仿了九井谅子老师的画风和迷宫饭里的种族特征。其中包括了人类看起来更成熟侏儒的耳朵很特别精灵男女都长一个样之类的……
为了更日式一点我给本来没刘海的角色加了刘海,让提夫林的角和bg3里一样和脸各长各的(4e和5e插图里的提夫林的角显然和脸长到了一块),把卓尔的黑色皮肤画成了浅蓝灰(但说实话,最新的崔斯特传奇可视词典里卓尔也全都被画成了浅灰色皮肤,个人层面上感觉有点遗憾)

其实大家有不那么日式的立绘,但因为不是我自己画的,所以涉及画作所有权问题,不太方便在个人网站上直接贴出来用
网站里其他图片基本都来自威世智官方、D&D Beyond和FR wiki
主题: Re: 【团报?】《冰风谷:冰霜女士的雾凇》实验性质的在线归档
作者: \星尘/2023-11-24, 周五 10:42:19
想问一下discord里跑dnd的话,用什么骰娘比较好用呢
主题: Re: 【团报?】《冰风谷:冰霜女士的雾凇》实验性质的在线归档
作者: Nithfirith2023-11-24, 周五 11:03:54
想问一下discord里跑dnd的话,用什么骰娘比较好用呢

一般都是用Avrae (https://avrae.io/),可支持D&D Beyond角色卡导入,也可以直接使用官方资源里的数据
主题: Re: 【团报?】《冰风谷:冰霜女士的雾凇》实验性质的在线归档
作者: \星尘/2023-11-25, 周六 20:11:49
想问一下discord里跑dnd的话,用什么骰娘比较好用呢

一般都是用Avrae (https://avrae.io/),可支持D&D Beyond角色卡导入,也可以直接使用官方资源里的数据
那么如何导出log呢?也就是果园的染色版本
主题: Re: 【团报?】《冰风谷:冰霜女士的雾凇》实验性质的在线归档
作者: Nithfirith2023-11-26, 周日 01:22:42
那么如何导出log呢?也就是果园的染色版本

我们DM以前问过这个问题,可以作为参考 (https://www.goddessfantasy.net/bbs/index.php?topic=124661)

简单来说要先使用DiscordChatExporter (https://github.com/Tyrrrz/DiscordChatExporter)导出频道聊天记录
如果导出txt格式的话可以使用关键词替换,导出csv或者json的话可以用程序来处理
上面的帖子里有对应的程序,不过我一开始没发现,所以自己也写了一个版本(用来处理json文件):
代码: [选择]
import json
import os
import re

def parse(a):
    a = re.sub('\*\*(.*?)\*\*', '[b]\\1[/b]', a)
    a = re.sub('\*(.*?)\*', '[i]\\1[/i]', a)
    a = re.sub('\|\|(.*?)\|\|', '[color=white]\\1[/color]', a)
    a = re.sub('`(.*?)`', '[tt]\\1[/tt]', a)
    a = re.sub('~(.*?)~', '[s]\\1[/s]', a)
    return a

def coloring(entry, c):
    name_list = ["旁白", "诺瓦莉安", "米克", "伊甘", "巴伦德"]
    color_list = ["black", "royalblue", "crimson", "seagreen", "#993399"]
    sentence_list = []
    for x in entry.split("\n"):
        sentence_list.append("[color=" + color_list[c] + "]<" + name_list[c] + "> " + parse(x) + "[/color]")
    return sentence_list

def auto_format(dict):
    outputs = []
    messages = dict["messages"]
    for utterance in messages:
        if int(utterance["author"]["id"]) == 替换为ID数字: #dm
            colored = coloring(utterance["content"], 0)
            for sentence in colored:
                outputs.append(sentence)
        if int(utterance["author"]["id"]) == 替换为ID数字: #nuowalian
            colored = coloring(utterance["content"], 1)
            for sentence in colored:
                outputs.append(sentence)
        if int(utterance["author"]["id"]) == 替换为ID数字: #mike
            colored = coloring(utterance["content"], 2)
            for sentence in colored:
                outputs.append(sentence)
        if int(utterance["author"]["id"]) == 替换为ID数字: #yigan
            colored = coloring(utterance["content"], 3)
            for sentence in colored:
                outputs.append(sentence)
        if int(utterance["author"]["id"]) == 替换为ID数字: #balunde
            colored = coloring(utterance["content"], 4)
            for sentence in colored:
                outputs.append(sentence)
    return outputs

path = "E:/ProcessedLog/log/"
for file in os.listdir(path):
    if file.endswith(".json"):
        f = open(path + file, 'r', encoding="utf8")
        raw = json.load(f)
        processed = auto_format(raw)
        with open(file[:-5] + ".txt", 'w', encoding="utf8") as out_f:
            for p in processed:
                out_f.write(p + "\n")
        f.close()

考虑到未来可能还有人看到这个帖子,顺便贴上Windows环境下的运行流程:
代码: [选择]
cd 你放log.py的路径
python log.py

python3 log.py(如果你以前安装过Python2)

上面的代码可以在Windows/macOS/Linux系统下无差别运行,但DiscordChatExporter只有支持Window的GUI
主题: Re: 【团报?】《冰风谷:冰霜女士的雾凇》实验性质的在线归档
作者: \星尘/2023-11-26, 周日 14:08:49
那么如何导出log呢?也就是果园的染色版本

我们DM以前问过这个问题,可以作为参考 (https://www.goddessfantasy.net/bbs/index.php?topic=124661)

简单来说要先使用DiscordChatExporter (https://github.com/Tyrrrz/DiscordChatExporter)导出频道聊天记录
如果导出txt格式的话可以使用关键词替换,导出csv或者json的话可以用程序来处理
上面的帖子里有对应的程序,不过我一开始没发现,所以自己也写了一个版本(用来处理json文件):
代码: [选择]
import json
import os
import re

def parse(a):
    a = re.sub('\*\*(.*?)\*\*', '[b]\\1[/b]', a)
    a = re.sub('\*(.*?)\*', '[i]\\1[/i]', a)
    a = re.sub('\|\|(.*?)\|\|', '[color=white]\\1[/color]', a)
    a = re.sub('`(.*?)`', '[tt]\\1[/tt]', a)
    a = re.sub('~(.*?)~', '[s]\\1[/s]', a)
    return a

def coloring(entry, c):
    name_list = ["旁白", "诺瓦莉安", "米克", "伊甘", "巴伦德"]
    color_list = ["black", "royalblue", "crimson", "seagreen", "#993399"]
    sentence_list = []
    for x in entry.split("\n"):
        sentence_list.append("[color=" + color_list[c] + "]<" + name_list[c] + "> " + parse(x) + "[/color]")
    return sentence_list

def auto_format(dict):
    outputs = []
    messages = dict["messages"]
    for utterance in messages:
        if int(utterance["author"]["id"]) == 替换为ID数字: #dm
            colored = coloring(utterance["content"], 0)
            for sentence in colored:
                outputs.append(sentence)
        if int(utterance["author"]["id"]) == 替换为ID数字: #nuowalian
            colored = coloring(utterance["content"], 1)
            for sentence in colored:
                outputs.append(sentence)
        if int(utterance["author"]["id"]) == 替换为ID数字: #mike
            colored = coloring(utterance["content"], 2)
            for sentence in colored:
                outputs.append(sentence)
        if int(utterance["author"]["id"]) == 替换为ID数字: #yigan
            colored = coloring(utterance["content"], 3)
            for sentence in colored:
                outputs.append(sentence)
        if int(utterance["author"]["id"]) == 替换为ID数字: #balunde
            colored = coloring(utterance["content"], 4)
            for sentence in colored:
                outputs.append(sentence)
    return outputs

path = "E:/ProcessedLog/log/"
for file in os.listdir(path):
    if file.endswith(".json"):
        f = open(path + file, 'r', encoding="utf8")
        raw = json.load(f)
        processed = auto_format(raw)
        with open(file[:-5] + ".txt", 'w', encoding="utf8") as out_f:
            for p in processed:
                out_f.write(p + "\n")
        f.close()

考虑到未来可能还有人看到这个帖子,顺便贴上Windows环境下的运行流程:
  • 直接使用安装包安装Python (https://www.python.org/downloads/)
  • 安装DiscordChatExporter (https://github.com/Tyrrrz/DiscordChatExporter)
    • 点击Download → GUI → Stable release
    • 下载DiscordChatExporter.zip并根据提示安装
  • 导出对应频道的json文件
  • 复制上方代码粘贴到记事本中,保存时选择UTF-8,保存后修改文件后缀为.py
    • 粘贴代码时记得修改对应的文件路径、颜色代码、角色名字和用户ID
    • 用户ID可以用记事本打开刚才导出的json文件查看,是一串很长的数字,可以根据对应用户名确认
  • 打开WindowsPowerShell(开始菜单里输入terminal)
  • 输入以下指令
代码: [选择]
cd 你放log.py的路径
python log.py

python3 log.py(如果你以前安装过Python2)

上面的代码可以在Windows/macOS/Linux系统下无差别运行,但DiscordChatExporter只有支持Window的GUI
非常感谢