饥荒联机吧 关注:159,123贴子:2,589,181
  • 24回复贴,共1

问下多世界如何限制跳世界?

只看楼主收藏回复

个人想在多世界的服务器里设置公开房,然后设置一个车队专属的世界,有什么直接可行的限制跳世界的方法?mod或改文件都行,求各位过路大佬支招


IP属地:广东来自Android客户端1楼2019-05-05 11:27回复
    奇怪的想法,不想别人进去就不要多层了呀,设置密码好了啊,难不成是找免费劳工


    IP属地:江苏来自iPhone客户端2楼2019-05-05 13:33
    收起回复
      楼主的意思是某一个世界是只有车队人员能进,这应该可以通过设置白名单实现,非白名单人员无法进入


      星座王
      点亮12星座印记,去领取
      活动截止:2100-01-01
      去徽章馆》
      IP属地:陕西来自Android客户端3楼2019-05-05 21:43
      收起回复
        白名单是对所有世界起作用。
        如果你仅仅想对某一个世界作用,可以修改migrate action,加一个判断语句,判断是不是那个队伍的keil ID就行。


        IP属地:黑龙江来自Android客户端4楼2019-05-06 01:42
        收起回复
          ---- 如果开了自动分流一类的MOD,需要去改动一下
          ---- 否则如果新玩家被分流到这个世界,新玩家就会一直连不上服务器
          if GLOBAL.TheNet:GetIsServer() or GLOBAL.TheNet:IsDedicated() then
          ---- 这里改成那个世界的id,就是那个世界存档目录下的server.ini的 id = 1234
          local specific_worldid = "1234"
          ---- 这里改成允许的的玩家id,逗号隔开
          local specific_userid = {"KU_XXXXXX", "KU_YYYYY"}
          local function check_fn(act)
          if act.target.components.worldmigrator.linkedWorld == specific_worldid then
          for _,v in pairs(specific_userid) do
          if act.doer.userid == v then
          return true
          end
          end
          return false
          else
          return true
          end
          end
          local old_MIGRATE = GLOBAL.ACTIONS.MIGRATE.fn
          GLOBAL.ACTIONS.MIGRATE.fn = function(act)
          if act.doer ~= nil and act.target ~= nil and act.target.components.worldmigrator ~= nil then
          ---- 管理员不受限制
          if act.doer.Network:IsServerAdmin() then
          return old_MIGRATE(act)
          elseif check_fn(act) then
          return old_MIGRATE(act)
          else
          return false
          end
          end
          return old_MIGRATE(act)
          end
          end


          IP属地:黑龙江6楼2019-05-06 02:33
          收起回复

            🐼大佬的代码没问题啊


            IP属地:广西7楼2019-05-12 22:41
            收起回复


              IP属地:广东8楼2019-05-12 22:43
              回复