Neler yeni
XenForo Bannerlar
Modern AdBlock Uyarısı

Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Kod Sonitex Offline Shop Uzaktan Mağaza Kontrol Engeli Mağaza Yakınlık Şartı.

Fatih Bulut

Süper Üye
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.

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.
 

Benzer konular

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Tema düzenleyici

Tema özelletirmeleri

Grafik arka planlar

Granit arka planlar