Çözüldü Otomatik Sohbet Banı Tüm Haritayı Banlıyor

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

asilords

Üye
Üye
Mesaj
46
Çözümler
1
Beğeni
23
Puan
664
Ticaret Puanı
0
otomatik chat banı sistemini kurdum, herhangi bir oyuncu küfür ettğinde aynı haritadaki tüm oyuncuları banlıyor fonksiyonu aşağıya yapıştırıyorum yardımcı olabilecek var mı ?

Kod:
void CInputMain::BlockChatInsult(LPCHARACTER ch, const char * data)
{
    long bantime = 60 * 1; // 1 minute
    // long bantime = 60 * 60; // 1 hour
    // long bantime = 60 * 60 * 24; // 1 day
    if (ch)
        ch->AddAffect(AFFECT_BLOCK_CHAT, POINT_NONE, 0, AFF_NONE, bantime, 0, true);
}
 
Çözüm
Şu kodları şöyle değiştirip deneyebilir misin?
Not: denemedim, tamamen deneysel :D

Arat
C++:
                    CPythonNetworkStream& paket=CPythonNetworkStream::Instance();
                    if (paket.IsInsultIn(p))
                    {
                        paket.BLOCK_INSULT();
                        return false;
                    }

Değiş
C++:
                    CPythonNetworkStream& paket=CPythonNetworkStream::Instance();

                    if (paket.IsInsultIn(p))
                    {
                        CInstanceBase* pkInstMain=rkChrMgr.GetMainInstancePtr();
                     
                        if (kChat.dwVID == pkInstMain->GetVirtualID())
                        {...
Bu fonksiyonda bi yanlışlık yok. ch dediği zaten ilgili karakteri belirtir.

BlockChatInsult bu fonksiyonun çağrıldığı kodları inceleyin isterseniz
 
2 kısım var bunlardan biri değilse salıyorum bu sistemi çok yordu aksam aksam :)
kod1:
bool CPythonNetworkStream::BLOCK_INSULT()
{
    if (!__CanActMainInstance())
        return true;
   
    TPacketCGChatInsult kPacket;
    kPacket.header = HEADER_CG_INSULT_BLOCK;

    if (!Send(sizeof(kPacket), &kPacket))
    {
        Tracen("BLOCK_INSULT Error");
        return false;
    }

    return SendSequence();
}

kod2:
                #ifdef ENABLE_CHECK_INSULT
                {
                    CPythonNetworkStream& paket=CPythonNetworkStream::Instance();
                    if (paket.IsInsultIn(p))
                    {
                        paket.BLOCK_INSULT();
                        return false;
                    }
                }
                #else
                    __FilterInsult(p, strlen(p));
                #endif
 
Sistemi aldığınız yeri veya komple sistemi paylaşırsanız bir göz atalım, bu şekilde bulmak güç.
 
Linkleri görebilmek için giriş yap veya kayıt ol.


Konu linki:
Linkleri görebilmek için giriş yap veya kayıt ol.


Sanırım sorun sistemde çok fazla kodlama bilmiyorum kendi bilgilerimlede çözemedim çok fazla kod içermiyor ama anlamadım

bu arada ilginiz için teşekkürler
 

Dosya Eklentileri

  • Auto Black Chat System.rar
    2,5 KB · Gösterim: 0
Bu sistemde sorun var. RecvChat üzerinden kontrol etmiş. Yani birisi bağırmada küfür etse tüm oyunculara ban atacak.
Normal konuşmada küfür etse görüş açısındaki tüm oyunculara atacak.
 
Şu kodları şöyle değiştirip deneyebilir misin?
Not: denemedim, tamamen deneysel :D

Arat
C++:
                    CPythonNetworkStream& paket=CPythonNetworkStream::Instance();
                    if (paket.IsInsultIn(p))
                    {
                        paket.BLOCK_INSULT();
                        return false;
                    }

Değiş
C++:
                    CPythonNetworkStream& paket=CPythonNetworkStream::Instance();

                    if (paket.IsInsultIn(p))
                    {
                        CInstanceBase* pkInstMain=rkChrMgr.GetMainInstancePtr();
                     
                        if (kChat.dwVID == pkInstMain->GetVirtualID())
                        {
                            paket.BLOCK_INSULT();
                        }

                        return false;
                    }
 
Çözüm
Şu kodları şöyle değiştirip deneyebilir misin?
Not: denemedim, tamamen deneysel :D

Arat
C++:
                    CPythonNetworkStream& paket=CPythonNetworkStream::Instance();
                    if (paket.IsInsultIn(p))
                    {
                        paket.BLOCK_INSULT();
                        return false;
                    }

Değiş
C++:
                    CPythonNetworkStream& paket=CPythonNetworkStream::Instance();

                    if (paket.IsInsultIn(p))
                    {
                        CInstanceBase* pkInstMain=rkChrMgr.GetMainInstancePtr();
                    
                        if (kChat.dwVID == pkInstMain->GetVirtualID())
                        {
                            paket.BLOCK_INSULT();
                        }

                        return false;
                    }
Yardım için teşekkür ederim sorun çözüldü,ancak client te syserr verdi.
0519 00:27:12304 :: Phase Game does not handle this header (header: 4, last: 4, 4)

Sorun teşkil etmiyorsa kullanmalımıyım sistemi ?
 
Sorun çıkartmaz ancak çözmek isterseniz if bloğunu ilgili kod satırını kapsayacak şekilde genişletebilirsiniz.
 
C++:
                    CPythonNetworkStream& paket=CPythonNetworkStream::Instance();
                    CInstanceBase* pkInstMain=rkChrMgr.GetMainInstancePtr();

                    if (kChat.dwVID == pkInstMain->GetVirtualID())
                    {
                        if (paket.IsInsultIn(p))
                        {
                            paket.BLOCK_INSULT();
                            return false;
                        }
                    }
                    else
                    {
                         __FilterInsult(p, strlen(p));
                    }
 
C++:
                    CPythonNetworkStream& paket=CPythonNetworkStream::Instance();
                    CInstanceBase* pkInstMain=rkChrMgr.GetMainInstancePtr();

                    if (kChat.dwVID == pkInstMain->GetVirtualID())
                    {
                        if (paket.IsInsultIn(p))
                        {
                            paket.BLOCK_INSULT();
                            return false;
                        }
                    }
                    else
                    {
                         __FilterInsult(p, strlen(p));
                    }
Elinize sağlık sorun tamamen çözülmüştür konu kapanabilir :)
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst