商城购买修正
This commit is contained in:
parent
34af6a1936
commit
627bf43ee3
|
|
@ -2,78 +2,88 @@
|
||||||
#ifndef __GAMEDATAMANAGER_H__
|
#ifndef __GAMEDATAMANAGER_H__
|
||||||
#define __GAMEDATAMANAGER_H__
|
#define __GAMEDATAMANAGER_H__
|
||||||
|
|
||||||
struct AWARD_ITEM
|
struct CeraShopBonusCodeType
|
||||||
{
|
{
|
||||||
|
int code_min;
|
||||||
|
int code_max;
|
||||||
|
int code_count;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct CeraShopBonusItemType
|
||||||
|
{
|
||||||
|
|
||||||
int item_id;
|
int item_id;
|
||||||
int item_num;
|
int item_num;
|
||||||
|
bool is_random;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class CGameDataManager
|
class CGameDataManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SINGLETON_DEFINE_S(CGameDataManager);
|
SINGLETON_DEFINE_S(CGameDataManager);
|
||||||
|
|
||||||
CGameDataManager() :
|
CGameDataManager()
|
||||||
cera_award_begin_id(0),
|
|
||||||
cera_award_end_id(0)
|
|
||||||
{
|
{
|
||||||
|
cera_shop_bonus_code_array.clear();
|
||||||
|
cera_shop_bonus_item_map.Clear();
|
||||||
}
|
}
|
||||||
~CGameDataManager() {};
|
~CGameDataManager() {};
|
||||||
public:
|
public:
|
||||||
void set_cera_award_begin_id(int id)
|
|
||||||
|
bool is_cera_shop_bonus_code(int code_id, CeraShopBonusCodeType* res = NULL)
|
||||||
{
|
{
|
||||||
cera_award_begin_id = id;
|
for (size_t i = 0; i < cera_shop_bonus_code_array.size(); i++)
|
||||||
|
{
|
||||||
|
CeraShopBonusCodeType cera_shop_bonus_code_ = cera_shop_bonus_code_array.at(i);
|
||||||
|
if (code_id >= cera_shop_bonus_code_.code_min && code_id <= cera_shop_bonus_code_.code_max)
|
||||||
|
{
|
||||||
|
if (res != NULL) *res = cera_shop_bonus_code_;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
void set_cera_award_end_id(int id)
|
|
||||||
{
|
|
||||||
cera_award_end_id = id;
|
|
||||||
}
|
}
|
||||||
int get_cera_award_begin_id()
|
return false;
|
||||||
{
|
|
||||||
return cera_award_begin_id;
|
|
||||||
}
|
|
||||||
int get_cera_award_end_id()
|
|
||||||
{
|
|
||||||
return cera_award_end_id;
|
|
||||||
}
|
|
||||||
bool add_cera_awarw_item(int count_, int item_id, int item_num)
|
|
||||||
{
|
|
||||||
cera_award_item.Push(count_, { item_id ,item_num });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::TMap<int, AWARD_ITEM>* get_cera_award_item_map()
|
bool get_rand_cera_shop_bonus_item(CeraShopBonusItemType* res = NULL)
|
||||||
{
|
{
|
||||||
return &cera_award_item;
|
int size = get_random_item_num();
|
||||||
|
for (int i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
int random_value = Utils::Rand(1, size - 1);
|
||||||
|
CeraShopBonusItemType cera_shop_bonusi_temt = cera_shop_bonus_item_map_rand.Map.at(random_value);
|
||||||
|
if (cera_shop_bonusi_temt.is_random == true)
|
||||||
|
{
|
||||||
|
if (res != NULL) *res = cera_shop_bonusi_temt;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int get_random_item_num()
|
||||||
|
|
||||||
void set_cera_award_package_begin_id(int id)
|
|
||||||
{
|
{
|
||||||
cera_award_package_begin_id = id;
|
return cera_shop_bonus_item_map_rand.Size();
|
||||||
}
|
|
||||||
void set_cera_award_package_end_id(int id)
|
|
||||||
{
|
|
||||||
cera_award_package_end_id = id;
|
|
||||||
}
|
|
||||||
int get_cera_award_package_begin_id()
|
|
||||||
{
|
|
||||||
return cera_award_package_begin_id;
|
|
||||||
}
|
|
||||||
int get_cera_award_package_end_id()
|
|
||||||
{
|
|
||||||
return cera_award_package_end_id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool add_cera_award_package_item(int count_, int item_id, int item_num)
|
bool add_cera_shop_bonus_item(int count_, int item_id, int item_num, bool is_random)
|
||||||
{
|
{
|
||||||
cera_award_package_item.Push(count_, { item_id ,item_num });
|
cera_shop_bonus_item_map.Push(count_, { item_id ,item_num ,is_random });
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::TMap<int, AWARD_ITEM>* get_cera_award_package_item_map()
|
Utils::TMap<int, CeraShopBonusItemType>* get_cera_shop_bonus_item_map()
|
||||||
{
|
{
|
||||||
return &cera_award_package_item;
|
return &cera_shop_bonus_item_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<CeraShopBonusCodeType>* get_cera_shop_bonus_code_array()
|
||||||
|
{
|
||||||
|
return &cera_shop_bonus_code_array;
|
||||||
|
}
|
||||||
|
|
||||||
|
Utils::TMap<int, CeraShopBonusItemType>* get_cera_shop_bonus_item_map_rand()
|
||||||
|
{
|
||||||
|
return &cera_shop_bonus_item_map_rand;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -81,13 +91,11 @@ protected:
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int cera_award_begin_id; //商城奖励开始id
|
|
||||||
int cera_award_end_id; //商城奖励结束id
|
|
||||||
int cera_award_package_begin_id; //商城礼包奖励开始id
|
|
||||||
int cera_award_package_end_id; //商城礼包奖励结束id
|
|
||||||
|
|
||||||
Utils::TMap<int, AWARD_ITEM> cera_award_item; // 次数 + 数据
|
std::vector<CeraShopBonusCodeType> cera_shop_bonus_code_array;
|
||||||
Utils::TMap<int, AWARD_ITEM> cera_award_package_item; // 次数 + 数据
|
|
||||||
|
Utils::TMap<int, CeraShopBonusItemType> cera_shop_bonus_item_map; // ´ÎÊý + Êý¾Ý
|
||||||
|
Utils::TMap<int, CeraShopBonusItemType> cera_shop_bonus_item_map_rand; // ´ÎÊý + Êý¾Ý
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,8 @@ void Controller::init()
|
||||||
|
|
||||||
HOOK_SETUP(DisPatcher_ReturnToSelectCharacter_dispatch_sig);
|
HOOK_SETUP(DisPatcher_ReturnToSelectCharacter_dispatch_sig);
|
||||||
|
|
||||||
|
HOOK_SETUP(Init);
|
||||||
|
|
||||||
LOG("Controller::init()");
|
LOG("Controller::init()");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -247,46 +249,8 @@ int Controller::hook_DisPatcher_ReturnToSelectCharacter_dispatch_sig(void* a1, C
|
||||||
|
|
||||||
void Controller::hook_importCashShopItemList(const std::string* str)
|
void Controller::hook_importCashShopItemList(const std::string* str)
|
||||||
{
|
{
|
||||||
if (str == NULL) return;
|
if (str != NULL)
|
||||||
if (*str == "[start end id]")
|
CDispatch::Get()->importCashShopItemList(str);
|
||||||
{
|
|
||||||
int item_id_begin_ = ScanInt();
|
|
||||||
int item_id_end_ = ScanInt();
|
|
||||||
|
|
||||||
CGameDataManager::Get()->set_cera_award_begin_id(item_id_begin_);
|
|
||||||
CGameDataManager::Get()->set_cera_award_end_id(item_id_end_);
|
|
||||||
}
|
|
||||||
else if (*str == "[reward item]")
|
|
||||||
{
|
|
||||||
int _total = ScanInt();
|
|
||||||
for (int i = 0; i < _total; i++)
|
|
||||||
{
|
|
||||||
int count_ = ScanInt();
|
|
||||||
int item_id = ScanInt();
|
|
||||||
int item_num = ScanInt();
|
|
||||||
CGameDataManager::Get()->add_cera_awarw_item(count_, item_id, item_num);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (*str == "[start end package]")
|
|
||||||
{
|
|
||||||
int item_id_begin_ = ScanInt();
|
|
||||||
int item_id_end_ = ScanInt();
|
|
||||||
|
|
||||||
CGameDataManager::Get()->set_cera_award_package_begin_id(item_id_begin_);
|
|
||||||
CGameDataManager::Get()->set_cera_award_package_end_id(item_id_end_);
|
|
||||||
}
|
|
||||||
else if (*str == "[package item]")
|
|
||||||
{
|
|
||||||
int _total = ScanInt();
|
|
||||||
for (int i = 0; i < _total; i++)
|
|
||||||
{
|
|
||||||
int count_ = ScanInt();
|
|
||||||
int item_id = ScanInt();
|
|
||||||
int item_num = ScanInt();
|
|
||||||
CGameDataManager::Get()->add_cera_award_package_item(count_, item_id, item_num);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller::hook_ProcessIPG_ResultOutput(CUser* user, int Goods_No, int item_id, int Cera_Type, InterfacePacketBuf* pbuf)
|
void Controller::hook_ProcessIPG_ResultOutput(CUser* user, int Goods_No, int item_id, int Cera_Type, InterfacePacketBuf* pbuf)
|
||||||
|
|
@ -299,3 +263,13 @@ int Controller::hook_Dispatcher_BuyCeraShopItem_dispatch_sig(void* a1, CUser* pU
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Controller::hook_Init(int a1, char** a2)
|
||||||
|
{
|
||||||
|
auto result = Get()->old_Init(a1, a2);
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
CDispatch::Get()->Init_done(a1, (const char**)a2);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,9 @@ private:
|
||||||
static void hook_ProcessIPG_ResultOutput(CUser* user, int Goods_No, int item_id, int Cera_Type, InterfacePacketBuf* pbuf);
|
static void hook_ProcessIPG_ResultOutput(CUser* user, int Goods_No, int item_id, int Cera_Type, InterfacePacketBuf* pbuf);
|
||||||
|
|
||||||
static int hook_Dispatcher_BuyCeraShopItem_dispatch_sig(void* a1, CUser* pUser, PacketBuf* pBuf);
|
static int hook_Dispatcher_BuyCeraShopItem_dispatch_sig(void* a1, CUser* pUser, PacketBuf* pBuf);
|
||||||
|
|
||||||
|
static bool hook_Init(int a1, char** a2);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
INIT_HOOK(IPacketDispatcher_ParamBase_dispatch_template, base::IPacketDispatcher::ParamBase::dispatch_template);
|
INIT_HOOK(IPacketDispatcher_ParamBase_dispatch_template, base::IPacketDispatcher::ParamBase::dispatch_template);
|
||||||
|
|
@ -78,6 +81,7 @@ private:
|
||||||
INIT_HOOK(DisPatcher_MoveMap_dispatch_sig, base::DisPatcher_MoveMap::dispatch_sig);
|
INIT_HOOK(DisPatcher_MoveMap_dispatch_sig, base::DisPatcher_MoveMap::dispatch_sig);
|
||||||
INIT_HOOK(Inter_LoadEtc_dispatch_sig, base::Inter_LoadEtc::dispatch_sig);
|
INIT_HOOK(Inter_LoadEtc_dispatch_sig, base::Inter_LoadEtc::dispatch_sig);
|
||||||
INIT_HOOK(DisPatcher_ReturnToSelectCharacter_dispatch_sig, base::DisPatcher_ReturnToSelectCharacter::dispatch_sig);
|
INIT_HOOK(DisPatcher_ReturnToSelectCharacter_dispatch_sig, base::DisPatcher_ReturnToSelectCharacter::dispatch_sig);
|
||||||
|
INIT_HOOK(Init, base::Init);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
153
src/dispatch.cpp
153
src/dispatch.cpp
|
|
@ -561,17 +561,33 @@ ENUM_PACK_RET_TYPE CDispatch::ProcessIPG_ResultOutput(CUser* user, int Goods_No,
|
||||||
|
|
||||||
if (Cera_Type == 0) //0Êǵãȯ 1ÊÇ´ú±Ò
|
if (Cera_Type == 0) //0Êǵãȯ 1ÊÇ´ú±Ò
|
||||||
{
|
{
|
||||||
if (Goods_No >= CGameDataManager::Get()->get_cera_award_begin_id() && Goods_No <= CGameDataManager::Get()->get_cera_award_end_id())
|
CeraShopBonusCodeType cera_shop_bonus_code_;
|
||||||
|
if (CGameDataManager::Get()->is_cera_shop_bonus_code(Goods_No, &cera_shop_bonus_code_))
|
||||||
{
|
{
|
||||||
int cur_purchase_count = 1;
|
CeraShopBonusItemType BonusItem;
|
||||||
AWARD_ITEM BonusItem;
|
int cur_purchase_count = cera_shop_bonus_code_.code_count;
|
||||||
|
if (cur_purchase_count > 0)
|
||||||
|
{
|
||||||
|
if (!CGameDataManager::Get()->get_cera_shop_bonus_item_map()->Find(cur_purchase_count, &BonusItem))
|
||||||
|
{
|
||||||
|
goto IPG_END;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!CGameDataManager::Get()->get_rand_cera_shop_bonus_item(&BonusItem))
|
||||||
|
{
|
||||||
|
goto IPG_END;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LOG("Size:%d", CGameDataManager::Get()->get_cera_award_item_map()->Size());
|
|
||||||
if (CGameDataManager::Get()->get_cera_award_item_map()->Find(cur_purchase_count, &BonusItem))
|
|
||||||
{
|
|
||||||
if (user->getCurCharacR())
|
if (user->getCurCharacR())
|
||||||
{
|
{
|
||||||
if (BonusItem.item_id == 1)
|
if (BonusItem.item_num == 0)
|
||||||
|
{
|
||||||
|
goto IPG_END;
|
||||||
|
}
|
||||||
|
else if (BonusItem.item_id == 1)
|
||||||
{
|
{
|
||||||
WongWork::CCeraShop::G_CCeraShop()->_processCoin(user, BonusItem.item_num, 0);
|
WongWork::CCeraShop::G_CCeraShop()->_processCoin(user, BonusItem.item_num, 0);
|
||||||
}
|
}
|
||||||
|
|
@ -621,73 +637,10 @@ ENUM_PACK_RET_TYPE CDispatch::ProcessIPG_ResultOutput(CUser* user, int Goods_No,
|
||||||
}
|
}
|
||||||
//0817964F 0817967F
|
//0817964F 0817967F
|
||||||
CMem::WriteBytes((void*)0x0817964F, code.data(), code.size());
|
CMem::WriteBytes((void*)0x0817964F, code.data(), code.size());
|
||||||
return;
|
return PAK_OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (Goods_No >= CGameDataManager::Get()->get_cera_award_package_begin_id() && Goods_No <= CGameDataManager::Get()->get_cera_award_package_end_id())
|
IPG_END:
|
||||||
{
|
|
||||||
int cur_purchase_count = 1;
|
|
||||||
AWARD_ITEM BonusItem;
|
|
||||||
LOG("Size:%d", CGameDataManager::Get()->get_cera_award_package_item_map()->Size());
|
|
||||||
if (CGameDataManager::Get()->get_cera_award_package_item_map()->Find(cur_purchase_count, &BonusItem))
|
|
||||||
{
|
|
||||||
if (user->getCurCharacR())
|
|
||||||
{
|
|
||||||
if (BonusItem.item_id == 1)
|
|
||||||
{
|
|
||||||
WongWork::CCeraShop::G_CCeraShop()->_processCoin(user, BonusItem.item_num, 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
auto item = CDataManager::G_CDataManager()->find_item(BonusItem.item_id);
|
|
||||||
if (item)
|
|
||||||
{
|
|
||||||
//if (item->is_stackable()
|
|
||||||
// && ((*(int(**)(CItem*))(*(_DWORD*)item + 12))(item) == 16 // GetItemType
|
|
||||||
// || (*(int(**)(CItem*))(*(_DWORD*)item + 12))(item) == 34)) // GetItemType
|
|
||||||
{
|
|
||||||
int inserted = -1;
|
|
||||||
Inven_Item v60 = {};
|
|
||||||
*(_DWORD*)((char*)&v60 + 2) = BonusItem.item_id;
|
|
||||||
*(_DWORD*)((char*)&v60 + 7) = BonusItem.item_num;
|
|
||||||
|
|
||||||
(*(void(**)(CItem*, Inven_Item*))(*(_DWORD*)item + 8))(item, &v60);
|
|
||||||
|
|
||||||
auto CurCharacInvenW = user->getCurCharacInvenW();
|
|
||||||
|
|
||||||
inserted = CurCharacInvenW->insertItemIntoInventory(v60, 15, 1, 0);
|
|
||||||
if (inserted == -1)
|
|
||||||
{
|
|
||||||
auto CurCharacNo = user->getCurCharacNo();
|
|
||||||
|
|
||||||
((WongWork::CMailBoxHelper*)(user))->ReqDBSendNewMailCashShop(&v60, 0, CurCharacNo, 1, 0, 0);
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
user->SendUpdateItemList(1, 0, inserted);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pbuf->put_int(BonusItem.item_id);
|
|
||||||
pbuf->put_int(BonusItem.item_num);
|
|
||||||
|
|
||||||
std::vector <unsigned char> code;
|
|
||||||
for (int i = 0; i < 0x30; i++)
|
|
||||||
{
|
|
||||||
code.push_back(0x90);
|
|
||||||
}
|
|
||||||
//0817964F 0817967F
|
|
||||||
CMem::WriteBytes((void*)0x0817964F, code.data(), code.size());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector <unsigned char> code = {
|
std::vector <unsigned char> code = {
|
||||||
0x8B, 0x85, 0x04, 0xFF, 0xFF, 0xFF, 0x89, 0x44, 0x24, 0x04, 0x8D, 0x85, 0x14, 0xFF, 0xFF, 0xFF,
|
0x8B, 0x85, 0x04, 0xFF, 0xFF, 0xFF, 0x89, 0x44, 0x24, 0x04, 0x8D, 0x85, 0x14, 0xFF, 0xFF, 0xFF,
|
||||||
0x89, 0x04, 0x24, 0xE8, 0xD5, 0x22, 0xF5, 0xFF, 0x8B, 0x85, 0x00, 0xFF, 0xFF, 0xFF, 0x89, 0x44,
|
0x89, 0x04, 0x24, 0xE8, 0xD5, 0x22, 0xF5, 0xFF, 0x8B, 0x85, 0x00, 0xFF, 0xFF, 0xFF, 0x89, 0x44,
|
||||||
|
|
@ -697,6 +650,62 @@ ENUM_PACK_RET_TYPE CDispatch::ProcessIPG_ResultOutput(CUser* user, int Goods_No,
|
||||||
return PAK_OK;
|
return PAK_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENUM_PACK_RET_TYPE CDispatch::Init_done(int argc, const char** argv)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
return PAK_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ENUM_PACK_RET_TYPE CDispatch::importCashShopItemList(const std::string* str)
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
|
||||||
|
[cash_shop_bonus_code]
|
||||||
|
3
|
||||||
|
10000 10053 0 0 随机获取一个发送
|
||||||
|
10054 10110 1 1 发第一个
|
||||||
|
100178 100180 3 3 发第三个
|
||||||
|
|
||||||
|
[cash_shop_bonus_item]
|
||||||
|
3
|
||||||
|
1 3037 10
|
||||||
|
2 3037 100
|
||||||
|
3 3037 1000
|
||||||
|
|
||||||
|
*/
|
||||||
|
if (*str == "[cash_shop_bonus_code]")
|
||||||
|
{
|
||||||
|
int _total = ScanInt();
|
||||||
|
|
||||||
|
for (int i = 0; i < _total; i++)
|
||||||
|
{
|
||||||
|
CeraShopBonusCodeType cera_shop_bonus_ = {};
|
||||||
|
cera_shop_bonus_.code_min = ScanInt();
|
||||||
|
cera_shop_bonus_.code_max = ScanInt();
|
||||||
|
cera_shop_bonus_.code_count = ScanInt();
|
||||||
|
CGameDataManager::Get()->get_cera_shop_bonus_code_array()->push_back(cera_shop_bonus_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (*str == "[cash_shop_bonus_item]")
|
||||||
|
{
|
||||||
|
int _total = ScanInt();
|
||||||
|
for (int i = 0; i < _total; i++)
|
||||||
|
{
|
||||||
|
int index_ = ScanInt();
|
||||||
|
int item_id = ScanInt();
|
||||||
|
int item_num = ScanInt();
|
||||||
|
int is_random = ScanInt();
|
||||||
|
if (is_random == 1)
|
||||||
|
{
|
||||||
|
CGameDataManager::Get()->get_cera_shop_bonus_item_map_rand()->Push(index_, { item_id, item_num, true });
|
||||||
|
}
|
||||||
|
CGameDataManager::Get()->add_cera_shop_bonus_item(index_, item_id, item_num, is_random);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return PAK_OK;
|
||||||
|
}
|
||||||
|
|
||||||
void CDispatch::SendMsg(CUser* user, int pack_id, int status, const std::string& str)
|
void CDispatch::SendMsg(CUser* user, int pack_id, int status, const std::string& str)
|
||||||
{
|
{
|
||||||
char out_str[0xff] = {};
|
char out_str[0xff] = {};
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,10 @@ public:
|
||||||
|
|
||||||
ENUM_PACK_RET_TYPE ProcessIPG_ResultOutput(CUser* user, int Goods_No, int item_id, int Cera_Type, InterfacePacketBuf* pbuf);
|
ENUM_PACK_RET_TYPE ProcessIPG_ResultOutput(CUser* user, int Goods_No, int item_id, int Cera_Type, InterfacePacketBuf* pbuf);
|
||||||
|
|
||||||
|
ENUM_PACK_RET_TYPE Init_done(int argc, const char** argv);
|
||||||
|
|
||||||
|
ENUM_PACK_RET_TYPE importCashShopItemList(const std::string* str);
|
||||||
|
|
||||||
void SendMsg(CUser* user, int pack_id, int status, const std::string& str);
|
void SendMsg(CUser* user, int pack_id, int status, const std::string& str);
|
||||||
|
|
||||||
void SendNoti(CUser* user, const std::string& str, NOTI_PACKETMESSAGE_TYPE type = NOTI_SYSTEM);
|
void SendNoti(CUser* user, const std::string& str, NOTI_PACKETMESSAGE_TYPE type = NOTI_SYSTEM);
|
||||||
|
|
|
||||||
|
|
@ -277,7 +277,7 @@ public:
|
||||||
|
|
||||||
int open(char* a2, uint a3, char* a4, char* a5, char* a6)
|
int open(char* a2, uint a3, char* a4, char* a5, char* a6)
|
||||||
{
|
{
|
||||||
return CallT<int>(base::MySQL::open, this, a2, a3, a4, a5, a6);
|
return CallT<int>(base::MySQL::open2, this, a2, a3, a4, a5, a6);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ping()
|
int ping()
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ public:
|
||||||
return CallT<int>(base::CShutdowManager::SendLastMsgDBQueue, this, a2);
|
return CallT<int>(base::CShutdowManager::SendLastMsgDBQueue, this, a2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//发送关机信号
|
||||||
int SendShutdownSignal()
|
int SendShutdownSignal()
|
||||||
{
|
{
|
||||||
return CallT<int>(base::CShutdowManager::SendShutdownSignal, this);
|
return CallT<int>(base::CShutdowManager::SendShutdownSignal, this);
|
||||||
|
|
|
||||||
|
|
@ -451,7 +451,7 @@ namespace base
|
||||||
const int is_valid_col = 0x080E22D0;
|
const int is_valid_col = 0x080E22D0;
|
||||||
const int is_valid_data = 0x085F41B2;
|
const int is_valid_data = 0x085F41B2;
|
||||||
const int open = 0x083F3E9E;
|
const int open = 0x083F3E9E;
|
||||||
const int open = 0x083F4024;
|
const int open2 = 0x083F4024;
|
||||||
const int ping = 0x083F4514;
|
const int ping = 0x083F4514;
|
||||||
const int select = 0x083F4678;
|
const int select = 0x083F4678;
|
||||||
const int select2 = 0x083F4630;
|
const int select2 = 0x083F4630;
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,15 @@
|
||||||
|
|
||||||
namespace Utils
|
namespace Utils
|
||||||
{
|
{
|
||||||
|
static int Rand(int v_min, int v_max)
|
||||||
|
{
|
||||||
|
int rNum = 0;
|
||||||
|
srand((unsigned int)time(0));
|
||||||
|
for (int i = 0; i < 31; i++)
|
||||||
|
rNum |= (rand() & 1) << i;
|
||||||
|
return v_min + rNum % (v_max - v_min + 1);
|
||||||
|
}
|
||||||
|
|
||||||
static void* alloc(size_t len)
|
static void* alloc(size_t len)
|
||||||
{
|
{
|
||||||
int fd = open("/dev/zero", O_RDONLY);
|
int fd = open("/dev/zero", O_RDONLY);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue