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)
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))