vellydongdong 发表于 2025-10-27 06:13:26

刀剑2 单人进双人本的方法,添加召唤分身道具

[ 本帖最后由 vellydongdong 于 2025-11-14 16:24 编辑 ]\n\n
首先用的端是这个:【新提醒】【搬山道人】刀剑2·魔聚乌鹊山·五阶版本·GM控制台 - 网游单机下载 - 藏宝湾网游单机站 - Powered by Discuz!
开启轻功,按照这个:【新提醒】刀剑2添加“轻功试炼”活动的方法 - 网游单机讨论 - 藏宝湾网游单机站 - Powered by Discuz!
开启赛马单人。参考这个:【新提醒】刀剑2修改双人副本单人可进和赛马单人可进的方法 - 网游单机讨论 - 藏宝湾网游单机站 - Powered by Discuz!
开启单人进双人副本,这个lua里,修改如下:改后不需要通过GM控制台进入,跟NPC对话,进入。

function judge_team_num(player, num)
local allnum = player:GetAllMember()
local state = false
if num == 1 then
    if allnum == 0 or allnum == num then
      state = true
    else
      player:ShowUIText(bo2.eSendModeFlag_Self, 80273)
    end
elseif num == 2 then
    --直接注释
    --local cur_Teammate = player:GetTeammateAmount(-1)
    --if allnum == num and cur_Teammate == 1 then
      state = true
    else
      player:ShowUIText(bo2.eSendModeFlag_Self, 80348)
    end
end
return state
end


function check_cmn_all_state(player, excelID, isPayNow, isCheckInviteid)
local line = wuguan_table:find(excelID)
if line == nil then
    return false
end
--检查状态的,直接注释后,返回true
--[[ local trans_premise = line.Event2_pre
local scn_id = line.Event2_scn
local pre_state = true
if trans_premise == 1 then
    local fn = fn_tb
    pre_state = pre_state and fn(player, 2)
    if pre_state == false then
      return false
    end
end
local member
local function get_mem(mem)
    if player.scn_unit == mem.scn_unit then
      member = mem
    end
end
player:ForEachTeammate(get_mem)
if member == nil then
    return false
end
if isCheckInviteid == true then
    local may1 = check_wuguan_same_invite(player, member)
    if may1 == false then
      player:ShowUIText(bo2.eSendModeFlag_Self, 73151)
      return false
    end
    local may2 = check_wuguan_same_invite(member, player)
    if may2 == false then
      player:ShowUIText(bo2.eSendModeFlag_Self, 73150)
      return false
    end
end
for i = 1, trans_premise.size - 1 do
    local ifvalue = trans_premise
    if ifvalue == 1 then
      local fn = fn_tb
      if fn then
      pre_state = pre_state and fn(player, 1, member, scn_id)
      if pre_state == false then
          return false
      end
      end
    end
end
if line.scn2_cd ~= 0 and get_share_cd_state(player, member, line.scn2_cd) == false then
    return false
end
if line.quest_2 ~= 1 then
    local quest_state = get_quest_state(member, line)
    if quest_state == false then
      player:ShowUIText(bo2.eSendMode_Self, 85119)
      member:ShowUIText(bo2.eSendMode_Self, 85120)
      return false
    end
end
if line.level_2 ~= 1 then
    local levelstate = get_level_state(member, line)
    if levelstate == false then
      local v = sys.variant()
      v:set(L("name"), member.name)
      player:ShowUIText(bo2.eSendMode_Self, 86525, v)
      member:ShowUIText(bo2.eSendMode_Self, 86525)
      return false
    end
end
if line.pay_id ~= 0 then
    local paystate, itemtext = get_payitem_state(player, line)
    if paystate == true then
      if isPayNow == true then
      local v = sys.variant()
      v:set(packet.key.multi_item, itemtext)
      player:SafeAward(v, nil, nil, 2151)
      end
    else
      return false
    end
end
return true, member--]]
return true, nil
end

