Bvural41 1
Bvural41
emirhanHCL 1
emirhanHCL
Hikaye Ekle
Kaynak ikonu

(Yeni) Yenileme Resmi cube Sistemi

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

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

cube_renewal_new.jpg.639754e739aeb8717bbdf024e0ae172a.jpg


1. Client / UserInterface / Locale_inc.h dosyasını açın ve ekleyin:
Kod:
#define ENABLE_CUBE_RENEWAL

2. Client / Kullanıcı Arayüzü / packet.h'yi açın ve içinde bulun:
Kod:
    HEADER_CG_KEY_AGREEMENT                        = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
    HEADER_CG_TIME_SYNC                            = 0xfc,
    HEADER_CG_CLIENT_VERSION                    = 0xfd,
    HEADER_CG_CLIENT_VERSION2                    = 0xf1,
    HEADER_CG_PONG                                = 0xfe,
    HEADER_CG_HANDSHAKE                         = 0xff,


Üzerine ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
    HEADER_CG_CUBE_RENEWAL                         = 215,
#endif

Bul:
Kod:
    HEADER_GC_KEY_AGREEMENT_COMPLETED            = 0xfa, // _IMPROVED_PACKET_ENCRYPTION_
    HEADER_GC_KEY_AGREEMENT                        = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
    HEADER_GC_HANDSHAKE_OK                        = 0xfc, // 252
    HEADER_GC_PHASE                                = 0xfd,    // 253
    HEADER_GC_BINDUDP                           = 0xfe, // 254
    HEADER_GC_HANDSHAKE                         = 0xff, // 255

Üzerine ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
    HEADER_GC_CUBE_RENEWAL                         = 217,
#endif

Bul:
Kod:
#pragma pack(pop)

Altına ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
enum
{
    CUBE_RENEWAL_SUB_HEADER_OPEN_RECEIVE,
    CUBE_RENEWAL_SUB_HEADER_CLEAR_DATES_RECEIVE,
    CUBE_RENEWAL_SUB_HEADER_DATES_RECEIVE,
    CUBE_RENEWAL_SUB_HEADER_DATES_LOADING,

    CUBE_RENEWAL_SUB_HEADER_MAKE_ITEM,
    CUBE_RENEWAL_SUB_HEADER_CLOSE,
};

typedef struct  packet_send_cube_renewal
{
    BYTE header;
    BYTE subheader;
    DWORD index_item;
    DWORD count_item;
    DWORD index_item_improve;
} TPacketCGCubeRenewalSend;

typedef struct dates_cube_renewal
{
    DWORD npc_vnum;
    DWORD index;

    DWORD    vnum_reward;
    int        count_reward;

    bool     item_reward_stackable;

    DWORD    vnum_material_1;
    int        count_material_1;

    DWORD    vnum_material_2;
    int        count_material_2;

    DWORD    vnum_material_3;
    int        count_material_3;

    DWORD    vnum_material_4;
    int        count_material_4;

    DWORD    vnum_material_5;
    int        count_material_5;

    int     gold;
    int     percent;

    char     category[100];
} TInfoDateCubeRenewal;

typedef struct packet_receive_cube_renewal
{
    packet_receive_cube_renewal(): header(HEADER_GC_CUBE_RENEWAL)
    {}

    BYTE header;
    BYTE subheader;
    TInfoDateCubeRenewal    date_cube_renewal;
} TPacketGCCubeRenewalReceive;
#endif

3. Client / UserInterface / PythonApplication.h dosyasını açın ve içinde bulun:
Kod:
#include "PythonExchange.h"
#include "PythonChat.h"

Üzerine ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
#include "PythonCubeRenewal.h"
#endif

Bul:
Kod:
        CGraphicDevice                m_grpDevice;
        CNetworkDevice                m_netDevice;

        CPythonSystem                m_pySystem;

Altına ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
        CPythonCubeRenewal             m_pyCubeRenewal;
#endif

