mavzermete 1
mavzermete
farkmt2official 1
farkmt2official
Bvural41 1
Bvural41
Fethi Polat 1
Fethi Polat
Mt2Hizmet 1
Mt2Hizmet
Scarlet 1
Scarlet
Hikaye Ekle
Kaynak ikonu

Oyuncu Engelleme Sistemi 2025-06-05

indirmek için izniniz yok
  • Konuyu başlatan Konuyu başlatan Mr. Kio
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 43
  • Görüntüleme Görüntüleme 9K

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!

Ufak tefek eksikler var (locale_game, locale_interface, locale_string) ve aşağıda eklediğim kısım.
Haricinde sorunsuz eline sağlık.

1704899516380.png


uiscript/messengerwindow.py
[CODE lang="python" title="messengerwindow.py --> ara"]
{
"name" : "GuildButton",
"type" : "button",

"x" : BUTTON_START_X_POS + BUTTON_X_STEP*4,
"y" : 30,
"horizontal_align" : "center",
"vertical_align" : "bottom",
"tooltip_text" : uiScriptLocale.MESSENGER_OPEN_GUILD,
"tooltip_x" : 0,
"tooltip_y" : 35,

"default_image" : "d:/ymir work/ui/game/windows/messenger_guild_01.sub",
"over_image" : "d:/ymir work/ui/game/windows/messenger_guild_02.sub",
"down_image" : "d:/ymir work/ui/game/windows/messenger_guild_03.sub",
"disable_image" : "d:/ymir work/ui/game/windows/messenger_guild_04.sub",
},
[/CODE]
[CODE lang="python" title="messengerwindow.py --> altına ekle"]
{
"name" : "PlayerBlockButton",
"type" : "button",

"x" : BUTTON_START_X_POS + BUTTON_X_STEP*5,
"y" : 30,
"horizontal_align" : "center",
"vertical_align" : "bottom",
"tooltip_text" : uiScriptLocale.MESSENGER_ADD_BLOCK,
"tooltip_x" : 0,
"tooltip_y" : 35,

"default_image" : "d:/ymir work/ui/game/windows/messenger_block_01.sub",
"over_image" : "d:/ymir work/ui/game/windows/messenger_block_02.sub",
"down_image" : "d:/ymir work/ui/game/windows/messenger_block_03.sub",
"disable_image" : "d:/ymir work/ui/game/windows/messenger_block_04.sub",
},
[/CODE]
 
Son düzenleme:
Target'da göremedim o nedenle ben şu şekilde sistemi geliştirdim:

uiTarget.py aç ve arat:

localeInfo.TARGET_BUTTON_BUILDING_DESTROY,
localeInfo.TARGET_BUTTON_EMOTION_ALLOW,

Altına Ekle:
localeInfo.TARGET_BUTTON_BLOCK,
localeInfo.TARGET_BUTTON_UNBLOCK,


Tekrar Arat:


self.buttonDict[localeInfo.TARGET_BUTTON_WHISPER].SetEvent(ui.__mem_func__(self.OnWhisper))


Altına Ekle:

if app.ENABLE_PLAYER_BLOCK_SYSTEM:
self.buttonDict[localeInfo.TARGET_BUTTON_BLOCK].SetEvent(self.OnAppendToBlockMessenger)
self.buttonDict[localeInfo.TARGET_BUTTON_UNBLOCK].SetEvent(ui.__mem_func__(self.OnRemoveToBlockMessenger))


Tekrar Arat:


def __OnVoteBlockChat(self):
cmd = "/vote_block_chat %s" % (self.nameString)
net.SendChatPacket(cmd)

Altına Ekle:

if app.ENABLE_PLAYER_BLOCK_SYSTEM:
def OnAppendToBlockMessenger(self):
net.SendChatPacket("/block_player %s" % (self.nameString))

def OnRemoveToBlockMessenger(self):
net.SendChatPacket("/unblock_player %s" % (self.nameString))
messenger.SetShowFriendButton(self.nameString)

