Metin2 - Edit Kontrol Sistemi [LUA]

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

Admin

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

Edit Kontrol Sistemi Nedir ?


Bu sistem, bireysel takılar oyuncularla kontrol ve öğeleri farklı oyun efsun sipariş şey tüm nesneleri algılayan veya silin. Dosyadan item_attr.sql dosyadan Kontrol işlemleri böylece ayarı oyununuzu egzersiz yapar. Bu deha hesaplarını kapatır ve öğeleri silmek olsa oyunun takılar bir kez daha gol nedeni budur. Efsaneye aynı tip aynı şekilde olmayan bir efsunlu bir nesne tespit ya item_attr.sql zamanda sistem algılar kapatır ve hesap öğeleri siler zaman.


Nasıl Calışır ?

40004 kodlu halkalar açılmış veya tıklanan ve sistem kapatılabilir olması. her bir saat içinde size oyun ve hesabın ayarlarına tarafından algılanan farklı bir editör durumu kapatmak ise sistem öğeleri silmek, tüm öğeleri tarar. Eğer sisteme kapatırsanız da taramayı durdurur. Istediğiniz zaman açık veya kapalı gezen kapatabilirsiniz.


Not: Oyuncuların hiçbiri bu sistemin editörü kaçamıyorum. Mal rağmen, hemen kapalı olduğu için mal hesapları envanterdeyk deha silinmez rağmen, insanlar her hesap verilen aletleri ve mal kapatır deha kullanmak için fırsat bulamıyor. Ayrıca IP adresini tespit etmek için diğer hesapları kapatabilirsiniz.

