(C++ , Python) Bot Kontrol Sistemi | bykatil199

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 89

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
logo.png


Merhaba Bugun Size Sorunları vs Düzeltiğim Bot Kontrol Sistemini Paylaşmakla Gurur Duyarım.

NOT : Sistem ThePricenin Sistemi , Lakin Sistemde 1 kaç ufak değiştirme yaptım sistem belli olması için ifdef olayı yaptım.

Öncelikle Sistem Görüntüsü Buyurun Video ;





Öncelikle (Game Sourceden Başlıyalım)

GameSource > common > servise.h AÇılır Eklenir ;

Kod:
#define AHMET_BOT_KONTROL_SYSTEM

Game Source > char.cpp AÇılır ;

*** Aratılır ***

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

***Altına Eklenir ***

Kod:
#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


*** Aratılır ***

void CHARACTER::fishing() kod satırında if (m_pkFishingEvent) var bu kod satırının;

***Altına Eklenir ***

Kod:
#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 > char.h AÇılır ; ***

***
Aratılır ***

Kod:
bool            IsBlockMode(BYTE bFlag) const    { return (m_pointsInstant.bBlockMode & bFlag)?true:false; }

*** Altına Eklenir ***

Kod:
#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 ***

***
Herhangi Biyere Eklenir ***

Kod:
#ifdef AHMET_BOT_KONTROL_SYSTEM     ACMD(do_captcha); #endif

***Aratılır ***

Kod:
{ "pvp",        do_pvp,            0,            POS_DEAD,    GM_PLAYER    },

*** Üstüne Eklenir ***

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

***Game Source > cmd_general.cpp > En Altına Eklenir ***

Kod:
#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_bykatil199_captcha_hata"), ch->GetName());         return;     }     long captcham = ch->GetCaptcha();     if (captcham == gelensifre)     {         ch->ChatPacket(CHAT_TYPE_BIG_NOTICE, LC_TEXT("%s_bykatil199_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_bykatil199_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 >input_login.cpp > Fonksiyon Aratılır : void CInputLogin::Entergame(LPDESC d, const char * data) / Altında ***

if (ch->GetHorseLevel() > 0)
{
ch->EnterHorse();
}

*** Altına Eklenir ***

Kod:
#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


* game source > char_battle.cpp açılır ****

*Aratılır *

Kod:
bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type)

if (DAMAGE_TYPE_MAGIC == type) üstüne eklenir ;

** üstüne eklenir **

Kod:
#ifdef AHMET_BOT_KONTROL_SYSTEM     if (pAttacker && this)     {         if(!IsPC())         {             if(get_global_time() > int(pAttacker->GetQuestFlag("captcha.sure")))             {                                               int sans;                 if (pAttacker->GetLevel() >= 75 && pAttacker->GetLevel() < 90)                 {                     sans = number(60, 600);                 }                 else                 {                     sans = number(60, 600);                 }                               if(int(pAttacker->GetQuestFlag("captcha.durum")) == 0)                 {                     pAttacker->SetQuestFlag("captcha.durum", 1);                     pAttacker->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;                     pAttacker->ChatPacket(CHAT_TYPE_COMMAND, "captcha %d %d %d %d %d", sayi1, sayi2, sayi3, sayi4, sayi5);                     pAttacker->SetCaptcha(yenicaptcha);                     return true;                 }             }             if(int(pAttacker->GetQuestFlag("captcha.durum")) == 1)             {                 return true;             }         }     } #endif

////////////////////////////////////////////CLİENT SOURCE //////////////////////////////////////////////////


***Client Source > UserInterFace > locale_inc.h***

***
Müsait Biyere Eklenir ***

#define AHMET_BOT_KONTROL_SYSTEM

*** Client Source > UserInterface >PythonApplicationModule.cpp ***

***
Aratılır ***

PyModule_AddIntConstant(poModule, "CAMERA_STOP", CPythonApplication::CAMERA_STOP);

