sm
服务器租用 996 无法下载点击此处反馈
/
查看: 1183|回复: 2

传奇3C++版服务端源代码+客户端源码官方泄露版 [传奇3源码]

[复制链接]

826

主题

37

回帖

23万

积分

霸王教主

积分
237197
发表于 2023-8-11 00:41:50 | 显示全部楼层 |阅读模式
传奇3C++版服务端源代码+客户端源码官方泄露版

  1. #pragma once

  2. #include "../def/staticArray.h"
  3. #include "../def/_orzex/syncobj.h"

  4. #define _RUNGATE_STATUS_DISCONNECTED                0
  5. #define _RUNGATE_STATUS_GOOD                                1
  6. #define _RUNGATE_STATUS_HEAVYTRAFFIC                2

  7. #define LOGPARAM_STR                                                1
  8. #define LOGPARAM_INT                                                2

  9. #define _NUM_OF_MAXUSER                                                5000

  10. #define HAM_ALL                                                                0
  11. #define HAM_PEACE                                                        1
  12. #define HAM_GROUP                                                        2
  13. #define HAM_GUILD                                                        3
  14. #define HAM_PKATTACK                                                4

  15. #define BAGGOLD                                                                5000000

  16. #define USERMODE_PLAYGAME                                        1
  17. #define USERMODE_LOGIN                                                2
  18. #define USERMODE_LOGOFF                                                3
  19. #define USERMODE_NOTICE                                                4

  20. void MakeItemToDB(int nReadyUserInfo, char *pszUserId, char *pszCharName, _LPTMAKEITEMRCD lpMakeItemRcd);

  21. typedef struct tagOVERLAPPEDEX
  22. {
  23.         OVERLAPPED                                Overlapped;
  24.         INT                                                nOvFlag;
  25.         WSABUF                                        DataBuf;
  26.         CHAR                                        Buffer[DATA_BUFSIZE * 2];
  27.         int                                                bufLen;
  28. } OVERLAPPEDEX, *LPOVERLAPPEDEX;

  29. typedef struct tag_TSENDBUFF
  30. {
  31.         int                                nLen;
  32.         char                        szData[DATA_BUFSIZE];
  33. }_TSENDBUFF, *_LPTSENDBUFF;

  34. class CGateInfo
  35. {
  36. public:
  37.         SOCKET                                        m_sock;

  38.         BOOL                                        m_fDoSending;
  39.         CWHQueue                                m_xSendBuffQ;
  40.         OVERLAPPEDEX                        OverlappedEx[2];
  41.         
  42. public:
  43.         CGateInfo();

  44.         void        SendGateCheck();
  45.         void        OpenNewUser(char *pszPacket);
  46.         void        CloseOpenedUser(WORD wUserListIndex, WORD wUserGateIndex, int nSocket);

  47.         void        xSend();
  48.         int                Send(_LPTSENDBUFF lpSendBuff);
  49.         int                Recv();
  50.         bool        HasCompletionPacket();
  51.         char*        ExtractPacket( char *pPacket );
  52. };

  53. class CUserInfo        : public CIntLock, CStaticArray< CUserInfo >::IArrayData
  54. {
  55. public:
  56.         bool                                                        m_bEmpty;

  57.         int                                                                m_sock;

  58.         char                                                        m_szUserID[12];
  59.         char                                                        m_szCharName[14];

  60.         int                                                                m_nUserGateIndex;
  61.         int                                                                m_nUserServerIndex;
  62.         
  63.         int                                                                m_nCertification;
  64.         int                                                                m_nClientVersion;

  65.         CPlayerObject*                                        m_pxPlayerObject;
  66.         CGateInfo*                                                m_pGateInfo;

  67.         BYTE                                                        m_btCurrentMode;

  68.         _THUMANRCD                                                m_THumanRcd;
  69.         int                                                                m_nNumOfMagics;
  70.         int                                                                m_nNumOfGenItems;
  71.         int                                                                m_nNumOfItems;

  72.         CWHList<_LPTGENERALITEMRCD>                m_lpTGenItemRcd;
  73.         CWHList<_LPTHUMANMAGICRCD>                m_lpTMagicRcd;
  74.         CWHList<_LPTUSERITEMRCD>                m_lpTItemRcd;

  75.         _LPTHUMANMAGICRCD                                m_lpTMagicErgumSkill;
  76.         BOOL                                                        m_fLongHitSkill;
  77.         _LPTHUMANMAGICRCD                                m_lpTMagicBanwolSkill;
  78.         BOOL                                                        m_fWideHitSkill;
  79.         _LPTHUMANMAGICRCD                                m_lpTMagicFireSwordSkill;
  80.         BOOL                                                        m_fFireHitSkill;
  81.         DWORD                                                        m_dwLatestFireHitTime;
  82.         
  83.         _LPTHUMANMAGICRCD                                m_lpTMagicOneSwordSkill;
  84.         _LPTHUMANMAGICRCD                                m_lpTMagicIlkwangSkill;

  85.         _LPTHUMANMAGICRCD                                m_lpTMagicPowerHitSkill;
  86.         BOOL                                                        m_fPowerHitSkill;

  87.         BYTE                                                        m_btAttackSkillCount;
  88.         BYTE                                                        m_btAttackSkillPointCount;

  89.         _LPTHORSERCD                                        m_lpTHorseRcd;
复制代码

public:
    CUserInfo();
    bool IsEmpty();

    void                            CloseAccount(char *pszName, int nCertification);
    void                            SaveHumanToDB(char *pszUserAddr);
    void                            CloseUserHuman();

    void                            DoClientCertification(char *pszPacket);

    void                            Operate();

    _LPTUSERITEMRCD                    GetItem(char *pszMakeIndex);
    __inline _LPTUSERITEMRCD        GetUseItem(int nPosition) { return GetItem(m_THumanRcd.szTakeItem[nPosition]); }
   
    _LPTGENERALITEMRCD                GetUseGenItem(char *pszMakeItemID);
    void                            RemoveGenItem(_LPTGENERALITEMRCD lptGenItemRcd);

    int                                EncodeMyMagicToServer(char *pszEncodeMsg, int nBuffSize, int& nPos);
    int                                EncodeMyMagic(char *pszEncodeMsg, int nBuffSize, int& nPos);
    int                                EncodeGenItem(char *pszEncodeMsg, int nBuffSize, int& nPos);

    int                                GetWeaponFeature();
    int                                GetDressFeature();

    void                            AddNewItem(char *pszItemName);
   
    void                            MakeGenItem(_LPTGENERALITEMRCD lpItemRcd);

    BOOL                            IsMyMagic(int nIndex);

    void                            AllowLongHitSkill(BOOL fFlag);
    void                            AllowWideHitSkill(BOOL fFlag);
    BOOL                            AllowFireHitSkill();

    int                                CalcBagWeight();
    int                                CalcWearWeightEx(int nIndex);

    int                                GetGenItemStdIdx(char *pszMakeIndex);
    int                                GetGenItemVal1(char *pszMakeIndex);
    int                                GetGenItemVal2(char *pszMakeIndex);

    BOOL                            UserDropItem(int nItemIndex, char *pszMakeIndex);
    BOOL                            UserDropGenItem(int nItemIndex, char *pszMakeIndex);

    BOOL                            IncGold(int nGold);
    BOOL                            DecGold(int nGold);

    _LPTHUMANMAGICRCD                GetMagicRcdByID(int nID);
    _LPTHUMANMAGICRCD                GetMagicRcdByKey(int nKey);

    _LPTGENERALITEMRCD                CanUseBujuk();

    void                            SetGenItemVal1(int nVal);

    void                            ProcessUserMessage(char *pszPacket);

    __inline    _LPTUSERITEMRCD        GetWeapon() { return GetUseItem(U_WEAPON); }
    __inline    _LPTUSERITEMRCD        SetWeapon(char *pszMakeIndex) { memmove(m_THumanRcd.szTakeItem[U_WEAPON], pszMakeIndex, _MAKEITEMINDEX); }
    __inline    void                SetEmptyWeapon() { ZeroMemory(m_THumanRcd.szTakeItem[U_WEAPON], _MAKEITEMINDEX); m_THumanRcd.szTakeItem[U_WEAPON][0] = '0'; }
    __inline    void                SetEmptyDress() { ZeroMemory(m_THumanRcd.szTakeItem[U_DRESS], _MAKEITEMINDEX); m_THumanRcd.szTakeItem[U_DRESS][0] = '0'; }
    __inline    void                SetEmptyUseItem(int i) { ZeroMemory(m_THumanRcd.szTakeItem, _MAKEITEMINDEX); m_THumanRcd.szTakeItem[0] = '0'; }
    __inline    _LPTUSERITEMRCD        GetDress() { return GetUseItem(U_DRESS); }
    __inline    _LPTUSERITEMRCD        GetAccessory(int nPosition) { return GetUseItem(nPosition); }
    __inline    _LPTGENERALITEMRCD    GetRightHand() { return GetUseGenItem(m_THumanRcd.szTakeItem[U_RIGHTHAND]); }

    __inline    BYTE                GetGenderFeature() { return m_THumanRcd.btGender; }
    __inline    char                GetHairFeature() { return m_THumanRcd.szHair; }
    __inline    BYTE                GetHorseFeatureEx() { if (m_lpTHorseRcd) return m_lpTHorseRcd->btHorseType; else return 0; }
    __inline    int                    GetJob() { return m_THumanRcd.btJob; }
    __inline    void                SetJob(int nJob) { if (nJob >= 0 && nJob < 3) m_THumanRcd.btJob = (BYTE)nJob; }

    __inline    int                    GetAttackMode() { return (int)m_THumanRcd.btAttackMode; }

    __inline    int                    GetMagicID(char *pszMakeIndex) { return GetGenItemVal2(pszMakeIndex); }

    __inline    BOOL                IsEnoughBag() { if (m_lpTItemRcd.GetCount() + m_lpTGenItemRcd.GetCount() >= USERITEMMAX) return FALSE; return TRUE; }

    __inline    DWORD                GetGold() { return m_THumanRcd.dwGold; }

};

void InsertLogMsg(UINT nID);
void InsertLogMsg(LPTSTR lpszMsg);
void InsertLogPacket(char *pszPacket);
void InsertLogMsgParam(UINT nID, void *pParam, BYTE btFlags);


分享链接:
http://pan.zxdll.cn:188/#s/9iwz03Zg
访问密码:
游客,如果您要查看本帖隐藏内容请回复






上一篇:Mono跨平台传奇3手游源代码 传奇三手游源码
下一篇:C++传奇3EI3.0客户端 Mir3Ei ClientEx客户端源代码
回复

使用道具 举报

1

主题

546

回帖

29

积分

旋风流星刀

积分
29
发表于 2023-8-23 06:56:53 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

12

回帖

25

积分

旋风流星刀

积分
25
发表于 2024-6-23 17:18:12 | 显示全部楼层
积分任务
回复

使用道具 举报

© 2001-2024 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2024-12-3 19:48 , Processed in 0.287309 second(s), 56 queries 手机版|美林GM论坛 ( 蜀ICP备2020030293号-2 )|网站地图

禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.如遇版权问题,请及时QQ联系

快速回复 返回顶部 返回列表