mavzermete 1
mavzermete
darkbey42 1
darkbey42
xranzei 1
xranzei
Bvural41 1
Bvural41
PrimeAC 1
PrimeAC
Payidar2 1
Payidar2
Fethi Polat 1
Fethi Polat
Wizard' 1
Wizard'
shrpnl 1
shrpnl
Queinn 1
Queinn
NovaLst 1
NovaLst
InfernoShade 1
InfernoShade
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

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. 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