Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!
merhaba sistem ekliyorum da bu hatayı alıyorum
Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!
böyle bir hata verdi dediğinizi yaptım başka filesten aldım sistemi c++ sürümü ile alakalı olabilir miCFirsatiYakala::Buy da problemin var sanırım
Kod:if (const auto& it = std::find_if(m_FirsatVec.begin(), m_FirsatVec.end(), [&bID](const auto& p) { return p.bID == bID; }); it != m_FirsatVec.cend())
bu kodu al
Kod:if (const auto& it = std::find_if(m_FirsatVec.begin(), m_FirsatVec.end(), [bID](const auto& p) { return p.bID == bID; }); it != m_FirsatVec.cend())
böyle bir değiş bakalım.
if (const auto& it = std::find_if(m_FirsatVec.begin(), m_FirsatVec.end(), [&bID](const auto& p) { return p.bID == bID; }); it != m_FirsatVec.cend())
if (const auto& it = std::find_if(m_FirsatVec.begin(), m_FirsatVec.end(), [bID](const auto& p) { return p.bID == bID; }); it != m_FirsatVec.cend())
böyle bir hata verdi dediğinizi yaptım başka filesten aldım sistemi c++ sürümü ile alakalı olabilir miCFirsatiYakala::Buy da problemin var sanırım
Kod:if (const auto& it = std::find_if(m_FirsatVec.begin(), m_FirsatVec.end(), [&bID](const auto& p) { return p.bID == bID; }); it != m_FirsatVec.cend())
bu kodu al
Kod:if (const auto& it = std::find_if(m_FirsatVec.begin(), m_FirsatVec.end(), [bID](const auto& p) { return p.bID == bID; }); it != m_FirsatVec.cend())
böyle bir değiş bakalım.
böyle bir hata verdi dediğinizi yaptım başka filesten aldım sistemi c++ sürümü ile alakalı olabilir mi
/**************************
* * Author: Larry Watterson *
* ? Date: 03.11.21 ?
* ! Version: v2 !
***************************/
#include "stdafx.h"
#ifdef FIRSATI_YAKALA
#include "FirsatiYakala.h"
#include "char.h"
#include "db.h"
#include "utils.h"
#include "desc.h"
#include "buffer_manager.h"
#include "p2p.h"
#include "questmanager.h"
#include "item_manager.h"
#include "item.h"
extern BYTE g_bAuthServer;
// #define LOGS
CFirsatiYakala::~CFirsatiYakala() { m_FirsatVec.clear(); }
auto CFirsatiYakala::LoadItems() -> void
{
char szQuery[QUERY_MAX_LEN];
int column = snprintf(szQuery, sizeof(szQuery), "SELECT id, eskiFiyat, yeniFiyat, UNIX_TIMESTAMP(gecerlilikSaat)");
for (BYTE i = 1; i <= MAX_ITEM; ++i) {
column += snprintf(szQuery + column, sizeof(szQuery) - column, ", vnum%d", i);
column += snprintf(szQuery + column, sizeof(szQuery) - column, ", adet%d", i);
}
snprintf(szQuery + column, sizeof(szQuery) - column, " FROM firsati_yakala");
const std::unique_ptr<SQLMsg> pkMsg(DBManager::instance().DirectQuery(szQuery));
if (pkMsg->Get()->uiNumRows > 0) {
MYSQL_ROW row;
m_FirsatVec.reserve(pkMsg->Get()->uiNumRows);
while ((row = mysql_fetch_row(pkMsg->Get()->pSQLResult)) != nullptr) {
tFirsatiYakalaInfo info = {};
DWORD col = 0;
str_to_number(info.bID, row[col++]);
str_to_number(info.wEskiFiyat, row[col++]);
str_to_number(info.wYeniFiyat, row[col++]);
str_to_number(info.iTime, row[col++]);
for (BYTE i = 0; i < MAX_ITEM; ++i) {
DWORD vnum = std::stoi(row[col++]);
#ifdef EXTENDED_COUNT
WORD count = std::stoi(row[col++]);
#else
BYTE count = std::stoi(row[col++]);
#endif
if (vnum == 0 || count == 0) { break; }
info.firsatItems.emplace(vnum, count);
}
m_FirsatVec.emplace_back(info);
#ifdef LOGS
sys_err("Emplace map new 'firsat' id : %d , eskifiyat : %d, yenifiyat : %d", info.bID, info.wEskiFiyat, info.wYeniFiyat);
for (const auto& [key, value] : info.firsatItems) {
sys_err("Emplace map new 'firsat' vnum : %d count %d", key, value);
}
#endif
}
}
}
auto CFirsatiYakala::UpdateFirsatMap() -> void
{
if (g_bAuthServer) { return; }
m_FirsatVec.clear();
LoadItems();
}
auto CFirsatiYakala::UpdateP2PInfo() -> void
{
const BYTE bHeader = HEADER_GG_UPDATE_FIRSAT_INFO;
P2P_MANAGER::instance().Send(&bHeader, sizeof(BYTE));
#ifdef LOGS
sys_err("Firsat P2P update is ok");
#endif
}
auto CFirsatiYakala::SendClient(LPCHARACTER ch, const BYTE bSubHeader, const void* c_pvData, const size_t iSize) -> void
{
const tFirsatGCPacketAction packet {
.bHeader = HEADER_GC_FIRSAT,
.bSubHeader = bSubHeader
};
TEMP_BUFFER buf;
buf.write(&packet, sizeof(packet));
if (iSize) {
buf.write(c_pvData, iSize);
}
ch->GetDesc()->Packet(buf.read_peek(), buf.size());
}
auto CFirsatiYakala::SendInformation(LPCHARACTER ch) -> void
{
if (!ch || !ch->GetDesc()) { return; }
SendClient(ch, SUB_FIRSAT_GC_CLEAR_LIST, nullptr, 0);
for (const auto& it : m_FirsatVec) {
tPacketGCFirsatData pack{
.bHeader = HEADER_GC_FIRSAT,
.bID = it.bID,
.wEskiFiyat = it.wEskiFiyat,
.wYeniFiyat = it.wYeniFiyat,
.iTime = it.iTime
};
for (const auto& [vnum, count] : it.firsatItems) {
pack.dwVnum = vnum;
pack.bCount = count;
SendClient(ch, SUB_FIRSAT_GC_NEW_LIST, &pack, sizeof(pack));
}
}
}
auto CFirsatiYakala::OpenMyGui(LPCHARACTER ch) -> void
{
SendClient(ch, SUB_FIRSAT_GC_OPEN_GUI, nullptr, 0);
SendInformation(ch);
}
auto CFirsatiYakala::CheckFirsat(LPCHARACTER ch) -> void
{
if (quest::CQuestManager::instance().GetEventFlag("firsat_disable") == 1) { return; }
if (!ch || !ch->GetDesc()) { return; }
if (m_FirsatVec.empty()) { return; }
ch->ChatPacket(CHAT_TYPE_COMMAND, "FirsatIcon %u", true);
}
auto CFirsatiYakala::Buy(LPCHARACTER ch, const BYTE bID) -> void
{
if (const auto it = std::find_if(m_FirsatVec.begin(), m_FirsatVec.end(), [bID](const tFirsatiYakalaInfo& p) { return p.bID == bID; }); it != m_FirsatVec.cend()) {
if (it->iTime - get_global_time() < 0) {
ch->ChatPacket(1, "Firsatin suresi dolmus!");
return;
}
if (ch->GetDragonCoin() < it->wYeniFiyat) {
ch->ChatPacket(1, "Yetersiz ejderha parasi!");
return;
}
ch->SetDragonCoin(ch->GetDragonCoin() - it->wYeniFiyat);
BYTE totalSize = 0;
std::vector<LPITEM> fItems;
for (const auto& [vnum, count] : it->firsatItems) {
auto pItem = ITEM_MANAGER::instance().CreateItem(vnum, count);
totalSize += pItem->GetSize();
fItems.push_back(pItem);
auto emptyPos = ch->GetEmptyInventory(pItem->GetSize());
if (pItem->IsUpgradeItem()) {
emptyPos = ch->GetEmptyUpgradeInventory(pItem);
} else if (pItem->IsBook()) {
emptyPos = ch->GetEmptyBookInventory(pItem);
} else if (pItem->IsStone()) {
emptyPos = ch->GetEmptyStoneInventory(pItem);
}
if (totalSize > emptyPos) {
ch->ChatPacket(1, "yer yok");
for (auto& dd : fItems) { M2_DESTROY_ITEM(dd); }
fItems.clear();
return;
}
}
for (auto& it : fItems) {
if (!it) { continue; }
int cell = ch->GetEmptyInventory(it->GetSize());
BYTE inven = INVENTORY;
if (it->IsUpgradeItem()) {
cell = ch->GetEmptyUpgradeInventory(it);
inven = UPGRADE_INVENTORY;
} else if (it->IsBook()) {
cell = ch->GetEmptyBookInventory(it);
inven = BOOK_INVENTORY;
} else if (it->IsStone()) {
cell = ch->GetEmptyStoneInventory(it);
inven = STONE_INVENTORY;
}
it->AddToCharacter(ch, TItemPos(inven, cell));
}
ch->ChatPacket(1, "Itemler envanterine gonderildi.");
}
}
#endif