Example #1
0
def walk(proc, x, y):
    x = float(x)
    y = float(y)
    
    nowx, nowy = dolScript.getLandPos(proc)
    
    while(nowx != x and nowy != y):
        cmdBuf = writeCmd(proc, area.walkCmd)
        
        cpara = (c_ubyte * 24)()
    
        fpara = cast(cpara, POINTER(c_float))
        #print "x=%f, y=%f" % (x,y)
        fpara[0] = x
        fpara[1] = y
        
        ipara = cast(cpara, POINTER(c_int))
        for i in range(4):
            ipara[i+2] = getInt(proc, area.walkSeqAddrList[i])
            
        #=======================================================================
        # for i in range(24):
        #    print "para = %x" % (cpara[i])
        #=======================================================================
            
            
        paraBuf = writePara(proc, cpara)
        dowhile(isNormal, [proc])
        execCmd(proc, cmdBuf, paraBuf)
        
        time.sleep(0.2)
        nowx, nowy = dolScript.getLandPos(proc)
Example #2
0
def walk(proc, x, y, diff = 200):
    print 'walk'
    x = float(x)
    y = float(y)
    
    def distance(x1, y1, x, y):
        return ((x1 - x) ** 2 + (y1 - y) ** 2) ** 0.5
    
    nowx, nowy = dolScript.getLandPos(proc)
    
    if(distance(x, y, nowx, nowy) <= diff):
        print 'close enough. No Walk'
        return
    
    flagRun = False
        
    
        
    #=======================================================================
    # for i in range(24):
    #    print "para = %x" % (cpara[i])
    #=======================================================================
        
    
    
    
    while(distance(x, y, nowx, nowy) > diff):
        print 'is Online = %s' % (dolScript.isOnline(proc))
        flagRun = True
        
        #dountil(isNormal, [proc])
        walkonce(proc, x, y)
        
        time.sleep(0.2)
        nowx, nowy = dolScript.getLandPos(proc)
        print 'pos diff = %.3f' % (distance(x, y, nowx, nowy))