北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 7504|回复: 0

请问用fluffos的mudlib如何能正常reboot?

[复制链接]
发表于 2017-3-2 21:31:31 | 显示全部楼层 |阅读模式
对fluffos可以说完全不了解,用的别人从mudos版lib改好的fluffos驱动版架了个站,只有几个人在玩。别的还好,但reboot功能无法实现,reboot只能关掉fluffos,却无法把fluffos启动起来。。。

用的fluffos版本:    界面系统的版本:  FluffOS 3.0-alpha9.0 (git-local-8646247-1462454900) driver

启动游戏是个bat文件,bat文件内容:
@echo off
for /f "delims=" %%i in ('dir .\log /b /a-d /s ^|findstr /i /v "init.txt %~nx0"') do (del /f /q "%%i" 2>nul)
@echo on
fluffos64\driver.exe -C config.cfg

要怎样才能通过reboot指令把fluffos的cmd窗口关闭后再自动重新启动起来呢?


reboot代码:
  1. #include
  2. #include
  3. #include

  4. inherit F_CLEAN_UP;

  5. // 启动的时间
  6. int start_reboot = 0;
  7. int last_notice = 0;

  8. int is_rebooting() { return start_reboot != 0; }

  9. private void reboot_mud();

  10. int main(object me, string arg)
  11. {
  12.         string str;
  13.         int n;
  14.         int flag;

  15.         if (arg == "after 10 called by memoryd")
  16.                    flag = 1;

  17.         else flag = 0;

  18.         // memoryd 调用重新启动系统
  19.         if (flag)
  20.         {
  21.               n = 10;
  22.               start_reboot = time() + n * 60;
  23.               last_notice = time();
  24.               set_heart_beat(1);
  25.               message_system("系统精灵将在十分钟以后重新启动" + LOCAL_MUD_NAME() + HIW ","
  26.                              "请抓紧时间处理你的人物。");

  27.               return 1;
  28.         }

  29.         if (! SECURITY_D->valid_grant(me, "(arch)"))
  30.                 return 0;

  31.         if (! arg)
  32.         {
  33.                 write("指令格式: reboot [-f] | soon | after \n");
  34.                 return 1;
  35.         }

  36.         str = me->name(1) + "(" + me->query("id") + ")";
  37.         if (arg == "-f")
  38.         {
  39.                 if (! find_object(SECURITY_D) ||
  40.                     ! find_object(SIMUL_EFUN_OB) ||
  41.                     ! find_object(MASTER_OB))
  42.                         shutdown(0);
  43.                         
  44.                 if (! is_root(me) )
  45.                 {
  46.                         write("你没有权限强制停止" + LOCAL_MUD_NAME() + "。\n");
  47.                         return 1;
  48.                 }

  49.                 message_system(str + "强行启动了" + LOCAL_MUD_NAME() + "。");
  50.                 shutdown(0);
  51.                 return 1;
  52.         }

  53.         if (wiz_level(me) < 4 && ! flag)
  54.         {
  55.                 write("你没有权限重新启动" + LOCAL_MUD_NAME() + "。\n");
  56.                 return 1;
  57.         }

  58.         if (sscanf(arg, "after %d", n) != 1)
  59.         {
  60.                 if (arg != "soon")
  61.                 {
  62.                         if (arg != "cancel")
  63.                         {
  64.                                 write("参数错误,请查看帮助。\n");
  65.                                 return 1;
  66.                         }

  67.                         if (start_reboot)
  68.                         {
  69.                                 start_reboot = 0;
  70.                                 set_heart_beat(0);
  71.                                 message_system(str + "取消了启动,游戏继续进行。");
  72.                                 write("Ok.\n");
  73.                                 return 1;
  74.                         }

  75.                         write("现在MUD正在正常的运行。\n");
  76.                         return 1;
  77.                 }
  78.                 message_system(str + "重新启动了" + LOCAL_MUD_NAME() + "。");
  79.                 reboot_mud();
  80.         }

  81.         if (n < 1)
  82.         {
  83.                 write("没有这么短的时间,你不如选择 soon 立刻启动。\n");
  84.                 return 1;
  85.         }

  86.         if (n > 10)
  87.         {
  88.                 write("这么久?你还是等一会儿再启动吧。\n");
  89.                 return 1;
  90.         }

  91.         start_reboot = time() + n * 60;
  92.         last_notice = time();
  93.         set_heart_beat(1);
  94.         message_system(str + "决定在" + chinese_number(n) +
  95.                        "分钟以后重新启动" + LOCAL_MUD_NAME() + "。");
  96.         return 1;
  97. }

  98. private void heart_beat()
  99. {
  100.         int t;
  101.         int n;
  102.         string str;

  103.         if (! start_reboot) return;

  104.         n = start_reboot - time();
  105.         if (n < 1)
  106.         {
  107.                 reboot_mud();
  108.                 return;
  109.         }

  110.         if (n >= 60) str = chinese_number(n / 60) + "分钟"; else
  111.                      str = "";
  112.         if (n % 60) str += chinese_number(n % 60) + "秒";

  113.         t = time() - last_notice;
  114.         if ((n >= 60 && t >= 60) || (n < 60 && n >= 10 && t >= 10) || n < 10)
  115.         {
  116.                 message_system(LOCAL_MUD_NAME() + "将在" +
  117.                                str + "以后重新启动,请抓紧时间处理你的人物。");
  118.                 last_notice = time();
  119.         }
  120. }

  121. private void reboot_mud()
  122. {
  123.         object *user, link_ob;
  124.         int i;

  125.         message_system("游戏重新启动,请稍候一分钟再 login 。\n");

  126.         user = users();
  127.         for (i = 0; i < sizeof(user); i++)
  128.         {
  129.                 if (! environment(user[i])) continue;
  130.                 user[i]->delete("quest");
  131.                 user[i]->save();
  132.                 link_ob = user[i]->query_temp("link_ob");
  133.                 if (objectp(link_ob)) link_ob->save();
  134.         }

  135.         // 保存所有的守护进程的数据
  136.         reset_eval_cost();
  137.         if (find_object(DNS_MASTER)) DNS_MASTER->send_shutdown();
  138.         if (find_object(NAME_D))     NAME_D->mud_shutdown();
  139.         if (find_object(FAMILY_D))   FAMILY_D->mud_shutdown();
  140.         if (find_object(CLOSE_D))    CLOSE_D->mud_shutdown();
  141.         if (find_object(DBASE_D))    DBASE_D->mud_shutdown();

  142.         shutdown(0);
  143. }
复制代码

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-23 07:46 PM , Processed in 0.011767 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表