Kod:
quest kontrol begin
Kod:
state start begin         when 40004.use with pc.is_gm() begin             if game.get_event_flag("editKontrolSistemi") == 0 then                 kontrolSuresi = 10                  -- Burası saniye cinsindendir. Yani 60*60 = 3600 saniye o da 1 saat yapar. 1 güne bir kontrol etsin istiyorsanız şu şekilde yapabilirsiniz:                 -- 60*60*24 -- > 60*60 = 3600 saniye yapar. Yani 1 saat. 3600*24 = 86400 saniye o da 24 saat yapar. Mantık bu.                 server_loop_timer("editKontrol",kontrolSuresi,get_server_timer_arg())                 game.set_event_flag("editKontrolSistemi",1)                 syschat("Sistem: Otomatik Edit Silme Sistemi aktif edilmiştir.")             elseif game.get_event_flag("editKontrolSistemi") == 1 then                 clear_server_timer("editKontrol",get_server_timer_arg())                 game.set_event_flag("editKontrolSistemi",0)                 syschat("Sistem: Otomatik Edit Silme Sistemi kapatılmıştır.")             end         end                  when editKontrol.server_timer begin             tumEsyalarKontrol = mysql_query10("select * from player.item")             tumEsyalarKontrolSay = tonumber(table.getn(tumEsyalarKontrol))             notice_all("Toplam taranan eşya sayısı: "..tumEsyalarKontrolSay)             if tumEsyalarKontrolSay < 1 then                 notice_all("Oyunda kayıtlı hiç eşya bulunamadi")                 return             end             editliOyuncular = {}             editliEsyalar = {}             editliEsyaKodlari = {}             oyuncuEfsunTipiDizi = {}             oyuncuEsyaEfsunDiziTipY = {}             k=1             b=1             for i=1,tumEsyalarKontrolSay,1 do                 for m=13,25,2 do                     esyaEfsunTipveDeger = tonumber(tumEsyalarKontrol[i][m])                      if esyaEfsunTipveDeger != 0 then                         esyaEfsunDeger = tonumber(tumEsyalarKontrol[i][m+1])                         esyaEfsunTipi = kontrol.efsun(tonumber(tumEsyalarKontrol[i][m]))                         if esyaEfsunTipi == "BECERI_HASARI" then                             if esyaEfsunDeger > 30 then                                 editliOyuncular[k] = tonumber(tumEsyalarKontrol.owner_id[i])                                 editliEsyalar[k] = tonumber(tumEsyalarKontrol.id[i])                                 editliEsyaKodlari[k] = tonumber(tumEsyalarKontrol.vnum[i])                                 k = k + 1                                 l = 1                                 break                             end                         elseif esyaEfsunTipi == "ORTALAMA_ZARAR" then                             if esyaEfsunDeger > 60 then                                 editliOyuncular[k] = tonumber(tumEsyalarKontrol.owner_id[i])                                 editliEsyalar[k] = tonumber(tumEsyalarKontrol.id[i])                                 editliEsyaKodlari[k] = tonumber(tumEsyalarKontrol.vnum[i])                                 k = k + 1                                 l = 1                                 break                             end                         elseif esyaEfsunTipi == "B_H_KARSI_KOYMA" or esyaEfsunTipi == "O_Z_KARSI_KOYMA" then                             if esyaEfsunDeger > 0 then                                 editliOyuncular[k] = tonumber(tumEsyalarKontrol.owner_id[i])                                 editliEsyalar[k] = tonumber(tumEsyalarKontrol.id[i])                                 editliEsyaKodlari[k] = tonumber(tumEsyalarKontrol.vnum[i])                                 k = k + 1                                 l = 1                                 break                             end                         else                             efsunTipiDegerKontrol = mysql_query10("select * from player.item_attr where apply='"..esyaEfsunTipi.."' ")                             if tonumber(table.getn(efsunTipiDegerKontrol)) > 0 then                                 efsunTipiDeger = tonumber(efsunTipiDegerKontrol.lv5[1])                                 if esyaEfsunDeger > efsunTipiDeger then                                     editliOyuncular[k] = tonumber(tumEsyalarKontrol.owner_id[i])                                     editliEsyalar[k] = tonumber(tumEsyalarKontrol.id[i])                                     editliEsyaKodlari[k] = tonumber(tumEsyalarKontrol.vnum[i])                                     k = k +1                                     l = 1                                     break                                 end -- edit kontrol if endi                             else                                 editliOyuncular[k] = tonumber(tumEsyalarKontrol.owner_id[i])                                 editliEsyalar[k] = tonumber(tumEsyalarKontrol.id[i])                                 editliEsyaKodlari[k] = tonumber(tumEsyalarKontrol.vnum[i])                                 k = k + 1                                 l = 1                                 break                             end                         end                          oyuncuEfsunTipiDizi[b] = tonumber(tumEsyalarKontrol[i][m])                           b = b + 1                     end-- efsun tip kontrol endi                 end -- efsun sütun kontrol endi                 if l == 1 then                     l = 0                     break                 end                 oyuncuEfsunTipiDiziSay = tonumber(table.getn(oyuncuEfsunTipiDizi))                 if oyuncuEfsunTipiDiziSay > 0 then                     for p=1,oyuncuEfsunTipiDiziSay,1 do                         m=0                         oyuncuEsyaEfsunDiziTipY[p] = oyuncuEfsunTipiDizi[p]                         for c=1,oyuncuEfsunTipiDiziSay,1 do                             if oyuncuEsyaEfsunDiziTipY[p] == oyuncuEfsunTipiDizi[c] then                               m = m + 1                               if m != 1 and oyuncuEsyaEfsunDiziTipY[p] != 0 then                                     editliOyuncular[k] = tonumber(tumEsyalarKontrol.owner_id[i])                                     editliEsyalar[k] = tonumber(tumEsyalarKontrol.id[i])                                     editliEsyaKodlari[k] = tonumber(tumEsyalarKontrol.vnum[i])                                     k = k + 1                                      break                               end                             end                         end                         if m != 1 then                             break                         end                     end                 end             end -- eşya kontrol endi             editliOyuncularSay = tonumber(table.getn(editliOyuncular))             notice_all("Toplam edit sayısı: "..editliOyuncularSay)             if editliOyuncularSay == 0 then                 notice_all("Editli oyuncu bulunamadı.")             else                 for i=1,editliOyuncularSay,1 do                     oyuncuHesapKimlik = tonumber(editliOyuncular[i])                     oyuncuEsyaKimlik = tonumber(editliEsyalar[i])                     oyuncuEsyaKodu = tonumber(editliEsyaKodlari[i])                     oyuncuBilgiCek = mysql_query10("select * from player.player where account_id='"..oyuncuHesapKimlik.."' ")                     if tonumber(table.getn(oyuncuBilgiCek)) > 0 then                         oyuncuBilgiAd = tostring(oyuncuBilgiCek.name[1])                         oyuncununHesabiKapat = mysql_query10("UPDATE account.account SET status='BLOCK' where id='"..oyuncuHesapKimlik.."' ")                         oyuncununHesabiKapatD = mysql_query10("UPDATE account.account SET edit_ban='1' where id='"..oyuncuHesapKimlik.."' ")                         oyuncununEsyasiniSil = mysql_query10("DELETE FROM player.item where owner_id='"..oyuncuHesapKimlik.."' and id='"..oyuncuEsyaKimlik.."' ")                         notice_all(oyuncuBilgiAd.." isimli oyuncuda edit bulunmuş, hesabı kapatılmış ve eşyası silinmiştir. Eşya Kodu: "..oyuncuEsyaKodu)                     else                         oyuncuBilgiCek = mysql_query10("select * from player.player where id='"..oyuncuHesapKimlik.."' ")                         oyuncuHesap_id = tonumber(oyuncuBilgiCek.account_id[1])                         oyuncuBilgiAd = tostring(oyuncuBilgiCek.name[1])                         oyuncununHesabiKapat = mysql_query10("UPDATE account.account SET status='BLOCK' where id='"..oyuncuHesap_id.."' ")                         oyuncununHesabiKapatD = mysql_query10("UPDATE account.account SET edit_ban='1' where id='"..oyuncuHesap_id.."' ")                         oyuncununEsyasiniSil = mysql_query10("DELETE FROM player.item where owner_id='"..oyuncuHesapKimlik.."' and id='"..oyuncuEsyaKimlik.."' ")                         notice_all(oyuncuBilgiAd.." isimli oyuncuda edit bulunmuş, hesabı kapatılmış ve eşyası silinmiştir. Eşya Kodu: "..oyuncuEsyaKodu)                     end                 end             end         end                  when 40004.use with not pc.is_gm() begin             syschat("Sistem: Bu yüzük oyunculara kapalıdır. Sadece yöneticiler kullanabilir.")         end                  function efsun(efsun_kodu)             efsun = {                 --[0] = {"EfsunYok"}                 [1] = {"MAX_HP"},                 [2] = {"MAX_SP"},                 [3] = {"INT"},                 [4] = {"CON"},                 [5] = {"STR"},                 [6] = {"DEX"},                 [7] = {"ATT_SPEED"},                 [8] = {"MOV_SPEED"},                 [9] = {"CAST_SPEED"},                 [10] = {"HP_REGEN"},                 [11] = {"SP_REGEN"},                 [12] = {"POISON_PCT"},                 [13] = {"STUN_PCT"},                 [14] = {"SLOW_PCT"},                 [15] = {"CRITICAL_PCT"},                 [16] = {"PENETRATE_PCT"},                 [17] = {"ATTBONUS_HUMAN"},                 [18] = {"ATTBONUS_ANIMAL"},                 [19] = {"ATTBONUS_ORC"},                 [20] = {"ATTBONUS_MILGYO"},                 [21] = {"ATTBONUS_UNDEAD"},                 [22] = {"ATTBONUS_DEVIL"},                 [23] = {"STEAL_HP"},                 [24] = {"STEAL_SP"},                 [25] = {"MANA_BURN_PCT"},                 [26] = {" "},                 [27] = {"BLOCK"},                 [28] = {"DODGE"},                 [29] = {"RESIST_SWORD"},                 [30] = {"RESIST_TWOHAND"},                 [31] = {"RESIST_DAGGER"},                 [32] = {"RESIST_BELL"},                 [33] = {"RESIST_ELEC"},                 [34] = {"RESIST_BOW"},                 [35] = {"RESIST_FIRE"},                 [36] = {" "},                 [37] = {"RESIST_MAGIC"},                 [38] = {"RESIST_WIND"},                 [39] = {"REFLECT_MELEE"},                 [40] = {"CURSE_PCT"},                 [41] = {"POISON_REDUCE"},                 [42] = {"KILL_SP_RECOVER"},                 [43] = {"EXP_DOUBLE_BONUS"},                 [44] = {"GOLD_DOUBLE_BONUS"},                 [45] = {"ITEM_DROP_BONUS"},                 [46] = {"POTION_BONUS"},                 [47] = {"KILL_HP_RECOVER"},                 [48] = {"IMMUNE_STUN"},                 [49] = {"IMMUNE_SLOW"},                 [50] = {"IMMUNE_FALL"},                 [51] = {" "},                 [52] = {"BOW_DISTANCE"},                 [53] = {"ATT_GRADE_BONUS"},                 [54] = {"DEF_GRADE_BONUS"},                 [55] = {"MAGIC_ATT_GRADE"},                 [56] = {"MAGIC_DEF_GRADE"},                 [57] = {" "},                 [58] = {"MAX_STAMINA"},                 [59] = {"ATT_BONUS_TO_WARRIOR"},                 [60] = {"ATT_BONUS_TO_ASSASSIN"},                 [61] = {"ATT_BONUS_TO_SURA"},                 [62] = {"ATT_BONUS_TO_SHAMAN"},                 [63] = {"ATTBONUS_MONSTER"},                 [64] = {"ATT_GRADE_BONUS"},                 [65] = {"DEF_GRADE_BONUS"},                 [66] = {" "},                 [67] = {" "},                 [68] = {" "},                 [69] = {" "},                 [70] = {" "},                 [71] = {"BECERI_HASARI"},                 [72] = {"ORTALAMA_ZARAR"},                 [73] = {"B_H_KARSI_KOYMA"},                 [74] = {"O_Z_KARSI_KOYMA"},                 [75] = {" "},                  [76] = {" "},                 [77] = {" "},                 [78] = {"RESIST_WARRIOR"},                 [79] = {"RESIST_ASSASSIN"},                 [80] = {"RESIST_SURA"},                 [81] = {"RESIST_SHAMAN"}             }              return efsun[efsun_kodu][1]         end     end end



