TC官方合作论坛

标题: 人物方向移动的问题 [打印本页]

作者: jsnj_wjq82    时间: 2013-10-30 08:25
标题: 人物方向移动的问题
人物移动都是跟着鼠标指针方向移动,如何让窗口中的人物利用大漠插件往左或者往右移动?


作者: 星.月    时间: 2013-10-30 10:09
昨天问的,也是我回复的,最佳回复那个是我小号,没登录所以没能及时看见你的回复
人物移动
http://bbs.tyuyan.com/forum.php? ... 9&fromuid=78447
(出处: TC官方论坛_TC游戏脚本制作开发工具论坛 )

用大漠的话,需要绑定成后台,教程的话,我推荐一个梦飞飞的,觉得讲的不错,论坛上搜一个大漠后台也有很多的教程
【梦飞飞第二季TC4.0】第五节【DM】后台图色模式判定
http://bbs.tyuyan.com/forum.php? ... 7&fromuid=78447
(出处: TC官方论坛_TC游戏脚本制作开发工具论坛 )


用内存操作的话,我也不会,网上能找到一些用内存来寻路的教程,太复杂,没学。加油
作者: jsnj_wjq82    时间: 2013-10-30 10:15
星.月 发表于 2013-10-30 10:09
昨天问的,也是我回复的,最佳回复那个是我小号,没登录所以没能及时看见你的回复
人物移动
http://bbs.tyu ...

呵呵,梦飞飞的我也看过了,他那个人物移动是用键盘实现的,关键我这个游戏,不支持键盘移动
作者: jsnj_wjq82    时间: 2013-10-30 10:24
星.月 发表于 2013-10-30 10:09
昨天问的,也是我回复的,最佳回复那个是我小号,没登录所以没能及时看见你的回复
人物移动
http://bbs.tyu ...

我在论坛里也看到有人用当前坐标加偏移,利用大漠后台鼠标来移动,你觉得这个方法如何?
作者: 星.月    时间: 2013-10-30 12:14
jsnj_wjq82 发表于 2013-10-30 10:24
我在论坛里也看到有人用当前坐标加偏移,利用大漠后台鼠标来移动,你觉得这个方法如何? ...

当然可以,这是常用的方法
作者: qw362534335    时间: 2013-10-30 12:20
如果支持 大地图移动的话
那我觉得用大地图移动是最简单的
打开大地图 计算出坐标 鼠标移动过去 点击然后就可以一直移动到那了呗
不知道你这游戏支持 大地图不
作者: jsnj_wjq82    时间: 2013-10-30 15:36
星.月 发表于 2013-10-30 12:14
当然可以,这是常用的方法

我做了个上下左右移动,都没有问题,我在程序里只是加了个循环在里面,但是现在有个问题,我无法暂停,不知道有什么办法?
作者: 星.月    时间: 2013-10-30 15:41
jsnj_wjq82 发表于 2013-10-30 15:36
我做了个上下左右移动,都没有问题,我在程序里只是加了个循环在里面,但是现在有个问题,我无法暂停,不 ...

循环里加个判断,是不是到了你要的位置,如果到了,就跳出循环

循环
如果条件成立
则 跳出循环
如果结束
循环结束

跳出的命令就是在循环中间加,TC帮助文档里有例子
作者: jsnj_wjq82    时间: 2013-10-30 15:44
星.月 发表于 2013-10-30 12:14
当然可以,这是常用的方法

这个是人物往上移动的一段代码,但是我发现这个就是一直往上移动,无法暂停,不知道有什么办法
代码如下:

循环(真)
        
        dm_ret=dm.FindPic(369,188,426,206,"魔王神道1.bmp","000000",0.9,0,intX,intY)
        如果(dm_ret>=0)
            变量 x坐标,y坐标
            窗口句柄=窗口.找到窗口("legend of mir2")
            
            窗口.屏幕转窗口(窗口句柄,x坐标,y坐标,x坐标,y坐标)
            dm.MoveTo(400,100)     //后台鼠标移动到人物上面坐标的位置        
            dm.RightDown()            //后台鼠标一直按住右键,也就是人物跑到
        如果结束
    循环结束
作者: jsnj_wjq82    时间: 2013-10-30 15:47
星.月 发表于 2013-10-30 12:14
当然可以,这是常用的方法

