book.png

作者:

琼瑶(1938年4月20日—2024年12月4日),本名陈喆,笔名琼瑶,籍贯湖南衡阳,生于四川成都,台湾言情小说作家、编剧、影视制作人、华语歌曲作词人。

2024年12月4日,琼瑶在位于新北市淡水区的家中烧炭轻生离世。琼瑶的儿子表示,母亲留有遗书,交代秘书中午回家看看,入屋后才发现母亲自杀,随后立即通知119,但救护人员抵达时,发现琼瑶已无呼吸心跳,明显死亡。琼瑶的秘书当日下午3时许在Facebook贴出琼瑶身前预录视频与遗作《当雪花飘落》。

各位亲爱的朋友知音们:

不要哭,不要伤心,不要为我难过。我已经“翩然”的去了!

“翩然”是我最喜欢的两个字,代表的是“自主、自在、自由”的“飞翔”,优美而“轻盈”,我摆脱了逐渐让我痛苦的躯壳,“翩然”的化为雪花飞去了!

这是我的愿望,“死亡”是每个人必经之路,也是最后一件“大事”。我不想听天由命,不想慢慢枯萎凋零,我想为这最后的大事“作主”。

上苍对于生命的过程,设计得不是很好。当人老了,都要经过一段很痛苦的“衰弱、退化、生病、出入医院、治疗、不治”的时间,这段时间,可长可短,对于必将老死的人,是多大的折磨!万一不幸,还可能成为依赖“插管维生”的“卧床老人”!我曾经目睹那种惨状。我不要那样的“死亡”。

我是“火花”,我己尽力燃烧过。如今,当火焰将熄之前,我选择这种方式,翩然归去。我要说的话,都录在我《当雪花飘落》的视频里了。希望我的朋友们,多看几次视频,了解我想表达的一切。

朋友们,不要为我的“死亡”悲哀,为我笑吧!生命的美好,就在于“能爱,能恨、能笑,能哭、能歌、能说、能跑、能动、能红尘作伴、活得潇潇洒洒,能嫉恶如仇,活得轰轰烈烈……”这些,我都在有生之年,拥有过了!我“活过”了,不曾辜负此生!

我最放不下的,就是家人和你们。“爱”紧紧的系着我心,你们都是我最最不舍的。为了让我的灵魂(不知道人类有没有灵魂),也能“翩然”,大家为我笑、为我高歌、为我飞舞吧!我在天之灵,会与你们“共舞”的!

别了!我至爱的你们!庆幸此生,曾经和你们相遇相知。

注意,我“死亡”的方式,是在我生命的终站实行的!年轻的你们,千万不要轻易放弃生命,一时的挫折打击,可能是美好生命中的“磨练”,希望你们经得起磨练,像我一样,活到八十六、七岁,体力不支时,再来选择如何面对死亡。但愿那时,人类已经找到很人道的方式,来帮助“老人”们,快乐的“归去”!

亲爱的你们,要勇敢,要活出强大的“自我”,不要辜负来世间一趟!这世间,虽然不是十全十美,也有各种意外的喜怒哀乐!别错过那些属于你的精彩!

千言万语说不尽,最后,祝福大家健康快乐,活得潇潇洒洒!

runuo.png

sudo apt install dirmngr ca-certificates gnupg
sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/mono-official-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/debian stable-buster main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update

sudo apt install mono-devel mono-complete mono-dbg referenceassemblies-pcl ca-certificates-mono mono-xsp4

作者: reistlin
来源: http://www.reistlin.com/blog/470
更新时间: 2024.06
版权声明: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要

runuo.png

一,下载

RunUO 2.0 下载:
[https://github.com/runuo/runuo/tree/releases/2.0]

Neruns Distro 5.2.1a 下载:
[https://github.com/nerun/runuo-nerun-distro/releases/tag/Old-521a]

ClassicUO 下载:
[https://github.com/ClassicUO/ClassicUO]

Ultima Online Mondains Legacy 蒙丹遗产:
[Client Patch 5.0.9.1]

二,安装

1)解压缩 RunUO-2.0 和 NerunsDistro.v5.2.1a

2)将 NerunsDistro.v5.2.1a 文件夹下的 DataScripts 两个文件夹 复制(覆盖) 到 RunUO-2.0

3)复制 zlib32.dllzlib64.dll 文件到 RunUO-2.0

