追逐自己的梦想----------辅助制作第十七课:实现技能列表的遍历及判断技能是否可用
2015-03-15 10:46
405 查看
typedef struct TSkillObj{ DWORD ndBaseObj;//返回对象基址 DWORD ndType; //分类 1B技能书分类 1C 才是使用技能分类 DWORD ndIndexForSkill; //技能列表里面的下表分类 char* szpName; DWORD ndIndexForAll; //+0c 所有对象ID BOOL IsUseable;//+1f6 }_TSkillObj; #define Skill_ListSize 32 typedef struct TSkillList { TSkillObj t_list[Skill_ListSize]; TSkillList* GetData(); void DbgPrintMsg(); }_TSkillList;
TSkillList* TSkillList::GetData(){
DWORD *ndpSkillList = nullptr;
int j = 0;
memset(this, 0, sizeof(TSkillList));
__try{
ndpSkillList = (DWORD*)(*(DWORD*)Base_SkillAddr + 0x410);
for (int i = 0; i < Skill_ListSize; i++){
if (ndpSkillList[i] == NULL){
continue;
}
if (*(DWORD*)(ndpSkillList[i] + 0x08) == 0x1b){
continue;
}
t_list[j].ndBaseObj = ndpSkillList[i];
t_list[j].ndIndexForSkill = i;
t_list[j].ndType = *(DWORD*)(ndpSkillList[i] + 0x08);
t_list[j].ndIndexForAll = *(DWORD*)(ndpSkillList[i] + 0x0c);
t_list[j].szpName = (char*)(ndpSkillList[i] + 0x5c);
t_list[j].IsUseable = *(WORD*)(ndpSkillList[i] + 0x1f6);
j++;
}
}
__except (1){
DbgPrintf_Mine("TSkillList* TSkillList::GetData()出现异常");
}
return this;
}
void TSkillList::DbgPrintMsg(){
GetData();
for (int i = 0; i < Skill_ListSize; i++){
if (t_list[i].ndType == NULL){
continue;
}
DbgPrintf_Mine("%s %d %2X %4X 是否可用(%d)\r\n", t_list[i].szpName,
t_list[i].ndIndexForSkill, t_list[i].ndType,
t_list[i].ndIndexForAll,
t_list[i].IsUseable);
}
}
以上代码就完成了对技能的遍历,以后加上拖拽技能到快捷栏中,就可以使用技能了
相关文章推荐
- 追逐自己的梦想----------辅助制作第十六课:分析技能列表
- 追逐自己的梦想----------辅助制作第三十三课:向仓库存入N个物品对象汇编实现代码
- 追逐自己的梦想----------辅助制作第三十八课:物品出售的分析和实现
- 追逐自己的梦想----------辅助制作第十九课:快捷栏使用物品或者技能
- 追逐自己的梦想----------辅助制作第三十七课:物品购买实现
- 追逐自己的梦想----------辅助制作第二十三课:挂机选项卡的实现
- 追逐自己的梦想----------辅助制作第二十课:完善自动技能打怪
- 追逐自己的梦想----------辅助制作第十五课:实现动态更新基址
- 追逐自己的梦想----------辅助制作第二十二课:分析修炼条件的判断
- 追逐自己的梦想----------辅助制作第二十一课:分析技能自动修炼call
- 追逐自己的梦想----------辅助制作第三十四课:向仓库存入N个物品对象函数封装实现
- 追逐自己的梦想----------辅助制作第九课:分析怪物列表及怪物属性的封装等
- 追逐自己的梦想----------辅助制作第十八课:拖拽技能到快捷栏
- 追逐自己的梦想----------辅助制作第三十五课:从仓库取出N个物品分析与实现
- 追逐自己的梦想----------辅助制作第十四课:给出自动打怪和技能打怪的源码
- 追逐自己的梦想----------辅助制作第二十六课:存仓库call实现
- 追逐自己的梦想----------辅助制作第二十七课:身上装备更换的分析与实现
- 追逐自己的梦想----------辅助制作第二十九课:分析打开NPC后功能打开
- 追逐自己的梦想----------辅助制作第二十五课:存仓库call分析
- 追逐自己的梦想----------辅助制作第十二课:选怪功能封装