4. client / UserInterface / PythonApplicationModule.cpp açın ve içinde bulun:
Kod:
#ifdef ENABLE_COSTUME_SYSTEM
    PyModule_AddIntConstant(poModule, "ENABLE_COSTUME_SYSTEM",    1);
#else
    PyModule_AddIntConstant(poModule, "ENABLE_COSTUME_SYSTEM",    0);
#endif


Üzerine ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
    PyModule_AddIntConstant(poModule, "ENABLE_CUBE_RENEWAL",    1);
#else
    PyModule_AddIntConstant(poModule, "ENABLE_CUBE_RENEWAL",    0);
#endif

5. Client / UserInterface / PythonNetworkStream.cpp dosyasını açın ve içinde bulun:
Kod:
            Set(HEADER_GC_DRAGON_SOUL_REFINE,        CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCDragonSoulRefine), STATIC_SIZE_PACKET));

Altına ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
            Set(HEADER_GC_CUBE_RENEWAL,    CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCCubeRenewalReceive), STATIC_SIZE_PACKET));
#endif

6. client / UserInterface / PythonNetworkStream.h dosyasını açın ve içinde bulun:
Kod:
        // ETC
        DWORD GetMainActorVID();
        DWORD GetMainActorRace();
        DWORD GetMainActorEmpire();
        DWORD GetMainActorSkillGroup();
        void SetEmpireID(DWORD dwEmpireID);
        DWORD GetEmpireID();
        void __TEST_SetSkillGroupFake(int iIndex);

Üzerine ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
        bool CubeRenewalMakeItem(int index_item, int count_item, int index_item_improve);
        bool CubeRenewalClose();
        bool RecvCubeRenewalPacket();
#endif

7. Client / UserInterface / PythonNetworkStreamPhaseGame.cpp açın ve içinde bulun:
Kod:
#include "PythonTextTail.h"
#include "PythonItem.h"
#include "PythonChat.h"

Altına ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
#include "PythonCubeRenewal.h"
#endif

Bul:
Kod:
            case HEADER_GC_DRAGON_SOUL_REFINE:
                ret = RecvDragonSoulRefine();
                break;

Altına ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
            case HEADER_GC_CUBE_RENEWAL:
                ret = RecvCubeRenewalPacket();
                break;   
#endif

Bul:
Kod:
bool CPythonNetworkStream::SendDragonSoulRefinePacket(BYTE bRefineType, TItemPos* pos)
{
    TPacketCGDragonSoulRefine pk;
    pk.header = HEADER_CG_DRAGON_SOUL_REFINE;
    pk.bSubType = bRefineType;
    memcpy (pk.ItemGrid, pos, sizeof (TItemPos) * DS_REFINE_WINDOW_MAX_NUM);
    if (!Send(sizeof (pk), &pk))
    {
        return false;
    }
    return true;
}

Altına ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
bool CPythonNetworkStream::CubeRenewalMakeItem(int index_item, int count_item, int index_item_improve)
{
    if (!__CanActMainInstance())
        return true;

    TPacketCGCubeRenewalSend    packet;

    packet.header        = HEADER_CG_CUBE_RENEWAL;
    packet.subheader    = CUBE_RENEWAL_SUB_HEADER_MAKE_ITEM;
    packet.index_item     = index_item;
    packet.count_item   = count_item;
    packet.index_item_improve    = index_item_improve;

    if (!Send(sizeof(TPacketCGCubeRenewalSend), &packet))
    {
        Tracef("CPythonNetworkStream::CubeRenewalMakeItem Error\n");
        return false;
    }

    return SendSequence();
}

bool CPythonNetworkStream::CubeRenewalClose()
{
    if (!__CanActMainInstance())
        return true;

    TPacketCGCubeRenewalSend    packet;

    packet.header        = HEADER_CG_CUBE_RENEWAL;
    packet.subheader    = CUBE_RENEWAL_SUB_HEADER_CLOSE;

    if (!Send(sizeof(TPacketCGCubeRenewalSend), &packet))
    {
        Tracef("CPythonNetworkStream::CubeRenewalClose Error\n");
        return false;
    }

    return SendSequence();
}

bool CPythonNetworkStream::RecvCubeRenewalPacket()
{

    TPacketGCCubeRenewalReceive CubeRenewalPacket;

    if (!Recv(sizeof(CubeRenewalPacket), &CubeRenewalPacket))
        return false;

    switch (CubeRenewalPacket.subheader)
    {

        case CUBE_RENEWAL_SUB_HEADER_OPEN_RECEIVE:
        {
            PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_CUBE_RENEWAL_OPEN", Py_BuildValue("()"));
        }
        break;

        case CUBE_RENEWAL_SUB_HEADER_DATES_RECEIVE:
        {
            CPythonCubeRenewal::Instance().ReceiveList(CubeRenewalPacket.date_cube_renewal);
        }
        break;

        case CUBE_RENEWAL_SUB_HEADER_DATES_LOADING:
        {
            CPythonCubeRenewal::Instance().LoadingList();
        }
        break;

        case CUBE_RENEWAL_SUB_HEADER_CLEAR_DATES_RECEIVE:
        {
            CPythonCubeRenewal::Instance().ClearList();
        }
        break;
    }

    return true;
}
#endif

8. Client / UserInterface / StdAfx.h dosyasını açın ve içinde bulun:
Kod:
void initsafebox();
void initguild();
void initMessenger();

Altına ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
void intcuberenewal();
#endif

9. Client / UserInterface / UserInterface.cpp dosyasını açın ve içinde bulun:
Kod:
    initsafebox();
    initguild();
    initServerStateChecker();

Altına ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
    intcuberenewal();
#endif

10. Kullanıcı Arayüzüne ekleyin ve projelendirin:

11. game / service.h dosyasını açın ve ekleyin:
Kod:
#define ENABLE_CUBE_RENEWAL

12. game / char.h dosyasını açın ve bulun:
Kod:
#include "cube.h"

Altına ekle:
Kod:
#include "cube_renewal.h"

13. game / cmd_general.cpp dosyasını açın ve içinde bulun:
Kod:
ACMD(do_cube)

Her şeyi şununla değiştir:
Kod:
ACMD(do_cube)
{

    const char *line;
    char arg1[256], arg2[256], arg3[256];
    line = two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));
    one_argument(line, arg3, sizeof(arg3));

    if (0 == arg1[0])
    {
        return;
    }

    switch (LOWER(arg1[0]))
    {
        case 'o':    // open
            Cube_open(ch);
            break;

        default:
            return;
    }
}

14. game / input.h dosyasını açın ve içinde bulun:
Kod:
        void        Refine(LPCHARACTER ch, const char* c_pData);

Üzerine ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
        void         CubeRenewalSend(LPCHARACTER ch, const char* data);
#endif

15. game / input_main.cpp dosyasını açın ve içinde bulun:
Kod:
        case HEADER_CG_DRAGON_SOUL_REFINE:
            {
                TPacketCGDragonSoulRefine* p = reinterpret_cast <TPacketCGDragonSoulRefine*>((void*)c_pData);
                switch(p->bSubType)
                {
                case DS_SUB_HEADER_CLOSE:
                    ch->DragonSoul_RefineWindow_Close();
                    break;
                case DS_SUB_HEADER_DO_REFINE_GRADE:
                    {
                        DSManager::instance().DoRefineGrade(ch, p->ItemGrid);
                    }
                    break;
                case DS_SUB_HEADER_DO_REFINE_STEP:
                    {
                        DSManager::instance().DoRefineStep(ch, p->ItemGrid);
                    }
                    break;
                case DS_SUB_HEADER_DO_REFINE_STRENGTH:
                    {
                        DSManager::instance().DoRefineStrength(ch, p->ItemGrid);
                    }
                    break;
                }
            }
            break;

Altına ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
        case HEADER_CG_CUBE_RENEWAL:
            CubeRenewalSend(ch, c_pData);
            break;
#endif

Dosyanın sonuna şunu ekleyin:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
void CInputMain::CubeRenewalSend(LPCHARACTER ch, const char* data)
{
    struct packet_send_cube_renewal * pinfo = (struct packet_send_cube_renewal *) data;
    switch (pinfo->subheader)
    {
        case CUBE_RENEWAL_SUB_HEADER_MAKE_ITEM:
        {

            int index_item = pinfo->index_item;
            int count_item = pinfo->count_item;
            int index_item_improve = pinfo->index_item_improve;

            Cube_Make(ch,index_item,count_item,index_item_improve);
        }
        break;

        case CUBE_RENEWAL_SUB_HEADER_CLOSE:
        {
            Cube_close(ch);
        }
        break;
    }
}
#endif

16. game / item_manager.cpp dosyasını açın ve içinde bulun:
Kod:
#include "cube.h"

Altına ekle:
Kod:
#include "cube_renewal.h"

17. game / packet.h dosyasını açın ve bulun:
Kod:
    HEADER_CG_CLIENT_VERSION            = 0xfd,
    HEADER_CG_CLIENT_VERSION2            = 0xf1,

    /********************************************************/
    HEADER_GC_KEY_AGREEMENT_COMPLETED = 0xfa, // _IMPROVED_PACKET_ENCRYPTION_
    HEADER_GC_KEY_AGREEMENT            = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_
    HEADER_GC_TIME_SYNC                = 0xfc,
    HEADER_GC_PHASE                    = 0xfd,
    HEADER_GC_BINDUDP                = 0xfe,
    HEADER_GC_HANDSHAKE                = 0xff,

Üzerine ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
    HEADER_CG_CUBE_RENEWAL                     = 215,
#endif

Bul:
Kod:
    HEADER_GC_DRAGON_SOUL_REFINE            = 209,
    HEADER_GC_RESPOND_CHANNELSTATUS            = 210,

Altıne ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
    HEADER_GC_CUBE_RENEWAL                     = 217,
#endif

Bul:
Kod:
#pragma pack()
#endif

Üzerine ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
enum
{
    CUBE_RENEWAL_SUB_HEADER_OPEN_RECEIVE,
    CUBE_RENEWAL_SUB_HEADER_CLEAR_DATES_RECEIVE,
    CUBE_RENEWAL_SUB_HEADER_DATES_RECEIVE,
    CUBE_RENEWAL_SUB_HEADER_DATES_LOADING,

    CUBE_RENEWAL_SUB_HEADER_MAKE_ITEM,
    CUBE_RENEWAL_SUB_HEADER_CLOSE,
};

typedef struct  packet_send_cube_renewal
{
    BYTE header;
    BYTE subheader;
    DWORD index_item;
    DWORD count_item;
    DWORD index_item_improve;
} TPacketCGCubeRenewalSend;

typedef struct dates_cube_renewal
{
    DWORD npc_vnum;
    DWORD index;

    DWORD    vnum_reward;
    int        count_reward;

    bool     item_reward_stackable;

    DWORD    vnum_material_1;
    int        count_material_1;

    DWORD    vnum_material_2;
    int        count_material_2;

    DWORD    vnum_material_3;
    int        count_material_3;

    DWORD    vnum_material_4;
    int        count_material_4;

    DWORD    vnum_material_5;
    int        count_material_5;

    int     gold;
    int     percent;

    char     category[100];
} TInfoDateCubeRenewal;

typedef struct packet_receive_cube_renewal
{
    packet_receive_cube_renewal(): header(HEADER_GC_CUBE_RENEWAL)
    {}

    BYTE header;
    BYTE subheader;
    TInfoDateCubeRenewal    date_cube_renewal;
} TPacketGCCubeRenewalReceive;
#endif

18. game / packet_info.cpp dosyasını açın ve içinde bulun:
Kod:
    Set(HEADER_CG_STATE_CHECKER, sizeof(BYTE), "ServerStateCheck", false);

Altına ekle:
Kod:
#ifdef ENABLE_CUBE_RENEWAL
    Set(HEADER_CG_CUBE_RENEWAL, sizeof(TPacketCGCubeRenewalSend), "CubeRenewalSend", true);
#endif

19. Game / Makefile'a ekle:
Kod:
cube_renewal.cpp

20. #ifndef ENABLE_CUBE_RENEWAL'i başlangıçta cube.cpp / cube.h dosyanıza ve sonunda #endif'e ekleyin.

21. game'e ekle:

22. root / game.py'yi açın ve içinde bulun:
Kod:
    def BINARY_DragonSoulGiveQuilification(self):
        self.interface.DragonSoulGiveQuilification()

Üzerine ekle:
Kod:
    if app.ENABLE_CUBE_RENEWAL:
        def BINARY_CUBE_RENEWAL_OPEN(self):
            if self.interface:
                self.interface.BINARY_CUBE_RENEWAL_OPEN()

23. root / interfaceModule.py dosyasını açın ve içinde bulun:
Kod:
        self.wndDragonSoulRefine = None
        self.wndChat = None

Altına ekle:
Kod:
        if app.ENABLE_CUBE_RENEWAL:
            self.wndCubeRenewal = None

Bul:
Kod:
    def __MakeCubeResultWindow(self):
        self.wndCubeResult = uiCube.CubeResultWindow()
        self.wndCubeResult.LoadWindow()
        self.wndCubeResult.Hide()

Altına ekle:
Kod:
    if app.ENABLE_CUBE_RENEWAL:
        def __MakeCubeRenewal(self):
            import uicuberenewal
            self.wndCubeRenewal = uicuberenewal.CubeRenewalWindows()
            self.wndCubeRenewal.Hide()

Bul:
Kod:
        self.__MakeCubeWindow()
        self.__MakeCubeResultWindow()

Altına ekle:
Kod:
        if app.ENABLE_CUBE_RENEWAL:
            self.__MakeCubeRenewal()

Bul:
Kod:
        # ACCESSORY_REFINE_ADD_METIN_STONE
        if self.wndItemSelect:
            self.wndItemSelect.Destroy()
        # END_OF_ACCESSORY_REFINE_ADD_METIN_STONE

Altına ekle:
Kod:
        if app.ENABLE_CUBE_RENEWAL:
            if self.wndCubeRenewal:
                self.wndCubeRenewal.Destroy()
                self.wndCubeRenewal.Close()

Bul:
Kod:
        del self.wndUICurtain
        del self.wndChat

Altına ekle:
Kod:
        if app.ENABLE_CUBE_RENEWAL:
            del self.wndCubeRenewal

Bul:
Kod:
    def SucceedCubeWork(self, itemVnum, count):
        self.wndCube.Clear()

        print "큐브 제작 성공! [%d:%d]" % (itemVnum, count)

        if 0: # 결과 메시지 출력은 생략 한다
            self.wndCubeResult.SetPosition(*self.wndCube.GetGlobalPosition())
            self.wndCubeResult.SetCubeResultItem(itemVnum, count)
            self.wndCubeResult.Open()
            self.wndCubeResult.SetTop()

Altına ekle:
Kod:
    if app.ENABLE_CUBE_RENEWAL:
        def BINARY_CUBE_RENEWAL_OPEN(self):
            self.wndCubeRenewal.Show()

24. Köke ekle: 25. uiscript'e ekleyin: 26. locale_interface.txt’nin çevirisi:
Kod:
CUBE_RENEWAL_TITLE    Okienko uszlachetniania
CUBE_RENEWAL_BELT_IMPROVE    Podwyższ Szansę
 

En Çok Reaksiyon Alan Mesajlar

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