4)进入 RunUO-2.0,新建 Build.bat 文件:

@echo off

chcp 65001
echo.

echo ================ 删除 RunUO.exe ================
echo.
del /s /q /s "%~dp0RunUO.exe"
echo.

timeout /t 1

echo.
echo ================ 编译 RunUO.exe ================
echo.
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc /optimize /unsafe /t:exe /out:RunUO.exe /win32icon:Server\runuo.ico /d:NEWTIMERS /d:NEWPARENT /recurse:Server\*.cs
echo 编译完成...

timeout /t 5

5)运行 Build.bat 文件。完成 .NET 编译,生成 RunUO.exe 文件。

runuo_build.png

三,配置

1)设置 UO 服务器名称
编辑文件:Scripts\Misc\ServerList.cs

public static readonly string ServerName = "RunUO TC";
为:
public static readonly string ServerName = "REISTLIN";

2)设置 UO 服务器客户端(蒙丹遗产 UOML v5.0.9.1)路径
编辑文件:Scripts\Misc\DataPath.cs

private static string CustomPath = null;
为:
private static string CustomPath = @"D:\Games\Ultima Online ML (5.0.9.1)";

3)设置 UO 服务器支持客户端版本(Client Patch < v6.0.0.0
编辑文件:Scripts\Misc\MapDefinitions.cs

RegisterMap( 1, 1, 1, 7168, 4096, 0, "Trammel",		MapRules.TrammelRules );
为:
RegisterMap( 1, 1, 0, 7168, 4096, 0, "Trammel",		MapRules.TrammelRules );
以及:
TileMatrixPatch.Enabled = false;
为:
TileMatrixPatch.Enabled = true;

四,启动

1)运行 RunUO.exe

runuo_init.png

2)设置 ClassicUO Launcher 客户端登录

runuo_login.png

3)登录游戏,点击界面或者输入命令:

[PremiumSpawner

启动 Premium Spawner Engine 世界初始化界面,根据需要自动生成各个地图物品、NPC。

runuo_admin.png

4)RunUO GM 命令:[https://runuo.github.io/runuo/docs/commands.html]

五,UO 中文配置

1)UO 客户端配置文件:Uo.cfg

UserLanguageCodeString=CHT

2)ClassicUO Launcher 配置文件:ClassicUO Launcher\ClassicUO\settings.json

"lang": "CHT",

uo.png

2012年

2011年

2010年

2009年

2008年

2007年

2006年

2005年

2004年

2003年

2002年

2001年

2000年

1999年

1998年

1997年

采编: reistlin
来源: Internet 互联网
更新时间: 2024.04
版权声明: <<了解这个世界>>系列文章.转载请保留作者信息和原文完整.

knowledge.png

mandelbrot_sequence.gif

曼德博集合(Mandelbrot Set,或译为曼德布洛特复数集合)是一种在复平面上组成分形的点的集合,以数学家本华·曼德博的名字命名。曼德博集合与朱利亚集合有些相似的地方,例如使用相同的复二次多项式来进行迭代。

mandel_zoom_00_mandelbrot_set.jpg

- 阅读剩余部分 -

作者: reistlin
来源: http://www.reistlin.com/blog/444
更新时间: 2024.04
版权声明: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要

uo.png

