Envanter Görüntüleme Aç/Kapat Oyun Seçeneklerine [C++, PYTHON ve LUA]

Whistle

Ruhsuz Filozof
Kurucu
Kurumsal Üye
Geliştirici
Yardımsever Üye
Mesaj
11.495
Çözümler
546
Beğeni
12.047
Puan
5.864
Server/game/src/char.cpp açılır ve aratılır;
C++:
void CHARACTER::SetBlockMode(BYTE bFlag)
Kod blogunu { ..code.. }; şu kodlarla değiştir:
C++:
void CHARACTER::SetBlockMode(BYTE bFlag)
{
    m_pointsInstant.bBlockMode = bFlag;

    ChatPacket(CHAT_TYPE_COMMAND, "setblockmode %d", m_pointsInstant.bBlockMode);

    SetQuestFlag("game_option.block_exchange", bFlag & BLOCK_EXCHANGE ? 1 : 0);
    SetQuestFlag("game_option.block_party_invite", bFlag & BLOCK_PARTY_INVITE ? 1 : 0);
    SetQuestFlag("game_option.block_guild_invite", bFlag & BLOCK_GUILD_INVITE ? 1 : 0);
    SetQuestFlag("game_option.block_whisper", bFlag & BLOCK_WHISPER ? 1 : 0);
    SetQuestFlag("game_option.block_messenger_invite", bFlag & BLOCK_MESSENGER_INVITE ? 1 : 0);
    SetQuestFlag("game_option.block_party_request", bFlag & BLOCK_PARTY_REQUEST ? 1 : 0);
    SetQuestFlag("game_option.block_view_equipment", bFlag & BLOCK_VIEW_EQUIPMENT ? 1 : 0);
}

Server/game/src/char.h açılır ve aratılır;
C:
enum EBlockAction
Hepsini şu kodlarla değiştir:
C:
enum EBlockAction
{
    BLOCK_EXCHANGE        = (1 << 0),
    BLOCK_PARTY_INVITE        = (1 << 1),
    BLOCK_GUILD_INVITE        = (1 << 2),
    BLOCK_WHISPER        = (1 << 3),
    BLOCK_MESSENGER_INVITE    = (1 << 4),
    BLOCK_PARTY_REQUEST        = (1 << 5),
    BLOCK_VIEW_EQUIPMENT    = (1 << 6),

};

Server/game/src/cmd_general.cpp açılır ve aratılır;
C++:
ACMD(do_view_equip)
Altında biryerlerde şu kod olacak;
C++:
if (!tch->IsPC())
            return;
Altına şu kod eklenir:
C++:
if (tch->IsBlockMode(BLOCK_VIEW_EQUIPMENT))  
{
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ekipman konusmasi"));
       return;
}
Ayrıca orada;
C++:
if (ch->GetGMLevel() <= GM_PLAYER)
       return;
böyle bir kod varsa silin çünkü sadece gm oyuncuların ekipmanlarına bakması için yapılmış bir engelleme
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Sıra Clientsrc'ye geldi.
Client/UserInterface/packet.h açılır ve aratılır;
C:
enum EBlockAction
Hepsini şu kodlarla değiştir:
C:
enum EBlockAction
{
   BLOCK_EXCHANGE              = (1 << 0),
   BLOCK_PARTY_INVITE          = (1 << 1),
   BLOCK_GUILD_INVITE          = (1 << 2),
   BLOCK_WHISPER               = (1 << 3),
   BLOCK_MESSENGER_INVITE      = (1 << 4),
   BLOCK_PARTY_REQUEST         = (1 << 5),
   BLOCK_VIEW_EQUIPMENT        = (1 << 6),
};

Client/UserInterface/PythonPlayerModule.cpp açılır ve aratılır;
C++:
// Block Mode
Kodları şu kodlarla değiştir:
C++:
   PyModule_AddIntConstant(poModule, "BLOCK_EXCHANGE",                BLOCK_EXCHANGE);
   PyModule_AddIntConstant(poModule, "BLOCK_PARTY",                BLOCK_PARTY_INVITE);
   PyModule_AddIntConstant(poModule, "BLOCK_GUILD",                BLOCK_GUILD_INVITE);
   PyModule_AddIntConstant(poModule, "BLOCK_WHISPER",                BLOCK_WHISPER);
   PyModule_AddIntConstant(poModule, "BLOCK_FRIEND",                BLOCK_MESSENGER_INVITE);
   PyModule_AddIntConstant(poModule, "BLOCK_PARTY_REQUEST",        BLOCK_PARTY_REQUEST);
   PyModule_AddIntConstant(poModule, "BLOCK_VIEW_EQUIPMENT",        BLOCK_VIEW_EQUIPMENT);
Client src bitti.

Sıra pythona geldi.
root/uitarget.py açılır ve aratılır;
Python:
self.buttonDict[localeInfo.TARGET_BUTTON_EXIT_OBSERVER].SAFE_SetEvent(self.__OnExitObserver)
Altına şu kod eklenir:
Python:
self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT].SAFE_SetEvent(self.__OnViewEquipment)

root/uitarget.py ilk başındaki;
Python:
BUTTON_NAME_LIST = (
Şu kodu aralarına ekleyin:
Python:
localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT,

Aratın;
Python:
def __OnExitObserver(self):
       net.SendChatPacket("/observer_exit")
Altına şu kod eklenir:
Python:
def __OnViewEquipment(self):
       net.SendChatPacket("/view_equip " + str(self.vid))

Aratın;
Python:
def ShowDefaultButton(self):
Hepsini şu kodlarla değiştir:
Python:
def ShowDefaultButton(self):

       self.isShowButton = TRUE
       self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_WHISPER])
       self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE])
       self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT])
       self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT])
       self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EMOTION_ALLOW])
       for button in self.showingButtonList:
           button.Show()

