socketref,再见!高德

https://github.com/adoggie

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用链接

留言簿(54)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

跟逆向的协同是制定标准交互接口

gtr_api.h
  1 /*
  2 gtr_api.h
  3 ========================
  4 定义与游戏逻辑交互的接口
  5 2009.12.12 zhangbin  created
  6     1. 修改二进制图片的传输方式,通过context完成
  7     2. 定义输出接口 init()/cleanup(),其他函数通过内部登记来实现
  8 2009.12.13 zhangbin
  9     1.添加日志回调
 10 
 11 2010.3.25 zhangbin 
 12     1.添加 auth() 密保认证回调;captureImage()抓屏幕回调
 13     3.添加 Gt_CallContext.id字段
 14 2010.3.29 zhangbin
 15 1.修正部分声明的错误
 16 
 17 */
 18 #ifndef _GT_API_H
 19 #define _GT_API_H
 20 #include <windows.h>
 21 
 22 
 23 enum Gt_ReturnValueT{    
 24     GT_FALSE=0,                                        //
 25     GT_TRUE,                                            //
 26     GT_UNABLECONNECT,                            //无法连接
 27     GT_PASSWORDERROR,                            //账号密码错误
 28     GT_PLAYERINLINE,                            //玩家在线
 29     GT_VERSIONERROR,                            //版本错误
 30     GT_UNABLEGETINFO,                            //无法获得
 31     GT_VERIFYCODEERROR,                        //验证码错误
 32     GT_ROLELOCK,                                    //角色被封
 33     GT_MBERROR,                                        //密保卡错误
 34     GT_ROLENEEDCHANGENAME,                //角色需要修改名字(DNF合服)
 35     GT_ROLEKICK,                                    //角色被踢下线
 36     //GT_NOROLE,                                        //角色名不存在
 37     //GT_NOBUYERROLE,                                //买家不存在
 38     GT_SECONDPWDERROR,                        //二级密码或者仓库密码错误
 39     GT_UNABLEMOVETO,                            //无法到达
 40     GT_UNABLETALKTO,                            //无法对话
 41     GT_TIMEOUT,                                        //超时
 42     GT_PlAYERNOFEE,                                //卖家游戏点卡不足
 43     GT_CONNECTBREAK,                            //连接中断
 44     GT_NOTEXISTED,                                //访问对象不存在 2010.3.27
 45     GT_SKIP_PASS,                                    //此调用无需判断,直接忽略
 46     GT_OK = GT_TRUE,              //成功    
 47     GT_UNKNOWN=0xffff
 48 };
 49 
 50 typedef int        GT_BOOL;
 51 #define POUT
 52 #define PIN
 53 #define PINOUT
 54 
 55 typedef Gt_ReturnValueT GT_RESULT;
 56 typedef int Gt_NPCID;
 57 
 58 enum Gt_ImageTypeT{
 59     GT_IMAGEJPEG =1,
 60     GT_IMAGEPNG,
 61     GT_IMAGEBMP
 62 };
 63 
 64 enum Gt_GameItemT{
 65     GT_ITEM_1,        //金币
 66     GT_ITEM_2,        //金砖
 67     GT_ITEM_MAX
 68 };
 69 
 70 struct Gt_ApiList;
 71 
 72 typedef struct Gt_CallContext{
 73     int            timeout    ;            // msec 调用超时
 74     void*        cookie;                // 外部使用
 75     void*        cookie2;            // 游戏内部使用,可用于保持状态
 76     char*        xdata;                // 数据交换地址,数据必须立刻复制
 77     int            xsize;                // 数据交换大小
 78     int            xtype;                // 交换数据类型
 79     Gt_ApiList*        apilist;    //函数入口表 游戏dll内部维持接口表,在初始化时赋值给此变量
 80     void    (*log)(Gt_CallContext* ctx,char* msg);                        //游戏逻辑运行时日志输出
 81     void  (*log2)(Gt_CallContext* ctx,char* data,int size); //游戏逻辑运行时日志输出    
 82     char* (*auth_coords)(Gt_CallContext* ctx,char* coords); //坐标认证
 83     char* (*auth_image)(Gt_CallContext* ctx,Gt_ImageTypeT imagetype,char* imagedata,int size,int width,int height);
 84     void     (*capture_image)(Gt_CallContext* ctx,char* excName,char* imagedata,int size,int width,int height);
 85     int        id;        //游戏逻辑使用
 86 }CALLCTX;
 87 
 88 
 89 struct Gt_ApiList{    
 90     GT_RESULT (*SelectServer)(char *,CALLCTX*);                        //选大区    订单中大区信息    OK    无法连接                    SelectServer        char*
 91     GT_RESULT (*SelectArea)(char*,CALLCTX*);                            //选小区    订单中小区信息    OK    无法连接                    SelectArea        char*
 92     // null 自动选择线路
 93     GT_RESULT (*SelectLineByName)(char* line,CALLCTX*);        //         选线路    Ping值较低    OK    无法连接                    SelectLine        void
 94     // -1 自动选择线路
 95     GT_RESULT (*SelectLineByIndex)(int line,CALLCTX*);        //         选线路    Ping值较低    OK    无法连接                    SelectLine        void    
 96     GT_RESULT (*Login)(char* usr,char* passwd,CALLCTX*);    //         账号密码输入    订单中账号密码信息    OK    账号密码错误    玩家在线        版本错误        Login        char* account, char* pwd
 97     GT_RESULT (*IsExistDynMB)(CALLCTX*);                                    //         查询动态密保        有    无                    IsExistDynMB        void    
 98     GT_RESULT (*IsRightClass)(int,CALLCTX* );                            //         查询角色阵营    订单中卖家阵营    是    否                    IsRightClass        int    
 99     GT_RESULT (*IsExistBackHomeSkill)(CALLCTX*);                    //         查询回城技能        是    否                    IsExistBackHomeSkill        void
100     GT_RESULT (*UseBackHomeSkill)(CALLCTX*);                            //         使用回城技能        OK    失败                    UseBackHomeSkill        void
101     GT_RESULT (*IsExistBackHomeItem)(CALLCTX*);                    //         查询是否存在回城物品        是    否                    
102     GT_RESULT (*UseBackHomeItem)(CALLCTX*);                            //         使用回城物品        OK    失败                        
103     GT_RESULT (*QueryRoleLevel)(char* ,POUT int *,CALLCTX*); //         查询卖家角色等级        OK    失败                    QuerySellerLevel        char*, int*
104     GT_RESULT (*SelectRoleByName)(char*,CALLCTX*);                //         角色选择    订单中的角色名信息    OK    角色名不存在    角色需要修改名字(DNF合服)                SelectRoleByName        char*
105     GT_RESULT (*SelectRoleByIndex)(int,CALLCTX*);                    //         序号选择    订单中的角色序号信息    OK    无法登陆该序号角色                    SelectRoleByIndex        int
106     GT_RESULT (*IsExistRoleByName)(char* ,CALLCTX*);            //         查询买家角色名    订单中买家角色名信息    有    无                    IsExistBuyerByName        char*
107     GT_RESULT (*AddRoleToFriend)(char*,CALLCTX*);                //         加买家为好友    订单中买家角色名信息    OK    无该玩家                    AddBuyerToFriend        char*        
108     GT_RESULT (*QuerySafeTime)(POUT int* ,CALLCTX*);                        //         获取安全时间            安全时间                    QuerySafeTime        int*        
109     GT_RESULT (*IsExistNPC)(Gt_NPCID ,CALLCTX*);                                //         判定指定NPC是否在附近    NPCID    是    否                    IsExistNPC        int    
110     GT_RESULT (*OpenWarehouse)(char* passwd,CALLCTX*);                        //         打开仓库    订单中的仓库密码信息    OK    密码错误                    OpenWarehouse        char*
111     GT_RESULT (*OpenMailBox)(char* passwd,CALLCTX*);                        //邮箱  二级密码
112     GT_RESULT (*OpenBank)(char* passwd,CALLCTX*);                            //银行 二级密码
113     GT_RESULT (*OpenExchange)(char* passwd,CALLCTX*);                     //交易所 二级密码    
114     GT_RESULT (*OpenGrocer)(char* passwd,CALLCTX*);                     //杂货商 二级密码
115     
116     GT_RESULT (*MoveToByNpcID)(Gt_NPCID,CALLCTX*);                            //         跑地图    NPCID    OK    无法到达                    MoveToByNpcID        int NPCID
117     GT_RESULT (*Talk)(Gt_NPCID,CALLCTX*);                                            //         与邮箱NPC对话    NPCID    OK    无法对话                    Talk        int NPCID
118     //查询物品数量 ,  item - 具体的游戏可交易的对象(金币、元宝、金砖。。。)
119     GT_RESULT (*QueryItemsInBag)(Gt_GameItemT item,POUT INT64*,CALLCTX*);                //背包
120     GT_RESULT (*QueryItemsInWarehouse)(Gt_GameItemT item,POUT INT64*,CALLCTX*);    //仓库
121     GT_RESULT (*QueryItemsInBank)(Gt_GameItemT item,POUT INT64*,CALLCTX*);                // 银行
122     GT_RESULT (*QueryItemsInExchange)(Gt_GameItemT item,POUT INT64*,CALLCTX*);        //交易所
123     //邮件特例处理
124     GT_RESULT (*IsEnoughItemsInMailbox)(Gt_GameItemT item,PINOUT INT64*,CALLCTX*);        // 邮箱金币是否满足差额
125     //获得指定物品数量 
126     GT_RESULT (*WithdrawItemsInWarehouse)(Gt_GameItemT item,PINOUT INT64*,CALLCTX*);    //         获取仓库金币信息            返回仓库中金币数额    无法获取                QueryGoldsInWarehouse        int64*
127     GT_RESULT (*WithdrawItemsInBank)(Gt_GameItemT item,PINOUT INT64*,CALLCTX*);                //         获取仓库金币信息            返回仓库中金币数额    无法获取                QueryGoldsInWarehouse        int64*
128     GT_RESULT (*WithdrawItemsInExchange)(Gt_GameItemT item,PINOUT INT64*,CALLCTX*);        //         获取仓库金币信息            返回仓库中金币数额    无法获取                QueryGoldsInWarehouse        int64*
129     GT_RESULT (*WithdrawItemsInMailbox)(Gt_GameItemT item,PINOUT  INT64*,CALLCTX*);        //         邮箱金币是否满足差额
130     //发送邮件
131     GT_RESULT (*SendMail)(char* reciever,char* title,char* content,INT64,CALLCTX*);    
132     //兑换给Npc
133     GT_RESULT (*SellItem)(int item,int itemNum,CALLCTX*);                            //         兑换银票,金砖    金币数额        返回兑换后金币数额    无法获取                SellItem        int64
134     
135     
136     GT_RESULT (*Begin)(CALLCTX*);                //开单
137     GT_RESULT (*End)(CALLCTX*);                    //结单
138 
139     //GT_RESULT (*QueryBuyerLevel)(char*,POUT int * ,CALLCTX*);                    //         查询买家等级    订单中买家角色名信息        买家角色等级                    QueryBuyerLevel        char*    
140     //GT_RESULT (*IsExistSecondPwd)(CALLCTX*);                            //         查询二级码        是    否                    IsExistSecondPwd        void
141     //GT_RESULT (*InputSecondPwd)(char* ,CALLCTX*);                //         输入二级码    订单中的二级码信息    OK    密码错误                    InputeSecondPwd        char*
142     //GT_RESULT    (*IsExistVerifyCode)(CALLCTX*);                            //         是否有验证码        是    否                    IsExistVerifyCode        void
143     //GT_RESULT (*GetVerifyCode)(CALLCTX*);                                    //         获取验证码            验证码图片    无法获得                GetVerifyCode        char** buf, int*                                                                                                                //        通过ctx::xdata,xsize进行数据交换
144     //GT_RESULT (*InputeVerifyCode)(char* ,CALLCTX*);                //         验证码输入    答题器中的验证码信息    OK    验证码错误                    InputeVerifyCode        char*    
145     //GT_RESULT    (*IsExistMB)(CALLCTX*);                                            //         是否有密保卡        是    否                    IsExistMB        void
146     //GT_RESULT (*GetMBCord)(CALLCTX*);                                            //         获取密保坐标            OK    无法获得                GetMBCord        char** buf, int*                                                                                                                //        通过ctx::xdata,xsize进行数据交换 
147     //GT_RESULT (*InputMBInfo)(char* ,CALLCTX*);                        //         密保卡输入    答题器中的密保卡信息    OK    密保卡错误                    InputeMBInfo        char*
148 
149 };
150 
151 //////////////////////////////////////////////////////////////////////////
152 //game-dll必须导出以下函数即可
153 GT_BOOL Init(char * gamedir,CALLCTX* ctx);
154 void        CleanUp(CALLCTX* ctx);
155 
156 
157 
158 #endif


posted on 2010-09-30 00:40 放屁阿狗 阅读(1461) 评论(0)  编辑 收藏 引用 所属分类: C++/Boost/STL/TemplateOpenSource开源工程

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理