Çözüldü Offlineshop long long iptal etmek

  • Konuyu açan Konuyu açan MEKA
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 14
  • Gösterim Gösterim 1K
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

MEKA

Discord: mekaprojects
Süper Moderatör
Grafiker
Geliştirici
Yardımsever Üye
Mesaj
3.008
Çözümler
318
Beğeni
2.268
Puan
1.850
Ticaret Puanı
2
Aşağıda bulunan kodlarda long long nasıl iptal ederim offlineshopumda banka problemi var bankadan para çekince 2yi geçtiği zaman boşa gidiyor kodları incelediğimde max_yangtan çektiğini fark ettim sanırım long long var diye problem yaşıyorum bu yüzden long long iptal etmek istiyorum aşşağıdaki kodları nasıl değiştirmem gerek yardımlarınızı bekliyorum

C#:
Genişlet Daralt Kopyala
#ifdef ENABLE_OFFLINE_SHOP_SYSTEM
PyObject * playerGetCurrentOfflineShopMoney(PyObject * poSelf, PyObject * poArgs)
{
    return PyLong_FromLongLong(CPythonPlayer::instance().GetCurrentOfflineShopMoney());
}
#endif

C#:
Genişlet Daralt Kopyala
#ifdef ENABLE_OFFLINE_SHOP_SYSTEM
void CPythonPlayer::SetCurrentOfflineShopMoney(long long llMoney)
{
    m_llCurrentOfflineShopMoney = llMoney;
}

long long CPythonPlayer::GetCurrentOfflineShopMoney()
{
    return m_llCurrentOfflineShopMoney;
}
#endif
 
Çözüm
Onun sistemle bi alakası yok. :D Ekstra eklenen bir fonksiyon olduğu için ellemenize gerek yok. Bu gibi durumlarda oyunun diğer kodlarına bakarak az çok karşılaştırma yapabilirsiniz. Oyuncunun yang miktarını gösteren fonksiyonları inceleyin.

Offlineshop yang miktarını serverde ki kodlarda da dword türünde tutulduğundan emin olunuz.

Bunun dışında socket ile gönderilen packet veriler var. Onda da dword olması gerek. Eğer server kısmında da long long varsa clientte de long long kalsın.
Yardımın için teşekkürler kapatabilirsin.
Eğer çekerken envanterinizde ki yang miktarı 2t olduğu halde çekmeye devam ediliyorsa bu eklediğiniz kodlardan kaynaklı değildir.
 
Eğer çekerken envanterinizde ki yang miktarı 2t olduğu halde çekmeye devam ediliyorsa bu eklediğiniz kodlardan kaynaklı değildir.
Eklediğim offlineshop max yang uyarlı yani 999t vs. ben serverimde 2t kullanıyorum o yüzden problem çıkartıyor diye düşünüyorum
 
long olan yerleri hep dword ile değiştirmeniz lazım
 
Diğer kodları inceleyerek bulabilirsiniz. Mesela oyuna giriş yapılan karakterin yang bilgisini şu şekilde veriyor;
C++:
Genişlet Daralt Kopyala
PyObject * playerGetElk(PyObject* poSelf, PyObject* poArgs)
{
    return Py_BuildValue("i", CPythonPlayer::Instance().GetStatus(POINT_GOLD));
}


Bu şekilde düzenleyebilirsiniz.
C++:
Genişlet Daralt Kopyala
#ifdef ENABLE_OFFLINE_SHOP_SYSTEM
PyObject * playerGetCurrentOfflineShopMoney(PyObject * poSelf, PyObject * poArgs)
{
    return Py_BuildValue("i", CPythonPlayer::instance().GetCurrentOfflineShopMoney());
}
#endif


Sadece bunu düzenlemekle yetmiyor. Offlineshop para miktarını hafıza tutmak için atanan değişkeni de DWORD'a çevirmeniz gerekiyor
 
