cipher-sr/gameserver/src/services/misc.zig
HuLiNap 78e23046f7 First push: build.zig
First push:   build.zig.zon
	First push:   config.json
	First push:   dispatch/build.zig
	First push:   dispatch/build.zig.zon
	First push:   dispatch/src/authentication.zig
	First push:   dispatch/src/dispatch.zig
	First push:   dispatch/src/hotfix.zig
	First push:   dispatch/src/main.zig
	First push:   gameserver/build.zig
	First push:   gameserver/build.zig.zon
	First push:   gameserver/src/Packet.zig
	First push:   gameserver/src/Session.zig
	First push:   gameserver/src/command.zig
	First push:   gameserver/src/commands/help.zig
	First push:   gameserver/src/commands/refill.zig
	First push:   gameserver/src/commands/sync.zig
	First push:   gameserver/src/commands/tp.zig
	First push:   gameserver/src/commands/unstuck.zig
	First push:   gameserver/src/commands/value.zig
	First push:   gameserver/src/data.zig
	First push:   gameserver/src/handlers.zig
	First push:   gameserver/src/main.zig
	First push:   gameserver/src/manager/battle_mgr.zig
	First push:   gameserver/src/manager/lineup_mgr.zig
	First push:   gameserver/src/manager/multipath_mgr.zig
	First push:   gameserver/src/manager/scene_mgr.zig
	First push:   gameserver/src/network.zig
	First push:   gameserver/src/services/avatar.zig
	First push:   gameserver/src/services/battle.zig
	First push:   gameserver/src/services/challenge.zig
	First push:   gameserver/src/services/chat.zig
	First push:   gameserver/src/services/config.zig
	First push:   gameserver/src/services/events.zig
	First push:   gameserver/src/services/gacha.zig
	First push:   gameserver/src/services/item.zig
	First push:   gameserver/src/services/lineup.zig
	First push:   gameserver/src/services/login.zig
	First push:   gameserver/src/services/mail.zig
	First push:   gameserver/src/services/misc copy.zig
	First push:   gameserver/src/services/misc.zig
	First push:   gameserver/src/services/mission.zig
	First push:   gameserver/src/services/multipath.zig
	First push:   gameserver/src/services/pet.zig
	First push:   gameserver/src/services/profile.zig
	First push:   gameserver/src/services/res_config.zig
	First push:   gameserver/src/services/scene.zig
	First push:   hotfix.json
	First push:   protocol/build.zig
	First push:   protocol/build.zig.zon
	First push:   protocol/src/protocol.pb.zig
	First push:   protocol/src/root.zig
	First push:   resources/ChallengeMazeConfig.json
	First push:   resources/MapEntrance.json
	First push:   resources/MazePlane.json
	First push:   resources/res.json
2025-04-17 16:16:03 +07:00

31 lines
1.9 KiB
Zig

const std = @import("std");
const protocol = @import("protocol");
const Session = @import("../Session.zig");
const Packet = @import("../Packet.zig");
const Allocator = std.mem.Allocator;
const CmdID = protocol.CmdID;
pub fn onPlayerHeartBeat(session: *Session, packet: *const Packet, allocator: Allocator) !void {
const req = try packet.getProto(protocol.PlayerHeartBeatCsReq, allocator);
defer req.deinit();
const encoded = "ICAgICAgICBsb2NhbCBmdW5jdGlvbiBzZXRUZXh0Q29tcG9uZW50KHBhdGgsIG5ld1RleHQpDQogICAgICAgICAgICBsb2NhbCBvYmogPSBDUy5Vbml0eUVuZ2luZS5HYW1lT2JqZWN0LkZpbmQocGF0aCkNCiAgICAgICAgICAgIGlmIG9iaiB0aGVuDQogICAgICAgICAgICAgICAgbG9jYWwgdGV4dENvbXBvbmVudCA9IG9iajpHZXRDb21wb25lbnRJbkNoaWxkcmVuKHR5cGVvZihDUy5SUEcuQ2xpZW50LkxvY2FsaXplZFRleHQpKQ0KICAgICAgICAgICAgICAgIGlmIHRleHRDb21wb25lbnQgdGhlbg0KICAgICAgICAgICAgICAgICAgICB0ZXh0Q29tcG9uZW50LnRleHQgPSBuZXdUZXh0DQogICAgICAgICAgICAgICAgZW5kDQogICAgICAgICAgICBlbmQNCiAgICAgICAgZW5kDQogICAgICAgIA0KICAgICAgICBzZXRUZXh0Q29tcG9uZW50KCJVSVJvb3QvQWJvdmVEaWFsb2cvQmV0YUhpbnREaWFsb2coQ2xvbmUpIiwgIjxjb2xvcj0jMDNjMmZjPkNpcGhlclNSIGlzIGEgZnJlZSBhbmQgb3BlbiBzb3VyY2Ugc29mdHdhcmUuPC9jb2xvcj4iKQ0KICAgICAgICBzZXRUZXh0Q29tcG9uZW50KCJWZXJzaW9uVGV4dCIsICI8Y29sb3I9IzAzYzJmYz5WaXNpdCBkaXNjb3JkLmdnL3JldmVyc2Vkcm9vbXMgZm9yIG1vcmUgaW5mbyE8L2NvbG9yPiIpDQo=";
const dest_buf = try allocator.alloc(u8, try std.base64.standard.Decoder.calcSizeForSlice(encoded));
try std.base64.standard.Decoder.decode(dest_buf, encoded);
const managed_str = protocol.ManagedString.move(dest_buf, allocator);
const download_data = protocol.ClientDownloadData{
.version = 51,
.time = @intCast(std.time.milliTimestamp()),
.data = managed_str,
};
try session.send(CmdID.CmdPlayerHeartBeatScRsp, protocol.PlayerHeartBeatScRsp{
.retcode = 0,
.client_time_ms = req.client_time_ms,
.server_time_ms = @intCast(std.time.milliTimestamp()),
.download_data = download_data,
});
}