读用本地数据,写用网络数据, 同时网络更新

来源:互联网 发布:秦皇岛相对湿度数据 编辑:程序博客网 时间:2024/06/07 05:23
function ZcBase(_CONST_PAR)local m_public = {}local m_protected = {}m_protected.data = {}m_protected.data.CONST_PAR = _CONST_PAR or{T_GROUP_PLAYER_MAX = 1,T_GROUP_MAX = 1,SU_S = {0, 0},SU_E = {0, 0},ET_S = {0, 0},ET_E = {0, 0},LM = 0,}m_protected.data.tGropu1 = {}m_protected.data.tGropu2 = {}m_protected.data.tGropu3 = {}m_protected.data.tHadPlayer = {}m_protected.data.lasterError = "UnKnow"--初始化function m_public.Init(_data)myPrint("初始化未实现",1)end--是否可报名时间段function m_public.i_CanSignUp()--时间检验local curTime = d_getCurrentDayTime()local st = T2I(m_protected.data.CONST_PAR.SU_S[1], m_protected.data.CONST_PAR.SU_S[2], 0)local et = T2I(m_protected.data.CONST_PAR.SU_E[1], m_protected.data.CONST_PAR.SU_E[2], 0)if curTime < st thenreturn -1elseif curTime > et thenreturn 1endreturn 0end--是否可进场时间段function m_public.i_CanEnter()--时间检验local curTime = d_getCurrentDayTime()local st = T2I(m_protected.data.CONST_PAR.ET_S[1], m_protected.data.CONST_PAR.ET_S[2], 0)local et = T2I(m_protected.data.CONST_PAR.ET_E[1], m_protected.data.CONST_PAR.ET_E[2], 0)myPrint(curTime .. ":" .. st .. ":" .. et, 1)if curTime < st thenreturn -1elseif curTime > et thenreturn 1endreturn 0end--报名function m_public.SetGroupID(_from, _playerID, _ChooseID)myPrint("报名未实现",1)end--进入function m_public.SetPlayer(_from, _playerID)myPrint("进场未实现",1)end--获得最新的错误function m_public.GetError(_playerID)return m_protected.data.lasterErrorend--获得数据function m_public.GetData()return m_protected.dataendreturn m_public, m_protectedendfunction API_MultiBroadcast(_Key, _Context, _CallBack)if nil == _Context thenreturn _CallBack()endlocal dLen = table.getn(_Context)if 0 == dLen thenreturn _CallBack()elseif 1 == dLen thenreturn _CallBack(_Context[1])elseif 2 == dLen thenreturn _CallBack(_Context[1], _Context[2])elseif 3 == dLen thenreturn _CallBack(_Context[1], _Context[2], _Context[3])elseif 4 == dLen thenreturn _CallBack(_Context[1], _Context[2], _Context[3], _Context[4])elseif 5 == dLen thenreturn _CallBack(_Context[1], _Context[2], _Context[3], _Context[4], _Context[5])elseif 6 == dLen thenreturn _CallBack(_Context[1], _Context[2], _Context[3], _Context[4], _Context[5], _Context[6])elseif 7 == dLen thenreturn _CallBack(_Context[1], _Context[2], _Context[3], _Context[4], _Context[5], _Context[6], _Context[7])elseif 8 == dLen thenreturn _CallBack(_Context[1], _Context[2], _Context[3], _Context[4], _Context[5], _Context[6], _Context[7], _Context[8])elseif 9 == dLen thenreturn _CallBack(_Context[1], _Context[2], _Context[3], _Context[4], _Context[5], _Context[6], _Context[7], _Context[8], _Context[9])elseif 10 == dLen thenreturn _CallBack(_Context[1], _Context[2], _Context[3], _Context[4], _Context[5], _Context[6], _Context[7], _Context[8], _Context[9], _Context[10])elseif 11 == dLen thenreturn _CallBack(_Context[1], _Context[2], _Context[3], _Context[4], _Context[5], _Context[6], _Context[7], _Context[8], _Context[9], _Context[10], _Context[11])elseif 12 == dLen thenreturn _CallBack(_Context[1], _Context[2], _Context[3], _Context[4], _Context[5], _Context[6], _Context[7], _Context[8], _Context[9], _Context[10], _Context[11], _Context[12])elseif 13 == dLen thenreturn _CallBack(_Context[1], _Context[2], _Context[3], _Context[4], _Context[5], _Context[6], _Context[7], _Context[8], _Context[9], _Context[10], _Context[11], _Context[12], _Context[13])elsemyPrint("API_MultiBroadcast",1)--------------------------------------------------------return trueendendG_ZcMediumData = nilt_G_ZcClientData_S = {}function ZcMediumData(_CONST_PAR)local m_public, m_protected = ZcBase(_CONST_PAR)--刷新function m_public.UpdataDate()local dLen = table.getn(t_G_ZcClientData_S)for i=1, dLen doAPI_MultiBroadcast(0, {m_protected.data}, t_G_ZcClientData_S[i].Init)endend--报名function m_public.SetGroupID(_pClient, _playerID, _ChooseID)--myPrint("服务器报名" .. _playerID .."->" .. _ChooseID,1)--帮会归属检验local GroupID = d_getPlayerFaction(_playerID)if GroupID <= 0 thenreturn falseend--时间检验local iRet = m_public.i_CanSignUp()if 0 ~= iRet thenif iRet < 0 thenm_protected.data.lasterError = "未到报名时间"elsem_protected.data.lasterError = "已超过报名时间"endAPI_MultiBroadcast(0, {m_protected.data}, _pClient.Ret_CallBack)returnend--报名检验local tG = {m_protected.data.tGropu1, m_protected.data.tGropu2, m_protected.data.tGropu3}for j=1, 3 dolocal dLen = table.getn(tG[j])for i=1, dLen doif tG[j][i] == GroupID thenm_protected.data.lasterError = "玩家所处帮会已报过名"API_MultiBroadcast(0, {m_protected.data}, _pClient.Ret_CallBack)returnendendend--选择检验if _ChooseID >= 1 and _ChooseID <= 3 thentG[_ChooseID][table.getn(tG[_ChooseID]) + 1] = GroupIDm_protected.data.lasterError = "OK"API_MultiBroadcast(0, {m_protected.data}, _pClient.Ret_CallBack)m_public.UpdataDate()elsem_protected.data.lasterError = "不存在玩家要报名的副本"API_MultiBroadcast(0, {m_protected.data}, _pClient.Ret_CallBack)endend--进入function m_public.SetPlayer(_pClient, _playerID)--myPrint("服务器进场" .. _playerID,1)--帮会归属检验local GroupID = d_getPlayerFaction(_playerID)if GroupID <= 0 thenreturn falseend--报名检验local choose = nillocal tG = {m_protected.data.tGropu1, m_protected.data.tGropu2, m_protected.data.tGropu3}for j=1, 3 dolocal dLen = table.getn(tG[j])for i=1, dLen doif tG[j][i] == GroupID thenchoose = jbreakendendif nil ~= choose thenbreakendendif nil == choose thenm_protected.data.lasterError = "玩家所属帮会未报过名"API_MultiBroadcast(0, {m_protected.data}, _pClient.Ret_CallBack)returnend--时间检验local iRet = m_public.i_CanEnter()if 0 ~= iRet thenif iRet < 0 thenm_protected.data.lasterError = "未到入场时间"elsem_protected.data.lasterError = "已超过入场时间"endAPI_MultiBroadcast(0, {m_protected.data}, _pClient.Ret_CallBack)returnend--入场检验local dLen = table.getn(m_protected.data.tHadPlayer)for i=1, dLen doif _playerID == m_protected.data.tHadPlayer[i] thenm_protected.data.lasterError = "玩家已进入过本次副本"API_MultiBroadcast(0, {m_protected.data}, _pClient.Ret_CallBack)returnendendm_protected.data.tHadPlayer[table.getn(m_protected.data.tHadPlayer) + 1] = _playerIDm_protected.data.lasterError = "OK"_pClient.Ret_CallBack(m_protected.data)m_public.UpdataDate()endreturn m_publicendfunction ZcClientData()local m_public, m_protected = ZcBase()--结果回调函数function m_public.Ret_CallBack(_data)m_protected.data = _datamyPrint(m_protected.data.lasterError, 1)end--初始数据function m_public.Init(_data)m_protected.data = _datamyPrint("客户端初始化数据",1)end--读本地数据function m_public.Read()myPrint("客户端读数据",1)end--报名function m_public.SetGroupID(_from, _playerID, _ChooseID)--服务器报名API_MultiBroadcast(0, {m_public, _playerID, _ChooseID}, G_ZcMediumData.SetGroupID)end--进入function m_public.SetPlayer(_from, _playerID)--服务器进场API_MultiBroadcast(0, {m_public, _playerID}, G_ZcMediumData.SetPlayer)endreturn m_publicendSERVER_CONST_PAR ={T_GROUP_PLAYER_MAX = 1,T_GROUP_MAX = 1,SU_S = {15, 0},SU_E = {16, 0},ET_S = {16, 0},ET_E = {17, 0},LM = 0,}SERVER_CONST_PAR1 ={T_GROUP_PLAYER_MAX = 1,T_GROUP_MAX = 1,SU_S = {18, 0},SU_E = {20, 0},ET_S = {20, 0},ET_E = {21, 0},LM = 0,}function UpdataDate_ZcMediumData()G_ZcMediumData = ZcMediumData(SERVER_CONST_PAR)t_G_ZcClientData_S[1] = ZcClientData()G_ZcMediumData.UpdataDate()endUpdataDate_ZcMediumData()function UpdataDate_ZcClientData(_pClient)if 0 ~= _pClient.i_CanSignUp() thenmyPrint(" false == _pClient.CanSignUp() ", 1)G_ZcMediumData = ZcMediumData(SERVER_CONST_PAR1)G_ZcMediumData.UpdataDate()endendfunction GetCurrentClientData()return t_G_ZcClientData_S[1]endAPI_AddLUAReqFunc("SsYgZc_Choose")function SsYgZc_Choose(_dRole, _NPCID, _TaskID)local lNpcFastID = API_VarDataGetNumber(_dRole, 0, 32712)LuaPack_API_GetNpcAllTask(lNpcFastID, _dRole)local curClient = GetCurrentClientData()UpdataDate_ZcClientData(curClient)if 0 ~= curClient.i_CanSignUp() thenAPI_ResponseWrite('<a size="13" color="175,216,242" >' .. "目前时间段无副本开放" ..'</a><br>')elselocal data = curClient.GetData()API_ResponseWrite('<a size="13" color="175,216,242" >' .. "报名时间["..data.CONST_PAR.SU_S[1]  .. ":" .. data.CONST_PAR.SU_S[2]   .. "->" .. data.CONST_PAR.SU_E[1]  ..  ":" .. data.CONST_PAR.SU_E[2] .."]" ..'</a><br>')API_ResponseWrite('<a size="13" color="175,216,242" >' .. "入场时间["..data.CONST_PAR.ET_S[1]  .. ":" .. data.CONST_PAR.ET_S[2]   .. "->" .. data.CONST_PAR.ET_E[1]  ..  ":" .. data.CONST_PAR.ET_E[2] .."]" ..'</a><br>')local tG = {data.tGropu1, data.tGropu2, data.tGropu3}for i=1, 3 dolocal szGroupID = "{"local dLen = table.getn(tG[i])for j=1, dLen doszGroupID = szGroupID  .. tG[i][j]if j ~= dLen thenszGroupID = szGroupID .. "|"endendszGroupID = szGroupID .. "}"API_ResponseWrite(ChuanSongStr..'<a size="13" color="175,216,242" href="SsYgZc_SignUp?1='.._dRole..'&2='.._NPCID..'&3='.. i ..'">' .. '击杀Boss' .. i ..szGroupID .. '</a><br>')endendendAPI_AddLUAReqFunc("SsYgZc_SignUp")function SsYgZc_SignUp()local dRoleID= API_RequestGetNumber(1)local dNPCID= API_RequestGetNumber(2)local dTaskID= API_RequestGetNumber(3)local curClient = GetCurrentClientData()curClient.SetGroupID(nil, dRoleID, dTaskID)endAPI_AddLUAReqFunc("SsYgZc_Enter")function SsYgZc_Enter(_dRole, _NPCID, _TaskID)local curClient = GetCurrentClientData()UpdataDate_ZcClientData(curClient)local data = curClient.GetData()API_ResponseWrite('<a size="13" color="175,216,242" >' .. "报名时间["..data.CONST_PAR.SU_S[1]  .. ":" .. data.CONST_PAR.SU_S[2]   .. "->" .. data.CONST_PAR.SU_E[1]  ..  ":" .. data.CONST_PAR.SU_E[2] .."]" ..'</a><br>')API_ResponseWrite('<a size="13" color="175,216,242" >' .. "入场时间["..data.CONST_PAR.ET_S[1]  .. ":" .. data.CONST_PAR.ET_S[2]   .. "->" .. data.CONST_PAR.ET_E[1]  ..  ":" .. data.CONST_PAR.ET_E[2] .."]" ..'</a><br>')local lNpcFastID = API_VarDataGetNumber(_dRole, 0, 32712)LuaPack_API_GetNpcAllTask(lNpcFastID, _dRole)if 0 ~= curClient.i_CanEnter() thenAPI_ResponseWrite('<a size="13" color="175,216,242" >' .. "目前时间段无副本可进场" ..'</a><br>')elseAPI_ResponseWrite(ChuanSongStr..'<a size="13" color="175,216,242" href="SsYgZc_Enter_Choose?1='.._dRole..'&2='.._NPCID..'&3='.. 0 ..'">进场</a><br>')endendAPI_AddLUAReqFunc("SsYgZc_Enter_Choose")function SsYgZc_Enter_Choose()local dRoleID= API_RequestGetNumber(1)local dNPCID= API_RequestGetNumber(2)local dTaskID= API_RequestGetNumber(3)local curClient = GetCurrentClientData()curClient.SetPlayer(nil, dRoleID)end

 
原创粉丝点击