359 lines
18 KiB
Lua
Executable File
359 lines
18 KiB
Lua
Executable File
--module("PcDownLoadGift", package.seeall)
|
||
|
||
--[[
|
||
微端功能 个人数据
|
||
PcClientData = {
|
||
pcGift
|
||
}
|
||
]]
|
||
|
||
local FcmServiceHostHttp = "http://fcmds.sdo.com"
|
||
local FcmServiceHost = "fcmds.sdo.com" ---/http://fcmds.sdo.com/heartbeat //"devops.191game.com"
|
||
local FcmServicePort = "80"
|
||
local FcmHeartbeateUrl = "/heartbeat"
|
||
local FcmUseroffline = "/useroffline"
|
||
local FcmUseronline = "/useronline"
|
||
local Fcmappid = "1100012"
|
||
|
||
local FcmSecretkey = "01mbv7nqqj4f34m7zjnd14a9zfamvphx"
|
||
local FcmAccounttype = 1
|
||
local FcmMerchant_name = "1_1100012_7429"
|
||
local FcmSignature_method = "MD5"
|
||
|
||
local FcmIpadd = "16777343"
|
||
local FcmSevPort = 443
|
||
|
||
PlatformConfig = NativeRewardConfig
|
||
local PfId = System.getPfId()
|
||
|
||
function getActorPcClientData(pActor)
|
||
if Actor.getEntityType(pActor) ~= enActor then
|
||
assert(false)
|
||
end
|
||
local var = Actor.getStaticVar(pActor);
|
||
if var.PcClientData == nil then
|
||
var.PcClientData = {}
|
||
end
|
||
|
||
return var.PcClientData
|
||
end
|
||
|
||
function OnPcDownLoadGift(pActor, packet)
|
||
if PfId ~= nil and PlatformConfig.SPID ~= nil and table.getn(PlatformConfig.SPID) > 0 then
|
||
--print("[Tip] [PlatformQQ] SendQQHallData ---------------------PfId:"..PfId.."--- SPID:"..PlatformConfig.SPID)
|
||
local Can = 0
|
||
for k, v in ipairs(PlatformConfig.SPID) do
|
||
-- print(k,v)
|
||
--print("[Tip] [NativeRewardConfig] NativeRewardConfig333 ---------------- SPID MSG:"..tostring(v))
|
||
if tostring(PfId) == tostring(v) then
|
||
Can = Can + 1
|
||
end
|
||
end
|
||
--print("[Tip] [NativeRewardConfig] NativeRewardConfig444 ---------------- SPID count:"..tostring(Can))
|
||
if Can == 0 then
|
||
print("[Tip] [NativeRewardConfig] [非本平台活动]")
|
||
return --非本平台活动
|
||
end
|
||
end
|
||
|
||
local data = getActorPcClientData(pActor)
|
||
if data.pcGift then
|
||
Actor.sendTipmsg(pActor, "|C:0xf56f00&T:已领取|", tstUI)
|
||
return
|
||
end
|
||
local conf = PlatformConfig
|
||
|
||
if conf and conf.reward then
|
||
CommonFunc.Awards.Give(pActor, conf.reward, GameLog.Log_PcGift)
|
||
end
|
||
|
||
data.pcGift = 1;
|
||
Actor.sendTipmsg(pActor, "|C:0xf56f00&T:领取成功|", tstUI)
|
||
SendPcClientState(pActor);
|
||
Actor.setStaticCount(pActor, 10005, 1);
|
||
|
||
local strName = Actor.getName(pActor)
|
||
if conf and conf.tips then
|
||
local strTips = string.format(conf.tips,strName)
|
||
System.broadcastTipmsgLimitLev(strTips, tstKillDrop)
|
||
end
|
||
|
||
if conf and conf.tips2 then
|
||
local strTipm2 = string.format(conf.tips2,strName)
|
||
System.broadcastTipmsgLimitLev(strTipm2, tstChatSystem)
|
||
end
|
||
end
|
||
|
||
function SendPcClientState(pActor)
|
||
local npack = DataPack.allocPacket(pActor, enDefaultEntitySystemID, sPcClientDownLoadState)
|
||
if npack then
|
||
-- print("1111")
|
||
local data = getActorPcClientData(pActor)
|
||
DataPack.writeByte(npack, (data.pcGift or 0)) --
|
||
DataPack.flush(npack)
|
||
end
|
||
end
|
||
|
||
-- 回调
|
||
local function AfterGetHttpContent(paramPack, content, result)
|
||
local aid = paramPack[1]
|
||
print("[Tip] [SQFcm] AfterGetHttpContent --------------------------aid:"..aid.."------------------- content:"..tostring(content))
|
||
|
||
--测试数据local strContent00 = "{\"return_code\":-10250031,\"return_message\":\"Server reject, no authority, remote ip is 49.234.73.200\",\"data\":{}}"
|
||
|
||
local strPattern11 = "^(.*)(return_code%s*\"%s*)(%b:,)(.*)$"
|
||
local strPattern22 = "^(.*)(return_message\"%s*:%s*)(%b\"\")(.*)$"
|
||
|
||
--local strContent = "abcde csdn = {博客} csdn.net"
|
||
--local strPattern = "^(.*)(csdn%s*=%s*)(%b{})(.*)$"
|
||
--local strCapture1, strCapture2, strCapture3, strCapture4 = string.match(strContent, strPattern)
|
||
|
||
--print("t------"..tostring(strCapture1).."------"..tostring(strCapture2).."------"..tostring(strCapture3).."------"..tostring(strCapture4))
|
||
if result == 0 then
|
||
local strCapture1, strCapture2, return_code, strCapture3, strCapture4 = string.match(content, strPattern11)
|
||
local strCapture1, strCapture2, return_message, strCapture4 = string.match(content, strPattern22)
|
||
--local return_code = string.match(strContent00,"return_code\":-(%a+),\"return")
|
||
--local return_message = string.match(strContent00,"return_message\":\"(%a+)\",\"")
|
||
--code = (string.gsub(return_code, "^[%s\n\r\t]*(.-)[%s\n\r\t]*$", "%1"))
|
||
--message = (string.gsub(return_message, "^[%s\n\r\t]*(.-)[%s\n\r\t]*$", "%1"))
|
||
--code = string.match(return_code,":%s+,")
|
||
--message = string.match(return_message, "\"%s+\"")
|
||
print("[Tip] [SQFcm] AfterGetHttpContent ----------return_code:"..tostring(return_code) )
|
||
print("[Tip] [SQFcm] AfterGetHttpContent ---------return_message:"..tostring(return_message) )
|
||
--print("[return_code-----------------------------------------------------------------------return_code:"..tostring(code) )
|
||
--print("[return_message--------------------------------------------------------------------return_message:"..tostring(message) )
|
||
end
|
||
end
|
||
|
||
local function GetHttpContentOnline(paramPack, content, result)
|
||
local aid = paramPack[1]
|
||
print("[Tip] [SQFcm] GetHttpContentOnline --------------------------aid:"..aid.."------------------- content:"..tostring(content))
|
||
|
||
local strPattern11 = "^(.*)(return_code%s*\"%s*)(%b:,)(.*)$"
|
||
local strPattern22 = "^(.*)(return_message\"%s*:%s*)(%b\"\")(.*)$"
|
||
|
||
if result == 0 then
|
||
local strCapture1, strCapture2, return_code, strCapture3, strCapture4 = string.match(content, strPattern11)
|
||
local strCapture1, strCapture2, return_message, strCapture4 = string.match(content, strPattern22)
|
||
print("[Tip] [SQFcm] GetHttpContentOnline ----------return_code:"..tostring(return_code) )
|
||
print("[Tip] [SQFcm] GetHttpContentOnline ---------return_message:"..tostring(return_message) )
|
||
|
||
if(tostring(return_code) == ": 0,") then
|
||
|
||
local strPattern33 = "^(.*)(remainingTime%s*\"%s*)(%b:,)(.*)$"
|
||
|
||
local str1, str2, remainingTime, str4 = string.match(content, strPattern33)
|
||
print("[Tip] [SQFcm] GetHttpContentOnline ----------remainingTime:"..tostring(remainingTime))
|
||
if remainingTime == nil then
|
||
return
|
||
end
|
||
local sscount = string.len(remainingTime)
|
||
|
||
if(sscount > 2) then
|
||
res = string.sub(remainingTime, 2, sscount - 1)
|
||
print("[GetHttpContentOnline---------------------------------remainingTime = :"..tostring(res))
|
||
local remaining = tonumber(res)
|
||
local pActor = Actor.getActorById(actorid)
|
||
--Actor.changeFcmTime(pActor, remaining)
|
||
print("[Tip] [SQFcm] GetHttpContentOnline ----------remainingTime"..tostring(remaining))
|
||
end
|
||
|
||
end
|
||
end
|
||
end
|
||
-- 防沉迷
|
||
function OnFcmUseOnline(pActor, packet)
|
||
local ntype = DataPack.readByte(packet)
|
||
local nMsg = DataPack.readByte(packet)
|
||
local nSub = DataPack.readByte(packet)
|
||
--local ServerIndex = DataPack.readint(packet)
|
||
print("[Tip] [SQFcm] OnFcmUseOnline -------------------------id:"..tostring(ntype).."nMsg:"..tostring(nMsg).."nSub:"..tostring(nSub) )
|
||
|
||
--local AccountName = DataPack.readString(packet)
|
||
--local code = DataPack.readString(packet)
|
||
--print("[Tip] OnFcmUseOnline : code = " .. tostring(code).."name"..Actor.getName(pActor))
|
||
|
||
--加入异步工作
|
||
--local account = Actor.getAccount(pActor)
|
||
--local aid = Actor.getActorId(pActor)
|
||
|
||
--即时生成
|
||
local eventtime = System.getCurrMiniTime()
|
||
local match_eventtime = os.date("%Y-%m-%d %H:%M:%S", os.time())
|
||
local characterid = Actor.getName(pActor);
|
||
local PfId = System.getPfId()
|
||
local SrvId = System.getServerId()
|
||
local account = 'om00748880396.pt'--Actor.getAccount(pActor)--盛趣正式账号 om00748880396.pt'om00748880396.pt'--
|
||
local aid = Actor.getActorId(pActor)
|
||
local str_guid = System.MD5(tostring(eventtime))
|
||
--local nYear, nMonth, nDay
|
||
--System.getDate(nYear, nMonth, nDay)
|
||
--local nHour, nMinute, nSecond, nMiliSecond
|
||
--System.getTime(nHour, nMinute, nSecond, nMiliSecond)
|
||
--print("[OnFcmUseOnline--eventtime------------------------------------"..tostring(eventtime))
|
||
--print("[OnFcmUseOnline--str_guid------------------------------------"..tostring(str_guid))
|
||
--固定
|
||
local reqSign = 'accounttype='..FcmAccounttype..'&appid='..Fcmappid..'&areaid='..'1'..'&characterid='..aid..'&endpointip='..FcmIpadd..'&endpointport='..FcmSevPort..'&eventtime='..match_eventtime..'&groupid='..SrvId..'&guid='..tostring(str_guid)..'&merchant_name='..tostring(FcmMerchant_name)..'&signature_method='..tostring(FcmSignature_method)..'×tamp='..tostring(eventtime)..'&userid='..tostring(account)
|
||
local reqSign1 = 'accounttype='..FcmAccounttype..'appid='..Fcmappid..'areaid='..'1'..'characterid='..aid..'endpointip='..FcmIpadd..'endpointport='..FcmSevPort..'eventtime='..match_eventtime..'groupid='..SrvId..'guid='..tostring(str_guid)..'merchant_name='..tostring(FcmMerchant_name)..'signature_method='..tostring(FcmSignature_method)..'timestamp='..tostring(eventtime)..'userid='..tostring(account)
|
||
|
||
local sign = System.MD5(tostring(reqSign1..FcmSecretkey))
|
||
--print("[OnFcmUseOnline--reqSign1-----------------reqSign1Size:-------------------"..string.len(tostring(reqSign1..FcmSecretkey)))
|
||
|
||
print("[Tip] [SQFcm] OnFcmUseOnline -------------------------reqSign:"..tostring(reqSign1))
|
||
print("[Tip] [SQFcm] OnFcmUseOnline -------------------------FcmSecretkey:"..tostring(FcmSecretkey))
|
||
print("[Tip] [SQFcm] OnFcmUseOnline -------------------------sign:"..tostring(sign))
|
||
|
||
local req = FcmUseronline..'?'..reqSign..'&signature='..tostring(sign)
|
||
|
||
AsyncWorkDispatcher.Add(
|
||
{'GetHttpContent', FcmServiceHost, FcmServicePort, req},
|
||
GetHttpContentOnline,
|
||
{aid, 0}
|
||
)
|
||
end
|
||
|
||
function OnFcmUseOffline(pActor, packet)
|
||
local ntype = DataPack.readByte(packet)
|
||
local nMsg = DataPack.readByte(packet)
|
||
local nSub = DataPack.readByte(packet)
|
||
print("[Tip] [SQFcm] OnFcmUseOffline -------------------------id:"..tostring(ntype).."nMsg:"..tostring(nMsg).."nSub:"..tostring(nSub) )
|
||
|
||
--local code = DataPack.readString(packet)
|
||
--print("[Tip] OnFcmUseOnline : code = " .. tostring(code).."name"..Actor.getName(pActor))
|
||
|
||
--即时生成
|
||
local eventtime = System.getCurrMiniTime()
|
||
local match_eventtime = os.date("%Y-%m-%d %H:%M:%S", os.time())
|
||
local characterid = Actor.getName(pActor);
|
||
local PfId = System.getPfId()
|
||
local SrvId = System.getServerId()
|
||
local account = 'om00748880396.pt'--Actor.getAccount(pActor)--'om00748880396.pt'--
|
||
local aid = Actor.getActorId(pActor)
|
||
local str_guid = System.MD5(tostring(eventtime))
|
||
--print("[OnFcmUseOnline--str_guid------------------------------------"..tostring(str_guid))
|
||
--固定
|
||
local reqSign = 'accounttype='..FcmAccounttype..'&appid='..Fcmappid..'&areaid='..'1'..'&characterid='..aid..'&endpointip='..FcmIpadd..'&endpointport='..FcmSevPort..'&eventtime='..match_eventtime..'&groupid='..SrvId..'&guid='..tostring(str_guid)..'&merchant_name='..tostring(FcmMerchant_name)..'&signature_method='..tostring(FcmSignature_method)..'×tamp='..tostring(eventtime)..'&userid='..tostring(account)
|
||
local reqSign1 = 'accounttype='..FcmAccounttype..'appid='..Fcmappid..'areaid='..'1'..'characterid='..aid..'endpointip='..FcmIpadd..'endpointport='..FcmSevPort..'eventtime='..match_eventtime..'groupid='..SrvId..'guid='..tostring(str_guid)..'merchant_name='..tostring(FcmMerchant_name)..'signature_method='..tostring(FcmSignature_method)..'timestamp='..tostring(eventtime)..'userid='..tostring(account)
|
||
|
||
local sign = System.MD5(tostring(reqSign1..FcmSecretkey))
|
||
--print("[OnFcmUseOnline--reqSign1-----------------reqSign1Size:-------------------"..string.len(tostring(reqSign1..FcmSecretkey)))
|
||
|
||
print("[Tip] [SQFcm] OnFcmUseOffline -------------------------reqSign:"..tostring(reqSign1))
|
||
print("[Tip] [SQFcm] OnFcmUseOffline -------------------------FcmSecretkey:"..tostring(FcmSecretkey))
|
||
print("[Tip] [SQFcm] OnFcmUseOffline -------------------------sign:"..tostring(sign))
|
||
|
||
local req = FcmUseroffline..'?'..reqSign..'&signature='..tostring(sign)
|
||
|
||
AsyncWorkDispatcher.Add(
|
||
{'GetHttpContent', FcmServiceHost, FcmServicePort, req},
|
||
AfterGetHttpContent,
|
||
{aid, 0}
|
||
)
|
||
end
|
||
|
||
function OnFcmUseHeatbeat2(ppActor, packet)
|
||
local ntype = DataPack.readByte(packet)
|
||
local nMsg = DataPack.readByte(packet)
|
||
local nSub = DataPack.readByte(packet)
|
||
|
||
local nCount = DataPack.readByte(packet)
|
||
print("[Tip] [SQFcm] OnFcmUseHeatbeat2 -------------------------id:"..tostring(ntype).."nMsg:"..tostring(nMsg).."nSub:"..tostring(nSub) .."nCount:"..tostring(nCount) )
|
||
|
||
local eventtime = System.getCurrMiniTime()
|
||
local PfId = System.getPfId()
|
||
local SrvId = System.getServerId()
|
||
|
||
--固定
|
||
local reqSign = 'appid='..Fcmappid..'ip='..FcmIpadd..'merchant_name='..tostring(FcmMerchant_name)..'signature_method='..tostring(FcmSignature_method)..'timestamp='..tostring(eventtime)
|
||
local reqSign1 = 'appid='..Fcmappid..'&ip='..FcmIpadd..'&merchant_name='..tostring(FcmMerchant_name)..'&signature_method='..tostring(FcmSignature_method)..'×tamp='..tostring(eventtime)
|
||
|
||
local msghead = "usersinfo=["
|
||
local msgItem = ""
|
||
for i = 1, nCount do
|
||
--print("[OnFcmUseHeatbeat2----------------------------------------i:"..tostring(i))
|
||
local actorid = DataPack.readUInt(packet)
|
||
--print("[OnFcmUseHeatbeat2----------------------------------------i:"..tostring(actorid))
|
||
local pActor = Actor.getActorById(actorid)
|
||
print("[Tip] [SQFcm] OnFcmUseHeatbeat2 usersinfo---------------------- name:"..Actor.getName(pActor).."actorid:"..tostring(actorid))
|
||
|
||
if pActor == nil then
|
||
break
|
||
end
|
||
local characterid = Actor.getName(pActor);
|
||
local account = 'om00748880396.pt'--Actor.getAccount(pActor)
|
||
local aid = Actor.getActorId(pActor)
|
||
|
||
msgItem = msgItem..'{\"areaid\":'..'1'..',\"groupid\":'..SrvId..',\"userid\":\"'..account..'\",\"accounttype\":'..FcmAccounttype..',\"characterid\":\"'..aid..'\"},'
|
||
--if(i < nCount)
|
||
--{
|
||
-- msgItem = msgItem..','
|
||
--}
|
||
end
|
||
if msgItem == "" then
|
||
return
|
||
end
|
||
local msg = msghead..msgItem..']'
|
||
|
||
local sign = System.MD5(tostring(reqSign..msg..FcmSecretkey))
|
||
local req = FcmHeartbeateUrl..'?'..reqSign1..'&signature='..tostring(sign)
|
||
|
||
print("[Tip] [SQFcm] OnFcmUseHeatbeat -------------------------reqSign:"..tostring(reqSign1))
|
||
print("[Tip] [SQFcm] OnFcmUseHeatbeat -------------------------FcmSecretkey:"..tostring(FcmSecretkey))
|
||
print("[Tip] [SQFcm] OnFcmUseHeatbeat -------------------------sign:"..tostring(sign))
|
||
|
||
local str = string.format("POST %s HTTP/1.1\r\nHost: %s\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: %d\r\n\r\n%s", req, FcmServiceHost, string.len(msg), msg)
|
||
|
||
---AsyncWorkDispatcher.Add({'Test', 1,2},AfterGetHttpContent,{expect=1+1})
|
||
AsyncWorkDispatcher.Add(
|
||
{'PostHttpContent2', FcmServiceHost, FcmServicePort, str},
|
||
AfterGetHttpContent,
|
||
{aid, 0}
|
||
)
|
||
print("[Tip] [SQFcm] OnFcmUseHeatbeat -------------------------msghead:"..tostring(msghead))
|
||
end
|
||
function OnFcmUseHeatbeat(pActor, packet)
|
||
local ntype = DataPack.readByte(packet)
|
||
local nMsg = DataPack.readByte(packet)
|
||
local nSub = DataPack.readByte(packet)
|
||
-- print("[OnFcmUseHeatbeat----------------------------------------------------------------------- id:"..tostring(ntype).."nMsg:"..tostring(nMsg).."nSub:"..tostring(nSub) )
|
||
|
||
local code = DataPack.readString(packet)
|
||
-- print("[Tip] OnFcmUseOnline : code = " .. tostring(code).."name"..Actor.getName(pActor))
|
||
|
||
--即时生成
|
||
local eventtime = System.getCurrMiniTime()
|
||
local characterid = Actor.getName(pActor);
|
||
local PfId = System.getPfId()
|
||
local SrvId = System.getServerId()
|
||
local account = Actor.getAccount(pActor)
|
||
local aid = Actor.getActorId(pActor)
|
||
--固定
|
||
local reqSign = 'appid='..Fcmappid..'ip='..FcmIpadd..'merchant_name='..tostring(FcmMerchant_name)..'signature_method='..tostring(FcmSignature_method)..'timestamp='..tostring(eventtime)
|
||
local reqSign1 = 'appid='..Fcmappid..'&ip='..FcmIpadd..'&merchant_name='..tostring(FcmMerchant_name)..'&signature_method='..tostring(FcmSignature_method)..'×tamp='..tostring(eventtime)
|
||
|
||
local msg = 'usersinfo=[{\"areaid\":'..'1'..',\"groupid\":'..SrvId..',\"userid\":\"'..account..'\",\"accounttype\":'..FcmAccounttype..',\"characterid\":\"'..aid..'\"}]'
|
||
|
||
local sign = System.MD5(tostring(reqSign..msg..FcmSecretkey))
|
||
local req = FcmHeartbeateUrl..'?'..reqSign1..'&signature='..tostring(sign)
|
||
|
||
-- print("[OnFcmUseHeatbeat--reqSign1------------------------------------"..tostring(reqSign1))
|
||
--print("[OnFcmUseHeatbeat--FcmSecretkey------------------------------------"..tostring(FcmSecretkey))
|
||
--print("[OnFcmUseHeatbeat--sign------------------------------------"..tostring(sign))
|
||
|
||
local str = string.format("POST %s HTTP/1.1\r\nHost: %s\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: %d\r\n\r\n%s", req, FcmServiceHost, string.len(msg), msg)
|
||
|
||
---AsyncWorkDispatcher.Add({'Test', 1,2},AfterGetHttpContent,{expect=1+1})
|
||
AsyncWorkDispatcher.Add(
|
||
{'PostHttpContent2', FcmServiceHost, FcmServicePort, str},
|
||
AfterGetHttpContent,
|
||
{aid, 0}
|
||
)
|
||
end
|
||
|
||
NetmsgDispatcher.Reg(enDefaultEntitySystemID, cGetPcClientDownLoadGift, OnPcDownLoadGift)
|
||
-- 防沉迷
|
||
NetmsgDispatcher.Reg(enMiscSystemID, sFcmUseOnline, OnFcmUseOnline)
|
||
NetmsgDispatcher.Reg(enMiscSystemID, sFcmUseOffline, OnFcmUseOffline)
|
||
--NetmsgDispatcher.Reg(enMiscSystemID, sFcmUseHeatbeat, OnFcmUseHeatbeat)
|
||
NetmsgDispatcher.Reg(enMiscSystemID, sFcmAllUseHeatbeat, OnFcmUseHeatbeat2)
|