- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
//===============星星(叹号)显示相关======================
#define W2I_MESSAGEHINT_BASEADDR 0x9c4364 //星星基址,查找里也可不用特征码,用星星计数地址减值即可
#define W2I_MESSAGEHINT_COUNTER (*(DWORD*)(W2I_MESSAGEHINT_BASEADDR+0x20)) //星星计数,大于表示有星星。具体数字表示
有星星多少条内容,
#define W2I_MESSAGEHINT_ADDR (*(DWORD*)(W2I_MESSAGEHINT_BASEADDR+0x14)) //星星列表基址//每项星星内容占x1c字节
#define W2I_MESSAGEHINT_TEXTEXPLAIN(eachhint) (char*)(*(DWORD*)(W2I_MESSAGEHINT_ADDR+0x1c*iMessageHintNo+0)) //星星内容文字说明如:Ga
me_InviteGroup表邀请组队;Game_InviteTrade交易, Game_InviteFriend加好友;Game_InviteDuel决斗;
#define W2I_MESSAGEHINT_DISPLAY_UNICODE(eachhint) (WCHAR*)(*(DWORD*)(W2I_MESSAGEHINT_ADDR+0x1c*iMessageHintNo+4)) //星星显示内容uni
code:如“谁谁谁申请与你交易”
#define W2I_MESSAGEHINT_MASTERID(eachhint) (*(DWORD*)(W2I_MESSAGEHINT_ADDR+0x1c*iMessageHintNo+0x10)) //星星发起人ID如:入队邀请人
#define W2I_MESSAGEHINT_GROUPID(eachhint) (*(DWORD*)(W2I_MESSAGEHINT_ADDR+0x1c*iMessageHintNo+0x14)) //星星其它内容:如队伍ID
如上:并不是一有星星就是组队提示
附上一个自动组队发包VC程序:
//组队相关
if(structpSettingMsg->m_bGroup_AcceptInvite)//是否打开自动接受组队开关
{for(int iMessageHintNo=0;iMessageHintNo<W2I_MESSAGEHINT_COUNTER;iMessageHintNo++)//循环所有星星项
{CString strTextExplain=W2I_MESSAGEHINT_TEXTEXPLAIN(eachhint);
if((strTextExplain=="Game_InviteGroup")//是组队邀请
&&(dwLastAcceptGroupInviteTime+2*60*1000<::GetTickCount())//如果距上次接受组队的时间已经过去分钟,等待星星过去
)
{CallAboutGroup(W2I_MESSAGEHINT_MASTERID(eachhint),W2I_MESSAGEHINT_GROUPID(eachhint),1);//AfxMessageBox("自动组队");对接受组队进行发
包
dwLastAcceptGroupInviteTime=::GetTickCount();
}//结束是组队邀请if
}//结束循环所有星星项
}//结束自动组队
再附上组队发包程序:
bool bShareCallAboutGroup=false;
void CallAboutGroup(DWORD dwPlayerID,//人物对象ID
DWORD dwGroupID,//队伍ID
int iCallType//要做什么::接受组队;:邀请组队;:离队;:踢出队伍;:转移队长;:协助攻击
)
{if(bShareCallAboutGroup){::Sleep(50);}
bShareCallAboutGroup=true;
byte byteBuf[0xA]={0};
int iSendPackLength=0;
switch(iCallType)
{case 1://接受组队
byteBuf[0]=0x1C;
byteBuf[1]=0x00;
memcpy(&byteBuf[2],&dwPlayerID,sizeof(DWORD));
memcpy(&byteBuf[6],&dwGroupID,sizeof(DWORD));
iSendPackLength=0xa;
break;
case 2://邀请组队
byteBuf[0]=0x1B;
byteBuf[1]=0x00;
memcpy(&byteBuf[2],&dwPlayerID,sizeof(DWORD));
iSendPackLength=0x6;
break;
case 3://离队;
byteBuf[0]=0x1E;
byteBuf[1]=0x00;
iSendPackLength=0x2;
break;
case 4://4:踢出队伍;
byteBuf[0]=0x1F;
byteBuf[1]=0x00;
memcpy(&byteBuf[2],&dwPlayerID,sizeof(DWORD));
iSendPackLength=0x6;
break;
case 5://转移队长
byteBuf[0]=0x48;
byteBuf[1]=0x00;
memcpy(&byteBuf[2],&dwPlayerID,sizeof(DWORD));
iSendPackLength=0x6;
break;
case 6://协助攻击
byteBuf[0]=0x32;
byteBuf[1]=0x00;
memcpy(&byteBuf[2],&dwPlayerID,sizeof(DWORD));
iSendPackLength=0x6;
break;
}
CallSendPack(byteBuf,iSendPackLength);
bShareCallAboutGroup=false;
return;} |
|