- Katılım
- 6 Kas 2021
- Mesajlar
- 3,399
- Tepkime puanı
- 4,909
- Puanları
- 113
- Yaş
- 31
- Konum
- Türkiye
- Dc
- fatihbulut
Merhaba,
Sonitex kullanan bir arkadaşım için biraz önce düzenleme yaptık.
Premium sürümü kullanılıyordu. Kendi içinde hali hazırda bir düzenleme var mı göremedim. Sadece rica edileni yaptım ve sizinle paylaşıyorum.
Hızlı ve pratik bir çözüm. Farklı kanallardan, haritalardan ve aynı alanda olsa dahi offline pazarı düzenlemenizi engeller.
Uzatmadan direkt düzenlememi paylaşayım.
private_shop_util.h dosyamıza giriş yapalım ve aşağıdaki satırları bulalım.
bunların hemen altına aşağıdaki benim kodumu dahil edelim ve dosyayı kaydedelim.
bu dosya ile işimiz bitti.
private_shop_util.cpp dosyamıza giriş yapalım ve aşağıdaki satırları bulalım.
bunun hemen altına aşağıdaki include'yi dahil edelim.
Daha sonra şunu şunu aratalım
ve altına hemen şunu dahil edelim :
bu dosya ile de işimiz artık bitti.
input_main.cpp dosyamızı açalım ve aşağıdaki yerleri bularak kodumuzu uygun alanlara ekleyelim.
Bulacağımız yerler :
Uygun alanlara ekleyeceğimiz kod :
Mükemmel bir çözüm değil.
Düz mantıkta hemen acilen isteğe göre yaptığımız bir şeydir.
Eleştiriye ve daha iyisi sunulmaya açıktır.
Sonitex kullanan bir arkadaşım için biraz önce düzenleme yaptık.
Premium sürümü kullanılıyordu. Kendi içinde hali hazırda bir düzenleme var mı göremedim. Sadece rica edileni yaptım ve sizinle paylaşıyorum.
Hızlı ve pratik bir çözüm. Farklı kanallardan, haritalardan ve aynı alanda olsa dahi offline pazarı düzenlemenizi engeller.
Uzatmadan direkt düzenlememi paylaşayım.
private_shop_util.h dosyamıza giriş yapalım ve aşağıdaki satırları bulalım.
Kod:
extern bool CanBuildPrivateShop(LPCHARACTER ch);
extern bool CheckTradeWindows(LPCHARACTER ch);
extern int GetEmptyInventory(LPCHARACTER pChar, LPITEM pItem);
bunların hemen altına aşağıdaki benim kodumu dahil edelim ve dosyayı kaydedelim.
Kod:
// Oyuncunun, kendi Private Shop'unu yönetebilmesi için gereken koşulları ekleyelim.
// Varsayılan yarıçap 2000’dir; 0 verilirse yakınlık şartı devre dışı kalır.
static const int PRIVATE_SHOP_EDIT_RADIUS_DEFAULT = 2000;
bool CanManagePrivateShopHere(LPCHARACTER ch, int iRadius = PRIVATE_SHOP_EDIT_RADIUS_DEFAULT);
bu dosya ile işimiz bitti.
private_shop_util.cpp dosyamıza giriş yapalım ve aşağıdaki satırları bulalım.
Kod:
#include "private_shop_manager.h"
bunun hemen altına aşağıdaki include'yi dahil edelim.
Kod:
#include "config.h"
Daha sonra şunu şunu aratalım
Kod:
int GetEmptyInventory(LPCHARACTER pChar, LPITEM pItem /* = nullptr */)
{
int iPos = -1;
......
......
......
......
return iPos;
}
ve altına hemen şunu dahil edelim :
Kod:
bool CanManagePrivateShopHere(LPCHARACTER ch, int iRadius)
{
if (!ch)
return false;
const TPrivateShop * pTab = ch->GetPrivateShopTable();
if (!pTab)
return false;
if (pTab->bChannel != g_bChannel)
return false;
if (ch->GetMapIndex() != pTab->lMapIndex)
return false;
if (iRadius > 0)
{
const long dx = static_cast<long>(ch->GetX()) - pTab->lX;
const long dy = static_cast<long>(ch->GetY()) - pTab->lY;
const long long dist2 = 1LL * dx * dx + 1LL * dy * dy;
const long long r2 = 1LL * iRadius * iRadius;
if (dist2 > r2)
return false;
}
return true;
}
bu dosya ile de işimiz artık bitti.
input_main.cpp dosyamızı açalım ve aşağıdaki yerleri bularak kodumuzu uygun alanlara ekleyelim.
Bulacağımız yerler :
Kod:
void CInputMain::PrivateShopClose(LPCHARACTER ch)
void CInputMain::PrivateShopWithdraw(LPCHARACTER ch)
void CInputMain::PrivateShopModify(LPCHARACTER ch)
int CInputMain::PrivateShopItemPriceChange(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
int CInputMain::PrivateShopItemMove(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
int CInputMain::PrivateShopItemCheckin(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
int CInputMain::PrivateShopItemCheckout(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
Uygun alanlara ekleyeceğimiz kod :
Kod:
if (!CanManagePrivateShopHere(ch))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Kisisel dukkanini yonetebilmek icin, magazanizin yaninda olmaniz gerekmektedir."));
return;
}
Mükemmel bir çözüm değil.
Düz mantıkta hemen acilen isteğe göre yaptığımız bir şeydir.
Eleştiriye ve daha iyisi sunulmaya açıktır.