UO Outlands:[https://uooutlands.com]
UO Razor Assistant:[https://www.razorce.com]

一,关闭 UO 客户端,编辑 default.xml 文件

游戏目录\ClassicUO\Data\Plugins\Assistant\Profiles\default.xml

二,替换 XML 标签 overheadmessages 之间的内容

<overheadmessages>
	<overheadmessage searchtext="The world will save in 15 seconds" message="* 服务器准备保存 *" hue="53" />
	<overheadmessage searchtext="The world is saving, please wait" message="* 服务器正在保存 *" hue="38" />
	<overheadmessage searchtext="World save complete" message="* 服务器保存完成 *" hue="68" />
	<overheadmessage searchtext="Captcha successful" message="* 验证成功 *" hue="68" />
	<overheadmessage searchtext="You are now under the protection of the town guards" message="* 进入城镇(安全) *" hue="68" />
	<overheadmessage searchtext="You have left the protection of the town guards" message="* 离开城镇(危险) *" hue="53" />
	<overheadmessage searchtext="You enter the rental room" message="* 进入房间(租用) *" hue="68" />
	<overheadmessage searchtext="You exit the rental room" message="* 离开房间(租用) *" hue="53" />
	<overheadmessage searchtext="You begin applying the bandages" message="* 开始绷带 *" hue="88" />
	<overheadmessage searchtext="You finish applying the bandages" message="* 绷带完成 *" hue="68" />
	<overheadmessage searchtext="You begin using veterinary supplies" message="* 开始绷带(宠物) *" hue="88" />
	<overheadmessage searchtext="You finish using veterinary supplies" message="* 绷带完成(宠物) *" hue="68" />
	<overheadmessage searchtext="You are able to resurrect your follower" message="* 绷带复活(宠物) *" hue="68" />
	<overheadmessage searchtext="You fail to resurrect one or more of your followers" message="* 绷带复活(失败) *" hue="38" />
	<overheadmessage searchtext="Passive taming skill gain available" message="* 获得技能(驯兽) *" hue="68" />
	<overheadmessage searchtext="You enter a meditative trance" message="* 开始冥想 *" hue="68" />
	<overheadmessage searchtext="You stop meditating" message="* 停止冥想 *" hue="68" />
	<overheadmessage searchtext="You cannot focus your concentration" message="* 冥想失败 *" hue="53" />
	<overheadmessage searchtext="You are currently prevented from" message="* 禁止拾取 *" hue="53" />
	<overheadmessage searchtext="Magical travel is not allowed in this location" message="* 禁止传送 *" hue="53" />
	<overheadmessage searchtext="You are too fatigued to move" message="* 已超重 *" hue="38" />
	<overheadmessage searchtext="You charge your spell with additional energy" message="* 法术充能 *" hue="88" />
	<overheadmessage searchtext="You absorb their spell" message="* 法术吸收 *" hue="88" />
	<overheadmessage searchtext="You parry the spell" message="* 法术格挡 *" hue="88" />
	<overheadmessage searchtext="Being perfectly rested, you shove them out of the way" message="* 推开 *" hue="88" />
	<overheadmessage searchtext="Your attack causes your target to bleed" message="* 流血 *" hue="88" />
	<overheadmessage searchtext="You smash through the remainder" message="* 破甲 *" hue="88" />
	<overheadmessage searchtext="Your shot hinders your target" message="* 定身 *" hue="88" />
	<overheadmessage searchtext="Your lightning spell hinders your target" message="* 定身(闪电) *" hue="88" />
	<overheadmessage searchtext="You cause your target to bleed out" message="* 终结技(BleedOut) *" hue="88" />
	<overheadmessage searchtext="You execute your target" message="* 终结技(Execute) *" hue="88" />
	<overheadmessage searchtext="Crafting queue begun" message="* 开始制造(队列) *" hue="68" />
	<overheadmessage searchtext="Crafting queue stopped" message="* 停止制造(队列) *" hue="53" />
	<overheadmessage searchtext="Crafting queue complete" message="* 制造完成(队列) *" hue="68" />
	<overheadmessage searchtext="You create the item" message="* 制造成功 *" hue="68" />
	<overheadmessage searchtext="You create an exceptional quality item" message="* 制造成功(卓越) *" hue="68" />
	<overheadmessage searchtext="You failed to create the item" message="* 制造失败 *" hue="53" />
	<overheadmessage searchtext="You pour the potion into a bottle" message="* 制造成功 *" hue="68" />
	<overheadmessage searchtext="You fail to create a useful potion" message="* 制造失败 *" hue="53" />
	<overheadmessage searchtext="You don't have the resources required to make that item" message="* 缺少制造材料 *" hue="53" />
	<overheadmessage searchtext="You have worn out your tool" message="* 工具损坏 *" hue="38" />
	<overheadmessage searchtext="Target an individual item to recycle" message="* 选择物品(回收) *" hue="53" />
	<overheadmessage searchtext="You successfully steal the item" message="* 偷窃成功 *" hue="68" />
	<overheadmessage searchtext="You fail in your stealing attempt" message="* 偷窃失败 *" hue="38" />
	<overheadmessage searchtext="Now tracking" message="* 目标 {3} *" hue="38" />
	<overheadmessage searchtext="Distance to destination" message="* 目标距离 {4} *" hue="38" />
	<overheadmessage searchtext="You cannot cast a spell while frozen" message="* 无法施法 *" hue="38" />
	<overheadmessage searchtext="You cannot move" message="* 无法移动 *" hue="38" />
	<overheadmessage searchtext="You must wait another" message="* 冷却 {5} 秒 *" hue="53" />
	<overheadmessage searchtext="Target cannot be seen" message="* 目标不在视野 *" hue="53" />
	<overheadmessage searchtext="You cannot see that from here" message="* 目标不在视野 *" hue="53" />
	<overheadmessage searchtext="That is too far away" message="* 距离太远 *" hue="53" />
	<overheadmessage searchtext="That vendor is too far away from you" message="* 距离太远(商人) *" hue="53" />
	<overheadmessage searchtext="You are too far away to use that" message="* 距离太远(物品) *" hue="53" />
	<overheadmessage searchtext="Target is too far away." message="* 距离太远(目标) *" hue="53" />
	<overheadmessage searchtext="You or your nearby followers do not require healing" message="* 距离太远(宠物) *" hue="53" />
	<overheadmessage searchtext="You do not have enough holy symbols for that ability" message="* 神圣符文不足 *" hue="53" />
	<overheadmessage searchtext="You consume a magic mushroom and restore some mana" message="* 魔法蘑菇(已使用) *" hue="68" />
	<overheadmessage searchtext="You may now use another magic mushroom" message="* 魔法蘑菇(已冷却) *" hue="88" />
	<overheadmessage searchtext="You have been in combat" message="* 战斗状态中 *" hue="53" />
	<overheadmessage searchtext="That spell will not adhere to you at this time" message="* 法术冷却中 *" hue="53" />
	<overheadmessage searchtext="You are already casting a spell" message="* 施法进行中 *" hue="53" />
	<overheadmessage searchtext="You have not yet recovered from casting a spell" message="* 施法恢复中 *" hue="53" />
	<overheadmessage searchtext="Your concentration is disturbed, thus ruining thy spell" message="* 施法被干扰 *" hue="38" />
	<overheadmessage searchtext="You must wait to perform another action" message="* 等待动作完成 *" hue="53" />
	<overheadmessage searchtext="You must wait a few moments to use another skill" message="* 等待技能完成 *" hue="53" />
	<overheadmessage searchtext="You must wait a few moments before you may use this item again" message="* 等待物品完成 *" hue="53" />
	<overheadmessage searchtext="You must wait another moment before you may pick up an item from here" message="* 等待拾取物品 *" hue="53" />
	<overheadmessage searchtext="The recipient of this trade would not be able to carry this" message="* 对方无法接收 *" hue="53" />
	<overheadmessage searchtext="There are no charges left on that item" message="* 剩余次数用完 *" hue="53" />
	<overheadmessage searchtext="You do not have that spell" message="* 没有这个法术 *" hue="53" />
	<overheadmessage searchtext="You must be near an anvil and a forge to smith items" message="* 没有锻炉铁砧 *" hue="53" />
	<overheadmessage searchtext="You place the gathered wool into your backpack" message="* 收集羊毛 *" hue="88" />
	<overheadmessage searchtext="You begin to move quietly" message="* 开始潜行 *" hue="88" />
	<overheadmessage searchtext="You feel comfortable enough to begin stealthing	" message="* 开始潜行 *" hue="88" />
	<overheadmessage searchtext="You feel ready to continue stealthing" message="* 继续潜行 *" hue="88" />
	<overheadmessage searchtext="You will automatically stealth when out of steps" message="* 继续潜行 *" hue="88" />
	<overheadmessage searchtext="Lock what down" message="* 锁定(Lock) *" hue="68" />
	<overheadmessage searchtext="Choose the item you wish to secure" message="* 保护(Secure) *" hue="68" />
	<overheadmessage searchtext="Choose the item you wish to release" message="* 解锁(Release) *" hue="38" />
	<overheadmessage searchtext="You cannot pick that up" message="* 无法拾取物品 *" hue="53" />
</overheadmessages>

三,启动游戏,Razor > General > Profiles 选择 default。

Outlands.jpg

作者: reistlin
来源: http://www.reistlin.com/blog/447
更新时间: 2024.03
版权声明: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要

azerothcore.png

AzerothCore 主页:[https://www.azerothcore.org]
AzerothCore Wiki 文档:[https://www.azerothcore.org/wiki/home]

一,使用 screen 启动 worldserver

1、安装 screen:

apt-get install screen

2、使用 screen 启动 worldserver,窗口名称为:worldserver

cd /home/reistlin/azerothcore/bin
screen -S worldserver
./worldserver

3、退出当前 screen 窗口

Ctrl + a键 d键

4、查看 screen 窗口状态

reistlin@Debian:~/azerothcore/bin$ screen -ls
There is a screen on:
        112233.worldserver      (03/20/2024 10:00:00 AM)        (Attached)
1 Socket in /run/screen/S-reistlin.

二,使用 restart.sh 重启 AzerothCore

acore_screen:screen 窗口名称(默认:worldserver)
acore_path:AzerothCore 系统根目录(默认:/home/reistlin/azerothcore)
acore_delay:服务器计划重启时间,默认 60 秒后重启,同时通知所有在线玩家
app_user:运行 worldserver 的用户名称

#!/bin/bash

# name: restart AzerothCore by screen v0.1 (Linux Server)
# author: reistlin
# website: www.reistlin.com
# date: 2024.03.20

acore_screen="worldserver"
acore_path="/home/reistlin/azerothcore"
acore_delay="60"

app_user="reistlin"
app_process="SCREEN -S ${acore_screen}"
app_port="8085"

check1=`ps v -U ${app_user} | grep "${app_process}" | grep -v "grep" | wc -l`
check2=`netstat -nlpt | grep ":${app_port}" | wc -l`

if [ "${check1}" -eq 1 ] && [ "${check2}" -eq 1 ]; then
	# save
	screen -x -S ${acore_screen} -p 0 -X stuff "save\n"          
	sleep 1

	# shutdown
	screen -x -S ${acore_screen} -p 0 -X stuff "server shutdown ${acore_delay}\n"
	sleep `expr ${acore_delay} + 3`

	# start
	screen -x -S ${acore_screen} -p 0 -X stuff "${acore_path}/bin/worldserver\n"
	sleep 1

	# logfile
	echo "[`date "+%Y-%m-%d %H:%M:%S"`] ${acore_screen} service has successfully restarted" >> $HOME/crontab/restart.log
else
	echo "[EXIT] Not found worldserver by screen"
fi

编辑 crontab,设置每天凌晨 6 点自动重启

# restart AzerothCore worldserver
0  6 * * * /home/reistlin/crontab/restart.sh > /dev/null 2>&1

linux.pngdebian.png

官方文档:[https://github.com/shadowsocks/shadowsocks/wiki/Optimizing-Shadowsocks]

一,新建配置

vim /etc/sysctl.d/local.conf

二,优化参数

# max open files
fs.file-max = 51200
# max read buffer
net.core.rmem_max = 67108864
# max write buffer
net.core.wmem_max = 67108864
# default read buffer
net.core.rmem_default = 65536
# default write buffer
net.core.wmem_default = 65536
# max processor input queue
net.core.netdev_max_backlog = 4096
# max backlog
net.core.somaxconn = 4096

# resist SYN flood attacks
net.ipv4.tcp_syncookies = 1
# reuse timewait sockets when safe
net.ipv4.tcp_tw_reuse = 1
# turn off fast timewait sockets recycling
net.ipv4.tcp_tw_recycle = 0
# short FIN timeout
net.ipv4.tcp_fin_timeout = 30
# short keepalive time
net.ipv4.tcp_keepalive_time = 1200
# outbound port range
net.ipv4.ip_local_port_range = 10000 65000
# max SYN backlog
net.ipv4.tcp_max_syn_backlog = 4096
# max timewait sockets held by system simultaneously
net.ipv4.tcp_max_tw_buckets = 5000
# turn on TCP Fast Open on both client and server side
net.ipv4.tcp_fastopen = 3
# TCP receive buffer
net.ipv4.tcp_rmem = 4096 87380 67108864
# TCP write buffer
net.ipv4.tcp_wmem = 4096 65536 67108864
# turn on path MTU discovery
net.ipv4.tcp_mtu_probing = 1

# for high-latency network
net.ipv4.tcp_congestion_control = hybla

# for low-latency network, use cubic instead
# net.ipv4.tcp_congestion_control = cubic

三,更新内核

sysctl --system

作者: reistlin
来源: http://www.reistlin.com/blog/444
更新时间: 2024.01
版权声明: 原创文章.转载请保留作者信息和原文完整.谢绝任何方式的摘要

uo.png

UO Outlands:[https://uooutlands.com]
UO Razor Assistant:[https://www.razorce.com]

# Auto Lumberjacking v1.2
# By REISTLIN

# Auto Recall ON/OFF
@setvar! AutoRecall 1

// Disparalyze
if paralyzed
    if findtype "pouch" backpack
        yell "[pouch"
    else
        overhead "* 没有 Trapped Pouch *" 38     
    endif
endif

// Auto Recall
if AutoRecall = 1
    if insysmsg "Distance to destination" or insysmsg "Now tracking"
        // Cancel Target
        if targetexists
            hotkey "Clear Target Queue"
            hotkey "Cancel Current Target"
        endif

        // Interrupt Current Action
        hotkey "> Interrupt"

        // Rune Book
        if findtype "runebook" backpack
            overhead "* 开始传送 *" 88
            dclicktype "runebook"
            waitforgump 1551740969
            gumpresponse 2
            stop
        endif

        // Outlands Requirement
        if findtype "Recall rune" backpack
            if skill "Magery" >= 40
                // Recall Scroll
                if findtype "Recall" backpack
                    overhead "* 开始传送(卷轴) *" 88
                    dclicktype "Recall"
                    waitfortarget
                    targettype "Recall rune"
                    stop                
                endif
                // Spell Book
                if findtype "Spellbook" backpack and findtype "Black Pearl%s%" backpack and findtype "Blood Moss" backpack and findtype "Mandrake Root%s%" backpack
                    overhead "* 开始传送(魔法) *" 88
                    cast "Recall"
                    waitfortarget
                    targettype "Recall rune"
                    stop
                endif
            else
                overhead "* 魔法技能不够 *" 38
            endif
        else
            overhead "* 没有传送符文 *" 53    
        endif
    endif
endif

// Check Tracking Buff
if not findbuff "tracking"
    skill "tracking"
    waitforgump 4267467659 
    gumpresponse 6
    wait 1000
    gumpclose 4267467659
    overhead "* 追踪中 *"
endif

// Check Left Hand
if lhandempty
    if findtype "hatchet" backpack
        dclicktype "hatchet" backpack
        wait 500
    else
        overhead "* 没有伐木工具 *" 38
        break
    endif
endif

// Check Over Weight
if weight > maxweight
    overhead "* 已超重 *" 38
else
    dclick "hands"
    waitfortarget 500
    target "self"
endif

// Report Status
if insysmsg "You chop some"
    overhead "* 伐木中 *" 88
elseif insysmsg "You broke your axe"
    overhead "* 伐木工具损坏 *" 38
elseif insysmsg "You do not see any harvestable resources nearby" or insysmsg "You cannot produce any wood from that"
    overhead "* 没有伐木资源 *" 53
elseif insysmsg "Harvesting is not allowed in this area"
    overhead "* 禁止伐木区域 *" 53
endif

wait 2000

loop