TC官方合作论坛

标题: 扫描背包 [打印本页]

作者: 312120292    时间: 2015-6-3 15:03
标题: 扫描背包
功能 等待放入物品()
    变量 等待时间,jiaoyibeibaox,jiaoyibeibaoy,dma_ret,sdX,sdY,jyX,jyY,我的金币,背包总金钱
    等待时间=编辑框获取文本("等待时间","自动收货")
    如果(复选框获取状态("等待开启"))
        变量 当前的时间=当前时间(),开关=假
        循环(时间间隔("s",当前的时间,当前时间())<等待时间)
            dm.FindPic(0,47,200,403,"交易背包.bmp","000000",0.9,0,jiaoyibeibaox,jiaoyibeibaoy)
            如果(jiaoyibeibaox=="10")
                如果(jiaoyibeibaoy=="196")
                    扫描第一格()
                    计算价钱一()
                    扫描第二格()
                    计算价钱二()
                    扫描第三格()
                    计算价钱三()
                    扫描第四格()
                    计算价钱四()
                    扫描第五格()
                    计算价钱五()
                    扫描第六格()
                    计算价钱六()
                    扫描第七格()
                    计算价钱七()
                    扫描第八格()
                    计算价钱八()
                    扫描第九格()
                    计算价钱九()
                    全部合计=第一格总价+第二格总价+第三格总价+第四格总价+第五格总价+第六格总价+第七格总价+第八格总价+第九格总价
                    变量 交易前金币数 = dm.Ocr(363,392,479,415,"ffffff-151515",1.0)
                    调试输出("分割前我的交易前金币为:"&交易前金币数)
                    变量 找万=字符串查找(交易前金币数,"万")
                    如果(找万>-1)
                        变量 割
                        变量 结果 = 字符串分割(交易前金币数,"万",割)
                        遍历(变量 i = 0; i < 结果; i++)
                            调试输出(割[i])
                        结束
                        变量 头=割[0]
                        变量 尾=割[1]
                        交易前总数=(头*10000)+尾
                        调试输出("分割后我的交易前金币为:"&交易前总数)
                        如果(全部合计>交易前总数)
                            调试输出("余额不足,取消交易")
                            超时关闭一()
                        否则
                            调试输出("金额充足,可以交易")
                            等待(100)
                            dm.MoveTo(232,111-16)
                            等待(10)
                            dm.LeftClick()
                            等待(10)
                            dm.SendString(句柄0,全部合计)
                            调试输出(全部合计)
                            dm.FindPic(8,304,386,455,"锁定.bmp","000000",0.9,0,sdX,sdY)
                            如果(sdX>1)
                                dm.MoveTo(sdX+5,sdY+5)
                                dm.LeftClick()
                            结束
                            等待(800+随机数(200,500))
                            dm.FindPic(8,304,386,455,"交易.bmp","000000",0.9,0,jyX,jyY)
                            如果(jyX>1)
                                dm.MoveTo(jyX+5,jyY+5)
                                等待(100)
                                dm.LeftClick()
                            结束
                            等待确认时间=编辑框获取文本("等待确认")
                            等待(等待确认时间*1000)
                        结束
                    否则
                        调试输出("余额不足")
                        超时关闭一()
                        对话框("余额不足!!!!!!!!----目前所剩余额为→"&交易前金币数,"余额不足",0,真)
                    结束
                    跳出
                结束
                开关=真
                返回 真
            结束
            等待(100)
        结束
        如果(!开关)
            超时关闭一()
            返回 假
        结束
    结束
