Max yang [TELJES]

Indította huzsihun1997, 2015-05-01, 13:53:37

2015-05-01, 13:53:37 Utolsó szerkesztés: 2015-05-01, 13:55:48 Szerző: huzsihun1997
Sziasztok!

Sikerült összehozni, a max yangot, 2 milliárdról,


Nos, kezdjünk is bele.

Szükséges fájlok:
~PythonPlayerModule.cpp
~Char.cpp
~Char.h
~config.cpp
~tables.h
~lenght.h

Mindenhol, az átírt értéket fogom leírni, tehát a funkcióra rákeresel, és teljesen felül írod ezekkel:
Hogyha már módosítottál, más értékeket is (pl max szint értékét) akkor érdemes unsigned long long-ra rakni, ugyanis van ahol több értéket is használ. Hogyha nem működik, akkor egy teljesen szűz forráson csináld meg.

char.cpp


case POINT_GOLD:
    {
        long long GoldAmount = 0;
        const int64_t nTotalMoney = GetGold() + GoldAmount;

        if (GOLD_MAX <= nTotalMoney)
        {
            sys_err("[OVERFLOW_GOLD] OriGold %d AddedGold %d id %u Name %s ", GetGold(), GoldAmount, GetPlayerID(), GetName());
            //LogManager::instance().CharLog(this, GetGold() + amount, "OVERFLOW_GOLD", "");
            return;
        }

        SetGold(GetGold() + GoldAmount);
        goldval = GetGold();
    }
    break;


char.h

typedef struct character_point
{
    long            points[POINT_MAX_NUM];

    BYTE            job;
    BYTE            voice;

    BYTE            level;
    DWORD           exp;
    long long       gold; //az érték long long vagy ULL.

    int             hp;
    int             sp;

    int             iRandomHP;
    int             iRandomSP;

    int             stamina;

    BYTE            skill_group;
} CHARACTER_POINT;

        // Pénz kezdete
        long long       GetGold() const     { return m_points.gold; }
        void            SetGold(long long gold) { m_points.gold = gold; }
        bool            DropGold(INT gold);
        INT             GetAllowedGold() const;
        void            GiveGold(INT iAmount);  // Érték adás
        // pénz vége


config.cpp

long long GOLD_MAX = 1000000000000000000LL;


tables.h

typedef struct SPlayerTable
{
    DWORD   id;

    char    name[CHARACTER_NAME_MAX_LEN + 1];
    char    ip[IP_ADDRESS_LENGTH + 1];

    WORD    job;
    BYTE    voice;

    BYTE    level;
    BYTE    level_step;
    short   st, ht, dx, iq;

    DWORD   exp;
    long long   gold;

    BYTE    dir;
    INT     x, y, z;
    INT     lMapIndex;

    long    lExitX, lExitY;
    long    lExitMapIndex;

    long       hp;
    long       sp;

    short   sRandomHP;
    short   sRandomSP;

    int         playtime;

    short   stat_point;
    short   skill_point;
    short   sub_skill_point;
    short   horse_skill_point;

    TPlayerSkill skills[SKILL_MAX_NUM];

    TQuickslot  quickslot[QUICKSLOT_MAX_NUM];

    BYTE    part_base;
    WORD    parts[PART_MAX_NUM];

    short   stamina;

    BYTE    skill_group;
    long    lAlignment;
    char    szMobile[MOBILE_MAX_LEN + 1];

    short   stat_reset_count;

    THorseInfo  horse;

    DWORD   logoff_interval;

    int     aiPremiumTimes[PREMIUM_MAX_NUM];
} TPlayerTable;


PythonPlayerModule.cpp


PyObject * playerGetElk(PyObject* poSelf, PyObject* poArgs)
{
    __int64 GoldVal = CPythonPlayer::Instance().GetStatus(POINT_GOLD);
    return Py_BuildValue("L", GoldVal);
}


lenght.h

GOLD_MAX = 999990000000ULL,

vagy

GOLD_MAX = 999990000000LL,

vagy

GOLD_MAX = 999990000000L,

vagy

GOLD_MAX = 999990000000IL,

vagy

GOLD_MAX = 999990000000ILL,


Ez attol függ, hogy mit módositottál eddig a gamefiled-ban.

Navicatban pedig emeljük a yang értékét, értelemszerüen arra az értékre, amire itt beállitottuk.