noisiv 1
noisiv
Manwe Work 1
Manwe Work
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
Mt2Hizmet 1
Mt2Hizmet
SLyFeLLowTR 1
SLyFeLLowTR
DEVLOPER 1
DEVLOPER
Hikaye Ekle

C++ [Yang Limiti] Statu Farkıyla

  • Konuyu başlatan Konuyu başlatan ZacqooLeaven
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 75
  • Görüntüleme Görüntüleme 13K
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

@Statu; arkadaşımızın uzun emekler sonucu düzenleyip paylaştığı ana konudur kendisi konuyu kapattığı için ben tekrardan açtım, anlatım birebir aynıdır, belki kodları hatasız almak isteyenler bu konudan faydalanacak, dolayısıyla Statu arkadaşımıza emekleri için çok teşekkür ederim bunu düzenlerken bile çok yoruldum, emeğinin boşa gitmesini istemedim. :ka19:
http://www.turkmmo.com/c-c-python/3299799-c-yang-limiti.html


Açılır: tables.h

Aratılır:
Kod:
Kod:
typedef struct SPlayerTable
Bulunur:
Kod:
Kod:
INT        gold;
Değiştirilir:
Kod:
Kod:
long long    gold;
___________________________________

Açılır: packet.h ve alttaki kod blokları bulunur
Kod:
Kod:
typedef struct packet_points
typedef struct packet_point_change
Alttaki kod blokları ile değiştirilir:

___________________________________

Açılır: char.h

Aratılır:
Kod:
Kod:
typedef struct character_point
Bulunur:
Kod:
Kod:
long            points[POINT_MAX_NUM];

ve

long            gold;
Değiştirilir:
Kod:
Kod:
long            points[POINT_MAX_NUM];

ve

long            gold;
Aratılır:
Kod:
Kod:
typedef struct character_point_instant
Bulunur:
Kod:
Kod:
long            points[POINT_MAX_NUM];
Değiştirilir:
Kod:
Kod:
long            points[POINT_MAX_NUM];
___________________________________

Açılır: char.h

Aratılır:
Kod:
Kod:
// Money related

255inciy9497400.png


Resimdeki kısım aşağıdakilerle değiştirilir:

___________________________________

Açılır: char.cpp

Aratılır:
Kod:
Kod:
void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE bItemCount)
Bulunur:

Değiştirilir:

___________________________________

Açılır: char.cpp

Aratılır:
Kod:
Kod:
CHARACTER::Disconnect
Bulunur:
Kod:
Kod:
snprintf(buf, sizeof(buf), "%s %d %d %ld %d", 
        inet_ntoa(GetDesc()->GetAddr().sin_addr), GetGold(), g_bChannel, GetMapIndex(), GetAlignment());
Değiştirilir:
Kod:
Kod:
snprintf(buf, sizeof(buf), "%s %lld %d %ld %d",
        inet_ntoa(GetDesc()->GetAddr().sin_addr), GetGold(), g_bChannel, GetMapIndex(), GetAlignment());
___________________________________

Açılır: char.cpp

Aratılır:
Kod:
Kod:
CHARACTER::PointChange
Kod bloğu bulunur:
Kod:
Kod:
case POINT_GOLD:
Aşağıdaki kod bloğu ile değiştirilir:

Aynı cpp de bulunur:
Kod:
Kod:
if (bAmount)
            pack.amount = amount;
        else
            pack.amount = 0;
Değiştirilir:
Kod:
if (bAmount)
Kod:
    pack.amount = (long long)amount;
        else
            pack.amount = 0;
___________________________________

Açılır: char_item.cpp

Aratılır:
Kod:
Kod:
if (GetGold() < cost)
Değiştirilir:
Kod:
Kod:
if (GetGold() < (long long)cost)
Aratılır:
Kod:
Kod:
if (GetGold() < prt->cost)
Değiştirilir:
Kod:
Kod:
if (GetGold() < (long long)prt->cost)
Aratılır:
Kod:
Kod:
if (gold <= 0 || gold > GetGold())
Değiştirilir:
Kod:
Kod:
if (gold <= 0 || (long long)gold > GetGold())
___________________________________

Açılır: cmd_gm.cpp

Kod bloğu bulunur:
Değiştirilir:

___________________________________

Açılır: input_main.cpp

Aratılır:
Kod:
Kod:
if (ch->GetGold() >= GOLD_MAX)
Değiştirilir:
Kod:
Kod:
if (ch->GetGold() > g_llMaxGold)
Aratılır:
Kod:
Kod:
void CInputMain::Exchange
Kod bloğu bulunur:
Kod:
Kod:
case EXCHANGE_SUBHEADER_CG_ELK_ADD:
Değiştirilir:

___________________________________

Açılır: shopEx.cpp

Aratılır:
Kod:
Kod:
int CShopEx::Buy
Kod bloğu bulunur:
Kod:
Kod:
case SHOP_COIN_TYPE_GOLD:
Değiştirilir:

___________________________________

Açılır: shop_manager.cpp

Aratılır:
Kod:
Kod:
void CShopManager::Sell
Bulunur:
Değiştirilir:

___________________________________

Açılır: shop.cpp

Bulunur:
Değiştirilir:

___________________________________

Açılır: questlua_pc.cpp

Bulunur:
Kod:
Kod:
sys_err("QUEST wrong ChangeGold %d (now %d)", gold, ch->GetGold());
Değiştirilir:
Kod:
Kod:
sys_err("QUEST wrong ChangeGold %d (now %lld)", gold, ch->GetGold());
___________________________________

Burda yeni config kodu oluşturuyoruz.

Açılır: config.h