root/uioption.py açılır ve aratılır;
Python:
self.blockButtonList[4].SetToggleUpEvent(self.__OnClickBlockFriendButton)
Altına şu kodlar eklenir;
Python:
self.blockButtonList[5].SetToggleDownEvent(self.__OnClickBlockViewEquipmentButton)
Python:
self.blockButtonList[4].SetToggleDownEvent(self.__OnClickBlockFriendButton)
Python:
self.blockButtonList[5].SetToggleDownEvent(self.__OnClickBlockViewEquipmentButton)
Python:
self.blockButtonList.append(GetObject("block_friend_button"))
Altına şu kod eklenir;
Kod:
self.blockButtonList.append(GetObject("block_view_equipment_button"))

root/uigameoption.py açılır ve aratılır;
Python:
def __OnClickBlockPartyButton(self):
       self.RefreshBlock()
       global blockMode
       net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_PARTY))
Altına şu kod eklenir:
Python:
def __OnClickBlockViewEquipmentButton(self):
       self.RefreshBlock()
       global blockMode
       net.SendChatPacket("/setblockmode " + str(blockMode ^ player.BLOCK_VIEW_EQUIPMENT))

Aratın;
Python:
self.blockButtonList[5].SetToggleUpEvent(self.__OnClickBlockPartyRequest)
Altına şu kod eklenir:
Python:
self.blockButtonList[6].SetToggleUpEvent(self.__OnClickBlockViewEquipmentButton)

Tekrar Aratın;
Python:
self.blockButtonList[5].SetToggleDownEvent(self.__OnClickBlockPartyRequest)
Altına şu kod eklenir:
Python:
self.blockButtonList[6].SetToggleDownEvent(self.__OnClickBlockViewEquipmentButton)

Aratın;
Python:
self.blockButtonList.append(GetObject("block_party_request_button"))
Altına şu kod eklenir:
Python:
self.blockButtonList.append(GetObject("block_view_equipment_button"))
ve root bölümüde bitti

sıra uiscript'e geldi
uiscript/gameoptiondialog.py açılır ve aratılır;
Python:
"name" : "block_party_request_button",
Altına şu kod eklenir:
Not: Kodların aralarını x y ayarıyla düzenlemeniz gerek. Çünkü iç içe girerler her butonun mesefasi 25'dir;
Python:
{                    "name" : "block_view_equipment_button",
                    "type" : "toggle_button",


                    "x" : LINE_DATA_X+MIDDLE_BUTTON_WIDTH*0,
                    "y" : 165,


                    "text" : "Profil",


                    "default_image" : ROOT_PATH + "middle_button_01.sub",
                    "over_image" : ROOT_PATH + "middle_button_02.sub",
                    "down_image" : ROOT_PATH + "middle_button_03.sub",
                },
c++ ve python bölümü bitti

sıra questlere (lua) geldi
game_option.quest açılır;
Aralarına biryerine ekleyin:
Lua (Quest):
if pc.getqf("block_view_equipment") == 1 then
            msg = msg.."Profil "
            val = val + 64
            end

Locale_stringe ekleyin;
Kod:
"ekipman konusmasi";
"|cffFFC125Karşınızdaki oyuncu profil görüntülemeyi blokladı.";

Sistemin çalıştığına dair kanıtlar;
Envanter Görüntüleme Aç-Kapat Oyun Seçeneklerine[C++, PYTHON ve LUA]-1.jpg


Envanter Görüntüleme Aç-Kapat Oyun Seçeneklerine[C++, PYTHON ve LUA]-2.jpg
 
Son düzenleme:
Güncelleme;
Arkadaşlar bu akşam Casro2 için yeni bir engelleme seçeneği ekliyordum. Bu sistemde olan bir hata gözüme çarptı. Şimdi size bu sorunu çözmeyi anlatacağım.

Filesinide bulunan game_option.quest dosyasındaki;
Lua (Quest):
if pc.getqf("block_view_equipment") == 1 then
            msg = msg.."Profil "
            val = val + 6
            end

kodu şu şekilde değiştirin.
Lua (Quest):
if pc.getqf("block_view_equipment") == 1 then
            msg = msg.."Profil "
            val = val + 64
            end
 
Son düzenleme:
Güncelleme;
Arkadaşlar bu akşam Casro2 için yeni bir engelleme seçeneği ekliyordum. Bu sistemde olan bir hata gözüme çarptı. Şimdi size bu sorunu çözmeyi anlatacağım.

Filesinide bulunan game_option.quest dosyasındaki;
Kod:
if pc.getqf("block_view_equipment") == 1 then
            msg = msg.."Profil "
            val = val + 6
            end

kodu şu şekilde değiştirin.
Kod:
if pc.getqf("block_view_equipment") == 1 then
            msg = msg.."Profil "
            val = val + 64
            end

hocam bu game_option.quest nedir tam anlayamadım bende böyle bişey yok.
 
O zaman geri ekle. ;) Packetlerle ilgili sorun var.
 
çalışmıyor herneyse sildim ekleyecekler boşa vakit kaybetmeyin benim gibi iyi geceler.
Genelde bir şeyi paylaşmadan önce kendim kullanıp test ederim. Ondan sonra paylaşırım.
Bizzat çalışıyor. Ekleyemiyorsanız forumda propaganda yapma hakkına sahip değilsiniz. Bundan sonra bu konu altından size yardımda bulunmayacağım..
 
Son düzenleme:
Konu içeriği yeni kod editörüne uygun bir şekilde güncellenmiştir. Artık kodları daha rahat okuyabileceksiniz. ;)
 
Geri
Üst