找回密码
 register

QQ登录

只需一步,快速开始

查看: 4036|回复: 2

[游戏教程] 逍遥天龙:新增传送道具:通天符箓

[复制链接]

[游戏教程] 逍遥天龙:新增传送道具:通天符箓

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:94
  • 打卡月天数:17
  • 打卡总奖励:94
  • 最近打卡:2025-01-18 01:28:20
Waylee

主题

0

回帖

1万

积分

仙帝

积分
11931
Waylee 2020-8-14 13:32 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×
通天.jpg

在【服务端/客户端道具文件】CommonItem.txt添加两行:
30008121        3        0        8        121        CircularTaskTool22_6        遁地符        五斗米道天师#G张灵均#W擅长的一种灵符,可以为#Y彻地符箓#W补充#G10点#W符咒。#r#c00FF00(右键点击即可使用)        10        4        1        28        1        330060        78        1        -1        -1        -1        4        特殊物品        10        0        2005        -1        0                
30008122        3        0        8        122        CircularTaskTool22_7        通天符箓        上古符箓,具有神奇的符咒,可以利用符咒的力量进行定位与传送,当符咒的力量使用完后,#Y通天符箓#W不会消失,可以利用#Y遁地符#W来为其补充符咒。#r无论拥有多少个#Y彻地符箓#W和#Y通天符箓#W,最多只能为#G同一个人物#W记录#G十个坐标#W。#r#R通天符箓可进行队伍传送!#r#c00FF00(右键点击即可使用)#r#cFFCC00可在城市、野外和山洞使用。        10        4        1        28        1        330059        63        0        -1        -1        -1        4        特殊物品        10        0        2005        -1        0                


【服务端文件】Script.dat中添加两个脚本文件
;彻地符箓 
330059=\obj\item\cedifuzhou.lua
330060=\obj\item\tongtianfuzhou.lua


【服务端文件】AllowableScriptFunc.txt
需要加
212        330060        Tt_fl
213        330060        Tt_fcs


【客户端文件】InterfaceEx.txt
需要加
234        Item_DunJiaShu        Item_DunJiaShu/Item_DunJiaShu.layout.xml        Item_DunJiaShu/Item_DunJiaShu.lua        3                19        20        传送符


源文件下载: 通天符箓道具添加.rar (373.04 KB, 下载次数: 8) (忘记解压密码了,不需要下载哦)

  • 打卡等级:热心大叔
  • 打卡总天数:94
  • 打卡月天数:17
  • 打卡总奖励:94
  • 最近打卡:2025-01-18 01:28:20
楼主
Waylee 楼主

主题

0

回帖

1万

积分

仙帝

积分
11931
Waylee 2020-8-14 13:52 | 显示全部楼层
cedifuzhou.lua
x330059_g_scriptId = 330059
x330059_g_ItemId = 30008122
--**********************************
-- 事件交互入口
--**********************************
function x330059_OnDefaultEvent( sceneId, selfId, nItemIndex )
        
end

function x330059_IsSkillLikeScript( sceneId, selfId )
        return 1         --这个脚本需要动作支持
end

function x330059_CancelImpacts( sceneId, selfId )
        return 0         --不需要这个接口,但要保留空函数,并且始终返回0。
end

function x330059_OnDeplete( sceneId, selfId )
        return 1
end

--**********************************
-- 
--**********************************
function x330059_OnConditionCheck( sceneId, selfId)
        return 1
