Neler yeni
Metin2 Support

Metin2 Dünyasına Hoş Geldiniz! Yeni bir maceraya adım atın ve topluluğumuza katılın. Sorularınızı sormak, deneyimlerinizi paylaşmak ve diğer oyuncularla iletişim kurmak için hemen kaydolun. Kayıt olun, etkileşimde bulunun ve Metin2 dünyasındaki serüveninizi daha da özel hale getirin. Birlikte oynamak için sabırsızlanıyoruz!

Fırsatı Yakala Sistemi

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Eline sağlık paylaşımın için teşekkürler, bir çok kişi bu sistemi arıyordu işlerini görücektir :cool:
 
Çok güzel eline sağlık işime yarayacak metin2 support farkı gene farkını koyuyor :)
 
güzel bi paylaşım fakat link hatalı güncelermisiniz
 
Paylaşım için sağol ücretli sistemi paylaştığınız için 😊
 
Konu içeriğindeki linkler düzenlenmiştir
 
Önem Derecesi Kod Açıklama Proje Dosya Çizgi Gizleme Durumu
Hata C7555 belirlenmiş başlatıcı kullanımı en azından '/std:c++20' gerektirir UserInterface


Böyle bir problem ile karşı karşıyayım visual studio ile alakalı nasıl bir yol izlenmeli
 
// find

default:
ret = RecvDefaultPacket(header);
break;
}

// add above

#ifdef ENABLE_FIRSATI_YAKALA
case HEADER_GC_FIRSAT:
ret = RecvFirsatPacket();
break;
#endif

// add anywhere

#ifdef ENABLE_FIRSATI_YAKALA
bool CPythonNetworkStream::SendBuyFirsatPacket(const BYTE bIndex)
{
const tFirsatCGPacketBuy p{
.bHeader = HEADER_CG_FIRSAT_BUY,
.bID = bIndex
};
if (!Send(sizeof(p), &p))
return false;

return SendSequence();
}

bool CPythonNetworkStream::SendFirsatPacketSub(const BYTE bSubHeader)
{
const tFirsatCGPacketAction p{
.bHeader = HEADER_CG_FIRSAT_ACTION,
.bSubHeader = bSubHeader
};
if (!Send(sizeof(p), &p))
return false;

return SendSequence();
}

bool CPythonNetworkStream::RecvFirsatPacket()
{
tFirsatGCPacketAction p;
if (!Recv(sizeof(tFirsatGCPacketAction), &p))
{
Tracenf("Recv tFirsatPacketAction Packet Error");
return false;
}

switch (p.bSubHeader)
{

case SUB_FIRSAT_GC_NEW_LIST:
{
tPacketGCFirsatData kInfo;
if (!Recv(sizeof(kInfo), &kInfo))
return false;
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_FirsatNewList", Py_BuildValue("(iiiiii)",
kInfo.bID, kInfo.wEskiFiyat, kInfo.wYeniFiyat, kInfo.iTime, kInfo.dwVnum, kInfo.bCount));
}
break;
case SUB_FIRSAT_GC_CLEAR_LIST:
{
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_FirsatDictClear", Py_BuildValue("()"));
}
break;
case SUB_FIRSAT_GC_OPEN_GUI:
{
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_FirsatOpenGui", Py_BuildValue("()"));
}
default: break;
}
return true;
}
#endif


eklemek istedsiğimn kod bloğu bu
 
2013 İLE BUİLD ALIYORSAN 2019 A YÜKSELTİP DENEMEN GEREKİYO FORUMLARA BAKARAK YÜKSELTEBİLİRSİN CLİENT SÜRÜMÜ İLE SİSTEM UYUŞMUYOR SÜRÜMLERİ
 
// find

default:
ret = RecvDefaultPacket(header);
break;
}

// add above

#ifdef ENABLE_FIRSATI_YAKALA
case HEADER_GC_FIRSAT:
ret = RecvFirsatPacket();
break;
#endif

// add anywhere

#ifdef ENABLE_FIRSATI_YAKALA
bool CPythonNetworkStream::SendBuyFirsatPacket(const BYTE bIndex)
{
const tFirsatCGPacketBuy p{
.bHeader = HEADER_CG_FIRSAT_BUY,
.bID = bIndex
};
if (!Send(sizeof(p), &p))
return false;

return SendSequence();
}

bool CPythonNetworkStream::SendFirsatPacketSub(const BYTE bSubHeader)
{
const tFirsatCGPacketAction p{
.bHeader = HEADER_CG_FIRSAT_ACTION,
.bSubHeader = bSubHeader
};
if (!Send(sizeof(p), &p))
return false;

return SendSequence();
}

bool CPythonNetworkStream::RecvFirsatPacket()
{
tFirsatGCPacketAction p;
if (!Recv(sizeof(tFirsatGCPacketAction), &p))
{
Tracenf("Recv tFirsatPacketAction Packet Error");
return false;
}

switch (p.bSubHeader)
{

case SUB_FIRSAT_GC_NEW_LIST:
{
tPacketGCFirsatData kInfo;
if (!Recv(sizeof(kInfo), &kInfo))
return false;
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_FirsatNewList", Py_BuildValue("(iiiiii)",
kInfo.bID, kInfo.wEskiFiyat, kInfo.wYeniFiyat, kInfo.iTime, kInfo.dwVnum, kInfo.bCount));
}
break;
case SUB_FIRSAT_GC_CLEAR_LIST:
{
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_FirsatDictClear", Py_BuildValue("()"));
}
break;
case SUB_FIRSAT_GC_OPEN_GUI:
{
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_FirsatOpenGui", Py_BuildValue("()"));
}
default: break;
}
return true;
}
#endif


eklemek istedsiğimn kod bloğu bu
C++:
bool CPythonNetworkStream::SendBuyFirsatPacket(const BYTE bIndex)
{
    tFirsatCGPacketBuy p;
    p.bHeader = HEADER_CG_FIRSAT_BUY;
    p.bID = bIndex;

    if (!Send(sizeof(p), reinterpret_cast<const char*>(&p)))
        return false;

    return SendSequence();
}

bool CPythonNetworkStream::SendFirsatPacketSub(const BYTE bSubHeader)
{
    tFirsatCGPacketAction p;
    p.bHeader = HEADER_CG_FIRSAT_ACTION;
    p.bSubHeader = bSubHeader;

    if (!Send(sizeof(p), reinterpret_cast<const char*>(&p)))
        return false;

    return SendSequence();
}

bool CPythonNetworkStream::RecvFirsatPacket()
{
    tFirsatGCPacketAction p;
    if (!Recv(sizeof(p), reinterpret_cast<char*>(&p)))
    {
        Tracenf("Recv tFirsatPacketAction Packet Error");
        return false;
    }
   
    switch (p.bSubHeader)
    {
        case SUB_FIRSAT_GC_NEW_LIST:
        {
            tPacketGCFirsatData kInfo;
            if (!Recv(sizeof(kInfo), reinterpret_cast<char*>(&kInfo)))
                return false;
            PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_FirsatNewList", Py_BuildValue("(iiiiii)",
                kInfo.bID, kInfo.wEskiFiyat, kInfo.wYeniFiyat, kInfo.iTime, kInfo.dwVnum, kInfo.bCount));
        }
        break;
        case SUB_FIRSAT_GC_CLEAR_LIST:
        {
            PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_FirsatDictClear", Py_BuildValue("()"));
        }
        break;
        case SUB_FIRSAT_GC_OPEN_GUI:
        {
            PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_FirsatOpenGui", Py_BuildValue("()"));
        }
        break;
        default: break;
    }
    return true;
}
 
