刀剑2网游单机版单人进双人副本方法,添加召唤分身道具

日期:2026-04-05 类别:网游单机GM资料库 作者:网游单机网 浏览:

刀剑2网游单机版单人进双人副本方法,添加召唤分身道具

开启单人进双人副本,这个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[0] == 1 then

   local fn = fn_tb[1]

   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[i]

   if ifvalue == 1 then

     local fn = fn_tb[i + 1]

     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





修改了先民祖庙的副本机关要两人才能开门的问题,现在只需要单人拉动开关就能开门。这个有问题。


标签:刀剑2

相关文章