end
--**********************************
-- 
--**********************************
function x330059_OnActivateOnce( sceneId, selfId )

        local nUseCount1        = GetBagItemParam(sceneId, selfId, 5, 0, 2)
        local x1        = GetBagItemParam(sceneId, selfId, 5, 4, 2)
        local z1        = GetBagItemParam(sceneId, selfId, 5, 8, 2)        
        local nTarSceneName1 = GetSceneName(nUseCount1)        

        local nUseCount1        = GetBagItemParam(sceneId, selfId, 6, 0, 2)
        local x2        = GetBagItemParam(sceneId, selfId, 6, 4, 2)
        local z2        = GetBagItemParam(sceneId, selfId, 6, 8, 2)        
        local nTarSceneName2 = GetSceneName(nUseCount1)        

        local nUseCount1        = GetBagItemParam(sceneId, selfId, 7, 0, 2)
        local x3        = GetBagItemParam(sceneId, selfId, 7, 4, 2)
        local z3        = GetBagItemParam(sceneId, selfId, 7, 8, 2)        
        local nTarSceneName3 = GetSceneName(nUseCount1)                
                

        local nUseCount1        = GetBagItemParam(sceneId, selfId, 8, 0, 2)
        local x4        = GetBagItemParam(sceneId, selfId, 8, 4, 2)
        local z4        = GetBagItemParam(sceneId, selfId, 8, 8, 2)        
        local nTarSceneName4 = GetSceneName(nUseCount1)        
                

        local nUseCount1        = GetBagItemParam(sceneId, selfId, 9, 0, 2)
        local x5        = GetBagItemParam(sceneId, selfId,9, 4, 2)
        local z5        = GetBagItemParam(sceneId, selfId, 9, 8, 2)        
        local nTarSceneName5 = GetSceneName(nUseCount1)        
                

        local nUseCount1        = GetBagItemParam(sceneId, selfId, 10, 0, 2)
        local x6        = GetBagItemParam(sceneId, selfId, 10, 4, 2)
        local z6        = GetBagItemParam(sceneId, selfId, 10, 8, 2)        
        local nTarSceneName6 = GetSceneName(nUseCount1)        
    local xz0 =         GetMissionData(sceneId,selfId,449)
        BeginUICommand( sceneId )
                UICommand_AddInt( sceneId, xz0 )
                UICommand_AddInt( sceneId, x1 )
                UICommand_AddInt( sceneId, z1 )
                UICommand_AddInt( sceneId, x2 )
                UICommand_AddInt( sceneId, z2 )
                UICommand_AddInt( sceneId, x3 )
                UICommand_AddInt( sceneId, z3 )
                UICommand_AddInt( sceneId, x4 )
                UICommand_AddInt( sceneId, z4 )
                UICommand_AddInt( sceneId, x5 )
                UICommand_AddInt( sceneId, z5 )
                UICommand_AddInt( sceneId, x6 )
                UICommand_AddInt( sceneId, z6 )
                UICommand_AddString(sceneId,nTarSceneName1);                
                UICommand_AddString(sceneId,nTarSceneName2);        
                UICommand_AddString(sceneId,nTarSceneName3);        
                UICommand_AddString(sceneId,nTarSceneName4);        
                UICommand_AddString(sceneId,nTarSceneName5);        
                UICommand_AddString(sceneId,nTarSceneName6);                                                                                                        
                EndUICommand( sceneId )
DispatchUICommand( sceneId, selfId,  1122361)
end
--**********************************
-- 
--**********************************
function x330059_MsgBox( sceneId, selfId, msg )
        BeginEvent( sceneId )
                AddText( sceneId, msg )
        EndEvent( sceneId )
        DispatchMissionTips( sceneId, selfId )
end

  • 打卡等级:热心大叔
  • 打卡总天数:94
  • 打卡月天数:17
  • 打卡总奖励:94
  • 最近打卡:2025-01-18 01:28:20
楼主
Waylee 楼主

主题

0

回帖

1万

积分

仙帝

积分
11931
Waylee 2020-8-14 13:53 | 显示全部楼层
\tlbb\Public\Data\Script\MyLua\chedifu\TongTianFuZhou.lua

-- 彻地符箓


x330060_g_scriptId = 330060
x330060_g_ItemId = 30008121
--银票
x330060_g_ItemId01 = 30000002
x330060_g_Yinpiao = 40002000
-- 限制使用传送功能的场景
x330060_g_NoChuangsongScn=
{
        441,                -- 监狱
        442,                -- 监狱
        443,                -- 监狱
        449,                -- 监狱
        450,                -- 监狱
        451,                -- 监狱
        452,                -- 监狱
        151,        -- 监狱
        125,        -- 监狱
        540,        -- 监狱
        184,        -- 监狱
        410,        -- 监狱
        544,        -- 监狱
        545,        -- 监狱
        546,        -- 监狱
        547,        -- 监狱
        548,        -- 监狱
        181,        -- 监狱
        433,        -- 监狱
        593,        -- 监狱
        564,        -- 监狱
        571,        -- 监狱
        128,        -- 监狱
        43,        -- 监狱
        561,
        562,
        599                -- 监狱
}