Eklenir:
Kod:
Kod:
extern long long    g_llMaxGold;
___________________________________

Burda yeni config kodu oluşturuyoruz.


Açılır: config.cpp

Eklenir:
Kod:
Kod:
long long    g_llMaxGold = 9223372036854775807LL;
Aratılır:
Kod:
Kod:
TOKEN("empire_whisper")
Kod bloğunun altına eklenir:

___________________________________

Açılır: ClientManagerPlayer.cpp

Bulunur:
Kod:
Kod:
"gold = %d, "
sys_log(0, "[PLAYER_LOAD] ID %s pid %d gold %d ", pTab->name, pTab->id, pTab->gold);
Değiştirilir:
Kod:
Kod:
"gold = %lld, "
sys_log(0, "[PLAYER_LOAD] ID %s pid %d gold %lld ", pTab->name, pTab->id, pTab->gold);
Aratılır:
Kod:
Kod:
CClientManager::__QUERY_PLAYER_CREATE
Bulunur:
Değiştirilir:

___________________________________

Server-lib

Açılır: libthecore/src/utils.c

Aratılır:
Kod:
Kod:
int MINMAX(int min, int value, int max)
Kod bloğunun altına eklenir:

Eğer hata alırsanız "int MINMAX(int min, int value, int max)" kod bloğunu silip tekrar deneyin.
Not: bu işlem utils.h dede yapılmalıdır


___________________________________

Açılır: libthecore/src/utils.h

Aratılır:
Kod:
Kod:
extern int MINMAX(int min, int value, int max);
Atlına eklenir:
Kod:
Kod:
extern long long MAXLL(long long a, long long b);
extern long long MINLL(long long a, long long b);
extern long long MINMAXLL(long long min, long long val, long long max);
Eğer hata alırsanız "extern int MINMAX(int min, int value, int max);" silip deneyin.
Not: bu işlem utils.c dede yapılmalıdır


___________________________________

Client bölümü

Açılır: pachet.h

Kod blokları bulunur:
Kod:
Kod:
typedef struct packet_points
typedef struct packet_point_change
Bu kod blokları ile değiştirilir:

___________________________________

Açılır: AbstractPlayer.h

Aratılır:
Kod:
Kod:
virtual int        GetStatus(DWORD dwType) = 0;
Değiştirilir:
Kod:
Kod:
virtual long long GetStatus(DWORD dwType) = 0;
___________________________________

Açılır: PythonPlayer.h

Kod bloğu bulunur:
Kod:
Kod:
typedef struct SPlayerStatus
Bu kod bloğu ile değiştirilir:

Bulunur:
Kod:
Kod:
void    SetStatus(DWORD dwType, long lValue);
int        GetStatus(DWORD dwType);
Bunlarla değiştirilir:
Kod:
Kod:
void            SetStatus(DWORD dwType, long long lValue);
    long long        GetStatus(DWORD dwType);
___________________________________

Açılır: PythonPlayer.cpp

Bulunur:
Kod:
Kod:
const DWORD POINT_MAGIC_NUMBER = 0xe73ac1da;
Değiştirilir:
Kod:
Kod:
const long long POINT_MAGIC_NUMBER = 0xe73ac1da;
Kod blokları bulunur:
Kod:
Kod:
void CPythonPlayer::SPlayerStatus::SetPoint(UINT ePoint, long long lPoint)

ve

long long CPythonPlayer::SPlayerStatus::GetPoint(UINT ePoint)
Bu kod blokları ile değiştirilir:
Kod:
Kod:
void CPythonPlayer::SPlayerStatus::SetPoint(UINT ePoint, long long lPoint)
{
    m_alPoint[ePoint]=lPoint ^ POINT_MAGIC_NUMBER;
}

long long CPythonPlayer::SPlayerStatus::GetPoint(UINT ePoint)
{
    return m_alPoint[ePoint] ^ POINT_MAGIC_NUMBER;
}
Bulunur:
Kod:
Kod:
void CPythonPlayer::SetStatus(DWORD dwType, long lValue
Değiştirilir:
Kod:
Kod:
void CPythonPlayer::SetStatus(DWORD dwType, long long lValue)
Bulunur:
Kod:
Kod:
int CPythonPlayer::GetStatus(DWORD dwType)
Değiştirilir:
Kod:
Kod:
long long CPythonPlayer::GetStatus(DWORD dwType)
___________________________________

Açılır: PythonPlayerModule.cpp

Kod bloğu bulunur:
Kod:
Kod:
PyObject * playerGetElk(PyObject* poSelf, PyObject* poArgs)
Değiştirilir:
Kod:
Kod:
PyObject * playerGetElk(PyObject* poSelf, PyObject* poArgs)
{
    long long llGold = CPythonPlayer::Instance().GetStatus(POINT_GOLD);
#ifdef _DEBUG
    Tracef("GetElk(): %lld\n", llGold);
#endif
    return PyLong_FromLongLong(llGold);
}

Not: Bilmeyenler için açıklama :

C++ ' ta long long değişkeninin maximum değeri 9,223,372,036,854,775,807 seksilyondur.

Kaynak :
 
Son düzenleme:

En Çok Reaksiyon Alan Mesajlar

Merhabalar ben Pelin Melek Aslan
Son zamanlarda bu sistem sevilmiş sanırım bende şimdi paylaşma gereği görüyorum :rolleyes:


:m08::m08:

Eyvallah konu için, şu bölümü boş insanlara ve boş konulara bırakmayalım
teşekkür ederim. inşallah benim beklediğim ilgiyi bu konu görür. herkesin aradığı bişey çok az kişi yapıyor. kimisi parayla satmaya kalkıyor. bizzat ben kendim test ettim çalışıyor
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst