close_btn
로그인, 회원가입후 더 많은 혜택을 누리세요 로그인 회원가입 닫기

린올팩 텔녀UI

2016.07.07 20:42

43inwide 조회 수:131

 

S_TelePortUi

 

package l1j.server.server.serverpackets;

import l1j.server.server.Opcodes;

public class S_TelePortUi extends ServerBasePacket {
    private static final String S_TelePortUi = "[S] S_TelePortUi";

    private byte[] _byte = null;

 public S_TelePortUi(int objid, String[] action, int[] price, int map) {
  writeC(Opcodes.S_EXTENDED_PROTOBUF);
  writeH(0x0243);
  writeC(0x08);
  write7B(objid);
  for (int i = 0; i < map; i++) {
   int length = bitlengh(price[i]) + 5;
   int totallen = length + action[i].getBytes().length + 4;
   writeC(0x12);
   write7B(totallen);
   writeC(0x0a);
   writeS2(action[i]);
   writeC(0x12);
   write7B(length);
   writeH(0x0708);
   writeC(0x10);
   write7B(price[i]);
   writeH(0x0118);
  }
  writeH(0);
 }

    @Override
    public byte[] getContent() {
        if (_byte == null) {
            _byte = _bao.toByteArray();
        }
        return _byte;
    }

    @Override
    public String getType() {
        return S_TelePortUi;
    }
}

 

아래 내용을 추가하세요 ^^

 

C_NPCTalk

 

package l1j.server.server.clientpackets;

import java.util.logging.Logger;

import l1j.server.server.GameClient;
import l1j.server.server.datatables.NpcActionTable;
import l1j.server.server.model.L1Object;
import l1j.server.server.model.L1World;
import l1j.server.server.model.Instance.L1NpcInstance;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.model.npc.L1NpcHtml;
import l1j.server.server.model.npc.action.L1NpcAction;
import l1j.server.server.serverpackets.S_NPCTalkReturn;
import l1j.server.server.serverpackets.S_TelePortUi;

//Referenced classes of package l1j.server.server.clientpackets:
//ClientBasePacket, C_NPCTalk

public class C_NPCTalk extends ClientBasePacket {

 private static final String C_NPC_TALK = "[C] C_NPCTalk";
 private static Logger _log = Logger.getLogger(C_NPCTalk.class.getName());
 private static String[] action = new String[] { "T_talk island",
   "T_gludio", "T_orc", "T_woodbec", "T_silver knight", "T_kent",
   "T_giran", "T_heine", "T_werldern", "T_oren", "T_aden", "T_scave",
   "T_behemoth", "T_silveria", "T_pcbang", "D_talk island",
   "D_gludio", "D_elven", "D_training", "D_barlog", "D_dragon valley",
   "D_eva king", "D_ivory tower", "D_yahee", "F_shelob",
   "F_orc forest", "F_ruin of death", "F_desert", "F_dragon valley",
   "F_halpas", "F_valakas", "F_jungle", "F_heine", "F_mirror",
   "F_elmor", "F_lindvior", "F_giant" };

 private static String[] claudiaact = new String[] { "Tel_talking",
   "Tel_watera", "Tel_waterb", "Tel_spidercave", "Tel_field",
   "Tel_underworld", "Tel_orcvil", "Tel_deathcastle", "Tel_swamp" };

 private static int[] T_talk_island = new int[] { 0, 1175, 1481, 1458, 1884,
   1461, 1727, 2123, 2087, 2470, 2429, 2024, 2107, 2470, 0, 140, 1343,
   1717, 1905, 1717, 1945, 2328, 2532, 2663, 47, 1447, 1327, 1647,
   1799, 1662, 2085, 1928, 2060, 2251, 2247, 2155, 2493 };

 private static int[] T_gludio = new int[] { 1175, 0, 321, 283, 709, 298,
   552, 948, 927, 1310, 1254, 864, 947, 1405, 0, 1315, 169, 557, 731,
   542, 785, 1153, 1372, 1503, 1207, 287, 167, 473, 639, 487, 925,
   768, 885, 1077, 1087, 981, 1318 };

 private static int[] T_orc = new int[] { 1481, 321, 0, 567, 845, 421, 687,
   1083, 671, 989, 1389, 543, 627, 1085, 0, 1554, 340, 237, 866, 677,
   464, 1289, 1051, 1182, 1527, 76, 153, 608, 328, 623, 605, 874,
   1021, 1212, 979, 1116, 1453 };