-- 限制使用彻地符箓定位的场景
x330060_g_UselessScn=
{
        441,                -- 监狱
        442,                -- 监狱
        443,                -- 监狱
        449,                -- 监狱
        450,                -- 监狱
        451,                -- 监狱
        452,                -- 监狱
        125,        -- 华山
        540,        -- 华山
        184,          -- 竞技场
        410,          -- 竞技场
        544,          -- 竞技场
        545,          -- 竞技场
        546,          -- 竞技场        
        547,  -- 竞技场
        548,  -- 竞技场
        414,  -- 竞技场
        181,  -- 竞技场
        433,  -- 竞技场
        593,  -- 竞技场
        564,  -- 竞技场
        517,  -- 竞技场
        128,  -- 竞技场
        43,  -- 竞技场
        561,
        562,
        599,                -- 监狱
        317, -- 争霸赛
        180, --凤凰战场
        191, --凤凰古城
}


--禁止传送到某些场景的等级限制....
x330060_g_LimitTransScene =
{
        {188,100},        --火焰山
        {423,90},        --火焰山
        {581,90},        --火焰山
        {582,90},        --火焰山
        {583,90},        --火焰山
        {584,90},        --火焰山
        {585,90},        --火焰山
        {519,90},        --火焰谷
        {424,90},        --高昌
        {520,90},        --高昌迷宫
        {425,90},        --塔里木
        {427,90},        --塔克拉玛干
        {186,75},        --楼兰
        {517,150},        --楼兰
        {128,150},        --楼兰
        {43,150},        --楼兰
        {431,90},       --大宛
        {432,90},       --汗血岭
        {546,200},       --汗血岭
}

x330060_g_Impact_NotTransportList = { 5929 } -- 禁止传送的Impact
x330060_g_TalkInfo_NotTransportList = { "#{GodFire_Info_062}" } -- 禁止传送的Impact提示信息
--缺省场景,仅显示需要
x330060_g_DefaultScn=
{
        {"#{DJTS_110509_34}",401,223,225},        --秦皇地宫二层
        {"#{DJTS_110509_35}",538,31,33},        --秦皇地宫四层
        {"#{DJTS_110509_36}",161,13,25},        --燕王古墓三层
        {"#{DJTS_110509_37}",165,25,108},        --燕王古墓七层
}
--**********************************
-- 事件交互入口
--**********************************
function x330060_OnDefaultEvent( sceneId, selfId, nItemIndex )
        
end

function x330060_IsSkillLikeScript( sceneId, selfId )
        return 1         --这个脚本需要动作支持
end

function x330060_CancelImpacts( sceneId, selfId )
        return 0         --不需要这个接口,但要保留空函数,并且始终返回0。
end

function x330060_OnDeplete( sceneId, selfId )
        return 1
end

--**********************************
-- 
--**********************************
function x330060_OnConditionCheck( sceneId, selfId , idid)

        local        bagId        = LuaFnGetBagIndexOfUsedItem( sceneId, selfId )
        
        -- 判断这个物品是不是已经定位
        if GetItemTableIndexByIndex(sceneId, selfId, bagId) ~= x330060_g_ItemId then
                return 0
        end
        --检测物品是否加锁
        if LuaFnLockCheck( sceneId, selfId, bagId, 0 ) < 0 then
                return 0
        end

        --检测Impact状态驻留效果
        for i, ImpactId in x330060_g_Impact_NotTransportList do
                if LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId, ImpactId) ~= 0 then
                        BeginEvent(sceneId)                        
                                AddText(sceneId, x330060_g_TalkInfo_NotTransportList[i]);
                        EndEvent(sceneId)
                        DispatchMissionTips(sceneId,selfId)
                        return 0
                end
        end

        --检测目标场景是否限制等级....
        for _, tmp in x330060_g_LimitTransScene do
                if ( (tmp[1] == nTarSceneId) and (GetLevel(sceneId, selfId) < tmp[2]) ) then
                        local szMsg = format("此场景需要%d级以上方可入内", tmp[2])
                        x330060_MsgBox( sceneId, selfId, szMsg)
                        return 0
                end
        end
        local myusepos = GetMissionData(sceneId,selfId,MD_ZDFS_Y)
        if myusepos < 1 or myusepos > 15 then
        --x330060_MsgBox( sceneId, selfId, "您的策地符篆已经损坏,无法使用了" )
        return 0
        end
        -- 1,检测这个物品是不是有记录的数据了,
        -- 需要记录的数据是,使用次数,定位场景Id,以及坐标
        local nCount = mod(GetMissionData( sceneId, selfId, MD_ZDFS_SCENE ),100)
        local myDingwei=x330060_ReadTxt( sceneId, selfId)
        local mydata = tonumber(myDingwei[myusepos])
        -- 执行传送
        local nTarSceneId = mod(mydata,1000)
        local nPointX = floor((mod(mydata,(10^6)))/10^3)
        local nPointZ = floor(mydata/(10^6))
        if nPointX==0 and nPointZ==0 and myusepos >= 1 and myusepos <= 4 then
        nTarSceneId = x330060_g_DefaultScn[myusepos][2]
        nPointX        = x330060_g_DefaultScn[myusepos][3]
        nPointZ        = x330060_g_DefaultScn[myusepos][4]
        end
        if  nPointX==0 and nPointZ==0  then
                x330060_MsgBox( sceneId, selfId, "彻地符箓这个定位点尚未定位,不能执行传送。" )
                return 0
        end

        return 1