Terkar Arat:

if not messenger.IsFriendByName(self.nameString):
self.__ShowButton(localeInfo.TARGET_BUTTON_FRIEND)

Altına Ekle:

if app.ENABLE_PLAYER_BLOCK_SYSTEM:
if player.IsPlayerBlock(self.vid):
self.__ShowButton(localeInfo.TARGET_BUTTON_UNBLOCK)
self.__HideButton(localeInfo.TARGET_BUTTON_BLOCK)
else:
self.__ShowButton(localeInfo.TARGET_BUTTON_BLOCK)
self.__HideButton(localeInfo.TARGET_BUTTON_UNBLOCK)

NOT:
Kişiyi Dost olarak eklediğinizde Dost butonu Hide olur. ve Kişi arkadaş listenize gelir. Kişiyi engellediğiniz zaman kişi dost listenizden siliniyor(bu sistemin kendisinde var.) Kişi Engellenenler listesine ekleniyor. Fakat kişinin engelini targettan kaldırdığınız zaman Engellenenler listesinden gitmiyor(bunu düzelteceğim konuya atarım tekrar) Asıl mesela bu değil zaten. Kişinin engelini her türlü kaldırdığınız vakit Arkadaşlar penceresinden vs. Target'da dost butonu hala daha Show olmuyordu. Çünkü PythonMessenger.cpp 'de bir mapte tutuluyordu.

Arkadaş Olarak Ekledim -> Client Aradaş olarak biliyor.
Engelledim -> Client Engellediğimi biliyor.
Engeli Kaldırdım -> Client Engeli kaldırdığımı biliyor.

Fakat Client beni hala daha arkadaş zannediyor. Bu anlık olarak böyle fakat oyundan çıkıp tekrar girdiğimde diğer taraftan tekrar Cliente bilgileri geldiği için Dost gözüküyordu. Ama ben anlık olmasını istediğim için şu şekilde düzelttim.

PythonMessenger.cpp aç ve ekle:
Kod:
#ifdef ENABLE_PLAYER_BLOCK_SYSTEM
void CPythonMessenger::UnblockShowFriendButton(const char * c_szName)
{
    auto it = m_FriendNameMap.find(c_szName);
    if (it != m_FriendNameMap.end())
    {
        m_FriendNameMap.erase(it);
    }
}

void CPythonMessenger::AddingFriendsAfterUnblocking(const char * c_szName)
{
    UnblockShowFriendButton(c_szName);
}
#endif

Tekrar ekle:
Kod:
#ifdef ENABLE_PLAYER_BLOCK_SYSTEM
PyObject * messengerSetShowFriendButton(PyObject* poSelf, PyObject* poArgs)
{
    char * szName;
    if (!PyTuple_GetString(poArgs, 0, &szName))
        return Py_BuildException();

    CPythonMessenger::Instance().AddingFriendsAfterUnblocking(szName);
    return Py_BuildNone();
}
#endif

Tekrar Ekle:

Kod:
#ifdef ENABLE_PLAYER_BLOCK_SYSTEM
        { "SetShowFriendButton",        messengerSetShowFriendButton,        METH_VARARGS },
#endif

PythonMessenger.h aç ve ekle:

Kod:
#ifdef ENABLE_PLAYER_BLOCK_SYSTEM
        // Again Show Friend Button
        void UnblockShowFriendButton(const char * c_szName);
        void AddingFriendsAfterUnblocking(const char * c_szName);
#endif

uiTarget için Verdiğim Kodlarda zaten bu düzenleme mevcut.

Kanıt:

giphy.gif
 
Son düzenleme:
Çoğu fonksiyon çalışıyor. Şunu fark ettim mesaj atınca oyuncu engellı diyor fakat mesaj yinede gidiyor. Birde Engelli listesine ekleme yaparken kendi ismini yazarsan kendini engelleyebiliyorsun :D
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst