Neler yeni

Metin2 PvP Bot Kontrol Sistemi

admin

Yönetici
Yönetici
Admin
Katılım
17 Eki 2018
Mesajlar
160
Beğeniler
5
#1

Merhaba ForumMetin2 ailesi,
Bu paylaşımımızda Metin2 PvP 'si olan üyelerimiz için Bot Kontrol Sistemi paylaşıyoruz.

Sistemi indirdikten sonra bir takım düzenlemeler yapmanız gerekiyor.
İndirme Linki : http://dosya.co/qhfnnysqutub/root_at.rar.html
Virüs Total Linki : https://www.virustotal.com/#/file-a...1MjRiOGUxMGZhNDZjNDM1MjJmZDY6MTU0MTI2MTIwMA==



Düzenlemeler



İlk olarak GameSource > common > servise.h
dosyasını açın vekleyin.

C++:

#define AHMET_BOT_KONTROL_SYSTEM
Game Source > char.cpp
dosyasını açıp alttaki aratıp buluyoruz.

if (!pick || pick->GetType() != ITEM_PICK)
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("°î±ªÀ̸¦ ÀåÂøÇϼ¼¿ä."));
return;
}

altına bu kodu ekliyoruz.
#ifdef AHMET_BOT_KONTROL_SYSTEM
if(get_global_time() > int(GetQuestFlag("captcha.sure")))
{
int sans;
if (GetLevel() >= 75 && GetLevel() < 90)
{
sans = number(1, 2);
}
else
{
sans = number(1, 2);
}
if(int(GetQuestFlag("captcha.durum")) == 0)
{
SetQuestFlag("captcha.durum", 1);
SetQuestFlag("captcha.sure", get_global_time() + (60*sans));
int sayi1 = number(1,9);
int sayi2 = number(1,9);
int sayi3 = number(1,9);
int sayi4 = number(1,9);
int sayi5 = number(1,9);
long yenicaptcha = (sayi1*10000)+(sayi2*1000)+(sayi3*100)+(sayi4*10)+sayi5;
ChatPacket(CHAT_TYPE_COMMAND, "captcha %d %d %d %d %d", sayi1, sayi2, sayi3, sayi4, sayi5);
SetCaptcha(yenicaptcha);
return;
}
}
if(int(GetQuestFlag("captcha.durum")) == 1)
{
return;
}
#endif

Daha sonra alttaki kodu aratıyoruz.
void CHARACTER::fishing()

Ve Altına bu kodu bekliyoruz.


#ifdef AHMET_BOT_KONTROL_SYSTEM
if(get_global_time() > int(GetQuestFlag("captcha.sure")))
{
int sans;
if (GetLevel() >= 75 && GetLevel() < 90)
{
sans = number(1, 2);
}
else
{
sans = number(1, 2);
}
if(int(GetQuestFlag("captcha.durum")) == 0)
{
SetQuestFlag("captcha.durum", 1);
SetQuestFlag("captcha.sure", get_global_time() + (60*sans));
int sayi1 = number(1,9);
int sayi2 = number(1,9);
int sayi3 = number(1,9);
int sayi4 = number(1,9);
int sayi5 = number(1,9);
long yenicaptcha = (sayi1*10000)+(sayi2*1000)+(sayi3*100)+(sayi4*10)+sayi5;
ChatPacket(CHAT_TYPE_COMMAND, "captcha %d %d %d %d %d", sayi1, sayi2, sayi3, sayi4, sayi5);
SetCaptcha(yenicaptcha);
return;
}
}
if(int(GetQuestFlag("captcha.durum")) == 1)
{
return;
}
#endif
Game Source içinden char.h 'yi açıyoruz.


Bu kodu aratıyoruz;
bool IsBlockMode(BYTE bFlag) const { return (m_pointsInstant.bBlockMode & bFlag)?true:false; }
Ve altına bunu ekliyoruz.

#ifdef AHMET_BOT_KONTROL_SYSTEM
long m_captcha;
void SetCaptcha(long captcha) { m_captcha = captcha; }
long GetCaptcha() const { return m_captcha; }
#endif

Game Source > cmd.cpp 'yi açıp herhangi bir yere alttaki kodu ekliyoruz.

#ifdef AHMET_BOT_KONTROL_SYSTEM
ACMD(do_captcha);
#endif
Daha sonra yine cmd.cpp 'nin içinde alttaki kodu aratıyoruz.

{ "pvp", do_pvp, 0, POS_DEAD, GM_PLAYER },
Üstüne bu kodu ekliyoruz.

#ifdef AHMET_BOT_KONTROL_SYSTEM
{ "captcha", do_captcha, 0, POS_DEAD, GM_PLAYER },
#endif

Game Source > cmd_general.cpp dosyasını açıp en alta ekliyoruz.

#ifdef AHMET_BOT_KONTROL_SYSTEM
ACMD(do_captcha)
{

char arg1[256];
long gelensifre;
one_argument(argument, arg1, sizeof(arg1));

if (!*arg1)
return;

str_to_number(gelensifre, arg1);

if( gelensifre == 0 || gelensifre == NULL)
{

ch->GetDesc()->DelayedDisconnect(7);
ch->ChatPacket(CHAT_TYPE_BIG_NOTICE, LC_TEXT("%s_ForumMetin2_captcha_hata"), ch->GetName());
return;
}

long captcham = ch->GetCaptcha();

if (captcham == gelensifre)
{
ch->ChatPacket(CHAT_TYPE_BIG_NOTICE, LC_TEXT("%s_ForumMetin2_captcha_dogru"), ch->GetName());
int sans;
if (ch->GetLevel() >= 75 && ch->GetLevel() < 90)
{
sans = number(45, 60);
}
else
{
sans = number(5, 30);
}

ch->SetQuestFlag("captcha.durum", 0);
ch->SetQuestFlag("captcha.sure", get_global_time() + (300*sans));
}
else
{
ch->ChatPacket(CHAT_TYPE_BIG_NOTICE, LC_TEXT("%s_ForumMetin2_captcha_yanlis"), ch->GetName());
int sayi1 = number(1,9);
int sayi2 = number(1,9);
int sayi3 = number(1,9);
int sayi4 = number(1,9);
int sayi5 = number(1,9);
long yenicaptcha = (sayi1*10000)+(sayi2*1000)+(sayi3*100)+(sayi4*10)+sayi5;
ch->ChatPacket(CHAT_TYPE_COMMAND, "captcha %d %d %d %d %d", sayi1, sayi2, sayi3, sayi4, sayi5);
ch->SetCaptcha(yenicaptcha);

}
return;
}
#endif

Game Source > intro_login.cpp içerisinde alttaki kodu arıyoruz.
void CInputLogin::Entergame(LPDESC d, const char * data)
if (ch->GetHorseLevel() > 0)
{
ch->EnterHorse();
}
Altına bu kodu ekliyoruz.
#ifdef AHMET_BOT_KONTROL_SYSTEM
int durum = ch->GetQuestFlag("captcha.durum");
if (durum == 1)
{
int sayi1 = number(1,9);
int sayi2 = number(1,9);
int sayi3 = number(1,9);
int sayi4 = number(1,9);
int sayi5 = number(1,9);
long yenicaptcha = (sayi1*10000)+(sayi2*1000)+(sayi3*100)+(sayi4*10)+sayi5;
ch->ChatPacket(CHAT_TYPE_COMMAND, "captcha %d %d %d %d %d", sayi1, sayi2, sayi3, sayi4, sayi5);
ch->SetCaptcha(yenicaptcha);
}
#endif


Client Source > UserInterFace > locale_inc.h dosyasını açıyoruz.

en alta ekliyoruz.
#define AHMET_BOT_KONTROL_SYSTEM
Client Source > UserInterface >PythonApplicationModule.cpp dosyasını açıyoruz.


Alttaki kodu aratıyoruz.
PyModule_AddIntConstant(poModule, "CAMERA_STOP", CPythonApplication::CAMERA_STOP);
Altına bu kodu ekliyoruz.

#ifdef AHMET_BOT_KONTROL_SYSTEM
PyModule_AddIntConstant(poModule, "AHMET_BOT_KONTROL_SYSTEM", 1);
#else
PyModule_AddIntConstant(poModule, "AHMET_BOT_KONTROL_SYSTEM", 0);
#endif

Root'un içindeki game.py 'yi açıyoruz.
İçinde alttaki kodu arıyoruz.

self.partyInviteQuestionDialog = None
Altına bu kodu ekliyoruz.
if app.AHMET_BOT_KONTROL_SYSTEM:
self.captchatest = None
Aynı dosyada bu kodu aratıyoruz.

self.serverCommander=stringCommander.Analyzer()
ve üstüne bu kodu ekliyoruz.


:
if app.AHMET_BOT_KONTROL_SYSTEM:
serverCommandList.update({"captcha" : self.captchaekran })
yine aynı dosyada alttaki kodu aratıyoruz.

def BINARY_ServerCommand_Run(self, line):
ve üstüne alttaki kodu ekliyoruz.
if app.AHMET_BOT_KONTROL_SYSTEM:
def captchaekran(self, sayi1, sayi2, sayi3, sayi4, sayi5):
captchatest = uiCommon.CaptchaEkran()
captchatest.SetText1("|cffffff00Bot Engel Sistemi")
captchatest.SetText3("Oyuna devam edebilmek için üstteki kodu aşağıya yaz.")
captchatest.SetTimeOverMsg("Soruyu zamanında cevaplamadığın için oyundan atılıyorsun.")
captchatest.SetTimeOverEvent(self.captchacevap, "kapat")
captchatest.SetAcceptEvent(lambda arg=True: self.captchacevap(arg))
captchatest.SetCancelEvent(lambda arg=False: self.captchacevap(arg))
captchatest.Open(15, sayi1, sayi2, sayi3, sayi4, sayi5)
self.captchatest = captchatest

def captchacevap(self, answer):

if not self.captchatest:
return

if answer == False:
self.captchatest.Temizle()
# chat.AppendChat(1, "Temizledim bro.")
elif answer == True:
# chat.AppendChat(1, "Girilen şifre : " + str(self.captchatest.GetInput()))
net.SendChatPacket("/captcha " + str(self.captchatest.GetInput()))
self.captchatest.Close()
self.captchatest = None
else:
net.SendChatPacket("/captcha 0")
self.captchatest.Close()
self.captchatest = None
uicommon.py açılır dosyasını açıyoruz.


Alttaki kodu aratıyoruz.
class MoneyInputDialog(ui.ScriptWindow):

ve üstüne alttaki kodu ekliyoruz.


if app.AHMET_BOT_KONTROL_SYSTEM:
class CaptchaEkran(QuestionDialog2):
def __init__(self):
ui.ScriptWindow.__init__(self)

self.__CreateDialog()
self.endTime = 0
self.timeOverMsg = 0
self.timeOverEvent = None
self.timeOverEventArgs = None

def __del__(self):
QuestionDialog2.__del__(self)

def __CreateDialog(self):
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "uiscript/ahmetbotkontrol.py")

self.board = self.GetChild("board")
self.textLine1 = self.GetChild("message1")
self.textLine2 = self.GetChild("message2")
self.textLine3 = self.GetChild("message3")
self.InputValue = self.GetChild("InputValue")
self.cp1 = self.GetChild("cp1")
self.cp2 = self.GetChild("cp2")
self.cp3 = self.GetChild("cp3")
self.cp4 = self.GetChild("cp4")
self.cp5 = self.GetChild("cp5")
self.acceptButton = self.GetChild("accept")
self.cancelButton = self.GetChild("cancel")
self.textLine3.Hide()

def Open(self, timeout, cpp1, cpp2, cpp3, cpp4, cpp5):
self.SetCenterPosition()
self.SetTop()
self.cp1.LoadImage("captcha/"+str(cpp1)+".tga")
self.cp1.Show()
self.cp2.LoadImage("captcha/"+str(cpp2)+".tga")
self.cp2.Show()
self.cp3.LoadImage("captcha/"+str(cpp3)+".tga")
self.cp3.Show()
self.cp4.LoadImage("captcha/"+str(cpp4)+".tga")
self.cp4.Show()
self.cp5.LoadImage("captcha/"+str(cpp5)+".tga")
self.cp5.Show()
self.Show()

self.endTime = app.GetTime() + timeout


def SetTimeOverEvent(self, event, *args):
self.timeOverEvent = event
self.timeOverEventArgs = args

def SetTimeOverMsg(self, msg):
self.timeOverMsg = msg

def SetText1(self, text):
self.textLine1.SetText(text)
self.textLine1.Show()

def SetText2(self, text):
self.textLine2.SetText(text)
self.textLine2.Show()

def SetText3(self, text):
self.textLine3.SetText(text)
self.textLine3.Show()

def GetInput(self):
return self.InputValue.GetText()

def Temizle(self):
self.InputValue.SetText("")

def OnTimeOver(self):
if self.timeOverEvent:
apply(self.timeOverEvent, self.timeOverEventArgs)
if self.timeOverMsg:
chat.AppendChat(chat.CHAT_TYPE_INFO, self.timeOverMsg)

def OnUpdate(self):
leftTime = max(0, self.endTime - app.GetTime())
self.SetText2(localeInfo.UI_LEFT_TIME % (leftTime))
if leftTime <= 0:
self.OnTimeOver()

Sunucu dosyalarını açıyoruz son olarak.
usr/game/share/locale/turkey klasöründe locale_string.txt dosyasını açıyoruz.
Ve en alta ekliyoruz.


"%s_ForumMetin2_captcha_hata";
"Merhaba, %s Bot Kontrol Şifre Girmediğiniz İçin Oyundan Atılıyorsunuz";

"%s_ForumMetin2_captcha_dogru";
"Merhaba, %s Şifre Doğru ! Bot Kontrol Sistemi Devre Dışı , İyi Oyunlar";

"%s_ForumMetin2_captcha_yanlis";
"Merhaba, %s Şifre Yanlış ! Lütfen Doğru Şekilde Giriniz..";


Ve işlem sona eriyor. Sistem kurulumu tamamlanmıştır :)
Kafanıza takılan bir şey olursa sorabilirsiniz.
 

thepo3535

Yeni üye
Kayıtlı Üye
Katılım
2 May 2019
Mesajlar
1
Beğeniler
0
#2
genel olarak usta programcı olmadigim için hiç birşey anlamadim :)