在客户端中 local hid,lid = Pet:GetGUID(从0开始到n);
可以获得选中的第N个宠物hid,lid标识,通过服务端的x900009_GetPetDataBase函数进行判断是否是幻灵宠物。
返回值nPetData中,nPetData[15] == 0表示未幻化,1为已幻化
问题1,如何与服务器数据对比?
弊端:单纯的客户端限制(服务端已加密,无法修改),导致如果玩家绕过服务器,使用内挂进行放生,意味着我们无能为力了!
--**********************************
--读取珍兽数据
--**********************************
function x900009_GetPetDataBase(sceneId,selfId,hid,nid)
local handle = openfile("./XYD_DataBase/PetSystem/LID"..tostring(nid)..".txt", "r")
local nPetData = {}
if handle and nil ~= handle then
local nLineData = ""
for i = 1,17 do
nLineData = read(handle, "*l")
if nLineData == nil then
nLineData = 0 --这里防止异常错误
end
--珍兽装备数据
if i >= 1 and i <= 5 then
local pos1,pos2,nEquipID,nEquipAdpt_1,nEquipAdpt_2 = strfind(nLineData,"(.*)\t(.*)\t(.*)")
if pos1 ~= nil and pos2 ~=nil then
nPetData[i] = {tonumber(nEquipID),tonumber(nEquipAdpt_1),tonumber(nEquipAdpt_2)}
else
nPetData[i] = {0,0,0}
end
else
--其他额外数据
nPetData[i] = tonumber(nLineData);
end
end
closefile(handle)
else
for i = 1,17 do
if i >= 1 and i <= 5 then
nPetData[i] = {0,0,0}
else
nPetData[i] = 0;
end
end
end
--重置数据
return nPetData
end
|