结束
//////////上面这段代码扫描后得到总金额是正确的,因为是按格扫描的,没有加入判断空的就不扫描,所以扫描速度太慢,我就给修改了,结果出问题了//////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
功能 等待放入物品()
    变量 等待时间,jiaoyibeibaox,jiaoyibeibaoy,dma_ret,sdX,sdY,jyX,jyY,我的金币,背包总金钱
    等待时间=编辑框获取文本("等待时间","自动收货")
    如果(复选框获取状态("等待开启"))
        变量 当前的时间=当前时间(),开关=假
        循环(时间间隔("s",当前的时间,当前时间())<等待时间)
            dm.FindPic(0,47,200,403,"交易背包.bmp","000000",0.9,0,jiaoyibeibaox,jiaoyibeibaoy)
            如果(jiaoyibeibaox=="10")
                如果(jiaoyibeibaoy=="196")
                  //我在这里加了一个判断第一格是否为空由于判断后得到的总价有问题,我就给删除了,现在用:比例语句来表示判断代码
                   如果(第一格为不等于空)
                    扫描第一格()
                    计算价钱一()
                    结束

                   如果(第二格不等于空)
                    扫描第二格()
                    计算价钱二()
                    结束

                   如果(第三格不等于空)
                    扫描第三格()
                    计算价钱三()
                    结束

                    如果(第四格不等于空)
                    扫描第四格()
                    计算价钱四()
                    结束

                    如果(第五格不等于空)
                    扫描第五格()
                    计算价钱五()
                    结束

                    如果(第六格不等于空)
                    扫描第六格()
                    计算价钱六()
                    结束

                    如果(第七格不等于空)
                    扫描第七格()
                    计算价钱七()
                    结束

                    如果(第八格不等于空)
                    扫描第八格()
                    计算价钱八()
                    结束

                    如果(第九格不等空)
                    扫描第九格()
                    计算价钱九()
                    结束
//////////////////////////////////////经过这样的修改后,空的格子不扫描了,有物品的也没有遗漏一格,得到数量单价,以及物品名,都是对的,,,,就是得到的总价却是会把上一次交易的总价也计算进去,,,,,,这时候我就凌乱的,,,,,,不知道该怎么改了
                    全部合计=第一格总价+第二格总价+第三格总价+第四格总价+第五格总价+第六格总价+第七格总价+第八格总价+第九格总价
                    变量 交易前金币数 = dm.Ocr(363,392,479,415,"ffffff-151515",1.0)
                    调试输出("分割前我的交易前金币为:"&交易前金币数)
                    变量 找万=字符串查找(交易前金币数,"万")
                    如果(找万>-1)
                        变量 割
                        变量 结果 = 字符串分割(交易前金币数,"万",割)
                        遍历(变量 i = 0; i < 结果; i++)
                            调试输出(割[i])
                        结束
                        变量 头=割[0]
                        变量 尾=割[1]
                        交易前总数=(头*10000)+尾
                        调试输出("分割后我的交易前金币为:"&交易前总数)
                        如果(全部合计>交易前总数)
                            调试输出("余额不足,取消交易")
                            超时关闭一()
                        否则
                            调试输出("金额充足,可以交易")
                            等待(100)
                            dm.MoveTo(232,111-16)
                            等待(10)
                            dm.LeftClick()
                            等待(10)
                            dm.SendString(句柄0,全部合计)
                            调试输出(全部合计)
                            dm.FindPic(8,304,386,455,"锁定.bmp","000000",0.9,0,sdX,sdY)
                            如果(sdX>1)
                                dm.MoveTo(sdX+5,sdY+5)
                                dm.LeftClick()
                            结束
                            等待(800+随机数(200,500))
                            dm.FindPic(8,304,386,455,"交易.bmp","000000",0.9,0,jyX,jyY)
                            如果(jyX>1)
                                dm.MoveTo(jyX+5,jyY+5)
                                等待(100)
                                dm.LeftClick()
                            结束
                            等待确认时间=编辑框获取文本("等待确认")
                            等待(等待确认时间*1000)
                        结束
                    否则
                        调试输出("余额不足")
                        超时关闭一()
                        对话框("余额不足!!!!!!!!----目前所剩余额为→"&交易前金币数,"余额不足",0,真)
                    结束
                    跳出
                结束
                开关=真
                返回 真
            结束
            等待(100)
        结束
        如果(!开关)
            超时关闭一()
            返回 假
        结束
    结束
结束



//////////////////////////////还望各位大神帮帮忙,为什么我只加了判断是否为空的代码后,得到的总价却会连上次交易的都累加起来了,,,,··················而我没有加判断为空的代码,得到的总价却不会出现这种累加的错误的!!!!!!!!!我每次交易出啊公开关闭后,都会重启交易线程的,,,,,,,,,,

作者: 这论坛不错    时间: 2015-6-3 15:53
代码太长,实在是没有耐心看啊。。。让楼下的来
作者: 言术    时间: 2015-6-3 20:46
你是不是两个函数都调用了?如果是的话那就相当于把两次都累加了,或者你每次调用前把总价格置零试试。
作者: 忆辰辅助    时间: 2015-6-4 08:03
价格变量初始化的时候赋值一下




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