Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
yeni müsait oldum şimdi söktüm build alıyorum packı falan ekleyip bakıcamBakabildin mi hocam
0702 15:46:43486 :: Unknown Server Command Aranan esya bulunamadi. | Aranan
böyle diyor
kodta yukarda attığım#i#ifdefTEM_SHOP
using namespace std;
#i#includesstream>
#d#defineOCKET_START_IDX 5 //on mysql table.
#d#defineAX_SOCKET 4 //on mysql table.
#d#defineAX_ATTRIBUTE 7
#d#defineTTRIBUTE_START_IDX (SOCKET_START_IDX + MAX_SOCKET)
#d#defineET_TO_INVENTORY
#d#defineOUNT_ROW_IDX 25
#d#defineIME_TYPE_ROW_IDX 24
#d#defineOCKETIDX_ROW_IDX 23
string replaceAll(string str, const string& from, const string& to)
{
size_t start_pos = 0;
while ((start_pos = str.find(from, start_pos)) != string::npos) {
str.replace(start_pos, from.length(), to);
start_pos += to.length();
}
return str;
}
bool checkString(const char* szText) {
string checkWords[6] = { "truncate", "delete", "%", "from", "*", "'" };
string checkStr = static_cast<std::string>(szText);
//std::transform(checkStr.begin(), checkStr.end(), checkStr.begin(), tolower);
stl_lowers(checkStr);
for (BYTE q = 0; q < _countof(checkWords); q++) {
if (checkStr.find(checkWords[q]) != std::string::npos)
return false;
}
return true;
}
void CInputMain::ItemShop(LPCHARACTER ch, const char* c_pData)
{
if (!ch->GetDesc()) { return; }
TCGItemShopProcess* p = (TCGItemShopProcess*)c_pData;
switch (p->bSubHeader)
{
case ITEMSHOP_PROCESS_REFRESH: {
if (quest::CQuestManager::instance().GetEventFlag("itemshop_deactive") == 1 && !ch->IsGM()) {
ch->ChatPacket(CHAT_TYPE_INFO, "Nesne market aktif degil.");
return;
}
if ((string)p->szCategoryStr == "_CashYenile_") {
ch->ChatPacket(CHAT_TYPE_COMMAND, "RefreshMyCash %d %d", ch->GetCoins(), ch->GetVoteCoins());
return;
}
if ((string)p->szCategoryStr != "_GirisYenile_") { goto ItemQuery; }
{ //Kategori Refresh
memset(&p->szCategoryStr, 0, sizeof(p->szCategoryStr));
char szQuery[2048];
snprintf(szQuery, sizeof(szQuery), "SELECT * FROM player.itemshop_category ORDER BY cat_main_id DESC, cat_id ASC");
unique_ptr<SQLMsg> pMsg(DBManager::Instance().DirectQuery(szQuery));
if (pMsg->Get()->uiNumRows == 0) {
//if (ch->IsDeveloper()) { ch->ChatPacket(1, "<dbg> Nesne markette kategori bulunamadi."); }
return;
}
else {
uint16_t iLine = 0;
MYSQL_ROW mRow;
vector<TGCIShopCategory> vec_iCategory;
while (NULL != (mRow = mysql_fetch_row(pMsg->Get()->pSQLResult)))
{
TGCIShopCategory isCat;
BYTE iCur = 0;
str_to_number(isCat.catID, mRow[iCur++]);
strlcpy(isCat.categoryName, mRow[iCur++], sizeof(isCat.categoryName));
str_to_number(isCat.mainID, mRow[iCur++]);
vec_iCategory.push_back(isCat);
}
TCGItemShopSize gPacket;
gPacket.bHeader = HEADER_GC_ITEMSHOP_CATEGORY;
gPacket.dataSize = sizeof(gPacket) + sizeof(TGCIShopCategory) * vec_iCategory.size();
ch->GetDesc()->BufferedPacket(&gPacket, sizeof(gPacket));
ch->GetDesc()->Packet(&vec_iCategory[0], sizeof(TGCIShopCategory) * vec_iCategory.size());
//if (ch->IsDeveloper()) { ch->ChatPacket(1, "<dbg> Category packet has been sended. Category size: %d", vec_iCategory.size()); }
ch->ChatPacket(CHAT_TYPE_COMMAND, "RefreshMyCash %d %d", ch->GetCoins(), ch->GetVoteCoins());
}
}
ItemQuery:;
{ //Item Refresh
char szQuery2[2048];
snprintf(szQuery2, sizeof(szQuery2), "SELECT * FROM player.itemshop_item");
bool isFilteredByPlayer = false;
const bool hasCategoryStr = strlen(p->szCategoryStr) > 0;
if (hasCategoryStr) {
if (!checkString(p->szCategoryStr)) {
ch->ChatPacket(CHAT_TYPE_INFO, "Kaybol lan oyundan!");
if (ch->GetDesc())
ch->GetDesc()->DelayedDisconnect(3);
return;
}
}
if (p->withQuery) {
if (hasCategoryStr) {
string newStr = "itemshop_item.category_id = ";
newStr += replaceAll(p->szCategoryStr, "|", " OR itemshop_item.category_id = ");
snprintf(szQuery2, sizeof(szQuery2), "%s WHERE %s", szQuery2, newStr.c_str());
isFilteredByPlayer = true;
}
}
else {
if (hasCategoryStr) {
ostringstream sqlStr;
sqlStr << "SELECT * FROM player.itemshop_item WHERE itemshop_item.item_name LIKE '%%" << p->szCategoryStr << "%%'";
string str = sqlStr.str();
snprintf(szQuery2, sizeof(szQuery2), "%s", sqlStr.str().c_str());
isFilteredByPlayer = true;
}
}
if (!isFilteredByPlayer)
snprintf(szQuery2, sizeof(szQuery2), "%s WHERE itemshop_item.status = 1 ORDER BY itemshop_item.sell_count DESC LIMIT 0, 100;", szQuery2);
else
snprintf(szQuery2, sizeof(szQuery2), "%s AND itemshop_item.status = 1;", szQuery2);
if (ch->IsGM()) { ch->ChatPacket(1, "qRy: [%s]", szQuery2); }
std::unique_ptr<SQLMsg> pMsg_Item(DBManager::Instance().DirectQuery(szQuery2));
if (pMsg_Item->Get()->uiNumRows == 0) {
ch->ChatPacket(CHAT_TYPE_COMMAND, "Aranan esya bulunamadi.");
return;
}
else {
uint16_t iLine = 0;
MYSQL_ROW mRow;
std::vector<TGCIShopItem> vec_iItem;
while (NULL != (mRow = mysql_fetch_row(pMsg_Item->Get()->pSQLResult)))
{
TGCIShopItem isItem;
BYTE priceType;
str_to_number(priceType, mRow[COUNT_ROW_IDX + 1]);
bool isVoteCoins = false;
BYTE iCur = 0;
str_to_number(isItem.iID, mRow[iCur++]);
str_to_number(isItem.iVnum, mRow[iCur++]);
iCur++; //
str_to_number(isItem.iPrice, mRow[iCur++]);
str_to_number(isItem.categoryID, mRow[iCur++]);
for (BYTE i = 0; i < MAX_SOCKET; i++) {
str_to_number(isItem.alSockets, mRow[iCur++]);
}
for (BYTE j = 0; j < MAX_ATTRIBUTE; j++) {
str_to_number(isItem.aAttr[j].bType, mRow[iCur++]);
str_to_number(isItem.aAttr[j].sValue, mRow[iCur++]);
}
iCur++; //time_socket
iCur++; //time_type
isItem.isVoteCoins = priceType == 1;
str_to_number(isItem.iCount, mRow[COUNT_ROW_IDX]);
vec_iItem.push_back(isItem);
}
TCGItemShopSize gPacket;
gPacket.bHeader = HEADER_GC_ITEMSHOP_ITEM;
gPacket.dataSize = sizeof(gPacket) + sizeof(TGCIShopItem) * vec_iItem.size();
ch->GetDesc()->BufferedPacket(&gPacket, sizeof(gPacket));
ch->GetDesc()->Packet(&vec_iItem[0], sizeof(TGCIShopItem) * vec_iItem.size());
//ch->ChatPacket(1, "<dbg> Item packet has been sended. Category size: %d", vec_iItem.size());
}
}
break;
}
case ITEMSHOP_PROCESS_BUY: {
if (quest::CQuestManager::instance().GetEventFlag("itemshop_deactive") == 1 && !ch->IsGM()) {
ch->ChatPacket(CHAT_TYPE_INFO, "Nesne market aktif degil.");
//ch->ChatPacket(CHAT_TYPE_COMMAND, "ShowNotify 14");
return;
}
if (!p->itemID) { sys_err("abnormal!!! ITEMSHOP_PROCESS_BUY > [%s] p->itemID was null, returned.", ch->GetName()); return; }
if (!p->itemCount) { sys_err("abnormal!!! ITEMSHOP_PROCESS_BUY > [%s] p->itemCount was null, returned.", ch->GetName()); return; }
if (ch->GetDesc()->GetAccountTable().id == 0) { sys_err("abnormal!!! ITEMSHOP_PROCESS_BUY > [%s] account ID = 0.", ch->GetName()); return; }
char szQuery[248];
snprintf(szQuery, sizeof(szQuery), "SELECT * FROM player.itemshop_item WHERE id = %u AND status = 1 LIMIT 0,1;", p->itemID);
std::unique_ptr<SQLMsg> pMsg_Item(DBManager::Instance().DirectQuery(szQuery));
if (pMsg_Item->Get()->uiNumRows == 0) {
ch->ChatPacket(1, "Nesne markette aranan item bulunamadi.");
//ch->ChatPacket(CHAT_TYPE_COMMAND, "ShowNotify 13");
return;
}
MYSQL_ROW mRow = mysql_fetch_row(pMsg_Item->Get()->pSQLResult);
DWORD itemPrice = 0;
str_to_number(itemPrice, mRow[3]);
BYTE priceType = 0;
str_to_number(priceType, mRow[26]);
bool isVC = priceType == 1;
DWORD myCoins = isVC ? ch->GetCheque() : ch->GetCoins();
if (myCoins < itemPrice * p->itemCount) {
ch->ChatPacket(1, "Yeterli %s %d > %d yok.", (isVC ? "Won" : "EP"), itemPrice, myCoins);
//ch->ChatPacket(CHAT_TYPE_COMMAND, "ShowNotify 12");
return;
}
DWORD iSockets[MAX_SOCKET];
for (BYTE q = 0; q < MAX_SOCKET; q++) {
iSockets[q] = atoi(mRow[SOCKET_START_IDX + q]);
}
/*****Sockets*****/
const BYTE timeType = atoi(mRow[TIME_TYPE_ROW_IDX]);
const bool hasTime = (timeType >= LIMIT_REAL_TIME && timeType <= LIMIT_TIMER_BASED_ON_WEAR);
if (hasTime) {
const BYTE iSocketIdx = atoi(mRow[SOCKETIDX_ROW_IDX]);
const bool isRealTime = (timeType == LIMIT_REAL_TIME || timeType == LIMIT_TIMER_BASED_ON_WEAR);
if (iSocketIdx >= MAX_SOCKET) { goto End; }
iSockets[iSocketIdx] = isRealTime ? time(0) + atoi(mRow[SOCKET_START_IDX + iSocketIdx]) : atoi(mRow[SOCKET_START_IDX + iSocketIdx]);
}
/*****Sockets*****/
End:;
const DWORD itemVnum = atoi(mRow[1]);
const int itemCount = atoi(mRow[COUNT_ROW_IDX]);
const TItemTable* pTable = ITEM_MANAGER::instance().GetTable(itemVnum);
if (!pTable) {
ch->ChatPacket(1, "Veri hatasi.");
return;
}
BYTE iCount = 0;
int iWindowType = -1, iCell = -1;
for (BYTE i = 0; i < p->itemCount; i++) {
LPITEM item = ITEM_MANAGER::instance().CreateItem(itemVnum, itemCount);
if (!item) {
sys_err("cannot create item vnum %d", itemVnum);
continue;
}
else
{
iCell = ch->GetEmptyInventory(pTable->bSize);
iWindowType = INVENTORY;
}
if (iCell == -1)
{
ch->ChatPacket(1, "Envanterde yeterli bosluk yok.");
//ch->ChatPacket(CHAT_TYPE_COMMAND, "ShowNotify 10");
return;
}
for (BYTE q = 0; q < MAX_SOCKET; q++) {
item->SetSocket(q, iSockets[q]);
}
BYTE attrCounter = ATTRIBUTE_START_IDX;
for (BYTE w = 0; w < MAX_ATTRIBUTE; w++) {
item->SetForceAttribute(w, atoi(mRow[attrCounter]), atoi(mRow[attrCounter + 1]));
attrCounter += 2;
}
item->AddToCharacter(ch, TItemPos(iWindowType, iCell));
std::unique_ptr<SQLMsg> sqlLog(DBManager::instance().DirectQuery("INSERT INTO log.itemshop_log(item_vnum, player_pid, player_name, item_price, buy_date) VALUES(%d, %d, '%s', %d, NOW())", itemVnum, ch->GetPlayerID(), ch->GetName(), itemPrice));
std::unique_ptr<SQLMsg> sqlUpdate(DBManager::instance().DirectQuery("UPDATE player.itemshop_item SET sell_count = sell_count + 1 WHERE id = %u", p->itemID));
if (isVC) {
/*if (ch->UpdateVoteCoins(ch->GetDesc()->GetAccountTable().id, -itemPrice)) {
ch->ChatPacket(CHAT_TYPE_COMMAND, "RefreshMyCash %d %d", ch->GetCoins(), ch->GetVoteCoins());
iCount++;
}
else {
M2_DESTROY_ITEM(item);
}*/
ch->PointChange(POINT_CHEQUE, -itemPrice, false);
}
else {
if (itemPrice > 0) { //hotFix 03.04.2021
if (ch->UpdateCoins(ch->GetDesc()->GetAccountTable().id, -itemPrice)) {
ch->ChatPacket(CHAT_TYPE_COMMAND, "RefreshMyCash %d %d", ch->GetCoins(), ch->GetVoteCoins());
iCount++;
}
else {
M2_DESTROY_ITEM(item);
}
}
}
}
//ch->ChatPacket(CHAT_TYPE_COMMAND, "ShowNotify 11");
ch->ChatPacket(1, "Esya basariyla satin alindi.");
}
}
}
#e#endif
Ekli dosyayı görüntüle 148352
böyle şeyler çıkıyor oyun içerisinde vsvs
Tamamdır hocam haber bekliyorumyeni müsait oldum şimdi söktüm build alıyorum packı falan ekleyip bakıcam
Doğrudur hocam bir hata mı acaba yoksa kontrol amaçlı mı eklenmiş anlamadım sorayım dedim şu tooltip ile esc kısmını çözemezsem mecbur kaldıracağım mcyk dakini deneyeceğimBu filesi paylaşan zaten benim böyle şeyler yazıyordu ama bi sorun yoktu markette galiba öyle hatırlıyorum
Aga sadece ENABLE_ITEM_SHOP U mu ekledin yoksa altta define ITEM_SHOP VAR onuda ekledin miyeni müsait oldum şimdi söktüm build alıyorum packı falan ekleyip bakıcam
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?