ro-table/Asstes/Resources/Script/Com/Data/Team/TeamMemberData.txt
2025-06-04 05:02:57 +08:00

233 lines
5.8 KiB
Plaintext

TeamMemberData = class("TeamMemberData");
TeamMemberData.KeyType = {
[SessionTeam_pb.EMEMBERDATA_NAME] = "name",
[SessionTeam_pb.EMEMBERDATA_CAT] = "cat",
-- 基礎等級
[SessionTeam_pb.EMEMBERDATA_BASELEVEL] = "baselv",
-- 職業
[SessionTeam_pb.EMEMBERDATA_PROFESSION] = "profession",
-- 地圖id
[SessionTeam_pb.EMEMBERDATA_MAPID] = "mapid",
-- 頭像
[SessionTeam_pb.EMEMBERDATA_PORTRAIT] = "portrait",
-- 相框
[SessionTeam_pb.EMEMBERDATA_FRAME] = "frame",
-- 副本id
[SessionTeam_pb.EMEMBERDATA_RAIDID] = "raid",
-- 離線狀態 0:線上 ~0:離線
[SessionTeam_pb.EMEMBERDATA_OFFLINE] = "offline",
-- 血量
[SessionTeam_pb.EMEMBERDATA_HP] = "hp",
[SessionTeam_pb.EMEMBERDATA_MAXHP] = "hpmax",
-- 藍量
[SessionTeam_pb.EMEMBERDATA_SP] = "sp",
[SessionTeam_pb.EMEMBERDATA_MAXSP] = "spmax",
-- 是否為隊長 1:隊長 2:隊員
[SessionTeam_pb.EMEMBERDATA_JOB] = "job",
-- 隊員的攻擊目標
[SessionTeam_pb.EMEMBERDATA_TARGETID] = "targetid",
-- 牽手目標id
[SessionTeam_pb.EMEMBERDATA_JOINHANDID] = "joinhandid",
-- 身體
[SessionTeam_pb.EMEMBERDATA_BODY] = "body",
-- 身體顏色
[SessionTeam_pb.EMEMBERDATA_CLOTHCOLOR] = "bodycolor",
-- 頭髮
[SessionTeam_pb.EMEMBERDATA_HAIR] = "hair",
-- 眼鏡
[SessionTeam_pb.EMEMBERDATA_EYE] = "eye",
-- 頭髮顏色
[SessionTeam_pb.EMEMBERDATA_HAIRCOLOR] = "haircolor",
-- 右手武器
[SessionTeam_pb.EMEMBERDATA_RIGHTHAND] = "rightWeapon",
-- 左手武器
[SessionTeam_pb.EMEMBERDATA_LEFTHAND] = "leftWeapon",
-- 頭飾
[SessionTeam_pb.EMEMBERDATA_HEAD] = "head",
-- 背部
[SessionTeam_pb.EMEMBERDATA_BACK] = "back",
-- 臉部
[SessionTeam_pb.EMEMBERDATA_FACE] = "face",
-- 嘴巴
[SessionTeam_pb.EMEMBERDATA_MOUTH] = "mouth",
-- 尾巴
[SessionTeam_pb.EMEMBERDATA_TAIL] = "tail",
-- 公會id
[SessionTeam_pb.EMEMBERDATA_GUILDID] = "guildid",
-- 公會名字
[SessionTeam_pb.EMEMBERDATA_GUILDNAME] = "guildname",
-- 性別
[SessionTeam_pb.EMEMBERDATA_GENDER] = "gender",
-- 是否可以眨眼
[SessionTeam_pb.EMEMBERDATA_BLINK] = "blink",
-- 分線id
[SessionTeam_pb.EMEMBERDATA_ZONEID] = "zoneid",
-- 是否自動上車
[SessionTeam_pb.EMEMBERDATA_AUTOFOLLOW] = "autofollow",
[SessionTeam_pb.EMEMBERDATA_RELIVETIME] = "resttime",
-- 僱用時間
[SessionTeam_pb.EMEMBERDATA_EXPIRETIME] = "expiretime",
[SessionTeam_pb.EMEMBERDATA_CAT_OWNER] = "masterid",
[SessionTeam_pb.EMEMBERDATA_GUILDRAIDINDEX or 38] = "guildraidindex",
--[SessionTeam_pb.EMEMBERDATA_REALTIMEVOICE] = "realtimevoice",
-- 合奏型別技能列表
[SessionTeam_pb.EMEMBERDATA_ENSEMBLESKILL] = "ensembleskill",
}
TeamMemberDataMapType = {
["ensembleskill"] = 1,
}
TeamMemberDataStringType = {
["name"] = 1,
["guildname"] = 1,
}
function TeamMemberData:ctor(teamMember, index)
self.index = index;
self.pos = LuaVector3();
self:SetData(teamMember);
end
function TeamMemberData:SetData(tmdata)
if(tmdata)then
-- guid
if(tmdata.guid)then
self.id = tmdata.guid;
end
-- 名字
if(tmdata.name)then
self.name = tmdata.name;
end
-- 倒計時(申請的玩家需要)
if(tmdata.time)then
self.time = tmdata.time;
end
if(tmdata.datas)then
self:SetMemberData(tmdata.datas);
end
end
end
function TeamMemberData:SetMemberData(memberDatas)
-- local updateStr = "TeamMemberData: | ".." id:"..tostring(self.id).." | ".." name:"..tostring(self.name).." | ";
for i=1,#memberDatas do
local data = memberDatas[i];
local key = self.KeyType[data.type];
-- if key == "realtimevoice" then
-- GVoiceProxy.Instance:RecvTeamRealTimeVoice( data.value== 1,self.id)
-- end
if(key)then
if TeamMemberDataMapType[key] then
local value = self[key]
if value == nil then
value = {}
self[key] = value
else
TableUtility.TableClear(value)
end
for j=1, #data.values do
local values = data.values[j]
value[values] = values
end
elseif TeamMemberDataStringType[key] then
self[key] = data.data;
else
self[key] = data.value;
end
-- updateStr = updateStr..string.format("%s:%s | ", key, tostring(data.value));
end
end
-- helplog(updateStr);
self:UpdateHireMemberInfo();
end
function TeamMemberData:UpdatePos(pos)
-- 位置
self.pos:Set(pos.x/1000, pos.y/1000, pos.z/1000);
end
function TeamMemberData:IsOffline()
if(self.offline and self.offline == 1)then
return true;
end
return false;
end
function TeamMemberData:CanBlink()
return self.blink == 1 or self.blink == true;
end
function TeamMemberData:IsHireMember()
if(self.cat == nil)then
return false;
end
return self.cat ~= 0;
end
-- CatInfo begin
function TeamMemberData:UpdateHireMemberInfo()
if(self.cat ~= nil)then
self.catdata = Table_MercenaryCat[self.cat];
if(self.catdata)then
local MonsterID = self.catdata.MonsterID;
local monsterData = MonsterID and Table_Monster[MonsterID];
if(monsterData)then
self.name = monsterData.NameZh;
self.profession = nil;
-- bodyInfo
self.body = monsterData.Body;
-- self.bodycolor = monsterData.BodyColor;
self.hair = monsterData.Hair;
self.eye = monsterData.Eye;
-- self.haircolor = monsterData.HairColor;
self.rightWeapon = monsterData.RightHand;
self.leftWeapon = monsterData.LeftHand;
self.head = monsterData.Head;
self.back = monsterData.Wing;
self.face = monsterData.Face;
self.mouth = monsterData.Mount;
self.tail = monsterData.tail;
end
end
else
self.catdata = nil;
end
end
function TeamMemberData:GetRealTimeVoice()
return self.realtimevoice or 1
end
function TeamMemberData:SetMasterName(mastername)
self.mastername = mastername;
end
function TeamMemberData:SetRestTime(time)
self.resttime = time or 0;
end
-- CatInfo end
function TeamMemberData:Exit()
self.pos:Destroy();
self.pos = nil;
end