Diğer kodları inceleyerek bulabilirsiniz. Mesela oyuna giriş yapılan karakterin yang bilgisini şu şekilde veriyor;
C++:
Genişlet Daralt Kopyala
PyObject * playerGetElk(PyObject* poSelf, PyObject* poArgs)
{
    return Py_BuildValue("i", CPythonPlayer::Instance().GetStatus(POINT_GOLD));
}


Bu şekilde düzenleyebilirsiniz.
C++:
Genişlet Daralt Kopyala
#ifdef ENABLE_OFFLINE_SHOP_SYSTEM
PyObject * playerGetCurrentOfflineShopMoney(PyObject * poSelf, PyObject * poArgs)
{
    return Py_BuildValue("i", CPythonPlayer::instance().GetCurrentOfflineShopMoney());
}
#endif


Sadece bunu düzenlemekle yetmiyor. Offlineshop para miktarını hafıza tutmak için atanan değişkeni de DWORD'a çevirmeniz gerekiyor

Problemi çözdüm fakat şunlar long long olarak bıraktım bunlar problem çıkartırmı bilemedim bunları silmiştim fakat oyun içerisinde bankada bulunan yang miktarını göstermediği için tekrardan ekledim long long olmaları bir problem çıkartır mı çıkartırsa ne gibi düzenlemeler yapmam gerek bu kodlarda

Scriptlib Pyhtonutils.cpp

C++:
Genişlet Daralt Kopyala
bool PyTuple_GetLongLong(PyObject* poArgs, int pos, long long* ret)
{
    if (pos >= PyTuple_Size(poArgs))
        return false;

    PyObject * poItem = PyTuple_GetItem(poArgs, pos);
   
    if (!poItem)
        return false;
   
    *ret = PyLong_AsLongLong(poItem);
    return true;
}

PyhtonPlayerModule.cpp

C++:
Genişlet Daralt Kopyala
#ifdef ENABLE_OFFLINE_SHOP_SYSTEM
PyObject * playerGetCurrentOfflineShopMoney(PyObject * poSelf, PyObject * poArgs)
{
    return PyLong_FromLongLong(CPythonPlayer::instance().GetCurrentOfflineShopMoney());
}
#endif
PyhtonPayer.cpp
C++:
Genişlet Daralt Kopyala
#ifdef ENABLE_OFFLINE_SHOP_SYSTEM
void CPythonPlayer::SetCurrentOfflineShopMoney(int dwMoney)
{
    m_llCurrentOfflineShopMoney = dwMoney;
}

long long CPythonPlayer::GetCurrentOfflineShopMoney()
{
    return m_llCurrentOfflineShopMoney;
}
#endif

PyhtonPlayer.h
C++:
Genişlet Daralt Kopyala
#ifdef ENABLE_OFFLINE_SHOP_SYSTEM
        void        SetCurrentOfflineShopMoney(int dwMoney);
        long long            GetCurrentOfflineShopMoney();
#endif
 
Eğer server kısmında veri size dword olarak gönderiliyorsa burada da dworda çevirmeniz gerek. Veritiplerinin boyutuna göre ram de kapladığı miktarda değişebilir.

DWORD denilen tür aslında unsigned integer veritipidir. Bu da 32bitlik (4 byte) yer kaplar.

Long long ise 64bit (8 byte) yer kaplar.

Buralardan da diğer veri türlerine de bakabilirsiniz:
Linkleri görebilmek için giriş yap veya kayıt ol.

Linkleri görebilmek için giriş yap veya kayıt ol.


Ekleme: Eğer unsigned kelimesi varsa bu sayının en az 0 olması anlamına gelir.
 
Eğer server kısmında veri size dword olarak gönderiliyorsa burada da dworda çevirmeniz gerek. Veritiplerinin boyutuna göre ram de kapladığı miktarda değişebilir.

DWORD denilen tür aslında unsigned integer veritipidir. Bu da 32bitlik (4 byte) yer kaplar.

Long long ise 64bit (8 byte) yer kaplar.

Buralardan da diğer veri türlerine de bakabilirsiniz:
Linkleri görebilmek için giriş yap veya kayıt ol.

