Matematik Oyunu 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 79

Admin

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

Bu kez farklı bir sistem ile karşınızdayım. Oyuncuların oyunda Matematik işlemleri yapacağı bir sistem paylaşacağım sizinle.



Peki tam olarak nedir Matematik Oyunu Sistemi?


Oyuncuların birer saat arayla oynayabilecekleri ve Matematik sorularını doğru cevapladıkları taktirde Matematik puanı kazanıp, Matematik Sistemi - Marketinden çeşitli eşyalar alabilecekleri bir sistemdir.


Sistem nasıl işler?


Oyuncu NPC'ye gider ve "Matematik Oyunu" seçeneğini seçer. Daha sonra önüne rastgele 2 sayı ve rastgele işlem gelir.(Sayılar 1 ile 10 arasında oluşturulur. Dileyen değiştirebilir bunu.) Daha sonra oyuncu bu Matematik işleminin cevabını kutucuğa girer ve doğru girerse gelen işleme göre Matematik puanı kazanır. Çarpma +5, çıkarma +3 ve toplama +1 puan ek olarak verir. 60 saniye süresi vardır.(Dileyen bu süreyi ayarlayabilir) 60 saniye sonunda kaç puan toplarsa o hesabına kayıt edilir. Eğer 60 saniyesi dolmadan yanlış cevap verirse oyun biter ve tekrardan oynayamaz. Oyuncu oyunu tekrar oynayabilmek için 1 saat beklemelidir.


Matematik Oyunu Sistemi - Resimler


DMZ5dl.jpg


mPBNkP.jpg


BMYbAD.jpg


Matematik Oyunu Sistemi - Dosyalar






PARA MİKTARI ARASINA .(NOKTA) KOYMA:

Şimdi para tutarlarının arasına .(nokta) koyma fonksiyonuna geldik. Bu fonksiyonu da eklemeniz gerekiyor. Eğer bu fonksiyonu eklemezseniz sistem çalışmaz. Ona göre kodlandı. Şimdi o fonksiyonu eklemeyi göstereceğim:

"questlib.lua" dosyasını açıyoruz ve en alta aşağıdaki kodları ekleyip kapatıyoruz. Reboot atmanıza gerek yok. Sistemleri ekledikten sonra /reload q yapmanız yeterlidir.


Fonksiyon kodu:

Kod:
function genel_veri(gelen_miktar)      gelen2 = tostring(gelen_miktar)      local gelen = gelen_miktar       local sayac = 10      local basamak = 1      local ilkhal = basamak      while true do          if gelen / sayac >= 1 then              basamak = basamak + 1              sayac = sayac * 10          else              break          end      end      t = {}      sonucText = ""      for i=1, string.len(gelen2) do          t[i]= (string.sub(gelen2,i,i))      end      for k , v in pairs(t) do--1324          if (basamak  == 9 or basamak == 6 or basamak == 3) and sonucText !=  "" then              sonucText = sonucText.."."              sonucText = sonucText..v          else              sonucText = sonucText..v          end          basamak = basamak - 1      end      return sonucText  end



Bu işlem de bittikten sonra "quest_functions" dosyasını açıyor ve en alta "genel_veri" fonksiyonunu ekliyoruz. Bura ile de işimiz bitti.


ÖNEMLİ BİLGİLENDİRME:


Matematik Sistemi - Market'e adetli ve adetsiz olmak üzere yeni eşyalar ekleyebilirsiniz. Şimdi onu nasıl ekleyeceğinizi göstereceğim.

İlk olarak şu kısmı buluyoruz:


Kod:
function esyalar(esya_bilgisi)              esya = {                  [1] = {"Hız İksiri",71050,50000,1},                  [2] = {"Saldırı İksiri",27112,10000,1},                  [3] = {"Eskrim Broşür",70031,1000000,0},                  [4] = {"Kutsama Kağıt",25040,500000,0},                  [5] = {"Büyülü Metal",25041,10000000,0}                  }                  return esya[esya_bilgisi]          end


Daha sonra ekleyeceğimiz yeni eşyayı şu şekilde ekliyoruz:

Kod:
[6] = {"Beyaz İnci",27992,500000,0}


İlk kısım satılacak eşyanın adıdır. Lütfen bu satılacak eşyaların son harfini " ı " yapmayalım. Aksi taktirde çalışmayacaktır sistem.
İkinci kısım satılacak eşyanın kodudur.
Üçüncü eşyanın kaç Onur Puanına satılacağıdır. Yani fiyatıdır.



