C星尋路插件,支持易語言 按鍵精靈 TC DELPHI vb C# 等語言
【例子】C星尋路參數詳解
1 判斷加載地圖是否成功,返回1;否則-1
CheckA
2 釋放所有對象(加載到內存中的地圖對象,尋路對象等)
Free;
3 屏幕坐標轉換ScreenXY 返回屏幕坐標
右下角坐標0,0那么模式1 ; 左下角0,0那么模式2 ;左上角0,0那么模式3 ;右上角0,0那么模式4
ScreenXY(屏幕分辨率x,屏幕分辨率y,人物游戲當前坐標x,人物游戲當前坐標y,
FindPath算出來的坐標x,FindPath算出來的坐標y,比例尺默認40,模式)
例如:ScreenXY(800,600,125,365,135,375,40,3)
4 對于有偏移的坐標,可以自定義中心位置ScreenXY2 返回屏幕坐標
右下角坐標0,0那么模式1 ; 左下角0,0那么模式2 ;左上角0,0那么模式3 ;右上角0,0那么模式4
ScreenXY2(屏幕中心x,屏幕中心y,人物游戲當前坐標x,人物游戲當前坐標y,
FindPath算出來的坐標x,FindPath算出來的坐標y,比例尺默認40,模式)
5 加載地圖
A(全路徑地圖bmp,月卡卡號)
6 尋路,計算出下一步坐標,返回坐標 例如:202,31
FindPath(當前坐標X,當前坐標Y,目的地坐標X,目的地坐標Y,離墻距離,離自己幾個像素)
7 判斷地圖名 返回1;否則-1
CheckMap(加載的地圖名)
【例子】易語言調用例子
1、把DL_Cstar2.dll注冊到易語言中,點擊工具>類型庫或者ocx>注冊類庫>下一步>保存。
2、點擊工具>支持庫配置>全選>確定
.版本 2
.支持庫 DL_Cstar2
.程序集 窗口程序集1
.子程序 _按鈕1_被單擊
.局部變量 DD, CStar, , , <!!!>
.局部變量 Ddd, 文本型
DD.A (“1.bmp”, “TestRsMt1Pmpz282018030520330045435”)
Ddd = DD.FindPath (166, 44, 44, 210, 0, 2)
DD.Free ()
信息框 (“計算值:” + Ddd, 0, )
【例子】TC尋路簡單例子
功能 初始化C星()
變量 C星是否注冊
//這里添加你要執行的代碼
C星是否注冊=注冊插件("rc:DL_Cstar2.dll",真)
調試輸出("C星是否注冊成功:"&C星是否注冊)
cx=插件("DL2.CStar") //創建C星對象
結束
功能 尋路(StopX=102,StopY=137) //傳參:終點x,終點y坐標
變量 xl,xlxyb,xlxybcc //xl:尋路返回值,xlxyb:尋路下一步,xlxybcc:尋路下一步傳參
變量 StarX,StarY,角色屏幕X,角色屏幕Y,xlxybX,xlxybY,zhpmX,zhpmY
變量 屏幕范圍文本,屏幕范圍數組,屏幕范圍左,屏幕范圍上,屏幕范圍右,屏幕范圍下
變量 StrX,StrY,怪物_ret,物品_ret
變量 怪物顏色,怪物名字
變量 物品名字="天魔|圣戰|裁決|屠龍|開天|雷霆"
變量 物品顏色="f7b629-000000|ceb6f7-000000"
變量 C星卡號="xxxxxxxxxxxxxxxxxxxxxx"
怪物名字="xxx|xxx|xxx|xxxx|xxx|xxx|xxxx|xxx"
怪物顏色="00ff00-000000|00ffff-000000"
屏幕范圍文本="470,100,770,400"
//尋路限制鼠標移動屏幕范圍開始
字符串分割(屏幕范圍文本,",",屏幕范圍數組)//先將設定的范圍值分割出來賦值給限制的屏幕范圍:上下左右
屏幕范圍左=屏幕范圍數組[0] //屏幕限制范圍x1坐標
屏幕范圍上=屏幕范圍數組[1] //屏幕限制范圍y1坐標
屏幕范圍右=屏幕范圍數組[2] //屏幕限制范圍x2坐標
屏幕范圍下=屏幕范圍數組[3] //屏幕限制范圍y2坐標
//尋路限制鼠標移動屏幕范圍結束
//坐標變量
角色屏幕X=627 //640 //角色正中在1280x720的游戲窗口
角色屏幕Y=270 //360
// StopX=102 //終點坐標X
// StopY=137 //終點坐標Y
//尋路下一步默認參數3,也就是距離當前游戲坐標需要點擊下一步坐標步數
xlxybcc=3
如果(識別當前地圖()=="xxxx一層")
調試輸出("當前地圖:"&識別當前地圖())
cx.A(獲取資源路徑("rc:xxxx一層.bmp"),C星卡號)
否則如果(識別當前地圖()=="xxxx二層")
調試輸出("當前地圖:"&識別當前地圖())
cx.A(獲取資源路徑("rc:xxxx二層.bmp"),C星卡號)
否則
調試輸出("當前地圖:"&"沒有識別到地圖信息")
結束
//cx.CheckA()
循環(真)
//----------取當前地圖坐標開始----------
// StarX=轉整型(dm.Ocr(91,703,115,717,"00ff00-000000",1))//取當前地圖實際坐標X
// StarY=轉整型(dm.Ocr(110,703,141,717,"00ff00-000000",1))//取當前地圖實際坐標Y
dm.UseDict(1)
StarX=轉整型(dm.Ocr(115,703,139,718,"00ff00-000000",1))//取當前地圖實際坐標X
StarY=轉整型(dm.Ocr(54,703,163,718,"00ff00-000000",1))//取當前地圖實際坐標Y
調試輸出("當前坐標:"&StarX&":"&StarY)//調試輸出當前XY坐標
//----------取當前地圖坐標結束----------
//---------- C星尋路開始 ----------
xl=cx.FindPath(StarX,StarY,StopX,StopY,2,3)//動態取出下一步要到達的游戲坐標
調試輸出("尋路返回:"&xl)
字符串分割(xl,",",xlxyb)
xlxybX=xlxyb[0]
xlxybY=xlxyb[1] //尋路下一步需要到達的XY坐標
調試輸出("尋路下一步游戲坐標分割:"&xlxybX&":"&xlxybY)
// zhpmX=角色屏幕X+(xlxybX-StarX)*40 //轉換為屏幕點擊尋路下一步的坐標
// zhpmY=角色屏幕Y+(xlxybY-StarY)*40 //zhpmX:轉換后的屏幕坐標X,zhpmY:轉換后的屏幕坐標Y
變量 臨時屏幕,臨時屏幕XY
臨時屏幕=cx.ScreenXY2(角色屏幕X,角色屏幕Y,StarX,StarY,xlxybX,xlxybY,40,xlxybcc)
字符串分割(臨時屏幕,",",臨時屏幕XY)
zhpmX=臨時屏幕XY[0]
zhpmY=臨時屏幕XY[1]
調試輸出("當前需要點擊下一步屏幕的坐標為:"&zhpmX&":"&zhpmY)
dm.MoveTo(zhpmX,zhpmY)
等待(500)
dm.RightDown()
等待(1000)
dm.RightUp()
如果(zhpmX<=屏幕范圍左||zhpmY<=屏幕范圍上||zhpmX>=屏幕范圍右||zhpmY>=屏幕范圍下) //如果鼠標移動范圍越界
調試輸出("鼠標移動范圍越界,等待一下")
超級鼠標右鍵彈起()
dm.MoveTo(角色屏幕X,角色屏幕Y)
等待(500)
否則
調試輸出("尋路狀態正常進行中...")
結束
如果(xl==-1) //判斷是否因為特殊原因沒有識別到游戲坐標
調試輸出("尋路出現問題,可能是沒有識別到當前游戲坐標")
跳出
結束
如果(cx.CheckError(xl,15)==1)
調試輸出("尋路出現重復坐標,可能直角無法通過或被怪物等阻擋")
否則
結束
dm.UseDict(0)
怪物_ret=dm.FindStr(171,41,1024,549,怪物名字,怪物顏色,1,StrX,StrY)
物品_ret=dm.FindStr(401,71,851,521,物品名字,物品顏色,1.0,StrX,StrY)
如果(怪物_ret!=-1||物品_ret!=-1)
調試輸出 ("[尋路]:屏幕范圍有怪和裝備")
跳出
否則
調試輸出 ("[尋路]:屏幕范圍沒有怪/裝備")
結束
dm.UseDict(1)
如果(數學絕對值((StarX-StopX))<=5&&數學絕對值((StarY-StopY))<=5)
調試輸出("已經到達設置的終點范圍")
超級鼠標右鍵彈起()
跳出
結束
結束
隨機尋路()
結束
C#調用大龍尋路插件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport(@"C:\DL_Cstar.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int A(IntPtr par1, IntPtr ASX);
[DllImport(@"C:\DL_Cstar.dll", CharSet = CharSet.None, CallingConvention = CallingConvention.StdCall)]
public static extern int FindPath(int StarX, int StarY, int StopX, int StopY, int Space, int ClickXY, out int IntX, out int IntY);
private void button1_Click(object sender, EventArgs e)
{
//string ss = Marshal.PtrToStringAnsi(temp); string=Marshal.PtrToStringAnsi(IntPtr) ;
IntPtr Mmap = Marshal.StringToHGlobalAnsi(@"C:\1.bmp"); IntPtr Msn = Marshal.StringToHGlobalAnsi("月卡卡號");
try
{
int CanDo = A(Mmap, Msn); MessageBox.Show(CanDo.ToString());
if (CanDo == 1)
{
MessageBox.Show("加載地圖成功!");
int SSS = FindPath(154, 39, 35, 210, 0, 1, out int IntX, out int IntY);
MessageBox.Show(IntX.ToString() + "," + IntY.ToString());
}
}
catch (Exception)
{
throw;
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}

浙公網安備 33010602011771號