Bu konu daha önce açılan konuyla farklıdır, bunda görüntüleme yapılırken "onaylama" istemektedir.
Eğer oyun seçeneklerine aç kapat engellemek istiyorsanız;
http://www.turkmmo.com/c-c-python/3...me-ac-kapat-oyun-seceneklerinecpythonlua.html
blackdragon61 arkadaşımızın konusundan faydalanın bazı şeyleri ondan alıntıladım bilgilerinize.
Resimler kanıtlar (sayfayı kaplamaması için link olarak koydum)
http://i.hizliresim.com/zVD8jD.png
http://i.hizliresim.com/lyDJQb.png
Gamesrc/packet.h açılır aratılır:
Değiştirilir komple
Char.cpp aratılır:
Değiştirilir komple
Clientsrc/Userınterface/packet.h aratılır:
Değiştirilir komple
UserInterfacePythonNetworkStreamPhaseGame.cpp aratılır:
Değiştirilir komple
Pack & python aşamasına geçiyoruz :
root> constinfo.py açılır ve müsait yere eklenir
uitarget.py açılır ve aratılır
altına eklenir
aratılır
altına eklenir
aratılır
kod bloğunun altına eklenir
aratılır
altına eklenir
aratılır
altına eklenir
game.py açılır ve aratılır
üstüne eklenir
aratılır
kod bloğunun altına eklenir
locale_tr>locale_game.txt açılır ve an alta eklenir
İndirilecek dosyalar ; indirmek için tıkla
Virüstotal ; bakmak için tıkla
verdiğim indirme dosyasında uiscript , root içerisine ve packa atılacak dosyalar var bunları atın.
Eğer oyun seçeneklerine aç kapat engellemek istiyorsanız;
http://www.turkmmo.com/c-c-python/3...me-ac-kapat-oyun-seceneklerinecpythonlua.html
blackdragon61 arkadaşımızın konusundan faydalanın bazı şeyleri ondan alıntıladım bilgilerinize.
Resimler kanıtlar (sayfayı kaplamaması için link olarak koydum)
http://i.hizliresim.com/zVD8jD.png
http://i.hizliresim.com/lyDJQb.png
Gamesrc/packet.h açılır aratılır:
Kod:
typedef struct pakcet_view_equip
Değiştirilir komple
Kod:
typedef struct pakcet_view_equip
{
BYTE header;
DWORD vid;
struct {
DWORD vnum;
BYTE count;
long alSockets[ITEM_SOCKET_MAX_NUM];
TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM];
} equips[16];
} TPacketViewEquip;
Char.cpp aratılır:
Kod:
void CHARACTER::SendEquipment(LPCHARACTER ch)
Değiştirilir komple
Kod:
void CHARACTER::SendEquipment(LPCHARACTER ch)
{
TPacketViewEquip p;
p.header = HEADER_GC_VIEW_EQUIP;
p.vid = GetVID();
int pos[16] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 20, 21, 22, 23 };
for (int i = 0; i < 16; i++)
{
LPITEM item = GetWear(pos[i]);
if (item)
{
p.equips[i].vnum = item->GetVnum();
p.equips[i].count = item->GetCount();
thecore_memcpy(p.equips[i].alSockets, item->GetSockets(), sizeof(p.equips[i].alSockets));
thecore_memcpy(p.equips[i].aAttr, item->GetAttributes(), sizeof(p.equips[i].aAttr));
}
else
{
p.equips[i].vnum = 0;
}
}
ch->GetDesc()->Packet(&p, sizeof(p));
}
Clientsrc/Userınterface/packet.h aratılır:
Kod:
typedef struct pakcet_view_equip
Değiştirilir komple
Kod:
typedef struct pakcet_view_equip
{
BYTE header;
DWORD dwVID;
TEquipmentItemSet equips[16];
} TPacketGCViewEquip;
UserInterfacePythonNetworkStreamPhaseGame.cpp aratılır:
Kod:
bool CPythonNetworkStream::RecvViewEquipPacket()
Değiştirilir komple
Kod:
bool CPythonNetworkStream::RecvViewEquipPacket()
{
TPacketGCViewEquip kViewEquipPacket;
if (!Recv(sizeof(kViewEquipPacket), &kViewEquipPacket))
return false;
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "OpenEquipmentDialog", Py_BuildValue("(i)", kViewEquipPacket.dwVID));
for (int i = 0; i < 16; ++i)
{
TEquipmentItemSet & rItemSet = kViewEquipPacket.equips[i];
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogItem", Py_BuildValue("(iiii)", kViewEquipPacket.dwVID, i, rItemSet.vnum, rItemSet.count));
for (int j = 0; j < ITEM_SOCKET_SLOT_MAX_NUM; ++j)
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogSocket", Py_BuildValue("(iiii)", kViewEquipPacket.dwVID, i, j, rItemSet.alSockets[j]));
for (int k = 0; k < ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++k)
PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogAttr", Py_BuildValue("(iiiii)", kViewEquipPacket.dwVID, i, k, rItemSet.aAttr[k].bType, rItemSet.aAttr[k].sValue));
}
return true;
}
Pack & python aşamasına geçiyoruz :
root> constinfo.py açılır ve müsait yere eklenir
Kod:
ENVANTER_TARGET_VID = 0
CLIENT_YOL = "lib/"
uitarget.py açılır ve aratılır
Kod:
locale.TARGET_BUTTON_EMOTION_ALLOW,
"VOTE_BLOCK_CHAT",
altına eklenir
Kod:
"Profil",
aratılır
Kod:
self.buttonDict[locale.TARGET_BUTTON_EXIT_OBSERVER].SAFE_SetEvent(self.__OnExitObserver)
altına eklenir
Kod:
self.buttonDict["Profil"].SAFE_SetEvent(self.__OnProfilGoster)
aratılır
Kod:
def __ShowMainCharacterMenu(self):
kod bloğunun altına eklenir
Kod:
def __OnProfilGoster(self):
if not (self.zaman < app.GetTime()):
chat.AppendChat(chat.CHAT_TYPE_INFO, localegame.OYUN_ENVANTER_SURE)
return
self.zaman = app.GetTime() + 10
net.SendWhisperPacket(chr.GetNameByVID(self.vid), '#zacqooleavenEnvanter_Teklifi#Sorgu#')
constInfo.ENVANTER_TARGET_VID = self.vid
aratılır
Kod:
self.showingButtonList.append(self.buttonDict[locale.TARGET_BUTTON_FIGHT])
altına eklenir
Kod:
if(self.zaman < app.GetTime()):
self.showingButtonList.append(self.buttonDict["Profil"])
aratılır
Kod:
if distance < 0:
return
Kod:
if(self.zaman < app.GetTime()):
self.zaman = 0
self.__ShowButton("Profil")
self.RefreshButton()
else:
self.__HideButton("Profil")
self.RefreshButton()
game.py açılır ve aratılır
Kod:
chat.AppendWhisper(mode, name, line)
self.interface.RecvWhisper(name)
üstüne eklenir
Kod:
if line.find("#zacqooleavenEnvanter_Teklifi#") != -1:
if os.path.exists(str(constInfo.CLIENT_YOL)+"profil_"+str(player.GetName())+".kf"):
return
if line.find("#Sorgu#") != -1:
self.EnvanterDialog = uiCommon.QuestionDialog()
self.EnvanterDialog.SetText(locale.OYUN_ENVANTER % (str(name)))
self.EnvanterDialog.SetAcceptEvent(lambda arg=TRUE: self.OnEnvanterDialog(name, 1))
self.EnvanterDialog.SetCancelEvent(lambda arg=FALSE: self.OnEnvanterDialog(name, 0))
self.EnvanterDialog.Open()
else:
if line.find("Red") != -1:
self.uyari = uiCommon.PopupDialog()
self.uyari.SetText(locale.ENVANTER_RED)
self.uyari.Open()
return
chat.AppendChat(chat.CHAT_TYPE_INFO, locale.OYUN_ENVANTER_CHAT % (name))
net.SendChatPacket("/view_equip " + str(constInfo.ENVANTER_TARGET_VID))
return
aratılır
Kod:
def OnRecvWhisperError(self, mode, name, line):
kod bloğunun altına eklenir
Kod:
def OnEnvanterDialog(self, ad, flag):
if flag == 0:
self.EnvanterDialog.Close()
return
self.EnvanterDialog.Close()
net.SendWhisperPacket(ad, "#zacqooleavenEnvanter_Teklifi#Cevap#")
locale_tr>locale_game.txt açılır ve an alta eklenir
Kod:
OYUN_ENVANTER %s Envanterini görmek istiyor?
OYUN_ENVANTER_SURE Tekrar sorgu göndermek için 10 saniye beklemen gerekli.
OYUN_ENVANTER_CHAT Şuanda %s adlı oyuncunun profilini görmektesin.
İndirilecek dosyalar ; indirmek için tıkla
Virüstotal ; bakmak için tıkla
verdiğim indirme dosyasında uiscript , root içerisine ve packa atılacak dosyalar var bunları atın.