/*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(); } }
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; }
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()) ; }
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") ; }
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 ; }
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'; } }
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){