You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
214 lines
5.9 KiB
Lua
214 lines
5.9 KiB
Lua
local skynet = require "skynet"
|
|
local datacenter = require "skynet.datacenter"
|
|
local cjson = require "cjson"
|
|
local websocket = require "http.websocket"
|
|
local http = require("http.httpc")
|
|
|
|
local openid = ...
|
|
|
|
local uid
|
|
local ws_id
|
|
|
|
local CMD = {}
|
|
|
|
local header = {
|
|
["content-type"] = "application/json"
|
|
}
|
|
|
|
local function create_client()
|
|
ws_id = websocket.connect("ws://127.0.0.1:8889")
|
|
end
|
|
|
|
|
|
local function callback()
|
|
skynet.fork(function()
|
|
while true do
|
|
local resp, close_reason = websocket.read(ws_id)
|
|
WARN("reobt read resp : " .. (resp and resp or "[Close] " .. close_reason))
|
|
local resp = cjson.decode(resp)
|
|
local c = resp.c
|
|
local m = resp.m
|
|
local data = resp.data
|
|
if c == "user" and m == "loaduser" then
|
|
USER = data.data.user
|
|
MAX_LEVEL = USER.max_level
|
|
end
|
|
if c == "user" and m == "loadallhero" then
|
|
HEROS = data.data.heros
|
|
end
|
|
if c == "user" and m == "pass" then
|
|
MAX_LEVEL = data.data.max_level
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
|
|
|
|
local function loaduser()
|
|
local msg = cjson.encode({c="user", m="loaduser", data={}})
|
|
websocket.write(ws_id, msg)
|
|
skynet.sleep(100)
|
|
local msg = cjson.encode({c="user", m="loadallhero", data={}})
|
|
websocket.write(ws_id, msg)
|
|
local msg = cjson.encode({c="user", m="loadbag", data={}})
|
|
websocket.write(ws_id, msg)
|
|
local msg = cjson.encode({c="user", m="loadachievement", data={}})
|
|
websocket.write(ws_id, msg)
|
|
skynet.sleep(100)
|
|
end
|
|
|
|
local function addbag()
|
|
local msg = cjson.encode({c="user", m="addbag", data={name="box_lv1", num=1000}})
|
|
websocket.write(ws_id, msg)
|
|
local msg = cjson.encode({c="user", m="addbag", data={name="box_lv2", num=1000}})
|
|
websocket.write(ws_id, msg)
|
|
local msg = cjson.encode({c="user", m="addbag", data={name="box_lv3", num=1000}})
|
|
websocket.write(ws_id, msg)
|
|
local msg = cjson.encode({c="user", m="addbag", data={name="box_lv4", num=1000}})
|
|
websocket.write(ws_id, msg)
|
|
local msg = cjson.encode({c="user", m="addbag", data={name="coin", num=100000000000}})
|
|
websocket.write(ws_id, msg)
|
|
skynet.sleep(100)
|
|
end
|
|
|
|
local function openbox()
|
|
local msg = cjson.encode({c="user", m="openbox", data={lv=1, num=10}})
|
|
websocket.write(ws_id, msg)
|
|
local msg = cjson.encode({c="user", m="openbox", data={lv=2, num=10}})
|
|
websocket.write(ws_id, msg)
|
|
local msg = cjson.encode({c="user", m="openbox", data={lv=3, num=10}})
|
|
websocket.write(ws_id, msg)
|
|
local msg = cjson.encode({c="user", m="openbox", data={lv=4, num=10}})
|
|
websocket.write(ws_id, msg)
|
|
skynet.sleep(100)
|
|
end
|
|
|
|
--上阵
|
|
local function confirmup()
|
|
for i,v in ipairs(HEROS) do
|
|
local msg = cjson.encode({c="user", m="confirmup", data={heroid=v.heroid}})
|
|
websocket.write(ws_id, msg)
|
|
end
|
|
end
|
|
|
|
--升级
|
|
local function lordlvup()
|
|
local msg = cjson.encode({c="user", m="lvup", data={tp="lord", lv=10}})
|
|
websocket.write(ws_id, msg)
|
|
end
|
|
|
|
local function herolvup()
|
|
for i,v in ipairs(HEROS) do
|
|
local msg = cjson.encode({c="user", m="lvup", data={tp="hero", heroid=v.heroid, lv=10}})
|
|
websocket.write(ws_id, msg)
|
|
end
|
|
end
|
|
|
|
|
|
local function lordstageup()
|
|
local msg = cjson.encode({c="user", m="stageup", data={tp="lord"}})
|
|
websocket.write(ws_id, msg)
|
|
end
|
|
|
|
local function herostageup()
|
|
for i,v in ipairs(HEROS) do
|
|
local msg = cjson.encode({c="user", m="stageup", data={tp="hero", heroid=v.heroid}})
|
|
websocket.write(ws_id, msg)
|
|
end
|
|
end
|
|
|
|
|
|
local function eqplvup()
|
|
-- for i,v in ipairs(HEROS) do
|
|
-- local msg = cjson.encode({c="user", m="lvup", data={heroid=v.heroid}})
|
|
-- websocket.write(ws_id, msg)
|
|
-- end
|
|
end
|
|
|
|
local function pass()
|
|
local msg = cjson.encode({c="user", m="pass", data={level=MAX_LEVEL}})
|
|
websocket.write(ws_id, msg)
|
|
end
|
|
|
|
function CMD.login()
|
|
local data = {
|
|
module="login",
|
|
method="minilogin",
|
|
server_ca="hDJ^54D@!&DH*Sdh18(Sahjig123",
|
|
parms={
|
|
openid=openid,
|
|
iv=openid,
|
|
encryptedData=openid,
|
|
protocol="ws",
|
|
serverid=1
|
|
}
|
|
}
|
|
local statuscode, resp_str = http.request("POST", "http://127.0.0.1:8002", "/api", {}, header, cjson.encode(data))
|
|
local ok, resp = pcall(cjson.decode, resp_str)
|
|
|
|
if not ok then
|
|
error("login failed")
|
|
end
|
|
DEBUG("resp = ", DUMP(resp))
|
|
local uid = math.floor(resp.data.uid)
|
|
create_client()
|
|
-- while true do
|
|
local msg = cjson.encode({c="user", m="login", data={subid=resp.data.subid, token="123", uid=uid}})
|
|
websocket.write(ws_id, msg)
|
|
local resp, close_reason = websocket.read(ws_id)
|
|
DEBUG("reobt resp : " .. (resp and resp or "[Close] " .. close_reason))
|
|
if not resp then
|
|
error("echo server close.")
|
|
end
|
|
local ok, resp = pcall(cjson.decode, resp)
|
|
|
|
if not ok then
|
|
error("login failed")
|
|
end
|
|
|
|
callback()
|
|
loaduser()
|
|
addbag()
|
|
skynet.fork(function()
|
|
while true do
|
|
openbox()
|
|
skynet.sleep(100)
|
|
confirmup()
|
|
skynet.sleep(100)
|
|
lordlvup()
|
|
skynet.sleep(100)
|
|
herolvup()
|
|
skynet.sleep(100)
|
|
lordstageup()
|
|
skynet.sleep(100)
|
|
herostageup()
|
|
skynet.sleep(50)
|
|
eqplvup()
|
|
skynet.sleep(50)
|
|
pass()
|
|
skynet.sleep(100)
|
|
end
|
|
end)
|
|
DEBUG("robot login success")
|
|
return "ok"
|
|
end
|
|
|
|
function CMD.kick()
|
|
DEBUG("kick openid = ", openid)
|
|
skynet.exit()
|
|
end
|
|
|
|
skynet.start(function()
|
|
skynet.dispatch("lua", function(_, _, command, ...)
|
|
-- skynet.error("robot cmd = ", command)
|
|
local f = assert(CMD[command])
|
|
local ret = f(...)
|
|
|
|
if ret then
|
|
skynet.ret(skynet.pack(ret))
|
|
end
|
|
|
|
end)
|
|
collectgarbage()
|
|
end)
|