게시판 제목 잘보고 올리세요 일반게시판에 홍보글 보이면 바로 회원 차단입니다

안녕하세요. 명령어 정보창 관련 고수분들께 하나만 여쭙습니다..

컨텐츠 정보

본문

리니지 올나이트 2.0 버전에서 .정보 를 이용해 현재 실시간 캐릭터 스텟이랑 정보를 확인할 수 있는데


첨부한 사진 처럼 정보들이 뒤섞여 엉망입니다..


commandcontrol.java 쪽 보니 힌트는  characterInfo(o, st); 에서 뭔가 역할을 하는 것 같은데요


자바쪽 검색을 해봐도 해당 단어나 자바가 검색이 안되더라구요..


창을 보여주는 html쪽을 확인해보니, 이런 식으로 되있긴 하던데..


<body>

<p align=center><font fg=ffffff><var src="#0"></font> 캐릭터 정보</p>

━━━━━━━━━━━━━━━<br>


<font fg=ffffaf>클래스:</font> <font fg=ffffff><var src="#1"></font><br><br>


<font fg=ffffaf>[기본 스탯]</font><br>

<font fg=EAEAEA>STR:</font><font fg=ffffff><var src="#2">(<var src="#3">)</font> <font fg=EAEAEA>DEX:</font><font fg=ffffff><var src="#4">(<var src="#5">)</font><br>

<font fg=EAEAEA>CON:</font><font fg=ffffff><var src="#6">(<var src="#7">)</font> <font fg=EAEAEA>INT:</font><font fg=ffffff><var src="#8">(<var src="#9">)</font><br>

<font fg=EAEAEA>WIS:</font><font fg=ffffff><var src="#10">(<var src="#11">)</font> <font fg=EAEAEA>CHA:</font><font fg=ffffff><var src="#12">(<var src="#13">)</font><br><br>


-------이하 생략-----------------------------------------------------------


위 내용만 가지고는 어떻게 정보가 전달되는지 잘 모르겠네여... 도와주십셔...ㅠ

관련자료

댓글 4
profile_image

후리랭님의 댓글의 댓글

commandcontroller.java 에서 .정보 명령어 연동 내용을 확인 하실 수 있습니다. html로 보내는 소스코드가 다 적혀 있어서 저는 이부분을 수정했습니다. 답글에 다 들어갈 지 모르겠네요

 * 2026-08-25 .정보 확인창 오류 수정함. 인터페이스 html에 맞게 1:1 로 정보를 쏘아주게 변경
*/
static private void characterInfo(object o, StringTokenizer st) {
List<String> info = new ArrayList<String>();
info.clear();
PcInstance pc = (PcInstance) o;
String name = null;

if (o.getGm() > 0) {
try {
name = st.nextToken();
pc = World.findPc(name);

if (pc == null) {
ChattingController.toChatting(o, String.format("%s 캐릭터는 존재하지 않습니다.", name), Lineage.CHATTING_MODE_MESSAGE);
return;
}
} catch(Exception e) {
pc = (PcInstance) o;
}
}

// [0] 캐릭터 이름
info.add(pc.getName());

// [1] 클래스 이름 (공유해주신 소스의 getClassType() 활용)
String className = "모험가";
try {
int classType = pc.getClassType();
switch (classType) {
case 0: className = "군주"; break;
case 1: className = "기사"; break;
case 2: className = "요정"; break;
case 3: className = "마법사"; break;
case 4: className = "다크엘프"; break;
case 5: className = "용기사"; break;
case 6: className = "환술사"; break;
case 7: className = "전사"; break;
default: className = "모험가"; break;
}
} catch (Exception e) {
className = "모험가";
}
info.add(className);

// [2], [3] STR (총합, 베이스)
info.add(String.valueOf(pc.getTotalStr()));
info.add(String.valueOf(pc.getStr()));
// [4], [5] DEX (총합, 베이스)
info.add(String.valueOf(pc.getTotalDex()));
info.add(String.valueOf(pc.getDex()));
// [6], [7] CON (총합, 베이스)
info.add(String.valueOf(pc.getTotalCon()));
info.add(String.valueOf(pc.getCon()));
// [8], [9] INT (총합, 베이스)
info.add(String.valueOf(pc.getTotalInt()));
info.add(String.valueOf(pc.getInt()));
// [10], [11] WIS (총합, 베이스)
info.add(String.valueOf(pc.getTotalWis()));
info.add(String.valueOf(pc.getWis()));
// [12], [13] CHA (총합, 베이스)
info.add(String.valueOf(pc.getTotalCha()));
info.add(String.valueOf(pc.getCha()));

// [14] AC (물리 회피력)
info.add(pc.getTotalAc() - 10 <= 0 ? String.valueOf(10 - pc.getTotalAc()) : "-" + String.valueOf(pc.getTotalAc() - 10));
// [15] ER (원거리 회피력)
info.add(String.valueOf(pc.isBuffStrikerGale() ? DamageController.getEr(pc) / 3 : DamageController.getEr(pc)));
// [16] MR (마법 방어력)
info.add(String.valueOf(SkillController.getMr(pc, false)));
// [17] SP (주술력)
info.add(String.valueOf(SkillController.getSp(pc)));
// [18], [19] 무게 (현재, 최대)
info.add(String.valueOf((int) pc.getInventory().getNowWeight()));
info.add(String.valueOf((int) pc.getInventory().getMaxWeight()));

// [20] 데미지 감소
info.add(String.valueOf(pc.getTotalReduction()));
// [21] 데미지 감소 무시
info.add(String.valueOf(pc.getDynamicIgnoreReduction()));
// [22] 스턴 명중
info.add(String.valueOf(Math.round((pc.getDynamicStunHit() * 100) + pc.getKnightSkillHit())));
// [23] 기술 명중
info.add(String.valueOf(Math.round(pc.getElfSkillHit())));
// [24] 정령 적중
info.add(String.valueOf(Math.round(pc.getElfSkillHit())));
// [25] 스턴 내성
info.add(String.valueOf(Math.round(pc.getTotalStunResist() * 100)));
// [26] PvP 데미지
info.add(String.valueOf(pc.getDynamicAddPvpDmg()));
// [27] PvP 데미지 감소
info.add(String.valueOf(pc.getDynamicAddPvpReduction()));

// [28] 근거리 데미지
info.add(String.valueOf(CharacterController.toStatStr(pc, "DmgFigure")));
// [29] 근거리 명중
info.add(String.valueOf(CharacterController.toStatStr(pc, "isHitFigure")));
// [30] 근거리 치명타
info.add(String.valueOf(pc.getTotalCritical(false)));
// [31] 원거리 데미지
info.add(String.valueOf(CharacterController.toStatDex(pc, "DmgFigure")));
// [32] 원거리 명중
info.add(String.valueOf(CharacterController.toStatDex(pc, "isHitFigure")));
// [33] 원거리 치명타
info.add(String.valueOf(pc.getTotalCritical(true)));
// [34] 마법 데미지
info.add(String.valueOf(CharacterController.toStatInt(pc, "magicDamage")));
// [35] 마법 명중
info.add(String.valueOf(CharacterController.toStatInt(pc, "magicHit")));
// [36] 마법 치명타
info.add(String.valueOf(CharacterController.toStatInt(pc, "magicCritical")));
// [37] 마법 보너스
info.add(String.valueOf(CharacterController.toStatInt(pc, "magicBonus")));
// [38] MP 소모 감소
info.add(String.valueOf(CharacterController.toStatInt(pc, "mpDecrease")));

// [39] HP 틱 회복
info.add(String.valueOf(pc.getHpTic()));
// [40] HP 물약 회복 증가
info.add(String.valueOf(pc.getTotalHpPotion()));
// [41] MP 틱 회복
info.add(String.valueOf(pc.getMpTic()));
// [42] MP 물약 회복(틱)
info.add(String.valueOf(CharacterController.toStatWis(pc, "isBuffBluePotion")));

// [43] 엘릭서 복용 횟수
info.add(String.valueOf(pc.getElixir()));

o.toSender(S_Html.clone(BasePacketPooling.getPool(S_Html.class), o, "character", null, info));
}
전체 4,006 / 5 페이지
번호
제목
이름

포인트 랭킹


알림 0