| | |
| | | def GetFamilyMixServerDay(curFamily): return curFamily.GetExtra1()
|
| | | def SetFamilyMixServerDay(curFamily, value): return curFamily.SetExtra1(value)
|
| | | ## ------------------ 成员 ----------------------
|
| | | def GetMemberFightPower(curMember): return curMember.GetExattr3()
|
| | | def SetMemberFightPower(curMember, fightPower): return curMember.SetExattr3(fightPower)
|
| | | def GetMemberFightPower(curMember): return curMember.GetExattr3() + curMember.GetExattr5() * ChConfig.Def_PerPointValue
|
| | | def SetMemberFightPower(curMember, fightPower):
|
| | | curMember.SetExattr5(fightPower / ChConfig.Def_PerPointValue)
|
| | | curMember.SetExattr3(fightPower % ChConfig.Def_PerPointValue)
|
| | | return
|
| | |
|
| | | def GetMemberJoinTime(curMember): return curMember.GetExattr4()
|
| | | def SetMemberJoinTime(curMember, joinTime): return curMember.SetExattr4(joinTime)
|
| | |
| | | #GameWorld.DebugLog(' 随机假仙盟异常 已存在的随机数大于还需要的随机个数lackFakeCnt=%s,fakeIDList=%s'%(lackFakeCnt, fakeIDList))
|
| | | return []
|
| | | return fakeIDList
|
| | |
|
| | | def GetFamilyNameFakeIndex(familyName):
|
| | | ## 获取仙盟名是否是系统随机出来的假仙盟名
|
| | | # @return: 0-不是, >0 对应的 fakeIndex
|
| | | fakeFamilyNameList = IpyGameDataPY.GetFuncEvalCfg('FakeFamilyName')
|
| | | randomCnt = IpyGameDataPY.GetFuncCfg('FakeFamilyName', 2)
|
| | | for i in xrange(randomCnt):
|
| | | fakeID = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FakeFamilyIndex % i)
|
| | | if not fakeID:
|
| | | continue
|
| | | nameIndex = fakeID - 1
|
| | | if nameIndex >=0 and nameIndex < len(fakeFamilyNameList):
|
| | | fakeName = GameWorld.GbkToCode(fakeFamilyNameList[nameIndex])
|
| | | if familyName == fakeName:
|
| | | return fakeID
|
| | | return 0
|
| | |
|
| | | def SyncFakeFamilyInfo(curPlayer=None):
|
| | | '''通知假仙盟信息'''
|
| | |
| | | #-设置家族成员属性
|
| | | DoPlayerJionFamily(curFamily, curPlayer, IPY_GameServer.fmlLeader)
|
| | | creatFamilyTimes = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerCreatFamilyTimes)
|
| | | # 如果是手动指定仙盟名创建的,判断是否在系统随机的假仙盟里,如果是的话就当做创建系统分配的假仙盟处理
|
| | | if familyName and not fakeIndex:
|
| | | fakeIndex = GetFamilyNameFakeIndex(familyName)
|
| | | GameWorld.DebugLog(" 玩家手动输入创建仙盟名与系统随机的假仙盟名相同,默认当做创建假仙盟!fakeIndexID=%s" % (fakeIndex))
|
| | | #扣道具(前N个战盟并且假编号在随机编号里不要钱)
|
| | | if fakeIndex and fakeIndex in fakeIndexList:
|
| | | PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FakeFamilyIndex % fakeIndexList.index(fakeIndex), 0)
|
| | |
| | | PyDataManager.GetFamilyStoreItemManager().SyncFamilyStoreItem(jionPlayer, curFamily.GetID())
|
| | | #仙盟拍品
|
| | | AuctionHouse.Sync_FamilyAuctionItemInfo(jionPlayer, curFamily.GetID())
|
| | | SetMemberFightPower(familyMember, jionPlayer.GetFightPower())
|
| | | SetMemberFightPower(familyMember, PlayerControl.GetFightPower(jionPlayer))
|
| | | AddFamilyIDToFightPowerChangeList(curFamily.GetID())
|
| | |
|
| | | #通知仙盟盛宴题目
|
| | |
| | | addFamilyMoney, curFamily.GetFamilyActiveValue(), addFamilyActiveValue)
|
| | |
|
| | | #通知客户端
|
| | | #curFamily.Broadcast_FamilyChange()
|
| | | curPlayer.Sync_FamilyInfo()
|
| | | if addFamilyHornor:
|
| | | curFamily.Broadcast_FamilyChange()
|
| | | else:
|
| | | curPlayer.Sync_FamilyInfo()
|
| | |
|
| | | #金钱变更时才通知
|
| | | if addFamilyMoney != 0:
|
| | |
| | |
|
| | | if not PlayerControl.GetIsTJG(curPlayer):
|
| | | #上线重置离线时间为0, 非脱机挂才设置
|
| | | curMember.SetExattr2(0)
|
| | | curMember.SetExattr2(0) # 在线0,脱机1,>1离线时间
|
| | | curPlayer.Sync_FamilyInfo()
|
| | | else:
|
| | | curMember.SetExattr2(1) # 脱机1
|
| | |
|
| | | curPlayer.MapServer_FamilyRefresh()
|
| | | curMember = GetPlayerFamilyMember(curPlayer)
|
| | |
| | | GameWorld.Log("GetLeaderOfflineTime->FindMember, None;%s" % leaderID)
|
| | | return 0
|
| | | offLineTimeNum = curMember.GetExattr2()
|
| | | if not offLineTimeNum:
|
| | | if not offLineTimeNum or offLineTimeNum == 1:
|
| | | return 0
|
| | | offLineTime = GameWorld.ChangeTimeNumToStr(offLineTimeNum)
|
| | | return GameWorld.GetPastHour(offLineTime)
|
| | |
| | | for i in range(0, family.GetCount()):
|
| | | member = family.GetAt(i)
|
| | | offLineTimeNum = member.GetExattr2()
|
| | | if not offLineTimeNum:
|
| | | if not offLineTimeNum or offLineTimeNum == 1:
|
| | | #有人在线直接返回
|
| | | return 0
|
| | | if not offLineTime:
|
| | |
| | | elif toMember2.GetExattr1() < member.GetExattr1():
|
| | | toMember2 = member
|
| | |
|
| | | offLineHour = GameWorld.GetPastHour(GameWorld.ChangeTimeNumToStr(member.GetExattr2())) if member.GetExattr2() else 0
|
| | | offLineHour = GameWorld.GetPastHour(GameWorld.ChangeTimeNumToStr(member.GetExattr2())) if member.GetExattr2() > 1 else 0
|
| | | #GameWorld.DebugLog('memberID=%s 离线%s小时,历史贡献度%s'%(member.GetPlayerID(), offLineHour, member.GetExattr1()))
|
| | | if offLineHour < 48:
|
| | | if not toMember1:
|
| | |
| | | requestPlayerName = curPlayer.GetName()
|
| | | playerLV = curPlayer.GetLV()
|
| | | #玩家Id, 等级,职业,战斗力
|
| | | actionDataList = [curPlayer.GetID(), playerLV, curPlayer.GetJob(), curPlayer.GetFightPower()]
|
| | | fightPower = PlayerControl.GetFightPower(curPlayer)
|
| | | actionDataList = [curPlayer.GetID(), playerLV, curPlayer.GetJob(), fightPower % ChConfig.Def_PerPointValue, fightPower / ChConfig.Def_PerPointValue]
|
| | | allFamilyActionManager = GameWorld.GetFamilyActionManager()
|
| | | familyManager = GameWorld.GetFamilyManager()
|
| | | indexList = range(familyManager.GetCount())
|