def setPackage(self,size=12): '''读取数据库设置角色包裹 @param size:int 包裹的大小 ''' self._package=Package.Package(size) itemlist=tb_item_admin.getAllPkByFk(self._owner.baseInfo.id) itemobjlist=tb_item_admin.getObjList(itemlist) for itemmode in itemobjlist: itemId=int(itemmode._name.split(':')[1]) item = Item(id=itemId) itemPackInfo=itemmode.get('data') item.initItemInstance(itemPackInfo) self._package.putItemInPackage(item)
def setPackage(self, size=12): '''读取数据库设置角色包裹 @param size:int 包裹的大小 ''' self._package = Package.Package(size) itemlist = tb_item_admin.getAllPkByFk(self._owner.baseInfo.id) itemobjlist = tb_item_admin.getObjList(itemlist) for itemmode in itemobjlist: itemId = int(itemmode._name.split(':')[1]) item = Item(id=itemId) itemPackInfo = itemmode.get('data') item.initItemInstance(itemPackInfo) self._package.putItemInPackage(item)
def setPackage(self ,size = 12): """读取数据库设置角色包裹 @param size: int 包裹的大小 """ self._package = Package.Package(size) itemlist = tbitemadmin.getAllPkByFk(self._owner.baseInfo.id) itemobjlist = tbitemadmin.getObjList(itemlist) # itemsPackInfo = db_package.getAllItemsByCharacterId(self._owner.baseInfo.id) for itemmode in itemobjlist: itemId = int(itemmode._name.split(':')[1]) item = Item(id =itemId) itemPackInfo = itemmode.get('data') item.initItemInstance(itemPackInfo) self._package.putItemInPackage(item)
def initShopData(self): '''初始化商店信息''' self.itemList = dbShop.getShopInfo(self._shopcategory) for _item in self.itemList: item = Item(itemTemplateId=_item['templateid']) # item.baseInfo.setItemPrice(_item['cost']) itemInfo = {} itemInfo['id'] = item.baseInfo.getItemTemplateId() itemInfo['item'] = item.formatItemInfo() itemInfo['promotion'] = _item['promotion'] itemInfo['cost'] = _item['cost'] itemInfo['singlecount'] = _item['singlecount'] itemInfo['allcount'] = _item['allcount'] itemInfo['position'] = _item['position'] self.shopitems[itemInfo['id']] = itemInfo
def initShopData(self): '''初始化商店信息''' self.itemList=dbShop.getShopInfo(self._shopcategory) for _item in self.itemList: item=Item(itemTemplateId=_item['templateid']) # item.baseInfo.setItemPrice(_item['cost']) itemInfo={} itemInfo['id']=item.baseInfo.getItemTemplateId() itemInfo['item']=item.formatItemInfo() itemInfo['promotion']=_item['promotion'] itemInfo['cost']=_item['cost'] itemInfo['singlecount']=_item['singlecount'] itemInfo['allcount']=_item['allcount'] itemInfo['position']=_item['position'] self.shopitems[itemInfo['id']]=itemInfo
def resolveItemPrice(self): '''解析任务奖励''' itemprice=[] taskInfo=self.format taskprice=eval(taskInfo['itemprice']) for prices in taskprice.values(): for price in prices: itemId=price[0] stack=price[1] item=Item(itemTemplateId=itemId) item.pack.setStack(stack) itemprice.append({"itemid":itemId,"stack":stack}) return itemprice
def putNewItemsInPackage(self, itemTemplateId, count): '''添加物品到包裹栏''' item = Item(itemTemplateId=itemTemplateId) maxstack = item.baseInfo.getItemTemplateInfo().get('maxstack', 1) itemcndlist = [] if maxstack > 1: itemcndlist = [count] else: itemcndlist = [1] * count for count in itemcndlist: _item = copy.deepcopy(item) _item.pack.setStack(count) self.putNewItemInPackage(_item) return True
def getDropByid(did): """根据怪物id获取掉落物品信息 (适用于 怪物掉落 返回一个掉落物品) @param did: int 怪物掉落表主键id """ data=DROPOUT_CONFIG.get(did,None) if not data: log.err(u'掉落表填写错误不存在掉落信息-掉落主键:%d'%did) return None for item in data.get('itemid'): abss=random.randint(1,BASERATE) if abss>=1 and abss<=item[2]:#如果随机出来此物品 abss=random.randint(1,item[1]) #物品数量 item1=Item(item[0]) item1.pack.setStack(abss) return item1 return None
def getDropByid(did): '''根据怪物id获取掉落物品信息 (适用于 怪物掉落 返回一个掉落物品) @param did: int 怪物掉落表主键id ''' data = DROPOUT_CONFIG.get(did, None) # 获取did的值,不存在则返回None if not data: log.err(u'掉落表填写错误不存在掉落信息-掉落主键:%d' % did) return None for item in data.get('itemid'): # FIXME 这里的 for 语句,意思是随机找到第一个合适的爆落物品 # FIXME 我觉得应该一次可能爆落几个装备,所以可以将实例化的物品放到一个列表,再返回。 abss = random.randint(1, BASERATE) # 随机获取1 - 100000 之间的值 if abss >= 1 and abss <= item[2]: # 如果随机出来此物品 item[2]是概率 abss = random.randint(1, item[1]) # item[1]是物品数量 item1 = Item(item[0]) # item[0]是物品id,根据物品id实例化 item1.pack.setStack(abss) # 打包 return item1 return None
def putNewItemsInPackage(self, itemTemplateId, count): '''添加物品到包裹栏''' item = Item(itemTemplateId=itemTemplateId) maxstack = item.baseInfo.getItemTemplateInfo().get('maxstack', 1) itemcndlist = [] if maxstack > 1: while count > MAX_STACK: count -= MAX_STACK itemcndlist = [MAX_STACK] if count > 0: itemcndlist.append(count) else: itemcndlist = [1] * count for count in itemcndlist: _item = copy.deepcopy(item) _item.pack.setStack(count) self.putNewItemInPackage(_item) return True
def getCityInfo(self,mid): """获取单个城镇的信息 """ zhanjieInfo = dbZhanyi.ALL_ZHANGJIE_INFO.get(mid) info = {} info['mid'] = mid info['mnane'] = zhanjieInfo['name'] info['mdesc'] = zhanjieInfo['mdesc'] info['xiaoguai'] = zhanjieInfo['monsterdesc'] info['boss'] = zhanjieInfo['boss'] info['weiwang'] = zhanjieInfo['exp'] info['coin'] = zhanjieInfo['coin'] itemid = zhanjieInfo['itembound'] iteminfo = {} if itemid: itemin = Item(itemTemplateId = itemid) iteminfo['wname'] = itemin.baseInfo.getName() iteminfo['pinzhi'] = itemin.baseInfo.getBaseQuality() info['wupin'] = iteminfo return {'result':True,'message':u'','data':info}
def taskBoundHandle(self,taskId): '''任务奖励处理''' taskInfo=Task(taskId) giveitems=taskInfo.resolveItemPrice() package=self._owner.pack._package bagCnt=package.findSparePositionNum() if len(giveitems)>bagCnt: return {'result':False,'message':u""} for giveitem in giveitems: item=Item(itemTemplateId=giveitem.get('templateId')) self._owner.pack.putNewItemInPackage(item) exp=taskInfo.format.get('expprice') if exp>0:self.getExpBound(exp) gamecoin=taskInfo.format.get('gamecoinprice') if gamecoin>0:self.getGamecoinBound(gamecoin) trainpoint=taskInfo.format.get('trainpointprice') if trainpoint>0:self.getTrainPointBound(trainpoint) repute=taskInfo.format.get('reputeprice') if repute>0:self.getReputeBound(repute) return {'result':True}
def getDropByid(leagueindex, category): '''根据Leagueindex获取掉落物品信息 @param leagueindex: int npc所在联盟 @param category:int 比赛类型 ''' data = {} if category == 7: data = TrainMatch_Dropout.get(leagueindex, None) elif category == 1: data = Challenge_Dropout.get(leagueindex, None) if not data: log.err(u'掉落表填写错误存在掉落信息-掉落主键:%d' % leagueindex) return None for item in data.get('itemid'): abss = random.randint(1, BASERATE) if abss >= 1 and abss <= item[2]: abss = random.randint(1, itemid[1]) item1 = Item(item[0]) item1.pack.setStack(abss) return item1 return None