示例#1
0
 def run(self):
     gm = self.q.gm[self.freegm]["i"]
     print "start %d %d" % (self.bbx, self.bby), self.freegm
     # GeoEditorListener.getInstance().getThread().addGM(gm)
     GeoEditorListener.getInstance().getThread().setMode(1)
     start = time.time()
     if self.q.fly256Block(self.freegm, self.bbx, self.bby):
         gm.sendMessage("finish %d %d %d sec" % (self.bbx, self.bby, time.time() - start))
         gm.geoFree = True
     print "finish %d %d" % (self.bbx, self.bby), self.freegm, time.time() - start
     del self.q.gm[self.freegm]
示例#2
0
文件: GeoGen.py 项目: w001122/s4L2J
 def run(self):
     gm = self.q.gm[self.freegm]['i']
     print "start %d %d" % (self.bbx, self.bby), self.freegm
     #GeoEditorListener.getInstance().getThread().addGM(gm)
     GeoEditorListener.getInstance().getThread().setMode(1)
     start = time.time()
     if self.q.fly256Block(self.freegm, self.bbx, self.bby):
         gm.sendMessage("finish %d %d %d sec" %
                        (self.bbx, self.bby, time.time() - start))
         gm.geoFree = True
     print "finish %d %d" % (self.bbx,
                             self.bby), self.freegm, time.time() - start
     del self.q.gm[self.freegm]
示例#3
0
 def run(self):
     print "connect to GS"
     sgs = Socket("127.0.0.1", 9011)
     i = DataInputStream(sgs.getInputStream())
     print "connect to GeoEditor"
     sge = Socket("127.0.0.1", 2109)
     # o = DataOutputStream(sge.getOutputStream())
     o = sge.getOutputStream()
     Thread.sleep(5000)
     GeoEditorListener.getInstance().getThread().addListener(self.vpl)
     print "gsge Ready"
     bufsize = 4096
     lastpos = 0
     buf = String("\0" * bufsize).getBytes()
     fc = 0
     while True:
         if not i.available():
             Thread.sleep(10)
             fc += 1
             if fc % 500 == 0:
                 o.flush()
                 fc = 0
             continue
         lastpos += i.read(buf, lastpos, bufsize - lastpos)
         while lastpos > 0 and lastpos > buf[0]:
             if buf[1] == 2:
                 pass
             elif buf[1] == 1:
                 x = self.list2num(buf[2:6])
                 y = self.list2num(buf[6:10])
                 z = self.list2num(buf[10:12])
                 if z > -15000:
                     rx, ry = GeoUtil.getRegionXY(x, y)
                     if (rx, ry) == (22, 22):
                         bx, by = GeoUtil.getBlockXY(x, y)
                         cx, cy = GeoUtil.getCellXY(x, y)
                         o.write(struct.pack(">BBBBh", bx, by, cx, cy, z))
             newpos = buf[0] + 1
             if len(buf) - newpos < bufsize:
                 buf = buf[newpos:] + String("\0" * bufsize).getBytes()
             else:
                 buf = buf[newpos:]
             lastpos -= newpos
