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

매칭 조금덧붙인부분

2016.07.05 16:38

준희미니 조회 수:58

지엠명령어 일단 원활한 테스트위해서

    /** 2013.6.3 개태,큐르 클랜매칭 실험명령어**/

        } else if (cmd.equalsIgnoreCase("매칭")) {

            gm.sendPackets(new S_ClanMatching());

        } else if (cmd.equalsIgnoreCase("매칭0")) {

            gm.sendPackets(new S_ClanMatching(gm, 0,0));

        } else if (cmd.equalsIgnoreCase("매칭1")) {

            gm.sendPackets(new S_ClanMatching(gm, 1,0));

        } else if (cmd.equalsIgnoreCase("매칭2")) {

            gm.sendPackets(new S_ClanMatching(gm, 2,0));

        } else if (cmd.equalsIgnoreCase("매칭3")) {

            gm.sendPackets(new S_ClanMatching(gm, 3,0));

        } else if (cmd.equalsIgnoreCase("매칭4")) {

            gm.sendPackets(new S_ClanMatching(gm, 4,0));

        } else if (cmd.equalsIgnoreCase("매칭5")) {

            gm.sendPackets(new S_ClanMatching(gm, 5,0));

        } else if (cmd.equalsIgnoreCase("매칭6")) {

            gm.sendPackets(new S_ClanMatching(gm, 6,0));

            /** **/

 

 

아래껀추가

 

 

 

package l1j.server.server.serverpackets;

 

import javolution.util.FastTable;

import l1j.server.server.Opcodes;

import l1j.server.server.model.L1Clan;

import l1j.server.server.model.L1War;

import l1j.server.server.model.L1World;

import l1j.server.server.model.Instance.L1PcInstance;

 

/** 2013.6.3 개태,큐르 클랜매칭 **/

public class S_ClanMatching extends ServerBasePacket {

 

    private static final String S_ClanMatching = "[S] S_ClanMatching";

    private byte[] _byte = null;

 

   

    public S_ClanMatching(L1PcInstance pc, int type, int subType) {

        buildPacket(pc, type, subType);

    }

 

    public S_ClanMatching() {//군주부름클릭하라는부분일듯한데 현재모르것음 반응없음

        writeC(Opcodes.S_OPCODE_CLANMATCHING);

        writeC(0xf0);

        writeC(0x56);

        writeC(0x35);

        writeC(0x23);

        writeC(0x2b);

        writeC(0xb5);

        writeC(0xff);

        writeC(0x27);

        writeC(0xed);

        writeC(0x52);

        writeC(0xf6);

        writeC(0x76);

        writeC(0x20);

        writeC(0xa9);

        writeC(0xfb);

        writeC(0x32);

        writeC(0xef);

        writeC(0x57);

        writeC(0xe6);

        writeC(0x43);

        writeC(0x00);

        writeC(0x81);

        writeC(0xdf);

        //  ========================================================

        //         [Server]  OPCODE :192   Size :24              

        //        ========================================================

        //       [DATA]0000 :c0 f0 56 35 23 2b b5 ff 27 ed 52 f6 76 20 a9 fb    ..V5#+..'.R.v ..

        //      [DATA]0010 :32 ef 57 e6 43 00 81 df                            2.W.C...

 

    }

 

    /** 2013.6.3 개태,큐르 클랜매칭 **/

    private void buildPacket(L1PcInstance pc, int type, int subType) {

        int size = 0;

        writeC(Opcodes.S_OPCODE_CLANMATCHING);

        writeH(type); //매칭창 타입

        if (type == 0) {//혈맹등록

 

        } else if (type == 1) {//등록취소

 

        } else if (type == 2 || type == 3) {//혈맹리스트 추천/신청

            FastTable<L1Clan> MatchingList = null;

            if (type == 2) {

                MatchingList = L1World.getInstance().getClanMatchingList();

                size = MatchingList.size();

                writeC(size);//모든리스트갯수

            } else if (type == 3) {

                MatchingList = L1World.getInstance().getClanMatchingMyList(pc);

                size = MatchingList.size();

                writeC(size);//신청한리스트갯수

            }

            for (L1Clan clan : MatchingList) {

                if (type == 3) {

                    writeD(clan.getClanId());//클렌아이디 월랜목록번호인데 구분쉽게 아이디가좋을듯

                    writeC(0x00);

                }

                writeD(clan.getClanId());//클렌아이디

                writeS(clan.getClanName());//클렌네임

                writeS(clan.getLeaderName());//리더네임

                writeD(clan.OnlineMemberMatchCount); //섭다전까지최고유저로일단지정

                writeC(clan.MatchWarType);// 타입 0:전투, 1:사냥, 2:친목

                if (clan.getHouseId() > 0) {//아지트

                    writeC(0x01);

                } else {

                    writeC(0x00);

                }

                boolean iswar = false;

                String enemy_clan_name = null;

                for (L1War war : L1World.getInstance().getWarList()) {

                    iswar = war.CheckClanInWar(clan.getClanName());

                    if (iswar) {

                        enemy_clan_name = war.GetEnemyClanName(clan.getClanName());

                        break;

                    }

                }

                if (enemy_clan_name != null) {

                    writeC(0x01); //전쟁상태 1:O, 0:X

                    writeC(0x01); //마우스오버 표시 1:표현, 0:미표현

                    writeS("\\aG전쟁중:" + enemy_clan_name + " 혈맹");

                } else {

                    writeC(0x00);

                    writeC(0x00);

                }

                /** 혈맹 정보 **/

                writeS("\\aD" + clan.MatchMent);//홍보문구

                writeD(clan.getClanId());//클랜아이디

            }

            writeC(0x00);

            writeC(0x00);

            MatchingList.clear();

        } else if (type == 4) {

 

        } else if (type == 5) {

 

        } else if (type == 6) {//취소 수락 거절

            if (subType == 3) {//가입신청 취소할경우

                //개태잠들어서 패킷끍어올수없음 ㅈㅈ                

            }

        }

 

    }

 

    @Override

    public byte[] getContent() {

        if (_byte == null) {

            _byte = getBytes();

        }

        return _byte;

    }

 

    @Override

    public String getType() {

        return S_ClanMatching;

    }

}

 

 

 

아래도추가

 

 

package l1j.server.server.clientpackets;

 

import java.util.logging.Logger;

 

import javolution.util.FastTable;

 

import l1j.server.server.model.L1Clan;

import l1j.server.server.model.L1World;

import l1j.server.server.model.Instance.L1PcInstance;

import l1j.server.server.serverpackets.S_ClanMatching;

import l1j.server.server.serverpackets.S_SystemMessage;

import server.LineageClient;

 

/** 2013.6.3 개태,큐르 클랜매칭 **/

public class C_ClanMatching extends ClientBasePacket {

    private static final String C_ClanMatching = "[C] C_ClanMatching";

   

    private static Logger _log = Logger.getLogger(C_ClanMatching.class.getName());

 

    /** 2013.6.3 개태,큐르 클랜매칭 **/

    public C_ClanMatching(byte abyte0[], LineageClient clientthread) throws Exception {

        super(abyte0);

        int type = readC();

        L1PcInstance pc = clientthread.getActiveChar();

        L1Clan clan = null;

        FastTable<L1Clan> MatchingList = null;

        int clanid = 0;

        switch (type) {

        case 0://혈맹등록

            int warType = readC();

            String ment = readS();

            clan = pc.getClan();

            if (clan == null) {

                pc.sendPackets(new S_SystemMessage("혈맹이 없습니다."));

                //패킷이필요할지도

                return;

            }

            clan.isClanMatch = true;

            clan.MatchWarType = warType;

            clan.MatchMent = ment;

            pc.sendPackets(new S_ClanMatching(pc, 0, 0));

            MatchingList = L1World.getInstance().getClanMatchingList();

            for (L1Clan targetClan : MatchingList) {

                if (clan == targetClan) {

                    pc.sendPackets(new S_SystemMessage("등록정보를 수정하셨습니다."));

                    return;

                }

            }

            pc.sendPackets(new S_SystemMessage("혈맹을 등록하셨습니다."));

            break;

        case 1://등록취소

            clan = pc.getClan();

            if (clan == null) {

                pc.sendPackets(new S_SystemMessage("혈맹이 없습니다."));

                //패킷이필요할지도

                return;

            }

            clan.isClanMatch = false;

            clan.MatchWarType = 0;

            clan.MatchMent = "";

            clan.MatchPcList.clear();

            pc.sendPackets(new S_ClanMatching(pc, 1, 0));

            pc.sendPackets(new S_SystemMessage("혈맹등록을 취소하셨습니다."));

            break;

        case 2://새로고침

            pc.sendPackets(new S_ClanMatching(pc, 2, 0));

            break;

        case 3://새로고침

            pc.sendPackets(new S_ClanMatching(pc, 3, 0));

            break;

        case 4://새로고침

            pc.sendPackets(new S_ClanMatching(pc, 4, 0));

            break;

        case 5://혈가입신청

            clanid = readD();

            L1World.getInstance().getClan(clanid).MatchPcList.add(pc);

            pc.sendPackets(new S_ClanMatching(pc, 5, 0));

            pc.sendPackets(new S_SystemMessage("혈맹에 가입을 신청하셨습니다."));

            break;

        case 6://혈가입취소

            clanid = readD();

            readD();

            int Type = readD();

            L1World.getInstance().getClan(clanid).MatchPcList.remove(pc);

            pc.sendPackets(new S_SystemMessage("혈맹가입신청을 취소하셨습니다."));

            //pc.sendPackets(new S_ClanMatching(pc, 6, Type)); //패킷부족 개태얼렁와

            break;

        default:

            System.out.println("지정하지 않은 타입 : " + type);

            break;

        }

        MatchingList.clear();

    }

 

    @Override

    public String getType() {

        return C_ClanMatching;

    }

}

 

 

 

씨셀렉트케릭

 

 

 

   for (L1PcInstance clanMember : clan.getOnlineClanMember()) {

                        if (clanMember.getId() != pc.getId() && !pc.isGm()) {

                            // 지금, 혈맹원의%0%s가 게임에 접속했습니다.

                            clanMember.sendPackets(new S_ServerMessage(843, pc.getName()));

                        }

                    }

                   

                    /** 2013.6.3 개태,큐르 클랜매칭 **/

                    clan.setOnlineMemberMatchCount();

                    /** **/

 

 

 

엘원클랜

 

  /** 2013.6.3 개태,큐르 클랜매칭 **/

    public boolean isClanMatch = false;

    public int OnlineMemberMatchCount = 0;

    public int MatchWarType = 0;//타입 0:전투, 1:사냥, 2:친목

    public String MatchMent = "";

    public void setOnlineMemberMatchCount() {//디비입력귀찮으니 섭다전까지 최고수치

        int count = 0;

        for (int i = 0; i < clanMemberList.size(); i++) {

            if (L1World.getInstance().getPlayer(clanMemberList.get(i).name) != null) {

                count++;

            }

        }

        if (OnlineMemberMatchCount < count) {

            OnlineMemberMatchCount = count;

        }

    }

    public final FastTable<L1PcInstance> MatchPcList = new FastTable<L1PcInstance>();

   

 

    /** **/

 

 

엘원월드

 

 

 /** 2013.6.3 개태,큐르 클랜매칭 **/

public FastTable<L1Clan>  getClanMatchingList(){

        FastTable<L1Clan> matchlist = new FastTable<L1Clan>();

        for(L1Clan clan : getAllClans()){

            if(clan.isClanMatch){

                matchlist.add(clan);

            }

        }

        return matchlist;    

    }

 

public FastTable<L1Clan>  getClanMatchingMyList(L1PcInstance pc){

        FastTable<L1Clan> matchpclist = new FastTable<L1Clan>();

        for(L1Clan clan : getAllClans()){

            if(clan.isClanMatch && clan.MatchPcList.contains(pc)){

                matchpclist.add(clan);

            }

        }

        return matchpclist;    

    }

/** **/

 

 

 

수락/거절/가입신청취소 부분 패킷이필요한데

 

대만접가능한 개태는 자러가버려서 ㅈㅈ

 

신청해둔목록리스트도 패킷이없어서 ㅈㅈ

 

아무거나쏘면서 노가다할수도잇지만 굳이 그럴이유는 없으니.....

 

다음에 패킷긁어오면 마저 처리

 

 

 

일단 지금 까지 작업한부분까지만 공개할께용

 

개태랑 큐르랑 공동작업

 

변수들은 귀찮아서 일단 캡슐화안한상태

 

 

 

 

 

[출처] 매칭 조금덧붙인부분 (미완 (비공개 카페)

 

번호 제목 글쓴이 날짜 조회 수
공지 소스자료는 직접 올려주세요 게임존 2017.06.06 550
459 글말 고대물품 준희미니 2016.07.05 35
458 UI6차 [롤코] 글루딘 고대물품 관련 준희미니 2016.07.05 30
457 롤코 소스 간략화 준희미니 2016.07.05 32
456 3.63대만 접속기 옵코드 대만사이트서 공개 되어잇네여 준희미니 2016.07.05 223
455 짜집기 리치인형 준희미니 2016.07.05 49
454 대만옵코드 S_ServerVersion 올려달라는분이 잇어서여~~나머지는 기억부분 소스인듯.. 준희미니 2016.07.05 112
453 S_EquipmentWindow 패킷오류수정에바에맞게 준희미니 2016.07.05 33
452 인형레이스번호 준희미니 2016.07.05 42
451 [수정]18세님꺼 장비 장착 룬 적용 안되시는분... 준희미니 2016.07.05 50
450 계급: %s(으)로 계급 임명함 or 계급: %s을(를) %s(으)로 임명함 file 준희미니 2016.07.05 33
449 3.63c 수호기사 /가입 허용 준희미니 2016.07.05 29
448 몹트렙 준희미니 2016.07.05 74
» 매칭 조금덧붙인부분 준희미니 2016.07.05 58
446 매칭 덧붙인부분 준희미니 2016.07.05 13
445 매칭 덧붙인부분(포기 준희미니 2016.07.05 22
444 .정리 오류나는분 준희미니 2016.07.05 75
443 싸이 인형 입니다 준희미니 2016.07.05 77
442 배틀존 용기사 변신 준희미니 2016.07.05 38
441 짜집기 트리플애로우^^;; 준희미니 2016.07.05 82
440 짜집기 언케니닷지 준희미니 2016.07.05 46
439 짜집기 대마법사의모자 준희미니 2016.07.05 42
438 펌 핫식스 힘이 불끈 준희미니 2016.07.05 31
437 안톤 끝내 포기하면서 허접한 제작 주문서 올랴보아요 준희미니 2016.07.05 64
436 안톤 먹튀하시는분들 보세요 초보소스 준희미니 2016.07.05 61
435 UI6 안톤NPC _ 멸마 제작관련 준희미니 2016.07.05 49
434 인던초기화 준희미니 2016.07.05 61
433 인챈트 웨폰 / 블래스 아머 버프창 표시 준희미니 2016.07.05 130
432 인챈표기실시간 [1] 준희미니 2016.07.05 119
431 속강에 스펠도넣긔-ㅁ-ㅋ 준희미니 2016.07.05 38
430 mapids.sql 준희미니 2016.07.05 43
429 textmapreader 및 mapid 및 map파일 준희미니 2016.07.05 45
428 기억의 구슬 창 패킷 file 준희미니 2016.07.05 77
427 만월의정기나 리퍼같은거 엘원몹인분 준희미니 2016.07.05 27
426 신생아님요청 준희미니 2016.07.05 41
425 던전초기화 준희미니 2016.06.29 114
424 npc삭제하기 준희미니 2016.06.29 133
423 인던초기화(끌어올림 준희미니 2016.06.29 42
422 [수정1] 데스나이트 불검 커스텀 버전 준희미니 2016.06.29 193
421 린드비오르 갑옷 라이브화 (7/10 업데이트 적용 준희미니 2016.06.29 111
420 크리티컬 마법이펙트입니다; 고생들하세용 준희미니 2016.06.29 163
419 유저에게 스톰워크를 쓸 수 있도록 해주자 준희미니 2016.06.29 96
418 [UI6] 레벨업 버프 효과 준희미니 2016.06.29 56
417 댄싱 블레이즈 (야매) 준희미니 2016.06.29 62
416 운영자 파티 준희미니 2016.06.29 51
415 지혜의 물약 리뉴얼 준희미니 2016.06.29 65
414 만인첸시 속성 안되시는분들 있으셔서 홧팅 준희미니 2016.06.29 52
413 속성 변환 주문서(보내기는 아이디공개 합니다.) 준희미니 2016.06.29 52
412 10주년 아이템 강화하자 //질문있습니다 준희미니 2016.06.29 28
411 오림시스템[해양전] 준희미니 2016.06.29 68
410 쥬니a님 요청자료 준희미니 2016.06.29 73