示例#1
0
/*virtual*/ void WBCompEldWallet::HandleEvent(const WBEvent& Event) {
  XTRACE_FUNCTION;

  Super::HandleEvent(Event);

  STATIC_HASHED_STRING(AddMoney);
  STATIC_HASHED_STRING(RemoveMoney);
  STATIC_HASHED_STRING(OnInitialized);
  STATIC_HASHED_STRING(PushPersistence);
  STATIC_HASHED_STRING(PullPersistence);

  const HashedString EventName = Event.GetEventName();
  if (EventName == sOnInitialized) {
    PublishToHUD();
  } else if (EventName == sAddMoney) {
    STATIC_HASHED_STRING(Money);
    const uint Money = Event.GetInt(sMoney);

    STATIC_HASHED_STRING(ShowPickupScreen);
    const bool ShowPickupScreen = Event.GetBool(sShowPickupScreen);

    AddMoney(Money, ShowPickupScreen);
  } else if (EventName == sRemoveMoney) {
    STATIC_HASHED_STRING(Money);
    const uint Money = Event.GetInt(sMoney);
    RemoveMoney(Money);
  } else if (EventName == sPushPersistence) {
    PushPersistence();
  } else if (EventName == sPullPersistence) {
    PullPersistence();
  }
}
示例#2
0
文件: cpp1.cpp 项目: vim-scripts/vgdb
int main()
{
    MONEY m(3.1415);
    int i;
    for (i=0; i<5; ++i) {
        SBOString s(m);
        const wchar_t *str = s.GetBuffer();
        double d = m.ToDouble();
        AddMoney(&m, 1.14);
        printf("%.2lf, %ls\n", d, str);
        ShowStr(s);
    }
    return 0;
}
示例#3
0
void CPlayerBaseData::onGetReward( uint8_t nIdx ,uint16_t nRewardID, uint16_t nGameType ,const char* nRoomName  )
{
	auto Reward = CRewardConfig::getInstance()->getRewardByID(nRewardID) ;
	if ( Reward == nullptr )
	{
		LOGFMTE("uid = %d get reward is null reward id = %d",GetPlayer()->GetUserUID(),nRewardID) ;
		return  ;
	}
	LOGFMTD("uid = %d get reward id = %d",GetPlayer()->GetUserUID(),nRewardID) ;

	if ( Reward->nCupCnt )
	{
		m_stBaseData.nCupCnt += Reward->nCupCnt ;
		m_bMoneyDataDirty = true ;
	}

	if ( Reward->nCoin )
	{
		 AddMoney(Reward->nCoin) ;
	}

	if ( Reward->nDiamond )
	{
		AddMoney(Reward->nDiamond,true) ;
	}

	Json::Value jValue ;
	jValue["gameType"] = nGameType ;
	jValue["roomName"] = nRoomName ;
	jValue["rankIdx"] = nIdx ;
	jValue["addCoin"] = Reward->nCoin ;
	jValue["cup"] = Reward->nCupCnt ;
	jValue["diamomd"] = Reward->nDiamond ;
	Json::StyledWriter writers ;
	std::string strContent = writers.write(jValue);
	CPlayerMailComponent::PostMailToPlayer(eMail_WinMatch,strContent.c_str(),strContent.size(),GetPlayer()->GetUserUID()) ;
}
示例#4
0
void CPlayerBaseData::onBeInviteBy(uint32_t nInviteUID )
{
	if ( m_stBaseData.nInviteUID )
	{
		LOGFMTD("can not do twice be invited ") ;
		return ;
	}
	m_stBaseData.nInviteUID = nInviteUID ;
	m_bPlayerInfoDataDirty = true ;

	// give self prize ;
	AddMoney(COIN_BE_INVITED) ;

	// show dlg ;
	stMsgDlgNotice msg;
	msg.nNoticeType = eNotice_BeInvite ;
	Json::Value jNotice ;
	jNotice["targetUID"] = nInviteUID ;
	jNotice["addCoin"] = COIN_BE_INVITED ;
	Json::StyledWriter writer ;
	std::string strNotice = writer.write(jNotice) ;
	msg.nJsonLen = strNotice.size();
	CAutoBuffer msgBuffer(sizeof(msg) + msg.nJsonLen );
	msgBuffer.addContent(&msg,sizeof(msg)) ;
	msgBuffer.addContent(strNotice.c_str(),msg.nJsonLen) ;
	SendMsg((stMsg*)msgBuffer.getBufferPtr(),msgBuffer.getContentSize()) ;
	LOGFMTD("uid = %d be invite give prize coin = %d",GetPlayer()->GetUserUID(),COIN_BE_INVITED) ;

	// give prize to inviter ;
	auto player = CGameServerApp::SharedGameServerApp()->GetPlayerMgr()->GetPlayerByUserUID(nInviteUID) ;
	if ( player && player->IsState(CPlayer::ePlayerState_Online))
	{
		player->GetBaseData()->addInvitePrize(COIN_INVITE_PRIZE);

		//stMsgDlgNotice msg;
		//msg.nNoticeType = eNotice_InvitePrize ;
		//Json::StyledWriter writer ;
		//std::string strNotice = writer.write(jNotice) ;
		//msg.nJsonLen = strNotice.size();
		//CAutoBuffer msgBuffer(sizeof(msg) + msg.nJsonLen );
		//msgBuffer.addContent(&msg,sizeof(msg)) ;
		//msgBuffer.addContent(strNotice.c_str(),msg.nJsonLen) ;
		//player->GetBaseData()->SendMsg((stMsg*)msgBuffer.getBufferPtr(),msgBuffer.getContentSize()) ;
		LOGFMTD("invite id = %d online just give prize ",nInviteUID) ;
	}
	else
	{
		Json::Value jconArg;
		jconArg["comment"] = "invitePrize" ;
		jconArg["addCoin"] = COIN_INVITE_PRIZE ;
		CPlayerMailComponent::PostOfflineEvent(CPlayerMailComponent::Event_AddCoin,jconArg,nInviteUID) ;
		LOGFMTD("invite id = %d not online just post a mail",nInviteUID) ;
	}

	// send a mail to inviter 
	jNotice["targetUID"] = GetPlayer()->GetUserUID() ;
	jNotice["addCoin"] = COIN_INVITE_PRIZE ;
	Json::StyledWriter writerInfo ;
	strNotice = writerInfo.write(jNotice) ;
	CPlayerMailComponent::PostMailToPlayer(eMail_InvitePrize,strNotice.c_str(),strNotice.size(),nInviteUID);

	// send push notification ;
	CSendPushNotification::getInstance()->reset();
	CSendPushNotification::getInstance()->addTarget(nInviteUID) ;
	CSendPushNotification::getInstance()->setContent(CServerStringTable::getInstance()->getStringByID(5),1) ;
	CSendPushNotification::getInstance()->postApns(CGameServerApp::SharedGameServerApp()->getAsynReqQueue(),false,"invite") ;
}
示例#5
0
bool CPlayerBaseData::OnMessage( stMsg* pMsg , eMsgPort eSenderPort )
{
	if ( IPlayerComponent::OnMessage(pMsg,eSenderPort) )
	{
		return true ;
	}

	switch( pMsg->usMsgType )
	{
	case MSG_PLAYER_USE_ENCRYPT_NUMBER:
		{
			stMsgPlayerUseEncryptNumberRet msgBack ;
			stMsgPlayerUseEncryptNumber* pRet = (stMsgPlayerUseEncryptNumber*)pMsg ;
			if ( 1 || CEncryptNumber::isNumberValid(pRet->nNumber) )
			{
				stMsgVerifyEncryptNumber msgVerifyEncrypt ;
				msgVerifyEncrypt.nNumber = pRet->nNumber ;
				msgVerifyEncrypt.nUserUID = GetPlayer()->GetUserUID() ;
				SendMsg(&msgVerifyEncrypt,sizeof(msgVerifyEncrypt)) ;
				break;
			}

			msgBack.nRet = 1 ;
			msgBack.nAddCoin = 0 ;
			msgBack.nFinalcoin = getCoin();
			SendMsg(&msgBack,sizeof(msgBack)) ;
			LOGFMTD("invalid number uid = %u",GetPlayer()->GetUserUID());
		}
		break ;
	case MSG_VERIFY_ENCRYPT_NUMBER:
		{
			stMsgPlayerUseEncryptNumberRet msgBack ;
			stMsgVerifyEncryptNumberRet* pRet = (stMsgVerifyEncryptNumberRet*)pMsg ;
			if ( pRet->nRet )
			{
				stMsgPlayerUseEncryptNumberRet msgBack ;
				msgBack.nRet = pRet->nRet ;
				msgBack.nFinalcoin = getCoin();
				SendMsg(&msgBack,sizeof(msgBack)) ;
				break;
			}
			msgBack.nRet = 0 ;
			msgBack.nAddCoin = pRet->nAddCoin ;
			msgBack.nCoinType = pRet->nCoinType ;
			AddMoney(pRet->nAddCoin,pRet->nCoinType == 0 ) ;
			msgBack.nFinalcoin = GetAllCoin();
			msgBack.nDiamond = GetAllDiamoned() ;
			SendMsg(&msgBack,sizeof(msgBack)) ;
			LOGFMTD("uid = %u add coin via encrypt number" , GetPlayer()->GetUserUID());
		}
		break;
	case MSG_REQ_TOTAL_GAME_OFFSET:
		{
			stMsgReqRobotTotalGameOffsetRet msgBack ;
			msgBack.nTotalGameOffset = m_stBaseData.nTotalGameCoinOffset ;
			SendMsg(&msgBack,sizeof(msgBack)) ;
			LOGFMTD("robot uid = %u req total offset = %d",GetPlayer()->GetUserUID(),msgBack.nTotalGameOffset) ;
 		}
		break;
	case MSG_TELL_PLAYER_TYPE:
		{
			stMsgTellPlayerType* pRet = (stMsgTellPlayerType*)pMsg ;
			m_ePlayerType = (ePlayerType)pRet->nPlayerType ;
			LOGFMTD("uid = %u , tell player type = %u",GetPlayer()->GetUserUID(),m_ePlayerType);
		}
		break;
	case MSG_GET_VIP_CARD_GIFT:
		{
			stMsgGetVipcardGift* pRet = (stMsgGetVipcardGift*)pMsg ;
			stMsgGetVipcardGiftRet msgBack ;
			msgBack.nVipCardType = pRet->nVipCardType ;
			msgBack.nAddCoin = 0 ;

			if ( m_stBaseData.nCardType != pRet->nVipCardType )
			{
				msgBack.nRet = 1 ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
				LOGFMTD("player uid = %d get vip card coin ret = %d",GetPlayer()->GetUserUID(),msgBack.nRet) ;
				break; 
			}

			time_t tNow = time(nullptr) ;
			if ( m_stBaseData.nCardEndTime < tNow )
			{
				msgBack.nRet = 2 ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
				LOGFMTD("player uid = %d get vip card coin ret = %d",GetPlayer()->GetUserUID(),msgBack.nRet) ;
				break; 
			}

			struct tm pTempNow,pLastTake ;
			pTempNow = *localtime(&tNow) ;
			time_t nLastTake = m_stBaseData.tLastTakeCardGiftTime ;
			pLastTake = *localtime(&nLastTake) ;
			if ( pTempNow.tm_year == pLastTake.tm_year && pTempNow.tm_mon == pLastTake.tm_mon && pTempNow.tm_yday == pLastTake.tm_yday )
			{
				msgBack.nRet = 3 ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
				LOGFMTD("player uid = %d get vip card coin ret = %d",GetPlayer()->GetUserUID(),msgBack.nRet) ;
				break; 
			}

			msgBack.nRet = 0 ;
			msgBack.nAddCoin = COIN_FOR_VIP_CARD ;
			AddMoney(COIN_FOR_VIP_CARD);
			m_stBaseData.tLastTakeCardGiftTime = tNow ;
			SendMsg(&msgBack,sizeof(msgBack)) ;
			m_bCommonLogicDataDirty = true ;
			LOGFMTD("player uid = %d get vip card coin ret = %d",GetPlayer()->GetUserUID(),msgBack.nRet) ;
		}
		break;
	case MSG_PLAYER_CHECK_INVITER:
		{
			stMsgCheckInviterRet msgBack ;
			stMsgCheckInviter* pRet = (stMsgCheckInviter*)pMsg ;
			msgBack.nInviterUID = pRet->nInviterUID ;

			if ( m_stBaseData.nUserUID == pRet->nInviterUID )
			{
				msgBack.nRet = 1 ;
				LOGFMTE("can not invite self , uid = %d",GetPlayer()->GetUserUID()) ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
				break; 
			}

			if ( m_stBaseData.nInviteUID )
			{
				msgBack.nRet = 2 ;
				LOGFMTD("you already have invite = %d , uid = %d",m_stBaseData.nInviteUID,GetPlayer()->GetUserUID()) ;
				SendMsg(&msgBack,sizeof(msgBack)) ; 
				break; 
			}

			auto tPlayer = CGameServerApp::SharedGameServerApp()->GetPlayerMgr()->GetPlayerByUserUID(pRet->nInviterUID);
			if ( tPlayer )
			{
				LOGFMTD("do invite = %d ,player = %d",pRet->nInviterUID,GetPlayer()->GetUserUID()) ;
				onBeInviteBy(pRet->nInviterUID) ;
				msgBack.nRet = 0 ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
			}
			else
			{
				stMsgDBCheckInvite msgCheck ;
				msgCheck.nInviteUserUID = pRet->nInviterUID ;
				SendMsg(&msgCheck,sizeof(msgCheck)) ;
				LOGFMTD("invite = %d not online, so ask db i am uid = %d",pRet->nInviterUID,GetPlayer()->GetUserUID()) ;
			}
		}
		break;
	case MSG_DB_CHECK_INVITER:
		{
			stMsgCheckInviterRet msgBack ;
			stMsgDBCheckInviteRet* pRet = (stMsgDBCheckInviteRet*)pMsg ;
			msgBack.nInviterUID = pRet->nInviteUseUID ;
			if ( pRet->nRet )
			{
				msgBack.nRet = 1 ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
			}
			else
			{
				onBeInviteBy(pRet->nInviteUseUID) ;
				msgBack.nRet = 0 ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
			}
		}
		break;
	case MSG_REQUEST_CLIENT_IP:
		{
			stMsgRequestClientIpRet* pRet = (stMsgRequestClientIpRet*)pMsg ;
			if ( pRet->nRet == 0 )
			{
				m_strCurIP = pRet->vIP ;
				LOGFMTD("get client ip = %s session id = %d",m_strCurIP.c_str(),GetPlayer()->GetSessionID()) ;
			}
			else
			{
				LOGFMTE("cant not request client ip , uid = %d",GetPlayer()->GetUserUID()) ;
			}
		}
		break;
	case MSG_SHOP_BUY_ITEM_ORDER:
		{
			stMsgPlayerShopBuyItemOrder* pRet = (stMsgPlayerShopBuyItemOrder*)pMsg ;
			stMsgPlayerShopBuyItemOrderRet msgBack ;
			msgBack.nChannel = pRet->nChannel ;
			msgBack.nShopItemID = pRet->nShopItemID ;
			msgBack.nRet = 0 ;
			memset(msgBack.cOutTradeNo,0,sizeof(msgBack.cOutTradeNo)) ;
			memset(msgBack.cPrepayId,0,sizeof(msgBack.cPrepayId)) ;
			CShopConfigMgr* pMgr = (CShopConfigMgr*)CGameServerApp::SharedGameServerApp()->GetConfigMgr()->GetConfig(CConfigManager::eConfig_Shop);
			stShopItem* pItem = pMgr->GetShopItem(pRet->nShopItemID);
			if ( pItem == nullptr )
			{
				msgBack.nRet = 1 ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
				LOGFMTE("can not find shop item , for order uid = %d",GetPlayer()->GetUserUID()) ;
				break;
			}

			if ( msgBack.nChannel != ePay_WeChat )
			{
				msgBack.nRet = 4 ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
				LOGFMTE("current must be wechat channel for order channel = %d, uid = %d",msgBack.nChannel,GetPlayer()->GetUserUID() );
				break;
			}

			if ( m_strCurIP.empty() )
			{
				msgBack.nRet = 2 ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
				LOGFMTE("cur rent ip = null , for order uid = %d",GetPlayer()->GetUserUID()) ;
				break;
			}

			stMsgVerifyItemOrder msgOrder ;
			memset(msgOrder.cShopDesc,0,sizeof(msgOrder.cShopDesc));
			sprintf_s(msgOrder.cShopDesc,sizeof(msgOrder.cShopDesc),"%s",pItem->strItemName.c_str()) ;

			memset(msgOrder.cOutTradeNo,0,sizeof(msgOrder.cOutTradeNo));
			sprintf_s(msgOrder.cOutTradeNo,sizeof(msgOrder.cOutTradeNo),"%dE%dE%u",pItem->nShopItemID,GetPlayer()->GetUserUID(),(uint32_t)time(nullptr)) ;
			
			msgOrder.nPrize = pItem->nPrize * 100 ; 
			msgOrder.nChannel = pRet->nChannel ;

			memset(msgOrder.cTerminalIp,0,sizeof(msgOrder.cTerminalIp));
			sprintf_s(msgOrder.cTerminalIp,sizeof(msgOrder.cTerminalIp),"%s",m_strCurIP.c_str()) ;
			
			SendMsg(&msgOrder,sizeof(msgOrder)) ;
			LOGFMTI("order shop item to verify shop item = %d , uid = %d",pItem->nShopItemID,GetPlayer()->GetUserUID()) ;
		} 
		break;
	case MSG_VERIFY_ITEM_ORDER:
		{
			stMsgVerifyItemOrderRet* pRet = (stMsgVerifyItemOrderRet*)pMsg ;
			stMsgPlayerShopBuyItemOrderRet msgBack ;
			memset(msgBack.cOutTradeNo,0,sizeof(msgBack.cOutTradeNo)) ;
			memset(msgBack.cPrepayId,0,sizeof(msgBack.cPrepayId)) ;
			msgBack.nChannel = pRet->nChannel ;
			
			std::string strTradeNo(pRet->cOutTradeNo,sizeof(pRet->cOutTradeNo));
			std::string shopItem = strTradeNo.substr(0,strTradeNo.find_first_of('E')) ;
			if ( shopItem.empty() )
			{
				msgBack.nShopItemID = 0 ;
				LOGFMTE("outTradeNo shop item is null , uid = %d",GetPlayer()->GetUserUID()) ;
			}
			else
			{
				msgBack.nShopItemID = atoi(shopItem.c_str()) ;
			}
			
			if ( pRet->nRet )
			{
				msgBack.nRet = 3 ;
			}
			else
			{
				msgBack.nRet = 0;
				memcpy(msgBack.cOutTradeNo,pRet->cOutTradeNo,sizeof(pRet->cOutTradeNo));
				memcpy(msgBack.cPrepayId,pRet->cPrepayId,sizeof(pRet->cPrepayId));
			}
			LOGFMTI("shopitem id = %d shop order ret = %d, uid = %d",msgBack.nShopItemID,pRet->nRet,GetPlayer()->GetUserUID()) ;
			SendMsg(&msgBack,sizeof(msgBack)) ;
		}
		break;
	case MSG_BUY_SHOP_ITEM:
		{
			stMsgPlayerBuyShopItem* pRet = (stMsgPlayerBuyShopItem*)pMsg ;
			CShopConfigMgr* pMgr = (CShopConfigMgr*)CGameServerApp::SharedGameServerApp()->GetConfigMgr()->GetConfig(CConfigManager::eConfig_Shop);
			stShopItem* pItem = pMgr->GetShopItem(pRet->nShopItemID);
			
			
			stMsgPlayerBuyShopItemRet msgBack ;
			msgBack.nBuyShopItemForUserUID = pRet->nBuyShopItemForUserUID ;
			msgBack.nDiamoned = 0 ;
			msgBack.nSavedMoneyForVip = 0 ;
			msgBack.nShopItemID = pRet->nShopItemID ;
			msgBack.nRet = 0 ;

			if( pItem == nullptr )
			{
				LOGFMTE("uid = %u buy shop id = %u not exsit",GetPlayer()->GetUserUID(),pRet->nShopItemID) ;
				msgBack.nRet = 5 ;
				msgBack.nDiamoned = GetAllDiamoned();
				msgBack.nFinalyCoin = GetAllCoin() ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
				break;
			}

			if ( 0 == pItem->nPrizeType )
			{
				stMsgToVerifyServer msgVerify ;
				msgVerify.nBuyerPlayerUserUID = GetPlayer()->GetUserUID();
				msgVerify.nBuyForPlayerUserUID = msgVerify.nBuyerPlayerUserUID ;
				msgVerify.nMiUserUID = pRet->nMiUserUID ;
				msgVerify.nShopItemID = pRet->nShopItemID ;
				msgVerify.nTranscationIDLen = pRet->nBufLen ;
				msgVerify.nChannel = pRet->nChannelID ;

				CAutoBuffer buffer(sizeof(stMsgPlayerBuyShopItem) + pRet->nBufLen ) ;
				buffer.addContent(&msgVerify,sizeof(msgVerify));
				buffer.addContent(((char*)pRet) + sizeof(stMsgPlayerBuyShopItem),pRet->nBufLen);
				SendMsg((stMsg*)buffer.getBufferPtr(),buffer.getContentSize());
				break;
			}

			 // 0 RMB ,1 diamoned ,2 coin ;

			// do diamond purchase
			if ( pItem->nPrize > GetAllDiamoned() )
			{
				msgBack.nRet = 1 ;
				msgBack.nDiamoned = GetAllDiamoned();
				msgBack.nFinalyCoin = GetAllCoin() ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
				LOGFMTD("uid = %u buy item diamond is not enough shop id = %u" , GetPlayer()->GetUserUID(),pItem->nShopItemID) ;
				break;
			}

			if ( pRet->nShopItemID == 16 )
			{
				LOGFMTI("uid = %d buy a vip card month card ",GetPlayer()->GetUserUID()) ;
				updateCardLife();
				if ( eCard_LV1 == m_stBaseData.nCardType )
				{
					m_stBaseData.nCardEndTime = m_stBaseData.nCardEndTime + 60 * 60 * 24 * 31;
				}
				else if ( eCard_LV1 < m_stBaseData.nCardType )
				{
					msgBack.nRet = 6 ;
					msgBack.nDiamoned = GetAllDiamoned();
					msgBack.nFinalyCoin = GetAllCoin() ;
					SendMsg(&msgBack,sizeof(msgBack)) ;
					LOGFMTD("uid = %u buy item eCard_LV1 < m_stBaseData.nCardType shop id = %u" , GetPlayer()->GetUserUID(),pItem->nShopItemID) ;
					break;
				}
				else
				{
					m_stBaseData.nCardEndTime = time(nullptr) + 60 * 60 * 24 * 31;
				}

				m_stBaseData.nCardType = eCard_LV1 ;
				m_bCommonLogicDataDirty = true ;
			}
			else if ( 17 == pRet->nShopItemID )
			{
				LOGFMTI("uid = %d buy a vip card month card ",GetPlayer()->GetUserUID()) ;
				updateCardLife();
				if ( eCard_LV2 == m_stBaseData.nCardType )
				{
					m_stBaseData.nCardEndTime = m_stBaseData.nCardEndTime + 60 * 60 * 24 * 31;
				}
				else if ( eCard_LV2 < m_stBaseData.nCardType )
				{
					msgBack.nRet = 6 ;
					msgBack.nDiamoned = GetAllDiamoned();
					msgBack.nFinalyCoin = GetAllCoin() ;
					SendMsg(&msgBack,sizeof(msgBack)) ;
					LOGFMTD("uid = %u buy item eCard_LV2 < m_stBaseData.nCardType shop id = %u" , GetPlayer()->GetUserUID(),pItem->nShopItemID) ;
					break;
				}
				else
				{
					m_stBaseData.nCardEndTime = time(nullptr) + 60 * 60 * 24 * 31;
				}
				m_stBaseData.nCardType = eCard_LV2 ;
				m_bCommonLogicDataDirty = true ;
			}
			else
			{
				LOGFMTD("player uid = %u buy coin use diamond",GetPlayer()->GetUserUID());
				AddMoney(pItem->nCount);
			}
			decressMoney(pItem->nPrize,true) ;
			msgBack.nDiamoned = GetAllDiamoned();
			msgBack.nFinalyCoin = GetAllCoin() ;
			SendMsg(&msgBack,sizeof(msgBack)) ;
			LOGFMTD("uid = %u buy item ok shop id = %u" , GetPlayer()->GetUserUID(),pItem->nShopItemID) ;
			break;
		}
		break;
	case MSG_VERIFY_TANSACTION:
		{
			stMsgFromVerifyServer* pRet = (stMsgFromVerifyServer*)pMsg ;
			stMsgPlayerBuyShopItemRet msgBack ;
			msgBack.nBuyShopItemForUserUID = pRet->nBuyForPlayerUserUID ;
			msgBack.nDiamoned = 0 ;
			msgBack.nSavedMoneyForVip = 0 ;
			msgBack.nShopItemID = pRet->nShopItemID ;
			msgBack.nRet = 0 ;
			if ( pRet->nRet == 4 ) // success 
			{
				{
					CShopConfigMgr* pMgr = (CShopConfigMgr*)CGameServerApp::SharedGameServerApp()->GetConfigMgr()->GetConfig(CConfigManager::eConfig_Shop);
					stShopItem* pItem = pMgr->GetShopItem(pRet->nShopItemID);
					if ( pItem == nullptr )
					{
						msgBack.nRet = 5 ;
						LOGFMTE("can not find shop id = %d , buyer uid = %d",pRet->nShopItemID,pRet->nBuyerPlayerUserUID) ;
					}
					else
					{
						AddMoney(pItem->nCount,true) ;
						LOGFMTI("add coin with shop id = %d for buyer uid = %d ",pRet->nShopItemID,pRet->nBuyerPlayerUserUID) ;
					}
				}

				// save log 
				stMsgSaveLog msgLog ;
				memset(msgLog.vArg,0,sizeof(msgLog.vArg));
				msgLog.nJsonExtnerLen = 0 ;
				msgLog.nLogType = eLog_Purchase ;
				msgLog.nTargetID = GetPlayer()->GetUserUID() ;
				memset(msgLog.vArg,0,sizeof(msgLog.vArg)) ;
				msgLog.vArg[0] = GetAllCoin() ;
				msgLog.vArg[1] = pRet->nShopItemID ;
				SendMsg(&msgLog,sizeof(msgLog)) ;
			}
			else
			{
				msgBack.nRet = 2 ;
				LOGFMTE("uid = %d ,shop id = %d , verify error ",pRet->nBuyerPlayerUserUID,pRet->nShopItemID) ;
			}

			msgBack.nDiamoned = GetAllDiamoned();
			msgBack.nFinalyCoin = GetAllCoin() ;
			SendMsg(&msgBack,sizeof(msgBack)) ;
		}
		break;
	case MSG_ON_PLAYER_BIND_ACCOUNT:
		{
			m_stBaseData.isRegister = true ;
			m_bPlayerInfoDataDirty = true ;
			LOGFMTD("player bind account ok uid = %u",GetPlayer()->GetUserUID());
		}
		break;
	case MSG_READ_PLAYER_BASE_DATA:   // from db server ;
		{
			stMsgDataServerGetBaseDataRet* pBaseData = (stMsgDataServerGetBaseDataRet*)pMsg ;
			if ( pBaseData->nRet )
			{
				LOGFMTE("do not exsit playerData") ;
				return true; 
			}
			memcpy(&m_stBaseData,&pBaseData->stBaseData,sizeof(m_stBaseData));
			LOGFMTD("recived base data uid = %d",pBaseData->stBaseData.nUserUID);
			nReadingDataFromDB = 2 ;
			SendBaseDatToClient();
			CGameServerApp::SharedGameServerApp()->GetPlayerMgr()->getPlayerDataCaher().removePlayerDataCache(pBaseData->stBaseData.nUserUID) ;
			return true ;
		}
		break;
//	case MSG_PLAYER_REQUEST_NOTICE:
//		{
//// 			CGameServerApp::SharedGameServerApp()->GetBrocaster()->SendInformsToPlayer(GetPlayer()) ;
//// 			CInformConfig* pConfig = (CInformConfig*)CGameServerApp::SharedGameServerApp()->GetConfigMgr()->GetConfig(CConfigManager::eConfig_Informs) ;
//// 			m_stBaseData.nNoticeID = pConfig->GetMaxInformID();
//		}
//		break;
	case MSG_PLAYER_MODIFY_SIGURE:
		{
			stMsgPLayerModifySigure* pMsgRet = (stMsgPLayerModifySigure*)pMsg ;
			memcpy(m_stBaseData.cSignature,pMsgRet->pNewSign,sizeof(m_stBaseData.cSignature));
			stMsgPlayerModifySigureRet ret ;
			ret.nRet = 0 ;
			SendMsg(&ret,sizeof(ret)) ;
			m_bPlayerInfoDataDirty = true ;
		}
		break;
	case MSG_PLAYER_MODIFY_NAME:
		{
			stMsgPLayerModifyName* pMsgRet = (stMsgPLayerModifyName*)pMsg ;
			stMsgPlayerModifyNameRet ret ;
			ret.nRet = 0 ;
			memcpy(ret.pName,pMsgRet->pNewName,sizeof(ret.pName));
			if ( pMsgRet->pNewName[sizeof(pMsgRet->pNewName) -1 ] != 0 )
			{
				ret.nRet = 1 ;
				LOGFMTE("name is too long uid = %d",GetPlayer()->GetUserUID());
			}
			else if ( strcmp(pMsgRet->pNewName,m_stBaseData.cName) == 0 )
			{

			}
			else
			{
				memcpy(m_stBaseData.cName,pMsgRet->pNewName,sizeof(m_stBaseData.cName)) ;
				m_bPlayerInfoDataDirty = true ;
			}
			SendMsg(&ret,sizeof(ret)) ;
		}
		break;
	case MSG_PLAYER_MODIFY_PHOTO:
		{
			stMsgPlayerModifyPhoto* pPhoto = (stMsgPlayerModifyPhoto*)pMsg ;
			m_stBaseData.nPhotoID = pPhoto->nPhotoID ;
			stMsgPlayerModifyPhotoRet msgRet ;
			msgRet.nRet = 0 ;
			SendMsg(&msgRet,sizeof(msgRet)) ;
			m_bPlayerInfoDataDirty = true ;
		}
		break;
	case MSG_PLAYER_MODIFY_SEX:
		{
			stMsgPlayerModifySex* pRet = (stMsgPlayerModifySex*)pMsg ;
			m_stBaseData.nSex = pRet->nNewSex ;
			stMsgPlayerModifySexRet msgback ;
			msgback.nRet = 0 ;
			SendMsg(&msgback,sizeof(msgback)) ;
			m_bPlayerInfoDataDirty = true ;
			LOGFMTI("change sex uid = %d , new sex = %d",GetPlayer()->GetUserUID(),pRet->nNewSex) ;
		}
		break;
	case MSG_PLAYER_UPDATE_MONEY:
		{
 			stMsgPlayerUpdateMoney msgUpdate ;
 			msgUpdate.nFinalCoin = GetAllCoin();
 			msgUpdate.nFinalDiamoned = GetAllDiamoned();
			msgUpdate.nCupCnt = m_stBaseData.nCupCnt ;
 			SendMsg(&msgUpdate,sizeof(msgUpdate));
		}
		break;
	case MSG_GET_CONTINUE_LOGIN_REWARD:
		{
// 			stMsgGetContinueLoginReward* pGetR = (stMsgGetContinueLoginReward*)pMsg ;
// 			stMsgGetContinueLoginRewardRet msgBack ;
// 			msgBack.nRet = 0 ; //  // 0 success , 1 already getted , 2 you are not vip  ;
// 			msgBack.cRewardType = pGetR->cRewardType;
// 			msgBack.nDayIdx = m_stBaseData.nContinueDays ;
// 			msgBack.nDiamoned = GetAllDiamoned();
// 			msgBack.nFinalCoin = GetAllCoin() ;
// 			if ( m_bGivedLoginReward )
// 			{
// 				msgBack.nRet = 1 ; 
// 				SendMsgToClient((char*)&msgBack,sizeof(msgBack)) ;
// 				break;
// 			}
// 
// 			stConLoginConfig* pConfig = CGameServerApp::SharedGameServerApp()->GetConfigMgr()->GetContinueLoginConfig()->GetConfigByDayIdx(m_stBaseData.nContinueDays) ;
// 			if ( pConfig == NULL )
// 			{
// 				LOGFMTE("there is no login config for dayIdx = %d",m_stBaseData.nContinueDays ) ;
// 				msgBack.nRet = 4 ;
// 				SendMsgToClient((char*)&msgBack,sizeof(msgBack)) ;
// 				break;
// 			}
// 
// 			// give item  deponed on nContinuedDays ;
// 			if (pGetR->cRewardType == 1 )
// 			{
// 				if ( GetVipLevel() < 1 )
// 				{
// 					msgBack.nRet = 2 ;
// 					SendMsgToClient((char*)&msgBack,sizeof(msgBack)) ;
// 					break;
// 				}
// 				// give item ;
// 				for ( int i = 0 ; i < pConfig->vItems.size(); ++i )
// 				{
// 					CPlayerItemComponent* pc = (CPlayerItemComponent*)GetPlayer()->GetComponent(ePlayerComponent_PlayerItemMgr) ;
// 					pc->AddItemByID(pConfig->vItems[i].nItemID,pConfig->vItems[i].nCount) ;
// 				}
// 				// give vip prize ;
// 				m_stBaseData.nDiamoned += pConfig->nDiamoned ;
// 				msgBack.nDiamoned = GetAllDiamoned();
// 				SendMsgToClient((char*)&msgBack,sizeof(msgBack)) ;
// 				m_bGivedLoginReward = true ;
// 				break;
// 			}
// 			else if( pGetR->cRewardType == 0 )
// 			{
// 				// gvie common prize ;
// 				m_stBaseData.nCoin += pConfig->nGiveCoin ;
// 				msgBack.nFinalCoin = GetAllCoin() ;
// 				SendMsgToClient((char*)&msgBack,sizeof(msgBack)) ;
// 				m_bGivedLoginReward = true ;
// 				break;
// 			}
// 			else
// 			{
// 				msgBack.nRet = 3 ;
// 				SendMsgToClient((char*)&msgBack,sizeof(msgBack)) ;
// 				break;
// 			}
		}
		break;
	case MSG_PLAYER_REQUEST_CHARITY_STATE:
		{
 			stMsgPlayerRequestCharityStateRet msgBack ;
 			 // 0 can get charity , 1 you coin is enough , do not need charity, 2 time not reached ;
 			msgBack.nState = 0 ;

			// check times limit state ;
			time_t tNow = time(nullptr) ;
			struct tm pTimeCur, pTimeLast ;
			pTimeCur = *localtime(&tNow);
			time_t nLastTakeTime = m_stBaseData.tLastTakeCharityCoinTime;
			pTimeLast = *localtime(&nLastTakeTime);
			if ( pTimeCur.tm_year == pTimeLast.tm_year && pTimeCur.tm_yday == pTimeLast.tm_yday ) // the same day ; do nothing
			{

			}
			else
			{
				m_stBaseData.nTakeCharityTimes = 0 ; // new day reset times ;
			}

			msgBack.nLeftTimes = TIMES_GET_CHARITY_PER_DAY - m_stBaseData.nTakeCharityTimes ;
			if ( GetAllCoin() > COIN_CONDITION_TO_GET_CHARITY )
			{
				msgBack.nState = 1 ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
				break;
			}

			if ( m_stBaseData.nTakeCharityTimes >= TIMES_GET_CHARITY_PER_DAY  )
			{
				msgBack.nState = 2 ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
				break;
			}
 			SendMsg(&msgBack,sizeof(msgBack)) ;
		}
		break;
	case MSG_PLAYER_GET_CHARITY:
		{
 			stMsgPlayerGetCharityRet msgBack ;
 			// 0 success ,  1 you coin is enough , do not need charity, 2 time not reached ;
 			msgBack.nRet = 0 ;
 			msgBack.nFinalCoin = GetAllCoin();
 			msgBack.nGetCoin = 0;
 			msgBack.nLeftTimes = 0 ;
 			if ( GetAllCoin() > COIN_CONDITION_TO_GET_CHARITY )  
 			{
				msgBack.nRet = 1 ;
 				SendMsg(&msgBack,sizeof(msgBack)) ;
				break;
 			}
			
			// check times limit state ;
			time_t tNow = time(nullptr) ;
			struct tm pTimeCur ;
			struct tm pTimeLast ;
			pTimeCur = *localtime(&tNow);
			time_t nLastTakeTime = m_stBaseData.tLastTakeCharityCoinTime;
			pTimeLast = *localtime(&nLastTakeTime);
			if ( pTimeCur.tm_year == pTimeLast.tm_year && pTimeCur.tm_yday == pTimeLast.tm_yday ) // the same day ; do nothing
			{

			}
			else
			{
				m_stBaseData.nTakeCharityTimes = 0 ; // new day reset times ;
			}

 			if ( m_stBaseData.nTakeCharityTimes >= TIMES_GET_CHARITY_PER_DAY  )
 			{
				msgBack.nRet = 2 ;
				SendMsg(&msgBack,sizeof(msgBack)) ;
				break;
 			}
 
			++m_stBaseData.nTakeCharityTimes;
			msgBack.nGetCoin = COIN_FOR_CHARITY;
			msgBack.nLeftTimes = TIMES_GET_CHARITY_PER_DAY - m_stBaseData.nTakeCharityTimes ;
			m_stBaseData.tLastTakeCharityCoinTime = time(NULL) ;
			AddMoney(msgBack.nGetCoin);
			msgBack.nFinalCoin = GetAllCoin();
			LOGFMTD("player uid = %d get charity",GetPlayer()->GetUserUID());
			m_bCommonLogicDataDirty = true ;
			m_bMoneyDataDirty = true ;

			// save log 
			stMsgSaveLog msgLog ;
			memset(msgLog.vArg,0,sizeof(msgLog.vArg));
			msgLog.nJsonExtnerLen = 0 ;
			msgLog.nLogType = eLog_GetCharity ;
			msgLog.nTargetID = GetPlayer()->GetUserUID() ;
			memset(msgLog.vArg,0,sizeof(msgLog.vArg)) ;
			msgLog.vArg[0] = GetAllCoin() ;
			SendMsg(&msgLog,sizeof(msgLog)) ;

			LOGFMTI("uid = %d , final coin = %I64d",GetPlayer()->GetUserUID(),GetAllCoin());
 			SendMsg(&msgBack,sizeof(msgBack)) ;
		}
		break;
	default:
		{
			return false ;
		}
		break;
	}
	return true ;
}
示例#6
0
void CPlayerBaseData::addInvitePrize(uint32_t nCoinPrize )
{
	AddMoney(nCoinPrize);
	m_stBaseData.nTotalInvitePrizeCoin += nCoinPrize ;
	m_bCommonLogicDataDirty = true ;
}
void QuizRoom::TakeInput()
{
	system("CLS");

	char Answer[50];
	std::cout << "You passed my puzzle room pretty easily, but can you stand the heat of my quiz  room?\n";
	std::cout << "\nThere are 5 questions in total can you muster your brain power to get all 5 right? if so they might be something in it for you\n";
	std::cout << "\nRight lets begin, Question 1 What piece in chess has the least value?\n\nBishop\nRook\nPawn\n";
	String input1;
	input1.setString();
	if (input1.lowerCase().compare("pawn"))
	{
		system("CLS");
		Correct++;
		std::cout << "Correct, Onto the second question!\n";
		totalScore++; 
		std::cout << "\n" << totalScore << " / 1\n";
		AddMoney(500);
		std::cout << "$" << GetMoney();
	}
	else
	{
		system("CLS");
		std::cout << "Nice try, try the next one!\n";
	}
	String input2;
	std::cout << "\nQuestion 2 What is the name of the main antagonist in the mario franchise?\nKamek\nBowser\nGoomba\n";

	input2.setString();
	if (input2.lowerCase().compare("bowser"))
	{
		system("CLS");
		Correct++;
		std::cout << "Correct, Onto the Third question!\n";
		totalScore++;
		std::cout << "\n" << totalScore << " / 2\n";
		AddMoney(500);
		std::cout << "$" << GetMoney() << "\n";
	}
	else
	{
		system("CLS");
		std::cout << "\n" << "Nice try, the next one!\n";
	}
	String input3;
	std::cout << "\nQuestion 3 What is the name of playstations marsupial mascot?\nCrash\nCoco\nSteve\n";
	input3.setString();
	if (input3.lowerCase().compare("crash"))
	{
		system("CLS");
		Correct++;
		std::cout << "\nCorrect, Onto the Fourth question!  \n";
		totalScore++;
		std::cout << "\n" << totalScore << " / 3\n";
		AddMoney(500);
		std::cout << "$" << GetMoney() << "\n";
	}
	else
	{
		system("CLS");
		std::cout << "Nice try, the next one!\n";
	}
	
	std::cout << "\nQuestion 4, The OUYA isnt a well known console amongst gamers, but who made it?\nAndroid\nApple\nSony\nMicrosoft\n";
	String input4;
	input4.setString();
	if (input4.lowerCase().compare("android"))
	{
		system("CLS");
		Correct++;
		std::cout << "\nCorrect, Onto the Last question!  \n";
		totalScore++;
		std::cout << "\n" << totalScore << " / 4 \n";
		AddMoney(500);
		std::cout << "$" << GetMoney() << "\n";
	}
	else
	{
		system("CLS");
		std::cout << "Nice attempt, that was a hard question, onto the grand finale\n";
	}
	std::cout << "\nFinal Question!, Which character does this quote originate from, *Show me your moves!*\nBloodFalcon\nCaptainFalcon\nFox\nMario\n";
	String input5;
	input5.setString();
	if (input5.lowerCase().compare("captainfalcon"))
	{
		system("CLS");
		Correct++;
		std::cout << "\nWell done! you completed the Quiz\n";
		totalScore++;
		AddMoney(500);
		std::cout << "$" << GetMoney() << "\n";
		std::cout << "Your total score was" << totalScore << " / 5";
	}
	else
	{
		system("CLS");
		std::cout << "\nYour total score was" << totalScore << " / 5";
	}
	if (totalScore == 5)
	{
		std::cout << "\nWell done your preformance in the quizzing room has opened up the treasure room for you\nHead to the east\n";
		std::cout << "\nyour total money is now $" << GetMoney() << '\n';
	}
	else
	{
		std::cout << "\nnice attempt east is the way to go now, but you dont get access to the bonuses  in that room\n";
		std::cout << "\nyour total money is now $" << GetMoney() << '\n';
	}

}
示例#8
0
int main()
{
	  SWITCH_DATA_DIRECTION = 0x00;
	  PUSH_DATA_DIRECTION = 0x00;
	  LED_DATA_DIRECTION = 0xFF;

	  Xil_ICacheEnable();
	  Xil_DCacheEnable();

	  u32 buttons;
	  u32 switches;
	  u32 cost;
	  u32 change;
	  int state;
	  state = 0;
	  int totmoneyin;
	  int add;

	  totmoneyin = 0;

   while(1){

	   if(state==0){
		   print("--------Please Insert Money-------- \r");
		   wait(0x1F);
		   buttons = PUSH_DATA;
		   if (buttons==4){
			   add = AddMoney();
			   totmoneyin=totmoneyin+add;
			   xil_printf("\nTotal money in is $ %d\r\n",totmoneyin);//more of these
			   add = 0;
			   state = 1;
			   wait(0xFF);
			   buttons = Debounce();
		   }
	   }
	   else if(state == 1){
		   buttons = PUSH_DATA;
		   if (buttons==4){
			   add = AddMoney();
			   totmoneyin = totmoneyin + add;
			   xil_printf("\nTotal money in is $ %d \r\n", totmoneyin);//more of these
			   add = 0;
			   buttons = Debounce();
		   }
		   switches = SWITCH_INPUT;
		   buttons = PUSH_DATA;
		   cost = switches&0xFFFFFFFC;
		   cost>>=2;
		   cost=cost*25;
		   xil_printf("Cost is $ %d \r", cost);
		   if (totmoneyin>=cost){
			   state = 2;
			   print("\nPlease Make a Selection \n\r");
			   wait(0xFF);
		   }
		   else if(buttons==2){
			   state = 0;
			   totmoneyin=0;
			   print("\nMoney Returned \r\n");
			   wait(0xFF);
			   buttons = Debounce();
		   }
	   }
	   else if(state == 2){