Пример #1
0
 def __init__(self, alist, name):
     super(RWGroup, self).__init__(name)
     self.regions = []
     for index, adict in enumerate(alist):
         name = '%s.%d' % (self.name,
                           index) if self.name is not None else str(index)
         obj = self.new(adict[IKEY_ID], name=name)
         item = ((index, obj), int(adict[IKEY_GROUP]))
         self.regions.append(item)
     self.ran_region = RandomRegion(self.regions)
Пример #2
0
 def _init_res_gem_shop(self, objs):
     """珠宝商店"""
     rates = []
     for obj in objs:
         self.gem_shop_items[obj.id] = obj
         rates.append((obj.id, obj.r))
     self._gem_shop_rates = RandomRegion(rates)
Пример #3
0
 def update(self, adict):
     super(ResDeepGuard, self).update(adict)
     if self.is_boss: #boss
         self.boss_func = make_lv_regions(self.guard)
     elif self.guard:
         self.guard_func = RandomRegion(self.guard)
     else:
         log.error(u'深渊怪物配置表(%d)怪物配置缺少', self.id)
Пример #4
0
 def _init_res_bf_rate(self, objs):
     """ 兵符任务获取概率 """
     type_part_rates = {}
     for o in objs:
         k = (o.type, o.part)
         rates = type_part_rates.setdefault(k, [])
         rates.append((o.id, o.rate))
     self._bf_rates = dict([(k, RandomRegion(rates))
                            for k, rates in type_part_rates.iteritems()])
Пример #5
0
 def _init_res_equip(self, objs):
     """ 初始化装备 """
     set_id_rates = {}
     for o in objs:
         sid = o.sid
         rates = set_id_rates.setdefault(sid, [])
         rates.append((o.id, o.rate))
     self._equip_rates = dict([(k, RandomRegion(rates))
                               for k, rates in set_id_rates.iteritems()])
Пример #6
0
 def _lucky_darw(self, draw_rates):
     """ 计算抽奖结果 """
     draw_num = self.day_lucky.data.d[PLAYER_ATTR_MDRAW]
     ran = RandomRegion(draw_rates)
     #预防同时抽到两配将
     while 1:
         draw_role_num = 0
         ps = MAX_BOXES * [0]
         rs = ran.randoms(draw_num)
         for i, index  in enumerate(rs):
             ps[index] = -1 * (i + 1)
             item = self.day_lucky.data.items[index]
             if item[IKEY_TYPE] == IT_ROLE_STR:
                 draw_role_num += 1
         if draw_role_num < 2:
             self.day_lucky.data.ps = ps
             break
         sleep(1)
Пример #7
0
 def _lucky_darw(self, draw_rates):
     """ 计算抽奖结果 """
     draw_num = self.day_lucky.data.d[PLAYER_ATTR_MDRAW]
     ran = RandomRegion(draw_rates)
     #预防同时抽到两配将
     while 1:
         draw_role_num = 0
         ps = MAX_BOXES * [0]
         rs = ran.randoms(draw_num)
         for i, index in enumerate(rs):
             ps[index] = -1 * (i + 1)
             item = self.day_lucky.data.items[index]
             if item[IKEY_TYPE] == IT_ROLE_STR:
                 draw_role_num += 1
         if draw_role_num < 2:
             self.day_lucky.data.ps = ps
             break
         sleep(1)
Пример #8
0
 def _init_res_fate(self, objs):
     """ 初始化命格概率 """
     qrates = {}
     assert len(self.fate_level_by_fid), 'much init fate_level first'
     for o in objs:
         o.init_fate(self.fate_level_by_fid.get(o.id))
         q = o.quality
         rates = qrates.setdefault(q, [])
         rates.append((o.id, o.rate))
     self._fate_rates = dict([(k, RandomRegion(rates))
                              for k, rates in qrates.iteritems()])
Пример #9
0
 def _produce_items(self):
     """ 随机生成抽奖的所有物品并返回抽奖概率 """
     rates, role_rates = self._get_rates()
     res_mgr = self.player._game.res_mgr
     res_daylucky_ids = []
     for (res_id, rate) in role_rates:
         res_daylucky_ids.append(res_id)
     ran = RandomRegion(rates)
     ran_daylucky_ids = ran.randoms(MAX_BOXES-len(role_rates))
     res_daylucky_ids.extend(ran_daylucky_ids)
     items = []
     draw_rates = []
     for index, res_daylucky_id in enumerate(res_daylucky_ids):
         res_daylucky = res_mgr.day_luckys.get(res_daylucky_id)
         rw = self.player._game.reward_mgr.get(res_daylucky.rid)
         res_item = rw.reward(params=self.player.reward_params())
         items.append(res_item[0])
         draw_rate = (index, res_daylucky.lrate)
         draw_rates.append(draw_rate)
         if res_item[0][IKEY_TYPE] == IT_ROLE_STR:
             self.index_rid[index] = res_daylucky.rid
     self.day_lucky.data.items = items
     return draw_rates
Пример #10
0
 def _produce_items(self):
     """ 随机生成抽奖的所有物品并返回抽奖概率 """
     rates, role_rates = self._get_rates()
     res_mgr = self.player._game.res_mgr
     res_daylucky_ids = []
     for (res_id, rate) in role_rates:
         res_daylucky_ids.append(res_id)
     ran = RandomRegion(rates)
     ran_daylucky_ids = ran.randoms(MAX_BOXES - len(role_rates))
     res_daylucky_ids.extend(ran_daylucky_ids)
     items = []
     draw_rates = []
     for index, res_daylucky_id in enumerate(res_daylucky_ids):
         res_daylucky = res_mgr.day_luckys.get(res_daylucky_id)
         rw = self.player._game.reward_mgr.get(res_daylucky.rid)
         res_item = rw.reward(params=self.player.reward_params())
         items.append(res_item[0])
         draw_rate = (index, res_daylucky.lrate)
         draw_rates.append(draw_rate)
         if res_item[0][IKEY_TYPE] == IT_ROLE_STR:
             self.index_rid[index] = res_daylucky.rid
     self.day_lucky.data.items = items
     return draw_rates
Пример #11
0
class RWGroup(RWNode):
    """ 分组 """
    def __init__(self, alist, name):
        super(RWGroup, self).__init__(name)
        self.regions = []
        for index, adict in enumerate(alist):
            name = '%s.%d' % (self.name,
                              index) if self.name is not None else str(index)
            obj = self.new(adict[IKEY_ID], name=name)
            item = ((index, obj), int(adict[IKEY_GROUP]))
            self.regions.append(item)
        self.ran_region = RandomRegion(self.regions)

    def reward(self, params):
        """ 获取奖励 """
        item = self.ran_region.random()[1]
        return item.reward(params)
Пример #12
0
 def _init_res_shop(self, objs):
     """ 神秘商店物品有效时间 """
     from game.base.constant import SHOP_TYPE_ITEM, SHOP_TYPE_FATE
     from game.base.constant import SHOP_TYPE_RARE, SHOP_TYPE_LUCK
     fmt = '%y%m%d'
     luck_rates = []
     rare_rates = []
     for obj in objs:
         if obj.qt == SHOP_TYPE_RARE:
             self.shop_rares[obj.id] = obj
         elif obj.qt == SHOP_TYPE_LUCK:
             luck_rates.append((obj.id, obj.r))
         if obj.r == -1:
             self.shop_items_must[obj.id] = obj
         if obj.start:
             obj.start = mk_time(obj.start, fmt)
         if obj.end:
             obj.end = mk_time(obj.end, fmt)
         self.shop_items[obj.id] = obj
     self._shop_luck = RandomRegion(luck_rates)
     return self.shop_items
Пример #13
0
 def update(self, adict):
     super(ResDeepPos, self).update(adict)
     self.get_pid = RandomRegion(self.pos)
Пример #14
0
def rom(*args):
    """ rom((<count>,<rate>), (1,10), (2,25)) """
    return RandomRegion(args)