コード例 #1
0
ファイル: server.py プロジェクト: zhifuliu/dianjing
def start_game(request):
    req = request._proto

    session = request._game_session
    account_id = session.account_id
    server_id = req.server_id

    if not Server.objects.filter(id=server_id).exists():
        raise GameException(ConfigErrorMessage.get_error_id("BAD_MESSAGE"))

    ip = request.META.get("REMOTE_ADDR")
    if not ip:
        ip = ""

    account_login_signal.send(
        sender=None,
        account_id=account_id,
        ip=ip,
        to_server_id=server_id,
    )

    response = StartGameResponse()
    response.ret = 0

    session.server_id = server_id

    try:
        char = Character.objects.get(account_id=account_id,
                                     server_id=server_id)
    except Character.DoesNotExist:
        response.next = OPT_CREATE_CLUB
        response.session = session.serialize()
        return ProtobufResponse(response)

    char_id = char.id
    session.char_id = char_id

    game_start_signal.send(
        sender=None,
        server_id=server_id,
        char_id=char_id,
    )

    response.next = OPT_OK
    response.session = session.serialize()

    print
    print "NEW SESSION (base64 encoded)"
    print base64.b64encode(response.session)
    print

    return ProtobufResponse(response)
コード例 #2
0
def get_leaderboard(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    info = ClubLeaderBoard(server_id, char_id).get_info()

    response = ClubLeaderBoardResponse()
    response.ret = 0
    response.next_update_at = info['next_update_at']
    response.my_level_rank = info['my_level_rank']
    response.my_power_rank = info['my_power_rank']

    for _id, level, power in info['level']:
        obj = Club(server_id, _id, load_staffs=False)

        response_level = response.clubs_by_level.add()
        response_level.MergeFrom(obj.make_protomsg())
        response_level.level = level
        response_level.power = power

    for _id, level, power in info['power']:
        obj = Club(server_id, _id, load_staffs=False)

        response_power = response.clubs_by_power.add()
        response_power.MergeFrom(obj.make_protomsg())
        response_power.level = level
        response_power.power = power

    return ProtobufResponse(response)
コード例 #3
0
ファイル: server.py プロジェクト: zhifuliu/dianjing
def get_server_list(request):
    account_id = request._game_session.account_id

    servers = Server.opened_servers()
    response = GetServerListResponse()
    response.ret = 0

    recommend_id = 0
    max_id = 0

    for server in servers:
        s = response.servers.add()
        s.id = server.id
        s.name = server.name
        s.status = server.status
        s.is_new = server.is_new

        if server.recommend:
            recommend_id = server.id

        if server.id > max_id:
            max_id = server.id

    if not recommend_id:
        recommend_id = max_id

    response.recommend_id = recommend_id
    recent_server_ids = AccountLoginLog.get_account_recent_server_ids(
        account_id)
    response.recent_ids.extend(recent_server_ids)
    return ProtobufResponse(response)
コード例 #4
0
ファイル: arena.py プロジェクト: zhifuliu/dianjing
def refresh(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    Arena(server_id, char_id).refresh()

    response = ArenaRefreshResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #5
0
ファイル: arena.py プロジェクト: zhifuliu/dianjing
def buy_times(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    Arena(server_id, char_id).buy_times()

    response = ArenaBuyTimesResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #6
0
def reset(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    TalentManager(server_id, char_id).reset()
    response = TalentResetTalentResponse()
    response.ret = 0

    return ProtobufResponse(response)
コード例 #7
0
def level_growing_join(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    ActivityLevelGrowing(server_id, char_id).join()

    response = ActivityLevelGrowingJoinResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #8
0
ファイル: energy.py プロジェクト: zhifuliu/dianjing
def buy(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    Energy(server_id, char_id).buy()

    response = EnergyBuyResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #9
0
def reset(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    t = Tower(server_id, char_id)
    t.reset()

    response = TowerResetResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #10
0
def sweep(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    t = Tower(server_id, char_id)
    t.sweep()

    response = TowerSweepResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #11
0
def sync_level(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    c = Championship(server_id, char_id)
    c.sync_level()

    response = ChampionLevelSyncResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #12
0
def special_equipment_speedup(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    s = SpecialEquipmentGenerator(server_id, char_id)
    s.speedup()

    response = SpecialEquipmentGenerateSpeedUpResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #13
0
def harass_buy_times(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    u = Union(server_id, char_id)
    u.harass_buy_times()

    response = UnionHarassBuyTimesResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #14
0
def quit(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    u = Union(server_id, char_id)
    u.quit()

    response = UnionQuitResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #15
0
def buy_plunder_times(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    p = Plunder(server_id, char_id)
    p.buy_plunder_times()

    response = PlunderBuyTimesResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #16
0
def apply_in(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    c = Championship(server_id, char_id)
    c.apply_in()

    response = ChampionApplyResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #17
0
def search(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    p = Plunder(server_id, char_id)
    p.search()

    response = PlunderSearchResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #18
0
def harass_query_union(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    u = Union(server_id, char_id)

    # TODO 这里是消息把 my_union 定义成 required 的了。
    if not u.get_joined_union_id():
        response = UnionHarassQueryResponse()
        response.ret = ConfigErrorMessage.get_error_id("INVALID_OPERATE")

        response.my_union.rank = 0
        response.my_union.id = ""
        response.my_union.name = ""
        response.my_union.explore_point = 0

        return ProtobufResponse(response)

    unions, self_union = u.query_by_explore_point_rank()

    response = UnionHarassQueryResponse()
    response.ret = 0

    if not self_union:
        response.my_union.rank = 0
        response.my_union.id = u.union_doc['_id']
        response.my_union.name = u.union_doc['name']
        response.my_union.explore_point = 0
    else:
        response.my_union.rank = self_union.rank
        response.my_union.id = self_union.id
        response.my_union.name = self_union.name
        response.my_union.explore_point = self_union.explore_point

    for u in unions:
        res_union = response.union.add()
        res_union.rank = u.rank
        res_union.id = u.id
        res_union.name = u.name
        res_union.explore_point = u.explore_point

    return ProtobufResponse(response)
コード例 #19
0
ファイル: formation.py プロジェクト: zhifuliu/dianjing
def use(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    fid = request._proto.id

    Formation(server_id, char_id).use_formation(fid)

    response = FormationUseResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #20
0
def skill_level_up(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    skill_id = request._proto.skill_id
    u = Union(server_id, char_id)
    u.skill_level_up(skill_id)

    response = UnionSkillLevelupResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #21
0
def buy_times(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    category_id = request._proto.id

    Dungeon(server_id, char_id).buy_times(category_id)

    response = DungeonBuyTimesResponse()
    response.ret = 0
    return ProtobufResponse(response)
コード例 #22
0
def purchase_daily_get_reward(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    p = ActivityPurchaseDaily(server_id, char_id)
    rc = p.get_reward()

    response = ActivityPurchaseDailyGetRewardResponse()
    response.ret = 0
    response.drop.MergeFrom(rc.make_protomsg())
    return ProtobufResponse(response)
コード例 #23
0
def get_station_product(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    p = Plunder(server_id, char_id)
    drop = p.get_station_product()

    response = BaseStationGetProductResponse()
    response.ret = 0
    response.drop.MergeFrom(drop.make_protomsg())
    return ProtobufResponse(response)
コード例 #24
0
ファイル: welfare.py プロジェクト: zhifuliu/dianjing
def signin(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    w = Welfare(server_id, char_id)
    drop = w.signin()

    response = WelfareSignInResponse()
    response.ret = 0
    response.drop.MergeFrom(drop.make_protomsg())
    return ProtobufResponse(response)
コード例 #25
0
def level_up(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    talent_id = request._proto.talent_id

    TalentManager(server_id, char_id).level_up(talent_id)
    response = TalentLevelUpResponse()
    response.ret = 0

    return ProtobufResponse(response)
コード例 #26
0
def newplayer_dailybuy(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    ac = ActivityNewPlayer(server_id, char_id)
    rc = ac.daily_buy()

    response = ActivityNewPlayerDailyBuyResponse()
    response.ret = 0
    response.drop.MergeFrom(rc.make_protomsg())
    return ProtobufResponse(response)
コード例 #27
0
def online_time_get_reward(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    at = ActivityOnlineTime(server_id, char_id)
    rc = at.get_reward()

    response = ActivityOnlineTimeGetRewardResponse()
    response.ret = 0
    response.drop.MergeFrom(rc.make_protomsg())
    return ProtobufResponse(response)
コード例 #28
0
def special_equipment_get(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    s = SpecialEquipmentGenerator(server_id, char_id)
    equip = s.get_result()

    response = SpecialEquipmentGetResponse()
    response.ret = 0
    response.equipment.MergeFrom(equip.make_protomsg())
    return ProtobufResponse(response)
コード例 #29
0
ファイル: welfare.py プロジェクト: zhifuliu/dianjing
def energy_reward_get(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    w = Welfare(server_id, char_id)
    drop = w.energy_reward_get()

    response = WelfareEnergyRewardGetResponse()
    response.ret = 0
    response.drop.MergeFrom(drop.make_protomsg())
    return ProtobufResponse(response)
コード例 #30
0
def sweep_finish(request):
    server_id = request._game_session.server_id
    char_id = request._game_session.char_id

    t = Tower(server_id, char_id)
    resource_classified = t.sweep_finish()

    response = TowerSweepFinishResponse()
    response.ret = 0
    response.drop.MergeFrom(resource_classified.make_protomsg())
    return ProtobufResponse(response)