*** Altına Eklenir ***

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


/////////////////// ROOT AÇILIR ///////////////////

***game.py açılır aratılır ;***

self.partyInviteQuestionDialog = None


***Altına EKlenir ;***

Kod:
if app.AHMET_BOT_KONTROL_SYSTEM:             self.captchatest = None

***aratılır ;***

self.serverCommander=stringCommander.Analyzer()

***üstüne eklenir ;***

Kod:
if app.AHMET_BOT_KONTROL_SYSTEM:             serverCommandList.update({"captcha" : self.captchaekran })

***aratılır ;***

def BINARY_ServerCommand_Run(self, line):

***üstüne eklenir ;***

Kod:
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 ;***

***
aratılır ;***

class MoneyInputDialog(ui.ScriptWindow):

***üstüne eklenir ;***

Kod:
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 Files AÇılır ;***

***
/usr/game/share/locale/turkey***

***
burda locale_string.txt eklenir ;***

Kod:
"%s_bykatil199_captcha_hata"; "Merhaba, %s Bot Kontrol Şifre Girmediğiniz İçin Oyundan Atılıyorsunuz"; "%s_bykatil199_captcha_dogru"; "Merhaba, %s Şifre Doğru ! Bot Kontrol Sistemi Devre Dışı , İyi Oyunlar"; "%s_bykatil199_captcha_yanlis"; "Merhaba, %s Şifre Yanlış ! Lütfen Doğru Şekilde Giriniz..";



Aşşağıdaki Dosyalar Root İçine Atılır ;

ROOT :
VİRUSTOTAL :






Ekliyenlerin Kanıtları ;



C++ ve Python ile Bot Kontrol Sistemi Geliştirme Rehberi
Metin2 özel sunucularında oyun deneyimini artırmak için geliştirilen bot sistemleri, özellikle PvP odaklı sunucularda önemli rol oynar. Bu sistemler, hem oyun içi dengeleri korumak hem de oyuncuların eğlenceli vakit geçirmesini sağlar. Bu yazıda, C++ ve Python dilleriyle nasıl bir bot kontrol sistemi geliştirileceği anlatılacaktır. Bu sistem; Martysama, game server programming, source edit, uiscript gibi kavramlarla da doğrudan ilişkilidir.

Bot Kontrol Sisteminin Temelleri
Bot kontrol sistemleri, genellikle game sunucusu üzerinde çalışan bir yapıya sahiptir. Bu sistemler, oyun içindeki karakterlerin yapay zekâ ile hareket etmesini sağlar. C++ dili, Metin2 server src ile entegre çalışarak oyun motoruna doğrudan erişim sağladığı için tercih edilir. Python ise daha çok arayüz (GUI) ve komut kontrolü için kullanılır. Py GUI veya Python GUI araçları sayesinde, botların durumu kolayca izlenebilir ve yönetilebilir.

C++ Tarafında Bot Sistemleri
Metin2 oyununda C++ tabanlı bot sistemleri genellikle server src üzerinde geliştirilir. Bu süreçte auth ve game sunucuları arasında haberleşme sağlanarak botlar oyun içine sokulabilir. Core yapılar (game core, db core) üzerinde yapılan değişikliklerle botların davranışları tanımlanabilir. Source edit işlemleri sırasında dikkat edilmesi gereken detaylar, bot sisteminin kararlı ve sorunsuz çalışmasını sağlar. Ayrıca, Metin2 compile işlemi sırasında hataların oluşmaması için kodlar dikkatlice incelenmelidir.

Python GUI ile Bot Yönetimi
Python dilinin kolay kullanımı sayesinde, bot kontrol sistemlerinde Py GUI veya UI Script gibi arayüzler geliştirilebilir. Py Root dizinleri altında yer alan scriptler, botların başlatılması, durdurulması ve izlenmesi için kullanılabilir. Uiscript ile kullanıcı dostu arayüzler tasarlanarak, botların çalışma mantığı daha etkili bir şekilde takip edilebilir. Bu yapı, pack dosyaları ile birlikte dağıtıldığında, bot kontrol sistemi tüm sunucular için kolayca kullanılabilir hale gelir.

Veritabanı Entegrasyonu ve DB Yönetimi
Bot kontrol sistemleri, genellikle bir DB (veritabanı) yapısı ile entegre çalışır. Metin2 özel sunucularında DB Core sistemleri üzerinde bot verileri saklanabilir. Auth ve Game sunucuları arasındaki veri aktarımı sırasında botların kimlik bilgileri, konum bilgileri, envanter içerikleri gibi veriler tutulur. Bu veriler sayesinde botlar, oyun içinde gerçek oyuncular gibi davranabilir. Martysama ve diğer geliştirici sistemlerle entegrasyon sağlandığında, bot sistemleri daha gelişmiş seviyeye taşınabilir.

Sonuç
C++ ve Python ile geliştirilen bot kontrol sistemleri, Metin2 özel sunucularında kaliteli bir oyun deneyimi sunmak için oldukça etkili bir yöntemdir. Game server programming, source edit, uiscript, py gui, db core gibi teknik yapılar bir araya getirildiğinde, güçlü ve esnek bir bot kontrol sistemi oluşturulabilir. Bu sistemler sayesinde, PvP sunucularında botlarla daha dengeli mücadeleler yapılabilir. Metin2Lobby olarak bu altyapıyı geliştirmek isteyen geliştiriciler için gerekli tüm kaynakları sunuyoruz.


Guide to Developing Bot Control Systems with C++ and Python
Bot systems developed for Metin2 private servers play an important role, especially on PvP-focused servers, enhancing the gaming experience. These systems help maintain balance within the game while providing entertaining gameplay for players. In this article, we will explain how to develop a bot control system using C++ and Python. This system is closely related to concepts such as Martysama, game server programming, source edit, uiscript, and more.

Fundamentals of Bot Control Systems
Bot control systems usually operate on the game server. These systems allow characters within the game to act using artificial intelligence. C++ is preferred due to its direct integration with Metin2 server src, allowing access to the game engine. Python, on the other hand, is often used for interfaces (GUI) and command control. With tools like Py GUI, the status of bots can be easily monitored and managed.

Bot Systems in C++
C++-based bot systems in Metin2 are typically developed on the server src. During this process, communication between auth and game servers allows bots to enter the game. By modifying core structures (game core, db core), bot behaviors can be defined. Attention to detail during source edit ensures stable and error-free operation of the bot system. Additionally, to avoid errors during Metin2 compile, codes must be carefully reviewed.

Bot Management with Python GUI
Thanks to the ease of use of Python, user interfaces such as Py GUI or UI Script can be developed for bot control systems. Scripts located under Py Root directories can be used to start, stop, and monitor bots. With Uiscript, user-friendly interfaces can be designed to effectively track bot behavior. When distributed together with pack files, the bot control system becomes easily usable across all servers.

Database Integration and DB Management
Bot control systems typically operate integrated with a DB (database) structure. Within Metin2 private servers, bot data can be stored on DB Core systems. During data transfers between auth and game servers, information such as bot identities, locations, and inventory contents are stored. These data allow bots to behave similarly to real players within the game. Integration with systems like Martysama and other developer tools can elevate bot systems to more advanced levels.

Conclusion
Bot control systems developed with C++ and Python provide an effective method for delivering high-quality gaming experiences on Metin2 private servers. When technical structures such as game server programming, source edit, uiscript, py gui, and db core are combined, a robust and flexible bot control system can be created. These systems allow for more balanced combat against bots in PvP servers. As Metin2Lobby, we provide all necessary resources for developers aiming to enhance this infrastructure.​
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt