升级fluffos最新驱动 详细操作步骤记录。

仅以此记录分享自己升级驱动的过程,用于随时复习查看。如可帮到同为小白的朋友最好不过。如果过程有错误示范或者可以简略做法,望各大佬指点。

参考教程:https://bbs.mud.ren/threads/85 国内GBK编码MUDLIB升级UTF-8编码指南

准备工作一:工具下载

本文所需工具都在此处列出。以下不在单独列出工具链接。

  1. 全文本搜索替换工具(以下简称文本替换工具):FileLocator Pro
  2. 编码转换工具:超级批量编码转换 (密码:gbhp)
  3. GIT版本控制:GIT (注:安装过程务必选中安装 Git Bash)

准备工作二:下载驱动

https://bbs.mud.ren/threads/4 从此页面下载v2019 fluffos_20240714 下载后解压,需要用到的是bin文件夹里的驱动。

文件夹.png

开始干活

打开参考教程,国内GBK编码MUDLIB升级UTF-8编码指南,对照教程,随时翻阅查看。

第一步

不管升级2017还是2019,都需要做的是:

  1. 修改static变量为nosave变量
  2. 修改static函数为protected函数

所以,修改第一步就是使用参考教程里批量替换脚本,批量替换static变量和函数。

#!/usr/bin/perl -pi

if (/,/ || /=/) {
    s/static/nosave/;
}
elsif (/\([^{[:]/) {
    s/static/protected/;
}
elsif (/;/) {
    s/static/nosave/;
}
else {
    s/static/protected/;
}

复制此代码,新建文本,粘贴此代码,保存。将文件名改为:fixstatic.pl 注意后缀。将保存后的文件放到自己lib根目录中。 fixstatic.pl文件位置.png 如图。 放入自己lib根目录后,文件夹内空白位置右键,选择 Open Git Bash here 然后在打开的bash对话框中输入:(/e/lib 代表你lib目录 我不带目录读取不到这个脚本)

    find . -name "*.c" -print | xargs /e/lib/fixstatic.pl

然后回车运行代码,一两秒就好。 不过我发现运行这个脚本,文件夹内一定不要有任何中文的文件或者目录。不然会报错。


至此,代码中大多数的static函数和变量就会被替换掉了。剩下的就需要我们打开文本替换工具来做了。 打开文本替换工具

  1. 目录选择自己lib根目录
  2. 包含文本: static
  3. 点击开始 文本替换工具搜索.png

如果第一步脚本运行没问题,这里其实不会有这么多文件,基本上也就几个到十几个,挨个查看是不是static 函数或者变量,如果是的话按照对应要求修改保存即可。 (注:第一步脚本替换会造成log文件路径的static目录也被替换成nosave,挨个修改回来太慢了,所以我的做法是打开lib/log 把static文件夹名称改为 nosave

到这里,其实运行2017驱动就已经可以了,可以先把原旧驱动替换成2017,试一下是否可以运行。如果不行可以看debug log修改下再往后继续。

-修改完static以后,还可以顺手将#pragma save_binary 预处理指令搜索删除掉。

第二步

打开批量编码替换工具,打开文件夹为自己lib所在目录,后缀分3次运行,分别为 “.c | .h | .o” 编码转换.png

编码选择UTF-8 ,换行方式选择 windows ,然后点开始。 三次运行完,等于将目录下所有.c .h .o文件都转换完格式了。 到这步所有简单可借用工具的活基本就做完啦。剩下的就是手动了,看各个源码的不同,手动程度也不同。

第三步

修改adm/simul_efun/message.c 中的message()函数。

varargs void message(mixed arg, string message, mixed target, mixed exclude)
{
    efun::message(arg, message, target, exclude||({}));
}

主要就是给最后一个参数exclude加了一个空值判定。不然新驱动会报错启动不了。

修改/simul_efun/chinese.c 中的 is_chinese() 函数

int is_chinese(string str)
{
     if (!str)
          return 0;

      return pcre_match(str, "^\\p{Han}+$");
}

所有字符串处理问题相关文件,具体查看移步参考教程。内容太多,但是介绍很清楚,我这里不一 一列举了。

更新include 文件,将下载好的驱动文件夹 /bin/include文件夹内所有文件替换到自己lib的include中。

更新config文件,我是参考炎黄的,具体端看自己怎么配置。[炎黄config配置文件](https://gitee.com/mudren/mud/blob/master/config.cfg "炎黄config配置文件") (注:文件中include配置项增加了mudcore框架的include引用,如果没有使用mudcore框架将“:/mudcore/include”删除掉)

将驱动文件夹/bin/driver内的所有文件替换到自己驱动文件内。 如果是全局驱动,替换到自己系统相应位置。

如果有启动bat文件则直接启动,没有的参考以下内容,新建文本,粘贴到文本中后,保存为run.bat文件。(driver.exe如果不是全局的,改为/驱动目录/driver.exe)

:start
driver.exe config.ini
goto start
pause

好了。到这里就大功告成了! 直接双击run.bat 泥巴 启动!


联系我:279631638

后记:

因各源码不同,出现的问题也不同,如果启动不了,多查看debug日志,查看对应问题去针对处理。如果还有处理不了的可以在此贴留言,我会免费帮忙升级驱动,但是会分享给老大,同时分享到此论坛。如果不想被分享,可扫此二维码赞助Fluffos项目,支持项目维护和开发者叶雨飞大大,截图给我我会帮忙升级。

老大无敌,我咨询了N多问题都几句话就言简意赅的点明了问题所在。 准备开帖:遇到的各种问题记录。(碰到的各种问题都会集中在一个帖内,供大家查看。)

京ICP备13031296号-4