[소스] 결혼소스
RingActionHandler.java 파일을 생성합니다.
내용↓
package net.sf.odinms.net.channel.handler;
import java.io.PrintStream;
import net.sf.odinms.client.MapleCharacter;
import net.sf.odinms.client.MapleClient;
import net.sf.odinms.net.AbstractMaplePacketHandler;
import net.sf.odinms.net.channel.ChannelServer;
import net.sf.odinms.net.channel.IPlayerStorage;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
import org.apache.mina.common.IoSession;
public final class RingActionHandler extends AbstractMaplePacketHandler
{
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c)
{
byte mode = slea.readByte();
MapleCharacter player = c.getPlayer();
switch (mode)
{
case 0:
String partnerName = slea.readMapleAsciiString();
MapleCharacter partner = c.getChannelServer().getPlayerStorage().getCharacterByName(partnerName);
if (partnerName.equalsIgnoreCase(player.getName())) {
c.getPlayer().dropMessage(1, "자신의 이름은 새기실 수 없습니다.");
return; }
if (partner == null) {
c.getPlayer().dropMessage(1, partnerName + " 님을 찾으실 수 없습니다. 해당 플레이어가 같은 채널에 존재하지 않거나, 오프라인 상태인지 확인하세요.");
return; }
if (partner.getGender() != player.getGender()) return;
c.getPlayer().dropMessage(1, "같은 성끼리는 결혼하실 수 없습니다.");
return;
case 1:
c.getPlayer().dropMessage(1, "결혼식의 진행을 취소하였습니다.");
boolean accepted = slea.readByte() > 0;
String proposerName = slea.readMapleAsciiString();
if (!(accepted)) return;
c.getSession().write(MaplePacketCreator.sendEngagementRequest(proposerName)); break;
case 3:
break;
case 9:
int amount = slea.readShort();
if (amount > 10)
amount = 10;
String[] items = new String[10];
for (int i = 0; i < amount; ++i)
items[i] = slea.readMapleAsciiString();
c.getSession().write(MaplePacketCreator.sendGroomWishlist());
break;
case 2:
case 4:
case 5:
case 6:
case 7:
case 8:
default:
System.out.println("NEW RING ACTION " + mode);
}
}
}
MaplePacketCreator.java파일에 아래의 내용을 추가합니다.
public static MaplePacket sendEngagementRequest(String name) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendPacketOpcode.FAMILY_ACTION.getValue()); //<name> has requested engagement. Will you accept this proposal?
mplew.write(0);
mplew.writeMapleAsciiString(name); // name
mplew.writeInt(10); // playerid
return mplew.getPacket();
}
public static MaplePacket sendGroomWishlist() {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendPacketOpcode.FAMILY_ACTION.getValue()); //<name> has requested engagement. Will you accept this proposal?
mplew.write(9);
return mplew.getPacket();
}
SendPacketOpcode.java파일에 추가합니다.
FAMILY_ACTION,
스크립트는 자신이 알아서찾으세요.
팩마다 기본적으로 있습니다.
P.S참고로 테스트는 아직 하지 않았습니다.
출처 : http://cafe.naver.com/cnbox/34

원나소년 님의 최근 댓글
초보 개발자도 가능합니까? 아직 개발의 ㄱ자도 모르긴하는데.. 2016 06.07 구축하기 쉬운가용? 2016 06.02 흑 ㅜㅜ 팩을 구하고싶은데 ㅠㅠ 구글링하면 나오려나요?... 2016 06.02 라피스 해보고싶네요 정말 어떻게못하나요... 2016 05.31 하핳... 그런게임들은 프리서버 못하는건가요? 2016 05.31