暗黑3 外挂开发资料
一:巡航系統(tǒng)
理想情況:
1.自動(dòng)清理人物所在地圖的所有區(qū)域
2.根據(jù)腳本設(shè)定的指令自動(dòng)進(jìn)入/不進(jìn)入地圖內(nèi)的地下城(洞子)
3.自動(dòng)跳過過場動(dòng)畫
二:戰(zhàn)斗系統(tǒng)
1.人物技能使用
(每一個(gè)技能都可以用下面任意一種方式進(jìn)行設(shè)定,如能多條方式能共同存在就更好)
1)根據(jù)判定角色身上有無此狀態(tài)來使用??? (如某buff 技能,當(dāng)無此buff時(shí)使用)
2)根據(jù)血量百分比使用技能????????????? (血量低于多少百分比使用某技能)
3)根據(jù)CD使用技能????????????????????? (當(dāng)某技能不在冷確時(shí)間時(shí)使用)
4)根據(jù)時(shí)間設(shè)置使用技能??????????????? (每過多少秒使用某技能)
5)根據(jù)怪物數(shù)量或者精英怪使用技能????? (怪物達(dá)到多少或者是精英怪時(shí)才使用某技能)
2.怪物技能躲避
對怪物施放的技能進(jìn)行自動(dòng)跑位躲避,比如 冰 火? 秘 毒 等元素技能。
三:目標(biāo)使用及易碎物摧毀等
比如:開寶箱,開圣壇,翻尸體,摧毀路障,摧毀其他障礙物等
注:
1.這些最好能放在腳本里面,根據(jù)使用者喜好和必要性添加或刪除是否使用。因?yàn)橛行┑胤叫枰ㄟ^摧毀路障才能通過,有些地方則是浪費(fèi)時(shí)間。
2.如果目標(biāo)和角色不在同一水平線上,則不執(zhí)行,否則可能出現(xiàn)發(fā)呆,隔空打物等情況。
四:存?zhèn)}修裝拾取等規(guī)則
1.金幣拾取? 首先有開啟/關(guān)閉拾取金幣功能 其次可設(shè)置根據(jù)金幣數(shù)量多少以上才拾取
2.裝備拾取? 根據(jù)裝備物品等級拾取
3.裝備存?zhèn)}? 首先根據(jù)背包狀態(tài)判定是否回城存裝。其次根據(jù)腳本指令是否鑒定裝備。最后,如已鑒定裝
??????????? 備,根據(jù)屬性決定是存進(jìn)倉庫還是賣給NPC(此項(xiàng)較復(fù)雜,需討論)。
4.回城修理? 根據(jù)人物身上裝備的耐久度來決定是否回城修裝。
5.優(yōu)先拾取物品/優(yōu)先打怪 功能。(理想狀態(tài)下,玩家可根據(jù)自己喜好設(shè)定,是優(yōu)先拾取物品還是優(yōu)先打怪,如果優(yōu)先拾取物品,就是地上有符合拾取的東西先撿再打怪,但是如果裝備不好,特別是如果距離較遠(yuǎn)就容易死掉。如果優(yōu)先打怪,就有可能因?yàn)樽饭侄h(yuǎn)離了之前掉落的物品,而錯(cuò)失掉落的物品)
五:任務(wù)
自動(dòng)接受黃色或藍(lán)色感嘆號的任務(wù),自動(dòng)點(diǎn)擊游戲下方出現(xiàn)的與NPC的對話。(可選擇開啟或關(guān)閉)
六:隨機(jī)時(shí)間設(shè)定? (可有可無,也許有助于防封)
完成某一項(xiàng)具體動(dòng)作后隨機(jī)等待多少時(shí)間再執(zhí)行下一動(dòng)作。
比如隨機(jī)時(shí)間是1-10秒,在完成修裝,存?zhèn)},回城后都可以用上此隨機(jī)時(shí)間。
具體例子:
背包滿后需要回城則執(zhí)行以下一系列動(dòng)作:
回城-----隨機(jī)等待4秒------移動(dòng)到倉庫-----鑒定物品------存?zhèn)}------隨機(jī)等待8秒------移動(dòng)到-----修裝NPC處------賣物品修裝備-----隨機(jī)等待7秒------返回到傳送門
七:登錄系統(tǒng)
1.自動(dòng)登錄
2.掉線自動(dòng)重連 (最好可以自行設(shè)置次數(shù),比如設(shè)置重連3次,如不成功則放棄,避免游戲維護(hù)時(shí)無限登錄游戲)
3.根據(jù)設(shè)置自動(dòng)切換客戶端美 歐 亞 三服
八:其他功能
秒退 超時(shí)秒退等功能。
?
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <vector>
#include?? <afxwin.h>
#include <set>
#include "math.h"
#include <algorithm>
typedef unsigned char byte;
using namespace std;
struct roleInfo
{
?int acdBase;//人物對象地址
?int actBase;//
?int acdId;//人物ID惟一組隊(duì)用的是此ID
?//int roleObjID;//對象ID.別人看到的周圍對象ID
?//WCHAR roleNameame[40];//人物名
?string roleName;
?wchar_t cName[80];//中文名
?string mapName;
?char typeName[40];
?int typeId;//對象類別 例如道具 建筑物 玩家 NPC等
?int typeIndex;//對象存在的位置?例如地面 背包 倉庫 商店 等
?int roleHP;//人物當(dāng)前血量
?int roleMaxHP;//最大血量
?int roleMP;//當(dāng)前念力
?int roleMaxMP;//最大念力
?int roleExp;//當(dāng)前經(jīng)驗(yàn)
?int roleMaxExp;//最大經(jīng)驗(yàn)
?int roleLevel;//等級
?char roleSex;//0為男1為女
?char isOnline;//1為在線 0為離線
?float x;//坐標(biāo)
?float y;
?float z;
?int jl;//距離
?int mapId1;//地圖ID
?int mapId2;
?char roleMapName[80];//角色所在地圖
?int cashMoney;//點(diǎn)券
?int goldMoney;//金幣
?int addNum;
?//int xMoney;//星幣
?int roleGridCount;//角色背包格子總數(shù)
?int petGridCount;//已有寵物格子總數(shù)
?int actId;
?int fagId;
?int isExists;
?int color;//裝備顏色
?/*
?裝備顏色
?0 灰
?1-2 白裝
?3-5 藍(lán)?魔法裝備
?6-8 黃色 稀有裝備
?9 橙色 傳奇裝備
?*/
?string colorDesc;//顏色描述
?int index1;//第幾行
?int index2;//第幾列
?int goodsNum;//數(shù)量
?int last;//持久
?int maxLast;//持久上限
?roleInfo()
?{
??isExists=1;
??acdBase=-1;
??acdId=-1;
??//roleNameame[0]='\0';
??roleHP=0;
??roleMaxHP=0;
??jl=999;
?}
};
struct kv
{
?int k;
?int aid;
?int v;
};
struct tz
{
?char PY[10];
?int DATA[3];
?bool isJmp;//是否類似跳轉(zhuǎn)
?bool isZZ;//是否只要地址
?char dName[40];
?tz()
?{
??isZZ=false;
??isJmp=false;
?}
};
struct goodsInfo
{
?int goodsId;//物品ID
?int goodsIndex;//物品下標(biāo)
?int goodsType;//物品類別
?int goodsNum;//物品數(shù)量
?int goodsBase;//物品基址
?int goodsLevel;//物品等級
?int minLevel;//至少多少級才能使用
?int maxLevel;//最多多少級能使用
?int isBind;//是否綁定
?int isFightingUse;//是否戰(zhàn)斗可用
?int last;//當(dāng)前持久
?int maxLast;//最大持久
?char isTimeOver;//是否過期
?char equipIndex;//可裝備位置
?char sexType;//要求性別
?char zzType;//要求的種族
?string goodsDesc;//物品描述
?string goodsName;//物品名字
};
struct petInfo
{
?int petBase;//寵物對象地址
?int petID;//寵物ID
?string petName;//自己修改的寵物名字
?int petHP;//寵物血
?int petMaxHP;//寵物最大血量
?int petMP;//藍(lán)
?int petMaxMP;//最大藍(lán)量
?int petExp;//經(jīng)驗(yàn)
?int petMaxExp;//升級所需經(jīng)驗(yàn)
?int zc;//忠誠度
?int sm;//壽命
?int level;//等級
?int rLevel;//可攜帶等級
?int addNum;//潛力
?int isFight;//是否出戰(zhàn)狀態(tài)
?int petIndex;
?petInfo()
?{
??petBase=0;
?}
};
struct taskInfo
{
?int taskBase;//任務(wù)基址
?int taskId1;//任務(wù)ID1
?int taskId2;//任務(wù)ID2
?int taskDifficulty;//難度
?int index1;//第幾章
?int index2;//第index1章第index2個(gè)任務(wù)
?int index3;//第index1章第index2個(gè)任務(wù)index3個(gè)子任務(wù)
?int tpara1;
?int tpara2;
?int tpara3;
?int tpara4;
?//int taskPara;
?//string taskName;
?//string taskType;//任務(wù)類別
?//string taskDesc;
?//string acceptNpcName;//接任務(wù)NPC名字
?///int npcId;//接或交任務(wù)NPCID
?//int cityId;//城市ID
?//string acceptCity;//接任務(wù)城市
?//POINT cpoint;//接任務(wù)坐標(biāo)
?//int taskState;//2任務(wù)正在進(jìn)行.3任務(wù)完成. 5表示任務(wù)失敗
};
struct teamInfo
{
?int actId;
?int fagId;
?int acdBase;
?string roleName;
};
struct talkInfo
{
?string talkTemp;
?int talkIndex;
?int talkId;
};
struct keyData
{
?int hwnd;
?int mtype;
?int keycode;
?int keystate;
};
struct skillInfo
{
?int skillBase;
?int skillId;
// ?string skillName;
// ?int rMoney;//升級所需金錢
// ?int rExp;//升級所需經(jīng)驗(yàn)
// ?int isCanUse;//是否可用。這里只檢測心法是否達(dá)到技能需要的指定等級。其它所需血量藍(lán)量要求沒有檢測。你自己檢測。
// ?int skillLevel;
// ?int isZd;//是否主動(dòng)技能
?//int rhp;
?//int rmp;
?//string skillXG;//技能效果
};
struct buffInfo
{
?string buffName;
?int buffIndex;
?int buffTime;//剩余時(shí)間
};
struct activityInfo
{
?string activityName;//活動(dòng)名
///?string npcName;//活動(dòng)發(fā)布人
//?string huoYueDu;//活躍度說明
//?string aTime;//時(shí)間段
?int completeNum;//完成次數(shù)
?int maxNum;//最大次數(shù)
//?int minLevel;//活動(dòng)所需最小等級
//?int maxLevel;//活動(dòng)所需最大等級
?int activityId;
?int huoYueDu;
?activityInfo()
?{
??completeNum=0;
??maxNum=0;
?}
};
struct liBaoInfo
{
?string liBaoName;//禮包名字
?int isCanGet;//是否可以領(lǐng)取
?int liBaoId;//ID
};
struct winInfo
{
?int winBase;
?int isV;//是否可見
?int isE;//是否可用
?string winName;
?string winText;
};
// float mvFloat;
// int mvInt;
struct searchPara1
{
?int s1;
?int s2;
?float x;
?float y;
?float z;
?int z1;
?int z2;
?float z3;
?int actBase;
};
struct callPara
{
?int acdBase;
?int acdType;
?int acdId;
?float x;
?float y;
?float z;
?int mapId1;
?int useSkill;
};
struct taskTP
{
?int diff;//難度
?int taskId1;
?int taskId2;
};
struct store
{
?int selfAcdBase;
?int goodsAcdBase;
?int storeOrFetch;
};
struct buySp
{
?int acdBase;
?int buyOrSell;
?int acdId;
};
?
//
//
//主要信息?---------------
?
void initData(HANDLE hd=(HANDLE)-1,BOOL show=false);//初始化數(shù)據(jù),這個(gè)函數(shù)必須在注入DLL后馬上調(diào)用.
//獲取周圍對象信息包括商店物品周圍玩家NPC怪物背包物品倉庫物品等等
//各種對象是什么參數(shù)roleInfo的typeName
//背包物品的typeIndex==0?typeId==5
//地面物品的typeIndex==-1?typeId==5
//倉庫物品的typeIndex==0xf?typeId==5
//商店物品的typeIndex==0x11?typeId==5
//已經(jīng)裝備物品的(0x1<=typeIndex<=0xD)并且typeId==5
vector<roleInfo> getAroundList(HANDLE hd=(HANDLE)-1,int self=0);
//獲取窗體的子窗體 parentBase為winInfo結(jié)構(gòu)的winBase如果獲取最頂層窗體的子窗體則parentBase為0
vector<winInfo> getWinList(int parentBase=0);
//參數(shù)為控件名字,返回值為0表示不可見大于0表示可見,返回值為winInfo的winBase
int IsWindowV(CString winName);
//獲取鼠標(biāo)當(dāng)前懸停指向的窗體名字。這個(gè)函數(shù)非常重要。。你可以啟動(dòng)一個(gè)線程不停的調(diào)用 此函數(shù)來觀察鼠標(biāo)指向的窗口名字
//獲取到窗口名字后你可以記下窗口名把他當(dāng)作參數(shù)傳入 點(diǎn)擊控件示例clickKJ(IsWindowV(控件名字))
CString funcShowHover();
//獲取傳送平臺的可選傳送點(diǎn) 需要先打開傳送平臺
vector<winInfo> getCanSelectCuanSong();
//打開對象
//int csPara[60];
//打開傳送門,傳送平臺,儲物箱,各種箱子,拾取物品,上述這些動(dòng)作的callType為0x7545 打開NPC為0x7546,上述動(dòng)作只需考慮前兩個(gè)參數(shù)
//如果是使用技能 則useSkill傳1? callType為技能ID,如果對敵人使用則acdId傳敵人actId,如果對自己使用則傳-1
//如果是指向性技能則acdId傳-1和你想攻擊的坐標(biāo)的x,y,z和地圖id,非指向性技能(可以選擇目標(biāo)攻擊的技能)則不需要傳x,y,z和mapId1,只需要傳敵人的acdID
void __stdcall callCSPT(int acdId,int callType=0x7545,int useSkill=0,float x=0,float y=0,float z=0,int mapId1=0x772e0000);
//點(diǎn)擊控件 回城也可以使用此函數(shù) kjBase可以用IsWindowV獲得。窗體名字一般不會變的。
void __stdcall clickKJ(int kjBase);
//尋路 mapId1為當(dāng)前角色信息的mapId1
void __stdcall searchXY(int actBase,float searchX,float searchY,float searchZ,int mapId1);//尋路
vector<taskInfo> getCanSelectTaskList(int diff);//在角色選擇畫面獲取可選任務(wù)信息 需要先打開可選任務(wù)框再調(diào)用此函數(shù) diff為難度 0,1,2,3 0代表普通
taskInfo getCurTaskInfo();//獲取當(dāng)前任務(wù)信息
//參數(shù)1為難度 選擇任務(wù)
void selectTask(int diff,int taskId1,int taskId2);
vector<skillInfo> getSkillInfo();//獲取技能信息為1,2,3,4,鼠標(biāo)左,鼠標(biāo)右,上的技能信息
//存取物品 storeOrFetch=0表示存 1表示取
void __stdcall storeFetch(int selfAcdBase,int goodsBase,int storeOrFetch=0);
//買賣物品?0表示買,1表示賣
void __stdcall buySell(int goodsAcdBase,int buyOrSell=0);
//修理所有裝備
void __stdcall repairAll(int selfAcdId);
roleInfo getRoleInfo();?//獲取角色信息
//設(shè)置登陸的賬號密碼 在登陸界面調(diào)用
void __stdcall setUserPwd(char *userName,char *password);
?
csdn 無法傳文件,lib,dll 文件傳不上來,不過游戲內(nèi)部數(shù)據(jù)早變了,也用不了,發(fā)來大家吐槽下。
總結(jié)
以上是生活随笔為你收集整理的暗黑3 外挂开发资料的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 抓包分析命令
- 下一篇: java大转盘抽奖概率算法_大转盘抽奖概