示例#4
0
文件: GeoGen.py 项目: w001122/s4L2J
 def run(self):
     print "connect to GS"
     sgs = Socket("127.0.0.1", 9011)
     i = DataInputStream(sgs.getInputStream())
     print "connect to GeoEditor"
     sge = Socket("127.0.0.1", 2109)
     #o = DataOutputStream(sge.getOutputStream())
     o = sge.getOutputStream()
     Thread.sleep(5000)
     GeoEditorListener.getInstance().getThread().addListener(self.vpl)
     print "gsge Ready"
     bufsize = 4096
     lastpos = 0
     buf = String("\0" * bufsize).getBytes()
     fc = 0
     while True:
         if not i.available():
             Thread.sleep(10)
             fc += 1
             if fc % 500 == 0:
                 o.flush()
                 fc = 0
             continue
         lastpos += i.read(buf, lastpos, bufsize - lastpos)
         while lastpos > 0 and lastpos > buf[0]:
             if buf[1] == 2:
                 pass
             elif buf[1] == 1:
                 x = self.list2num(buf[2:6])
                 y = self.list2num(buf[6:10])
                 z = self.list2num(buf[10:12])
                 if z > -15000:
                     rx, ry = GeoUtil.getRegionXY(x, y)
                     if (rx, ry) == (22, 22):
                         bx, by = GeoUtil.getBlockXY(x, y)
                         cx, cy = GeoUtil.getCellXY(x, y)
                         o.write(struct.pack('>BBBBh', bx, by, cx, cy, z))
             newpos = buf[0] + 1
             if len(buf) - newpos < bufsize:
                 buf = buf[newpos:] + String("\0" * bufsize).getBytes()
             else:
                 buf = buf[newpos:]
             lastpos -= newpos
示例#5
0
文件: GeoGen.py 项目: w001122/s4L2J
 def onAdvEvent(self, event, npc, player):
     #return
     if not self.gsge.isAlive():
         print "gsge not connect"
         self.cancelQuestTimers("onTime1")
         return
     if event == "onTime1":
         for gm in GeoEditorListener.getInstance().getThread()._gms.toArray(
         ):
             #for player in L2World.getInstance().getAllPlayersArray():
             name = gm.getName()
             if not name in self.gm:
                 if gm.geoFree:
                     gm.geoFree = False
                     self.gm[name] = {'i': gm, 's': 0}
         b = self.getNotDoneBBlock()
         if b > -1:
             freegm = self.getFreeGM()
             if len(freegm):
                 freegm = freegm[0]
                 rt = Runtask()
                 rt.setParam(self, freegm, b % 16, b >> 4)
                 rt.start()
         else:
             print "no job"
             self.saveLastZ()
             #self.doneBBlock = [0]*1
             self.doneBBlock = [0] * 16 * 16
             doneCount = 0
             for by in xrange(256):
                 for bx in xrange(256):
                     if self.checkOneBlock(bx, by):
                         self.doneBlock[by * 256 + bx] = 2
                         #print "bx %d by %d done" % (bx, by)
                         doneCount += 1
                     else:
                         self.doneBlock[by * 256 + bx] = 0
             print "Done %d, not done %d" % (doneCount,
                                             256 * 256 - doneCount)
             #self.doneBlock = [0]*(256*256)
             #self.cancelQuestTimers("onTime1")
         return
示例#6
0
 def onAdvEvent(self, event, npc, player):
     # return
     if not self.gsge.isAlive():
         print "gsge not connect"
         self.cancelQuestTimers("onTime1")
         return
     if event == "onTime1":
         for gm in GeoEditorListener.getInstance().getThread()._gms.toArray():
             # for player in L2World.getInstance().getAllPlayersArray():
             name = gm.getName()
             if not name in self.gm:
                 if gm.geoFree:
                     gm.geoFree = False
                     self.gm[name] = {"i": gm, "s": 0}
         b = self.getNotDoneBBlock()
         if b > -1:
             freegm = self.getFreeGM()
             if len(freegm):
                 freegm = freegm[0]
                 rt = Runtask()
                 rt.setParam(self, freegm, b % 16, b >> 4)
                 rt.start()
         else:
             print "no job"
             self.saveLastZ()
             # self.doneBBlock = [0]*1
             self.doneBBlock = [0] * 16 * 16
             doneCount = 0
             for by in xrange(256):
                 for bx in xrange(256):
                     if self.checkOneBlock(bx, by):
                         self.doneBlock[by * 256 + bx] = 2
                         # print "bx %d by %d done" % (bx, by)
                         doneCount += 1
                     else:
                         self.doneBlock[by * 256 + bx] = 0
             print "Done %d, not done %d" % (doneCount, 256 * 256 - doneCount)
             # self.doneBlock = [0]*(256*256)
             # self.cancelQuestTimers("onTime1")
         return