Merhabalar,
Bu konuda da turnuva sisteminde otomatik olarak eşleştirmenin kodunu paylaşacağım.
İşlemleri veritabanı üzerinden yapacağız. İlk olarak eğer sunucunuzda MySQL kodları çalışmıyor ise "questing.lua" nın en altına aşağıdaki fonksiyonu ekleyin:
MYSQL FONKSİYONU:
Şimdi "quest_functions" dosyamızı açalım ve "mysql_query10" var mı yok mu kontrol edelim. Eğer yoksa en alta "mysql_query10" kodunu ekleyelim. Burası ile de işimiz bitti.
Daha sonra kullanacağımız veritabanı dosyalarını indiriyoruz.
MySQL dosyalarını "player" veritabanına ekliyoruz. Herhangi bir işlem yapmanıza gerek yok. 4 tane kayıt ekli zaten daha önceden ekledim ben. Onlar üzerinden işlem yapacağım. (REBOOT atmanıza gerek yok eklemeyi yaptıktan sonra)
Şimdi lua(quest) dosyalarımızı oluşturalım.
1-) usr/game/share/locale/turkey/quest bölümüne "turnuva_sistemi.lua" adında bir lua dosyası açalım. Daha sonra dosyasının içine aşağıdaki kodları yazalım:
"turnuva_sistemi.lua" kodları:
Bunu kaydedip çıkıyoruz.
2-)Putty'e geliyoruz.
cd /usr/game/share/locale/turkey/quest yazıp enterliyoruz. Daha sonra şu komutu yazıyoruz.
./qc turnuva_sistemi.lua
Putty ile de işimiz bitti.
3-) Oyuna dönüyoruz ve bir GM karakter ile "/reload q" çekiyoruz.
4-) Daha sonra 20094 adlı NPC'yi çağırarak "Rakip Belirle" diyebilir daha sonra eşleşmeleri kontrol edebilirsiniz.
NOT: Turnuva Sistemi yapmak isteyen arkadaşlar rastgele rakip belirlemeyi bu mantık üzerinden yapabilirler. Biraz kafa yorarsanız mantığını anlarsınız.
NOT: Başka yerde paylaşacak olursanız lütfen kaynak belirtin.
NOT: Yapamayan, hata alan olursa bu konu altına yorum atarlarsa yardımcı olurum.
Metin2 Lobby olarak, Metin2 sunucularında gelişmiş sistemler geliştirmeye devam ediyoruz. Bu makalemizde, turnuvalarda sıklıkla kullanılan RASTGELE EŞLEŞTİRME KODU konusunu detaylıca ele alacağız. Özellikle Metin2 gibi MMORPG oyunlarında turnuva sistemleri, oyuncuların rekabet ortamında keyifli dakikalar geçirmesini sağlar. Ancak bu sistemlerin temelinde eşleştirme algoritmaları yatar. Bu yazıda, Metin2 turnuva sistemlerinde rastgele eşleştirme yapabilmeniz için Lua tabanlı örnek kodları ve bunların nasıl çalıştığını açıklayacağız.
Rastgele Eşleştirme Sistemi Nedir?
Rastgele eşleştirme, oyuncuların turnuva veya savaş gibi etkinliklerde rastgele bir rakiple karşı karşıya gelmesini sağlayan bir sistemdir. Bu sistem, adil oyun deneyimi sunmayı amaçlar. Metin2'de bu sistem genellikle quest dosyaları üzerinden yönetilir. Quest sistemi, Lua diline dayalıdır ve oldukça esnektir. Metin2 quest geliştirme, özellikle turnuva gibi özel etkinliklerde büyük kolaylık sağlar.
Örnek Rastgele Eşleştirme Kodu (Lua)
Aşağıda basit bir rastgele eşleştirme algoritmasının örnek Lua kodu verilmiştir. Bu kod, oyuncuları rastgele eşleştirerek turnuva listelerinde kullanabilirsiniz:
Kod Açıklaması:[/BR]
shuffle_table: Tabloyu karıştırır. Oyuncu listesini rastgele sıralar.
random_pair: Karıştırılmış listeden ikişerli gruplar oluşturur. Bu gruplar turnuva eşleşmeleridir.
Metin2 Quest Dosyası Nasıl Hazırlanır?[/BR]
Metin2.quest dosyaları, sunucu tarafında çalışan Lua scriptleridir. Bir turnuva sistemini aktif etmek için öncelikle bir quest dosyası oluşturmanız gerekir. Bu dosya, oyuncuların turnuvaya katılması, eşleşmelerin başlatılması ve sonuçların değerlendirilmesi için kullanılır. Metin2 quest lua sistemleri, oldukça güçlüdür. Ancak dikkatli kullanılmalıdır. Quest debug işlemleri sırasında hatalar mutlaka kontrol edilmelidir. Aksi takdirde sunucuda sorunlara yol açabilir.
Eşleştirme Sisteminin Avantajları[/BR]
- Her oyuncu farklı bir rakiple karşılaşır.
- Oyun deneyimi daha dinamik olur.
- Bot kullanımı engellenir.
- Turnuva sonucu öngörülemez olur.
Metin2lobby.com olarak, tüm quest geliştiricilerine kaynak kodları ve örnek sistemler sunmaya devam ediyoruz. Rastgele eşleştirme sistemi gibi gelişmiş yapılar, Metin2 quest dosyaları ile kolayca entegre edilebilir. Daha fazla script ve destek için sitemizi takip etmeyi unutmayın.
Metin2 Lobby as we continue to develop advanced systems on Metin2 servers. In this article, we will discuss in detail the topic of RANDOM MATCHING CODE frequently used in tournaments. Tournament systems in MMORPG games like Metin2 allow players to enjoy competitive gameplay. However, these systems rely heavily on matching algorithms. In this article, we will explain sample Lua-based codes and how they work for implementing random matching in Metin2 tournament systems.
What is a Random Matching System?
Random matching is a system that allows players to face off against a randomly selected opponent in events such as tournaments or battles. This system aims to provide a fair gaming experience. In Metin2, this system is usually managed through quest files. The quest system is based on the Lua language and highly flexible. Developing Metin2 quests provides great convenience especially in special events like tournaments.
Sample Random Matching Code (Lua)
Below is an example Lua code for a basic random matching algorithm. You can use this code to randomly pair players in tournament lists:
Code Explanation:[/BR]
shuffle_table: Shuffles the table. Randomly orders the player list.
random_pair: Forms pairs from the shuffled list. These pairs represent tournament matches.
How to Prepare a Metin2 Quest File?[/BR]
Metin2.quest files are Lua scripts that run server-side. To activate a tournament system, you must first create a quest file. This file is used to register players into the tournament, initiate matches, and evaluate results. Metin2 quest lua systems are very powerful but must be used carefully. During quest debug processes, errors must definitely be checked; otherwise, they may cause issues on the server.
Advantages of the Matching System[/BR]
- Each player faces a different opponent.
- The gameplay becomes more dynamic.
- Prevents bot usage.
- Tournament outcomes become unpredictable.
Metin2lobby.com continues to provide source codes and sample systems to all quest developers. Advanced structures like the random matching system can easily be integrated using Metin2 quest files. Follow our site for more scripts and support.
Bu konuda da turnuva sisteminde otomatik olarak eşleştirmenin kodunu paylaşacağım.
İşlemleri veritabanı üzerinden yapacağız. İlk olarak eğer sunucunuzda MySQL kodları çalışmıyor ise "questing.lua" nın en altına aşağıdaki fonksiyonu ekleyin:
MYSQL FONKSİYONU:
Kod:
mysql_query10 = function(query) if not pre then local rt = io.open('CONFIG','r'):read('*all') pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4') end math.randomseed(os.time()) local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{} --os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi) -- für MySQL51 os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- für MySQL55 for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi); for i = 2, table.getn(t) do table.foreach(t[i],function(a,b) out[i-1] = out[i-1] or {} out[i-1][a] = tostring(b) or b or 'NULL' out[t[1][a]] = out[t[1][a]] or {} out[t[1][a]][i-1] = tostring(b) or b or 'NULL' end) end return out end
Şimdi "quest_functions" dosyamızı açalım ve "mysql_query10" var mı yok mu kontrol edelim. Eğer yoksa en alta "mysql_query10" kodunu ekleyelim. Burası ile de işimiz bitti.
Daha sonra kullanacağımız veritabanı dosyalarını indiriyoruz.
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
MySQL dosyalarını "player" veritabanına ekliyoruz. Herhangi bir işlem yapmanıza gerek yok. 4 tane kayıt ekli zaten daha önceden ekledim ben. Onlar üzerinden işlem yapacağım. (REBOOT atmanıza gerek yok eklemeyi yaptıktan sonra)
Şimdi lua(quest) dosyalarımızı oluşturalım.
1-) usr/game/share/locale/turkey/quest bölümüne "turnuva_sistemi.lua" adında bir lua dosyası açalım. Daha sonra dosyasının içine aşağıdaki kodları yazalım:
"turnuva_sistemi.lua" kodları:
Kod:
quest turnuva begin state start begin when 20378.chat."Rakip Belirle" with pc.is_gm() begin local v_c = mysql_query10("select * from player.turnuva_basvurular") local s_s = tonumber(table.getn(v_c)) if math.mod(s_s,2) == 1 then s_s = s_s-1 end --if math.mod endi local tut = s_s/2 for i = 1,tut,1 do local uretilen = 0 local uretilen2 = 0 while uretilen == uretilen2 do uretilen = math.random(1,s_s) uretilen2 = math.random(1,s_s) end--while end local v_c = mysql_query10("select * from player.turnuva_basvurular") local isim = v_c.basvuran_isim[uretilen] local isim2 = v_c.basvuran_isim[uretilen2] local k_id = v_c.basvuran_id[uretilen] local k_id2 = v_c.basvuran_id[uretilen2] local b_seviye = v_c.basvuran_seviye[uretilen] local r_seviye = v_c.basvuran_seviye[uretilen2] local b_itibar_puani = v_c.basvuran_itibar_puani[uretilen] local r_itibar_puani = v_c.basvuran_itibar_puani[uretilen2] local b_onur_puani = v_c.basvuran_onur_puani[uretilen] local r_onur_puani = v_c.basvuran_onur_puani[uretilen2] local b_oyun_suresi = v_c.basvuran_oyun_suresi[uretilen] local r_oyun_suresi = v_c.basvuran_oyun_suresi[uretilen2] local b_enson_giris = v_c.basvuran_enson_giris[uretilen] local r_enson_giris = v_c.basvuran_enson_giris[uretilen2] mysql_query10("insert into eslesmeler(b_isim,r_isim,b_id,r_id,b_seviye,r_seviye,b_itibar_puani,r_itibar_puani,b_onur_puani,r_onur_puani,b_oyun_suresi,r_oyun_suresi,b_enson_giris,r_enson_giris)values('"..v_c.basvuran_isim[uretilen].."','"..v_c.basvuran_isim[uretilen2].."','"..k_id.."','"..k_id2.."','"..b_seviye.."','"..r_seviye.."','"..b_itibar_puani.."','"..r_itibar_puani.."','"..b_onur_puani.."','"..r_onur_puani.."','"..b_oyun_suresi.."','"..r_oyun_suresi.."','"..b_enson_giris.."','"..r_enson_giris.."')") mysql_query10("delete from player.turnuva_basvurular where basvuran_isim='"..isim.."' ") mysql_query10("delete from player.turnuva_basvurular where basvuran_isim='"..isim2.."' ") s_s = s_s - 2 end--for endi say_title("Bilgilendirme:") say("") say("Rakipler rastgele belirlendi.") end--when endi when 20094.chat."Eşleşmeler" begin local fikstur = mysql_query10("select * from player.eslesmeler") local fikstur_say = tonumber(table.getn(fikstur)) if fikstur_say < 1 then say_title("Uyarı:") say("") say_reward("Eşleşmeler henüz belli değil.") say("") return end local b_isim_dizi = {} local r_isim_dizi = {} for i=1,fikstur_say,1 do b_isim_dizi[i] = fikstur.b_isim[i] r_isim_dizi[i] = fikstur.r_isim[i] end local turnuva_eslesme = {} for z=1,fikstur_say,1 do turnuva_eslesme[z] = b_isim_dizi[z].." vs "..r_isim_dizi[z] end turnuva_eslesme[fikstur_say + 1] = "Kapat" secim = select_table(turnuva_eslesme) for k = 1, fikstur_say, 1 do if secim == fikstur_say + 1 then return end end end end end
Bunu kaydedip çıkıyoruz.
2-)Putty'e geliyoruz.
cd /usr/game/share/locale/turkey/quest yazıp enterliyoruz. Daha sonra şu komutu yazıyoruz.
./qc turnuva_sistemi.lua
Putty ile de işimiz bitti.
3-) Oyuna dönüyoruz ve bir GM karakter ile "/reload q" çekiyoruz.
4-) Daha sonra 20094 adlı NPC'yi çağırarak "Rakip Belirle" diyebilir daha sonra eşleşmeleri kontrol edebilirsiniz.
NOT: Turnuva Sistemi yapmak isteyen arkadaşlar rastgele rakip belirlemeyi bu mantık üzerinden yapabilirler. Biraz kafa yorarsanız mantığını anlarsınız.
NOT: Başka yerde paylaşacak olursanız lütfen kaynak belirtin.
NOT: Yapamayan, hata alan olursa bu konu altına yorum atarlarsa yardımcı olurum.
Metin2 Lobby olarak, Metin2 sunucularında gelişmiş sistemler geliştirmeye devam ediyoruz. Bu makalemizde, turnuvalarda sıklıkla kullanılan RASTGELE EŞLEŞTİRME KODU konusunu detaylıca ele alacağız. Özellikle Metin2 gibi MMORPG oyunlarında turnuva sistemleri, oyuncuların rekabet ortamında keyifli dakikalar geçirmesini sağlar. Ancak bu sistemlerin temelinde eşleştirme algoritmaları yatar. Bu yazıda, Metin2 turnuva sistemlerinde rastgele eşleştirme yapabilmeniz için Lua tabanlı örnek kodları ve bunların nasıl çalıştığını açıklayacağız.
Rastgele Eşleştirme Sistemi Nedir?
Rastgele eşleştirme, oyuncuların turnuva veya savaş gibi etkinliklerde rastgele bir rakiple karşı karşıya gelmesini sağlayan bir sistemdir. Bu sistem, adil oyun deneyimi sunmayı amaçlar. Metin2'de bu sistem genellikle quest dosyaları üzerinden yönetilir. Quest sistemi, Lua diline dayalıdır ve oldukça esnektir. Metin2 quest geliştirme, özellikle turnuva gibi özel etkinliklerde büyük kolaylık sağlar.
Örnek Rastgele Eşleştirme Kodu (Lua)
Aşağıda basit bir rastgele eşleştirme algoritmasının örnek Lua kodu verilmiştir. Bu kod, oyuncuları rastgele eşleştirerek turnuva listelerinde kullanabilirsiniz:
Kod:
[BR][/BR]function shuffle_table(t)[BR][/BR] local n = #t[BR][/BR] while n > 2 do[BR][/BR] local k = math.random(n)[BR][/BR] t[n], t[k] = t[k], t[n][BR][/BR] n = n - 1[BR][/BR] end[BR][/BR] return t[BR][/BR]end[BR][/BR][BR][/BR]function random_pair(players)[BR][/BR] local shuffled = shuffle_table(players)[BR][/BR] local pairs = {}[BR][/BR] for i = 1, #shuffled, 2 do[BR][/BR] if shuffled[i+1] then[BR][/BR] table.insert(pairs, {shuffled[i], shuffled[i+1]})[BR][/BR] else[BR][/BR] print('Oyuncu sayısı tek, biri bye geçer.') -- Oyuncu sayısının tek olması durumunda[BR][/BR] end[BR][/BR] end[BR][/BR] return pairs[BR][/BR]end[BR][/BR]
Kod Açıklaması:[/BR]
shuffle_table: Tabloyu karıştırır. Oyuncu listesini rastgele sıralar.
random_pair: Karıştırılmış listeden ikişerli gruplar oluşturur. Bu gruplar turnuva eşleşmeleridir.
Metin2 Quest Dosyası Nasıl Hazırlanır?[/BR]
Metin2.quest dosyaları, sunucu tarafında çalışan Lua scriptleridir. Bir turnuva sistemini aktif etmek için öncelikle bir quest dosyası oluşturmanız gerekir. Bu dosya, oyuncuların turnuvaya katılması, eşleşmelerin başlatılması ve sonuçların değerlendirilmesi için kullanılır. Metin2 quest lua sistemleri, oldukça güçlüdür. Ancak dikkatli kullanılmalıdır. Quest debug işlemleri sırasında hatalar mutlaka kontrol edilmelidir. Aksi takdirde sunucuda sorunlara yol açabilir.
Eşleştirme Sisteminin Avantajları[/BR]
- Her oyuncu farklı bir rakiple karşılaşır.
- Oyun deneyimi daha dinamik olur.
- Bot kullanımı engellenir.
- Turnuva sonucu öngörülemez olur.
Metin2lobby.com olarak, tüm quest geliştiricilerine kaynak kodları ve örnek sistemler sunmaya devam ediyoruz. Rastgele eşleştirme sistemi gibi gelişmiş yapılar, Metin2 quest dosyaları ile kolayca entegre edilebilir. Daha fazla script ve destek için sitemizi takip etmeyi unutmayın.
Metin2 Lobby as we continue to develop advanced systems on Metin2 servers. In this article, we will discuss in detail the topic of RANDOM MATCHING CODE frequently used in tournaments. Tournament systems in MMORPG games like Metin2 allow players to enjoy competitive gameplay. However, these systems rely heavily on matching algorithms. In this article, we will explain sample Lua-based codes and how they work for implementing random matching in Metin2 tournament systems.
What is a Random Matching System?
Random matching is a system that allows players to face off against a randomly selected opponent in events such as tournaments or battles. This system aims to provide a fair gaming experience. In Metin2, this system is usually managed through quest files. The quest system is based on the Lua language and highly flexible. Developing Metin2 quests provides great convenience especially in special events like tournaments.
Sample Random Matching Code (Lua)
Below is an example Lua code for a basic random matching algorithm. You can use this code to randomly pair players in tournament lists:
Kod:
[BR][/BR]function shuffle_table(t)[BR][/BR] local n = #t[BR][/BR] while n > 2 do[BR][/BR] local k = math.random(n)[BR][/BR] t[n], t[k] = t[k], t[n][BR][/BR] n = n - 1[BR][/BR] end[BR][/BR] return t[BR][/BR]end[BR][/BR][BR][/BR]function random_pair(players)[BR][/BR] local shuffled = shuffle_table(players)[BR][/BR] local pairs = {}[BR][/BR] for i = 1, #shuffled, 2 do[BR][/BR] if shuffled[i+1] then[BR][/BR] table.insert(pairs, {shuffled[i], shuffled[i+1]})[BR][/BR] else[BR][/BR] print('Player count is odd, one gets a bye.') -- If player count is odd[BR][/BR] end[BR][/BR] end[BR][/BR] return pairs[BR][/BR]end[BR][/BR]
Code Explanation:[/BR]
shuffle_table: Shuffles the table. Randomly orders the player list.
random_pair: Forms pairs from the shuffled list. These pairs represent tournament matches.
How to Prepare a Metin2 Quest File?[/BR]
Metin2.quest files are Lua scripts that run server-side. To activate a tournament system, you must first create a quest file. This file is used to register players into the tournament, initiate matches, and evaluate results. Metin2 quest lua systems are very powerful but must be used carefully. During quest debug processes, errors must definitely be checked; otherwise, they may cause issues on the server.
Advantages of the Matching System[/BR]
- Each player faces a different opponent.
- The gameplay becomes more dynamic.
- Prevents bot usage.
- Tournament outcomes become unpredictable.
Metin2lobby.com continues to provide source codes and sample systems to all quest developers. Advanced structures like the random matching system can easily be integrated using Metin2 quest files. Follow our site for more scripts and support.