Dördüncü kısım çok önemli, dikkatli okuyun lütfen:

Bu dördüncü kısma 1 yada 0 değeri vereceksiniz. Eğer 1 değeri verirseniz eşyanız adetli satılacak demektir. Yani oyuncu o eşyaya tıkladığında kaç adet almak istiyorsunuz diye uyarı ile karşılaşacaktır. Fakat 0 değeri verirseniz herhangi bir adet değeri sormayacak ve direkt eşyayı satın al butonu olacak ve o eşyadan sadece 1 adet alabilecektir. Eğer bu kısmı anlamadıysanız konu altına yazın biraz daha detaylı anlatayım.

Evet son haliyle yeni kodlar şu şekilde oluyor:



Kod:
function esyalar(esya_bilgisi)              esya = {                  [1] = {"Hız İksiri",71050,50000,1},                  [2] = {"Saldırı İksiri",27112,10000,1},                  [3] = {"Eskrim Broşür",70031,1000000,0},                  [4] = {"Kutsama Kağıt",25040,500000,0},                  [5] = {"Büyülü Metal",25041,10000000,0},                  [6] = {"Beyaz İnci",27992,500000,0}                  }                  return esya[esya_bilgisi]          end


Lütfen her eklediğiniz eşyadan sonra sonuna virgül koyun ve yeni eşyayı öyle ekleyin. Aksi taktirde sistem yine çalışmayacaktır. Tekrar söylüyorum anlamadığınız bir yer olursa konu altından sorun lütfen.


Oynanma süreleri için aşağıdaki kısmı bulup düzenlemeniz gerekiyor:

Kod:
tekrarOynamaSuresi = 3600 -- saniye cinsindendir. 3600 saniye 1 saate denk gelir. oynamaSuresi = 60 -- Oyunu ne kadar süre oynayacağını belirler. 60 saniye 1 dakikadır


İndirmeden kodları incelemek isteyenler için:

Kod:
quest matematik begin state start begin when 20355.chat."Matematik Oyunu" begin say_title("Bilgilendirme:") say("") say("Matematik soruları çözüm merkezine hoş geldin!") say("Sorular gelsin!") wait("") k=1 if pc.getqf("matematik_katildim") == 0 then pc.setqf("matematik_puanim",1) pc.setqf("matematik_katildim",1) end -- if pc.getqf("matematik_katildim") == 0  if pc.getqf("sure") - get_time() > 0 then say_title("Uyarı:") say("") say_reward("Saatte 1 defa oynayabilirsiniz! Süreniz dolmadı!") say("") return end tekrarOynamaSuresi = 3600 -- saniye cinsindendir. 3600 saniye 1 saate denk gelir. oynamaSuresi = 60 -- Oyunu ne kadar süre oynayacağını belirler. 60 saniye 1 dakikadır pc.setqf("matematikteyim",1) pc.setqf("matematikteyim_sure",get_time()+oynamaSuresi) pc.setqf("sure",get_time()+tekrarOynamaSuresi) while true do if pc.getqf("matematikteyim_sure") - get_time() > 0 then say_title("Bilgilendirme:") say("") gelen_islem = tostring(matematik.matematik_islem()) gelen_sayi_x = matematik.matematikSorular() gelen_sayi_y = matematik.matematikSorular() say(k..".soru: "..gelen_sayi_x.." "..gelen_islem.." "..gelen_sayi_y) if gelen_islem == "+" then islemi_yap = gelen_sayi_x + gelen_sayi_y pc.setqf("toplama",pc.getqf("toplama")+1) elseif gelen_islem == "-" then islemi_yap = gelen_sayi_x - gelen_sayi_y pc.setqf("cikarma",pc.getqf("cikarma")+1) elseif gelen_islem == "*" then islemi_yap = gelen_sayi_x * gelen_sayi_y pc.setqf("carpma",pc.getqf("carpma")+1) end -- if gelen_islem == "+" then endi say("") --say(islemi_yap) oyuncu_cevap = input() if tonumber(oyuncu_cevap) != islemi_yap then say_title("Uyarı:") say("") say_reward("Yanlış cevap verdiğiniz yarışma sona erdi.") say_reward("1 saat sonra tekrar oynayabilirsiniz!") say("") say_reward("Toplam Matematik Puanınız: "..pc.getqf("matematik_puanim")) say("") pc.setqf("toplama",0) pc.setqf("cikarma",0) pc.setqf("carpma",0) return else if gelen_islem == "+" then pc.setqf("matematik_puanim",(pc.getqf("matematik_puanim")+pc.getqf("toplama"))+1) elseif gelen_islem == "-" then pc.setqf("matematik_puanim",(pc.getqf("matematik_puanim")+pc.getqf("cikarma"))+3) elseif gelen_islem == "*" then pc.setqf("matematik_puanim",(pc.getqf("matematik_puanim")+pc.getqf("carpma"))+5) end -- if gelen_islem == "+" then  end -- if tonumber(oyuncu_cevap) != islemi_yap then endi k=k+1 else  say_title("Uyarı:") say("") say_reward("Süreniz doldu!") say("") say_reward("Toplam Matematik Puanınız: "..pc.getqf("matematik_puanim")) say("") pc.setqf("matematikteyim_sure",0) pc.setqf("toplama",0) pc.setqf("cikarma",0) pc.setqf("carpma",0) return end -- end -- while true do endi end -- when 20355.chat."Matematik Oyunu" begin endi when 20355.chat."Matematik Sistemi - Market" begin esyalar = {} oyuncuMatematikPuani = pc.getqf("matematik_puanim") kacAdetEsyaVar = 5 -- Buraya markette satılan eşya sayısını girin. for i=1,kacAdetEsyaVar,1 do esyaBilgileri = { [1] = matematik.esyalar(i) } esyalar[i] = esyaBilgileri[1][1] end esyalarSay = tonumber(table.getn(esyalar)) esyalar[esyalarSay+1] = "Kapat" esyaSec = select_table(esyalar) for m=1,esyalarSay,1 do if esyaSec == esyalarSay + 1 then return end if esyaSec == m then esyaBilgileri = { [1] = matematik.esyalar(m) } -------------------------------------- esyaKodu = esyaBilgileri[1][2] esyaAdetlimi = esyaBilgileri[1][4] esyaMatematikPuani = esyaBilgileri[1][3] -------------------------------------- say_title("[WINDOW_SIZE width;350|height;450]Eşya:") say_item_vnum(esyaKodu) say("") esyaAdetlimi = tonumber(esyaAdetlimi) if esyaAdetlimi == 1 then say_reward("Eşyadan kaç adet almak istiyorsunuz?") esyaAdet = matematik.esyaAdet_input() if esyaAdet < 0 or esyaAdet == 0 then say_title("Uyarı:") say("") say_reward("Geçersiz miktar girdiniz. Tekrar deneyin.") say("") else toplamTutar = esyaMatematikPuani * esyaAdet say_title("Bilgilendirme:") say("") say("Eşyadan "..esyaAdet.." adet almak istediniz.") say("") say_reward(esyaAdet.." adet eşyanın fiyatı "..genel_veri((esyaMatematikPuani*esyaAdet)).." Matematik Puani") say("") say_reward("Matematik Puanınız: "..genel_veri(oyuncuMatematikPuani)) say("") say_title("Alışveriş sonrası durum:") say("") if oyuncuMatematikPuani < toplamTutar then say_reward("Eşyayı satın alamazsınız. Matematik puanınız yetersiz.") say("") else say_reward("Kalacak Matematik Puanınız: "..genel_veri(oyuncuMatematikPuani-toplamTutar)) say("") esyaSecimYap = select("Satın Al","Kapat") say_title("Bilgilendirme") say("") say("Eşyayı almak üzeresiniz. Onaylıyor musunuz?") say("") esyaOnay = select("Evet","Hayır") if esyaOnay == 2 then return end if esyaSecimYap == 1 then pc.setqf("matematik_puanim",pc.getqf("matematik_puanim")-toplamTutar) pc.give_item2(esyaKodu,esyaAdet) say_title("Bilgilendirme:") say("") say("Eşya başarı ile alındı.") say("Matematik puanınız eksildi.") say("") say_reward("Kalan Matematik Puanınız: "..genel_veri(oyuncuMatematikPuani)) say("") elseif esyaSecimYap == 2 then return end end end -- girilen eşya adetinin kontrol endi elseif esyaAdetlimi == 0 then say("") say_reward("Eşya Matematik Puanı: "..genel_veri(esyaMatematikPuani)) say("") say_reward("Matematik Puanınız: "..genel_veri(oyuncuMatematikPuani)) say("") say_title("Alışveriş sonrası durum:") say("") if oyuncuMatematikPuani < esyaMatematikPuani then say_reward("Eşyayı satın alamazsınız. Matematik puanınız yetersiz.") say("") else say_reward("Kalacak Matematik Puanınız: "..genel_veri((oyuncuMatematikPuani-esyaMatematikPuani))) say("") esyaSecimYap = select("Satın Al","Kapat") if esyaSecimYap == 1 then say_title("Bilgilendirme") say("") say("Eşyayı almak üzeresiniz. Onaylıyor musunuz?") say("") esyaOnay = select("Evet","Hayır") if esyaOnay == 2 then return end pc.setqf("matematik_puanim",pc.getqf("matematik_puanim")-esyaMatematikPuani) pc.give_item2(esyaKodu,1) say_title("Bilgilendirme:") say("") say("Eşya başarı ile alındı.") say("Matematik puanınız eksildi.") say("") oyuncuMatematikPuani = pc.getqf("matematik_puanim") say_reward("Kalan Matematik Puanınız: "..genel_veri(oyuncuMatematikPuani)) say("") elseif esyaSecimYap == 2 then return end end end -- eşya adetlimi kontrol endi end -- seçilen eşyanın endi end -- eşyaları seçtiren forun endi end function matematikSorular() rastgele_sayi = math.random(1,10) return rastgele_sayi end -- function matematikSorular() endi function matematik_islem() islem = { [1] = {"+"}, [2] = {"-"}, [3] = {"*"} } islemSay = tonumber(table.getn(islem)) rastgele_islem = math.random(1,islemSay) return islem[rastgele_islem][1] end -- function matematik_islem() endi function esyalar(esya_bilgisi) esya = { [1] = {"Hız İksiri",71050,500,1}, [2] = {"Saldırı İksiri",27112,1000,1}, [3] = {"Eskrim Broşür",70031,5000,0}, [4] = {"Kutsama Kağıt",25040,500,0}, [5] = {"Büyülü Metal",25041,10000,0} } return esya[esya_bilgisi] end function esyaAdet_input (gelen_veri)              say (gelen_veri)              local n = nil              while n == nil do                  n = tonumber (input())                  if n != nil and n <= 200  then                      break                  end              say_reward("Sayi giriniz ve 200 den fazla miktar girmeyiniz!")              n = nil              end              return n          end end -- state start begin endi end -- quest matematik begin endi

