Microsoft MVP성태의 닷넷 이야기
아래 질문 상세 소스전체입니다.. [링크 복사], [링크+제목 복사],
조회: 19438
글쓴 사람
권오영 (zktmtjqj at naver.com)
홈페이지
첨부 파일
 

/*
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 *
 * http://www.gnu.org/copyleft/gpl.html
 */

package l1j.server.server.serverpackets;

import java.util.StringTokenizer;

import l1j.server.server.Opcodes;
import l1j.server.server.datatables.AdenShopTable;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.templates.L1AdenShopItem;

// Referenced classes of package l1j.server.server.serverpackets:
// ServerBasePacket

public class S_SurvivalCry extends ServerBasePacket {

    private static final String S_SURVIVAL_CRY = "[S] S_SurvivalCry";
    private byte[] _byte = null;
    public static final int LIST = 0;
    public static final int EMAIL = 1;
    public static final int POINT = 2;
    public static final int OTP_SHOW = 4;
    public static final int OTP_CHECK_MSG = 5;
    public static final int 접속모름 = 15;

    public S_SurvivalCry(int value) {
        buildPacket(value);
    }

    public S_SurvivalCry(int value, boolean ck) {
        buildPacket(value, ck);
    }

    private void buildPacket(int value, boolean ck) {
        writeC(Opcodes.S_EXTENDED);
        writeC(접속모름);
        writeD(0x00);
        writeC(0x00);

        writeC(0x70);
        writeC(0x17);

        writeH(0x00);

        writeH(0x00);
    }

    private void buildPacket(int value) {
        writeC(Opcodes.S_EXTENDED);
        writeD(0x0F);
        writeH(0x00);
        writeD(value); // 남은시간
        writeH(0x00);
    }

    public S_SurvivalCry(int value, L1PcInstance pc) {
        try {
            if (value == 0) { // 목록
                writeC(Opcodes.S_EXTENDED);
                writeC(0x02);
                writeH(0x00);
                writeD(0x00);
                writeH(AdenShopTable.getInstance().Size());
                writeH(AdenShopTable.data_length);
                writeH(AdenShopTable.data_length);
                //
                for (L1AdenShopItem item : AdenShopTable.getInstance().getList()) {
                    writeD(item.getItemId());
                    writeH(item.getItem().getGfxId());
                    writeH(0x00);
                    String name = item.getItem().getName();
                    if (item.getPackCount() > 1)
                        name = name + "(" + item.getPackCount() + ")";
                    if (item.getItem().getMaxUseTime() > 0)
                        name = name + " [" + item.getItem().getMaxUseTime() + "]";
                    else if (item.getEnchant() > 0)
                        name = "+"+ item.getEnchant() + " " + item.getItem().getName();
                    else if (item.getItemId() == 65648)
                        name = name + " [7일]";
                    else if (item.getItemId() >= 30022 && item.getItemId() <= 30025)
                        name = name + " [18000]";
                    else if (item.getItemId() >= 22320 && item.getItemId() <= 22327)
                        name = name + " [3시간]";
                    writeH(name.getBytes("UTF-16LE").length + 2); // 이름 글자 사이즈
                    writeSU16(name); // 이름
                    String html = item.getHtml();
                    int ii = 2;
                    if (!html.equalsIgnoreCase("")) {
                        byte[] test = html.getBytes("MS949");
                        for (int i = 0; i < test.length;) {
                            if ((test[i] & 0xff) >= 0x7F)
                                i += 2;
                            else
                                i += 1;
                            ii += 2;
                        }
                    }
                    writeH(ii); // html size
                    writeSS(html); // html
                    writeD(item.getPrice()); // 가격
                    writeH(item.getType()); // 2-장비 3-버프 4-편의 5-기타
                    writeH(item.getStatus()); // 0 노말 1 new 2 hot 3 sale
                    writeD(0x000C0DBF);
                    writeD(0x000063);
                }
            } else if (value == 1) { // 결제 저장된 이메일
                writeC(Opcodes.S_EXTENDED);
                /*
                 * String s = "0c 00 26 00 64 00 6c 00 64 00 75 00 64 00 67 "+
                 * "00 75 00 73 00 40 00 6e 00 61 00 76 00 65 00 72 "+
                 * "00 2e 00 63 00 6f 00 6d 00 00 00 00 24";
                 */
                 String s = "0c 00 26 00 64 00 65 00 6D 00 6f 00 6e 00 73 00 65 00 72 00 76 00 65 00 72 00 31 00 40 00 6e 00 61 00 74 00 65 00 2e 00 63 00 6f 00 6d 00 00 00 20 b8";
                 //sdpwe2 // uf //kre
                StringTokenizer st = new StringTokenizer(s);
                while (st.hasMoreTokens()) {
                    writeC(Integer.parseInt(st.nextToken(), 16));
                }
            } else if (value == 2) { // 현재 포인트 관련?
                writeC(Opcodes.S_EXTENDED);
                writeH(0x03);
                writeH(0x01);
                writeH(0x04);
                writeD(pc.getNcoin());// 베리
                writeH(0x00);
            } else if (value == 3) { // 결제 저장된 이메일
                writeC(Opcodes.S_EXTENDED);
                String s = "02 00 00 f4 ff ff ff 00 00 00 00 00 00 99 17";
                StringTokenizer st = new StringTokenizer(s);
                while (st.hasMoreTokens()) {
                    writeC(Integer.parseInt(st.nextToken(), 16));
                }
            } else if (value == 4) {// OTP 창
                writeC(Opcodes.S_EXTENDED);
                writeD(0x33);
                writeH(0x00);
            } else if (value == 5) {// OTP CHECK MSG
                writeC(Opcodes.S_EXTENDED);
                writeH(0x05);
                // OTP 틀림
                // writeH(0x0ED0B);
                // writeD(0x29FFFFFF);
                writeH(0x00);
                writeD(0x00);
                writeC(0x00);
            }
        } catch (Exception e) {
        }
    }

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

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








[최초 등록일: ]
[최종 수정일: 11/13/2016]


비밀번호

댓글 작성자
 



2016-11-13 12시39분
그렇군요. 근데... 권오영님, 이 게시판의 제목이 뭔지 아시면서 질문하신 건가요?
정성태
2016-11-13 12시40분
[권오영] 아니여..;;;왠지 잘아실것가탕서
[guest]
2016-11-13 01시35분
소스 코드를 보니 아마도 리니지1 프리서버를 위한 소스코드 같은데 이런 역공학용 소스 코드들은 분석에 많은 시간이 걸릴 수밖에 없습니다. 질문하신 부분은 형태로 봐서는 유니코드 2바이트 문자열 같은데, 글쎄요... 딱히 그 이상 뭐라고 집어낼 부분이 없군요.
정성태

... 76  77  78  79  80  81  82  83  84  85  86  87  88  [89]  90  ...
NoWriterDateCnt.TitleFile(s)
239장강현9/14/200514987SmartClient에서의 배포 문제에 대해 [2]
238이순원9/13/200510352디버깅 할때 native 옵션껐는데두 너무 느려요.. [1]
236코디9/12/200510331[질문]런타임 보안 배포 [1]
237코디9/13/200510879    답변글 [재질문]: [질문]런타임 보안 배포 [1]파일 다운로드1
235임은선9/9/200512925스마트 클라이언트 배포시 환경파일인 app.config는 어떻게 배포 해야하나요...? [2]
234임은선9/7/200511708스마트 클라이언트 보안문제관련해서 질문이 있습니다.. [2]
233이한욱8/31/200519736가상 시리얼 포트(Virtual COM Port) 만들기 [1]
232정준명8/30/200511359[질문] HTTP 모듈/핸들러 또는 RewriteURL 관련입니다. [4]
231이진일8/30/200510482참조한 dll 들은 어떻게 배포하나요...? [1]
2303028/29/200511328[질문] 웹에서 Exchange Server 사용자 추가 [2]
229김재명8/26/200510967성태님의 홈페이지 J & J의경우 보안모듈을 어떻게 해결하셨는지 궁금합니다. [1]
227임규진8/24/200510814리소스 파일에 그림 첨가하는 방법 좀 알려 주세요. [1]
226최인호8/19/200510820스마트 클라이언트 exe 버젼 실행시 시간이 너무 오래 걸립니다. [1]
225코디8/17/200511028[질문]닷넷프레임워크 설치여부 [1]
224박준현8/17/200510613[질문]중첩 그리드라고 해야 할까요? [1]
223매커7/28/200510024강좌 잘 읽었습니다. [1]
222김지영7/27/200511483C#에서 oledb 사용하다가 에러 [2]
221박민우7/26/200512029스마트클라이언트에서의 DB접속 [1]
220테드7/22/200510981스마트 클라이언트에서 원치 않는 패킷 송수신 문제... [3]
219김종욱7/21/200511468안녕하세요... 툴밴드 콤보 박스에 대해.. [1]
2187/21/200510111스마트 클라이언트에 대한 질문 입니다. [1]파일 다운로드1
217왕초보7/21/200510707마소강좌의 AxForSmartClient 를 실행시키고 싶은데요... [1]
215궁금증6/23/200510208도대체 이게 무슨 에러 일까요... [1]
213궁금이6/18/200511911Winform 형태의 NTD에서 사용자 로그인 성공 여부 정보 유지하는 방법 [1]
212궁금이6/16/20059908ActiveX 컨트롤이 NTD에 이상이 없는지요? [1]
211류성태6/15/200510437smart client에 관하여.... [1]
... 76  77  78  79  80  81  82  83  84  85  86  87  88  [89]  90  ...