文章编辑人员:雪舞
内容测试时间:2023-8-19 15:39:19
local firstbyte = strbyte(card)
--'k' 体育卡
if 107 == firstbyte then
if GetMissionFlag( sceneId, selfId, MF_ActiveSportsCard ) == 1 then
x888899_NotifyFailBox( sceneId, selfId, targetId, " 你已经领取过活动奖励,不能重复领取。" )
return
end
--'t' 新手卡
elseif 116 == firstbyte or 115 == firstbyte then
if GetMissionFlag( sceneId, selfId, MF_ActiveNewUserCard ) == 1 then
x888899_NotifyFailBox( sceneId, selfId, targetId, " 你已经激活过财富卡,无法再次激活领取条件。" )
return
end
elseif 99 == firstbyte then
if GetMissionFlag( sceneId, selfId, MF_ActiveNewUserCard666 ) == 1 then
x888899_NotifyFailBox( sceneId, selfId, targetId, " 你已经启动过超级大力卡,无法再次启动领取条件。" )
return
end
end
解释:
在Lua中,string.byte(通常简写为strbyte)是一个函数,用于获取字符串中字符的整数值。对于ASCII字符,这将是其ASCII值。对于非ASCII字符,这会更复杂,尤其是在UTF-8编码的情况下。
使用string.byte(s, i),你可以获取字符串s中第i个字符的byte值。如果不提供i,默认为1,即第一个字符。
例如:
local s = "hello"
print(string.byte(s, 1)) -- 打印 "h" 的ASCII值: 104
print(string.byte(s, 2)) -- 打印 "e" 的ASCII值: 101
但是,对于多字节字符(如UTF-8编码的中文字符),你会得到该字符的第一个byte值。例如:
local s = "擂"
print(string.byte(s, 1)) -- 打印 "擂" 的第一个UTF-8 byte
这就是为什么你看到的“擂”字符的byte值为194或192的原因。这些只是UTF-8编码中该字符的第一个byte。如果你想看到整个字符的所有byte值,你需要考虑该字符在UTF-8中的所有byte。
|