function on_select_2(player, npc, line)
local event_stream = line.Event2
local event_func = line.Event2_Func
if event_stream ~= 0 and event_stream ~= nil then
    local scn = player.scn_unit
    quest_cmn.start(scn, player, npc, still, event_stream)
elseif event_func ~= L("") and event_func ~= nil then
    local scn = player.scn_unit
    bo2.RunScript(event_func, scn, player, npc, still)
else
      local state, member = check_cmn_all_state(player, line.id, false, true)      
    if state == false then      
      return      
    end      
    -- 上面中间注释了一段,修改:直接进入,不进行双人检查
    local scn_id = line.Event2_scn
    local cd_id = line.scn2_cd
    -- 检查CD
    if cd_id ~= 0 and get_share_cd_state(player, nil, cd_id) ~= true then
      return
    end
    -- 检查付费物品,会消耗耀武令
    if line.pay_id ~= 0 then
      local paystate, itemtext = get_payitem_state(player, line)
      if paystate == true then
      local v = sys.variant()
      v:set(packet.key.multi_item, itemtext)
      player:SafeAward(v, nil, nil, 2151)
      else
      return
      end
    end
    -- 直接传送
    player:ChgScn(2, scn_id, "playerbegin", 0, 0, true)
    -- 添加CD
    if cd_id ~= 0 then
      local cd_line = bo2.gv_define:find(cd_id)
      if cd_line ~= nil and cd_line.value.v_int ~= 0 then
      local id = cd_line.value.v_int
      player:AddCooldown(id)
      end
    end
end
end


还有群侠会这个活动也需要双人组队,这个改单人直接在服务端\data\script\scene\activity\qunxiahui的qxh_baoming.lua,改这个报名脚本。就可以直接进入了。

local dis_can_fight = 40
function NpcTalk(npc, player)
local cd_ok = true
local lvl_ok = true
local is_dead = false
local function get_member(member)
    is_dead = member:IsDead()
    if is_dead then
      member:ShowUIText(bo2.eSendModeFlag_Self, 83715)
      return
    end
    local player_lvl = member:GetAtb(bo2.eAtb_Level)
    if player_lvl < 20 then
      lvl_ok = false
      return
    end
    cd_ok = cd_ok and member:MayAddCooldown(bo2.eKnightCD_Activity)
    if cd_ok == false then
      return
    end
end
local function on_begin()
    local cur_leadertype = player:IsCaptain()
    if cur_leadertype == true then
      local group_num = player:GetAllMember()
      -- 修改这里:允许单人进入,不再检查队伍人数
      if group_num <= 0 then
      player:ShowUIText(bo2.eSendModeFlag_Self, 80752)
      return
      end   
      -- 删除队伍人数检查,允许单人进入
      -- if group_num ~= 2 then
      --   player:ShowUIText(bo2.eSendModeFlag_Self, 83186)
      --   return
      -- end
      local player_num = player:GetTeammateAmount(dis_can_fight)
      -- 修改这里:单人模式下不需要检查队友距离
      if group_num > 1 then-- 如果有队友才检查距离
      if player_num > 1 then
          player:ShowUIText(bo2.eSendModeFlag_Self, 83186)
          return
      elseif player_num < 1 then
          player:ShowUIText(bo2.eSendMode_Self, 80308)
          return
      end
      end
      player:ForEachTeammate(get_member)
      if player:IsDead() then
      player:ShowUIText(bo2.eSendModeFlag_Self, 83715)
      return
      end
      if is_dead then
      player:ShowUIText(bo2.eSendModeFlag_Self, 83714)
      return
      end
      local player_lvl = player:GetAtb(bo2.eAtb_Level)
      if lvl_ok == false or player_lvl < 20 then
      player:ShowUIText(bo2.eSendModeFlag_BroadcastGroup, 83701)
      return
      end
      cd_ok = cd_ok and player:MayAddCooldown(bo2.eKnightCD_Activity)
      if cd_ok == false then
      player:ShowUIText(bo2.eSendModeFlag_BroadcastGroup, 83308)
      return
      end
      -- 修改这里:单人时直接传送,不需要GroupChgScn
      if group_num == 1 then
      player:ChgScn(bo2.eTransfer_NormalChg, 121, "playerbegin")
      else
      player:GroupChgScn(bo2.eTransfer_NormalChg, 121, "playerbegin", 0)
      end
    else
      player:ShowUIText(bo2.eSendMode_Self, 80307)
    end