end

--**********************************
-- 
--**********************************
function x330060_CallMe( sceneId, selfId, nItemIndex, PlayerGuid)        
        
        -- 检测这个玩家是不是能够使用彻地符箓定位
        --判断当前状态是否可使用定位符
        if IsHaveMission( sceneId, selfId, 4021 ) > 0 then
                x330060_MsgBox( sceneId, selfId, "您处于不允许传送的状态,不能使用彻地符箓传送!" )
                return 0
        end

        --检测玩家身上是不是有“银票”这个东西,有就不能使用这里的功能
        if GetItemCount(sceneId, selfId, x330060_g_Yinpiao) >= 1  then
                x330060_MsgBox(sceneId, selfId, "您处于不允许传送的状态,不能使用彻地符箓传送!")
                return 0
        end
        
        --检测玩家是不是处于不允许传送的场景,比如监狱
        for _, tmp in x330060_g_NoChuangsongScn do
                if tmp == sceneId then
                        x330060_MsgBox( sceneId, selfId, "此场景内不能使用彻地符箓传送!" )
                        return 0
                end
        end
        
        -- 检测玩家是不是处于摆摊状态,
        if LuaFnIsStalling(sceneId, selfId) == 1  then
                x330060_MsgBox( sceneId, selfId, "摆摊状态下,不能使用彻地符箓传送!" )
                return 0
        end
        
        -- 处于组队跟随状态下,不能传送
        if IsTeamFollow(sceneId, selfId) == 1  then
                x330060_MsgBox( sceneId, selfId, "你处于组队跟随状态,不能使用彻地符箓传送!" )
                return 0
        end
        
        -- [ QUFEI 2007-08-23 20:50 UPDATE BugID 23699 ]
        -- 处于使用交通工具状态下,不能传送
        local        inbus = LuaFnGetBusPassengerIDIsInBus(sceneId, selfId)
        -- PrintNum(inbus)
        if inbus == 1 then
                x330060_MsgBox( sceneId, selfId, "您处于无法使用传送的情况下,无法使用传送道具!" )
                return 0
        end
        
        --检测Impact状态驻留效果
        for i, ImpactId in x330060_g_Impact_NotTransportList do
                if LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId, ImpactId) ~= 0 then
                        BeginEvent(sceneId)                        
                                AddText(sceneId, x330060_g_TalkInfo_NotTransportList[i]);
                        EndEvent(sceneId)
                        DispatchMissionTips(sceneId,selfId)
                        return 0
                end
        end
        
        -- 看PlayerGuid 是不是队伍中的人,然后再看时间是不是过期,别的也没有什么能检查的了
        local Time = GetMissionData(sceneId,selfId,MD_ZDFS_TIME)
        local nTarSceneId = floor(GetMissionData(sceneId,selfId,MD_ZDFS_SCENE)/100)
        local posdata = GetMissionData(sceneId,selfId,MD_ZDFS_X)
        local x = mod(posdata,10^3)
        local z = floor(mod(posdata,10^6)/(10^3))
        
        --检测目标场景是否限制等级....
        for _, tmp in x330060_g_LimitTransScene do
                if ( (tmp[1] == nTarSceneId) and (GetLevel(sceneId, selfId) < tmp[2]) ) then
                        local szMsg = format("此场景需要%d级以上方可入内", tmp[2])
                        x330060_MsgBox( sceneId, selfId, szMsg)
                        return 0
                end
        end
        
        if LuaFnGetCurrentTime() - Time < 30  then
                CallScriptFunction((400900), "TransferFunc",sceneId, selfId, nTarSceneId, x, z)
        end

        SetMissionData(sceneId,selfId,MD_ZDFS_TIME,0)
        SetMissionData(sceneId,selfId,MD_ZDFS_SCENE,mod(GetMissionData(sceneId,selfId,MD_ZDFS_SCENE),100))
        SetMissionData(sceneId,selfId,MD_ZDFS_X,0)
        
