DOF/sqr/User/Socket/FunctionalPack.nut

57 lines
2.0 KiB
Plaintext
Raw Normal View History

/*
文件名:FunctionalPack.nut
路径:User/Socket/FunctionalPack.nut
创建日期:2025-01-05 00:07
文件用途:功能数据包
*/
//注册功能包
function RegisterFunctionalPack() {
//城镇中添加角色的回包
MySocket.RegisterBinaryHandler(PACKET_ID.TOWN_ADD_CHARACTER_CALLBACK, function(Binary) {
local Pack = Packet(Binary);
local op = Pack.Get_Int();
local cid = Pack.Get_Int();
local namelen = Pack.Get_Byte();
local name = Pack.Get_String(namelen);
local job = Pack.Get_Byte();
local lv = Pack.Get_Byte();
local posx = Pack.Get_Int();
local posy = Pack.Get_Int();
local posz = 0;
local equcount = Pack.Get_Byte();
local equ = [];
for (local i = 0; i< equcount; i++) {
equ.push(Pack.Get_Int());
}
//构造角色
local Charc = GameObject.CreateCharacter(job, equ);
Charc.Cid = cid;
Charc.SetPosition(posx, posy, posz);
//从全局地图中找到城镇并添加角色
if (GlobalTownManager.CurrentMap) {
GlobalTownManager.CurrentMap.AddObject(Charc);
}
});
//城镇中移除角色的回包
MySocket.RegisterHandler(PACKET_ID.TOWN_REMOVE_CHARACTER_CALLBACK, function(Jso) {
//从全局地图中找到城镇并移除角色
if (GlobalTownManager.CurrentMap) {
//遍历所有角色
foreach(obj in GlobalTownManager.CurrentMap.LayerObject.normal.Children) {
//角色对象
if (typeof obj == "character" && obj.Cid == Jso.cid) {
GlobalTownManager.CurrentMap.RemoveObject(obj);
}
}
}
});
//移动城镇的回包
MySocket.RegisterHandler(PACKET_ID.CHANGE_TOWN_AREA_CALLBACK, function(Jso) {
//我自己的移动城镇添加角色对象
local MapObj = GlobalTownManager.TownList[Jso.town].map[Jso.region];
MapObj.AddObjectByChangeTown(ClientCharacter, Jso.pos);
});
}