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