def query_test(self): query = gdata.spreadsheet.service.CellQuery() query['min-col'] = '1' query['max-col'] = '5' query['min-row'] = '1' query['max-row'] = '1' feed = self.client.GetCellsFeed("pFH5K-hMXAmr_25slvG3teg", "pFH5K-hMXAmr_25slvG3teg", query=query) print tostr( str(feed) )
def query_test(self): query = gdata.spreadsheet.service.CellQuery() query['min-col'] = '1' query['max-col'] = '5' query['min-row'] = '1' query['max-row'] = '1' feed = self.client.GetCellsFeed("pFH5K-hMXAmr_25slvG3teg", "pFH5K-hMXAmr_25slvG3teg", query=query) print tostr(str(feed))
def test(): info = sg.get_battle_info(cs[0]) for bt in info['battle']: print bt info = sg.get_mili_info(cs[0]) for gt in info['goto']: print gt print tostr(gt[5]), gt[-2], sg.stand_mid(gt[6], gt[7]), sg.tomyxy( gt[6], gt[7]) for gt in info['come']: pass
def test(): info = sg.get_battle_info( cs[0] ) for bt in info['battle']: print bt info = sg.get_mili_info( cs[0] ) for gt in info['goto']: print gt print tostr( gt[5] ), gt[-2], sg.stand_mid( gt[6], gt[7]) , sg.tomyxy(gt[6], gt[7]) for gt in info['come']: pass
def call_do_task(tid, gs): at = 600 + tid * 300 tinfo = sg.task_info() s = tinfo['status'] t = tinfo['current'][1] if s == 1: print "任务正在进行中", t, "秒后重试" elif s == 2: print "任务正在战斗", t, "秒后重试" elif s == 3: print "任务完成,正在返回", t, "秒后重试" if s != 0: return t # 人数 n = [0, 20000, 0, 20000] infos = sg.get_generals_info() generals = infos['generals'] for geninfo in generals: genid = geninfo[0] if genid not in gs: continue t1, t2, t3 = geninfo[4][0], geninfo[5][0], geninfo[6][0] isneed = 0 for e in [1, 2, 3]: need = n[e] - eval("t%d" % e) if need > 0: isneed += need print tostr(geninfo[1]), t1, t2, t3 sg.add_soldier(need) sg.add_to_gen(genid, e, need) if isneed > 0: return 1 infos = sg.get_soldier_info() infos = filter(lambda x: x[1] in gs, infos) infos = filter(lambda x: x[7] < 100, infos) ns = filter(lambda x: x[8] != -1 and x[7] > 89, infos) if len(ns) == len(infos) and len(ns) != 0: infos.sort(cmp=lambda x, y: cmp(y[8], x[8])) if infos[0][8] < at: sg.do_task(tid, gs) return 5 if len(infos) == 0: sg.do_task(tid, gs) return 5 n = call_up_shiqi(gs) if n > at: return n - at return 10
def call_do_task( tid, gs ): at = 600+tid*300 tinfo = sg.task_info() s = tinfo['status'] t = tinfo['current'][1] if s == 1: print "任务正在进行中", t,"秒后重试" elif s == 2: print "任务正在战斗", t,"秒后重试" elif s == 3: print "任务完成,正在返回", t,"秒后重试" if s != 0: return t # 人数 n =[0,20000,0, 20000] infos = sg.get_generals_info() generals = infos['generals'] for geninfo in generals: genid = geninfo[0] if genid not in gs: continue t1,t2,t3 = geninfo[4][0],geninfo[5][0],geninfo[6][0] isneed = 0 for e in [1,2,3]: need = n[e] - eval("t%d" % e ) if need > 0 : isneed+=need print tostr(geninfo[1]), t1, t2, t3 sg.add_soldier( need ) sg.add_to_gen( genid, e, need ) if isneed > 0 : return 1 infos = sg.get_soldier_info() infos = filter( lambda x:x[1] in gs, infos ) infos = filter( lambda x:x[7] < 100, infos ) ns = filter( lambda x:x[8] != -1 and x[7] > 89, infos ) if len(ns) == len(infos) and len(ns)!=0: infos.sort( cmp = lambda x,y : cmp(y[8], x[8]) ) if infos[0][8] < at: sg.do_task( tid, gs ) return 5 if len(infos) == 0 : sg.do_task( tid, gs ) return 5 n = call_up_shiqi( gs ) if n > at: return n -at return 10
def _PrintFeed(self, feed): for i, entry in enumerate(feed.entry): if isinstance(feed, gdata.spreadsheet.SpreadsheetsCellsFeed): print '%s %s\n' % ( tostr(entry.title.text), tostr(entry.content.text)) elif isinstance(feed, gdata.spreadsheet.SpreadsheetsListFeed): print '%s %s %s' % (i, tostr(entry.title.text), tostr(entry.content.text)) # Print this row's value for each column (the custom dictionary is # built using the gsx: elements in the entry.) print 'Contents:' for key in entry.custom: print ' %s: %s' % (key, entry.custom[key].text) print '\n', else: print '%s %s\n' % (i, tostr(entry.title.text))
def showinfo( r ): for e in r['tents']: u = filter( lambda x:x[0] == e[2], r['users'] )[0] if tostr( u[3] ).find("пллЛ") != -1: v = sg.calc_xy( e[3] ) print tostr( u[1] ), tostr( u[3] ), tostr( e[1] ), math.sqrt(v[0]**2+v[1]**2),v, (238-v[1], v[0]-580) all.append( (tostr( u[1] ), tostr( u[3] ), tostr( e[1] ), math.sqrt(v[0]**2+v[1]**2),v, (238-v[1], v[0]-580)) )
def _PrintFeed(self, feed): for i, entry in enumerate(feed.entry): if isinstance(feed, gdata.spreadsheet.SpreadsheetsCellsFeed): print '%s %s\n' % (tostr( entry.title.text), tostr(entry.content.text)) elif isinstance(feed, gdata.spreadsheet.SpreadsheetsListFeed): print '%s %s %s' % (i, tostr( entry.title.text), tostr(entry.content.text)) # Print this row's value for each column (the custom dictionary is # built using the gsx: elements in the entry.) print 'Contents:' for key in entry.custom: print ' %s: %s' % (key, entry.custom[key].text) print '\n', else: print '%s %s\n' % (i, tostr(entry.title.text))
def call_update_building( gid ): tasklist = sg.get_current_update() bs = sg.get_all_building() vv = bs l = len(tasklist) ts = tasklist.values() m = 0 if l: m = min(ts) print sg.cname for e in tasklist:print "\t", sg.get_building_name( e ),"级别:", filter( lambda x:x[1] == e , vv )[0][3], "剩余时间:", tasklist[e] if l >= 3: print sg.cname, m, "秒后重试" return m bs = filter( lambda x: x[0] != 5, bs ) if gid : bs = filter( lambda x: x[0]==gid, bs ) bs = filter( lambda x: x[1] not in tasklist.keys(), bs ) bs.sort( cmp = lambda x,y : cmp(x[3], y[3]) ) for obj in bs: ret = sg.force_update_building( obj[1] ) print sg.cname, "升级", tostr(obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 if ret['ret'] == 0: break else: t = m if m > 0 and m < 300 else randint( 280, 320 ) print sg.cname, "无法升级成功任何建筑",t,"秒后重试" return t return 5
def call_update_building(gid): tasklist = sg.get_current_update() bs = sg.get_all_building() vv = bs l = len(tasklist) ts = tasklist.values() m = 0 if l: m = min(ts) print sg.cname for e in tasklist: print "\t", sg.get_building_name(e), "级别:", filter( lambda x: x[1] == e, vv)[0][3], "剩余时间:", tasklist[e] if l >= 3: print sg.cname, m, "秒后重试" return m bs = filter(lambda x: x[0] != 5, bs) if gid: bs = filter(lambda x: x[0] == gid, bs) bs = filter(lambda x: x[1] not in tasklist.keys(), bs) bs.sort(cmp=lambda x, y: cmp(x[3], y[3])) for obj in bs: ret = sg.force_update_building(obj[1]) print sg.cname, "升级", tostr( obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 if ret['ret'] == 0: break else: t = m if m > 0 and m < 300 else randint(280, 320) print sg.cname, "无法升级成功任何建筑", t, "秒后重试" return t return 5
def check_general(): all = filter(lambda x: x[6] < 90, sg.get_wu_infos() + sg.get_wen_infos()) for g in all: print sg.cname, "犒赏", tostr(g[1]), sg.give_money(g[0], g[12] * 10)['ret'] == 0 return 1200
def test(): r = sg.lookup_xy( 0, 0 ) users = r['users'] db = DB() for user in users: print user[0], tostr(user[1]), tostr(user[3]) info = sg.get_user_info(user[0]) print info cities = info['citylist'] info = info['userinfo'][0] print cities print info #db.insert( tostr(info['login_name']), int(info['popularity']), int(info['user_id']), info['login_name'], len(cities), tostr(info['union_name']), int(info['civilizational']), int(cities[0]['map_id']) ) for city in r['citys']: print sg.stand_xy(city[0]), tostr( city[1] )
def call_update_building2(rgids=[]): gids = map(lambda x: abs(x), rgids) tasklist = sg.get_current_update() bs = sg.get_all_building() vv = bs bs = filter(lambda x: x[3] < 33, bs) l = len(tasklist) ts = tasklist.values() print sg.cname for e in tasklist: print "\t", sg.get_building_name(e), "级别:", filter( lambda x: x[1] == e, vv)[0][3], "剩余时间:", tasklist[e] if len(ts) == 3: return min(ts) if gids: bs = filter(lambda x: x[0] in gids, bs) m = min(ts) if l else 0 bdings = filter(lambda x: x[1] in tasklist.keys(), bs) bs = filter(lambda x: x[1] not in tasklist.keys(), bs) if len(bs) == 0: print sg.cname, "无法升级成功任何建筑", min(ts), "秒后重试" return min(ts) bs.sort(key=lambda x: x[3]) # need destroy dgids = filter(lambda x: x < 0, rgids) dbs = filter(lambda x: -x[0] in dgids, bs) ndbs = filter(lambda x: -x[0] not in dgids, bs) for obj in dbs: ret = sg.destroy_building(obj[0], obj[1]) print sg.cname, "拆除", tostr( obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 return 5 for obj in ndbs: if -obj[0] in rgids: continue ret = sg.force_update_building(obj[1]) print sg.cname, "升级", tostr( obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 if ret['ret'] == 0: return 5 else: t = m if m > 0 and m < 300 else randint(280, 320) print sg.cname, "无法升级成功任何建筑", t, "秒后重试" return t
def call_update_smart(upgrade=4): tasklist = sg.get_current_update() bs = sg.get_all_building() h_gid = 3 l = len(tasklist) ts = tasklist.values() if l: m = min(ts) print sg.cname for e in tasklist: print "\t", sg.get_building_name(e), "级别:", filter( lambda x: x[1] == e, bs)[0][3], "剩余时间:", tasklist[e] if l >= 3: print sg.cname, m, "秒后重试" return m for t in tasklist: if sg.get_building_gid(t) != h_gid: bs = filter(lambda x: x[0] != 5, bs) bs = filter(lambda x: x[0] == 3, bs) bs = filter(lambda x: x[1] not in tasklist.keys(), bs) bs.sort(cmp=lambda x, y: cmp(x[3], y[3])) for obj in bs: ret = sg.force_update_building(obj[1]) print sg.cname, "升级", tostr( obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 if ret['ret'] == 0: break return 5 else: obj = sg.get_pid_by_gid(upgrade)[0] if obj[3] < 33: ret = sg.force_update_building(obj[1]) print sg.cname, "升级", tostr( obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 else: ret = sg.destroy_building(obj[0], obj[1]) print sg.cname, "拆除", tostr( obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 return 5
def call_get_newb_general( tid ):# 7,8 global sg r = sg.find_gen( tid ) if r['look_for']: pass #return 100 #return r['look_for'][0][6] w = r['rumor'] if len(w) == 0: ls = sg.get_wen_infos() ls = filter( lambda x:x[4] == 0, ls ) ls.sort( cmp = lambda x,y: cmp( y[11],x[11] ) ) gen = ls[0] if gen[3] != 1: print sg.cname, "任命", tostr(gen[1]) ,"为太守" sg.give_job( gen[0], 1 ) else: threads.deferToThread( sendemail, "找到名将 " + tostr(w[3]) ) sg.dofind(w[0]) return randint(300,400)
def call_get_newb_general(tid): # 7,8 global sg r = sg.find_gen(tid) if r['look_for']: pass #return 100 #return r['look_for'][0][6] w = r['rumor'] if len(w) == 0: ls = sg.get_wen_infos() ls = filter(lambda x: x[4] == 0, ls) ls.sort(cmp=lambda x, y: cmp(y[11], x[11])) gen = ls[0] if gen[3] != 1: print sg.cname, "任命", tostr(gen[1]), "为太守" sg.give_job(gen[0], 1) else: threads.deferToThread(sendemail, "找到名将 " + tostr(w[3])) sg.dofind(w[0]) return randint(300, 400)
def call_update_building2( rgids = [] ): gids = map( lambda x:abs(x), rgids ) tasklist = sg.get_current_update() bs = sg.get_all_building() vv = bs bs = filter( lambda x:x[3]<33, bs ) l = len( tasklist) ts = tasklist.values() print sg.cname for e in tasklist:print "\t", sg.get_building_name( e ),"级别:", filter( lambda x:x[1] == e , vv )[0][3], "剩余时间:", tasklist[e] if len(ts) == 3 : return min(ts) if gids: bs = filter( lambda x:x[0] in gids , bs ) m = min(ts) if l else 0 bdings = filter( lambda x:x[1] in tasklist.keys(), bs ) bs = filter( lambda x:x[1] not in tasklist.keys(), bs ) if len(bs) == 0 : print sg.cname, "无法升级成功任何建筑",min(ts),"秒后重试" return min(ts) bs.sort( key = lambda x:x[3] ) # need destroy dgids = filter( lambda x:x <0 , rgids ) dbs = filter( lambda x:-x[0] in dgids , bs ) ndbs = filter( lambda x:-x[0] not in dgids , bs ) for obj in dbs: ret = sg.destroy_building( obj[0], obj[1] ) print sg.cname, "拆除", tostr(obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 return 5 for obj in ndbs: if -obj[0] in rgids : continue ret = sg.force_update_building( obj[1] ) print sg.cname, "升级", tostr(obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 if ret['ret'] == 0: return 5 else: t = m if m > 0 and m < 300 else randint( 280, 320 ) print sg.cname, "无法升级成功任何建筑",t,"秒后重试" return t
def call_update_tech(): global top_level ret = sg.get_current_update_tech() if ret: print "当前研究:", tostr(ret[1]), "级别:", ret[2], "剩余时间:", ret[4] return ret[4] techlist = range(12, 16) #,13,12,15 #,1,4,3,2, #techlist= [16,20,24] #,13,12,15 #,1,4,3,2, techlist = [19, 27] alltech = sg.get_all_tech()['list'] alltech = filter(lambda x: x[0] in techlist, alltech) alltech = filter(lambda x: x[2] < top_level, alltech) alltech.sort(cmp=lambda x, y: cmp(x[2], y[2])) for tech in alltech: r = sg.update_tech(tech[0])['ret'] print "升级科技", tostr(tech[1]), r == 0 if r == 0: return 5 else: print "所有科技升级完成" return 611
def call_update_tech(): global top_level ret = sg.get_current_update_tech() if ret: print "当前研究:", tostr(ret[1]), "级别:", ret[2], "剩余时间:", ret[4] return ret[4] techlist=range(12,16) #,13,12,15 #,1,4,3,2, #techlist= [16,20,24] #,13,12,15 #,1,4,3,2, techlist = [19,27] alltech = sg.get_all_tech()['list'] alltech = filter( lambda x: x[0] in techlist, alltech) alltech = filter( lambda x: x[2] < top_level, alltech) alltech.sort( cmp = lambda x,y: cmp( x[2] , y[2] ) ) for tech in alltech: r = sg.update_tech( tech[0] )['ret'] print "升级科技", tostr(tech[1]), r == 0 if r==0: return 5 else: print "所有科技升级完成" return 611
def call_update_smart( upgrade=4 ): tasklist = sg.get_current_update() bs = sg.get_all_building() h_gid = 3 l = len(tasklist) ts = tasklist.values() if l: m = min(ts) print sg.cname for e in tasklist:print "\t", sg.get_building_name( e ),"级别:", filter( lambda x:x[1] == e , bs )[0][3], "剩余时间:", tasklist[e] if l>=3: print sg.cname, m, "秒后重试" return m for t in tasklist: if sg.get_building_gid( t ) != h_gid : bs = filter( lambda x: x[0] != 5, bs ) bs = filter( lambda x: x[0] == 3, bs ) bs = filter( lambda x: x[1] not in tasklist.keys(), bs ) bs.sort( cmp = lambda x,y : cmp(x[3], y[3]) ) for obj in bs: ret = sg.force_update_building( obj[1] ) print sg.cname, "升级", tostr(obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 if ret['ret'] == 0: break return 5 else: obj = sg.get_pid_by_gid( upgrade )[0] if obj[3] < 33: ret = sg.force_update_building( obj[1] ) print sg.cname, "升级", tostr(obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 else: ret = sg.destroy_building( obj[0], obj[1] ) print sg.cname, "拆除", tostr(obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 return 5
def call_sell_weapon(ws=(206, 306, 406)): num = 4 rest = 1 info = sg.get_market_info() for e in info: e = info[e] if e[0] not in ws: continue if e[2] > num: sellcount = e[2] - rest if sg.sell(sellcount, e[0], e[3])['ret'] != 0: print "卖出", tostr(e[1]), sellcount, "件, 失败" return 20
def check(i): v = [] sg.change_city( i ) info = sg.get_people_info() v.append( info[1] ) v.append( info[4] ) v.append( info[3] ) info = sg.get_fin_info() name = tostr( info[1] ) v.append( -info[4] ) v.append( -info[5] ) v.append( -info[-3] ) d.set_value( v ) return name,d.get_tax()
def check(i): v = [] sg.change_city(i) info = sg.get_people_info() v.append(info[1]) v.append(info[4]) v.append(info[3]) info = sg.get_fin_info() name = tostr(info[1]) v.append(-info[4]) v.append(-info[5]) v.append(-info[-3]) d.set_value(v) return name, d.get_tax()
def addpt(l, props): addpt1 = l['skill_point'] addpt2 = 0 if addpt1 == 0: return prodict = {} for p in props: prodict[p] = l[p] newlist = sorted(prodict.items(), key=lambda x: x[1]) d1 = newlist[2][0] d2 = newlist[1][0] d3 = newlist[0][0] for pt in range(l['skill_point']): if l[d1] + addpt1 > l[d2] + addpt2 + l[d3]: addpt1 -= 1 addpt2 += 1 else: break print sg.cname, tostr(l['name']), l['skill_point'], newlist print sg.cname, tostr(l['name']), "点数", addpt1, addpt2 sg.add_point(l['id'], newlist[1][0], addpt2) sg.add_point(l['id'], newlist[2][0], addpt1) return randint(800, 1000)
def call_sell_weapon( ws =(206,306,406) ): num = 4 rest = 1 info = sg.get_market_info() for e in info: e = info[e] if e[0] not in ws:continue if e[2] > num: sellcount = e[2]-rest if sg.sell(sellcount, e[0] , e[3] )['ret'] != 0: print "卖出",tostr(e[1]), sellcount,"件, 失败" return 20
def addpt( l, props ): addpt1 = l['skill_point'] addpt2 = 0 if addpt1 == 0: return prodict = {} for p in props: prodict[p] = l[p] newlist = sorted( prodict.items(), key = lambda x:x[1]) d1 = newlist[2][0] d2 = newlist[1][0] d3 = newlist[0][0] for pt in range( l['skill_point'] ): if l[d1]+addpt1 > l[d2]+addpt2 + l[d3]: addpt1 -= 1 addpt2 += 1 else: break print sg.cname, tostr(l['name']), l['skill_point'] ,newlist print sg.cname, tostr(l['name']), "点数", addpt1, addpt2 sg.add_point( l['id'], newlist[1][0], addpt2 ) sg.add_point( l['id'], newlist[2][0], addpt1 ) return randint( 800, 1000 )
def doit(): db = DB() n = 120 for x in range(-n, n, 8 ): for y in range(-n, n, 8 ): r = sg.lookup_xy(x,y) users = r['users'] for user in users: print user[0] #, user[1].decode("utf8"), user[3].decode("utf8") if db.has(user[0]) : continue info = sg.get_user_info(user[0]) cities = info['citylist'] info = info['userinfo'][0] try: db.insert( tostr(info['login_name']), int(info['popularity']), int(info['user_id']), info['login_name'], len(cities), tostr(info['union_name']), int(info['civilizational']), int(cities[0]['map_id']) ) except: pass
def call_up_shiqi( gs ): t = 898 infos = sg.get_soldier_info() infos = filter( lambda x:x[1] in gs, infos ) infos = filter( lambda x:x[7] < 100, infos ) if len(infos) == 0: return 100 ls = filter( lambda x:x[8] == -1, infos ) for inf in ls: sg.buy( sum(inf[3:6])*5/1000+3, SG._food ) r = sg.update_shiqi( inf[1], 100-inf[7] ) print sg.cname, "提升士气", tostr(inf[2]),r['ret'] == 0 if len(ls) == 0: if len( filter( lambda x:x[7] < 90 , infos ) ) == 0: infos.sort( cmp = lambda x,y : cmp(y[8],x[8])) return infos[0][8] infos.sort( cmp = lambda x,y : cmp(x[8],y[8])) return infos[0][8] return 5
def call_up_shiqi(gs): t = 898 infos = sg.get_soldier_info() infos = filter(lambda x: x[1] in gs, infos) infos = filter(lambda x: x[7] < 100, infos) if len(infos) == 0: return 100 ls = filter(lambda x: x[8] == -1, infos) for inf in ls: sg.buy(sum(inf[3:6]) * 5 / 1000 + 3, SG._food) r = sg.update_shiqi(inf[1], 100 - inf[7]) print sg.cname, "提升士气", tostr(inf[2]), r['ret'] == 0 if len(ls) == 0: if len(filter(lambda x: x[7] < 90, infos)) == 0: infos.sort(cmp=lambda x, y: cmp(y[8], x[8])) return infos[0][8] infos.sort(cmp=lambda x, y: cmp(x[8], y[8])) return infos[0][8] return 5
def call_yz_update_building( pids ): tasklist = sg.get_current_update() bs = sg.get_all_building() l = len( tasklist ) m = 5 if l: m = min( tasklist.values() ) if l == 3: print sg.tname, tasklist return m bs = filter( lambda x: x[1] not in tasklist.keys(), bs ) bs = filter( lambda x: x[1] in pids, bs ) bs.sort( key = lambda x:x[3] ) for obj in bs: ret = sg.update_building( obj[1], obj[0] ) print sg.tname, "升级", tostr(obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 if ret['ret'] == 0: break else: print sg.tname,"营寨无法升级成功任何建筑" return m if l else 300 return 5
def call_yz_update_building(pids): tasklist = sg.get_current_update() bs = sg.get_all_building() l = len(tasklist) m = 5 if l: m = min(tasklist.values()) if l == 3: print sg.tname, tasklist return m bs = filter(lambda x: x[1] not in tasklist.keys(), bs) bs = filter(lambda x: x[1] in pids, bs) bs.sort(key=lambda x: x[3]) for obj in bs: ret = sg.update_building(obj[1], obj[0]) print sg.tname, "升级", tostr( obj[2]), obj[1], "级别:", obj[3], ret['ret'] == 0 if ret['ret'] == 0: break else: print sg.tname, "营寨无法升级成功任何建筑" return m if l else 300 return 5
def do_task2( gens, ty ): # [id, 步兵人数, 骑兵人数, 弓兵人数 ] m = sg.get_money_number() if m < 200000 : return 100 genids = [ y[0] for y in gens ] infos = sg.get_generals_info() generals = infos['generals'] allname = [] bok = 1 for gen in gens: genid = gen[0] geninfo = filter( lambda x:x[0] == genid, generals ) if geninfo: geninfo=geninfo[0] name = geninfo[1] allname.append(name) else: bok =0 continue # 人数 t1,t2,t3 = geninfo[4][0],geninfo[5][0],geninfo[6][0] print tostr(name), t1, t2, t3, gen for e in [1,2,3]: need = gen[e] - eval("t%d" % e ) if need > 0 : sg.add_soldier( need ) sg.add_to_gen( genid, e, need ) # 检查士气 infos = sg.get_soldier_info() infos = filter( lambda x:x[1] in genids, infos ) if infos: nfs = filter( lambda x: x[7] < 100 and x[8] == -1, infos ) if nfs: bok *= 0 n = call_up_shiqi( genids ) return 5 nfs = filter( lambda x: x[7] < 90 and x[8] > -1, infos ) if nfs: t = min( [ x[8] for x in nfs ]) print "正在练士气" ,t,"秒后重试" return t else: bok = 0 if len(allname) < len(genids): bok = 0 infos = sg.get_mili_info() ts = [] for info in infos['come']: for gen in info[7]: if gen[0] in genids: ts.append( info[-1] ) for info in infos['goto']: for gen in info[8]: if gen[0] in genids: ts.append( info[-2] ) if ts: print sg.cname, "出征中,",min(ts),"秒后重试." return min(ts) else: bok = 1 if bok == 0: return 100 infos = sg.get_wu_infos() infos = filter( lambda x:x[0] in genids and x[4] == 0 , infos ) if len(infos) != len( genids ): return 150 print sg.cname, "军队已就绪." for e in allname: print tostr(e) from libsgmap import MapInfo mi = MapInfo() best = mi.getbestforme( ty, sg.pos() ) dest = 0 wars = None for b in best: if wars == None: wars=[] for c in [ 63829, 116399, 169578, 79652 , 171087 ]: wars += sg.get_current_wars(c) if b[1] in wars: continue for e in sg.lookup_map(b[1])['npc_tent']: if e[2] == b[1] and b[0] in ty: dest = b break else: mi.remove(b[1]) continue break print dest if dest: r = sg.do_beat_city( genids, dest[1] ) print sg.cname, "进攻" , r['ret'] == 0 return 5 return 100
def get_worksheets(self, key ): feed = self.client.GetWorksheetsFeed(key) print tostr( str( feed) )
from libsg import SG, tostr sg = SG() infos = sg.get_city_list()['infos'] cities = dict([(x[1], x[2]) for x in infos if x[1] > 0]) for k in cities: print tostr(cities[k]), k sg.change_city(k) ks = sg.get_wu_infos() for k in ks: print "\t", tostr(k[1]), k[0], k[5]
def get_worksheets(self, key): feed = self.client.GetWorksheetsFeed(key) print tostr(str(feed))
def check_general(): all = filter( lambda x:x[6] < 90 , sg.get_wu_infos() + sg.get_wen_infos() ) for g in all: print sg.cname, "犒赏", tostr(g[1]) , sg.give_money( g[0], g[12] *10)['ret'] == 0 return 1200
from libsg import SG, tostr sg = SG() infos = sg.get_city_list()['infos'] cities = dict( [ (x[1],x[2]) for x in infos if x[1]>0 ] ) for k in cities: print tostr( cities[k] ), k sg.change_city(k) ks = sg.get_wu_infos() for k in ks:print "\t", tostr( k[1] ), k[0], k[5]
def do_task2(gens, ty): # [id, 步兵人数, 骑兵人数, 弓兵人数 ] m = sg.get_money_number() if m < 200000: return 100 genids = [y[0] for y in gens] infos = sg.get_generals_info() generals = infos['generals'] allname = [] bok = 1 for gen in gens: genid = gen[0] geninfo = filter(lambda x: x[0] == genid, generals) if geninfo: geninfo = geninfo[0] name = geninfo[1] allname.append(name) else: bok = 0 continue # 人数 t1, t2, t3 = geninfo[4][0], geninfo[5][0], geninfo[6][0] print tostr(name), t1, t2, t3, gen for e in [1, 2, 3]: need = gen[e] - eval("t%d" % e) if need > 0: sg.add_soldier(need) sg.add_to_gen(genid, e, need) # 检查士气 infos = sg.get_soldier_info() infos = filter(lambda x: x[1] in genids, infos) if infos: nfs = filter(lambda x: x[7] < 100 and x[8] == -1, infos) if nfs: bok *= 0 n = call_up_shiqi(genids) return 5 nfs = filter(lambda x: x[7] < 90 and x[8] > -1, infos) if nfs: t = min([x[8] for x in nfs]) print "正在练士气", t, "秒后重试" return t else: bok = 0 if len(allname) < len(genids): bok = 0 infos = sg.get_mili_info() ts = [] for info in infos['come']: for gen in info[7]: if gen[0] in genids: ts.append(info[-1]) for info in infos['goto']: for gen in info[8]: if gen[0] in genids: ts.append(info[-2]) if ts: print sg.cname, "出征中,", min(ts), "秒后重试." return min(ts) else: bok = 1 if bok == 0: return 100 infos = sg.get_wu_infos() infos = filter(lambda x: x[0] in genids and x[4] == 0, infos) if len(infos) != len(genids): return 150 print sg.cname, "军队已就绪." for e in allname: print tostr(e) from libsgmap import MapInfo mi = MapInfo() best = mi.getbestforme(ty, sg.pos()) dest = 0 wars = None for b in best: if wars == None: wars = [] for c in [63829, 116399, 169578, 79652, 171087]: wars += sg.get_current_wars(c) if b[1] in wars: continue for e in sg.lookup_map(b[1])['npc_tent']: if e[2] == b[1] and b[0] in ty: dest = b break else: mi.remove(b[1]) continue break print dest if dest: r = sg.do_beat_city(genids, dest[1]) print sg.cname, "进攻", r['ret'] == 0 return 5 return 100