Linkleri görebilmek için giriş yap veya kayıt ol.


Ekleme: Eğer unsigned kelimesi varsa bu sayının en az 0 olması anlamına gelir.
Şimdi anladığım kadarıyla long long ile başlayanları dworda çevirmem gerek
PyTuple_GetLongLong onlanıda PyTuple_GetUnsignedInteger böyle mi yapmam gerekiyor :D
 
Şimdi anladığım kadarıyla long long ile başlayanları dworda çevirmem gerek
PyTuple_GetLongLong onlanıda PyTuple_GetUnsignedInteger böyle mi yapmam gerekiyor :D
Hayır onun için önceki mesajımda kodları paylaştım sizinle. Ama header kısmında da m_llCurrentOfflineShopMoney belirtilen şu değişkeni de dworda çevirmeniz gerek.

#6
 
Hayır onun için önceki mesajımda kodları paylaştım sizinle. Ama header kısmında da m_llCurrentOfflineShopMoney belirtilen şu değişkeni de dworda çevirmeniz gerek.

#6

Şu 3ünü ne olarak değişitirmem lazım onu anlamadım

C++:
Genişlet Daralt Kopyala
long long CPythonPlayer::GetCurrentOfflineShopMoney()

C++:
Genişlet Daralt Kopyala
        long long            GetCurrentOfflineShopMoney();

C++:
Genişlet Daralt Kopyala
bool PyTuple_GetLongLong(PyObject* poArgs, int pos, long long* ret)
{
    if (pos >= PyTuple_Size(poArgs))
        return false;

    PyObject * poItem = PyTuple_GetItem(poArgs, pos);
   
    if (!poItem)
        return false;
   
    *ret = PyLong_AsLongLong(poItem);
    return true;
}
 
long olan yerleri hep dword ile değiştirmeniz lazım

Bu aşağıda ki kodu ellemeyin.
C++:
Genişlet Daralt Kopyala
bool PyTuple_GetLongLong(PyObject* poArgs, int pos, long long* ret)
{
    if (pos >= PyTuple_Size(poArgs))
        return false;
    PyObject * poItem = PyTuple_GetItem(poArgs, pos);
  
    if (!poItem)
        return false;
  
    *ret = PyLong_AsLongLong(poItem);
    return true;
}
 

tamam o 2sini dword olarak ayarlıyacam peki burada ne yapmam gerek :D

C++:
Genişlet Daralt Kopyala
bool PyTuple_GetLongLong(PyObject* poArgs, int pos, long long* ret)
{
    if (pos >= PyTuple_Size(poArgs))
        return false;
    PyObject * poItem = PyTuple_GetItem(poArgs, pos);
  
    if (!poItem)
        return false;
  
    *ret = PyLong_AsLongLong(poItem);
    return true;
}
 
Onun sistemle bi alakası yok. :D Ekstra eklenen bir fonksiyon olduğu için ellemenize gerek yok. Bu gibi durumlarda oyunun diğer kodlarına bakarak az çok karşılaştırma yapabilirsiniz. Oyuncunun yang miktarını gösteren fonksiyonları inceleyin.

Offlineshop yang miktarını serverde ki kodlarda da dword türünde tutulduğundan emin olunuz.

Bunun dışında socket ile gönderilen packet veriler var. Onda da dword olması gerek. Eğer server kısmında da long long varsa clientte de long long kalsın.
 
Onun sistemle bi alakası yok. :D Ekstra eklenen bir fonksiyon olduğu için ellemenize gerek yok. Bu gibi durumlarda oyunun diğer kodlarına bakarak az çok karşılaştırma yapabilirsiniz. Oyuncunun yang miktarını gösteren fonksiyonları inceleyin.

Offlineshop yang miktarını serverde ki kodlarda da dword türünde tutulduğundan emin olunuz.

Bunun dışında socket ile gönderilen packet veriler var. Onda da dword olması gerek. Eğer server kısmında da long long varsa clientte de long long kalsın.
Yardımın için teşekkürler kapatabilirsin.
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst