KoPVP Logo
Bildirimler
Yükleniyor...
Ayın Serverı

DeathKO | v1453 Fire Drake | Official Açılış: 12 HAZİRAN - 21:00 GMT+3

12 gün 5 saat önce açıldı
Server'a Göz At

24xx Offline Pazar (Merchant)

Admin
Admin
21.06.2026, 22:32 • #1
GameserverDlg.cpp içersinde CreateDirectory Satırlarını bulup devamına ;

Kod:
CreateDirectory("Logs/OfflineMerchantLogs",NULL);
Satırını ekliyoruz. Daha sonra;
void CGameServerDlg::****log(std::string & logMessage) girdilerininin altına ;

Kod:
void CGameServerDlg::WriteOfflineMerchantLog(std::string & logMessage)

{
AddLogRequest(logMessage,LogTypes::OFFLINEMERCHANT);
}
Ekliyoruz,
Gameserverdlg.h içersinde FILE m_***; girdilerini arıyoruz altına ;

Kod:
FILE *m_fpOfflineMerchantLog;
ekliyoruz. Buradaki girdilerin aşağıda voidleri olmalı onları bulup altına ;

Kod:
void WriteOfflineMerchantLog(std::string & logMessage);
eklyoruz.
Knightlogger.cpp bu kısımda Case ile başlayıp break ile biten girdilerden birinin altına ;

Kod:
case OFFLINEMERCHANT:

g_pMain->m_fpOfflineMerchantLog = fopen(string_format("./Logs/OfflineMerchantLogs/OfflineMerchant_%d_%d_%d.log", time.GetDay(), time.GetMonth(),time.GetYear()).c_str(), "a");
if (g_pMain->m_fpOfflineMerchantLog == nullptr)
{
printf("ERROR: Unable to open OfflineMerchant file.\n");
break;
}
fwrite(logmsg.c_str(), logmsg.length(), 1, g_pMain->m_fpOfflineMerchantLog);
fflush(g_pMain->m_fpOfflineMerchantLog);
fclose(g_pMain->m_fpOfflineMerchantLog);
break;
ekliyoruz.

loginhandler.cpp
içersinde WIZ_LOGIN altında CUser * pUser = g_pMain->GetUserPtr... bulup altına

Kod:
if (pUser && pUser->OfflineMerchantLoginType)

{
pUser->OfflineMerchantLoginType = false;
pUser->OfflineMerchantSocketType = false;
DateTime time;
g_pMain->WriteOfflineMerchantLog(string_format("[Merchant Disconnect - %d:%d:%d ] = %s\n", time.GetHour(), time.GetMinute(), time.GetSecond(), pUser->GetName().c_str()));
pUser->Disconnect();
goto fail_return;
}

ekliyoruz.

Merchanthandler.cpp içersinde void CUser::MerchantClose() bulup altına ;

Kod:
OfflineMerchantSocketType = false;

OfflineMerchantLoginType = false;
ekliyoruz,

m_bMerchantState = MERCHANT_STATE_SELLING;
SendToRegion(&result, nullptr, GetEventRoom()); bulup altına ;

Kod:
_ITEM_TABLE* pOfflineMerchantItem = GetItemPrototype(CFAIRY); // Peri Slotuna Takýlýmý kontrol et.

if (pOfflineMerchantItem == nullptr)//takýlý deðilse içeri girme.
return;

if (pOfflineMerchantItem != nullptr && pOfflineMerchantItem->m_iNum == 900677882) // Otp Emblem -> Offline Emblem
{
OfflineMerchantSocketType = true;
OfflineMerchantLoginType = true;
g_pMain->SendHelpDescription(this, string_format("[TR] - ""[Offline Merchant] : Offline merchant aktif edildi oyundan çýkabilirsiniz!"));
g_pMain->SendHelpDescription(this, string_format("[EN] - ""[Offline Merchant] : Offline merchant active. You can exit the game!"));
}
ekliyoruz.

User.cpp içersinde void CUser::Initialize() bulup altına ;

Kod:
OfflineMerchantLoginType = false;
ekliyoruz.

void CUser::Update(bool save) arıyoruz, altında ki kapatılmış kodlardan birinin arkasından

Kod:
if (OfflineMerchantSocketType && OfflineMerchantTimeType)

{
if (UNIXTIME >= OfflineMerchantTime)
{
OfflineMerchantSocketType = false;
OfflineMerchantTimeType = false;
DateTime time;
g_pMain->WriteOfflineMerchantLog(string_format("[Merchant Disconnect - %d:%d:%d ] = %s\n", time.GetHour(), time.GetMinute(), time.GetSecond(), GetName().c_str()));
Disconnect();
return;
}
}
ekliyoruz.

User.h içersine ;

Kod:
bool OfflineMerchantLoginType;
ekliyoruz.

packets.h içersinde enum logtypes altına devam edip

Kod:
OFFLINEMERCHANT = 14,
ekliyoruz.

socket.cpp altında

Kod:
OfflineMerchantSocketType(false), OfflineMerchantTimeType(false)
ekliyoruz.
Alt satıra ise
Kod:
OfflineMerchantTime = 0;
ekliyoruz.

void Socket:😀isconnect()
{
if (!IsConnected())
return; Kodunun altına ;

Kod:
if (OfflineMerchantSocketType)

{
if (OfflineMerchantTime <= 0)
{
OfflineMerchantTimeType = true;
OfflineMerchantTime = (uint32_t(UNIXTIME) + 172800); /* 36000 = 10 saat / 3600 = 1 Saat*/
}
return;
}
ekliyoruz.

Socket.h içersine

Kod:
//Offline Merchant

bool OfflineMerchantSocketType;
bool OfflineMerchantTimeType;
uint32_t OfflineMerchantTime;

Offline itemi yukarı bölümde geçmişti bunu kendinize göre değiştirebilirsiniz.
Itemi Peri Slotuna Emblem şeklinde kendiniz ekleyebilirsiniz.
Eksiğini görenler belirtirse amacına ulaşmış olur.



Kayıt: 2026 Mesaj: 0 İtibar: 0
Cevap yazabilmek için giriş yapmalısınız.