def pushFightFailMsg(self):
     '''推送战后失败消息'''
     msglist = self.fightfailmsg
     try:
         for msg in msglist:
             if len(msg) == 5:
                 recCharacterId, sysOpeType, tishiStr, contentStr, caozuoStr = msg
                 pushCorpsApplication(recCharacterId, sysOpeType, tishiStr,
                                      contentStr, caozuoStr)
             else:
                 recCharacterId, sysOpeType, tishiStr, contentStr, caozuoStr, kw = msg
                 pushCorpsApplication(recCharacterId,
                                      sysOpeType,
                                      tishiStr,
                                      contentStr,
                                      caozuoStr,
                                      roleId=kw.get('roleId', 0),
                                      roleName=kw.get('roleName', u''),
                                      icon=kw.get(
                                          'icon',
                                          0,
                                      ),
                                      type=kw.get('type', 0),
                                      pos=kw.get('pos', 0),
                                      curPage=kw.get('curPage', 0),
                                      toposition=kw.get('toposition', 0))
     finally:
         self.fightfailmsg = []
 def pushFightFailMsg(self):
     """推送战后失败消息"""
     msglist = self.fightfailmsg
     try:
         for msg in msglist:
             if len(msg) == 5:
                 recCharacterId, sysOpeType, tishiStr, contentStr, caozuoStr = msg
                 pushCorpsApplication(recCharacterId, sysOpeType, tishiStr, contentStr, caozuoStr)
             else:
                 recCharacterId, sysOpeType, tishiStr, contentStr, caozuoStr, kw = msg
                 pushCorpsApplication(
                     recCharacterId,
                     sysOpeType,
                     tishiStr,
                     contentStr,
                     caozuoStr,
                     roleId=kw.get("roleId", 0),
                     roleName=kw.get("roleName", u""),
                     icon=kw.get("icon", 0),
                     type=kw.get("type", 0),
                     pos=kw.get("pos", 0),
                     curPage=kw.get("curPage", 0),
                     toposition=kw.get("toposition", 0),
                 )
     finally:
         self.fightfailmsg = []
 def PromptHP(self):
     '''血量提示'''
     if self._hp/(1.0*self.getMaxHp())<0.5:
         tag = 0
         tishiStr = Lg().g(263)
         contentStr = Lg().g(264)
         for itemId in HPDRUG:
             package = self._owner.pack._package._PropsPagePack
             cnt = package.countItemTemplateId(itemId)
             if cnt!=0:
                 caozuoStr = Lg().g(265)
                 sysOpeType = 1
                 tag = 1
                 items = package.getItemTemplateIdPositions(itemId)
                 position = items[0].get('position',0)
                 _item = package.getItemByPosition(position)
                 icon = _item.baseInfo.getItemTemplateInfo()['icon']
                 itype = _item.baseInfo.getItemTemplateInfo()['type']
                 curPage,pos = package.getVirtualPostion(position)
                 break
         if not tag:
             icon = 0
             itype = 0
             caozuoStr = Lg().g(266)
             pos = 0
             curPage = 0
             sysOpeType = 7
         pushCorpsApplication(self._owner.baseInfo.id, sysOpeType, tishiStr,
                               contentStr, caozuoStr, pos = pos,curPage = curPage,
                               icon = icon, type = itype)
 def putNewItemInPackage(self, item, position=-2, state=1, turned=0):
     '''放置一个新的物品到包裹栏中
     @param item: Item object 物品实例
     @param position: int 物品的位置
     @param packageType: int 包裹的类型
     @param state: int 是否及时的推送获取物品消息
     @param turned: int 是否是反牌子获取的
     '''
     packType = 1
     if item.baseInfo.getItemPageType() == 4:
         packType = 2
     package = self._package.getPackageByType(packType)
     if position == -2:
         position = package.findSparePositionForItem()
     if position == -1:
         return 1
     nowItem = package.getItemByPosition(position)
     if nowItem:  #当所在的位置存在物品时
         return 1
     spacecnt = package.findSparePositionNum()
     if spacecnt <= 5:
         recCharacterId = self._owner.baseInfo.id
         tishiStr = Lg().g(377)
         contentStr = Lg().g(378)
         caozuoStr = Lg().g(379)
         pushCorpsApplication(recCharacterId, 7, tishiStr, contentStr,
                              caozuoStr)
         _msg = Lg().g(380)
         pushPromptedMessage(_msg, [self._owner.getDynamicId()])
     msg = Lg().g(381) % (item.baseInfo.getRichName(), item.pack.getStack())
     maxstack = item.baseInfo.getItemTemplateInfo().get('maxstack', 1)
     nowstack = item.pack.getStack()
     templateId = item.baseInfo.getItemTemplateId()
     if self._owner.pet.collectNotice(templateId, nowstack):
         if state:
             pushPromptedMessage(msg, [self._owner.getDynamicId()])
         else:
             self._owner.msgbox.putFightMsg(msg)
         return 2
     #先合并能合并的
     for _item in package.getItems():
         if _item['itemComponent'].baseInfo.getItemTemplateId()==templateId \
                                 and _item['itemComponent'].pack.getStack()<=maxstack:
             if _item['itemComponent'].pack.getStack(
             ) + nowstack <= maxstack:
                 _item['itemComponent'].pack.updateStack(
                     _item['itemComponent'].pack.getStack() + nowstack)
                 nowstack = 0
                 break
     if nowstack:
         if item.baseInfo.getId() == 0:
             item.InsertItemIntoDB(characterId=self._owner.baseInfo.id)
         package.putItemInstanceInPackDB(item, position,
                                         self._owner.baseInfo.getId())
     if state:
         pushPromptedMessage(msg, [self._owner.getDynamicId()])
     else:
         self._owner.msgbox.putFightMsg(msg)
     return 2
 def putNewItemInPackage(self,item,position=-2,state = 1,turned = 0):
     '''放置一个新的物品到包裹栏中
     @param item: Item object 物品实例
     @param position: int 物品的位置
     @param packageType: int 包裹的类型
     @param state: int 是否及时的推送获取物品消息
     @param turned: int 是否是反牌子获取的
     '''
     packType = 1
     if item.baseInfo.getItemPageType()==4:
         packType = 2
     package = self._package.getPackageByType(packType)
     if position ==-2:
         position = package.findSparePositionForItem()
     if position==-1:
         return 1
     nowItem = package.getItemByPosition(position)
     if nowItem:#当所在的位置存在物品时
         return 1
     spacecnt = package.findSparePositionNum()
     if spacecnt<=5 :
         recCharacterId = self._owner.baseInfo.id
         tishiStr = Lg().g(377)
         contentStr = Lg().g(378)
         caozuoStr = Lg().g(379)
         pushCorpsApplication(recCharacterId, 7, tishiStr, contentStr, caozuoStr)
         _msg = Lg().g(380)
         pushPromptedMessage(_msg, [self._owner.getDynamicId()])
     msg = Lg().g(381)%(item.baseInfo.getRichName(),item.pack.getStack())
     maxstack = item.baseInfo.getItemTemplateInfo().get('maxstack',1)
     nowstack = item.pack.getStack()
     templateId = item.baseInfo.getItemTemplateId()
     if self._owner.pet.collectNotice(templateId,nowstack):
         if state:
             pushPromptedMessage(msg, [self._owner.getDynamicId()])
         else:
             self._owner.msgbox.putFightMsg(msg)
         return 2
     #先合并能合并的
     for _item in package.getItems():
         if _item['itemComponent'].baseInfo.getItemTemplateId()==templateId \
                                 and _item['itemComponent'].pack.getStack()<=maxstack:
             if _item['itemComponent'].pack.getStack()+nowstack<= maxstack:
                 _item['itemComponent'].pack.updateStack(_item['itemComponent'].pack.getStack()+nowstack)
                 nowstack = 0
                 break
     if nowstack:
         if item.baseInfo.getId()==0:
             item.InsertItemIntoDB(characterId = self._owner.baseInfo.id)
         package.putItemInstanceInPackDB(item, position, self._owner.baseInfo.getId())
     if state:
         pushPromptedMessage(msg, [self._owner.getDynamicId()])
     else:
         self._owner.msgbox.putFightMsg(msg)
     return 2
 def startMeditation(self,state=0):
     '''开始冥想'''
     if self.guajitimer:
         msg = u"你正处于冥想"
         return {'result':False,'message':msg}
     else:
         self._owner.baseInfo.setStatus(3)
         self.meditationtime = datetime.datetime.now()
         if self._owner.baseInfo._viptype==0:
             goaltime = 32400
         else:
             goaltime = 86400
         guaJiInfo = {'exp':0,'time':goaltime}
         self.guajitimer = reactor.callLater(15,self.doMeditationBound,state)
         pushCorpsApplication(self._owner.baseInfo.id, 8,'','','',guaJiInfo=guaJiInfo)
         return {'result':True,'message':Lg().g(224)}
 def AfterGetNewEqupment(self,item):
     '''获取新的装备奖励后的处理'''
     toposition = item.baseInfo.getItemBodyType()
     if toposition==-1:
         return
     recCharacterId = self._owner.baseInfo.id
     sysOpeType = 1
     tishiStr = Lg().g(450)
     contentStr = Lg().g(451)
     caozuoStr = Lg().g(452)
     icon = item.baseInfo.getItemTemplateInfo().get('icon',0)
     itype = item.baseInfo.getItemTemplateInfo().get('type',0)
     package = self._owner.pack._package.getPropsPagePack()
     realpos = package.getPositionByItemId(item.baseInfo.id)
     curPage = realpos/30+1
     pos = realpos%30
     pushCorpsApplication(recCharacterId, sysOpeType, tishiStr,
                           contentStr, caozuoStr, icon = icon,
                           type = itype, pos = pos, curPage= curPage,
                           toposition = toposition)