找回密码
 register

QQ登录

只需一步,快速开始

查看: 86|回复: 1

传输字符串到客户端函数的一次修改案例 UICommand_AddString( sceneId,nEchoData)

[复制链接]

传输字符串到客户端函数的一次修改案例 UICommand_AddString( sceneId,nEchoData)

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

主题

0

回帖

1万

积分

仙帝

积分
12364
Waylee 2023-5-8 20:25 | 显示全部楼层 |阅读模式

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

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

×
文章编辑人员:雪舞
内容测试时间:2023-5-8 20:22:58
测试版本:新武侠世界

问题出在今天加新附体幻色的时候,发现UICommand_AddString( sceneId,nEchoData) 函数最多一次传输十五次,这样就导致了一个问题。服务端数据显示正常,到客户端就是缺斤少两的数据了。

\home\tlbb\Public\Data\Script\XYJ\Shop_Dress\NewExterior.lua
服务端修改案例:
function x990114_NewExterior_FuTiBox(sceneId,selfId,nIndex)
        --首先看看背包有没有对应装备
        local nFinPos = -1
        for i = 0,29 do
                if LuaFnGetBagEquipType( sceneId, selfId, i ) == 4 then
                        nFinPos = i
                end
        end        
        if nFinPos == -1 then
                nFinPos = TryRecieveItem(sceneId,selfId,10211001,1)
        end
        local nPossVisualData = x990114_GetPossVisualData(sceneId,selfId)
        local gg = 0
        BeginUICommand( sceneId )
                UICommand_AddInt( sceneId,nFinPos)
                for i = 1,21 do
                        local nEchoData = ""
                        for j = 1,9 do
                                nEchoData = nEchoData..nPossVisualData[i][j]
                        end
                        UICommand_AddString( sceneId,nEchoData)
                        -- AddGlobalCountNews( sceneId, i..":   "..nEchoData)
                end
        EndUICommand( sceneId )
        DispatchUICommand( sceneId, selfId, 202201271 )
end





从每次都传输一次,改成三次传输一次:
function x990114_NewExterior_FuTiBox(sceneId,selfId,nIndex)
    --首先看看背包有没有对应装备
    local nFinPos = -1
    for i = 0,29 do
        if LuaFnGetBagEquipType( sceneId, selfId, i ) == 4 then
            nFinPos = i
        end
    end 
    if nFinPos == -1 then
        nFinPos = TryRecieveItem(sceneId,selfId,10211001,1)
    end
    local nPossVisualData = x990114_GetPossVisualData(sceneId,selfId)
    local gg = 0
    BeginUICommand( sceneId )
    UICommand_AddInt( sceneId,nFinPos)
    for i = 1,21,3 do
        local nEchoData = ""
        for k = 0,2 do
            if i + k <= 21 then
                for j = 1,9 do
                    nEchoData = nEchoData..nPossVisualData[i + k][j]
                end
            end
        end
        UICommand_AddString( sceneId,nEchoData)
        -- AddGlobalCountNews( sceneId, i..":   "..nEchoData)
    end
    EndUICommand( sceneId )
    DispatchUICommand( sceneId, selfId, 202201271 )
end




M:\新武侠世界2023启程\临时更新补丁\Interface\NewExterior_PetPossJian\NewExterior_PetPossJian.lua
客户端同步需要修改一下,触发方式的改变:
原来的代码:
for i = 1, 21 do
                        local tempmd = Get_XParam_STR(i - 1)
                        if tempmd ~= nil and tempmd ~= "" then
                                for j = 1, 21 do
                                        if tonumber(string.sub(tempmd,j,j)) ~= 0 then
                                                g_Huanse_IconVisList[i][j] = 1
                                        end
                                end
                        end
                end


修改后的代码:
for i = 1, 21, 3 do
    local tempmd = Get_XParam_STR(math.floor((i - 1) / 3))
    if tempmd ~= nil and tempmd ~= "" then
        for k = 0, 2 do
            if i + k <= 21 then
                local offset = k * 9
                for j = 1, 9 do
                    if tonumber(string.sub(tempmd, offset + j, offset + j)) ~= 0 then
                        g_Huanse_IconVisList[i + k][j] = 1
                    end
                end
            end
        end
    end
end



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

主题

0

回帖

1万

积分

仙帝

积分
12364
Waylee 2023-5-9 00:11 | 显示全部楼层
\home\tlbb\Public\Data\Script\XYJ\PetSystem\pet_possvisual.lua

function x889383_UpdateHuanSe(sceneId, selfId)
    --幻色数据库读取
    local nPossVisualData = x889383_GetPossVisualData(sceneId, selfId)
    if nPossVisualData ~= nil then
        BeginUICommand(sceneId)
        for i = 1, 21, 3 do
            local nEchoData = ""
            for k = 0, 2 do
                if i + k <= 21 then
                    for j = 1, 9 do
                        nEchoData = nEchoData .. nPossVisualData[i + k][j]
                    end
                end
            end
            UICommand_AddString(sceneId, nEchoData)
        end
        EndUICommand(sceneId)
        DispatchUICommand(sceneId, selfId, 8893833)
    end
end



客户端:
for i = 1, g_Huanse_MaxTypeCount, 3 do
                        local tempmd = Get_XParam_STR(math.floor((i - 1) / 3))
                        if tempmd ~= nil and tempmd ~= "" then
                                for k = 0, 2 do
                                        if i + k <= g_Huanse_MaxTypeCount then
                                                local offset = k * g_Huanse_MaxColorCount
                                                for j = 1, g_Huanse_MaxColorCount do
                                                        if tonumber(string.sub(tempmd, offset + j, offset + j)) ~= 0 then
                                                                g_Huanse_IconVisList[i + k][j] = 1
                                                        end
                                                end
                                        end
                                end
                        end
                end


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

本版积分规则

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

GMT+8, 2025-1-19 23:07 , Processed in 0.101855 second(s), 7 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

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