end

--**********************************
-- 
--**********************************
function x330060_OnActivateOnce( sceneId, selfId )
        
        local        bagId        = LuaFnGetBagIndexOfUsedItem( sceneId, selfId )
        
        if bagId<0  then
                return 0
        end

        x330060_PlayerGoto( sceneId, selfId, bagId )

        
end

--**********************************
-- 
--**********************************
function x330060_MsgBox( sceneId, selfId, msg )
        BeginEvent( sceneId )
                AddText( sceneId, msg )
        EndEvent( sceneId )
        DispatchMissionTips( sceneId, selfId )
end


--**********************************
-- 打开彻底符
--**********************************
function x330060_Ce_DifuCs( sceneId, selfId,bagpos,key)

    local myDingwei=x330060_ReadTxt( sceneId, selfId)
    local strinseg = ""
        local index = 0
        local sceneName = ""
    for i = 1,15 do
        index =        tonumber(myDingwei[i])
        strinseg = strinseg..format("%06d",floor(mod(index,10^9)/(10^3)))
        if index > 0 then
        sceneName = sceneName..GetSceneName(mod(index,(10^3))).."|"
        else
        sceneName = sceneName.."|"
        end
        end
        if strinseg == nil or strinseg == "" then
        strinseg = strrep("0",90)
        end
        if sceneName == nil or sceneName == "" then
        sceneName = strrep("|",15)
        end
        index =        mod(GetMissionData(sceneId,selfId,MD_ZDFS_SCENE),100)
        BeginUICommand(sceneId)
            if key ~= nil and key == 1 then
                UICommand_AddInt(sceneId,0)
                UICommand_AddInt(sceneId,bagpos)
                else
                UICommand_AddInt(sceneId,1)
                UICommand_AddInt(sceneId,bagpos-1)
                end
                UICommand_AddInt(sceneId,index)
                UICommand_AddString(sceneId,strinseg)
                UICommand_AddString(sceneId,sceneName)
                EndUICommand(sceneId)
        DispatchUICommand(sceneId,selfId, 1122361)
end

--**********************************
-- 设置定位点
--**********************************
function x330060_SetPosition( sceneId, selfId,bagpos,bagitempos)
if bagpos == nil or bagpos < 0 or bagpos > 29 then
return
end
if bagitempos == nil or bagitempos < 0 or bagitempos > 14 then
return
end

        if LuaFnGetSceneType( sceneId ) == 1 or LuaFnGetSceneType( sceneId ) == 4 then
                x330060_MsgBox( sceneId, selfId, "副本或帮会城市内不能使用彻地符箓定位!" )
                return 0
        end
        for _, tmp in x330060_g_UselessScn do
                if tmp == sceneId then
                        x330060_MsgBox( sceneId, selfId, "此场景内无法使用彻地符箓定位!" )
                        return 0
                end
        end

        -- 0,物品安全性检查
        -- 先检测这个 bagpos 的物品是不是和当前的对应,
        if   GetItemTableIndexByIndex(sceneId, selfId, bagpos) ~= x330060_g_ItemId  then
                BeginEvent(sceneId)
                        AddText(sceneId,"  背包内部错误")
                EndEvent(sceneId)
                DispatchMissionTips(sceneId,selfId)
                return
        end
        
        --检测物品是否加锁
        if LuaFnLockCheck( sceneId, selfId, bagpos, 0 ) < 0 then
                x330060_MsgBox( sceneId, selfId, "此物品已被锁定!" )
                return 0
        end

        local x,z = GetWorldPos(sceneId, selfId)
        x,z = floor(x),floor(z)

        local myGuid = LuaFnGetGUID( sceneId, selfId)
        local string =""
        local handle = openfile("./Config/DingWei/DW"..tostring(myGuid )..".txt", "r")
        if nil ~= handle then
                for i=1, 15 do
                        local line=read(handle, "*l")
                        if line==nil then
                                line=0
                        end

                        if i == bagitempos+1 then 
                           line        = tonumber(sceneId+x*10^3+z*10^6)        
                        end        
                        string=string..line.."\n"
                end
         closefile(handle)
        end
        local handle = openfile("./Config/DingWei/DW"..tostring(myGuid )..".txt", "wb")
        if nil ~= handle  then
           write(handle,tostring(string))
           closefile(handle)
        end
        x330060_MsgBox( sceneId, selfId, "你的彻地符箓定位成功。")
end
--**********************************
-- 
--**********************************
function x330060_SetUISelIdx( sceneId, selfId,bagpos,bagitempos)
if bagpos == nil or bagpos < 0 or bagpos > 29 then
return
end
if bagitempos == nil or bagitempos < 0 or bagitempos > 14 then
return
end

-- 0,物品安全性检查
        -- 先检测这个 nItemIndex 的物品是不是和当前的对应,
        if  GetItemTableIndexByIndex(sceneId, selfId, bagpos) ~= x330060_g_ItemId  then

                return
        end

        -- 处于组队跟随状态下,不能传送
        if IsTeamFollow(sceneId, selfId) == 1  then
                return 0
        end
        
        --判断当前状态是否可使用定位符
        if IsHaveMission( sceneId, selfId, 4021 ) > 0 then
                return 0
        end

        --检测物品是否加锁
        if LuaFnLockCheck( sceneId, selfId, bagpos, 0 ) < 0 then
                return 0
        end

        --检测玩家身上是不是有“银票”这个东西,有就不能使用这里的功能
        if GetItemCount(sceneId, selfId, x330060_g_Yinpiao) >= 1  then
                return 0
        end
        
        --检测玩家是不是处于不允许传送的场景,比如监狱
        for _, tmp in x330060_g_NoChuangsongScn do
                if tmp == sceneId then
                        return 0
                end
        end
        
        -- 检测玩家是不是处于摆摊状态,
        if LuaFnIsStalling(sceneId, selfId) == 1  then
                return 0
        end
        
        --检测Impact状态驻留效果
        for i, ImpactId in x330060_g_Impact_NotTransportList do
                if LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId, ImpactId) ~= 0 then
                        BeginEvent(sceneId)                        
                                AddText(sceneId, x330060_g_TalkInfo_NotTransportList[i]);
                        EndEvent(sceneId)
                        DispatchMissionTips(sceneId,selfId)
                        return 0
                end
        end
SetMissionData(sceneId,selfId,MD_ZDFS_Y,bagitempos+1)        

end
--**********************************
-- 玩家自己的传送
--**********************************
function x330060_PlayerGoto( sceneId, selfId, nItemIndex )
-- 0,物品安全性检查
        -- 先检测这个 nItemIndex 的物品是不是和当前的对应,
        local myusepos = GetMissionData(sceneId,selfId,MD_ZDFS_Y)
        if myusepos < 1 or myusepos > 15 then
        x330060_MsgBox( sceneId, selfId, "不能传送到目标场景。" )
        return 0
        end
        if  GetItemTableIndexByIndex(sceneId, selfId, nItemIndex) ~= x330060_g_ItemId  then

                BeginEvent(sceneId)
                        AddText(sceneId,"  背包内部错误")
                EndEvent(sceneId)
                DispatchMissionTips(sceneId,selfId)
                return 0
        end

        -- 处于组队跟随状态下,不能传送
        if IsTeamFollow(sceneId, selfId) == 1  then
                x330060_MsgBox( sceneId, selfId, "你处于组队跟随状态,不能使用彻地符箓传送!" )
                return 0
        end
        
        --判断当前状态是否可使用定位符
        if IsHaveMission( sceneId, selfId, 4021 ) > 0 then
                x330060_MsgBox( sceneId, selfId, "您处于不允许传送的状态,不能使用彻地符箓传送!" )
                return 0
        end

        --检测物品是否加锁
        if LuaFnLockCheck( sceneId, selfId, nItemIndex, 0 ) < 0 then
                x330060_MsgBox( sceneId, selfId, "此物品已被锁定!" )
                return 0
        end

        --检测玩家身上是不是有“银票”这个东西,有就不能使用这里的功能
        if GetItemCount(sceneId, selfId, x330060_g_Yinpiao) >= 1  then
                x330060_MsgBox(sceneId, selfId, "您处于不允许传送的状态,不能使用彻地符箓传送!")
                return 0
        end
        
        --检测玩家是不是处于不允许传送的场景,比如监狱
        for _, tmp in x330060_g_NoChuangsongScn do
                if tmp == sceneId then
                        x330060_MsgBox( sceneId, selfId, "此场景内不能使用彻地符箓传送!" )
                        return 0
                end
        end
        
        -- 检测玩家是不是处于摆摊状态,
        if LuaFnIsStalling(sceneId, selfId) == 1  then
                x330060_MsgBox( sceneId, selfId, "摆摊状态下,不能使用彻地符箓传送!" )
                return 0
        end
        
        --检测Impact状态驻留效果
        for i, ImpactId in x330060_g_Impact_NotTransportList do
                if LuaFnHaveImpactOfSpecificDataIndex(sceneId, selfId, ImpactId) ~= 0 then
                        BeginEvent(sceneId)                        
                                AddText(sceneId, x330060_g_TalkInfo_NotTransportList[i]);
                        EndEvent(sceneId)
                        DispatchMissionTips(sceneId,selfId)
                        return 0
                end
        end
        
        -- 1,检测这个物品是不是有记录的数据了,
        -- 需要记录的数据是,使用次数,定位场景Id,以及坐标
        local myDingwei=x330060_ReadTxt( sceneId, selfId)
        local nCount = mod(GetMissionData( sceneId,selfId,MD_ZDFS_SCENE),100)
        local mydata = tonumber(myDingwei[myusepos])
        -- 执行传送
        local nTarSceneId = mod(mydata,1000)
        local nPointX = floor((mod(mydata,(10^6)))/10^3)
        local nPointZ = floor(mydata/(10^6))
        if nPointX==0 and nPointZ==0 and myusepos >= 1 and myusepos <= 4 then
        nTarSceneId = x330060_g_DefaultScn[myusepos][2]
        nPointX        = x330060_g_DefaultScn[myusepos][3]
        nPointZ        = x330060_g_DefaultScn[myusepos][4]
        end
        if  nPointX==0 and nPointZ==0  then
                x330060_MsgBox( sceneId, selfId, "彻地符箓这个定位点尚未定位,不能执行传送。" )
                return
        end
        if nCount >= 99 then
        x330060_MsgBox( sceneId, selfId, "#{DJTS_110509_51}" )
        return 
        end
        -- 检查目标场景是不是能够到达
        if sceneId ~= nTarSceneId then
                if IsCanNewWorld( sceneId, selfId, nTarSceneId, nPointX, nPointZ ) ~= 1 then
                        x330060_MsgBox( sceneId, selfId, "不能传送到目标场景。" )
                        return 0
                end
        end
        for _, tmp in x330060_g_LimitTransScene do
                if ( (tmp[1] == nTarSceneId) and (GetLevel(sceneId, selfId) < tmp[2]) ) then
                        local szMsg = format("此场景需要%d级以上方可入内", tmp[2])
                        x330060_MsgBox( sceneId, selfId, szMsg)
                        return 0
                end
        end
        SetMissionData( sceneId, selfId, MD_ZDFS_SCENE,nCount+1 )
        SetMissionData(sceneId,selfId,MD_ZDFS_Y,0)
                -- 获得玩家队伍中在附近的队员
                local nTeamCount = GetNearTeamCount(sceneId,selfId)
                local selfGuid = LuaFnGetGUID(sceneId,selfId)
                
                local nTarSceneName = GetSceneName(nTarSceneId)
                if nTeamCount > 0  then
                        for i=0, nTeamCount-1  do
                                local nPlayerId = GetNearTeamMember(sceneId,selfId, i)
                                if nPlayerId ~= selfId and LuaFnIsCharacterLiving(sceneId, nPlayerId) == 1 then
                                        -- 给这个玩家发送一个传送邀请
                                        local str = "你的队友" .. GetName(sceneId, selfId) .. "使用了彻地符箓,回到了【" .. nTarSceneName .. "】,你是否也要跟着一起传送?注意:超过20秒仍未做决定将取消传送。"
                                        BeginUICommand(sceneId)
                                                UICommand_AddInt(sceneId,x330060_g_scriptId);
                                                UICommand_AddInt(sceneId,nItemIndex)
                                                UICommand_AddInt(sceneId,selfGuid)
                                                UICommand_AddString(sceneId,"CallMe");
                                                UICommand_AddString(sceneId,str);
                                        EndUICommand(sceneId)
                                        DispatchUICommand(sceneId,nPlayerId, 1009)
                                        
                                        -- 同时把这些重要数据记录到MissionData中
        SetMissionData(sceneId,nPlayerId,MD_ZDFS_TIME,        LuaFnGetCurrentTime())
        SetMissionData(sceneId,nPlayerId,MD_ZDFS_SCENE,mod(GetMissionData(sceneId,nPlayerId,MD_ZDFS_SCENE),100)+nTarSceneId*100)
        SetMissionData(sceneId,nPlayerId,MD_ZDFS_X,        nPointX+nPointZ*10^3)
                                                         end
                        end
                     end

                -- 传送自己
                CallScriptFunction((400900), "TransferFunc",sceneId, selfId, nTarSceneId, nPointX, nPointZ)