In file included from FirsatiYakala.cpp:7:
FirsatiYakala.h:12:9: error: 'map' does not name a type; did you mean 'mmap'?
map<DWORD, BYTE> firsatItems; // vnum - adet
^~~
mmap
FirsatiYakala.h:15:24: error: 'map' does not name a type; did you mean 'mmap'?
using firsat_map = map< BYTE, unique_ptr<tFirsatiYakalaInfo> >;
^~~
mmap
FirsatiYakala.h:28:5: error: 'firsat_map' does not name a type; did you mean 'first_han'?
firsat_map m_FirsatMap;
^~~~~~~~~~
first_han
FirsatiYakala.h: In destructor 'CFirsatiYakala::sFirsatiYakalaInfo::~sFirsatiYakalaInfo()':
FirsatiYakala.h:13:85: error: 'firsatItems' was not declared in this scope
~sFirsatiYakalaInfo() { bID = 0; wEskiFiyat = 0; wYeniFiyat = 0; iTime = 0; firsatItems.clear(); }
^~~~~~~~~~~
FirsatiYakala.h:13:85: note: suggested alternative: 'LoadItems'
~sFirsatiYakalaInfo() { bID = 0; wEskiFiyat = 0; wYeniFiyat = 0; iTime = 0; firsatItems.clear(); }
^~~~~~~~~~~
LoadItems
FirsatiYakala.cpp: In destructor 'virtual CFirsatiYakala::~CFirsatiYakala()':
FirsatiYakala.cpp:19:37: error: 'm_FirsatMap' was not declared in this scope
CFirsatiYakala::~CFirsatiYakala() { m_FirsatMap.clear(); }
^~~~~~~~~~~
FirsatiYakala.cpp:19:37: note: suggested alternative: 'UpdateFirsatMap'
CFirsatiYakala::~CFirsatiYakala() { m_FirsatMap.clear(); }
^~~~~~~~~~~
UpdateFirsatMap
FirsatiYakala.cpp: In member function 'const tFirsatiYakalaInfo* CFirsatiYakala::GetTable(BYTE)':
FirsatiYakala.cpp:23:9: warning: init-statement in selection statements only available with -std=c++17 or -std=gnu++17
if (const auto& it = m_FirsatMap.find(id); it != m_FirsatMap.end())
^~~~~
FirsatiYakala.cpp:23:26: error: 'm_FirsatMap' was not declared in this scope
if (const auto& it = m_FirsatMap.find(id); it != m_FirsatMap.end())
^~~~~~~~~~~
FirsatiYakala.cpp:23:26: note: suggested alternative: 'UpdateFirsatMap'
if (const auto& it = m_FirsatMap.find(id); it != m_FirsatMap.end())
^~~~~~~~~~~
UpdateFirsatMap
FirsatiYakala.cpp: In member function 'void CFirsatiYakala::LoadItems()':
FirsatiYakala.cpp:39:5: error: 'unique_ptr' was not declared in this scope
unique_ptr<SQLMsg> pkMsg(DBManager::instance().DirectQuery(szQuery));
^~~~~~~~~~
FirsatiYakala.cpp:39:5: note: suggested alternative:
In file included from /usr/local/lib/gcc8/include/c++/memory:80,
from ../../../Extern/include/boost/container_hash/extensions.hpp:36,
from ../../../Extern/include/boost/container_hash/hash.hpp:760,
from ../../../Extern/include/boost/functional/hash.hpp:6,
from ../../../Extern/include/boost/unordered/unordered_map.hpp:18,
from ../../../Extern/include/boost/unordered_map.hpp:17,
from char.h:4,
from FirsatiYakala.cpp:8:
/usr/local/lib/gcc8/include/c++/bits/unique_ptr.h:168:11: note: 'std::unique_ptr'
class unique_ptr
^~~~~~~~~~
 
FirsatiYakala.cpp:39:22: error: expected primary-expression before '>' token
unique_ptr<SQLMsg> pkMsg(DBManager::instance().DirectQuery(szQuery));
^
FirsatiYakala.cpp:39:24: error: 'pkMsg' was not declared in this scope
unique_ptr<SQLMsg> pkMsg(DBManager::instance().DirectQuery(szQuery));
^~~~~
FirsatiYakala.cpp:39:24: note: suggested alternative: 'SQLMsg'
unique_ptr<SQLMsg> pkMsg(DBManager::instance().DirectQuery(szQuery));
^~~~~
SQLMsg
FirsatiYakala.cpp:47:31: error: 'stoi' was not declared in this scope
firsatInfo->bID = stoi(row[col++]);
^~~~
FirsatiYakala.cpp:47:31: note: suggested alternative:
In file included from /usr/local/lib/gcc8/include/c++/string:52,
from ../../../Extern/include/msl/utils.h:18,
from ../../common/utils.h:1,
from stdafx.h:15,
from FirsatiYakala.cpp:5:
/usr/local/lib/gcc8/include/c++/bits/basic_string.h:6520:3: note: 'std::__cxx11::stoi'
stoi(const wstring& __str, size_t* __idx = 0, int __base = 10)
^~~~
FirsatiYakala.cpp:51:25: error: 'struct CFirsatiYakala::sFirsatiYakalaInfo' has no member named 'firsatItems'
firsatInfo->firsatItems.clear();
^~~~~~~~~~~
FirsatiYakala.cpp:58:29: error: 'struct CFirsatiYakala::sFirsatiYakalaInfo' has no member named 'firsatItems'
firsatInfo->firsatItems.emplace(vnum, count);
^~~~~~~~~~~
FirsatiYakala.cpp:60:13: error: 'm_FirsatMap' was not declared in this scope
m_FirsatMap.try_emplace(firsatInfo->bID, firsatInfo);
^~~~~~~~~~~
FirsatiYakala.cpp:60:13: note: suggested alternative: 'UpdateFirsatMap'
m_FirsatMap.try_emplace(firsatInfo->bID, firsatInfo);
^~~~~~~~~~~
UpdateFirsatMap
FirsatiYakala.cpp: In member function 'void CFirsatiYakala::UpdateFirsatMap()':
FirsatiYakala.cpp:75:5: error: 'm_FirsatMap' was not declared in this scope
m_FirsatMap.clear(); // clear first
^~~~~~~~~~~
FirsatiYakala.cpp:75:5: note: suggested alternative: 'UpdateFirsatMap'
m_FirsatMap.clear(); // clear first
^~~~~~~~~~~
UpdateFirsatMap
FirsatiYakala.cpp: In member function 'void CFirsatiYakala::SendInformation(LPCHARACTER)':
FirsatiYakala.cpp:107:22: warning: structured bindings only available with -std=c++17 or -std=gnu++17
for (const auto& [key, value] : m_FirsatMap)
^
FirsatiYakala.cpp:107:37: error: 'm_FirsatMap' was not declared in this scope
for (const auto& [key, value] : m_FirsatMap)
^~~~~~~~~~~
FirsatiYakala.cpp:107:37: note: suggested alternative: 'UpdateFirsatMap'
for (const auto& [key, value] : m_FirsatMap)
^~~~~~~~~~~
UpdateFirsatMap
FirsatiYakala.cpp:118:26: warning: structured bindings only available with -std=c++17 or -std=gnu++17
for (const auto& [vnum, count] : pInfo->firsatItems)
^
FirsatiYakala.cpp: In member function 'void CFirsatiYakala::CheckFirsat(LPCHARACTER)':
FirsatiYakala.cpp:137:9: error: 'm_FirsatMap' was not declared in this scope
if (m_FirsatMap.empty()) { return; }
^~~~~~~~~~~
FirsatiYakala.cpp:137:9: note: suggested alternative: 'UpdateFirsatMap'
if (m_FirsatMap.empty()) { return; }
^~~~~~~~~~~
UpdateFirsatMap
FirsatiYakala.cpp: In member function 'void CFirsatiYakala::Buy(LPCHARACTER, BYTE)':
FirsatiYakala.cpp:143:9: warning: init-statement in selection statements only available with -std=c++17 or -std=gnu++17
if (const auto& it = GetTable(bID); it != nullptr)
^~~~~
FirsatiYakala.cpp:149:46: error: 'TAccountTable' {aka 'struct SAccountTable'} has no member named 'mall_price'
if (ch->GetDesc()->GetAccountTable().mall_price[0] < it->wYeniFiyat){
^~~~~~~~~~
FirsatiYakala.cpp:153:13: error: 'class CHARACTER' has no member named 'ChangeMallPrice'; did you mean 'ChangeEmpire'?
ch->ChangeMallPrice(0, -it->wYeniFiyat);
^~~~~~~~~~~~~~~
ChangeEmpire
FirsatiYakala.cpp:155:26: warning: structured bindings only available with -std=c++17 or -std=gnu++17
for (const auto& [vnum, count] : it->firsatItems)
^
FirsatiYakala.cpp:155:46: error: 'const struct CFirsatiYakala::sFirsatiYakalaInfo' has no member named 'firsatItems'
for (const auto& [vnum, count] : it->firsatItems)
^~~~~~~~~~~
gmake: *** [Makefile:188: .obj/FirsatiYakala.o] Error 1
gmake: *** Waiting for unfinished jobs....
In file included from input_p2p.cpp:25:
FirsatiYakala.h:12:9: error: 'map' does not name a type; did you mean 'mmap'?
map<DWORD, BYTE> firsatItems; // vnum - adet
^~~
mmap
FirsatiYakala.h:15:24: error: 'map' does not name a type; did you mean 'mmap'?
using firsat_map = map< BYTE, unique_ptr<tFirsatiYakalaInfo> >;
^~~
mmap
FirsatiYakala.h:28:5: error: 'firsat_map' does not name a type; did you mean 'first_han'?
firsat_map m_FirsatMap;
^~~~~~~~~~
first_han
FirsatiYakala.h: In destructor 'CFirsatiYakala::sFirsatiYakalaInfo::~sFirsatiYakalaInfo()':
FirsatiYakala.h:13:85: error: 'firsatItems' was not declared in this scope
~sFirsatiYakalaInfo() { bID = 0; wEskiFiyat = 0; wYeniFiyat = 0; iTime = 0; firsatItems.clear(); }
^~~~~~~~~~~
FirsatiYakala.h:13:85: note: suggested alternative: 'LoadItems'
~sFirsatiYakalaInfo() { bID = 0; wEskiFiyat = 0; wYeniFiyat = 0; iTime = 0; firsatItems.clear(); }
^~~~~~~~~~~
LoadItems
input_p2p.cpp: In member function 'void CInputP2P::NesneMarket(const char*)':
input_p2p.cpp:358:19: warning: unused variable 'p' [-Wunused-variable]
TPacketGGNesne * p = (TPacketGGNesne *) c_pData;
^
input_p2p.cpp: In member function 'void CInputP2P::FirsatiYakala(const char*)':
input_p2p.cpp:446:14: warning: unused variable 'p' [-Wunused-variable]
const auto* p = (tPacketFirsatGG *) c_pData;
^
In file included from input_login.cpp:34:
FirsatiYakala.h:12:9: error: 'map' does not name a type; did you mean 'mmap'?
map<DWORD, BYTE> firsatItems; // vnum - adet
^~~
mmap
FirsatiYakala.h:15:24: error: 'map' does not name a type; did you mean 'mmap'?
using firsat_map = map< BYTE, unique_ptr<tFirsatiYakalaInfo> >;
^~~
mmap
FirsatiYakala.h:28:5: error: 'firsat_map' does not name a type; did you mean 'first_han'?
firsat_map m_FirsatMap;
^~~~~~~~~~
first_han
FirsatiYakala.h: In destructor 'CFirsatiYakala::sFirsatiYakalaInfo::~sFirsatiYakalaInfo()':
FirsatiYakala.h:13:85: error: 'firsatItems' was not declared in this scope
~sFirsatiYakalaInfo() { bID = 0; wEskiFiyat = 0; wYeniFiyat = 0; iTime = 0; firsatItems.clear(); }
^~~~~~~~~~~
gmake: *** [Makefile:188: .obj/input_p2p.o] Error 1
FirsatiYakala.h:13:85: note: suggested alternative: 'LoadItems'
~sFirsatiYakalaInfo() { bID = 0; wEskiFiyat = 0; wYeniFiyat = 0; iTime = 0; firsatItems.clear(); }
^~~~~~~~~~~
LoadItems
In file included from input_main.cpp:44:
FirsatiYakala.h:12:9: error: 'map' does not name a type; did you mean 'mmap'?
map<DWORD, BYTE> firsatItems; // vnum - adet
^~~
mmap
FirsatiYakala.h:15:24: error: 'map' does not name a type; did you mean 'mmap'?
using firsat_map = map< BYTE, unique_ptr<tFirsatiYakalaInfo> >;
^~~
mmap
FirsatiYakala.h:28:5: error: 'firsat_map' does not name a type; did you mean 'first_han'?
firsat_map m_FirsatMap;
^~~~~~~~~~
first_han
FirsatiYakala.h: In destructor 'CFirsatiYakala::sFirsatiYakalaInfo::~sFirsatiYakalaInfo()':
FirsatiYakala.h:13:85: error: 'firsatItems' was not declared in this scope
~sFirsatiYakalaInfo() { bID = 0; wEskiFiyat = 0; wYeniFiyat = 0; iTime = 0; firsatItems.clear(); }
^~~~~~~~~~~
FirsatiYakala.h:13:85: note: suggested alternative: 'LoadItems'
~sFirsatiYakalaInfo() { bID = 0; wEskiFiyat = 0; wYeniFiyat = 0; iTime = 0; firsatItems.clear(); }
^~~~~~~~~~~
LoadItems
gmake: *** [Makefile:188: .obj/input_login.o] Error 1
gmake: *** [Makefile:188: .obj/input_main.o] Error 1
In file included from main.cpp:72:
FirsatiYakala.h:12:9: error: 'map' does not name a type; did you mean 'mmap'?
map<DWORD, BYTE> firsatItems; // vnum - adet
^~~
mmap
FirsatiYakala.h:15:24: error: 'map' does not name a type; did you mean 'mmap'?
using firsat_map = map< BYTE, unique_ptr<tFirsatiYakalaInfo> >;
^~~
mmap
FirsatiYakala.h:28:5: error: 'firsat_map' does not name a type; did you mean 'first_han'?
firsat_map m_FirsatMap;
^~~~~~~~~~
first_han
FirsatiYakala.h: In destructor 'CFirsatiYakala::sFirsatiYakalaInfo::~sFirsatiYakalaInfo()':
FirsatiYakala.h:13:85: error: 'firsatItems' was not declared in this scope
~sFirsatiYakalaInfo() { bID = 0; wEskiFiyat = 0; wYeniFiyat = 0; iTime = 0; firsatItems.clear(); }
^~~~~~~~~~~
FirsatiYakala.h:13:85: note: suggested alternative: 'LoadItems'
~sFirsatiYakalaInfo() { bID = 0; wEskiFiyat = 0; wYeniFiyat = 0; iTime = 0; firsatItems.clear(); }
^~~~~~~~~~~
LoadItems
gmake: *** [Makefile:188: .obj/main.o] Error 1
root@Razuning:/usr/src/GameSource/Server/game/src #
 
C++:
#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"

extern BYTE g_bAuthServer;
// #define LOGS

CFirsatiYakala::~CFirsatiYakala() { m_FirsatMap.clear(); }

const CFirsatiYakala::tFirsatiYakalaInfo* CFirsatiYakala::GetTable(const BYTE id)
{
    auto it = m_FirsatMap.find(id);
    if (it != m_FirsatMap.end())
        return it->second.get();
    return NULL;
}

void CFirsatiYakala::LoadItems()
{
    if (quest::CQuestManager::instance().GetEventFlag("firsat_disable") == 1) { return; }
    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");

    std::unique_ptr<SQLMsg> pkMsg(DBManager::instance().DirectQuery(szQuery));
    if (pkMsg->Get()->uiNumRows > 0)
    {
        MYSQL_ROW row;
        while ((row = mysql_fetch_row(pkMsg->Get()->pSQLResult)) != NULL)
        {
            tFirsatiYakalaInfo* firsatInfo = new tFirsatiYakalaInfo;
            DWORD col = 0;
            firsatInfo->bID = std::stoi(row[col++]);
            firsatInfo->wEskiFiyat = std::stoi(row[col++]);
            firsatInfo->wYeniFiyat = std::stoi(row[col++]);
            firsatInfo->iTime = std::stoi(row[col++]);
            firsatInfo->firsatItems.clear();
            for (BYTE i = 0; i < MAX_ITEM; ++i)
            {
                DWORD vnum = std::stoi(row[col++]);
                BYTE count = std::stoi(row[col++]);
                if (vnum == 0 || count == 0)
                    break;
                firsatInfo->firsatItems.emplace(vnum, count);
            }
            m_FirsatMap.emplace(firsatInfo->bID, std::unique_ptr<tFirsatiYakalaInfo>(firsatInfo));
#ifdef LOGS
            sys_err("Emplace map new 'firsat' id : %d , eskifiyat : %d, yenifiyat : %d", firsatInfo->bID, firsatInfo->wEskiFiyat, firsatInfo->wYeniFiyat);
            for (const auto& pair : firsatInfo->firsatItems)
            {
                sys_err("Emplace map new 'firsat' vnum : %d count %d", pair.first, pair.second);
            }
#endif
        }
    }
}

void CFirsatiYakala::UpdateFirsatMap()
{
    if (g_bAuthServer) { return; }
    m_FirsatMap.clear(); // clear first
    LoadItems();
}

void CFirsatiYakala::UpdateP2PInfo()
{
    tPacketFirsatGG pGG = { HEADER_GG_UPDATE_FIRSAT_INFO };
    P2P_MANAGER::instance().Send(&pGG, sizeof(tPacketFirsatGG));
}

void CFirsatiYakala::SendClient(LPCHARACTER ch, const BYTE bSubHeader, const void* c_pvData, const size_t iSize)
{
    tFirsatGCPacketAction packet = {
        HEADER_GC_FIRSAT,
        bSubHeader
    };

    TEMP_BUFFER buf;
    buf.write(&packet, sizeof(packet));
    if (iSize)
        buf.write(c_pvData, iSize);
    ch->GetDesc()->Packet(buf.read_peek(), buf.size());
}

void CFirsatiYakala::SendInformation(LPCHARACTER ch)
{
    if (!ch || !ch->GetDesc()) { return; }
    SendClient(ch, SUB_FIRSAT_GC_CLEAR_LIST, NULL, 0); // clear first

    for (const auto& pair : m_FirsatMap)
    {
        const auto* pInfo = GetTable(pair.first);
        if (!pInfo) continue;
        
        tPacketGCFirsatData pack = {
            HEADER_GC_FIRSAT,
            pair.first,
            pInfo->wEskiFiyat,
            pInfo->wYeniFiyat,
            pInfo->iTime
        };
        for (const auto& inner_pair : pInfo->firsatItems)
        {
            pack.dwVnum = inner_pair.first;
            pack.bCount = inner_pair.second;
            SendClient(ch, SUB_FIRSAT_GC_NEW_LIST, &pack, sizeof(pack));
        }
    }
}

void CFirsatiYakala::OpenMyGui(LPCHARACTER ch)
{
    SendClient(ch, SUB_FIRSAT_GC_OPEN_GUI, NULL, 0);
    SendInformation(ch);
}
/* if not empty map show firsat icon in game */
void CFirsatiYakala::CheckFirsat(LPCHARACTER ch)
{
    if (quest::CQuestManager::instance().GetEventFlag("firsat_disable") == 1) { return; } // flag kontrol
    if (!ch || m_FirsatMap.empty()) { return; }
    ch->ChatPacket(CHAT_TYPE_COMMAND, "FirsatIcon %d", true);
}

void CFirsatiYakala::Buy(LPCHARACTER ch, const BYTE bID)
{
    const auto* it = GetTable(bID);
    if (it != nullptr)
    {
        if (it->iTime - get_global_time() < 0) {
            ch->ChatPacket(1, "Firsatin suresi dolmus!");
            return;
        }
        if (ch->GetDesc()->GetAccountTable().mall_price[0] < it->wYeniFiyat){
            ch->ChatPacket(1, "Yetersiz ejderha parasi!");
            return;
        }
        ch->ChangeMallPrice(0, -it->wYeniFiyat);
        ch->RefreshDragonCoin();
        for (const auto& pair : it->firsatItems)
        {
            ch->AutoGiveItem(pair.first, pair.second);
        }
    }
}
#endif
C++:
#pragma once
constexpr WORD FIRSAT_REFRESH = 10; // saniye cinsinden yaziniz, kac sn'de bir liste yenilensin

class CFirsatiYakala : public singleton<CFirsatiYakala>
{
public:
    struct tFirsatiYakalaInfo
    {
        BYTE bID;
        WORD wEskiFiyat; // ep fiyatı 65535'den fazlaysa DWORD olmali
        WORD wYeniFiyat; // ep fiyatı 65535'den fazlaysa DWORD olmali
        int iTime;
        std::map<DWORD, BYTE> firsatItems; // vnum - adet
        ~tFirsatiYakalaInfo() { bID = 0; wEskiFiyat = 0; wYeniFiyat = 0; iTime = 0; firsatItems.clear(); }
    };
private:
    using firsat_map = std::map<BYTE, std::unique_ptr<tFirsatiYakalaInfo>>;
public:
    ~CFirsatiYakala();
    const tFirsatiYakalaInfo* GetTable(BYTE id);
    void LoadItems();
    void UpdateFirsatMap();
    void UpdateP2PInfo();
    void SendClient(LPCHARACTER ch, const BYTE bSubHeader, const void* c_pvData, const size_t iSize);
    void SendInformation(LPCHARACTER ch);
    void OpenMyGui(LPCHARACTER ch);
    void CheckFirsat(LPCHARACTER ch);
    void Buy(LPCHARACTER ch, BYTE bID);
private:
    firsat_map m_FirsatMap;
    static constexpr BYTE MAX_ITEM = 5; // degisebilir
};
 
Sorunsuz Build aldım gamesrc tamam client src tamam Python kısmı da tamam fakat oyun içi gözükmüyor query i de ekledim item de ekledim gözükmüyor yine
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Konuyu görüntüleyenler

  • Üst