23.03.2017, 20:25
|
#83
|
Пользователь
Регистрация: 24.11.2013
Возраст: 34
Сообщений: 42
Отблагодарили 14 раз(а)
|
Re: Редактируем interface.u (Hex вариант)
https://youtu.be/LAEMei8ady8
2 строчки;
Свернуть ↑
L2PcInstance.java broadcastStatusUpdate() Broadcast.toKnownPlayersInRadius(this, su, 3000);
Код:
public void broadcastStatusUpdate()
{
StatusUpdate su = new StatusUpdate(this);
su.addAttribute(StatusUpdate.MAX_HP, getMaxHp());
su.addAttribute(StatusUpdate.CUR_HP, (int) getCurrentHp());
su.addAttribute(StatusUpdate.MAX_MP, getMaxMp());
su.addAttribute(StatusUpdate.CUR_MP, (int) getCurrentMp());
su.addAttribute(StatusUpdate.MAX_CP, getMaxCp());
su.addAttribute(StatusUpdate.CUR_CP, (int) getCurrentCp());
sendPacket(su);
Broadcast.toKnownPlayersInRadius(this, su, 3000);
final boolean needCpUpdate = needCpUpdate();
final boolean needHpUpdate = needHpUpdate();
if (isInParty() && (needCpUpdate || needHpUpdate || needMpUpdate()))
{
getParty().broadcastToPartyMembers(this, new PartySmallWindowUpdate(this));
}
if (isInOlympiadMode() && isOlympiadStart() && (needCpUpdate || needHpUpdate))
{
final OlympiadGameTask game = OlympiadGameManager.getInstance().getOlympiadTask(getOlympiadGameId());
if ((game != null) && game.isBattleStarted())
{
game.getZone().broadcastStatusUpdate(this);
}
}
if (isInDuel() && (needCpUpdate || needHpUpdate))
{
DuelManager.getInstance().broadcastToOppositTeam(this, new ExDuelUpdateUserInfo(this));
}
}
Свернуть ↑Развернуть ↓
Свернуть ↑
TargetStatusWnd.uc HandleTargetUpdate(); bShowHPBar = true; bShowMPBar = true;
Код:
//타겟 정보 업데이트 처리
function HandleTargetUpdate()
{
local Rect rectWnd;
local string strTmp;
local int TargetID;
local int PlayerID;
local int PetID;
local int ClanType;
local int ClanNameValue;
//타겟 속성 정보
local bool bIsServerObject;
local bool bIsHPShowableNPC; //공성진지
local bool bIsVehicle;
local string Name;
local string NameRank;
local color TargetNameColor;
//ServerObject
local int ServerObjectNameID;
local Actor.EL2ObjectType ServerObjectType;
//Vehicle
local Vehicle VehicleActor;
local string DriverName;
//HP,MP
local bool bShowHPBar;
local bool bShowMPBar;
//혈맹 정보
local bool bShowPledgeInfo;
local bool bShowPledgeTex;
local bool bShowPledgeAllianceTex;
local string PledgeName;
local string PledgeAllianceName;
local texture PledgeCrestTexture;
local texture PledgeAllianceCrestTexture;
local color PledgeNameColor;
local color PledgeAllianceNameColor;
//NPC특성
local bool bShowNpcInfo;
local Array<int> arrNpcInfo;
//새로운Target인가?
local bool IsTargetChanged;
local bool WantHideName;
local int nMasterID;
local UserInfo info;
local Color WhiteColor; // 하얀색을 설정.
WhiteColor.R = 0;
WhiteColor.G = 0;
WhiteColor.B = 0;
bShowHPBar = true;
bShowMPBar = true;
//타겟ID 얻어오기
TargetID = class'UIDATA_TARGET'.static.GetTargetID();
if (TargetID<1)
{
if (m_rotated )
OnRotateClose();
else
Me.HideWindow();
return;
}
//~ if (nMasterID>0)
//~ {
//타겟이 바뀌었는가?
if (m_TargetID!=TargetID)
{
IsTargetChanged = true;
}
m_TargetID = TargetID;
GetTargetInfo(info);
nMasterID= info.nMasterID;
WantHideName= info.WantHideName;
//초기화
rectWnd = Me.GetRect();
PledgeName = GetSystemString(431);
PledgeAllianceName = GetSystemString(591);
PledgeNameColor.R = 128;
PledgeNameColor.G = 128;
PledgeNameColor.B = 128;
PledgeAllianceNameColor.R = 128;
PledgeAllianceNameColor.G = 128;
PledgeAllianceNameColor.B = 128;
//타겟 이름 색깔
TargetNameColor = GetTargetNameColor(m_TargetLevel);
bIsServerObject = class'UIDATA_TARGET'.static.IsServerObject();
bIsVehicle = class'UIDATA_TARGET'.static.IsVehicle();
////////////////////////////////////////////////////////////////////////////////////////////////////////
//StaticObject ( door 등등 )
if (bIsServerObject)
{
ServerObjectType = class'UIDATA_STATICOBJECT'.static.GetServerObjectType(m_TargetID);
if (ServerObjectType == EL2_AIRSHIPKEY)
{
Name = GetSystemString( 1966 ); //조종 키
NameRank = "";
}
else
{
ServerObjectNameID = class'UIDATA_STATICOBJECT'.static.GetServerObjectNameID(m_TargetID);
if (ServerObjectNameID>0)
{
Name = class'UIDATA_STATICOBJECT'.static.GetStaticObjectName(ServerObjectNameID);
NameRank = "";
}
}
UserName.SetName(Name, NCT_Normal,TA_Center);
//~ NameTxt.SetName(Name, NCT_Normal,TA_Center);
RankName.SetName(NameRank, NCT_Normal,TA_Center);
//HP표시
if (ServerObjectType == EL2_DOOR)
{
if( class'UIDATA_STATICOBJECT'.static.GetStaticObjectShowHP( m_TargetID ) )
{
bShowHPBar = true;
UpdateHPBar(class'UIDATA_STATICOBJECT'.static.GetServerObjectHP(m_TargetID), class'UIDATA_STATICOBJECT'.static.GetServerObjectMaxHP(m_TargetID));
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
//탈것인가?
else if( bIsVehicle )
{
//비행선 타겟은 일단 보류한다, ttmayrin 2009.7.7
HandleTargetHideWindow();
return;
//TO DO : 배이름, 나중에 SYSSTRING또는 서버에서 얻어오는 것으로 하자.
UserName.SetName("AirShip", NCT_Normal,TA_Center);
VehicleActor = Vehicle(class'UIDATA_TARGET'.static.GetTargetActor());
if( VehicleActor != None )
{
//선장 이름
if(VehicleActor.DriverID > 0 )
DriverName = class'UIDATA_USER'.static.GetUserName( VehicleActor.DriverID );
if( Len(DriverName) < 1 )
DriverName = GetSystemString( 1967 ); // 조종사 없음
RankName.SetName( DriverName, NCT_Normal,TA_Center );
//Fuel
//VehicleActor.MaxFuel
//VehicleActor.CurFuel
//HP
//VehicleActor.MaxHP
//VehicleActor.CurHP
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
//타겟ID는 있는데 이름을 알수없다면, 멀리있는 파티멤버로 가정
else if (Len(info.Name)<1)
{
Name = class'UIDATA_PARTY'.static.GetMemberVirtualName(m_TargetID);
if ( Name == "")
{
Name = class'UIDATA_PARTY'.static.GetMemberName(m_TargetID);
}
NameRank = "";
//debug("m_TargetID" $ m_TargetID $ ", info.Name : " $ info.Name $ ", Name : " $ Name );
UserName.SetName(Name, NCT_Normal,TA_Center);
//~ NameTxt.SetName(Name, NCT_Normal,TA_Center);
RankName.SetName(NameRank, NCT_Normal,TA_Center);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
//Npc or Pc 의 경우
else
{
PlayerID = class'UIDATA_PLAYER'.static.GetPlayerID();
PetID = class'UIDATA_PET'.static.GetPetID();
bIsHPShowableNPC = class'UIDATA_TARGET'.static.IsHPShowableNPC();
//if ((info.bNpc && !info.bPet && info.bCanBeAttacked ) || //몹의경우
if ((info.bNpc && !info.bPet && bIsHPShowableNPC) || //몹의경우
(PlayerID>0 && m_TargetID == PlayerID) || //나의경우
(info.bNpc && info.bPet && m_TargetID == PetID) || //펫의경우
(info.bNpc && bIsHPShowableNPC) ) //공성진지
{
//일반 몹중에 항상 흰색으로 표시해 줄 필요가 있는 몬스터일 경우
if(IsAllWhiteID(info.nClassID))
{
Name = info.Name;
NameRank = "";
//debug("m_TargetID" $ m_TargetID $ ", info.Name : " $ info.Name $ ", Name : " $ Name );
UserName.SetName(Name, NCT_Normal,TA_Center);
//~ NameTxt.SetName(Name, NCT_Normal,TA_Center);
RankName.SetName(NameRank, NCT_Normal,TA_Center);
//HP표시
if(! (IsNoBarID(info.nClassID)))
{
bShowHPBar = true;
UpdateHPBar(info.nCurHP, info.nMaxHP);
}
}
else
{
Name = info.Name;
NameRank = "";
UserName.SetNameWithColor(Name, NCT_Normal,TA_Center,TargetNameColor);
//~ NameTxt.SetNameWithColor(Name, NCT_Normal,TA_Center,TargetNameColor);
RankName.SetName(NameRank, NCT_Normal,TA_Center);
//HP표시
bShowHPBar = true;
UpdateHPBar(info.nCurHP, info.nMaxHP);
//MP표시
//if (!(info.bNpc && !info.bPet && info.bCanBeAttacked))
if (!(info.bNpc && !info.bPet))
{
bShowMPBar = true;
UpdateMPBar(info.nCurMP, info.nMaxMP);
}
//공중 몬스터인지 구분할 수 있다면 -- 비행 변신체 관련 추가
//~ if( info.bNpc && !info.bPet && bIsHPShowableNPC )
//~ {
//~ UpdateTargetLoc( info.Loc );
//~ UpdateAltitudeIcon(); // 각도 체크 업데이트
//~ UpdateDistIcon(); // 거리 체크 업데이트
//~ }
}
}
//Npc or Other Pc
else
{
Name = info.Name;
if (WantHideName)
{
RankName.hideWindow();
}
if (info.bNpc)
{
NameRank = "";
g_NameStr = "";
}
else
{
NameRank = GetUserRankString(info.nUserRank);
g_NameStr = Name;
}
UserName.SetName(Name, NCT_Normal,TA_Center);
//~ NameTxt.SetName(Name, NCT_Normal,TA_Center);
RankName.SetName(NameRank, NCT_Normal,TA_Center);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// 추가 정보 표시
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (m_bExpand)
{
if (info.bNpc && 0 >= info.nMasterID)
{
if (class'UIDATA_NPC'.static.GetNpcProperty(info.nClassID, arrNpcInfo))
{
bShowNpcInfo = true;
//트리컨트롤에 Npc특성아이콘 추가
//타겟이 바뀌었을때만 정보를 갱신한다. 안그럼 HP만 갱신될 때 깜박거림
if (IsTargetChanged)
UpdateNpcInfoTree(arrNpcInfo);
}
}
else
{
bShowPledgeInfo = true;
debug ("nClanID.info" @ info.nClanID);
if (info.nClanID>0)
//~ debug ("bShowPledgeInfo" @ bShowPledgeInfo);
//~ debug ("WantHideName" @ WantHideName);
{
//혈맹이름
PledgeName = class'UIDATA_CLAN'.static.GetName(info.nClanID);
PledgeNameColor.R = 176;
PledgeNameColor.G = 152;
PledgeNameColor.B = 121;
if( PledgeName != "" && class'UIDATA_USER'.static.GetClanType( m_TargetID, ClanType ) && class'UIDATA_CLAN'.static.GetNameValue(info.nClanID, ClanNameValue) )
{
if( ClanType == CLAN_ACADEMY )
{
PledgeNameColor.R = 209;
PledgeNameColor.G = 167;
PledgeNameColor.B = 2;
}
else if( ClanNameValue > 0 )
{
PledgeNameColor.R = 0;
PledgeNameColor.G = 130;
PledgeNameColor.B = 255;
}
else if( ClanNameValue < 0 )
{
PledgeNameColor.R = 255;
PledgeNameColor.G = 0;
PledgeNameColor.B = 0;
}
}
//혈맹 텍스쳐 얻어오기
if (class'UIDATA_CLAN'.static.GetCrestTexture(info.nClanID, PledgeCrestTexture))
{
bShowPledgeTex = true;
texPledgeCrest.SetTextureWithObject(PledgeCrestTexture);
}
else
{
bShowPledgeTex = false;
}
//동맹이름 및 마크
strTmp = class'UIDATA_CLAN'.static.GetAllianceName(info.nClanID);
if (Len(strTmp)>0)
{
//동맹 이름 색깔
PledgeAllianceName = strTmp;
PledgeAllianceNameColor.R = 176;
PledgeAllianceNameColor.G = 155;
PledgeAllianceNameColor.B = 121;
//동맹 텍스쳐 얻어오기
if (class'UIDATA_CLAN'.static.GetAllianceCrestTexture(info.nClanID, PledgeAllianceCrestTexture))
{
bShowPledgeAllianceTex = true;
texPledgeAllianceCrest.SetTextureWithObject(PledgeAllianceCrestTexture);
}
else
{
bShowPledgeAllianceTex = false;
}
}
}
}
}
}
if (!Me.IsShowWindow() && GetGameStateName() != "SPECIALCAMERASTATE" )
{
Me.ShowWindow();
SetExpandMode(m_bExpand);
}
//HP,MP표시
if (bShowHPBar && GetGameStateName() != "SPECIALCAMERASTATE" )
{
barHP.ShowWindow();
}
else
{
barHP.HideWindow();
}
if (bShowMPBar && GetGameStateName() != "SPECIALCAMERASTATE" )
{
barMP.ShowWindow();
}
else
{
barMP.HIdeWindow();
}
//Hide Cursed PC Name, ttmayrin
if( info.nClanID < 0 )
bShowPledgeInfo = false;
//debug ("nClanID" @ info.nClanID);
//debug ("bShowPledgeInfo" @ bShowPledgeInfo);
//debug ("WantHideName" @ WantHideName);
//혈맹정보 표시
if (bShowPledgeInfo)
{
if (!WantHideName && GetGameStateName() != "SPECIALCAMERASTATE" )
{
txtPledge.ShowWindow();
txtAlliance.ShowWindow();
txtPledgeName.ShowWindow();
txtPledgeAllianceName.ShowWindow();
txtPledgeName.SetText(PledgeName);
txtPledgeAllianceName.SetText(PledgeAllianceName);
txtPledgeName.SetTextColor(PledgeNameColor);
txtPledgeAllianceName.SetTextColor(PledgeAllianceNameColor);
if (bShowPledgeTex)
{
texPledgeCrest.ShowWindow();
txtPledgeName.MoveTo(rectWnd.nX + 66, rectWnd.nY + 43);
}
else
{
texPledgeCrest.HideWindow();
txtPledgeName.MoveTo(rectWnd.nX + 48, rectWnd.nY + 43);
}
if (bShowPledgeAllianceTex)
{
texPledgeAllianceCrest.ShowWindow();
txtPledgeAllianceName.MoveTo(rectWnd.nX + 66, rectWnd.nY + 59);
}
else
{
texPledgeAllianceCrest.HideWindow();
txtPledgeAllianceName.MoveTo(rectWnd.nX + 48, rectWnd.nY + 59);
}
}
else
{
txtPledge.HideWindow();
txtAlliance.HideWindow();
txtPledgeName.HideWindow();
txtPledgeAllianceName.HideWindow();
texPledgeCrest.HideWindow();
texPledgeAllianceCrest.HideWindow();
}
}
else
{
txtPledge.HideWindow();
txtAlliance.HideWindow();
txtPledgeName.HideWindow();
txtPledgeAllianceName.HideWindow();
texPledgeCrest.HideWindow();
texPledgeAllianceCrest.HideWindow();
}
//NPC특성 표시
if (bShowNpcInfo && GetGameStateName() != "SPECIALCAMERASTATE")
{
NpcInfo.ShowWindow();
NpcInfo.ShowScrollBar(false);
}
else
{
NpcInfo.HideWindow();
}
}
Свернуть ↑Развернуть ↓
|
|
|