프리서버 오픈소스 리니지 UI6기억창, 기억/저장/확장/희미한/신비한 구슬
프리서버 오픈소스 리니지 UI6기억창, 기억/저장/확장/희미한/신비한 구슬
C_Report.자바
public static final int BOOKMARK_SAVE = 0x22;
public static final int BOOKMARK_COLOR = 0x27;
public static final int BOOKMARK_LOADING_SAVE = 0x28;
case BOOKMARK_COLOR:// 27
int size = readD();
int id;
String name;
for (int i = 0; i < size; i++) {
id = readD();
name = readS();
Connection con = null;
PreparedStatement pstm = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("UPDATE character_teleport SET name='" + "\\" + name + "' WHERE id='" + id + "'");
pstm.execute();
} catch (SQLException e) {
} finally {
SQLUtil.close(pstm, con);
}
}
break;
case BOOKMARK_SAVE:// 22
readC();// 2 더미? 정렬?
int num;
pc.normalbookmark_list.clear();
pc.speedbookmark_list.clear();
int size2 = pc.getBookMarkSize();
for (int i = 0; i < size2; i++) {
num = readC();
pc.normalbookmark_list.add(num);
}
for (int i = 0; i < 127 - size2; i++) {
num = readC();
if (num != 0xff)
pc.speedbookmark_list.add(num);
else
break;
}
break;
case BOOKMARK_LOADING_SAVE:
if (pc.getBookMarkSize() == 0) {
pc.sendPackets(new S_ServerMessage(2963));// 기억 저장 구슬: 저장 불가(기억 장소 목록이 없음)
} else {
int citemid = readD();
L1ItemInstance SaveMarble = pc.getInventory().getItem(citemid);
pc.getInventory().removeItem(SaveMarble);
createNewItem(pc, pc.getId());
pc.sendPackets(new S_ServerMessage(2920));// 기억 저장 구슬: 기억 장소 목록 저장 완료
}
private void createNewItem(L1PcInstance pc, int i) {
L1ItemInstance item = ItemTable.getInstance().createItem(7475);
item.setCount(1);
item.set_durability(i);
item.setIdentified(true);
if (item != null && pc != null) {
if (pc.getInventory().checkAddItem(item, 1) == L1Inventory.OK) {
pc.getInventory().storeItem(item);
pc.getInventory().updateItem(item, L1PcInventory.COL_DURABILITY);
} else {
world.getInventory(pc.getX(), pc.getY(), pc.getMapId()).storeItem(item);
}
pc.sendPackets(new S_ServerMessage(403, item.getLogName()));
}
}
실렉트케릭터.자바
items(pc);//검색 후 추가
pc.sendPackets(new S_BookmarkLoad(pc));
기존 북마크 관련은 삭제합니다.
에스_북마크로드.자바
요건 통으로 올렸으니 추가하세요
package l1j.server.server.serverpackets;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import l1j.server.L1DatabaseFactory;
import l1j.server.server.Opcodes;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.templates.L1BookMark;
import l1j.server.server.utils.SQLUtil;
public class S_BookmarkLoad extends ServerBasePacket {
private static final String S_BookmarkLoad = "[S] S_BookmarkLoad";
private byte[] _byte = null;
public S_BookmarkLoad(L1PcInstance pc) {
buildPacket(pc);
}
private void buildPacket(L1PcInstance pc) {
writeC(Opcodes.S_OPCODE_BOOKMARK_LOAD);
writeC(0x2a);
writeH(0x80);// 최대기억가능갯수 128
writeC(0x02);// 0: 정렬? 1: 정렬?
Connection con = null;
PreparedStatement pstm = null;
PreparedStatement pstm2 = null;
PreparedStatement pstm3 = null;
ResultSet rs = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
L1BookMark bookmark = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("SELECT * FROM character_teleport WHERE char_id='" + pc.getId() + "' ORDER BY num ASC");
rs = pstm.executeQuery();
while (rs.next()) {
bookmark = new L1BookMark();
bookmark.setId(rs.getInt("id"));
bookmark.setCharId(rs.getInt("char_id"));
bookmark.setName(rs.getString("name"));
bookmark.setLocX(rs.getInt("locx"));
bookmark.setLocY(rs.getInt("locy"));
bookmark.setMapId(rs.getShort("mapid"));
bookmark.setRandomX(rs.getShort("randomX"));
bookmark.setRandomY(rs.getShort("randomY"));
bookmark.setSpeed(rs.getInt("speed"));
bookmark.setNumber(rs.getInt("num"));
pc.addBookMark(bookmark);
}
pstm2 = con.prepareStatement("SELECT num FROM character_teleport WHERE speed > -1 ORDER BY speed ASC");
rs2 = pstm2.executeQuery();
while (rs2.next()) {
pc.speedbookmark_list.add(rs2.getInt("num"));
}
int size = pc.getBookMarkSize();
int speedsize = pc.speedbookmark_list.size();
int los = 127 - speedsize - size;
for (int i = 0; i < size; i++)
writeC(i);
for (int i = 0; i < speedsize; i++)
writeC(pc.speedbookmark_list.get(i));
for (int i = 0; i < los; i++)
writeC(0xff);
writeH(pc.getMark_count());// 현재기억가능갯수
writeH(size);// 현재기억갯수
pstm3 = con.prepareStatement("SELECT id, name, locx, locy, mapid FROM character_teleport WHERE char_id='" + pc.getId()
+ "' ORDER BY num ASC");
rs3 = pstm3.executeQuery();
while (rs3.next()) {
writeD(rs3.getInt("id"));
writeS(rs3.getString("name"));
writeH(rs3.getShort("mapid"));
writeH(rs3.getInt("locx"));
writeH(rs3.getInt("locy"));
}
} catch (SQLException e) {
} finally {
bookmark = null;
SQLUtil.close(rs, pstm, con);
SQLUtil.close(rs2, pstm2); // 요런거 에러는 rs2, pstm2 따로 따로 해주세요..
SQLUtil.close(rs3, pstm3);//SQLUtil.close(rs2); SQLUtil.close(pstm2); 이런식으로
@Override
public byte[] getContent() {
if (_byte == null) {
_byte = getBytes();
}
return _byte;
}
public String getType() {
return S_BookmarkLoad;
}
}
리니지클라이언트.자바
리니지퀵게임맨 메서드 안 맨 아래추가
if (pc.getBookMarkSize() > 0) {
int numcount = 0;
Connection con = null;
PreparedStatement pstm = null;
PreparedStatement pstm2 = null;
PreparedStatement pstm3 = null;
ResultSet rs = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("SELECT id FROM character_teleport WHERE char_id='" + pc.getId() + "' ORDER BY num ASC");
rs = pstm.executeQuery();
pstm2 = con.prepareStatement("UPDATE character_teleport SET speed=-1, num=? WHERE id=?");
while (rs.next()) {
pstm2.setInt(1, pc.normalbookmark_list.get(numcount));
pstm2.setInt(2, rs.getInt("id"));
pstm2.execute();
numcount++;
}
if (pc.speedbookmark_list.size() > 0) {
for (int i = 0; i < pc.speedbookmark_list.size(); i++) {
pstm3 = con.prepareStatement("UPDATE character_teleport SET speed='" + i + "' WHERE char_id='" + pc.getId()
+ "' AND num='" + pc.speedbookmark_list.get(i) + "'");
pstm3.execute();
}
}
} catch (SQLException e) {
} finally {
SQLUtil.close(rs, pstm, con);
SQLUtil.close(pstm2);
SQLUtil.close(pstm3);
}
}
피씨인스턴스.자바
public FastTable<Integer> speedbookmark_list = new FastTable<Integer>();
public FastTable<Integer> normalbookmark_list = new FastTable<Integer>();
private int _markcount;
public void setMark_count(int i) {
_markcount = i;
}
public int getMark_count() {
return _markcount;
}
private int _markcount;
public void setMark_count(int i) {
_markcount = i;
}
public int getMark_count() {
return _markcount;
}
아이템유즈.자바
case 7475:// 기억의 구슬
LoadBookmark(pc, useItem.get_durability());
pc.getInventory().removeItem(useItem, 1);
break;
case 7476:// 희미한 기억의 구슬
LoadBookmark(pc, 0);
pc.getInventory().removeItem(useItem, 1);
break;
case 7477:// 신비한 기억의 구슬
LoadBookmark(pc, 1);
pc.getInventory().removeItem(useItem, 1);
break;
case 7474:// 기억 확장 구슬
if (pc.getMark_count() < 100) {
int booksize = pc.getMark_count() + 10;
pc.setMark_count(booksize);
pc.sendPackets(new S_PacketBox(S_PacketBox.BOOKMARK_SIZE_PLUS_10, booksize));
pc.getInventory().removeItem(useItem, 1);
pc.save();
} else {
pc.sendPackets(new S_ServerMessage(2930));
}
break;
private void LoadBookmark(L1PcInstance pc, int i) {
Connection con = null;
PreparedStatement pstm = null;
PreparedStatement pstm2 = null;
ResultSet rs = null;
int x;
int y;
short mapid;
String name;
int count = 0;
int markcount = pc.getMark_count();
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("SELECT name, locx, locy, mapid FROM character_teleport WHERE char_id='" + i + "' ORDER BY num ASC");
rs = pstm.executeQuery();
while (rs.next()) {
count++;
name = rs.getString("name");
mapid = rs.getShort("mapid");
x = rs.getInt("locx");
y = rs.getInt("locy");
L1BookMark bookmark = new L1BookMark();
bookmark.setId(ObjectIdFactory.getInstance().nextId());
bookmark.setCharId(pc.getId());
bookmark.setName(name);
bookmark.setLocX(x);
bookmark.setLocY(y);
bookmark.setMapId(mapid);
pstm = con.prepareStatement("INSERT INTO character_teleport SET id=?, char_id=?, name=?, locx=?, locy=?, mapid=?");
pstm.setInt(1, bookmark.getId());
pstm.setInt(2, bookmark.getCharId());
pstm.setString(3, bookmark.getName());
pstm.setInt(4, bookmark.getLocX());
pstm.setInt(5, bookmark.getLocY());
pstm.setInt(6, bookmark.getMapId());
pstm.execute();
pc.addBookMark(bookmark);
pc.sendPackets(new S_Bookmarks(name, mapid, x, y, bookmark.getId()));
if (count == markcount)
break;
}
} catch (SQLException e) {
} finally {
SQLUtil.close(rs, pstm, con);
SQLUtil.close(pstm2);
}
}
에스패킷박스.자바
public static final int BOOKMARK_SIZE_PLUS_10 = 141;// 기억 확장
public S_PacketBox(int subCode, int value) {//검색 후 그 줄 아무곳에 추가
case BOOKMARK_SIZE_PLUS_10:
writeC(value);
break;
씨유즈스킬.자바
case TELEPORT:
case MASS_TELEPORT://검색 후 두줄 주석후 추가
//readH();
// targetId = readD();
targetId = readH();
targetX = readH();
targetY = readH();
break;
스킬유즈.자바
private short _bookmark_mapid = 0;
private int _bookmark_x = 0;
private int _bookmark_y = 0;
checkUseSkill 안에
if (_skillId == TELEPORT || _skillId == MASS_TELEPORT) {//검색 후 수정
_bookmark_mapid = (short) target_id;
_bookmark_x = x;
_bookmark_y = y;
}
case TELEPORT:
case MASS_TELEPORT: {//검색 후 비교 or 통으로 교체
L1PcInstance pc = (L1PcInstance) cha;
RandomGenerator random = RandomGeneratorFactory.getSharedRandom();
if (_bookmark_x != 0) {
if (pc.getMap().isEscapable() || pc.isGm()) {
L1Map map = L1WorldMap.getInstance().getMap(_bookmark_mapid);
if (_skillId == MASS_TELEPORT) {
for (L1PcInstance member : world.getVisiblePlayer(pc, 3)) {
if (pc.getClanid() != 0 && member.getClanid() == pc.getClanid() && member.getId() != pc.getId()
&& !member.isPrivateShop()) {
int newX2 = _bookmark_x + random.nextInt(3) + 1;
int newY2 = _bookmark_x + random.nextInt(3) + 1;
if (map.isInMap(newX2, newY2) && map.isPassable(newX2, newY2)) {
L1Teleport.teleport(member, newX2, newY2, _bookmark_mapid, member.getMoveState().getHeading(), true);
} else {
L1Teleport.teleport(member, _bookmark_x, _bookmark_y, _bookmark_mapid, member.getMoveState()
.getHeading(), true);
}
}
}
}
if (pc.getInventory().checkItem(20288)) {
L1Teleport.teleport(pc, _bookmark_x, _bookmark_y, _bookmark_mapid, pc.getMoveState().getHeading(), true);
} else {
int newX2 = _bookmark_x + random.nextInt(15);
int newY2 = _bookmark_y + random.nextInt(15);
if (map.isInMap(newX2, newY2) && map.isPassable(newX2, newY2)) {
L1Teleport.teleport(pc, newX2, newY2, _bookmark_mapid, pc.getMoveState().getHeading(), true);
} else {
L1Teleport.teleport(pc, _bookmark_x, _bookmark_y, _bookmark_mapid, pc.getMoveState().getHeading(), true);
}
}
} else {
pc.sendPackets(new S_Paralysis(S_Paralysis.TYPE_TELEPORT_UNLOCK, false));
pc.sendPackets(new S_ServerMessage(79));
}
} else {
if (pc.getMap().isTeleportable() || pc.isGm()) {
L1Location newLocation = pc.getLocation().randomLocation(200, true);
int newX = newLocation.getX();
int newY = newLocation.getY();
short mapId = (short) newLocation.getMapId();
L1Map map = L1WorldMap.getInstance().getMap(mapId);
if (_skillId == MASS_TELEPORT) {
for (L1PcInstance member : world.getVisiblePlayer(pc, 3)) {
if (pc.getClanid() != 0 && member.getClanid() == pc.getClanid() && member.getId() != pc.getId()
&& !member.isPrivateShop()) {
int newX2 = newX + random.nextInt(3) + 1;
int newY2 = newY + random.nextInt(3) + 1;
if (map.isInMap(newX2, newY2) && map.isPassable(newX2, newY2)) {
L1Teleport.teleport(member, newX2, newY2, mapId, member.getMoveState().getHeading(), true);
} else {
L1Teleport.teleport(member, newX, newY, mapId, member.getMoveState().getHeading(), true);
}
}
}
}
L1Teleport.teleport(pc, newX, newY, mapId, pc.getMoveState().getHeading(), true);
} else {
pc.sendPackets(new S_Paralysis(S_Paralysis.TYPE_TELEPORT_UNLOCK, false));
pc.sendPackets(new S_ServerMessage(276));
}
}
}
텔레포트스크롤.자바
case 40086:
case 40099:
case 40100:
case 140100://검색 후 비교 or 통으로 교체
short bookmark_mapid = (short) packet.readH();
int bookmark_x = packet.readH();
int bookmark_y = packet.readH();
if (bookmark_x != 0) {
if (pc.getMap().isEscapable() || pc.isGm()) {
if (itemId == 40086) {
for (L1PcInstance member : world.getVisiblePlayer(pc)) {
if (pc.getLocation().getTileLineDistance(member.getLocation()) <= 3 && member.getClanid() == pc.getClanid()
&& pc.getClanid() != 0 && member.getId() != pc.getId() && !member.isPrivateShop()) {
L1Teleport.teleport(member, bookmark_x, bookmark_y, bookmark_mapid, member.getMoveState().getHeading(), true);
}
}
}
L1Teleport.teleport(pc, bookmark_x, bookmark_y, bookmark_mapid, 5, true);
pc.getInventory().removeItem(useItem, 1);
} else {
pc.sendPackets(new S_Paralysis(S_Paralysis.TYPE_TELEPORT_UNLOCK, false));
pc.sendPackets(new S_ServerMessage(79));
}
} else {
if (pc.getMap().isTeleportable() || pc.isGm()) {
L1Location newLocation = pc.getLocation().randomLocation(200, true);
int newX = newLocation.getX();
int newY = newLocation.getY();
short mapId = (short) newLocation.getMapId();
if (itemId == 40086) {
for (L1PcInstance member : world.getVisiblePlayer(pc)) {
if (pc.getLocation().getTileLineDistance(member.getLocation()) <= 3 && member.getClanid() == pc.getClanid()
&& pc.getClanid() != 0 && member.getId() != pc.getId() && !member.isPrivateShop()) {
L1Teleport.teleport(member, newX, newY, mapId, member.getMoveState().getHeading(), true);
}
}
}
L1Teleport.teleport(pc, newX, newY, mapId, 5, true);
pc.getInventory().removeItem(useItem, 1);
} else {
pc.sendPackets(new S_Paralysis(S_Paralysis.TYPE_TELEPORT_UNLOCK, false));
pc.sendPackets(new S_ServerMessage(276));
}
}
break;
씨딜리트북마크.자바
public C_DeleteBookmark(byte[] decrypt, LineageClient client) {{//검색 후 비교 or 통으로 교체
super(decrypt);
try {
L1PcInstance pc = client.getActiveChar();
if (pc == null)
return;
String bookmarkname = readS();
if (!bookmarkname.isEmpty())
L1BookMark.deleteBookmark(pc, bookmarkname);
} catch (Exception e) {
} finally {
finish();
}
}
엘원북마크.자바
public static void deleteBookmark(L1PcInstance player, String s) {//검색 후 비교 or 통으로 교체
L1BookMark book = player.getBookMark(s);
if (book != null) {
Connection con = null;
PreparedStatement pstm = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("DELETE FROM character_teleport WHERE name=? AND char_id=?");
pstm.setString(1, book.getName());
pstm.setInt(2, player.getId());
pstm.execute();
player.removeBookMark(book);
} catch (SQLException e) {
_log.log(Level.SEVERE, "북마크의 삭제로 에러가 발생했습니다.", e);
} finally {
SQLUtil.close(pstm, con);
}
}
}
public static void addBookmark(L1PcInstance pc, String s) {//검색 후 비교 or 통으로 교체
if (!pc.getMap().isMarkable() && !pc.isGm()) {
pc.sendPackets(new S_ServerMessage(214));
return;
}
if (pc.getBookMarkSize() >= pc.getMark_count()) {
if (pc.getMark_count() == 100) {
pc.sendPackets(new S_ServerMessage(2930));// 기억: 기억창은 최대 100개까지 확장 가능
return;
} else {
pc.sendPackets(new S_ServerMessage(676));// 기억: 기억창 포화 상태(/파워북 기억확장구슬)
return;
}
}
if (pc.getBookMark(s) == null) {
L1BookMark bookmark = new L1BookMark();
bookmark.setId(ObjectIdFactory.getInstance().nextId());
bookmark.setCharId(pc.getId());
bookmark.setName(s);
bookmark.setLocX(pc.getX());
bookmark.setLocY(pc.getY());
bookmark.setMapId(pc.getMapId());
Connection con = null;
PreparedStatement pstm = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("INSERT INTO character_teleport SET id=?, char_id=?, name=?, locx=?, locy=?, mapid=?");
pstm.setInt(1, bookmark.getId());
pstm.setInt(2, bookmark.getCharId());
pstm.setString(3, bookmark.getName());
pstm.setInt(4, bookmark.getLocX());
pstm.setInt(5, bookmark.getLocY());
pstm.setInt(6, bookmark.getMapId());
pstm.execute();
} catch (SQLException e) {
_log.log(Level.SEVERE, "북마크의 추가로 에러가 발생했습니다.", e);
} finally {
SQLUtil.close(pstm, con);
}
pc.addBookMark(bookmark);
pc.sendPackets(new S_Bookmarks(s, bookmark.getMapId(), bookmark.getLocX(), bookmark.getLocY(), bookmark.getId()));
} else {
pc.sendPackets(new S_ServerMessage(1655));// 같은 기억명으로 저장할 수 없습니다.
}
}
private int _speed;
private int _number;
public int getSpeed() {
return _speed;
}
public void setSpeed(int i) {
_speed = i;
}
public int getNumber() {
return _number;
}
public void setNumber(int i) {
_number = i;
}
에스_북마크.자바
public S_Bookmarks(String name, int map, int x, int y, int bookid) {//검색 후 비교 or 통으로 교체
buildPacket(name, map, x, y, bookid);
}
private void buildPacket(String name, int map, int x, int y, int bookid) {//검색 후 비교 or 통으로 교체
writeC(Opcodes.S_OPCODE_BOOKMARKS);
writeS(name);
writeH(map);
writeH(x);
writeH(y);
writeD(bookid);
}
아이템인스턴스.자바
public byte[] getStatusBytes() {에
os.writeC(getItem().getMaterial());
os.writeD(getWeight());// 요 두줄 검색 후 아래에... 이모양이라 설계를 하나 해야는데 ㅋㅋ
if (itemId == 7475 && get_durability() > 0) {//잡템이 손상될일 없으니 작업했더니 일이커짐..;;
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
String maker = null;
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("SELECT char_name FROM characters WHERE objid='" + get_durability() + "'");
rs = pstm.executeQuery();
while (rs.next())
maker = rs.getString("char_name");
} catch (SQLException e) {
} finally {
SQLUtil.close(rs, pstm, con);
}
os.writeC(39);
os.writeS("제작자:" + maker);//패킷을 몰라서.. 누가 좀 긁어다 줘요..
}
마이에스큐엘케릭터스토리지.자바
pc.set_Birthday(rs.getInt("Birth"));//검색 후 추가
pc.setMark_count(rs.getInt("Mark_count"));
,Birth=?,Mark_count=? 생일 검색 후 추가
몇개 있을겁니다.. 다 추가해주세요..
씨_크리에이트뉴케릭터.자바
pc.calAinHasad(0);//검색 후 추가
pc.setMark_count(60);
옵코드.자바
public static final int S_OPCODE_BOOKMARK_LOAD = 48;
트레져박스.xml
<!-- 기억의 구슬 상자 -->
<TreasureBox Type="SPECIFIC" ItemId="7478">
<Item ItemId="7473" Count="1"/>
<Item ItemId="7477" Count="1"/>
</TreasureBox>
아이템매이킹.xml
<!-- 구슬판매상인 쥬비드 -->
<Action Name="request memory crystal" NpcId="80079">
<MakeItem>
<Item Amount="1" ItemId="7474"/>
<Material Amount="100" ItemId="40490"/>
<Material Amount="1" ItemId="7479"/>
</MakeItem>
</Action>
엔피시.디비
80079 구슬 판매상^쥬비드 $13349 L1Merchant 6171
기존 케플리샤를 쥬비드로 수정
기존 케플리샤 관련 소스는 삭제하시는게..
엔피시액션.디비
80079 jubead jubead
케릭터.디비
Mark_count(마크카운트) 추가
샵.디비
80079 7476 0 345000 0 -1
80079 7478 1 575000 0 -1
잡템.디비
7473 케플리샤의 기억 저장 구슬 $13336 other normal glass 0 5194 10485 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
7474 기억 확장 구슬 $13337 other normal glass 0 5193 10484 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
7475 기억의 구슬 $13339 other normal glass 0 5195 10486 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
7476 희미한 기억의 구슬 $13340 other normal glass 0 5196 10487 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
7477 신비한 기억의 구슬 $13341 other normal glass 0 5197 10488 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
7478 기억의 구슬 상자 $13437 treasure_box normal gold 0 2267 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
7479 기억의 파편 $13429 other normal glass 0 2476 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1
케릭터텔레포트.디비
280371012 0 \fS[마을] \fT말하는 섬 32580 32931 0 0 0 -1 0
280890440 0 \fS[마을] \fT글루디오 32611 32790 4 0 0 -1 1
280890441 0 \fS[마을] \fT기란 33433 32810 4 0 0 -1 2
280890442 0 \fS[마을] \fT아덴 33966 323253 4 0 0 -1 3
280890443 0 \fS[마을] \fT켄트 33050 32780 4 0 0 -1 4
280890444 0 \fS[마을] \fT하이네 33607 33239 4 0 0 -1 5
280890445 0 \fS[마을] \fT오렌 34061 32276 4 0 0 -1 6
280890446 0 \fS[마을] \fT은기사 33080 33392 4 0 0 -1 7
280890447 0 \fS[마을] \fT화전민 32743 32447 4 0 0 -1 8
280890448 0 \fS[마을] \fT우드벡 32630 33180 4 0 0 -1 9
280890449 0 \fS[마을] \fT웰던 33705 32504 4 0 0 -1 10
280890450 0 \fS[마을] \fT침묵의 동굴 32855 32900 304 0 0 -1 11
280890451 0 \fS[마을] \fT포도밭 32872 32802 4 0 0 -1 12
280890452 0 \fS[마을] \fT실베리아 32800 32856 1000 0 0 -1 13
280890453 0 \fS[마을] \fT베히모스 32800 32868 1001 0 0 -1 14
280890454 0 \fY[명당] 라우풀신전 33136 32241 4 0 0 -1 15
280890455 0 \fY[명당] 카오틱신전 32881 32652 4 0 0 -1 16
280890456 0 \fY[명당] 마법수련실 32767 32803 77 0 0 -1 17
280890457 0 \fR[던전] \fS상아탑 32764 32842 77 0 0 -1 18
280890458 0 \fR[던전] \fS글루디오 32811 32726 7 0 0 -1 19
280890459 0 \fR[던전] \fS수련1층 32807 32811 25 0 0 -1 20
280890460 0 \fR[던전] \fS수련2층 32804 32813 26 0 0 -1 21
280890461 0 \fR[던전] \fS수련3층 32808 32810 27 0 0 -1 22
280890462 0 \fR[던전] \fS침공로 32761 32822 307 0 0 -1 23
280890463 0 \fR[던전] \fS개미굴 32784 32750 43 0 0 -1 24
280890464 0 \fR[던전] \fS용의 계곡 던전 1층 32740 32777 30 0 0 -1 25
280890465 0 \fR[던전] \fS용의 계곡 던전 2층 32760 32781 31 0 0 -1 26
280890466 0 \fR[던전] \fS용의 계곡 던전 3층 32709 32818 32 0 0 -1 27
280890467 0 \fR[던전] \fS용의 계곡 던전 4층 32669 32869 33 0 0 -1 28
280890468 0 \fR[던전] \fS지하수로 32678 32790 301 0 0 -1 29
280890469 0 \fR[던전] \fS에바왕국 32807 32984 253 0 0 -1 30
280890470 0 \fR[던전] \fS기란 던전 32810 32731 53 0 0 -1 31
280890471 0 \fR[던전] \fS얼음 수정 동굴 32850 32837 278 0 0 -1 32
280890472 0 \fR[던전] \fS말하는 섬 던전 32668 32804 1 0 0 -1 33
280890473 0 \fR[던전] \fS요정 숲 던전 32804 32724 19 0 0 -1 34
280890474 0 \fY[필드] \fW용의 계곡 용뼈 33392 32333 4 0 0 -1 35
280890475 0 \fY[필드] \fW용의 계곡 아래 뼈 33265 32392 4 0 0 -1 36
280890476 0 \fY[필드] \fW황혼의 산맥 34278 33245 4 0 0 -1 37
280890477 0 \fY[필드] \fW잊혀진 섬 선착장 32936 33049 70 0 0 -1 38
280890478 0 \fY[필드] \fW해적섬 32424 33069 440 0 0 -1 39
280890479 0 \fY[필드] \fW그림자 신전 32676 32960 521 0 0 -1 40
280890480 0 \fY[필드] \fW욕망의 동굴 32757 32794 600 0 0 -1 41
280890481 0 \fY[필드] \fW몽환의 섬 32633 32817 303 0 0 -1 42
280890482 0 \fY[필드] \fW오아시스 32858 33252 4 0 0 -1 43
281288723 1 \fV[신비] \fW얼음 호수 중앙 34001 32332 4 0 0 -1 0
281288724 1 \fV[신비] \fW얼음 호수 외각 33978 32326 4 0 0 -1 1
281288725 1 \fV[신비] \fW얼음 절벽 34162 32188 4 0 0 -1 2
281288726 1 \fV[신비] \fW아덴 작은 배 34207 33224 4 0 0 -1 3
281288727 1 \fV[신비] \fW하이네 경계탑 33625 33509 4 0 0 -1 4
281288728 1 \fV[신비] \fW용의 계곡 절벽 33414 32412 4 0 0 -1 5
281288729 1 \fV[신비] \fW숨겨진 거북이 섬 33505 33202 4 0 0 -1 6
281288730 1 \fV[신비] \fW정신과 시간의 섬 33505 33202 4 0 0 -1 7
희미한,신비한 구슬 좌표는 임의로 넣은겁니다..
출처 : 린프리

찰떡01 님의 최근 댓글
ㄳ 2023 06.17 ㄱㅅ 2020 12.19 클라 공유 부탁드립니다. 2020 12.19 ㄱㅅ 2020 11.26 ㄱㅅ 2020 11.05