找回密码
 register

QQ登录

只需一步,快速开始

查看: 283|回复: 0

[游戏教程] 徒弟教程:解决帮会令牌霸王令宝石评分等级显示异常 不显示

[复制链接]

[游戏教程] 徒弟教程:解决帮会令牌霸王令宝石评分等级显示异常 不显示

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

主题

0

回帖

1万

积分

仙帝

积分
12365
Waylee 2023-7-4 15:36 | 显示全部楼层 |阅读模式

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

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

×
文章编辑人员:雪舞
内容测试时间:2023-7-4 15:34:36
测试版本:新武侠世界

有问题的代码:
function x900011_RefreshEquipGemGrade(sceneId,selfId,EquipBagIndex,GemPos)

        local NowGemInfo = {} --宝石信息组
        local FinalData = ""
        local GemXiulian,GemJingJie = 0,0
        local nGem1,nGem2,nGem3,nGem4 = LuaFnGetGemInfoInEquip(sceneId,selfId,EquipBagIndex)
        local nGemData = {nGem1,nGem2,nGem3,nGem4}
        for i = 1,4 do
                if nGemData[i] ~= -1 and nGemData[i] ~= 0 then
                        tinsert(NowGemInfo,nGemData[i])
                end
        end
        
        for i = 1,getn(NowGemInfo) do --计算原有评分
                local nGrade_1,nGrade_2 = LuaFnGetGemGradeInfo(NowGemInfo[i]);
                GemXiulian = GemXiulian + nGrade_1
                GemJingJie = GemJingJie + nGrade_2
        end
        if GemPos ~= nil then --处理摘除时的特殊情况!!!
            local Gem_SplitID = LuaFnGetItemTableIndexByIndex( sceneId, selfId, GemPos )
                local nGrade_1,nGrade_2 = LuaFnGetGemGradeInfo(Gem_SplitID);
                GemXiulian = GemXiulian - nGrade_1
                GemJingJie = GemJingJie - nGrade_2
        end

        local _,Data = LuaFnGetItemCreator(sceneId, selfId, EquipBagIndex)
    local FinalGrade = ""
        if GemXiulian > 1 and GemXiulian < 100 then --特殊情况
                FinalGrade = "0"..tostring(GemXiulian)
        end
        if GemXiulian >= 100 and GemXiulian < 1000 then
                FinalGrade = tostring(GemXiulian)
        end
        if GemXiulian == 0 or GemXiulian < 0 then --做一次极端情况处理
            FinalData = ""
    else 
                FinalData = "&BS"..tostring(FinalGrade)
        end

        if Data ~= nil and Data ~= "" then
                if strfind(Data,"&BS") ~=nil then
                        if getn(NowGemInfo) == 0 then --没有宝石
                            FinalData = gsub(Data,"&BS(%w%w%w)","")
                    else
                                FinalData = gsub(Data,"&BS(%w%w%w)",FinalData)
                        end
                else
                        FinalData = Data..FinalData
                end
                LuaFnSetItemCreator( sceneId, selfId, EquipBagIndex, FinalData )
        else
                LuaFnSetItemCreator( sceneId, selfId, EquipBagIndex, FinalData )
        end
end   




我看到的代码是处理宝石级别的Lua函数,你提到的问题看起来是在处理宝石级别时,对于一位数级别的宝石,代码生成的字符串只有2位数字,而你需要3位数字。这可能是因为对于宝石级别的处理方式没有正确处理一位数级别的情况。

在这个函数中,你是用一个字符串 'FinalGrade' 来表示宝石的级别。对于一位数级别的宝石,你只添加了一个 '0' 前缀,所以生成的字符串只有2位数字。对于二位数和三位数级别的宝石,你没有添加任何前缀,所以生成的字符串有2位或3位数字。

你可能需要在一位数级别的宝石前添加两个 '0' ,以保证所有的级别字符串都有3位数字。你可以通过修改这个部分的代码来实现这个目标:

    if GemXiulian > 1 and GemXiulian < 10 then --特殊情况
        FinalGrade = "00"..tostring(GemXiulian)
    end
    if GemXiulian >= 10 and GemXiulian < 100 then
        FinalGrade = "0"..tostring(GemXiulian)
    end
    if GemXiulian >= 100 and GemXiulian < 1000 then
        FinalGrade = tostring(GemXiulian)
    end


有个问题出现了&BS04的情况 ,一般情况下都是&BS040,使用新代码后,这样应该就可以解决你的问题了。

解决后:
帮会令牌.jpg
您需要登录后才可以回帖 登录 | register

本版积分规则

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

GMT+8, 2025-1-20 10:53 , Processed in 0.128926 second(s), 9 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

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