end

--**********************************
-- 
--**********************************
function x330060_AddFuZhou( sceneId, selfId,bagpos)
if bagpos == nil or bagpos < 0 or bagpos > 29 then
return
end
        if LuaFnGetSceneType( sceneId ) == 1 or LuaFnGetSceneType( sceneId ) == 4 then
                x330060_MsgBox( sceneId, selfId, "副本或帮会城市内不能使用彻地符箓定位!" )
                return 0
        end
        for _, tmp in x330060_g_UselessScn do
                if tmp == sceneId then
                        x330060_MsgBox( sceneId, selfId, "此场景内无法使用彻地符箓定位!" )
                        return 0
                end
        end

        -- 0,物品安全性检查
        -- 先检测这个 bagpos 的物品是不是和当前的对应,
        if   GetItemTableIndexByIndex(sceneId, selfId, bagpos) ~= x330060_g_ItemId  then

                BeginEvent(sceneId)
                        AddText(sceneId,"  背包内部错误")
                EndEvent(sceneId)
                DispatchMissionTips(sceneId,selfId)
                return
        end
        
        --检测物品是否加锁
        if LuaFnLockCheck( sceneId, selfId, bagpos, 0 ) < 0 then
                x330060_MsgBox( sceneId, selfId, "此物品已被锁定!" )
                return 0
        end
        
local fuzuoid = LuaFnGetAvailableItemCount(sceneId, selfId, 30008122)
if fuzuoid < 1 then
x330060_MsgBox( sceneId, selfId, "#{DJTS_110509_28}" )
return
end
local nCount        = mod(GetMissionData( sceneId, selfId, MD_ZDFS_SCENE ),100)
if nCount == 0 then
                x330060_MsgBox( sceneId, selfId, "#{DJTS_110509_29}" )
                return 0
end
if LuaFnDelAvailableItem(sceneId,selfId,30008122,1) ~= 1 then
x330060_MsgBox( sceneId, selfId, "#{DJTS_110509_28}" )
return 
end
nCount = nCount - 10
if nCount < 0 then
nCount = 0
end
SetMissionData( sceneId, selfId, MD_ZDFS_SCENE,nCount )
x330060_Ce_DifuCs( sceneId, selfId,bagpos,1)
x330060_MsgBox( sceneId, selfId, "#{DJTS_110509_30}" )
end




function x330060_ReadTxt( sceneId, selfId)
local myGuid = LuaFnGetGUID( sceneId, selfId)
local myDingwei={}
local handle = openfile("./Config/DingWei/DW"..tostring(myGuid)..".txt", "r")
    if nil ~= handle then
                for i=1, 15 do
                        local line=read(handle, "*l")
                        if line==nil then
                                line=0
                        end
                        myDingwei[i]=tonumber(line)                                
                end
        closefile(handle)
     else

        local string =""
        for j =1,15 do 
            string=string.."0".."\n"
            myDingwei[j]=0
        end
        local handle = openfile("./Config/DingWei/DW"..tostring(myGuid )..".txt", "wb")
        if nil ~= handle  then
           write(handle,tostring(string))
           closefile(handle)
        end                
     end
   return myDingwei
end

您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-1-18 18:50 , Processed in 0.108740 second(s), 8 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

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