- Katılım
- 21 Eyl 2010
- Konular
- 142
- Mesajlar
- 1,589
- Çözüm
- 47
- Online süresi
- 2mo 8d
- Reaksiyon Skoru
- 628
- Altın Konu
- 34
- Başarım Puanı
- 248
- MmoLira
- 28,050
- DevLira
- 102
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Ekteki klasörde bulunan trashbutton klasörünü, ETC packi içindeki ymir work/ui/ dizinine atarsanız, buton örnekte olduğu gibi gözükecektir.
[CODE title="locale/tr/inventorywindow.py:"]# BURAYI BUL:
"name" : "InventoryWindow",
## 600 - (##dth + 오른쪽으로 부터 띄우기 24 px)
"x" : SCREEN_WIDTH - 176,
"y" : SCREEN_HEIGHT - 37 - 565,
"style" : ("movable", "float",),
"width" : 176,
"height" : 565,
# BU ŞEKİLDE DEĞİŞTİR:
"name" : "InventoryWindow",
## 600 - (width + 오른쪽으로 부터 띄우기 24 px## "x" : SCREEN_WIDTH - 176,
"y" : SCREEN_HEIGHT - 37 - 565 - 19,
"style" : ("movable", "float",),
"width" : 176,
"height" : 565 + 19,
## DÜZENLEDİĞİMİZ BÖLÜMÜN HEMEN ALTINDAKİ, CHILDREN'LARI##İÇİNDE EN TEPEDE OLANI, BUNU BUL:
"children" :
(
## Inventory, Equipment Slots
{
"name" : "board"## "type" : "board",
"style" : ("attach",),
"x" : 0,
"y" : 0,
"width" : 176,
"height" : 565,
## BU ŞEKİLDE DEĞİŞTİR:
"children" :
(
## ##ventory, Equipment Slots
{
"name" : "board",
## "type" : "board",
"style" : ("attach",),
"x" : 0,
"y" : 0,
"width" : 176,
"height" : 565 + 19,
## BU KISMI BUL:
## Item Slot
{
## "name" : "ItemSlot",
## "type" : "grid_table",
"x" : 8,
"y" : 246,
"start_index" : 0,
"x_count" : 5,
"y_count" : 9,
"x_step" : 32,
"y_step" : 32,
"image" : "d:/ymir work/ui/public/Slot_Base.sub"
},
## EN SONDAKİ VİRGÜLDEN HEMEN SONRA BİR ALT SATIRA GEÇ VE BUNU YAPIŞTIR:
##
## Trash Button
{
"name" : "TrashButton",
## "type" : "button",
"x" : 8,
"y" : 246 + 289,
"default_image" : "d:/ymir work/ui/trashbutton/trashbutton_up.tga",
"over_image" : "d:/ymir work/ui/trashbutton/trashbutton_hover.tga",
"down_image" : "d:/ymir work/ui/trashbutton/trashbutton_down.tga",
},[/CODE]
"name" : "InventoryWindow",
## 600 - (##dth + 오른쪽으로 부터 띄우기 24 px)
"x" : SCREEN_WIDTH - 176,
"y" : SCREEN_HEIGHT - 37 - 565,
"style" : ("movable", "float",),
"width" : 176,
"height" : 565,
# BU ŞEKİLDE DEĞİŞTİR:
"name" : "InventoryWindow",
## 600 - (width + 오른쪽으로 부터 띄우기 24 px## "x" : SCREEN_WIDTH - 176,
"y" : SCREEN_HEIGHT - 37 - 565 - 19,
"style" : ("movable", "float",),
"width" : 176,
"height" : 565 + 19,
## DÜZENLEDİĞİMİZ BÖLÜMÜN HEMEN ALTINDAKİ, CHILDREN'LARI##İÇİNDE EN TEPEDE OLANI, BUNU BUL:
"children" :
(
## Inventory, Equipment Slots
{
"name" : "board"## "type" : "board",
"style" : ("attach",),
"x" : 0,
"y" : 0,
"width" : 176,
"height" : 565,
## BU ŞEKİLDE DEĞİŞTİR:
"children" :
(
## ##ventory, Equipment Slots
{
"name" : "board",
## "type" : "board",
"style" : ("attach",),
"x" : 0,
"y" : 0,
"width" : 176,
"height" : 565 + 19,
## BU KISMI BUL:
## Item Slot
{
## "name" : "ItemSlot",
## "type" : "grid_table",
"x" : 8,
"y" : 246,
"start_index" : 0,
"x_count" : 5,
"y_count" : 9,
"x_step" : 32,
"y_step" : 32,
"image" : "d:/ymir work/ui/public/Slot_Base.sub"
},
## EN SONDAKİ VİRGÜLDEN HEMEN SONRA BİR ALT SATIRA GEÇ VE BUNU YAPIŞTIR:
##
## Trash Button
{
"name" : "TrashButton",
## "type" : "button",
"x" : 8,
"y" : 246 + 289,
"default_image" : "d:/ymir work/ui/trashbutton/trashbutton_up.tga",
"over_image" : "d:/ymir work/ui/trashbutton/trashbutton_hover.tga",
"down_image" : "d:/ymir work/ui/trashbutton/trashbutton_down.tga",
},[/CODE]
[CODE title="UserInterface/Locale_inc.h:"]//en son define'ın altına ekle:
#define TRASHBUTTON[/CODE]
[CODE title="UserInterface/Packet.h:"]// HEADER_CG_...#define bittiği yere, HEADER_GC'lere geçmeden bunu ekle:
// örnek olarak, benimki şu satırın hemen altında:
// HEADER_CG_HANDSHAKE = 0xff,
#ifdef TRASHBUTTON
HEADER_CG_DELETEFROMINV = 220,
#endif
// A#ifdefypedef struct command_on_click
{
BYTE header;
DWORD #endif;
} TPacketCGOnClick;
// ALTINA EKLE:
#ifdef TRASHBUTTON
typedef struct packet_delfrominv
{
BYTE header;
DWORD position;#ifdefcketCGDelFromInv;
#endif[/CODE]
[CODE title="UserInterface/PythonNetworkStream.h:"]// ARAT:
bool Se#endiftConfirmPacket(BYTE byAnswer, DWORD dwPID);
// ALTINA YAPIŞTIR:
#ifdef TRASHBUTTON
// trash button
bool SendDeleteFromInvPacket(DWORD posit#ifdef#endif[/CODE]
[CODE title="UserInterface/PythonNetworkStreamModule.cpp:"]// BU FONKSİYONU #endifPyObject* netSendSelectItemPacket(PyObject* poSelf, PyObject* poArgs)
{
/*...fonksiyon içeriği...*/
}
// FONKSİYON BİTTİKTEN SONRA BİR ALT SATIRA GEÇ VE YAPIŞTIR:
#ifdef TRASHBUTTON
PyObject* netSendDeleteFromInventory(PyObject* poSelf, PyObject* poArgs)
{
in#ifdefmPos;
if (!PyTuple_GetInteger(poArgs, 0, &iItemPos))
return Py_BuildException();
CPythonNetworkStream& rns = CPythonNetworkStream::Instance();
rns.SendDeleteFromInvPacket(iItemPos);
return Py_BuildNone();
}
#endif
// ARAT:
{ "RegisterErrorLog", netRegisterErrorLog, #endif METH_VARARGS },
// ALTINA YAPIŞTIR:
#ifdef TRASHBUTTON
{ "SendDeleteFromInventory", netSendDeleteFromInven#ifdef METH_VARARGS },
#endif[/CODE]
[CODE title="UserInterface/PythonNetworkStreamPhaseGame.cpp:"]// BU FONKSİYONU BUL:
bo#endifthonNetworkStream::SendQuestConfirmPacket(BYTE byAnswer, DWORD dwPID)
{
/*..fonksiyon içeriği..*/
}
// FONKSİYON BİTTİKTEN SONRA BİR ALT SATIRA GEÇ VE YAPIŞTIR:
#ifdef TRASHBUTTON
bool CPythonNetworkStream::SendDeleteFromInvPacket(DWORD position)
{
TPacketCGDelFromIn#ifdefket;
kPacket.header = HEADER_CG_DELETEFROMINV;
kPacket.position = position;
if (!Send(sizeof(kPacket), &kPacket))
{
Tracen("SendDeleteFromInvPacket Error");
return false;
}
Tracef("SendDeleteFromInvPacket");
return SendSequence();
}#endif
[/CODE]
#define TRASHBUTTON[/CODE]
[CODE title="UserInterface/Packet.h:"]// HEADER_CG_...#define bittiği yere, HEADER_GC'lere geçmeden bunu ekle:
// örnek olarak, benimki şu satırın hemen altında:
// HEADER_CG_HANDSHAKE = 0xff,
#ifdef TRASHBUTTON
HEADER_CG_DELETEFROMINV = 220,
#endif
// A#ifdefypedef struct command_on_click
{
BYTE header;
DWORD #endif;
} TPacketCGOnClick;
// ALTINA EKLE:
#ifdef TRASHBUTTON
typedef struct packet_delfrominv
{
BYTE header;
DWORD position;#ifdefcketCGDelFromInv;
#endif[/CODE]
[CODE title="UserInterface/PythonNetworkStream.h:"]// ARAT:
bool Se#endiftConfirmPacket(BYTE byAnswer, DWORD dwPID);
// ALTINA YAPIŞTIR:
#ifdef TRASHBUTTON
// trash button
bool SendDeleteFromInvPacket(DWORD posit#ifdef#endif[/CODE]
[CODE title="UserInterface/PythonNetworkStreamModule.cpp:"]// BU FONKSİYONU #endifPyObject* netSendSelectItemPacket(PyObject* poSelf, PyObject* poArgs)
{
/*...fonksiyon içeriği...*/
}
// FONKSİYON BİTTİKTEN SONRA BİR ALT SATIRA GEÇ VE YAPIŞTIR:
#ifdef TRASHBUTTON
PyObject* netSendDeleteFromInventory(PyObject* poSelf, PyObject* poArgs)
{
in#ifdefmPos;
if (!PyTuple_GetInteger(poArgs, 0, &iItemPos))
return Py_BuildException();
CPythonNetworkStream& rns = CPythonNetworkStream::Instance();
rns.SendDeleteFromInvPacket(iItemPos);
return Py_BuildNone();
}
#endif
// ARAT:
{ "RegisterErrorLog", netRegisterErrorLog, #endif METH_VARARGS },
// ALTINA YAPIŞTIR:
#ifdef TRASHBUTTON
{ "SendDeleteFromInventory", netSendDeleteFromInven#ifdef METH_VARARGS },
#endif[/CODE]
[CODE title="UserInterface/PythonNetworkStreamPhaseGame.cpp:"]// BU FONKSİYONU BUL:
bo#endifthonNetworkStream::SendQuestConfirmPacket(BYTE byAnswer, DWORD dwPID)
{
/*..fonksiyon içeriği..*/
}
// FONKSİYON BİTTİKTEN SONRA BİR ALT SATIRA GEÇ VE YAPIŞTIR:
#ifdef TRASHBUTTON
bool CPythonNetworkStream::SendDeleteFromInvPacket(DWORD position)
{
TPacketCGDelFromIn#ifdefket;
kPacket.header = HEADER_CG_DELETEFROMINV;
kPacket.position = position;
if (!Send(sizeof(kPacket), &kPacket))
{
Tracen("SendDeleteFromInvPacket Error");
return false;
}
Tracef("SendDeleteFromInvPacket");
return SendSequence();
}#endif
[/CODE]
[CODE title="common/service.h:"]// en son define'ın altına ekle:
#define TRASHBUTTON[/CODE]
[CODE title="game/src/input_main.cpp:"]// CInputMain::Analyze(LPDESC d, BYTE bHeader,#definechar * c_pData) fonksiyonu
// içinde, şunu bul:
case HEADER_CG_PONG:
Pong(d);
break;
// ÜSTÜNE YAPIŞTIR:
#ifdef TRASHBUTTON
case HEADER_CG_DELETEFROMINV:
if (ch)
{
const TPac#ifdefelFromInv* p = reinterpret_cast<const TPacketCGDelFromInv*>(c_pData);
TItemPos Cell(INVENTORY, p->position);
LPITEM itemToDelete = ch->GetItem(Cell);
if (itemToDelete != NULL)
{
if (Cell.IsEquipPosition())
{
ch->ChatPacket(CHAT_TYPE_INFO, "Hayir.");
/*"Giyilen itemi silemezsin" uyarisi bu.*/
}
else
{
itemToDelete->RemoveFromCharacter();
}
}
}
break;
#endif[/CODE]
[CODE title="game/src/packet.h:"]// yine HEADER_CG...'ların en sonuna, GC'lere geçmeden bir satır ekley#endif,
// örnek olarak benimki şu satırın altında:
// HEADER_CG_CLIENT_VERSION2 = 0xf1,
#ifdef TRASHBUTTON
HEADER_CG_DELETEFROMINV = 220,
#endif
// ARAT:
typedef struct command_on_click
{
BYTE header;
#ifdefRD vid;
} TPacketCGOnClick;
// ALTINA YAPIŞT#endiffdef TRASHBUTTON
typedef struct packet_delfrominv
{
BYTE header;
DWORD position;
} TPacketCGDelFromInv;
#endif[/CODE]#ifdef title="game/src/packet_info.cpp:"]// ARAT:
Set(HEADER_CG_ON_CLICK, sizeof(TPacketCGOnClick), "OnClick",#endif;
// ALTINA YAPIŞTIR#ifdef TRASHBUTTON
Set(HEADER_CG_DELETEFROMINV, sizeof(TPacketCGDelFromInv), "DelFromInv", true);#endif
[/CODE]
#define TRASHBUTTON[/CODE]
[CODE title="game/src/input_main.cpp:"]// CInputMain::Analyze(LPDESC d, BYTE bHeader,#definechar * c_pData) fonksiyonu
// içinde, şunu bul:
case HEADER_CG_PONG:
Pong(d);
break;
// ÜSTÜNE YAPIŞTIR:
#ifdef TRASHBUTTON
case HEADER_CG_DELETEFROMINV:
if (ch)
{
const TPac#ifdefelFromInv* p = reinterpret_cast<const TPacketCGDelFromInv*>(c_pData);
TItemPos Cell(INVENTORY, p->position);
LPITEM itemToDelete = ch->GetItem(Cell);
if (itemToDelete != NULL)
{
if (Cell.IsEquipPosition())
{
ch->ChatPacket(CHAT_TYPE_INFO, "Hayir.");
/*"Giyilen itemi silemezsin" uyarisi bu.*/
}
else
{
itemToDelete->RemoveFromCharacter();
}
}
}
break;
#endif[/CODE]
[CODE title="game/src/packet.h:"]// yine HEADER_CG...'ların en sonuna, GC'lere geçmeden bir satır ekley#endif,
// örnek olarak benimki şu satırın altında:
// HEADER_CG_CLIENT_VERSION2 = 0xf1,
#ifdef TRASHBUTTON
HEADER_CG_DELETEFROMINV = 220,
#endif
// ARAT:
typedef struct command_on_click
{
BYTE header;
#ifdefRD vid;
} TPacketCGOnClick;
// ALTINA YAPIŞT#endiffdef TRASHBUTTON
typedef struct packet_delfrominv
{
BYTE header;
DWORD position;
} TPacketCGDelFromInv;
#endif[/CODE]#ifdef title="game/src/packet_info.cpp:"]// ARAT:
Set(HEADER_CG_ON_CLICK, sizeof(TPacketCGOnClick), "OnClick",#endif;
// ALTINA YAPIŞTIR#ifdef TRASHBUTTON
Set(HEADER_CG_DELETEFROMINV, sizeof(TPacketCGDelFromInv), "DelFromInv", true);#endif
[/CODE]
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Not:Sistemi test etmedim, alıntıdır paylaşıldıysa lütfen gereksiz yorumlardan kaçınarak raporlayınız.
- Katılım
- 15 May 2013
- Konular
- 1,207
- Mesajlar
- 7,321
- Çözüm
- 6
- Online süresi
- 2mo 16d
- Reaksiyon Skoru
- 5,958
- Altın Konu
- 410
- Başarım Puanı
- 349
- MmoLira
- 45,963
- DevLira
- 3
Paylaşım için teşekkürler.
- Katılım
- 16 Mar 2014
- Konular
- 137
- Mesajlar
- 1,385
- Çözüm
- 18
- Online süresi
- 2mo 8d
- Reaksiyon Skoru
- 876
- Altın Konu
- 40
- Başarım Puanı
- 246
- Yaş
- 28
- MmoLira
- 31,723
- DevLira
- 15
Paylaşım için teşekkürler
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Kilitli
Altın Konu
Metin2 Official 20.1.5.1 Full Client Unpack
- Cevaplar
- 34
- Görüntüleme
- 8K
- Cevaplar
- 22
- Görüntüleme
- 8K












