雨中冒险2 拾取装备的详细描述修改

最近沉迷雨中冒险2,然后发现别人玩的时候捡道具的显示为什么都那么详细呢(于是我就去找了一下相关的mod,后来发现原来只是简单的改语言文件就可以了。考虑到刚有一个大版本更新,多了不少道具原来的语言文件覆盖了可能会炸,于是就自己动手丰衣足食啦。

瞎瘠薄配图.jpg

语言文件的目录位于(steam为steam安装目录。)

{steam}\steamapps\common\Risk of Rain 2\Risk of Rain 2_Data\Language\zh-CN

下面的json文件就是了,以及有一个txt文件目测可以用来修改字体。原字体看着挺舒服的我就没有琢磨了。

打开那个json之后,正则替换执行下面的正则表达式即可。

注意空格什么的一定要对,替换完之后要注意观察跟原来有没有不同,比如逗号后面多空格也会导致载入失败好像。我就踩过这个坑。

1.被动道具的描述

  "ITEM_([A-Z]+)_PICKUP" : "(.+)",\n  "ITEM_([A-Z]+)_DESC" : "(.+)",

替换为

  "ITEM_$1_PICKUP" : "$4",\n  "ITEM_$3_DESC" : "$4",

2.主动装备的描述

  "EQUIPMENT_([A-Z]+)_PICKUP" : "(.+)",\n  "EQUIPMENT_([A-Z]+)_DESC" : "(.+)",

替换为

  "EQUIPMENT_$1_PICKUP" : "$4",\n  "EQUIPMENT_$3_DESC" : "$4",

用树莓派搭一个路由器

为什么要干这个

学校的校园网是真的憨憨,虽然这个学期支持多端同时在线了 而且是按时计费,不过发现我电脑手机同时上线之后我的网费扣得有点不能接受了。

本来打算是电脑开开热点算了,后来觉得我可以整一点更优秀的操作,后来买了一个路由器,但是路由器好像并没有那么好用,校园网是需要登录的,然而路由器该怎么登录呢。这个路由器特别憨憨,内存单位用M算的话就是个位数,处理器也是十分的,固件都刷不了。

然后淘宝了一波,想要找到一个可以刷固件的路由器,然后被价格所击退。后来google了一波发现了一个用树莓派搭建透明代理的教程,我寻思着:树莓派?好像听说过欸,然后百度一下,淘宝一下,哟,买!

正好可以玩一玩linux系统,听起来是挺优秀的,而且耗电发热什么的相对也没那么夸张,还能搭个内网网站给舍友发发福利,搭个本地游戏服务器什么的。

这篇文章主要记录一下我是怎么用树莓派来搭建一个路由器的。应该也适用其其他的有无线网卡的linux设备。

前置部分

环境:

  • 设备: Raspberry Pi 4 Model B 4GB RAM
  • 系统: 2019-07-10-raspbian-buster

参考文章:

首先安装 dnsmasq 和 hostapd

$ sudo apt install dnsmasq hostapd

其中dnsmasq的作用是作为一个小型的DHCP服务器,用来给接入热点的设备分配局域网ip地址,而hostapd则是把设备变成热点的程序。

$ sudo service dnsmasq stop
$ sudo service hostapd stop

安装完之后还没有弄配置文件什么的,先关掉。之后开始折腾配置文件

配置部分

1. dhcpcd.conf

sudo vi /etc/dhcpcd.conf

编辑/etc/dhcpcd.conf文件,在文件的末尾添加

...
interface wlan0
    static ip_address=192.168.0.1/24
    nohook wpa_supplicant

如果不用外置的网卡的话,会用树莓派本身自带的无线模块来充当热点发射的设备,所以是热点是在默认的wlan0上的。添加的配置的意思如下

  • interface wlan0 #指定一个具体的设备
  • static ip_address=192.168.0.1/24 #指定该设备的固定ipv4为192.168.0.1
  • nohook wpa_supplicant #移到这里查看

更多配置可以查阅 dhcpcd 配置

$ sudo service dhcpcd restart

配置完成之后重启dhcpcd服务。

2. dnsmasq.conf

前面说到我们会用dnsmasq来充当dhcp服务器,现在就来配置这个东西。由于安装这个的时候就会自带一个配置文件,位置在/etc/dnsmasq.conf,这个文件里面有很详细的解释,这里我们从头开始更改,但是为了方便以后有需要可以查看配置的详解,不删除原来的文件。

$ sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
$ sudo vi /etc/dnsmasq.conf

在新建的dnsmasq.conf配置文件中加入配置

interface=wlan0
dhcp-range=192.168.0.1,192.168.0.200,255.255.255.0,24h
添加的配置的意思如下
  • interface=wlan0 指定需要dhcp分配地址的设备
  • dhcp-range=192.168.0.1,192.168.0.200,255.255.255.0,24h
    • 192.168.0.1 #指定IP地址分配的开头
    • 192.168.0.200 #指定IP地址分配的结尾
    • 255.255.255.0 #指定子网掩码
    • 24h #指定DHCP租约持续时间

需要注意的是,dhcp-range必须包含之前/etc/dhcpcd.conf中配置的静态ip地址,不然不能分配ip地址,dhcp服务会报错。

需要查看详细的配置解释可以看原来的dnsmasq.conf文件,以及中文的话可以看这个dnsmasq详解&手册

3. hostapd.conf

sudo vi /etc/hostapd/hostapd.conf

你会打开一个新的文件,不用担心,hostapd安装之后不会生成默认的配置文件,只会生成一个空文件夹。在这个文件根据需要里面加入内容

interface=wlan0
driver=nl80211
ssid=name
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
配置的意义
  • interface=wlan0 #使用的网卡
  • driver=nl80211 #这项配置在wiki上并没有给出,但是在树莓派文档有,默认值会使hostapd,应该是可填可不填的。
  • ssid=name #开的wifi的名字
  • hw_mode=g #操作模式,g意味着2.4GHz频段,如果需要5G频段可以改成a,2.4G和5G区别可以看这里,若是用5G需要相应改动channel。
  • channel=7 #使用的信道,可以看 WLAN信道列表 – 维基百科
  • wmm_enabled=0 #跟wmm有关,这里似乎是关闭了wmm support,不是很清楚,具体可以看 WMM的百度百科和下面的详细配置文档
  • macaddr_acl=0 #基于MAC地址的身份验证 翻译是这样的(默认值似乎就是0,意味着允许所有设备除非其在黑名单上。
  • auth_algs=1 #IEEE 802.11规定了两种身份验证算法,这个设置可以用于配置仅允许其中之一还是同时开放,1意味着同时开放。
  • ignore_broadcast_ssid=0 #原文看这里,默认是0,意思应该是设置为0是可以被发现,否则需要设备指定ssid再尝试连接不能直接搜索到?
  • wpa=2 #使用WPA3
  • wpa_passphrase=password #wifi密码
  • wpa_key_mgmt=WPA-PSK #密钥管理算法
  • wpa_pairwise=TKIP #应该不重要吧,可以自己看配置文档,我有点不知道是干什么的,下面这项配置同样。
  • rsn_pairwise=CCMP

关于hostapd,可以查阅以下资料

到这里hostapd的配置文件也写完了。但是这个文件是我们自己创建的,我们需要告诉hostapd使用这个配置文件,打开/etc/default/hostapd

$ sudo vi /etc/default/hostapd

找到DAEMON_CONF的设定,取消注释,并且把值改成新建配置文件的路径。

DAEMON_CONF="/etc/hostapd/hostapd.conf"

4. /etc/sysctl.conf

出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。

要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward。这个参数指定了Linux系统当前对路由转发功能的支持情况。

$ sudo vi /etc/sysctl.conf

然后找到 net.ipv4.ip_forward 行,取消注释并把值改为1,保存退出。执行

$ sudo sysctl -p

应用更改。

5. iptables

添加数据包伪装。这里的作用可以看一看这里 https://blog.csdn.net/tycoon1988/article/details/40781291

这段代码是操作iptables,添加一条伪装的规则进入iptables

$ sudo iptables -t nat -A  POSTROUTING -o eth0 -j MASQUERADE

然后执行,这里的作用是把当前系统的iptables存入/etc/iptables.ipv4.nat文件中,方便之后从中直接取出快速配置。

$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

编辑/etc/rc.local并在exit 0上方添加它以在引导时安装这些规则。

iptables-restore < /etc/iptables.ipv4.nat

然后配置部分到此结束。

可以启动啦

直接启动hostapd可能会报错说被mask。这个时候需要unmask处理一下。

$ sudo systemctl unmask hostapd

然后启动两个服务并且enable使其开机自启,当然可以单纯的start而不enable

$ sudo systemctl start hostapd
$ sudo systemctl start dnsmasq

手机打开wifi看看是不是能搜到你的热点了,如果不行就

$ sudo service hostapd status
$ sudo service dnsmasq status

看看出了什么问题,很大概率是配置文件的锅。

这篇文章大概就到这里了,然后就可以玩玩别的操作了。内网穿透,搭内网资源站,透明代理什么的。嗯有空再写

整一个ipv6的网站

学校的校园网支持ipv6呢,并且在没有经过认证的时候也可以直接访问纯ipv6的网站,比如ipv6.baidu.com,那么就给自己搭一个纯ipv6的网站来在校园网里面访问吧。

要把网站弄成一个ipv6的站点,需要先给服务器分配一个ipv6的ip地址,有的vps可能支持创建实例的时候就enable-ipv6,但是我的不支持,没办法 只好手动配啦

这里在 Hurricane Electric 上面弄,注册一个账号并登陆之后,在左边的User Functions里找到第一个链接Create Regular Tunnel

然后IPv4 Endpoint输入服务器的ip地址,在Available Tunnel Servers下面选择一个距离服务器机房最近的节点,然后跳到最下面点Create Tunnel,这里可能需要等待一段时间。

等待一段时间后,页面会跳转到Tunnel Details,然后在下拉框选择Linux-net-tools,然后就会生成一段代码,在服务器终端逐条执行就可以了,执行完了之后在本地ping一下你的ipv6地址试试看是不是已经通啦。

虽然延迟有些高,因为是国外的服务器,不过本来目的就不是为了打游戏这些对延迟要求高的东西。

然后需要修改一下域名解析,我使用的是阿里云买的域名,需要添加一条AAAA类型的记录用来解析向一个ipv6的地址

到这里前置的准备就差不多好了,可以尝试一下ping域名了。可以ping通之后就可以进行服务器端的设置了,ssh连接服务器。

$ lnmp ssl add

如果没有网站则用上面的命令创建一个网站,如果想把现有的网站修改成一个纯ipv6的网站则直接编辑现有网站的配置文件即可。

server
    {
        listen [::]:80;
        server_name domain.com;

        ...
    }

server
    {
        listen [::]:443 ssl;
        server_name domain.com;
        
        ...
    }

关键就在于listen后面的参数,当格式为[::]:port时nginx就是只监听ipv6。如果想要既监听ipv4又监听ipv6的话则需要同时写入 listen [::]:port;listen port;,当然如果同时监听ipv4和ipv6的话就无法在不认证校园网的情况下访问了,除非客户端本地彻底禁用ipv4。 然后重载nginx。

$ sudo service nginx reload

到这里大概是配置完成了,可以断开ssh连接了。回到本地断开校园网的认证尝试访问一下这个网站试试 2333

Linux上的饥荒服务器搭建

无聊的暑假,想和小伙伴联机玩一下饥荒,本来也想不到要自己搭一个服务器的,奈何后来直接游戏里面启动服务器发现客机总是会卡的令人难以接受,然后我才意识我我和我的小伙伴一个是电信网一个是移动网。以及我们玩人类一败涂地也有着比较高的延迟,于是没有办法了,想好好打饥荒就必须得搭一个服务器了。正好有一个闲置的阿里云服务器,因为嫌备案麻烦一直丢在那里,正好物尽其用。

确实踩了不少的坑,因为饥荒的配置文件经过一次不小的更新,整个都变了,所以网上很多的教程其实都已经过期了,本文主要讲述一下我是怎么干的吧.

先给steamcmd专门创建一个用户,虽然我不知道有没有这个必要,但是感觉全都用一个root账号并不好,独立开来也挺好的。

$ useradd -m steam
$ cd /home/steam
$ passwd steam

之后给新用户输入一个密码,之后切换到新建的用户安装steamcmd,通过apt安装理论上会自动安装依赖吧,如果没有自动安装的话请参照steamcmd怎么使用的官方教程(英文)里的Downloading SteamCMD - Linux - Manually进行安装。

$ su steam
$ sudo apt install steamcmd
$ ln -s /usr/games/steamcmd steamcmd

上述最后一行我也不知道有没有必要惹,link一个快捷方式而已。之后直接启动steamcmd就可以了。

$ steamcmd
Redirecting stderr to '/home/steam/.steam/logs/stderr.txt'
[  0%] Checking for available updates...
[----] Verifying installation...
Steam Console Client (c) Valve Corporation
-- type 'quit' to exit --
Loading Steam API...OK.

Steam>

到了这里steam就已经成功启动了,然后我们要做的就是安装一下DST的专用服务器。首先登陆账号,跟着下面输入。

Steam>login username
... #第一次登录会要求输入密码,以及可能的话还会有验证码照着输入即可
Logging in user 'loop_void' to Steam Public ...
Logged in OK
Waiting for user info...OK

Steam>force_install_dir /home/steam/steamapps/DST

Steam>app_update 343050 validate
... #然后就是漫长的下载了,这里的343050是饥荒专业服务器的id

Steam>quit
$

到这里服务器应该就已经安装好了,到steam的用户目录下应该已经可以看到这几个文件夹了,这个时候这个目录下应该还是没有.klei文件夹的,我当时按照别的教程纠结了半天我的.klei呢

$ ll
...
drwxrwxr-x 9 steam steam  4096 Aug 24 16:27 .steam/
drwxrwxr-x 3 steam steam  4096 Jul 29 14:33 steamapps/
lrwxrwxrwx 1 steam steam    19 Jul 12 20:47 steamcmd -> /usr/games/steamcmd*
...

之后继续…

$ cd /steamapps/DST/bin
$ ./dontstarve_dedicated_server_nullrenderer

会开始刷屏,等到不动了直接 Ctrl+C 整个关掉,这个时候返回/home/steam可以看到已经多了一个.klei的目录了

$ cd ~
$ tree .klei/
.klei/
├── Agreements
│   └── DoNotStarveTogether
│       └── agreements.ini
└── DoNotStarveTogether
    └── Cluster_1
        └── ...

到这里就已经成功了大半了,之后只需要把位置文件,用户token什么的都弄好放进同一个文件夹再放到./klei/DoNotStarveTogether 这个文件夹下面。这一部分可以参考 饥荒联机独立服务器搭建教程(三):配置篇

其实这些配置并不需要自己一个一个的手动去配置,只需要本地游戏中创建世界,设定好你想要的mod和各种世界选项之后进入游戏,等世界创建完进入到选人界面之后直接退出,然后去~\Documents\Klei\DoNotStarveTogether\steam_id这个目录里面找到对应的Cluster_x;

  • ~对应的是系统用户的目录
  • steam_id是创建世界用的steam账号的id,如果只用一个账号登陆过的话应该只会有一个数字作为名字的目录
  • x就是创建世界的时候对应的第几个格子

把那个文件夹复制出来,按照 饥荒联机独立服务器搭建教程(三):配置篇 内的方法把你的klei用户token放到cluster_token.txt里面即可。

然后把整个文件夹都复制到服务器的 ./klei/DoNotStarveTogether内,服务器就配置就大致完成了。如果把原来生成的世界删掉打算在服务器上再次生成的话可以删除MasterCaves内的saves文件夹和一些别的东西,这个时候存档文件夹应该像这样。

$ tree Cluster_1
Cluster_1
├── Caves
│   ├── leveldataoverride.lua
│   ├── modoverrides.lua
│   └── server.ini
├── cluster.ini
├── cluster_token.txt
└── Master
    ├── leveldataoverride.lua
    ├── modoverrides.lua
    └── server.ini

如果打算把原来的存档也挪移到服务器上则不需要删除任何文件夹。 然后还需要把你的mod的id告诉服务器让服务器去下载这些mod,可以参照 饥荒联机独立服务器搭建教程(三):配置篇 中的 6、配置下载的 Mod 文件 , dedicated_server_mods_setup.lua/home/steam/steamapps/DST/mods目录内。

到这里配置都弄好了,只需要启动服务器就可以了。注意一定要切换到dontstarve_dedicated_server_nullrenderer所在的目录内去运行这个东西,不然会发生很快乐的事情。

$ ./dontstarve_dedicated_server_nullrenderer

即可,默认会运行Cluster_1这个存档中的Master世界,如果想要运行两个世界的话可以运行两次这个程序在后面分别添加参数-shard Master-shard Caves,当然,同样可以添加参数-cluster Cluster_x来指定加载哪一个存档。

你可能发现了当你运行了这个程序之后就不能再干别的事情了,Ctrl+C会直接中止服务器,这个时候可以考虑一下使用screen这个程序,如果服务器上没有screen则可以这么安装。

$ sudo apt install screen

然后该执行的代码就变成了

$ screen -S "DST Server Master" ./dontstarve_dedicated_server_nullrenderer -shard Master -cluster Cluster_1
$ screen -S "DST Server Caves" ./dontstarve_dedicated_server_nullrenderer -shard Caves -cluster Cluster_1

进入一个screen之后按Ctrl+A然后松开再按D即可返回,上面的两条命令中间就需要进行一次这个操作。执行完第二条命令之后也可以这么干把终端腾出来。

screen -ls 可以查看所有的在运行的screen,screen -r id可以回到某一个screen,如果只有一个运行中的screen则不需要输入id,id可以输入screen -ls看到正在运行的所有screen的id

大概就是这样惹,我又写多了,不删了不删了。

Hello World

服务器从墙里出来之后就纠结了好久要不要重新搭这个博客,然而拖延症还是犯了… 于是直到暑假结束快要开学了才正式开始搭(

其实中间也不是没有尝试过,之前也用过ubuntu配好了环境,然后在想自己写一个博客的时候正好是6月4号前后由于某些原因大量国外ip被墙,当时我服务器正好搭了一个ss的服务端….于是果断中枪了,考虑到并没有什么损失我就直接格了服务器关机一直放在那里没有动了

然后从墙里出来之后一想,我好像还没有用过 centOS,于是就整了一个centOS7。然后配lnmp配自闭了( 各种缺东西,包里面老是找不到想要的东西,以及踩了各种雷,踩完雷排雷头都疼了。然后就累了再也没有动过直到前几天

嗯…然后整了一个 lnmp一键安装包。没什么好说的 就是一个爽字,再也不用纠结php和nginx连不上什么的奇怪的坑了。之前弄了大半天的 Let’s Encrypt 证书也只需要lnmp ssl add就好惹。

然后配好了一切之后需要纠结的就只有blog了(当然我并不打算只用来放blog),纠结了很久是自己写还是用现成的框架,最后还是选择了WordPress,如果有一个用Laravel写的博客框架的话我大概会想用那个吧,WordPress的插件和主题虽然也很多,但是似乎自己改起代码来并不是那么的愉快呢。

有了,之后有空可以自己写一个Laravel为框架的博客嘛。然后还可以加自制主题,自制插件什么的。嗯嗯嗯似乎可行!

然后就先这样吧( 之后可以愉快的写文了,wordpress的编辑器还是很棒的嗯。

Hello World!