Metin2 - Edit Kontrol Sistemi [LUA]

Metin2 sunucularında gelişmiş görev sistemleri oluşturmak isteyen geliştiriciler için Lua tabanlı Edit Kontrol Sistemi, büyük önem taşımaktadır. Bu sistem, quest dosyalarında yapılan düzenlemelerin kontrol edilmesini ve istenmeyen değişikliklerin engellenmesini sağlar. Özellikle Metin2 geliştiricileri için önemli olan quest güvenliği, bu sistem sayesinde daha da artırılır.

Lua Quest Sistemine Genel Bakış

Metin2'de quest sistemleri, oyuncuların oyun içinde belirli görevleri yaparak ödüller kazanmasını sağlayan yapılardır. Bu görevler Lua dili ile yazılmaktadır. Lua, güçlü bir betik dili olup, Metin2 gibi oyun motorlarında sıklıkla kullanılmaktadır. Quest sistemleri, oyuncu etkileşimlerini, NPC davranışlarını, görev zincirlerini ve ödülleri yönetmek için idealdir.

Edit Kontrol Sistemi Nedir?

Edit Kontrol Sistemi, Metin2 sunucularında quest dosyalarında yapılan değişiklikleri izlemek ve bunları doğrulamak için kullanılan bir yöntemdir. Bu sistem sayesinde, sunucuya yüklenen quest dosyalarının orijinal yapıdan sapıp sapmadığı kontrol edilir. Eğer bir.quest dosyasında izinsiz bir değişiklik varsa, bu sistem tarafından tespit edilir ve sunucu bu questin çalışmasına izin vermeyebilir.

Neden Edit Kontrol Gereklidir?

Gelişmiş Metin2 sunucularında, özellikle özel sunucularda, quest sistemleri sunucu deneyimini büyük ölçüde etkiler. Ancak bazı geliştiriciler veya yetkililer, quest dosyalarında izinsiz değişiklikler yapabilir. Bu durum, sunucunun dengesini bozabilir ve güvenlik açıklarına neden olabilir. Edit Kontrol Sistemi, bu tür riskleri en aza indirger.

Edit Kontrolün Uygulanması

Edit Kontrol sistemi genellikle sunucu tarafında bir hash doğrulaması ile yapılır. Her.quest dosyası için benzersiz bir hash değeri oluşturulur. Sunucu başlatıldığında, bu değerler karşılaştırılır. Farklılık tespit edildiğinde, sistem uyarı verir veya questin çalışmasını engeller. Bu sayede.quest dosyalarının orijinalliği korunur.

Quest Hata Ayıklama ve Kontrol

Quest geliştirme sürecinde, özellikle büyük sistemlerde hatalar oluşabilir. Edit Kontrol Sistemi, hata ayıklama süreçlerini kolaylaştırır. Çünkü sistem, her.quest dosyasının orijinalliğini takip ettiği için, hatanın kaynağını daha hızlı bulmak mümkündür. Ayrıca, geliştiricilerin yanlışlıkla.quest dosyasında değişiklik yapması önlenir.

Edit Kontrol ile Güvenlik Artışı[/COORD]

Metin2 sunucularında güvenlik, her zaman önceliklidir. Edit Kontrol Sistemi, quest dosyalarının izinsiz değiştirilmesini engelleyerek, sunucu güvenliğini artırır. Bu sayede, kötü niyetli kullanıcılar tarafından yüklenen zararlı.quest dosyaları tespit edilir ve çalıştırılmaz.

Sonuç

Metin2 Edit Kontrol Sistemi, özellikle gelişmiş sunucularda önemli bir rol oynar. Quest sistemlerinin güvenli ve doğru çalışması için bu kontrol mekanizmasının kullanılması önerilir. Geliştiriciler, quest sistemlerini daha verimli ve güvenli hale getirmek için bu sistemi mutlaka değerlendirmelidir.


Metin2 - Edit Control System [LUA]

For developers who want to create advanced quest systems on Metin2 servers, the Lua-based Edit Control System holds great importance. This system allows monitoring of edits made to quest files and prevents unauthorized modifications. Especially for Metin2 developers, the security of quests is significantly enhanced by this system.

Overview of the Lua Quest System

In Metin2, quest systems are structures that allow players to earn rewards by completing certain tasks in the game. These tasks are written in the Lua language. Lua is a powerful scripting language frequently used in game engines like Metin2. Quest systems are ideal for managing player interactions, NPC behaviors, quest chains, and rewards.

What is the Edit Control System?

The Edit Control System is a method used to monitor and validate changes made to quest files on Metin2 servers. With this system, deviations from the original structure in quest files uploaded to the server can be detected. If there is an unauthorized change in a .quest file, it can be identified by this system and the server may prevent the quest from running.

Why is Edit Control Necessary?

On advanced Metin2 servers, especially private ones, quest systems greatly influence the gameplay experience. However, some developers or administrators might make unauthorized changes to quest files. Such actions can disrupt the balance of the server and lead to security vulnerabilities. The Edit Control System minimizes these risks.

Implementation of Edit Control

The Edit Control system typically operates via a hash validation on the server side. A unique hash value is generated for each .quest file. When the server starts up, these values are compared. If any discrepancies are detected, the system issues an alert or blocks the quest from running. In this way, the authenticity of .quest files is preserved.

Quest Debugging and Control

During the quest development process, especially in large systems, errors may occur. The Edit Control System simplifies debugging processes. Since the system tracks the originality of each .quest file, identifying the source of an error becomes faster. Moreover, it prevents developers from accidentally modifying .quest files.

Increased Security with Edit Control

Security is always a priority in Metin2 servers. The Edit Control System increases server security by preventing unauthorized alterations to quest files. Thus, malicious .quest files uploaded by bad actors are detected and not executed.

Conclusion

The Metin2 Edit Control System plays a vital role in advanced servers. It is recommended to use this control mechanism to ensure quest systems run securely and correctly. Developers should definitely consider this system to make their quest systems more efficient and secure.
 

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

Geri
Üst Alt