1002 lines
37 KiB
C++
1002 lines
37 KiB
C++
#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<MSG_CG_SHOP_VERSION_ACK*>(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<MSG_CG_SHOP_VERSION_NAK*>(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<MSG_CG_SHOP_OPEN_NAK*>(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<MSG_CG_SHOP_CLOSE_NTF*>(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<MSG_CG_SHOP_CASH_ACK*>(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<MSG_CG_SHOP_OPEN_NAK*>(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<MSG_CG_SHOP_BUY_STORAGE_LIST_ACK*>(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<MSG_CG_SHOP_BUY_STORAGE_LIST_NAK*>(pk);
|
|
OutputErrorMessage( nak->error_code_ );
|
|
}
|
|
break;
|
|
case CG_SHOP_GIFT_STORAGE_LIST_ACK:
|
|
{
|
|
MSG_CG_SHOP_GIFT_STORAGE_LIST_ACK* ack = static_cast<MSG_CG_SHOP_GIFT_STORAGE_LIST_ACK*>(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<MSG_CG_SHOP_GIFT_STORAGE_LIST_NAK*>(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<MSG_CG_SHOP_BUY_ITEM_ACK*>(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<MSG_CG_SHOP_SEND_GIFT_ACK*>(pk);
|
|
OnSuccessGiftItem( ack->item_info_, ack->item_count_ );
|
|
}
|
|
break;
|
|
case CG_SHOP_BUY_ITEM_NAK:
|
|
{
|
|
MSG_CG_SHOP_BUY_ITEM_NAK* nak = static_cast<MSG_CG_SHOP_BUY_ITEM_NAK*>(pk);
|
|
OutputErrorMessage( nak->error_code_ );
|
|
OnEndWaiting();
|
|
}
|
|
break;
|
|
case CG_SHOP_SEND_GIFT_NAK:
|
|
{
|
|
MSG_CG_SHOP_SEND_GIFT_NAK* nak = static_cast<MSG_CG_SHOP_SEND_GIFT_NAK*>(pk);
|
|
OutputErrorMessage( nak->error_code_ );
|
|
OnEndWaiting();
|
|
}
|
|
break;
|
|
|
|
case CG_SHOP_USE_STORAGE_ITEM_ACK:
|
|
{
|
|
MSG_CG_SHOP_USE_STORAGE_ITEM_ACK* ack = static_cast<MSG_CG_SHOP_USE_STORAGE_ITEM_ACK*>(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<MSG_CG_SHOP_USE_STORAGE_ITEM_NAK*>(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<MSG_CG_SHOP_CHAR_NAME_CHECK_ACK*>(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<MSG_CG_SHOP_CHAR_NAME_CHECK_NAK*>(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<PurchaseItem*>& purchase_list, Define::CashType cash_type)
|
|
{
|
|
SEND_CG_SHOP_BUY_ITEM_SYN(purchase_list, cash_type);
|
|
OnBeginWaiting();
|
|
}
|
|
|
|
void CashShop::SendGiftItem(std::vector<PurchaseItem*>& 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<PurchaseItem*>& 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<PurchaseItem*>& 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 );
|
|
}
|
|
};
|
|
|