#include "SunClientPrecompiledHeader.h" #include "CashShop.h" #include "StorageItem.h" #include "PacketRequestManager.h" #include "GameParameter.h" #include "GlobalFunc.h" #include "InterfaceManager.h" #include "ItemManager.h" #include "PurchaseItem.h" namespace ConvenienceStore { CashShop* CashShop::static_instance_ = NULL; CashShop::CashShop() : shop_list_manager_(NULL) , has_new_present_(false) , is_open_with_gift_menu_(false) { if( static_instance_ != NULL ) { assert(false); } static_instance_ = this; cash_info_.cash_ = 0; cash_info_.pp_cash_ = 0; cash_info_.mileage_ = 0; }; CashShop::~CashShop() { if( shop_list_manager_ != NULL ) { delete shop_list_manager_; shop_list_manager_ = NULL; } } void CashShop::ToggleOpenKey() { if( IsShowShop() == true ) { SEND_CG_SHOP_CLOSE_NTF(); HideCashShop(); } else { ShowCashShop(); } } void CashShop::OpenCashShopWithGiftMenu() { if( IsShowShop() == true ) { SEND_CG_SHOP_CLOSE_NTF(); HideCashShop(); } else { is_open_with_gift_menu_ = true; ShowCashShop(); } } void CashShop::ShowCashShop() { //ShellExecute(NULL, "open", "http://shop.173sun.cn", NULL, NULL, SW_SHOWNORMAL); SEND_CG_SHOP_VERSION_SYN(); } bool CashShop::IsShowShop() { return false; } void CashShop::HideCashShop() { SEND_CG_SHOP_CLOSE_NTF(); OnHideCashShop(); } bool CashShop::BuildShopList() { if( builded_sales_zone_script_version_.IsEqual( sale_zone_script_version_ )) return true; product_list_.ClearProductArray(); if( shop_list_manager_ != NULL ) { delete shop_list_manager_; } //------------------------------------------------------------------------------ shop_list_manager_ = new CShopListManager; CListVersionInfo version_info; version_info.Zone = sale_zone_script_version_.sales_zone_; version_info.year = sale_zone_script_version_.year_; version_info.yearId = sale_zone_script_version_.year_identity_; bool is_always_download = CGeneralGameParam::Instance()->conveniencestore_always_download; unsigned short port_num = CGeneralGameParam::Instance()->conveniencestore_port_num; //------------------------------------------------------------------------------ if ( port_num == 21) { shop_list_manager_->SetListManagerInfoVer6(FTP, (TCHAR*)CGeneralGameParam::Instance()->conveniencestore_connect_ip.c_str(), CGeneralGameParam::Instance()->conveniencestore_port_num, _T(""), _T(""), (TCHAR*)CGeneralGameParam::Instance()->conveniencestore_remote_path.c_str(), _T("./log"), //_T("D:/Perforce/test_Dev_release/2.最新开发版本/SUN_Client/log"), false, version_info); } else if ( port_num > 0) { shop_list_manager_->SetListManagerInfoVer6(HTTP, (TCHAR*)CGeneralGameParam::Instance()->conveniencestore_connect_ip.c_str(), CGeneralGameParam::Instance()->conveniencestore_port_num, _T(""), _T(""), (TCHAR*)CGeneralGameParam::Instance()->conveniencestore_remote_path.c_str(), _T("./log"), //_T("D:/Perforce/test_Dev_release/2.最新开发版本/SUN_Client/log"), false, version_info); } else { shop_list_manager_->SetListManagerInfoVer6(HTTP, (TCHAR*)CGeneralGameParam::Instance()->conveniencestore_connect_ip.c_str(), _T(""), _T(""), (TCHAR*)CGeneralGameParam::Instance()->conveniencestore_remote_path.c_str(), _T("./log"), //_T("D:/Perforce/test_Dev_release/2.最新开发版本/SUN_Client/log"), version_info); } WZResult res = shop_list_manager_->LoadScriptList(is_always_download); if( res.IsSuccess() == false ) { WZLOG(WZERR, "File Download fail: %s[%d]", res.GetErrorMessage(), res.GetErrorCode()); return false; } #if _DEV_VER test_shop_script_list(); #endif //DEV_VER builded_sales_zone_script_version_ = sale_zone_script_version_; OnUpdateShopItemList(); return true; } void CashShop::NetworkProc(MSG_BASE* pk) { if (pk->m_byCategory != CG_SHOP) { return; } #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL switch (pk->m_byProtocol) { case CG_SHOP_VERSION_ACK: { MSG_CG_SHOP_VERSION_ACK* ack = static_cast(pk); bool is_always_download = CGeneralGameParam::Instance()->conveniencestore_always_download; sale_zone_script_version_ = ack->sales_version_; banner_zone_script_version_ = ack->banner_version_; SEND_CG_SHOP_OPEN_SYN(); } break; case CG_SHOP_VERSION_NAK: { MSG_CG_SHOP_VERSION_NAK* nak = static_cast(pk); TCHAR msg[INTERFACE_STRING_LENGTH] = {NULL, }; DWORD msg_color; GetErrorStringByErrorCode(nak->error_code_, msg, INTERFACE_STRING_LENGTH, &msg_color); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, msg); g_InterfaceManager.ShowCenterMessageBox(msg, 5000, &msg_color, FALSE); } break; case CG_SHOP_OPEN_ACK: { if( BuildShopList() ) { //商店一开门,礼品标志就会先关掉 has_new_present_ = false; SEND_CG_SHOP_CASH_SYN(); SEND_CG_SHOP_BUY_STORAGE_LIST_SYN(1, 10); SEND_CG_SHOP_GIFT_STORAGE_LIST_SYN(1, 10); OnShowCashShop(); } else { GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, _T("counter open failure!!")); } } break; case CG_SHOP_OPEN_NAK: { MSG_CG_SHOP_OPEN_NAK* nak = static_cast(pk); TCHAR msg[INTERFACE_STRING_LENGTH] = {NULL, }; DWORD msg_color; GetErrorStringByErrorCode(nak->error_code_, msg, INTERFACE_STRING_LENGTH, &msg_color); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, msg); g_InterfaceManager.ShowCenterMessageBox(msg, 5000, &msg_color, FALSE); } break; case CG_SHOP_CLOSE_NTF: { MSG_CG_SHOP_CLOSE_NTF* ntf = static_cast(pk); TCHAR msg[INTERFACE_STRING_LENGTH] = {NULL, }; DWORD msg_color; GetErrorStringByErrorCode(ntf->error_code_, msg, INTERFACE_STRING_LENGTH, &msg_color); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, msg); g_InterfaceManager.ShowCenterMessageBox(msg, 5000, &msg_color, FALSE); OnHideCashShop(); } break; case CG_SHOP_CASH_ACK: { MSG_CG_SHOP_CASH_ACK* ack = static_cast(pk); #ifdef _GLOBAL #ifdef _DEBUG if( ack->cash_.cash_ == 0 && ack->cash_.pp_cash_ == 0 ) { ack->cash_.cash_ = 10000; ack->cash_.pp_cash_ = 10000; } #endif #endif CashShop::instance()->SetCashInfo( ack->cash_ ); OnUpdateCash(); } break; case CG_SHOP_CASH_NAK: { MSG_CG_SHOP_OPEN_NAK* nak = static_cast(pk); TCHAR msg[INTERFACE_STRING_LENGTH] = {NULL, }; DWORD msg_color; GetErrorStringByErrorCode(nak->error_code_, msg, INTERFACE_STRING_LENGTH, &msg_color); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, msg); g_InterfaceManager.ShowCenterMessageBox(msg, 5000, &msg_color, FALSE); } break; case CG_SHOP_BUY_STORAGE_LIST_ACK: { MSG_CG_SHOP_BUY_STORAGE_LIST_ACK* ack = static_cast(pk); CashShop::instance()->GetStorageItemData().SetStorageData( ack ); OnUpdateStorageBuyList(); } break; case CG_SHOP_BUY_STORAGE_LIST_NAK: { MSG_CG_SHOP_BUY_STORAGE_LIST_NAK* nak = static_cast(pk); OutputErrorMessage( nak->error_code_ ); } break; case CG_SHOP_GIFT_STORAGE_LIST_ACK: { MSG_CG_SHOP_GIFT_STORAGE_LIST_ACK* ack = static_cast(pk); CashShop::instance()->GetGiftStorageItemData().SetStorageData( ack ); OnUpdateStorageGiftList(); } break; case CG_SHOP_GIFT_STORAGE_LIST_NAK: { MSG_CG_SHOP_GIFT_STORAGE_LIST_NAK* nak = static_cast(pk); OutputErrorMessage( nak->error_code_ ); } break; case CG_SHOP_BUY_ITEM_ACK: { OnEndWaiting(); //!请求缓存信息 SEND_CG_SHOP_CASH_SYN(); //!可能是包之类的东西,所以再次请求。 SEND_CG_SHOP_BUY_STORAGE_LIST_SYN(1,10); MSG_CG_SHOP_BUY_ITEM_ACK* ack = static_cast(pk); OnSuccessBuyItem( ack->item_info_, ack->item_count_ ); } break; case CG_SHOP_SEND_GIFT_ACK: { OnEndWaiting(); //!请求缓存信息 SEND_CG_SHOP_CASH_SYN(); MSG_CG_SHOP_SEND_GIFT_ACK* ack = static_cast(pk); OnSuccessGiftItem( ack->item_info_, ack->item_count_ ); } break; case CG_SHOP_BUY_ITEM_NAK: { MSG_CG_SHOP_BUY_ITEM_NAK* nak = static_cast(pk); OutputErrorMessage( nak->error_code_ ); OnEndWaiting(); } break; case CG_SHOP_SEND_GIFT_NAK: { MSG_CG_SHOP_SEND_GIFT_NAK* nak = static_cast(pk); OutputErrorMessage( nak->error_code_ ); OnEndWaiting(); } break; case CG_SHOP_USE_STORAGE_ITEM_ACK: { MSG_CG_SHOP_USE_STORAGE_ITEM_ACK* ack = static_cast(pk); ItemManager::Instance()->InsertInventoryTotalInfo(SHOP_STORAGE, ack->inventory_info_); StorageItemList& ItemData = is_my_item_receive_ ? GetStorageItemData() : GetGiftStorageItemData(); TCHAR message[1024] = ""; // 罐篮 酒捞袍狼 捞抚阑 备窃 if( StorageItemInfo* buy_info = ItemData.FindStorageItem(ack->use_item_.storage_sequence_) ) { CShopProduct* shop_product = NULL; if ( shop_list_manager_->GetListPtr()->GetProductListPtr()->GetValueByKey(buy_info->product_sequence_, shop_product) == true) { Snprintf( message, 1024-1, "%s %d%s", shop_product->ProductName, ack->inventory_info_.m_InvenCount, g_InterfaceManager.GetInterfaceString(155565) ); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, message); } // 历厘家俊辑 昏力 ItemData.EraseStorageItem( ack->use_item_.storage_sequence_ ); } bool is_continue = false; if( is_all_item_receive_ ) { // 葛滴 罐扁牢 版快 巢酒 乐促搁 拌加 焊辰促 if( is_my_item_receive_ == true )/*&& IsEmptyBuyStorage() == false )*/ { if( IsEmptyBuyStorage() == false ) { SendUseageStorageBuyItemOnce(); OnReceveStorageItem( message, true, is_all_item_receive_, is_my_item_receive_, true ); is_continue = true; } } else if( is_my_item_receive_ == false )//&& IsEmptyGiftStorage() == false ) { if( IsEmptyGiftStorage() == false ) { SendUseageStorageGiftItemOnce(); OnReceveStorageItem( message, true, is_all_item_receive_, is_my_item_receive_, true ); is_continue = true; } } } if( is_continue == false ) { //! 促 罐疽栏搁 格废阑 促矫 夸没茄促. int page_index = ItemData.GetPage(); if( ItemData.GetCountPerPage() == 0 ) { // 泅犁 其捞瘤俊 0俺啊 登菌促搁, --page_index; if( page_index < 1 ) page_index = 1; } is_my_item_receive_ ? SEND_CG_SHOP_BUY_STORAGE_LIST_SYN(page_index, 10) : SEND_CG_SHOP_GIFT_STORAGE_LIST_SYN(page_index, 10); OnReceveStorageItem( message, true, is_all_item_receive_, is_my_item_receive_, false ); } break; } case CG_SHOP_USE_STORAGE_ITEM_NAK: { MSG_CG_SHOP_USE_STORAGE_ITEM_NAK* nak = static_cast(pk); TCHAR msg[INTERFACE_STRING_LENGTH] = {NULL, }; DWORD msg_color; GetErrorStringByErrorCode(nak->error_code_, msg, INTERFACE_STRING_LENGTH, &msg_color); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, msg); g_InterfaceManager.ShowCenterMessageBox(msg, 5000, &msg_color, FALSE); //!再要求一次目录。 StorageItemList& ItemData = is_my_item_receive_ ? GetStorageItemData() : GetGiftStorageItemData(); int page_index = ItemData.GetPage(); if( ItemData.GetCountPerPage() == 0 ) { //如果当前页为零, --page_index; if( page_index < 1 ) page_index = 1; } is_my_item_receive_ ? SEND_CG_SHOP_BUY_STORAGE_LIST_SYN(page_index, 10) : SEND_CG_SHOP_GIFT_STORAGE_LIST_SYN(page_index, 10); OnReceveStorageItem( msg, false, is_all_item_receive_, is_my_item_receive_, false ); } break; case CG_SHOP_CHAR_NAME_CHECK_ACK: { MSG_CG_SHOP_CHAR_NAME_CHECK_ACK* ack = static_cast(pk); OnResultNameCheck( true, ack->character_name_, ack->character_level_, ack->guild_name_ ); } break; case CG_SHOP_CHAR_NAME_CHECK_NAK: { MSG_CG_SHOP_CHAR_NAME_CHECK_NAK* nak = static_cast(pk); OutputErrorMessage( nak->error_code_ ); OnResultNameCheck( false, NULL, 0, NULL ); } break; case CG_SHOP_EXIST_GIFT_ACK: case CG_SHOP_EXIST_GIFT_NTF: { has_new_present_ = true; } break; case CG_SHOP_EXIST_GIFT_NAK: { has_new_present_ = false; } break; } #endif } void CashShop::SendBuyItem(std::vector& purchase_list, Define::CashType cash_type) { SEND_CG_SHOP_BUY_ITEM_SYN(purchase_list, cash_type); OnBeginWaiting(); } void CashShop::SendGiftItem(std::vector& purchase_list, Define::CashType cash_type, LPCTSTR recv_name, LPCTSTR recv_msg) { SEND_CG_SHOP_SEND_GIFT_SYN(purchase_list, cash_type, recv_name, recv_msg); OnBeginWaiting(); } void CashShop::ReceiveStorageItem( bool bAllReceive, bool bIsMyItem ) { is_my_item_receive_ = bIsMyItem; is_all_item_receive_ = bAllReceive; OnStartReceiveStorageItem( bAllReceive, bIsMyItem ); } void CashShop::OutputErrorMessage( int error_code ) { TCHAR msg[INTERFACE_STRING_LENGTH] = {NULL, }; DWORD msg_color; GetErrorStringByErrorCode(error_code, msg, INTERFACE_STRING_LENGTH, &msg_color); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, msg); g_InterfaceManager.ShowCenterMessageBox(msg, 5000, &msg_color, FALSE); } void CashShop::GetErrorStringByErrorCode(int error_code, OUT TCHAR* output_msg, int string_size, DWORD* string_color/* = NULL*/) { #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL if( error_code == RC::RC_SHOP_SUCCESS ) { return; } //弦码从6791开始 DWORD string_code = 6791 + error_code - (DWORD)(RC::RC_SHOP_PROCESS_TRANSACTION); if( error_code == RC::RC_SHOP_EVENT_ITEM_GIFT_IMPOSSIBLE ) string_code = 6822; else if( error_code == RC::RC_SHOP_EVENT_ITEM_GIFT_COUNT_OVER ) string_code = 6823; else if( error_code == RC::RC_SHOP_LIMIT_CASH_TO_GIFT ) string_code = 6824; else if( error_code == RC::RC_SHOP_FAILED ) string_code = 6827; //字符配色 WzColor text_color = WzColor_RGBA(129,254,82,255); // default color if( error_code == RC::RC_SHOP_ALREADY_EXSIT_USER || error_code == RC::RC_SHOP_INVENTORY_FULL || error_code == RC::RC_SHOP_EVENT_ITEM_BUY_IMPOSSIBLE || error_code == RC::RC_SHOP_NOT_ENOUGH_CASH ) { //红色字母 text_color = WzColor_RGB(197, 47, 47); } //其他额外任务 if( error_code == RC::RC_SHOP_ALREADY_EXSIT_USER ) { //!咱们把商店拆线吧。 SEND_CG_SHOP_CLOSE_NTF(); OnHideCashShop(); } if( string_color != NULL ) { *string_color = text_color; } //文字输出 { TCHAR szMessage[INTERFACE_STRING_LENGTH] ={NULL, }; g_InterfaceManager.GetInterfaceString(string_code, szMessage, INTERFACE_STRING_LENGTH); _tcscat(output_msg, szMessage); //!错误代码输出 _tcscat(output_msg, _T("[")); { TCHAR temp[32] = {NULL, }; Snprintf(temp, 32, "%d", error_code); _tcscat(output_msg, temp); } _tcscat(output_msg, _T("]")); } #endif //_NA_0_20110613_GAME_SHOP_RENEWAL } //------------------------------------------------------------------------------ void CashShop::SEND_CG_SHOP_BUY_ITEM_SYN(std::vector& purchase_list, Define::CashType cash_type) { #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL //------------------------------------------------------------------------------ //!检查不会发送2个数据包 if (PacketRequestManager::Instance()->is_sent(CG_SHOP, CG_SHOP_BUY_ITEM_SYN)) { return; } PacketRequestManager::Instance()->PushPacket((new MSG_CG_SHOP_BUY_ITEM_SYN), (new MSG_CG_SHOP_BUY_ITEM_ACK), (new MSG_CG_SHOP_BUY_ITEM_NAK), sizeof(MSG_CG_SHOP_BUY_ITEM_SYN), PACKET_WAITING_MILLISECOND, false); //------------------------------------------------------------------------------ MSG_CG_SHOP_BUY_ITEM_SYN syn; syn.item_count_ = 0; for( size_t i=0;i!=purchase_list.size();++i) { PurchaseItem* purchase = purchase_list[i]; if ((purchase->is_lotto() == false) && (purchase->is_package() == false) && (purchase->GetPriceSequence() <= 0)) { continue; } syn.item_info_[syn.item_count_].product_display_sequence_ = purchase->GetShopCategory()->ProductDisplaySeq; //类别编号 syn.item_info_[syn.item_count_].package_product_sequence_ = purchase->GetShopPackage()->PackageProductSeq; //包号 syn.item_info_[syn.item_count_].price_sequence_ = purchase->GetPriceSequence(); syn.item_info_[syn.item_count_].cash_type_ = cash_type; syn.item_count_ += 1; if (syn.item_count_ >= SHOP_MAX_ITEM_BUY_COUNT) { GlobalFunc::SendPacketToGameServer(&syn, sizeof(syn)); syn.item_count_ = 0; } } if (syn.item_count_ > 0 && syn.item_count_ < SHOP_MAX_ITEM_BUY_COUNT) { GlobalFunc::SendPacketToGameServer(&syn, sizeof(syn)); } //------------------------------------------------------------------------------ if (CGeneralGameParam::Instance()->IsNet() == FALSE) { MSG_CG_SHOP_BUY_ITEM_ACK ack; ack.item_count_ = syn.item_count_; for (int i = 0; i < (int)syn.item_count_; ++i) { ack.item_info_[i].product_display_sequence_ = syn.item_info_[i].product_display_sequence_; //类别编号 ack.item_info_[i].package_product_sequence_ = syn.item_info_[i].package_product_sequence_; //包号 ack.item_info_[i].price_sequence_ = syn.item_info_[i].price_sequence_; //价格号码 ack.item_info_[i].error_code_ = i; } NetworkProc(&ack); } #endif //_NA_0_20110613_GAME_SHOP_RENEWAL } //------------------------------------------------------------------------------ void CashShop::SEND_CG_SHOP_SEND_GIFT_SYN(std::vector& purchase_list, Define::CashType cash_type, LPCTSTR recv_name, LPCTSTR recv_msg ) { #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL //------------------------------------------------------------------------------ //!检查不会发送2个数据包 if (PacketRequestManager::Instance()->is_sent(CG_SHOP, CG_SHOP_SEND_GIFT_SYN)) { return; } PacketRequestManager::Instance()->PushPacket((new MSG_CG_SHOP_SEND_GIFT_SYN), (new MSG_CG_SHOP_SEND_GIFT_ACK), (new MSG_CG_SHOP_SEND_GIFT_NAK), sizeof(MSG_CG_SHOP_SEND_GIFT_SYN), PACKET_WAITING_MILLISECOND, false); //------------------------------------------------------------------------------ MSG_CG_SHOP_SEND_GIFT_SYN syn; memset( syn.recv_character_name_, 0, sizeof(char) * (MAX_CHARNAME_LENGTH +1) ); memset( syn.gift_message_, 0, sizeof(char) * GIFT_MESSAGE_LENGTH ); syn.item_count_ = 0; StrnCopy(syn.recv_character_name_, recv_name, MAX_CHARNAME_LENGTH); StrnCopy(syn.gift_message_, recv_msg, GIFT_MESSAGE_LENGTH - 1); for( size_t i=0;i!=purchase_list.size();++i) { PurchaseItem* purchase = purchase_list[i]; if ((purchase->is_lotto() == false) && (purchase->is_package() == false) && (purchase->GetPriceSequence() <= 0)) { continue; } syn.item_info_[syn.item_count_].product_display_sequence_ = purchase->GetDisplaySequence(); //类别编号 syn.item_info_[syn.item_count_].package_product_sequence_ = purchase->GetPackageSequence(); //包号 syn.item_info_[syn.item_count_].price_sequence_ = purchase->GetPriceSequence(); syn.item_info_[syn.item_count_].cash_type_ = cash_type; syn.item_count_ += 1; if (syn.item_count_ >= SHOP_MAX_ITEM_BUY_COUNT) { GlobalFunc::SendPacketToGameServer(&syn, sizeof(syn)); syn.item_count_ = 0; } } if (syn.item_count_ > 0 && syn.item_count_ < SHOP_MAX_ITEM_BUY_COUNT) { GlobalFunc::SendPacketToGameServer(&syn, sizeof(syn)); } //------------------------------------------------------------------------------ if (CGeneralGameParam::Instance()->IsNet() == FALSE) { MSG_CG_SHOP_SEND_GIFT_ACK ack; ack.item_count_ = 0; NetworkProc(&ack); } #endif //_NA_0_20110613_GAME_SHOP_RENEWAL } //------------------------------------------------------------------------------ void CashShop::SEND_CG_SHOP_BUY_STORAGE_LIST_SYN( int page_index, int request_count) { #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL //------------------------------------------------------------------------------ //!检查不会发送2个数据包 if (PacketRequestManager::Instance()->is_sent(CG_SHOP, CG_SHOP_BUY_STORAGE_LIST_SYN)) { return; } PacketRequestManager::Instance()->PushPacket((new MSG_CG_SHOP_BUY_STORAGE_LIST_SYN), (new MSG_CG_SHOP_BUY_STORAGE_LIST_ACK), (new MSG_CG_SHOP_BUY_STORAGE_LIST_NAK), sizeof(MSG_CG_SHOP_BUY_STORAGE_LIST_SYN), PACKET_WAITING_MILLISECOND, false); //------------------------------------------------------------------------------ if (request_count <= 0) { return; } if (request_count > BUY_STORAGE_ITEM_PER_PAGE) { request_count = BUY_STORAGE_ITEM_PER_PAGE; } MSG_CG_SHOP_BUY_STORAGE_LIST_SYN syn; syn.page_ = page_index; syn.item_count_per_page_ = request_count; // MAX_STORAGE_ITEM_PER_PAGE以下. GlobalFunc::SendPacketToGameServer(&syn, sizeof(syn)); if (CGeneralGameParam::Instance()->IsNet() == FALSE) { MSG_CG_SHOP_BUY_STORAGE_LIST_ACK ack; ack.page_ = 1; ack.total_page_ = 1; ack.total_item_count_ = 1; ack.item_count_ = BUY_STORAGE_ITEM_PER_PAGE; for (int i = 0; i < ack.item_count_; ++i) { //ack.item_info_[i].storage_sequence_; //保管箱序号 //ack.item_info_[i].storage_item_sequence_; //保管箱序号或缓存条目序号 //ack.item_info_[i].product_sequence_; //单位商品代码 //ack.item_info_[i].price_sequence_; //价格号码 //ack.item_info_[i].storage_item_type_; //区分货物缓存(P:货物,C:缓存) //ack.item_info_[i].buy_character_name_[MAX_CHARNAME_LENGTH+1]; ack.item_info_[i].product_sequence_ = 7191 + i; ack.item_info_[i].price_sequence_ = 6157 + i; //价格号码 } NetworkProc(&ack); } #endif } //------------------------------------------------------------------------------ void CashShop::SEND_CG_SHOP_GIFT_STORAGE_LIST_SYN(int page_index, int request_count) { #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL //------------------------------------------------------------------------------ //!检查不会发送2个数据包 if (PacketRequestManager::Instance()->is_sent(CG_SHOP, CG_SHOP_GIFT_STORAGE_LIST_SYN)) { return; } PacketRequestManager::Instance()->PushPacket((new MSG_CG_SHOP_GIFT_STORAGE_LIST_SYN), (new MSG_CG_SHOP_GIFT_STORAGE_LIST_ACK), (new MSG_CG_SHOP_GIFT_STORAGE_LIST_NAK), sizeof(MSG_CG_SHOP_GIFT_STORAGE_LIST_SYN), PACKET_WAITING_MILLISECOND, false); //------------------------------------------------------------------------------ if (request_count <= 0) { return; } if (request_count > BUY_STORAGE_ITEM_PER_PAGE) { request_count = BUY_STORAGE_ITEM_PER_PAGE; } MSG_CG_SHOP_GIFT_STORAGE_LIST_SYN syn; syn.page_ = page_index; syn.item_count_per_page_ = request_count; // MAX_STORAGE_ITEM_PER_PAGE以下 GlobalFunc::SendPacketToGameServer(&syn, sizeof(syn)); if (CGeneralGameParam::Instance()->IsNet() == FALSE) { MSG_CG_SHOP_GIFT_STORAGE_LIST_ACK ack; ack.page_ = 1; ack.total_page_ = 1; ack.total_item_count_ = 1; ack.item_count_ = BUY_STORAGE_ITEM_PER_PAGE; for (int i = 0; i < ack.item_count_; ++i) { //ack.item_info_[i].storage_sequence_; //保管箱序号 //ack.item_info_[i].storage_item_sequence_; //保管箱序号或缓存条目序号 //ack.item_info_[i].product_sequence_; //单位商品代码 //ack.item_info_[i].price_sequence_; //价格号码 //ack.item_info_[i].storage_item_type_; //区分货物缓存(P:货物,C:缓存) //ack.item_info_[i].buy_character_name_[MAX_CHARNAME_LENGTH+1]; ack.item_info_[i].product_sequence_ = 7195 + i; ack.item_info_[i].price_sequence_ = 6171 + i; //价格号码 StrnCopy(ack.item_info_[i].send_character_name_, "aaa", MAX_CHARNAME_LENGTH); StrnCopy(ack.item_info_[i].recv_character_name_, "bbb", MAX_CHARNAME_LENGTH); StrnCopy(ack.item_info_[i].gift_message_, "afasdfasdfasdfasdfsfd", GIFT_MESSAGE_LENGTH); } NetworkProc(&ack); } #endif } //------------------------------------------------------------------------------ void CashShop::SEND_CG_SHOP_EXIST_GIFT_SYN() { #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL MSG_CG_SHOP_EXIST_GIFT_SYN syn; GlobalFunc::SendPacketToGameServer(&syn, sizeof(syn)); #endif } //------------------------------------------------------------------------------ void CashShop::SEND_CG_SHOP_CASH_SYN() { #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL //------------------------------------------------------------------------------ //!检查不会发送2个数据包 if (PacketRequestManager::Instance()->is_sent(CG_SHOP, CG_SHOP_CASH_SYN)) { return; } PacketRequestManager::Instance()->PushPacket((new MSG_CG_SHOP_CASH_SYN), (new MSG_CG_SHOP_CASH_ACK), (new MSG_CG_SHOP_CASH_NAK), sizeof(MSG_CG_SHOP_CASH_SYN), PACKET_WAITING_MILLISECOND, false); //------------------------------------------------------------------------------ MSG_CG_SHOP_CASH_SYN syn; GlobalFunc::SendPacketToGameServer(&syn, sizeof(syn)); if (CGeneralGameParam::Instance()->IsNet() == FALSE) { MSG_CG_SHOP_CASH_ACK ack; ack.cash_.cash_ = 100000; ack.cash_.pp_cash_ = 900000; ack.cash_.mileage_ = 800000; NetworkProc(&ack); } #endif //_NA_0_20110613_GAME_SHOP_RENEWAL } void CashShop::SEND_CG_SHOP_VERSION_SYN() { #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL //------------------------------------------------------------------------------ //!检查不会发送2个数据包 if (PacketRequestManager::Instance()->is_sent(CG_SHOP, CG_SHOP_VERSION_SYN)) { return; } PacketRequestManager::Instance()->PushPacket((new MSG_CG_SHOP_VERSION_SYN), (new MSG_CG_SHOP_VERSION_ACK), (new MSG_CG_SHOP_VERSION_NAK), sizeof(MSG_CG_SHOP_VERSION_SYN), PACKET_WAITING_MILLISECOND, false); //------------------------------------------------------------------------------ MSG_CG_SHOP_VERSION_SYN syn; GlobalFunc::SendPacketToGameServer(&syn, sizeof(syn)); if (CGeneralGameParam::Instance()->IsNet() == FALSE) { MSG_CG_SHOP_VERSION_ACK ack; ack.sales_version_.sales_zone_ = 329; ack.sales_version_.year_ = 2011; ack.sales_version_.year_identity_ = 5; NetworkProc(&ack); } #endif //_NA_0_20110613_GAME_SHOP_RENEWAL } void CashShop::SEND_CG_SHOP_OPEN_SYN() { #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL //------------------------------------------------------------------------------ //!检查不会发送2个数据包 if (PacketRequestManager::Instance()->is_sent(CG_SHOP, CG_SHOP_OPEN_SYN)) { return; } PacketRequestManager::Instance()->PushPacket((new MSG_CG_SHOP_OPEN_SYN), (new MSG_CG_SHOP_OPEN_ACK), (new MSG_CG_SHOP_OPEN_NAK), sizeof(MSG_CG_SHOP_OPEN_SYN), PACKET_WAITING_MILLISECOND, false); //------------------------------------------------------------------------------ MSG_CG_SHOP_OPEN_SYN syn; syn.sales_version_ = sale_zone_script_version_; GlobalFunc::SendPacketToGameServer(&syn, sizeof(syn)); if (CGeneralGameParam::Instance()->IsNet() == FALSE) { MSG_CG_SHOP_OPEN_ACK ack; //ack.cash_info_.cash_ = 100000; //ack.cash_info_.pp_cash_ = 900000; //ack.cash_info_.mileage_ = 800000; NetworkProc(&ack); } #endif //_NA_0_20110613_GAME_SHOP_RENEWAL } void CashShop::SEND_CG_SHOP_CLOSE_NTF() { #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL MSG_CG_SHOP_CLOSE_NTF ntf; GlobalFunc::SendPacketToGameServer(&ntf, sizeof(ntf)); #endif //_NA_0_20110613_GAME_SHOP_RENEWAL } //------------------------------------------------------------------------------ void CashShop::SEND_CG_SHOP_USE_STORAGE_ITEM_SYN(StorageItem* pItemData,bool bAll/*=false*/) { #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL if( pItemData == NULL ) return; //------------------------------------------------------------------------------ //!检查不会发送2个数据包 if (PacketRequestManager::Instance()->is_sent(CG_SHOP, CG_SHOP_USE_STORAGE_ITEM_SYN)) { return; } PacketRequestManager::Instance()->PushPacket((new MSG_CG_SHOP_USE_STORAGE_ITEM_SYN), (new MSG_CG_SHOP_USE_STORAGE_ITEM_ACK), (new MSG_CG_SHOP_USE_STORAGE_ITEM_NAK), sizeof(MSG_CG_SHOP_USE_STORAGE_ITEM_SYN), PACKET_WAITING_MILLISECOND, false); //------------------------------------------------------------------------------ if (pItemData == NULL) { return; } MSG_CG_SHOP_USE_STORAGE_ITEM_SYN syn; syn.use_item_.storage_sequence_ = pItemData->GetItemInfo()->storage_sequence_; syn.use_item_.bUseAll = bAll; GlobalFunc::SendPacketToGameServer(&syn, sizeof(syn)); if (CGeneralGameParam::Instance()->IsNet() == FALSE) { MSG_CG_SHOP_USE_STORAGE_ITEM_ACK ack; NetworkProc(&ack); } #endif //_NA_0_20110613_GAME_SHOP_RENEWAL } //------------------------------------------------------------------------------ void CashShop::SEND_CG_SHOP_CHECK_CHAR_NAME_SYN(LPCTSTR name) { #ifdef _NA_0_20110613_GAME_SHOP_RENEWAL //------------------------------------------------------------------------------ //!检查不会发送2个数据包 if (PacketRequestManager::Instance()->is_sent(CG_SHOP, CG_SHOP_CHAR_NAME_CHECK_SYN)) { return; } PacketRequestManager::Instance()->PushPacket((new MSG_CG_SHOP_CHAR_NAME_CHECK_SYN), (new MSG_CG_SHOP_CHAR_NAME_CHECK_ACK), (new MSG_CG_SHOP_CHAR_NAME_CHECK_NAK), sizeof(MSG_CG_SHOP_CHAR_NAME_CHECK_SYN), PACKET_WAITING_MILLISECOND, false); //------------------------------------------------------------------------------ MSG_CG_SHOP_CHAR_NAME_CHECK_SYN syn; memset( syn.character_name_, 0, sizeof(char) * MAX_CHARNAME_LENGTH+1 ); StrnCopy(syn.character_name_, name, MAX_CHARNAME_LENGTH); GlobalFunc::SendPacketToGameServer(&syn, sizeof(syn)); if (CGeneralGameParam::Instance()->IsNet() == FALSE) { static int temp = 0; ++temp; if (temp % 2) { MSG_CG_SHOP_CHAR_NAME_CHECK_ACK ack; NetworkProc(&ack); } else { MSG_CG_SHOP_CHAR_NAME_CHECK_NAK nak; NetworkProc(&nak); } } #endif //_NA_0_20110613_GAME_SHOP_RENEWAL } void CashShop::SendNameCheck( LPCTSTR name ) { SEND_CG_SHOP_CHECK_CHAR_NAME_SYN( name ); } };