程序本身我也加了个线程开启,后台循环找图一直往上,不知道如何让人物暂停或者停止?
作者: jsnj_wjq82    时间: 2013-10-30 15:51
星.月 发表于 2013-10-30 15:41
循环里加个判断,是不是到了你要的位置,如果到了,就跳出循环

循环

你帮我把发的那段代码改一下,我试试看,我之前在循环里面加个判断,人物会跟随实际的鼠标指针跑
作者: 星.月    时间: 2013-10-30 16:00
jsnj_wjq82 发表于 2013-10-30 15:51
你帮我把发的那段代码改一下,我试试看,我之前在循环里面加个判断,人物会跟随实际的鼠标指针跑 ...

循环(真)
    dm_ret=dm.FindPic(369,188,426,206,"魔王神道1.bmp","000000",0.9,0,intX,intY)
    如果(dm_ret>=0)
        变量 x坐标,y坐标
        窗口句柄=窗口.找到窗口("legend of mir2")
        窗口.屏幕转窗口(窗口句柄,x坐标,y坐标,x坐标,y坐标)
        dm.MoveTo(400,100)     //后台鼠标移动到人物上面坐标的位置        
        dm.RightDown()            //后台鼠标一直按住右键,也就是人物跑到
        辅助.等待(100)
        dm_ret=dm.FindPic(369,188,426,206,"到达终点.bmp","000000",0.9,0,intX,intY)//这里自己再截一张到达终点时的图,作判断是不是到了
        如果(intX>=0)//如果到了终点,则跳出当前循环,进行其他的操作
            跳出
        如果结束
    如果结束
循环结束
作者: jsnj_wjq82    时间: 2013-10-30 16:11
星.月 发表于 2013-10-30 16:00
循环(真)
    dm_ret=dm.FindPic(369,188,426,206,"魔王神道1.bmp","000000",0.9,0,intX,intY)
    如果( ...

窗口.屏幕转窗口(窗口句柄,x坐标,y坐标,x坐标,y坐标),这段代码用的对吗?
作者: 星.月    时间: 2013-10-30 21:21
jsnj_wjq82 发表于 2013-10-30 16:11
窗口.屏幕转窗口(窗口句柄,x坐标,y坐标,x坐标,y坐标),这段代码用的对吗? ...

都用了后台了,感觉没用上
作者: jsnj_wjq82    时间: 2013-11-2 16:47
jsnj_wjq82 发表于 2013-10-30 15:47
程序本身我也加了个线程开启,后台循环找图一直往上,不知道如何让人物暂停或者停止? ...

又有个问题像你请教一下了,我做好了上下左右几个方向的移动,人物坐标(也就是实际地图坐标),现在我想读取txt文本中的坐标,让人物自己选择方向移动,这个怎么做?
例如txt文档坐标分别为:
100  200
200  300
300  500
700  800
我实际人物坐标是200 600,这个应该怎么做?用选择语句还是用什么?
作者: jsnj_wjq82    时间: 2013-11-2 16:49
jsnj_wjq82 发表于 2013-11-2 16:47
又有个问题像你请教一下了,我做好了上下左右几个方向的移动,人物坐标(也就是实际地图坐标),现在我想读 ...

单纯的不用鼠标,用大漠是可以能上下左右移动找方向了,代码测试也可以运行,现在就是想根据txt文档中坐标,让人物自己选择是哪个方向移动?
作者: jsnj_wjq82    时间: 2013-11-2 16:55
星.月 发表于 2013-10-30 21:21
都用了后台了,感觉没用上

这个是根据txt中坐标,可以上移动的代码:
循环(真)
            图像序号=图像.找图(0,0,1440,900,"rc:坐标2.bmp",#102030,1.0,0,图片X坐标,图片Y坐标)
            //辅助.消息框(图像序号)
            如果(图像序号>=0)
                //如果(dm_ret1>=0)
               
                ////辅助.消息框("找到图片")
                //调试输出("坐标小于读取坐标")
                调试输出(图像序号)
               
                ////dm.RightUp()
               
               
                dm.LeftUp()
                跳出
               
            否则
               
                如果(获得x坐标==x坐标&&获得y坐标>y坐标)
                    移动.上移动()  
                    //dm.MoveToEx(intX,intY,10,10)
                否则
                    
                    
                    跳出
                    //辅助.消息框("坐标小")
                    
                    //dm.MoveTo(intX,intY)
                    //dm.LeftClick()
                    
                    
                    //dm_ret=dm.FindPic(369,188,426,206,"苍月岛位置.bmp","000000",0.9,0,intX,intY)//这里自己再截一张到达终点时的图,作判断是不是到了
                    //如果(dm_ret>=0)//如果到了终点,则跳出当前循环,进行其他的操作
                    //跳出
                如果结束
               
               
               
            如果结束
        循环结束
作者: jsnj_wjq82    时间: 2013-11-2 16:56
jsnj_wjq82 发表于 2013-11-2 16:49
单纯的不用鼠标,用大漠是可以能上下左右移动找方向了,代码测试也可以运行,现在就是想根据txt文档中坐 ...

循环(真)
            图像序号=图像.找图(0,0,1440,900,"rc:坐标2.bmp",#102030,1.0,0,图片X坐标,图片Y坐标)
            
            如果(图像序号>=0)
           
               
                调试输出(图像序号)
               
              
               
                dm.LeftUp()
                跳出
               
            否则
               
                如果(获得x坐标==x坐标&&获得y坐标>y坐标)
                    移动.上移动()  
                  
                否则
                    
                    
                    跳出
                  
                    
                    
                    
            
                如果结束
               
               
               
            如果结束
        循环结束
作者: jsnj_wjq82    时间: 2013-11-2 16:56
星.月 发表于 2013-10-30 21:21
都用了后台了,感觉没用上

但是,如果下移动,左右移动,怎么选择呢?
作者: 星.月    时间: 2013-11-2 17:14
jsnj_wjq82 发表于 2013-11-2 16:56
但是,如果下移动,左右移动,怎么选择呢?

寻路的方法,有文本文件中写好路径,然后让人物按照你的路径来走。比如你起点是100,100,终点是600,200,文件中就可以这样写

100,100
105,103
110,106
……
中间有障碍物的,注意绕路

代码中的思路是这样:读取文件中的坐标,分出x和y,获取游戏中人物的当前坐标(用找字),对比人物坐标和文件中的坐标,人物坐标和文件坐标有差别,则点击进行人物移动,两个坐标相同,则说明到了,判断下面是不是还有坐标,还有就再点,再判断,直到到达你的终点
作者: jsnj_wjq82    时间: 2013-11-5 08:27
星.月 发表于 2013-11-2 17:14
寻路的方法,有文本文件中写好路径,然后让人物按照你的路径来走。比如你起点是100,100,终点是600,200 ...

我看到你在别的帖子上有图列,能不能把你的想法跟思路以及代码发给我看一下
作者: jsnj_wjq82    时间: 2013-11-5 08:29
jsnj_wjq82 发表于 2013-11-5 08:27
我看到你在别的帖子上有图列,能不能把你的想法跟思路以及代码发给我看一下 ...

你的方法我感觉还是不错的
作者: jsnj_wjq82    时间: 2013-11-5 22:11
星.月 发表于 2013-11-2 17:14
寻路的方法,有文本文件中写好路径,然后让人物按照你的路径来走。比如你起点是100,100,终点是600,200 ...

你看到回复了吗?
作者: jsnj_wjq82    时间: 2013-11-5 22:12
星.月 发表于 2013-11-2 17:14
寻路的方法,有文本文件中写好路径,然后让人物按照你的路径来走。比如你起点是100,100,终点是600,200 ...

等待你回复
作者: 星.月    时间: 2013-11-5 22:32
jsnj_wjq82 发表于 2013-11-5 22:12
等待你回复

请看2楼
作者: jsnj_wjq82    时间: 2013-11-5 22:38
星.月 发表于 2013-11-5 22:32
请看2楼

朋友,我知道你指的后台找字,我想学习你的代码
作者: jsnj_wjq82    时间: 2013-11-6 23:47
星.月 发表于 2013-11-2 17:14
寻路的方法,有文本文件中写好路径,然后让人物按照你的路径来走。比如你起点是100,100,终点是600,200 ...

100,100
105,103
110,106
……
中间有障碍物的,注意绕路,对比人物坐标和文件中的坐标,人物坐标和文件坐标有差别,则点击进行人物移动,这段代码怎么写?教教我
作者: 星.月    时间: 2013-11-7 10:42
jsnj_wjq82 发表于 2013-11-6 23:47
100,100
105,103
110,106

[attach]12559[/attach]
图中只是示例,实际的取两个坐标间隔最好不要超过10

作者: jsnj_wjq82    时间: 2013-11-8 09:09
星.月 发表于 2013-11-7 10:42
图中只是示例,实际的取两个坐标间隔最好不要超过10

现在有个问题,如何准确的从100,100移动到150,200?用大漠插件方向如何控制?
作者: 星.月    时间: 2013-11-8 12:06
jsnj_wjq82 发表于 2013-11-8 09:09
现在有个问题,如何准确的从100,100移动到150,200?用大漠插件方向如何控制? ...

请看第十一楼的图

不能自动路  怎么来跑地图?
http://bbs.tyuyan.com/forum.php? ... 5&fromuid=78447
(出处: TC论坛)

作者: jsnj_wjq82    时间: 2013-11-8 14:16
星.月 发表于 2013-11-8 12:06
请看第十一楼的图

不能自动路  怎么来跑地图?

你那张图说的确实很对,判断x0是否等于x1,不相等则移动人物,我的问题就在这里,如果当前人物地图坐标100,100如何在实际地图坐标,移动到150,200这个坐标上?关键在于这个移动,你是怎么写的?
作者: jsnj_wjq82    时间: 2013-11-9 23:57
jsnj_wjq82 发表于 2013-11-8 14:16
你那张图说的确实很对,判断x0是否等于x1,不相等则移动人物,我的问题就在这里,如果当前人物地图坐标10 ...

高手,我想请教个问题,(100,100)、(105,200)、(200,600) 这三个坐标,第一个坐标找到后,如何找第二个和第三个?

作者: jsnj_wjq82    时间: 2013-11-11 15:21
星.月 发表于 2013-11-7 10:42
图中只是示例,实际的取两个坐标间隔最好不要超过10

兄弟,请教问题txt文档坐标
100,100
150,200
200,260
如果第一个坐标100,100找到后,等待1秒怎么自动找txt文件中第二个坐标,第二个找到后等待1秒自动找第三个,依此类推
作者: jsnj_wjq82    时间: 2013-11-11 15:23
星.月 发表于 2013-11-2 17:14
寻路的方法,有文本文件中写好路径,然后让人物按照你的路径来走。比如你起点是100,100,终点是600,200 ...

也就是说,如何判断txt文档下面是否还有坐标
作者: 星.月    时间: 2013-11-11 16:42
jsnj_wjq82 发表于 2013-11-11 15:21
兄弟,请教问题txt文档坐标
100,100
150,200

用循环一次性读出txt里所有的值,然后分割
作者: jsnj_wjq82    时间: 2013-11-12 08:35
星.月 发表于 2013-11-11 16:42
用循环一次性读出txt里所有的值,然后分割

读出所有的值,也就是用数组了?然后在分割每个坐标?
作者: 星.月    时间: 2013-11-12 09:43
jsnj_wjq82 发表于 2013-11-12 08:35
读出所有的值,也就是用数组了?然后在分割每个坐标?

对,就是这样
作者: jsnj_wjq82    时间: 2013-11-12 13:51
星.月 发表于 2013-11-12 09:43
对,就是这样

兄弟,我数组分割出来的怎么是最后一行的数字?怎么不读第一行,等第一行读完,在读第二行?代码如下:
返回串,txt
    文件句柄=文件.打开("c:\\8.txt")
   
   
    循环(真)
        
        txt =文件.读一行(文件句柄)
        如果(txt=="")
            返回 0
            
        如果结束
        调试输出(txt)
        
        是否成功=字符串.分割(txt,",",返回串)
        c1,i=0
        数组空间.大小(返回串,c1)//获取数组维数
        x坐标=返回串[0]
        y坐标=返回串[1]
        如果(是否成功)   //如果分割成功,依次输出分割后字串
            //循环(i < c1)
            调试输出(x坐标)
            调试输出(y坐标)
            //i=i + 1
            //循环结束
        如果结束
        辅助.等待(1000)
    循环结束
作者: jsnj_wjq82    时间: 2013-11-12 15:53
星.月 发表于 2013-11-11 16:42
用循环一次性读出txt里所有的值,然后分割

能不能把代码传给我看看
作者: jsnj_wjq82    时间: 2013-11-12 15:54
星.月 发表于 2013-11-11 16:42
用循环一次性读出txt里所有的值,然后分割

思路我明白,但就是不知道怎么写?
作者: jsnj_wjq82    时间: 2013-11-12 15:57
星.月 发表于 2013-11-11 16:42
用循环一次性读出txt里所有的值,然后分割

只要告诉我
100,100
150,200
100,100,分出来的x=100,y=100,被执行后
我怎么才能继续执行150,200,x=150,y=200





欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1