 private static int[] T_woodbec = new int[] { 1458, 283, 567, 0, 426, 544,
   794, 665, 1173, 1556, 971, 1110, 1193, 1651, 0, 1598, 227, 803,
   447, 259, 1031, 870, 1618, 1749, 1411, 533, 413, 189, 885, 453,
   1171, 1014, 602, 793, 1333, 1147, 1137 };

 private static int[] T_silver_knight = new int[] { 1884, 709, 845, 426, 0,
   423, 629, 447, 1008, 1391, 590, 945, 1029, 1487, 0, 2024, 541, 832,
   59, 266, 866, 444, 1453, 1584, 1837, 921, 735, 237, 721, 289, 1007,
   849, 224, 471, 1169, 982, 973 };

 private static int[] T_kent = new int[] { 1461, 298, 421, 544, 423, 0, 266,
   662, 629, 1012, 968, 566, 649, 1107, 0, 1601, 317, 409, 445, 645,
   487, 867, 1074, 1205, 1505, 497, 312, 440, 341, 201, 627, 470, 599,
   791, 789, 695, 1032 };

 private static int[] T_giran = new int[] { 1727, 552, 687, 794, 629, 266,
   0, 396, 379, 762, 702, 380, 399, 857, 0, 1867, 567, 675, 571, 895,
   275, 601, 824, 855, 1755, 763, 578, 690, 359, 341, 377, 220, 405,
   525, 539, 429, 766 };

 private static int[] T_heine = new int[] { 2123, 948, 1083, 665, 447, 662,
   396, 0, 561, 945, 306, 776, 582, 1040, 0, 2263, 779, 1071, 388,
   713, 671, 205, 1007, 1137, 2076, 1159, 974, 507, 755, 461, 560,
   403, 223, 129, 772, 535, 526 };

 private static int[] T_werldern = new int[] { 2087, 927, 671, 1173, 1008,
   629, 379, 561, 0, 383, 718, 364, 111, 479, 0, 2160, 946, 659, 949,
   1274, 259, 725, 445, 576, 2133, 747, 759, 1069, 343, 719, 123, 203,
   784, 541, 307, 445, 782 };

 private static int[] T_oren = new int[] { 2470, 1310, 989, 1556, 1391,
   1012, 762, 945, 383, 0, 801, 453, 363, 95, 0, 2543, 1329, 753, 133,
   1657, 525, 1109, 91, 193, 2517, 1023, 1143, 1452, 671, 1103, 385,
   542, 1167, 920, 223, 409, 693 };

 private static int[] T_aden = new int[] { 2429, 1254, 1389, 971, 590, 968,
   702, 306, 718, 801, 0, 1082, 829, 897, 0, 2569, 1085, 1377, 531,
   856, 977, 307, 863, 994, 2382, 1465, 1280, 781, 1061, 767, 841,
   515, 369, 177, 579, 392, 383 };

 private static int[] T_scave = new int[] { 2024, 864, 543, 1110, 945, 566,
   380, 776, 364, 453, 1082, 0, 253, 541, 0, 2097, 883, 307, 887,
   1211, 105, 971, 508, 639, 2071, 577, 697, 1006, 225, 657, 241, 567,
   721, 905, 671, 809, 1146 };

 private static int[] T_behemoth = new int[] { 2107, 947, 627, 1193, 1029,
   649, 399, 582, 111, 363, 829, 253, 0, 458, 0, 2181, 967, 547, 970,
   1295, 163, 746, 425, 555, 2154, 660, 780, 1089, 308, 740, 22, 314,
   805, 652, 419, 556, 893 };

 private static int[] T_silveria = new int[] { 2565, 1405, 1085, 1651, 1487,
   1107, 857, 1040, 479, 95, 897, 541, 458, 0, 0, 2639, 1425, 848,
   1428, 1753, 621, 1204, 37, 129, 2612, 1118, 1238, 1547, 766, 1198,
   480, 637, 1263, 1015, 318, 505, 747 };
 
 private static int[] T_pcbang = new int[] { 2107, 947, 627, 1193, 1029, 649, 399, 582, 111, 363, 829, 253, 0, 458,
     0, 2181, 967, 547, 970, 1295, 163, 746, 425, 555, 2154, 660, 780, 1089, 308, 740, 22, 314, 805, 652, 419,
     556, 893 };

 private static int[] T_claudia = new int[] { 100, 0, 0, 0, 0, 0, 0, 0, 0 };

 public C_NPCTalk(byte abyte0[], GameClient client) throws Exception {
  super(abyte0);
  try {
   int objid = readD();
   L1Object obj = L1World.getInstance().findObject(objid);
   L1PcInstance pc = client.getActiveChar();
   if (pc == null) return;
   
   int npcid = ((L1NpcInstance) obj).getNpcTemplate().get_npcId();
   
   int mapvalue = 0;
   mapvalue = action.length;
   switch (npcid) {
   case 50015:// 말하는 섬 (루카스)
    pc.sendPackets(new S_TelePortUi(objid, action, T_talk_island, mapvalue));
    break;
   case 50024:// 글루딘 마을 (아스터)
    pc.sendPackets(new S_TelePortUi(objid, action, T_gludio, mapvalue));
    break;
   case 50082:// 화전민 마을 (지프란)
    pc.sendPackets(new S_TelePortUi(objid, action, T_orc, mapvalue));
    break;
   case 50054:// 우드벡 마을 (트레이)
    pc.sendPackets(new S_TelePortUi(objid, action, T_woodbec, mapvalue));
    break;
   case 50056: // 은기사 마을 (메트)
    pc.sendPackets(new S_TelePortUi(objid, action, T_silver_knight, mapvalue));
    break;
   case 50020:// 켄트성 마을 (스텐리)
    pc.sendPackets(new S_TelePortUi(objid, action, T_kent, mapvalue));
    break;
   case 50036:// 기란 마을 (윌마)
    pc.sendPackets(new S_TelePortUi(objid, action, T_giran, mapvalue));
    break;
   case 50066:// 하이네 마을 (리올)
    pc.sendPackets(new S_TelePortUi(objid, action, T_heine, mapvalue));
    break;
   case 50039:// 웰던 마을 (레슬리)
    pc.sendPackets(new S_TelePortUi(objid, action, T_werldern, mapvalue));
    break;
   case 50051:// 오렌 마을 (키리우스)
    pc.sendPackets(new S_TelePortUi(objid, action, T_oren, mapvalue));
    break;
   case 50044:
   case 50046:// 아덴 마을 (엘레리스)
    pc.sendPackets(new S_TelePortUi(objid, action, T_aden, mapvalue));
    break;
   case 50079:// 침묵의 동굴 마을 (다니엘)
    pc.sendPackets(new S_TelePortUi(objid, action, T_scave, mapvalue));
    break;
   case 4918000:// 베히모스 (데카비아)
    pc.sendPackets(new S_TelePortUi(objid, action, T_behemoth, mapvalue));
    break;
   case 4919000:// 실베리아 (샤리엘)
    pc.sendPackets(new S_TelePortUi(objid, action, T_silveria, mapvalue));
    break;
   case 100287:// 피아트 수상한정원
    pc.sendPackets(new S_TelePortUi(objid, action, T_pcbang, mapvalue));
    break;
   case 202055: // 클라우디아 (소피)
    mapvalue = claudiaact.length;
    pc.sendPackets(new S_TelePortUi(objid, claudiaact, T_claudia, mapvalue));
    break;
   }
   if (obj != null && pc != null) {
    if (obj instanceof L1NpcInstance)
     pc.talkingNpcObjid = objid;
    L1NpcAction action = NpcActionTable.getInstance().get(pc, obj);
    if (action != null) {
     L1NpcHtml html = action.execute("", pc, obj, new byte[0]);
     if (html != null) {
      S_NPCTalkReturn snt = new S_NPCTalkReturn(obj.getId(),
        html);
      pc.sendPackets(snt, true);
     }
     return;
    }
    obj.onTalkAction(pc);
   } else {
    // _log.severe("오브젝트가 발견되지 않습니다 시도 캐릭터:"+pc==null ? "PC없음":
    // (pc.getName()+" x:"+pc.getX()+" y:"+pc.getY()+" map:"+pc.getMapId())+" objid="
    // + objid);
   }
  } catch (Exception e) {

  } finally {
   clear();
  }
 }

 @Override
 public String getType() {
  return C_NPC_TALK;
 }
}

 

L1PcInstance

 

아래 내용을 추가해주세요

 

public int talkingNpcObjid = 0;

 
이제 부터는 기존 텔녀 부분을 수정하겠습니다.
팩안에
\data\xml\NpcActions\Teleporter
<!-- 말하는 섬 (루카스) -->
 <Action Name="T_talk island" NpcId="50015">
  <Teleport X="32581" Y="32927" Map="0" Heading="5" Price="0"/>
 </Action>
 <Action Name="T_gludio" NpcId="50015">
  <Teleport X="32607" Y="32791" Map="4" Heading="5" Price="1175"/>
 </Action>
 
위에 보시면 액션 네임이 변경 하면 됩니다. [C_NPCTalk  참고하세요]
 
디비
npcaction 디비 안에 텔녀 번호 삭제해주세요

 

팝* 펌

번호 제목 글쓴이 날짜 조회 수
공지 소스자료는 직접 올려주세요 게임존 2017.06.06 550
559 대만 3.52c 옵코 준희미니 2016.07.28 44
558 감자팩 로봇 자동시작하기 [1] 43inwide 2016.07.07 462
557 감자팩 엔코인샵 화폐 변경하기 43inwide 2016.07.07 141
» 린올팩 텔녀UI 43inwide 2016.07.07 131
555 그냥 떠오기3.52c 준희미니 2016.07.07 152
554 추가 패킷~~~~~~~~~ 준희미니 2016.07.07 62
553 3.53C 타이머 준희미니 2016.07.07 36
552 YN메세지 먹통 되는거 수정 준희미니 2016.07.07 54
551 [UI6] 리스시에 아이콘 제대로 안받아오는 현상 수정 준희미니 2016.07.07 51
550 3.53 통합창고 npcaction 준희미니 2016.07.07 43
549 드래곤키 사용불가능현상 (임시방편) 준희미니 2016.07.07 35
548 [UI6] 3.53c 교환/스텟 수정후 준희미니 2016.07.07 42
547 예스노 실험하긔 준희미니 2016.07.07 26
546 드래곤포탈부분 // 전 수정없이 ;; 준희미니 2016.07.07 30
545 [UI6] y/n 관련 정리.. 준희미니 2016.07.07 52
544 [UI6] 드래곤진주 / 광분의물약 (3단가속) 준희미니 2016.07.07 200
543 [UI6] 던전 타이머 적용 하기-아케인님 자료 응용- 준희미니 2016.07.07 105
542 아머브레이크 소스 준희미니 2016.07.07 107
541 카운터 매직 짜집기^^:; 준희미니 2016.07.07 84
540 숨겨진용들의땅 스폰 준희미니 2016.07.07 73
539 블러드 러스트 해결...했긴했는데...조금수정된이야기 준희미니 2016.07.07 75
538 드레이크 마법인형 New 준희미니 2016.07.07 97
537 /입장시간 입니다 준희미니 2016.07.07 79
536 [UI6]-포비뉨:시장상인찾기- 수정 준희미니 2016.07.07 30
535 통돌이 소스올려요 (존님꺼아님 준희미니 2016.07.07 113
534 설벽좌표 준희미니 2016.07.07 22
533 (ui5) 영자명령어 혈전시작 ,종료 준희미니 2016.07.07 35
532 리스창 다른방식입니다 준희미니 2016.07.07 47
531 짜집기! 보완.PC방 버프 준희미니 2016.07.07 92
530 스트링빌더사용해보긔 준희미니 2016.07.07 43
529 에르자베 준희미니 2016.07.07 36
528 오림스코어 패킷번호? 준희미니 2016.07.07 26
527 블러드 러스트 와 막대류 준희미니 2016.07.07 34
526 3.53C 창고 물건찾을때 금액 패킷 준희미니 2016.07.07 34
525 미소님 요청 622 설문처리 준희미니 2016.07.07 21
524 아이템 유즈빼먹었네요 ㅠ ㅠ.. 준희미니 2016.07.07 37
523 혈맹 계급 관련 준희미니 2016.07.07 49
522 일부 마법 아이콘이 안뜨던부분? 준희미니 2016.07.07 76
521 소스대마왕님이 질문하신 소스... 준희미니 2016.07.07 57
520 [재수정]픽시의 변신 막대... 준희미니 2016.07.07 34
519 리스창 몬스터킬 준희미니 2016.07.07 33
518 검색하다가 얻은 3.53C 옵코드 및 패킷 file 준희미니 2016.07.07 68
517 윈말 촛대 좌표 file 준희미니 2016.07.07 18
516 일팩버전. 3.53c관련 통소스 참고하세요 file 준희미니 2016.07.07 67
515 편 지 패 킷. 준희미니 2016.07.07 27
514 기억 실시간 저장하시고 싶으신분? 준희미니 2016.07.07 61
513 ER변경 MAX 127 준희미니 2016.07.07 34
512 당신의 계급이 %s 로 변경되었습니다 준희미니 2016.07.07 29
511 대마왕표 첫공개소스 ㅜㅜ빠른기억창 로드 준희미니 2016.07.07 56
510 UI6 게시판 업데이트 준희미니 2016.07.07 36