2025-06-04 05:12:01 +08:00

1201 lines
38 KiB
Plaintext

PlayerTipFuncConfig = {
SendMessage = {name = ZhString.FunctionPlayerTip_SendMessage, },
InviteMember = {name = ZhString.FunctionPlayerTip_InviteMember, },
ApplyTeam = {name = ZhString.FunctionPlayerTip_ApplyTeam, },
AddFriend = {name = ZhString.FunctionPlayerTip_AddFriend, },
ShowDetail = {name = ZhString.FunctionPlayerTip_ShowDetail, },
SetLeader = {name = ZhString.FunctionPlayerTip_SetLeader, },
KickMember = {name = ZhString.FunctionPlayerTip_KickMember, },
LeaverTeam = {name = ZhString.FunctionPlayerTip_LeaverTeam, },
FollowMember = {name = ZhString.FunctionPlayerTip_FollowMember, },
CancelFollowMember = {name = ZhString.FunctionPlayerTip_CancelFollowMember, },
CreateTeam = {name = ZhString.FunctionPlayerTip_CreateTeam, },
JoinTeam = {name = ZhString.FunctionPlayerTip_JoinTeam, },
InviteFriend = {name = ZhString.FunctionPlayerTip_InviteFriend, },
InviteJoinHand = {name = ZhString.FunctionPlayerTip_InviteJoinHand, },
CancelJoinHand = {name = ZhString.FunctionPlayerTip_CancelJoinHand, },
ApplyList = {name = ZhString.FunctionPlayerTip_ApplyList, },
GuildRecruit = {name = ZhString.FunctionPlayerTip_GuildRecruit, },
GiveGift = {name = ZhString.FunctionPlayerTip_GiveGift, },
DeleteFriend = {name = ZhString.FunctionPlayerTip_DeleteFriend, },
ApplyEnterGuild = {name = ZhString.FunctionPlayerTip_ApplyEnterGuild, },
InviteEnterGuild = {name = ZhString.FunctionPlayerTip_InviteEnterGuild, },
KickGuildMember = {name = ZhString.FunctionPlayerTip_KickGuildMember, },
DistributeArtifact = {name = ZhString.FunctionPlayerTip_DistributeArtifact ,},
ChangeGuildJob = {name = ZhString.FunctionPlayerTip_ChangeGuildJob, },
KickChatMember = {name = ZhString.FunctionPlayerTip_KickChatMember, },
ExchangeRoomOwner = {name = ZhString.FunctionPlayerTip_ExchangeRoomOwner, },
AddBlacklist = {name = ZhString.FunctionPlayerTip_AddBlacklist, },
ForeverBlacklist = {name = ZhString.FunctionPlayerTip_ForeverBlacklist, },
RemoveFromBlacklist = {name = ZhString.FunctionPlayerTip_RemoveFromBlacklist, },
RemoveFromForeverBlacklist = {name = ZhString.FunctionPlayerTip_RemoveFromBlacklist, },
FireHireman = {name = ZhString.FunctionPlayerTip_FireHireman, },
ReHireCat = {name = ZhString.FunctionPlayerTip_ReHireCat,},
Pet_GiveGift = {name = ZhString.FunctionPlayerTip_Pet_GiveGift},
Pet_Touch = {name = ZhString.FunctionPlayerTip_Pet_Touch},
Pet_CallBack = {name = ZhString.FunctionPlayerTip_Pet_CallBack},
Pet_ShowDetail = {name = ZhString.FunctionPlayerTip_Pet_ShowDetail},
Pet_Hug = {name = ZhString.FunctionPlayerTip_Pet_Hug},
Pet_CancelHug = {name = ZhString.FunctionPlayerTip_Pet_CancelHug},
Pet_AutoFight = {name = ZhString.FunctionPlayerTip_Pet_AutoFight},
Tutor_InviteBeTutor = {name = ZhString.FunctionPlayerTip_Tutor_Tutor},
Tutor_InviteBeStudent = {name = ZhString.FunctionPlayerTip_Tutor_Student},
Tutor_DeleteTutor = {name = ZhString.FunctionPlayerTip_Tutor_DeleteTutor},
Tutor_DeleteStudent = {name = ZhString.FunctionPlayerTip_Tutor_DeleteTutor},
Wedding_MissYou = {name = ZhString.FunctionPlayerTip_WeddingMissYou},
Wedding_CallBack = {name = ZhString.FunctionPlayerTip_WeddingCallBack},
Double_Action = {name = ZhString.PlayerTip_DoubleAction},
TalkAuthorization = {name = ZhString.FunctionPlayerTip_TalkAuthorization},
Booth = {name = ZhString.FunctionPlayerTip_Booth},
}
PlayerTipFuncState = {
Active = 1,
InActive = 2,
Grey = 3,
Special = 4,
}
autoImport("RClickFuncCell");
autoImport("PlayerTip");
autoImport("RClickTip");
autoImport("ChatRoomProxy")
autoImport("PlayerTipData")
FunctionPlayerTip = class("FunctionPlayerTip")
local friend = {}
function FunctionPlayerTip.Me()
if nil == FunctionPlayerTip.me then
FunctionPlayerTip.me = FunctionPlayerTip.new()
end
return FunctionPlayerTip.me
end
function FunctionPlayerTip:ctor()
self.funcMap = {};
self.checkMap = {};
self.funcMap.SendMessage = FunctionPlayerTip.SendMessage;
self.funcMap.InviteMember = FunctionPlayerTip.InviteMember;
self.funcMap.ApplyTeam = FunctionPlayerTip.ApplyTeam;
self.funcMap.AddFriend = FunctionPlayerTip.AddFriend;
self.funcMap.ShowTeam = FunctionPlayerTip.ShowTeam;
self.funcMap.ShowDetail = FunctionPlayerTip.ShowDetail;
self.funcMap.SetLeader = FunctionPlayerTip.SetLeader;
self.funcMap.KickMember = FunctionPlayerTip.KickMember;
self.funcMap.LeaverTeam = FunctionPlayerTip.LeaverTeam;
self.funcMap.FollowMember = FunctionPlayerTip.FollowMember;
self.funcMap.CancelFollowMember = FunctionPlayerTip.CancelFollowMember;
self.funcMap.CreateTeam = FunctionPlayerTip.CreateTeam;
self.funcMap.InviteFriend = FunctionPlayerTip.InviteFriend;
self.funcMap.InviteJoinHand = FunctionPlayerTip.InviteJoinHand;
self.funcMap.CancelJoinHand = FunctionPlayerTip.CancelJoinHand;
self.funcMap.ApplyList = FunctionPlayerTip.ApplyList;
self.funcMap.GuildRecruit = FunctionPlayerTip.GuildRecruit;
self.funcMap.GiveGift = FunctionPlayerTip.GiveGift;
self.funcMap.DeleteFriend = FunctionPlayerTip.DeleteFriend;
self.funcMap.ApplyEnterGuild = FunctionPlayerTip.ApplyEnterGuild;
self.funcMap.InviteEnterGuild = FunctionPlayerTip.InviteEnterGuild;
self.funcMap.KickGuildMember = FunctionPlayerTip.KickGuildMember;
self.funcMap.DistributeArtifact = FunctionPlayerTip.DistributeArtifact
self.funcMap.ChangeGuildJob = FunctionPlayerTip.ChangeGuildJob;
self.funcMap.KickChatMember = FunctionPlayerTip.KickChatMember;
self.funcMap.ExchangeRoomOwner = FunctionPlayerTip.ExchangeRoomOwner;
self.funcMap.AddBlacklist = FunctionPlayerTip.AddBlacklist
self.funcMap.ForeverBlacklist = FunctionPlayerTip.ForeverBlacklist
self.funcMap.RemoveFromBlacklist = FunctionPlayerTip.RemoveFromBlacklist
self.funcMap.RemoveFromForeverBlacklist = FunctionPlayerTip.RemoveFromForeverBlacklist
self.funcMap.FireHireman = FunctionPlayerTip.FireHireman
self.funcMap.ReHireCat = FunctionPlayerTip.ReHireCat
self.funcMap.Pet_GiveGift = FunctionPlayerTip.Pet_GiveGift
self.funcMap.Pet_Touch = FunctionPlayerTip.Pet_Touch
self.funcMap.Pet_CallBack = FunctionPlayerTip.Pet_CallBack
self.funcMap.Pet_ShowDetail = FunctionPlayerTip.Pet_ShowDetail
self.funcMap.Pet_Hug = FunctionPlayerTip.Pet_Hug
self.funcMap.Pet_CancelHug = FunctionPlayerTip.Pet_CancelHug
self.funcMap.Pet_AutoFight = FunctionPlayerTip.Pet_AutoFight
self.funcMap.Tutor_InviteBeTutor = FunctionPlayerTip.Tutor_InviteBeTutor
self.funcMap.Tutor_InviteBeStudent = FunctionPlayerTip.Tutor_InviteBeStudent
self.funcMap.Tutor_DeleteTutor = FunctionPlayerTip.Tutor_DeleteTutor
self.funcMap.Tutor_DeleteStudent = FunctionPlayerTip.Tutor_DeleteStudent
self.funcMap.Wedding_MissYou = FunctionPlayerTip.Wedding_MissYou
self.funcMap.Wedding_CallBack = FunctionPlayerTip.Wedding_CallBack
self.funcMap.Double_Action = FunctionPlayerTip.Double_Action
self.funcMap.TalkAuthorization = FunctionPlayerTip.TalkAuthorization
self.funcMap.Booth = FunctionPlayerTip.Booth
self.checkMap.ChangeGuildJob = FunctionPlayerTip.CheckChangeGuildJob;
self.checkMap.KickGuildMember = FunctionPlayerTip.CheckKickGuildMember;
self.checkMap.DistributeArtifact = FunctionPlayerTip.CheckDistributeArtifact;
self.checkMap.InviteEnterGuild = FunctionPlayerTip.CheckInviteEnterGuild;
self.checkMap.ApplyEnterGuild = FunctionPlayerTip.CheckApplyEnterGuild;
self.checkMap.InviteMember = FunctionPlayerTip.CheckInviteMember;
self.checkMap.ForeverBlacklist = FunctionPlayerTip.CheckForeverBlacklist;
self.checkMap.KickMember = FunctionPlayerTip.CheckKickMember;
self.checkMap.FireHireman = FunctionPlayerTip.CheckFireHireman;
self.checkMap.ReHireCat = FunctionPlayerTip.CheckReHireCat;
self.checkMap.Pet_Hug = FunctionPlayerTip.CheckPet_Hug;
self.checkMap.Pet_CancelHug =FunctionPlayerTip.CheckCancelPet_Hug;
self.checkMap.Pet_AutoFight = FunctionPlayerTip.CheckPet_AutoFight
self.checkMap.Tutor_InviteBeTutor = FunctionPlayerTip.CheckTutor_InviteBeTutor
self.checkMap.Tutor_InviteBeStudent = FunctionPlayerTip.CheckTutor_InviteBeStudent
self.checkMap.Wedding_MissYou = FunctionPlayerTip.CheckWedding_MissYou
self.checkMap.Wedding_CallBack = FunctionPlayerTip.CheckWedding_CallBack
self.checkMap.Double_Action = FunctionPlayerTip.CheckDouble_Action
self.checkMap.TalkAuthorization = FunctionPlayerTip.CheckTalkAuthorization
self.checkMap.Booth = FunctionPlayerTip.CheckBooth
self.checkMap.SetLeader = FunctionPlayerTip.CheckSetLeader
end
function FunctionPlayerTip:GetPlayerFunckey(playerid)
local result = {};
result[3] = "SendMessage";
if(not FriendProxy.Instance:IsFriend(playerid))then
result[4] = "AddFriend";
end
if(FunctionUnLockFunc.Me():CheckCanOpenByPanelId(PanelConfig.TeamMemberListPopUp.id))then
result[1] = "InviteMember";
end
if(TeamProxy.Instance:IHaveTeam())then
local myTeam = TeamProxy.Instance.myTeam;
local teamMember = myTeam:GetMemberByGuid(playerid);
if(teamMember)then
local online = not teamMember:IsOffline();
local imleader = TeamProxy.Instance:CheckIHaveLeaderAuthority();
if(imleader)then
result[5] = "SetLeader";
result[6] = "KickMember";
end
if(online)then
-- Hand In Hand
local attriFunction = Game.Myself.data:GetProperty("AttrFunction")
local pos = CommonFun.AttrFunction.HandEnable or 1;
local serverCanJoinHand = (attriFunction >> (pos-1)) & 1 == 1;
-- Follow and handinhand
local followId = Game.Myself:Client_GetFollowLeaderID();
if(followId == playerid)then
local isHandFollow = Game.Myself:Client_IsFollowHandInHand();
if(isHandFollow)then
result[2] = "FollowMember";
result[7] = "CancelJoinHand";
else
result[2] = "CancelFollowMember";
if(serverCanJoinHand)then
local handFollowerId = Game.Myself:Client_GetHandInHandFollower();
if(handFollowerId == playerid)then
result[7] = "CancelJoinHand";
else
result[7] = "InviteJoinHand";
end
end
end
else
local handFollowerId = Game.Myself:Client_GetHandInHandFollower();
if(handFollowerId == playerid)then
result[2] = "FollowMember";
result[7] = "CancelJoinHand";
else
result[2] = "FollowMember";
if(serverCanJoinHand)then
result[7] = "InviteJoinHand";
end
end
end
end
end
end
local hasGuild = GuildProxy.Instance:IHaveGuild();
if(hasGuild)then
result[9] = "InviteEnterGuild";
result[15] = "TalkAuthorization";
else
result[8] = "ApplyEnterGuild";
end
result[10] = "ShowDetail";
result[11] = "Tutor_InviteBeStudent";
result[12] = "Tutor_InviteBeTutor";
result[13] = "AddBlacklist";
result[14] = "DistributeArtifact";
local resultlist = {};
for i=1,15 do
if(result[i])then
table.insert(resultlist, result[i]);
end
end
return resultlist;
end
function FunctionPlayerTip:GetPlayerTip(stick, side, offset,data)
TipsView.Me():ShowStickTip(PlayerTip, data, side, stick, offset, "PlayerTip");
return TipsView.Me().currentTip;
end
function FunctionPlayerTip:CurPlayerTip()
local playerTip = TipsView.Me().currentTip;
if(playerTip and playerTip.__cname == "PlayerTip")then
return playerTip;
end
end
function FunctionPlayerTip:CloseTip()
if(self:CurPlayerTip())then
TipsView.Me():HideCurrent();
end
end
function FunctionPlayerTip:CheckTipFuncStateByKey( key, playerTipData )
if(self.checkMap[key])then
return self.checkMap[key](playerTipData);
end
return PlayerTipFuncState.Active;
end
function FunctionPlayerTip:GetFuncByKey(key)
return self.funcMap[key];
end
-- TipFunc Implmented begin
function FunctionPlayerTip.SendMessage(ptdata)
if(ptdata)then
local tempArray = ReusableTable.CreateArray()
tempArray[1] = ptdata.id
ServiceSessionSocialityProxy.Instance:CallAddRelation(tempArray, SocialManager.PbRelation.Chat)
ReusableTable.DestroyArray(tempArray)
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.ChatRoomPage, viewdata = { key = "PrivateChat"}})
GameFacade.Instance:sendNotification(ChatRoomEvent.UpdateSelectChat , ptdata)
end
end
function FunctionPlayerTip.CallAddFriend(id, name)
if FriendProxy.Instance:IsInBlacklist(id) then
MsgManager.ConfirmMsgByID(427, function ()
TableUtility.ArrayClear(friend)
table.insert(friend,id)
FriendProxy.Instance:CallAddFriend(friend)
MsgManager.ShowMsgByID(461,name)
end, nil,nil,name)
else
TableUtility.ArrayClear(friend)
table.insert(friend,id)
FriendProxy.Instance:CallAddFriend(friend)
end
end
function FunctionPlayerTip.AddFriend(ptdata)
if(ptdata)then
FunctionPlayerTip.CallAddFriend(ptdata.id, ptdata.name)
-- table.insert(friend,ptdata.id)
-- FriendProxy.Instance:CallAddFriend(friend);
end
end
function FunctionPlayerTip.DeleteFriend(ptdata)
if ptdata ~= nil then
MsgManager.ConfirmMsgByID(415, function ()
FunctionSecurity.Me():DeleteFriend(function (arg)
ServiceSessionSocialityProxy.Instance:CallRemoveRelation(arg, SocialManager.PbRelation.Friend)
end, ptdata.id)
end, nil,nil,"Lv."..ptdata.level.." "..ptdata.name)
end
end
function FunctionPlayerTip.ShowDetail(ptdata)
if(ptdata.cat and ptdata.cat~=0)then
local data = {
staticData = Table_MercenaryCat[ptdata.cat],
expiretime = ptdata.expiretime,
masterid = ptdata.masterid,
};
TipManager.Instance:ShowCatTip(data,nil,nil,{-100,0});
elseif(ptdata.id)then
ServiceChatCmdProxy.Instance:CallQueryUserInfoChatCmd(ptdata.id, nil, ChatCmd_pb.EUSERINFOTYPE_CHAT)
end
end
function FunctionPlayerTip.InviteMember(ptdata)
if(ptdata)then
if(Game.MapManager:IsPVPMode_TeamPws())then
MsgManager.ShowMsgByIDTable(25930);
return;
end
if ptdata.zoneid and MyselfProxy.Instance:GetZoneId() ~= ptdata.zoneid then
MsgManager.ShowMsgByID(350)
return;
end
local isInTeam = TeamProxy.Instance:IsInMyTeam(ptdata.id);
if(not isInTeam)then
ServiceSessionTeamProxy.Instance:CallInviteMember(ptdata.id, ptdata.cat)
else
MsgManager.ShowMsgByIDTable(333);
end
end
end
function FunctionPlayerTip.ApplyTeam(ptdata)
if(ptdata and ptdata.teamid)then
if ptdata.zoneid and MyselfProxy.Instance:GetZoneId() ~= ptdata.zoneid then
MsgManager.ShowMsgByID(350)
return;
end
ServiceSessionTeamProxy.Instance:CallTeamMemberApply(ptdata.teamid);
end
end
function FunctionPlayerTip.SetLeader(ptdata)
if(ptdata.id)then
MsgManager.ConfirmMsgByID(327, function ()
ServiceSessionTeamProxy.Instance:CallExchangeLeader(ptdata.id);
end, nil, nil, ptdata.name)
end
end
function FunctionPlayerTip.KickMember(ptdata)
if(ptdata.id)then
-- if(ptdata.cat and ptdata.cat~=0)then
-- if(TeamProxy.Instance:IHaveTeam() and not TeamProxy.Instance:CheckIHaveLeaderAuthority())then
-- end
-- end
MsgManager.ConfirmMsgByID(326, function ()
if(ptdata.cat~=nil and ptdata.cat~=0)then
ServiceSessionTeamProxy.Instance:CallKickMember(ptdata.id, ptdata.cat);
else
ServiceSessionTeamProxy.Instance:CallKickMember(ptdata.id);
end
end, nil, nil, ptdata.name)
end
end
function FunctionPlayerTip.LeaverTeam(ptdata)
if(TeamProxy.Instance:IHaveTeam())then
if(Game.MapManager:IsPVPMode_MvpFight())then
MsgManager.ConfirmMsgByID(7312, function ()
if(TeamProxy.Instance:IHaveTeam())then
ServiceSessionTeamProxy.Instance:CallExitTeam(TeamProxy.Instance.myTeam.id);
end
end, nil, nil)
return;
end
if(Game.MapManager:IsPVPMode_TeamPws())then
MsgManager.ConfirmMsgByID(25910, function ()
if(TeamProxy.Instance:IHaveTeam())then
ServiceSessionTeamProxy.Instance:CallExitTeam(TeamProxy.Instance.myTeam.id);
end
end, nil, nil)
return;
end
MsgManager.ConfirmMsgByID(328, function ()
if(TeamProxy.Instance:IHaveTeam())then
ServiceSessionTeamProxy.Instance:CallExitTeam(TeamProxy.Instance.myTeam.id);
end
end, nil, nil, TeamProxy.Instance.myTeam.name)
end
end
function FunctionPlayerTip.ShowMyDetail(ptdata)
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.Charactor});
end
function FunctionPlayerTip.FollowMember(ptdata)
if(not ptdata or not ptdata.id)then
return;
end
if(Game.Myself:IsDead())then
MsgManager.ShowMsgByIDTable(2500);
return;
end
if(ptdata.zoneid ~= MyselfProxy.Instance:GetZoneId())then
MsgManager.ShowMsgByIDTable(3056);
return;
end
local myTeam = TeamProxy.Instance.myTeam;
if(myTeam == nil)then
MsgManager.ShowMsgByIDTable(332);
return;
end
local teamMemberData = myTeam:GetMemberByGuid(ptdata.id);
if(teamMemberData == nil)then
return;
end
if(teamMemberData.mapid == 51)then
MsgManager.ShowMsgByIDTable(121);
return;
end
GameFacade.Instance:sendNotification(FollowEvent.Follow ,ptdata.id);
end
function FunctionPlayerTip.CancelFollowMember(ptdata)
if(ptdata)then
Game.Myself:Client_SetFollowLeader(0);
end
end
function FunctionPlayerTip.CreateTeam(ptdata)
if(not TeamProxy.Instance:IHaveTeam())then
local defaultMinlv,defaulttarget = 1,10000;
local defaultMaxlv = GameConfig.Team.filtratelevel[#GameConfig.Team.filtratelevel];
local defaultname = Game.Myself.data.name..GameConfig.Team.teamname;
ServiceSessionTeamProxy.Instance:CallCreateTeam(defaultMinlv, defaultMaxlv, defaulttarget, false, defaultname);
end
end
function FunctionPlayerTip.ApplyList(ptdata)
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.TeamApplyListPopUp});
end
function FunctionPlayerTip.InviteFriend(ptdata)
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.TeamInvitePopUp})
end
function FunctionPlayerTip.InviteJoinHand(ptdata)
if Game.Myself:IsInBooth() then
MsgManager.ShowMsgByID(25712)
return
end
local haveTeam = TeamProxy.Instance:IHaveTeam();
local myTeamData = TeamProxy.Instance.myTeam;
local tmData = myTeamData and myTeamData:GetMemberByGuid(ptdata.id);
if(ptdata.masterid ~= nil)then
if(ptdata.masterid ~= nil and ptdata.masterid == Game.Myself.data.id)then
local myTeamData = TeamProxy.Instance.myTeam;
if(myTeamData)then
local catTeamData = myTeamData:GetMemberByGuid(ptdata.id);
if(catTeamData)then
if(Game.Myself:IsDead())then
MsgManager.ShowMsgByIDTable(5005);
return;
end
local expiretime = catTeamData.expiretime;
if(expiretime~=0 and ServerTime.CurServerTime()/1000 > expiretime)then
MsgManager.ShowMsgByIDTable(5005);
return;
end
local resttime = catTeamData.resttime;
if(resttime~=0 and ServerTime.CurServerTime()/1000 <= resttime)then
MsgManager.ShowMsgByIDTable(5005);
return;
end
end
end
end
ServiceUserEventProxy.Instance:CallHandCatUserEvent(ptdata.id, false);
elseif(haveTeam and tmData)then
if(tmData.hp and tmData.hp <= 0)then
MsgManager.ShowMsgByIDTable(856);
return;
end
local role = NSceneUserProxy.Instance:Find(ptdata.id);
if(role)then
local isTransformed = role.data:IsTransformed();
if(isTransformed)then
MsgManager.ShowMsgByIDTable(830);
return;
end
end
ServiceNUserProxy.Instance:CallInviteJoinHandsUserCmd(ptdata.id);
else
MsgManager.ShowMsgByIDTable(827);
end
end
function FunctionPlayerTip.CancelJoinHand(ptdata)
MsgManager.ConfirmMsgByID(826, function ()
if(ptdata.masterid ~= nil and ptdata.masterid == Game.Myself.data.id)then
ServiceUserEventProxy.Instance:CallHandCatUserEvent(ptdata.id, true);
else
ServiceNUserProxy.Instance:CallBreakUpHandsUserCmd();
end
end, nil,nil);
end
function FunctionPlayerTip.ShowTeam(ptdata)
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.TeamMemberListPopUp})
end
function FunctionPlayerTip.ChangeGuildJob(ptdata)
local myGuildMemberData = GuildProxy.Instance:GetMyGuildMemberData()
if(myGuildMemberData)then
local canDo = GuildProxy.Instance:CanJobDoAuthority(myGuildMemberData.job, GuildAuthorityMap.SetJob);
if(canDo)then
local viewdata = {
view = PanelConfig.GuildJobChangePopUp,
viewdata = {guildMember = ptdata.parama},
};
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, viewdata);
end
end
end
function FunctionPlayerTip.KickGuildMember(ptdata)
local member = ptdata.parama;
if(member)then
MsgManager.ConfirmMsgByID(2800, function ()
ServiceGuildCmdProxy.Instance:CallKickMemberGuildCmd(member.id)
end, nil, self, member.baselevel, member.name);
end
end
function FunctionPlayerTip.DistributeArtifact(ptdata)
if(not ptdata or not ptdata.id)then
return;
end
local artiData = ArtifactProxy.Instance:GetOptionalArtifacts(ptdata.id)
if(artiData and #artiData>0)then
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.ArtifactDistributePopUp,viewdata = {data=artiData,charID=ptdata.id}})
else
MsgManager.ShowMsgByID(3806)
end
end
function FunctionPlayerTip.ApplyEnterGuild( ptdata )
if(GuildProxy.Instance:IsInJoinCD())then
MsgManager.ShowMsgByIDTable(4046)
return;
end
local role = NSceneUserProxy.Instance:Find(ptdata.id);
if(role)then
local guildData = role.data:GetGuildData();
if(guildData and guildData.id)then
ServiceGuildCmdProxy.Instance:CallApplyGuildGuildCmd(guildData.id)
end
end
end
function FunctionPlayerTip.InviteEnterGuild( ptdata )
if(ptdata)then
if ptdata.zoneid and MyselfProxy.Instance:GetZoneId() ~= ptdata.zoneid then
MsgManager.ShowMsgByID(350)
return
end
ServiceGuildCmdProxy.Instance:CallInviteMemberGuildCmd(ptdata.id);
end
end
function FunctionPlayerTip.KickChatMember(ptdata)
if(ptdata)then
if (not ChatZoomProxy.Instance:SomeoneIsInZoom(ptdata.id)) then
MsgManager.ShowMsgByID(809)
else
local zoomInfo = ChatZoomProxy.Instance:CachedZoomInfo()
ServiceChatRoomProxy.Instance:CallKickChatMember(zoomInfo.roomid, ptdata.id)
end
end
end
function FunctionPlayerTip.ExchangeRoomOwner(ptdata)
if(ptdata)then
if (not ChatZoomProxy.Instance:SomeoneIsInZoom(ptdata.id)) then
MsgManager.ShowMsgByID(809)
else
ServiceChatRoomProxy.Instance:CallExchangeRoomOwner(ptdata.id)
end
end
end
function FunctionPlayerTip.AddBlacklist(ptdata)
if ptdata and ptdata.id then
if FriendProxy.Instance:IsBlacklist(ptdata.id) then
MsgManager.ShowMsgByID(464)
else
local name = ptdata.name or ""
MsgManager.ConfirmMsgByID(425, function ()
local tempArray = ReusableTable.CreateArray()
tempArray[1] = ptdata.id
ServiceSessionSocialityProxy.Instance:CallAddRelation(tempArray, SocialManager.PbRelation.Black)
ReusableTable.DestroyArray(tempArray)
end, nil,nil,name)
end
end
end
function FunctionPlayerTip.ForeverBlacklist(ptdata)
if ptdata and ptdata.id then
local name = ptdata.name or ""
MsgManager.ConfirmMsgByID(426, function ()
local tempArray = ReusableTable.CreateArray()
tempArray[1] = ptdata.id
ServiceSessionSocialityProxy.Instance:CallAddRelation(tempArray, SocialManager.PbRelation.BlackForever)
ReusableTable.DestroyArray(tempArray)
end, nil,nil,name)
end
end
function FunctionPlayerTip.RemoveFromBlacklist(ptdata)
if ptdata and ptdata.id then
local name = ptdata.name or ""
ServiceSessionSocialityProxy.Instance:CallRemoveRelation(ptdata.id, SocialManager.PbRelation.Black)
MsgManager.ShowMsgByID(461,name)
end
end
function FunctionPlayerTip.RemoveFromForeverBlacklist(ptdata)
if ptdata and ptdata.id then
local name = ptdata.name or ""
ServiceSessionSocialityProxy.Instance:CallRemoveRelation(ptdata.id, SocialManager.PbRelation.BlackForever)
MsgManager.ShowMsgByID(461,name)
end
end
function FunctionPlayerTip.FireHireman(ptdata)
if(ptdata.cat)then
MsgManager.ConfirmMsgByID(5002,function ()
ServiceScenePetProxy.Instance:CallFireCatPetCmd(ptdata.cat)
end , nil , nil)
end
end
function FunctionPlayerTip.ReHireCat(ptdata)
if(ptdata.cat)then
GameFacade.Instance:sendNotification(UIEvent.ShowUI, {viewname = "HireCatPopUp", catid = ptdata.cat});
end
end
local tempParam = {};
function FunctionPlayerTip.Pet_GiveGift(ptdata)
local myPetInfo = PetProxy.Instance:GetMyPetInfoData(ptdata.petid);
if Table_PetCompose[myPetInfo.petid] then
local data =
{
petinfoData=myPetInfo,
}
TipManager.Instance:ShowFeedPetTip(data)
return
end
local giftItems = myPetInfo:GetGiftItems();
local _,itemid = next(giftItems);
local item = BagProxy.Instance:GetItemByStaticID(itemid)
if(item and item.num > 0)then
local dont = LocalSaveProxy.Instance:GetDontShowAgain(9015)
if(dont == nil)then
MsgManager.DontAgainConfirmMsgByID(9015, function ()
ServiceScenePetProxy.Instance:CallGiveGiftPetCmd(myPetInfo.petid, item.id);
end, nil, nil, item.staticData.NameZh, myPetInfo.name);
else
ServiceScenePetProxy.Instance:CallGiveGiftPetCmd(myPetInfo.petid, item.id);
end
else
TableUtility.TableClear(tempParam);
tempParam[1] = Table_Item[itemid].NameZh;
MsgManager.ShowMsgByIDTable(9000, tempParam);
end
end
function FunctionPlayerTip.Pet_Touch(ptdata)
local petData = Table_Pet[ptdata.petid];
local skillID = petData and petData.TouchSkill or 10000;
local target = PetProxy.Instance:GetMySceneNpet(ptdata.petid)
if(target)then
Game.Myself:Client_UseSkill(skillID, target);
end
end
function FunctionPlayerTip.Pet_CallBack(ptdata)
if(ptdata.beingid)then
ServiceSceneBeingProxy.Instance:CallBeingOffCmd(ptdata.beingid)
elseif(ptdata.petid)then
MsgManager.ConfirmMsgByID(9005, function ()
ServiceScenePetProxy.Instance:CallEggRestorePetCmd(ptdata.petid);
end, nil,nil)
else
helplog("Pet_CallBack Not Find id.");
end
end
function FunctionPlayerTip.Pet_ShowDetail(ptdata)
if(ptdata.petid)then
local scenePet = PetProxy.Instance:GetMySceneNpet(ptdata.petid)
if(scenePet == nil)then
MsgManager.ShowMsgByIDTable(9007);
return;
end
local petInfoData = PetProxy.Instance:GetMyPetInfoData(ptdata.petid);
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.PetInfoView, viewdata = {petInfoData = petInfoData}});
elseif(ptdata.beingid)then
local sceneBeing = PetProxy.Instance:GetSceneBeingNpc(ptdata.beingid)
if(sceneBeing == nil)then
MsgManager.ShowMsgByIDTable(9007);
return;
end
local beingInfoData = PetProxy.Instance:GetMySummonBeingInfo(ptdata.beingid);
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.BeingInfoView, viewdata = {beingInfoData = beingInfoData}});
end
end
function FunctionPlayerTip.Pet_Hug(ptdata)
if(Game.Myself.data:IsTransformed())then
MsgManager.ShowMsgByIDTable(830);
return;
end
local handNpc = Game.Myself:GetHandNpc();
if(handNpc)then
MsgManager.ShowMsgByIDTable(856);
return;
end
local petInfoData = PetProxy.Instance:GetMyPetInfoData(ptdata.petid);
if(petInfoData:CanHug())then
ServiceScenePetProxy.Instance:CallHandPetPetCmd(petInfoData.guid, false);
end
end
function FunctionPlayerTip.Pet_CancelHug(ptdata)
local petInfoData = PetProxy.Instance:GetMyPetInfoData(ptdata.petid);
ServiceScenePetProxy.Instance:CallHandPetPetCmd(petInfoData.guid, true);
end
function FunctionPlayerTip.Pet_AutoFight(ptdata)
if(ptdata.petid)then
-- local npet =
local myPetInfo = PetProxy.Instance:GetMyPetInfoData(ptdata.petid);
if(myPetInfo)then
ServiceScenePetProxy.Instance:CallSwitchSkillPetCmd(ptdata.petid, not myPetInfo:IsAutoFighting());
end
elseif(ptdata.beingid)then
local beingInfo = PetProxy.Instance:GetMySummonBeingInfo(ptdata.beingid);
if(beingInfo)then
ServiceSceneBeingProxy.Instance:CallBeingSwitchState(ptdata.beingid, not beingInfo:IsAutoFighting())
end
end
end
function FunctionPlayerTip.Tutor_InviteBeTutor(ptdata)
helplog("Tutor_InviteBeTutor:", ptdata.id);
TutorProxy.Instance:CallAddStudent(ptdata.id)
end
function FunctionPlayerTip.Tutor_InviteBeStudent(ptdata)
helplog("Tutor_InviteBeStudent:", ptdata.id);
TutorProxy.Instance:CallAddTutor(ptdata.id)
end
function FunctionPlayerTip.Tutor_DeleteTutor(ptdata)
TutorProxy.Instance:CallDeleteTutor(ptdata.id)
end
function FunctionPlayerTip.Tutor_DeleteStudent(ptdata)
TutorProxy.Instance:CallDeleteStudent(ptdata.id)
end
function FunctionPlayerTip.Wedding_MissYou(ptdata)
helplog("Call Missyou InviteWedCCmd");
ServiceWeddingCCmdProxy.Instance:CallMissyouInviteWedCCmd();
-- local skillId = 2000001;
-- Game.Myself:Client_UseSkill(skillId)
end
function FunctionPlayerTip.Wedding_CallBack(ptdata)
helplog("Call CallBack");
local skillId = GameConfig.Wedding.BackSkill_Id or 13001;
Game.Myself:Client_UseSkill(skillId)
end
function FunctionPlayerTip.Double_Action(ptdata)
helplog("Implmented In 'PlayerTip'. ");
end
function FunctionPlayerTip.Booth(ptdata)
GameFacade.Instance:sendNotification(UIEvent.JumpPanel, {view = PanelConfig.BoothMainView, viewdata = {playerID = ptdata.id}})
end
-- TipFunc end
function FunctionPlayerTip.TalkAuthorization(ptdata)
if FunctionPlayerTip.Me():GetWhereIClickThisIcon() == PlayerTipSource.FromTeam then
local myTeam = TeamProxy.Instance.myTeam;
if(myTeam)then
local myMembers = myTeam:GetMembersList();
for i=1,#myMembers do
local memberData = myMembers[i];
if memberData.id == ptdata.id then
if memberData:GetRealTimeVoice() == 1 then
ServiceSessionTeamProxy.Instance:CallOpenRealtimeVoiceTeamCmd(ptdata.id, false)
elseif memberData:GetRealTimeVoice() == 0 then
ServiceSessionTeamProxy.Instance:CallOpenRealtimeVoiceTeamCmd(ptdata.id, true)
end
end
end
end
else
local myGuildData = GuildProxy.Instance.myGuildData
local guildMemberData = myGuildData:GetMemberByGuid(ptdata.id);
if guildMemberData:IsRealtimevoice() then
ServiceGuildCmdProxy.Instance:CallOpenRealtimeVoiceGuildCmd(ptdata.id,false)
else
ServiceGuildCmdProxy.Instance:CallOpenRealtimeVoiceGuildCmd(ptdata.id,true)
end
end
end
-- TipFunc Check begin
function FunctionPlayerTip.CheckIHasGuildAuthority(aid)
local canDo = false;
local myGuildMemberData = GuildProxy.Instance:GetMyGuildMemberData()
if(myGuildMemberData)then
canDo = GuildProxy.Instance:CanJobDoAuthority(myGuildMemberData.job, aid);
end
if(canDo)then
return PlayerTipFuncState.Active;
else
return PlayerTipFuncState.InActive;
end
end
function FunctionPlayerTip.CheckChangeGuildJob(data)
return FunctionPlayerTip.CheckIHasGuildAuthority(GuildAuthorityMap.SetJob)
end
function FunctionPlayerTip.CheckKickGuildMember(data)
return FunctionPlayerTip.CheckIHasGuildAuthority(GuildAuthorityMap.KickMember)
end
function FunctionPlayerTip.CheckDistributeArtifact(data)
local myGuildData = GuildProxy.Instance.myGuildData
if(myGuildData)then
local guildMemberData = myGuildData:GetMemberByGuid(data.id);
local switch = ArtifactProxy.Instance:GetDistributeActiveFlag()
if(guildMemberData and switch)then
return FunctionPlayerTip.CheckIHasGuildAuthority(GuildAuthorityMap.ArtifactOption)
end
end
return PlayerTipFuncState.InActive;
end
function FunctionPlayerTip.CheckInviteEnterGuild(data)
return FunctionPlayerTip.CheckIHasGuildAuthority(GuildAuthorityMap.InviteJoin)
end
function FunctionPlayerTip.CheckApplyEnterGuild(data)
local canDo = false;
if(data)then
canDo = data.guildid~=nil and data.guildid~=0;
end
if(canDo)then
return PlayerTipFuncState.Active;
else
return PlayerTipFuncState.InActive;
end
end
function FunctionPlayerTip.CheckInviteMember(data)
if(TeamProxy.Instance:IsInMyTeam(data.id))then
return PlayerTipFuncState.InActive;
else
ServiceSessionTeamProxy.Instance:CallQueryUserTeamInfoTeamCmd(data.id)
return PlayerTipFuncState.Active;
end
end
function FunctionPlayerTip.CheckForeverBlacklist(data)
return PlayerTipFuncState.Special;
end
function FunctionPlayerTip.CheckKickMember(data)
if(Game.MapManager:IsPVPMode_TeamPws())then
return PlayerTipFuncState.InActive;
end
if(data.cat and data.masterid == Game.Myself.data.id)then
return PlayerTipFuncState.Active;
end
if(TeamProxy.Instance:CheckIHaveLeaderAuthority())then
return PlayerTipFuncState.Active;
end
return PlayerTipFuncState.InActive;
end
function FunctionPlayerTip.CheckFireHireman(data)
if(data.masterid ~= nil and data.masterid == Game.Myself.data.id)then
local myTeamData = TeamProxy.Instance.myTeam;
if(myTeamData)then
local catTeamData = myTeamData:GetMemberByGuid(data.id);
if(catTeamData)then
local expiretime = catTeamData.expiretime;
if(expiretime~=0 and ServerTime.CurServerTime()/1000 < expiretime)then
return PlayerTipFuncState.Active;
end
end
end
end
return PlayerTipFuncState.InActive;
end
function FunctionPlayerTip.CheckReHireCat(data)
if(data.masterid ~= nil and data.masterid == Game.Myself.data.id)then
return PlayerTipFuncState.Active;
--[[local myTeamData = TeamProxy.Instance.myTeam;
if(myTeamData)then
local catTeamData = myTeamData:GetMemberByGuid(data.id);
if(catTeamData)then
local expiretime = catTeamData.expiretime;
if(expiretime~=0 and ServerTime.CurServerTime()/1000 >= expiretime)then
return PlayerTipFuncState.Active;
end
end
end]]
end
return PlayerTipFuncState.InActive;
end
function FunctionPlayerTip.CheckPet_Hug(data)
local petInfoData = PetProxy.Instance:GetMyPetInfoData(data.petid);
if(petInfoData:CanHug())then
local scenePet = PetProxy.Instance:GetMySceneNpet(petid)
local otherName;
if(scenePet and scenePet.data:GetFeature_BeHold())then
otherName = ZhString.FunctionPlayerTip_Pet_Hug;
else
otherName = ZhString.FunctionPlayerTip_Pet_HandInHand;
end
return PlayerTipFuncState.Active, otherName;
end
return PlayerTipFuncState.InActive;
end
function FunctionPlayerTip.CheckCancelPet_Hug(data)
local petInfoData = PetProxy.Instance:GetMyPetInfoData(data.petid);
local otherName;
if(petInfoData)then
local scenePet = PetProxy.Instance:GetMySceneNpet(petid)
if(scenePet and scenePet.data:GetFeature_BeHold())then
otherName = ZhString.FunctionPlayerTip_Pet_CancelHug;
else
otherName = ZhString.FunctionPlayerTip_Pet_CancelHandInHand;
end
end
return PlayerTipFuncState.Active, otherName;
end
function FunctionPlayerTip.CheckTutor_InviteBeTutor(ptdata)
-- local reqlv = GameConfig.Tutor and GameConfig.Tutor.student_baselv_req or 10;
-- local mylv = MyselfProxy.Instance:RoleLevel();
-- if(mylv < reqlv)then
-- return PlayerTipFuncState.InActive;
-- end
-- local reqtutorlv = GameConfig.Tutor and GameConfig.Tutor.tutor_baselv_req or 80;
-- if(mylv > reqtutorlv)then
-- return PlayerTipFuncState.InActive;
-- end
if (GameConfig.SystemForbid.Tutor) then
return PlayerTipFuncState.InActive;
end
local mytutor = TutorProxy.Instance:GetMyTutor()
if(mytutor ~= nil)then
return PlayerTipFuncState.InActive;
end
if(TutorProxy.Instance:CanAsStudent())then
return PlayerTipFuncState.Active;
end
return PlayerTipFuncState.InActive;
end
function FunctionPlayerTip.CheckTutor_InviteBeStudent(ptdata)
-- local mytutor = TutorProxy.Instance:GetMyTutor()
-- if(mytutor ~= nil)then
-- return PlayerTipFuncState.InActive;
-- end
-- local reqlv = GameConfig.Tutor and GameConfig.Tutor.tutor_baselv_req or 80;
-- local mylv = MyselfProxy.Instance:RoleLevel();
-- if(mylv <= reqlv)then
-- return PlayerTipFuncState.InActive;
-- end
if (GameConfig.SystemForbid.Tutor) then
return PlayerTipFuncState.InActive;
end
if(TutorProxy.Instance:CanAsTutor())then
return PlayerTipFuncState.Active;
end
return PlayerTipFuncState.InActive;
end
function FunctionPlayerTip.CheckPet_AutoFight(ptdata)
if(ptdata == nil)then
return PlayerTipFuncState.InActive;
end
local myPetInfo = nil
if(ptdata.petid)then
myPetInfo = PetProxy.Instance:GetMyPetInfoData(ptdata.petid);
elseif(ptdata.beingid)then
myPetInfo = PetProxy.Instance:GetMySummonBeingInfo(ptdata.beingid);
end
if(myPetInfo == nil)then
return PlayerTipFuncState.InActive;
end
if(myPetInfo:IsAutoFighting())then
return PlayerTipFuncState.Active, ZhString.FunctionPlayerTip_Pet_CancelAutoFight;
else
return PlayerTipFuncState.Active, ZhString.FunctionPlayerTip_Pet_AutoFight;
end
end
function FunctionPlayerTip.CheckWedding_MissYou(ptdata)
if(WeddingProxy.Instance:IsSelfMarried())then
return PlayerTipFuncState.Active;
end
return PlayerTipFuncState.InActive;
end
function FunctionPlayerTip.CheckWedding_CallBack(ptdata)
-- if(WeddingProxy.Instance:IsSelfMarried())then
-- return PlayerTipFuncState.Active;
-- end
return PlayerTipFuncState.InActive;
end
function FunctionPlayerTip.CheckDouble_Action(ptdata)
if(GameConfig.SystemForbid.DoubleAction)then
return PlayerTipFuncState.InActive;
end
if(not TeamProxy.Instance:IHaveTeam())then
return PlayerTipFuncState.InActive;
end
if(not TeamProxy.Instance:IsInMyTeam(ptdata.id))then
return PlayerTipFuncState.InActive;
end
return PlayerTipFuncState.Active;
end
function FunctionPlayerTip.CheckBooth(ptdata)
local player = NSceneUserProxy.Instance:Find(ptdata.id)
if player ~= nil and player:IsInBooth() then
return PlayerTipFuncState.Active
end
return PlayerTipFuncState.InActive
end
function FunctionPlayerTip.CheckSetLeader(ptdata)
if (Game.MapManager:IsPVPMode_TeamPws()) then
return PlayerTipFuncState.InActive
end
return PlayerTipFuncState.Active
end
-- TipFunc Check end
function FunctionPlayerTip.CheckTalkAuthorization(ptdata)
local myGuildData = GuildProxy.Instance.myGuildData
local guildMemberData = nil
if myGuildData then
guildMemberData = myGuildData:GetMemberByGuid(ptdata.id);
end
local othrerName = "impossible"
if guildMemberData and guildMemberData:IsRealtimevoice() then
othrerName = ZhString.DISABLE_MIC
else
othrerName = ZhString.ENABLE_MIC
end
-- 可由會長、副會長進行授予或解除授予許可權。
local state = PlayerTipFuncState.Active
if GuildProxy.Instance:CanIDoAuthority(GuildAuthorityMap.Voice) then
state = PlayerTipFuncState.Active
if GameConfig.realtime_voice_limit and GVoiceProxy.Instance:GetCurGuildRealTimeVoiceCount() < GameConfig.realtime_voice_limit then
state = PlayerTipFuncState.Active
else
state = PlayerTipFuncState.InActive
end
else
state = PlayerTipFuncState.InActive
end
state = PlayerTipFuncState.Active
if FunctionPlayerTip.Me():GetWhereIClickThisIcon() == PlayerTipSource.FromTeam then
if TeamProxy.Instance:CheckImTheLeader() == false then
state = PlayerTipFuncState.InActive
else
local myTeam = TeamProxy.Instance.myTeam;
if(myTeam)then
local myMembers = myTeam:GetMembersList();
for i=1,#myMembers do
local memberData = myMembers[i];
if memberData.id == ptdata.id then
if memberData:GetRealTimeVoice() == 1 then
othrerName = ZhString.DISABLE_MIC
elseif memberData:GetRealTimeVoice() == 0 then
othrerName = ZhString.ENABLE_MIC
end
end
end
end
end
end
return state,othrerName;
end
function FunctionPlayerTip:UpdateInviteMemberFuncState(playerid, teamid)
local curPlayerTip = self:CurPlayerTip();
if(curPlayerTip)then
local playerTipData = curPlayerTip.playerTipData;
if(playerTipData and playerTipData.id == playerid)then
playerTipData:SetTeamId(teamid);
if(teamid~=0)then
if(not TeamProxy.Instance:IHaveTeam())then
curPlayerTip:ChangeFunc("InviteMember", "ApplyTeam");
else
curPlayerTip:UpdateFuncState("InviteMember", PlayerTipFuncState.Grey, ZhString.PlayerTip_AlreadyHaveTeam);
end
end
end
end
end
function FunctionPlayerTip:SetWhereIClickThisIcon(where)
self.whereClick = where
end
function FunctionPlayerTip:GetWhereIClickThisIcon()
return self.whereClick or PlayerTipSource.FromTeam
end