//타겟 정보 업데이트 처리
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;
////////////////////////////////////////////////////////////////////////////////////////////////////////
//타겟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();
//공중 몬스터인지 구분할 수 있다면 -- 비행 변신체 관련 추가
//~ if( info.bNpc && !info.bPet && bIsHPShowableNPC )
//~ {
//~ UpdateTargetLoc( info.Loc );
//~ UpdateAltitudeIcon(); // 각도 체크 업데이트
//~ UpdateDistIcon(); // 거리 체크 업데이트
//~ }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// 추가 정보 표시
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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)
Хочу замутить чтоб отдельным окном для таргета выводились все бафы, все сделал по клиентской части, но на сервере не могу найти как пакеты правильно отправлять...
Как я понимаю мне надо найти пакеты которые отправляет сервер когда персонаж находится в пати.
Если персонаж находится в пати то бафы выводит нормально...
Помогите буду благодарен!
Мысли по поводу темы.
А почему нельзя перекомпилировать interface.u когда например нужно добавить новый код в функцию.
Можно ведь написать программу которая:
декодирует *.u файл
даст возможность добавить новый код
собирает обратно пересчитав смещения
Или в других файлах *.u используются ресурсы из interface.u с использованием точных смещений и они не должны ни в коем случае меняться?
Пожалуйста проясните.