end
local on_cancil = function()
end
player:ClearDlgTalkUI(npc)
player:SetDlgContent(75046)
player:AddDlgItem(83185, on_begin)
player:AddDlgItem(80057, on_cancil)
end


修改了先民祖庙的副本机关要两人才能开门的问题,现在只需要单人拉动开关就能开门。这个有问题。参考后面发的贴子,进行修改。

召唤分身道具是借鉴79端。在特权商店里。刀剑2单机版79端个人修改版【补充更新】 - 网游单机下载 - 藏宝湾网游单机站 - Powered by Discuz!


上面所有修改后的文件链接如下:

链接:https://pan.baidu.com/s/1WnQeaToNUB72rKEs-hagkA?pwd=gnsm 提取码:gnsm 复制这段内容后打开百度网盘手机App,操作更方便哦





176034095 发表于 2025-10-27 08:19:47

谢谢分享

宋兵乙303 发表于 2025-10-27 09:07:28

:::

liyicheng556 发表于 2025-10-27 09:15:26

感谢分享哈

71082382 发表于 2025-10-27 10:08:55

::

tanyh 发表于 2025-10-27 10:19:50

7阶的能搞到吗

一样的疯 发表于 2025-10-27 10:25:39

谢谢分享

lqwfcee1717588 发表于 2025-10-27 12:12:18

能给个这端改好的data吗?这端还没开始玩

う枫林残忆ぞ 发表于 2025-10-27 16:37:41

感谢分享

c235121 发表于 2025-10-27 19:03:14

能给个这端改好的data吗?比较小白不会改

vellydongdong 发表于 2025-10-27 20:49:21

本帖最后由 vellydongdong 于 2025-10-29 23:07 编辑

链接如上

lqwfcee1717588 发表于 2025-10-27 23:34:45

vellydongdong 发表于 2025-10-27 20:49
改好的data 通过网盘分享的文件:
链接: https://pan.baidu.com/s/1lBkEtfNPNTz0UNCyPlcS2w 提取码: 4hii...

多谢大佬

w282311596 发表于 2025-10-29 08:35:47

感谢分享

rayyouxi001 发表于 2025-10-29 14:45:31

感谢分享哈

taocige5856 发表于 2025-10-29 22:02:47

vellydongdong 发表于 2025-10-27 20:49
改好的data 通过网盘分享的文件:
链接: https://pan.baidu.com/s/1lBkEtfNPNTz0UNCyPlcS2w 提取码: 4hii...

大佬链接没了,还可以发一下不?来晚了,没赶上。

ws3223 发表于 2025-11-6 10:10:16

666太厉害了,不过不怎么能看懂。。。不明白是怎么改的,记事本打开什么文件改还是用什么编译软件进行改,lua是什么意思啊,是个文件吗

yuanxun9 发表于 2025-11-8 00:31:02

楼主你好,麻烦再次分享下改好的data谢谢了!

raincyan 发表于 2025-11-8 00:58:41

大佬知道推冰活动如何改冰块的刷新时间吗?

a5220455 发表于 2025-11-9 01:56:18

看别人说这个端40级主线不能做,是真的么?白衣门声望能正常得到么?魔域能正常走光圈进么?魔域任务能接么?

yuanxun9 发表于 2025-11-13 19:44:41

请问楼主如何添加召唤分身道具!能否给个教程谢谢!
页: [1]
查看完整版本: 刀剑2 单人进双人本的方法,添加召唤分身道具

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明