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!
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:
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
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:
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
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:
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
25. uiscript'e ekleyin:
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
26. locale_interface.txt’nin çevirisi:
Kod:
CUBE_RENEWAL_TITLE Okienko uszlachetniania
CUBE_RENEWAL_BELT_IMPROVE Podwyższ Szansę
En Çok Reaksiyon Alan Mesajlar
ufak bir not bu normal cubenin görünüm değiştirilmiş hali sadece seçmeli olarak item bilgisi gönderiliyor aynı materyallere sahip 2 item olunca hep ilkini seçtiği için bu konuda eksikliği mevcut
Rica ederim <3paylaşım için teşekkürler

Düşünmüyorum ama denemekte fayda varCore sorunu var mı bunda da

- 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)
Benzer konular
- Cevaplar
- 7
- Görüntüleme
- 463
- Cevaplar
- 2
- Görüntüleme
- 226
- Cevaplar
- 15
- Görüntüleme
- 790
- Cevaplar
- 9
- Görüntüleme
- 497
- Cevaplar
- 20
- Görüntüleme
- 863
