感謝為天堂模擬技術默默奉獻的人,沒有他們也沒有今天的代碼.
特別感謝aplus大大為天堂模擬技術研究提供登入器.
以上資料都來源於網路,僅供Java技術研究,商業用途均與作者無關,請在下載後的24小時內刪除,如果您覺得不錯請支持橘子天堂.
點此查看3.63OPCODE
S_ServerVersion.java
package l1j.server.server.serverpackets;
import l1j.server.Config;
import l1j.server.Server;
import l1j.server.server.Opcodes;
public class S_ServerVersion extends ServerBasePacket
{
private static final int CLIENT_LANGUAGE = Config.CLIENT_LANGUAGE; // 5.06 Start
private static final String S_SERVER_VERSION = "[S] ServerVersion";
//private static final int SERVER_VERSION = 12022011;//3.52服務器版本,取消外掛驗證
private static final int SERVER_VERSION = 120913203;//0x0734fd33;
private static final int CACHE_VERSION = 120913200;//0x0734fd30;
private static final int AUTH_VERSION = 2010083002;//0x77cf6eba;
private static final int NPC_VERSION = 120913201;//0x0734fd31;
private static final int SERVER_TYPE = 490882;
public S_ServerVersion() {
writeC(Opcodes.S_OPCODE_SERVERVERSION);
writeC(0x00);
writeC(0x01);//第幾個伺服器
writeD(SERVER_VERSION); // server verion
writeD(CACHE_VERSION); // cache verion
writeD(AUTH_VERSION); // auth verion
writeD(NPC_VERSION); // npc verion
writeD((int)Server.serverStartTime); //server start time
writeC(0x00); // unknown
writeC(0x00); // unknown
writeC(CLIENT_LANGUAGE);
writeD(SERVER_TYPE);
writeD((int)(System.currentTimeMillis()/1000));//server time
writeH(0x01);
}
@Override
public byte[] getContent() {
return getBytes();
}
@Override
public String getType() {
return S_SERVER_VERSION;
}
}
S_BookMarkLogin.Java
package l1j.server.server.serverpackets;
import java.util.ArrayList;
import l1j.server.server.Opcodes;
import l1j.server.server.templates.L1BookMark;
/**
* 登陸時記憶封包
*
* @author 透明的冰 2012.09.27
*/
public class S_BookMarkLogin extends ServerBasePacket {
public S_BookMarkLogin(ArrayList<L1BookMark> bookmarks) {
writeC(Opcodes.S_OPCODE_DELPETMENU);
writeC(0x2a);
writeH(0x80);
writeC(0x02);
for (int i = 0; i < 127; i++) {
writeC(0xff);
}
writeH(122);//數量
writeH(bookmarks.size());
L1BookMark bookmark = null;
for (int i = 0; i < bookmarks.size(); i++) {
bookmark = bookmarks.get(i);
writeD(bookmark.getId());
writeS(bookmark.getName());
writeH(bookmark.getMapId());
writeH(bookmark.getLocX()); //記憶的X軸
writeH(bookmark.getLocY()); //記憶的Y軸
}
}
@Override
public byte[] getContent() {
return getBytes();
}
}
S_Bookmarks.java
package l1j.server.server.serverpackets;
import java.util.logging.Logger;
import l1j.server.server.Opcodes;
public class S_Bookmarks extends ServerBasePacket {
private static final String _S__1F_S_Bookmarks = "[S] S_Bookmarks";
private static Logger _log = Logger.getLogger(S_Bookmarks.class.getName());
private byte[] _byte = null;
public S_Bookmarks(String name, int map, int bX,int bY,int id) {
writeC(Opcodes.S_OPCODE_BOOKMARKS);
writeS(name);
writeH(map);
writeH(bX);
writeH(bY);
writeD(id);
}
public byte[] getContent() {
if (_byte == null) {
_byte = getBytes();
}
return _byte;
}
public String getType() {
return _S__1F_S_Bookmarks;
}
}
C_UseSkill.java
} else if (skillId == TRUE_TARGET) {
targetId = readD();
targetX = readH();
targetY = readH();
message = readS();
} else if (skillId == TELEPORT || skillId == MASS_TELEPORT) {
targetId = readH(); // BookmarkMapID
targetX = readH(); //BookmarkX
targetY = readH(); //BookmarkY
} else if (skillId == FIRE_WALL || skillId == LIFE_STREAM) {
targetX = readH();
targetY = readH();
}
C_ItemUse.java
} else if (itemId == 140100 || itemId == 40100
|| itemId == 40099 || itemId == 40086 || itemId == 40863) {
para.bmapid = readH();//記憶座標的地圖號
para.bX = readH();//記憶座標的X
para.bY = readH();//記憶座標的Y
} else if (itemId == 40090 || itemId == 40091 || itemId == 40092
|| itemId == 40093 || itemId == 40094) {
para.blanksc_skillid = readC();
}
沒有留言:
張貼留言