Matematik Oyunu Sistemi[LUA], Metin2 sunucularında oyun içi etkileşimi artırmak ve oyunculara eğlenceli görevler sunmak amacıyla geliştirilmiş güçlü bir quest sistemidir. Bu sistem, LUA programlama dili kullanılarak yazılmıştır ve Metin2 geliştiricileri için esnek, optimize ve yüksek düzeyde özelleştirilebilir bir yapı sunar. Quest sistemleri, oyuncuların belirli görevleri tamamlayarak ödüller kazanmasını sağlar. Matematik tabanlı oyunlar ise özellikle strateji ve problem çözme becerilerini geliştirmeyi hedefler. İşte bu bağlamda Matematik Oyunu Sistemi[LUA], oyunculara hem eğlence hem de öğrenme fırsatı sunar.

Bu sistem, Metin2.quest geliştirme konusunda deneyimli geliştiriciler tarafından tasarlanmıştır. LUA script dilini temel alır ve quest dosyalarının kolayca düzenlenmesine olanak tanır. Quest sistemleri genellikle NPC'ler üzerinden başlatılır. Matematik oyunu sistemi, oyuncuların matematiksel sorulara doğru cevap vermesiyle ilerler. Örneğin, oyuncudan 5+7 işleminin sonucunu isteyen bir quest oluşturulabilir. Cevap doğruysa, oyuncuya özel itemler, 경험 puanı veya altın gibi ödüller verilir. Quest yazma süreci sırasında, trigger sistemleri, timer kontrolleri, flag yönetimi gibi önemli kavramlar kullanılır.

Sistem aynı zamanda daily quest olarak da ayarlanabilir. Günlük matematik görevleri sayesinde oyuncular her gün oyuna giriş yapmakta teşvik edilir. Bu, oyuncu sadakatini artırır ve sunucunuzun aktif kalmasını sağlar. Quest hata ayıklama (debug) işlemleri için gerekli araçlarla birlikte gelir. Hatalar kolayca tespit edilip düzeltilir. Ayrıca, quest chain yani zincirleme görevler sayesinde oyuncular, önceki görevleri başarıyla tamamladıkça yeni görevlere yönlendirilir. Bu durum, oyun içi hikaye akışını destekler ve daha derinlemesine bir deneyim sunar.

Metin2 quest sistemleri, NPC'lerle etkileşime dayalıdır. Matematik Oyunu Sistemi[LUA] ile NPC'ye özel matematik görevleri tanımlanabilir. Örneğin, 'Matematik Ustası' adlı bir NPC, oyuncuya rastgele matematik problemleri sorabilir. Doğru cevap verildiğinde, NPC oyuncuya özel item ödülleri verebilir. Bu tür sistemler, oyun içi sosyal etkileşimi artırır ve oyuncuların NPC'lere olan ilgisini canlı tutar. Quest edit işlemleri ile sistem, sunucunuzun mevcut oyun yapısına kolayca entegre edilebilir. Reward sistemleri özelleştirilebilir. Mob bazlı görevler de eklenebilir; örneğin, oyuncudan belirli bir sayıda düşman öldürmesi istenir ve ardından matematik testi çözülür.

Matematik Oyunu Sistemi[LUA], Metin2 sunucularında kullanılması için idealdir..quest geliştirme konusunda uzmanlaşmak isteyen geliştiriciler için örnek bir şablon niteliğindedir..quest dosyası doğrudan sunucuda aktif edilebilir ve test edilebilir..quest state ve flag yönetimi sayesinde, her oyuncunun quest ilerlemesi ayrı ayrı takip edilir..quest begin ve quest end komutları, görevin başlatılması ve bitirilmesi için kullanılır. Timer fonksiyonları ile belirli zaman dilimlerinde görevler kontrol edilir. Tüm bunlar, Metin2.quest sisteminin daha profesyonel ve kullanıcı dostu hale gelmesini sağlar. Bu sistem, Metin2Dev.quest ve MartySama.quest gibi gelişmiş sistemlerle uyumlu çalışır.


The Math Game System[LUA] is a powerful quest system developed to enhance in-game interaction and provide fun missions for players on Metin2 servers. This system is written using the LUA programming language and offers a flexible, optimized, and highly customizable structure for Metin2 developers. Quest systems allow players to complete certain tasks to earn rewards. Math-based games specifically aim to improve strategic thinking and problem-solving skills. In this context, the Math Game System[LUA] provides both entertainment and learning opportunities for players.

This system has been designed by experienced developers in Metin2 quest development. Based on the LUA scripting language, it allows easy editing of quest files. Quests are typically initiated through NPCs. The math game system progresses as players answer mathematical questions correctly. For example, a quest can be created where the player is asked for the result of 5+7. If the answer is correct, special items, experience points, or gold may be rewarded. During the quest writing process, important concepts such as trigger systems, timer controls, and flag management are used.

The system can also be configured as a daily quest. Daily math challenges encourage players to log into the game every day. This increases player loyalty and keeps your server active. It comes with tools necessary for debugging quest errors, allowing quick detection and correction of issues. Additionally, quest chains guide players to new quests after successfully completing previous ones. This supports the in-game story flow and provides a deeper experience.

Metin2 quest systems rely on interactions with NPCs. With the Math Game System[LUA], specific math challenges can be assigned to NPCs. For instance, an NPC named 'Math Master' could present random math problems to players. Upon giving the correct answer, the NPC could award exclusive items. Such systems increase in-game social interaction and maintain player interest in NPCs. Through quest editing processes, the system can be easily integrated into your server's existing game structure. Reward systems are customizable. Mob-based quests can also be added; for example, players might be required to kill a certain number of enemies before solving a math test.

The Math Game System[LUA] is ideal for use on Metin2 servers. It serves as a template for developers looking to specialize in quest development. The quest file can be activated and tested directly on the server. With quest state and flag management, each player's progress is tracked individually. Commands like quest begin and quest end are used to start and finish quests. Timer functions allow checks at specific intervals. All these features make the Metin2 quest system more professional and user-friendly. This system works compatibly with advanced systems like Metin2Dev.quest and MartySama.quest.
 

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

Benzer konular

Geri
Üst Alt