Otomatik Loto 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 109

Admin

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

Şimdi sizinle Loto Sistemini paylaşacağız. Öncelikle kullanımdan bahsedelim daha sonra kurulumuna geçelim.


Kullanımı:

Loto Sistemi, bir defaya mahsus yönetici tarafından başlatılır. Daha sonra sistem kendisini haftada bir tekrar eder. Oynayış şekli de son derece basittir: Loto Sistemi başladıktan sonra kayıtlar açılır. Kayıt süresi 1 saattir. 1 saat sonra lotoya kayıtlar kapanır. Kayıtlar kapandıktan 1 gün sonra sonuçlar açıklanır. Sonuçlar açıklandığında kazanan numara genelden duyurulur ve sonuçları kontrol edip kazanıp kazanmadığınızı kontrol etmek için 1 gününüz vardır. Daha sonra ödül alımları da kapanır. Lotoda gireceğiniz sayı 1000-5000 arasında bir sayı olmalıdır.(1000 ve 5000 de dahil ). Eğer o hafta Lotoyu kimse kazanamazsa, Loto katılan kişi sayısı ile 1.000.000'nu çarpar ve haftaya devreder. Haftaya lotoyu kazanan olursa devredilen para ile o hafta katılanların para miktarını toplar ve kişiye verir. Sistemde herhangi bir açık(bug) yoktur.


NOT: 1000-5000 arası sayı girmezseniz lotoyu hiçbir zaman kazanamazsınız. Çünkü loto sistemi 1000 ile 5000 arası sayı atar.( Oyuncuların sadece 1000-5000 arası sayı girmelerini zorunlu yapan bir fonksiyon yazmıştık fakat yedeğini alamadan silmiştik unutup. O nedenden tekrardan kodlamadık. Eğer bu sıkıntı çıkaracak olursa tekrardan kodlayabiliriz. İhtiyaca göre değişir.)



Kurulumu:

Evet şimdi nasıl kullanılacağını göstereceğim:

1-) usr/game/share/locale/turkey/quest bölümüne "lotosistemi.lua" adinda bir lua dosyası açalım. Daha sonra içine aşağıdaki kodları yazalım:


LOTO SİSTEMİ LUA KODU:
Kod:
quest imploto begin state start begin --------------------------------------------- when letter with pc.is_gm() begin send_letter("GM: Loto Sistemi") end when loto_zmndongux.server_timer begin game.set_event_flag("loto",1) notice_all("Etkinlik: Loto aktif olmuştur.") notice_all("Etkinlik: Loto kayıtları 1 saat sonra kapanacaktır.") notice_all("Etkinlik: Haftada 1 kere Loto oynayabileceğinizi unutmayın! İyi şanlar.") game.set_event_flag("imploto_sure",get_time()) local loto2 = game.get_event_flag("loto_2") game.set_event_flag("loto_2",loto2 + 1) server_timer("loto_kapat",3600,get_server_timer_arg()) server_timer("loto_kontrol",3601,get_server_timer_arg()) end --------------------------------------------- when info or button with pc.is_gm() begin local event_sec = select("Loto","Kapat") if event_sec == 1 then  local event_sec_loto = select("Ac","Durdur","Kapat") if event_sec_loto == 1 then game.set_event_flag("loto",1) game.set_event_flag("loto_baslangic_kontrol",1) notice_all("Etkinlik: Loto aktif olmuştur.") notice_all("Etkinlik: Loto kayıtları 1 saat sonra kapanacaktır.") notice_all("Etkinlik: Haftada 1 kere Loto oynayabileceğinizi unutmayın! İyi şanlar.") game.set_event_flag("imploto_sure",get_time()) local loto2 = game.get_event_flag("loto_2") game.set_event_flag("loto_2",loto2 + 1) server_loop_timer("loto_zmndongux",604800,get_server_timer_arg()) server_timer("loto_kapat",3600,get_server_timer_arg()) server_timer("loto_kontrol",3601,get_server_timer_arg()) send_letter("GM: Imp-Etkinlik") elseif event_sec_loto == 2 then game.set_event_flag("loto_baslangic_kontrol",0) clear_server_timer("loto_zmndongux",get_server_timer_arg()) send_letter("GM: Imp-Etkinlik") end end end --------------------------------------------- when loto_kapat.server_timer begin game.set_event_flag("loto",0) end --------------------------------------------- when loto_kontrol.server_timer begin if game.get_event_flag("loto") == 0 then notice_all("Loto kayıtları kapanmıştır.") notice_all("Loto sonuçları 1 gün sonra açıklanacaktır.") server_timer("sonuc",86400,get_server_timer_arg()) end end when sonuc.server_timer begin local lsonuc = math.random(1000,5000) game.set_event_flag("loto_sonuc",lsonuc) server_timer("sonuc1",5,get_server_timer_arg()) end when sonuc1.server_timer begin notice_all("Loto sonuçları açıklandı!") notice_all("Lotuyu kazanan numara: "..game.get_event_flag("loto_sonuc")) notice_all("Ödülünüzü 1 gün içerisinde almalısınız.") notice_all("Bir dahaki Loto'da görüşmek üzere!") game.set_event_flag("loto_sonucc",1) server_timer("sonuc2",86400,get_server_timer_arg()) end when sonuc2.server_timer begin game.set_event_flag("loto_sonucc",0) game.set_event_flag("loto_sonuc",0) local loto_22 = game.get_event_flag("loto_2") game.set_event_flag("loto_2", loto_22 + 1) if game.get_event_flag("yeni_bir_kontrol") == 1 then game.set_event_flag("yeni_devir_para",0) end if game.get_event_flag("katilim") > 0 then  -- and game.get_event_flag("yeni_devir_para_kontrol") == 1   if game.get_event_flag("para_devir") == 1 then notice_all("Loto ödül alımı kapandı.") notice_all("Haftaya tekrardan Loto oynayabilirsiniz.") notice_all("Loto kazanıldığı için para devredilmedi.") game.set_event_flag("para_devir",0) game.set_event_flag("katilim",0) game.set_event_flag("yeni_bir_kontrol",0) else notice_all("Loto ödül alımı kapandı.") notice_all("Haftaya tekrardan Loto oynayabilirsiniz.") notice_all("Lotoyu kazanan olmadığı için devredildi!") local devir_para = game.get_event_flag("katilim") game.set_event_flag("katilim",0) local devir_para1 = devir_para * 1000000 local yeni_devir_para1 = game.get_event_flag("yeni_devir_para") --0  game.set_event_flag("yeni_devir_para",devir_para1 + yeni_devir_para1) game.set_event_flag("para_devir",0) game.set_event_flag("yeni_bir_kontrol",0) --notice_all("Devredilen para: "..game.get_event_flag("yeni_devir_para").." milyon.") end else  notice_all("Loto ödül alımı kapandı.") notice_all("Haftaya tekrardan Loto oynayabilirsiniz.") notice_all("Lotoya katılım olmadığı için para olduğu gibi devredildi!") game.set_event_flag("katilim",0) game.set_event_flag("yeni_bir_kontrol",0) end game.set_event_flag("yeni_bir_kontrol",0) end when 20095.chat."Loto Sonuclari" with game.get_event_flag("loto_sonucc") == 1  begin local kisi_loto = pc.getqf("loto_y") local oyun_loto = game.get_event_flag("loto_sonuc") say_title("Bilgi:") say("") say("Hoş geldin "..pc.get_name()) say("Buradan Loto sonuçlarını öğrenebilirsin.") say("Kazanıp Kazanmadığını görmek için Devam Et butonuna tıkla.") wait() if pc.getqf("loto_yeni_1") == game.get_event_flag("loto_2") then if kisi_loto == oyun_loto then if game.get_event_flag("loto_sonucc") == 1 then if pc.getqf("kazanan_kontrol") == 0 then say_title("Bilgi:") say("") say("Merhaba, "..pc.get_name()) say("Loto kazanan numara: "..oyun_loto) say("Sizin numaranız: "..kisi_loto) say("") say_reward("Tebrikler! Lotoyu kazandınız!") say_reward("Loto'ya katılan kişi sayısı: "..game.get_event_flag("katilim")) local kazanilan_para = game.get_event_flag("katilim") local kazanilan_para1 = (kazanilan_para * 1000000) + game.get_event_flag("yeni_devir_para") local kazanilan_para2 = kazanilan_para * 1000000 local t_devir = game.get_event_flag("yeni_devir_para") say_reward("Toplam devir edilen para: "..t_devir) say_reward("Lotodan kazanılan para: "..kazanilan_para2) say_reward("Kazanılan toplam para: "..kazanilan_para1) say_reward("Paranızı veriyorum, iyi günlerde harcayın!") pc.change_money(kazanilan_para1) game.set_event_flag("para_devir",1) pc.setqf("loto_y",0) pc.setqf("kazanan_kontrol",1) game.set_event_flag("yeni_bir_kontrol",1) --game.set_event_flag("yeni_devir_para_kontrol",1) wait() else say_title("Bilgi:") say("") say_reward("Merhaba, "..pc.get_name()) say_reward("Sonuçları zaten kontrol ettin, tekrar edemezsin.") pc.setqf("loto_y",0) pc.setqf("kazanan_kontrol",1) end else say_title("Bilgi:") say("") say_reward("Merhaba, "..pc.get_name()) say_reward("Maalesef sonuçları kontrol kapandı.") pc.setqf("loto_y",0) pc.setqf("kazanan_kontrol",1) end else  if game.get_event_flag("loto_sonucc") == 1 then if pc.getqf("kazanan_kontrol") == 0 then say_title("Bilgi:") say("") say("Merhaba, "..pc.get_name()) say("Loto kazanan numara: "..oyun_loto) say("Sizin numaranız: "..kisi_loto) say("") say_reward("Maalesef Loto'yu kazanamadınız.") pc.setqf("loto_y",0) pc.setqf("kazanan_kontrol",1) --game.set_event_flag("yeni_devir_para_kontrol",1) --game.set_event_flag("para_devir",1) else say_title("Bilgi:") say("") say_reward("Merhaba, "..pc.get_name()) say_reward("Sonuçları zaten kontrol ettin, tekrar edemezsin.") pc.setqf("loto_y",0) pc.setqf("kazanan_kontrol",1) end else say_title("Bilgi:") say("") say_reward("Merhaba, "..pc.get_name()) say_reward("Maalesef sonuçları kontrol kapandı.") pc.setqf("loto_y",0) pc.setqf("kazanan_kontrol",1) end end else say_title("Uyarı:") say("") say_reward("Lotoya katılmadığınız için sonuçları kontrol edemezsiniz!") say("") end end when 20095.chat."Loto Oyna" begin if game.get_event_flag("loto_baslangic_kontrol") == 0 then say_title("Bilgi:") say("") say("Loto daha önce hiç aktif edilmedi.") say("Loto aktif edildiğinde, her hafta kendini yenileyecektir.") say("Şuanda Loto sistemi kapalıdır.") say("") else if pc.get_level() > 59 then  if game.get_event_flag("loto") == 0 then  say_title("Uyarı:") say("") say_reward("Loto haftada bir oynanır!") say_reward("Şuan da Loto oynayamazsın.") say_reward("1 hafta geçene kadar beklemen gerekiyor.") say_reward("Süre dolunca tekrar gel!") say("") say_reward("Numaranız: "..pc.getqf("loto_y")) say("") say_title("Kalan Süre:") local suremmis = 604800-(get_time()-game.get_event_flag("imploto_sure")) local loto_gnsure = 0  local loto_stsure = 0 local loto_dksure = 0 while suremmis > 86400 do loto_gnsure = loto_gnsure+1 suremmis=suremmis-86400 end while suremmis > 3600 do loto_stsure = loto_stsure+1 suremmis=suremmis-3600 end while suremmis > 60 do  loto_dksure=loto_dksure+1 suremmis=suremmis-60 end say_reward(loto_gnsure.." Gün "..loto_stsure.." Saat "..loto_dksure.." Dakika Kaldı.") say_reward("Devredilen toplam para: "..game.get_event_flag("yeni_devir_para")) say("") elseif game.get_event_flag("loto") == 1 then say_title("Bilgi:") say("") say("Demek Loto oynamak istiyorsun? Güzel.") say("Fakat Loto oynamadan önce bilmen gereken bazı şeyler var.") say("Loto oynayabilmen için 1.000.000(1m) yang ödemen gerekli.") say("Loto oynayan her oyuncu bu parayı öder.") say("Eğer kazanan olursa tüm paralar o oyuncuya verilir.") say("Kimse kazanamazsa, para bir sonraki haftaya devreder.") say("") say_reward("Hâlâ oynamak istiyor musun?") local o_sec = select("Evet","Hayır") if o_sec == 1 then -- seçimin ifi if pc.get_money() < 100000 then  -- yang kontrol ifi say_title("Uyarı:") say("") say_reward("Üzgünüm, Loto oynayabilmen için 100.000(100k) yanga ihtiyacın var.") else  if pc.getqf("loto_k") == game.get_event_flag("loto_2") then  say_title("Uyarı:") say("") say_reward("Zaten Lotu oynamışsın.") say_reward("Bir sonrakine kadar beklemek zorundasın.") else say_title("Bilgi:") say("") say("Peki, aşağıdaki kutuya 4 haneli bir sayı gir.") say("Girdiğin değer harf içermemeli ve 4 haneli olmalı.") say("") local loto_sayi = input_number() if game.get_event_flag("loto") == 0 then say_title("Uyarı:") say("") say_reward("Loto haftada bir oynanır!") say_reward("Şuan da Loto oynayamazsın.") say_reward("1 hafta geçene kadar beklemen gerekiyor.") say_reward("Süre dolunca tekrar gel!") say_title("Bilgi:") --say_reward("Loto'ya katılan kişi sayısı: "..game.get_event_flag("katilim")) -- hatalı kısım. say("") say_reward("Numaranız: "..pc.getqf("loto_y")) say("") say_title("Kalan Süre:") local suremmis = 604800-(get_time()-game.get_event_flag("imploto_sure")) local loto_gnsure = 0  local loto_stsure = 0 local loto_dksure = 0 while suremmis > 86400 do loto_gnsure = loto_gnsure+1 suremmis=suremmis-86400 end while suremmis > 3600 do loto_stsure = loto_stsure+1 suremmis=suremmis-3600 end while suremmis > 60 do  loto_dksure=loto_dksure+1 suremmis=suremmis-60 end say_reward(loto_gnsure.." Gün "..loto_stsure.." Saat "..loto_dksure.." Dakika Kaldı.") say("Devredilen toplam para:"..game.get_event_flag("yeni_devir_para")) say("") else say("") pc.setqf("loto_y",loto_sayi)                                     local katilim = game.get_event_flag("katilim")                                      game.set_event_flag("katilim", katilim +1) pc.change_money(-1000000) say_title("Bilgi:") say("Girdiğin  "..loto_sayi.."  sayısı başarı ile kayıt edildi!") say("Hesabından 1m(yang) alındı!") say("Sonuçlar 1 gün sonra açıklanacak.") say("O zamana kadar hoşçakal.") say("") local loto_yenii = game.get_event_flag("loto_2") pc.setqf("loto_yeni_1",loto_yenii) pc.setqf("kazanan_kontrol",0) local loto_veri_yeni = game.get_event_flag("loto_2") pc.setqf("loto_k",loto_veri_yeni) end -- bugu engelleyecek ifin endi end -- getqf nin endi end -- yang kontrol ifinin bitişi end -- seçim ifinin bitişi end -- loto eventinin aktif olup olmadığını kontrol eden ifin endi else say_title("Uyarı:") say("") say_reward("Loto oynayabilmek için en az 60 seviye olmanız gerekiyor!") say("") end-- loto oynamak için gerekli olan seviyeyi kontrol eden ifin endi   end end -- when in endi end -- ilk state nin endi end-- questin endi

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 lotosistemi.lua

Putty ile de işimiz bitti.
3-) Oyuna dönüyoruz ve bir GM karakter ile "/reload q" çekiyoruz.
4-) Reload q çektikten sonra karakter atmanız gerekmekte. Sol tarafa görev şeklinde "GM: Loto Sistemi" gelecek. Oradan 1 defaya mahsus başlatacaksınız. Tekrardan bir şey yapmanıza gerek yok.


Oyun içi görüntüler:

vEXnA6.jpg


1yVMap.jpg


7k7MWW.jpg


LaZ18G.jpg


rQ6ZXN.jpg


PqnP2N.jpg


qYjPQD.jpg


QAvZ83.jpg


b5kJZd.jpg


Amn58p.jpg


NOT: Yapamayan arkadaşlar olurlarsa yardımcı olmaya çalışırım. Anlamadığınız, takıldığınız bir yer varsa sorabilirsiniz.

NOT: Lütfen başka yerde paylaşacaklar kaynak belirtirlerse sevinirim.

NOT: Zamanla diğer sistemleri de paylaşacağım.
Otomatik Loto Sistemi[LUA] Nedir?

Metin2 sunucularında oyun deneyimini zenginleştirmek ve oyuncuların daha fazla etkileşimde bulunmasını sağlamak için geliştirilen sistemlerden biri de Otomatik Loto Sistemidir. Bu sistem, LUA dilinde yazılmış olan bir quest olarak çalışır ve oyunculara rastgele ödüller kazandırabilir.

LUA ile Geliştirilmiş Quest Sistemleri

Metin2 quest sistemleri, oyun içindeki görevleri yönetmek ve oynanışı desteklemek için oldukça yaygın bir şekilde kullanılır. Özellikle Metin2 quest lua formatında geliştirilen scriptler, sunucu sahiplerine yüksek düzeyde özelleştirme imkanı sunar. Otomatik loto sistemi de bu bağlamda, oyunculara belirli aralıklarla veya özel tetikleyicilerle şans oyunları sunar.

Otomatik Loto Sistemi Nasıl Çalışır?

Bu sistem genellikle bir NPC üzerinden başlatılır. Oyuncu, belirli bir miktar para veya eşya karşılığı lotoya katılabilir. Sistem, LUA komutları yardımıyla rastgele ödüller sunar. Ödül listesi, Metin2 quest reward fonksiyonları ile özelleştirilebilir. Örneğin, oyuncu nadiren çıkan bir eşyayı kazanabilir veya özel bonuslar alabilir.

Quest Dosyası Hazırlığı ve Kurulum

Otomatik loto sistemi, Metin2 quest dosyası olarak hazırlanır. Bu dosyanın doğru şekilde server'e entegre edilmesi gerekir. Metin2 quest edit işlemleri sırasında dikkat edilmesi gereken en önemli konulardan biri, trigger ve state yapılarının doğru tanımlanmasıdır. Yanlış bir yapılandırma, quest'in çalışmamasına veya hata vermesine yol açabilir.

Sistemde Kullanılan Temel LUA Fonksiyonları

Metin2 quest sistemleri LUA diline dayalıdır. Bu nedenle, otomatik loto sisteminde de birçok LUA fonksiyonu kullanılır. Örneğin, math.random() fonksiyonu rastgele sayı üretimi için kullanılır. Timer ve flag gibi sistemlerle birlikte çalışarak, oyuncuya zaman bazlı veya durum bazlı etkileşim sunar.

Özel Görev Sistemleriyle Entegrasyon

Metin2 özel quest sistemleri ile loto sistemi kolayca entegre edilebilir. Quest chain yapıları sayesinde, oyuncular bir görevi tamamladığında lotoya katılım hakkı kazanabilir. Bu tür sistemler, oyuncu sadakatini artırmak için idealdir.

Debug ve Hata Ayıklama

Her Metin2 quest hata ayıklama süreci önemlidir. Otomatik loto sistemi gibi karmaşık yapılar, özellikle reward ve timer süreçlerinde sorun yaşatabilir. Metin2 quest debug[/COORD] araçları ile sistem test edilmeli ve sorunsuz çalıştığından emin olunmalıdır.

Sunucu Bazlı Uygulamalar

Otomatik loto sistemi, farklı Metin2 sunucularında değişikliklerle kullanılabilir. Metin2 quest server yapılarında, sistem özel sunucu kurallarına göre özelleştirilebilir. Bu sayede sunucuya özgü ödüller, özel NPC'ler ve görsel efektler eklenebilir.


What is Automatic Lottery System[LUA]?

Automatic Lottery System is one of the systems developed to enrich the gaming experience on Metin2 servers and encourage more player engagement. This system works as a quest written in LUA language and can award random prizes to players.

Quest Systems Developed with LUA

Metin2 quest systems are widely used to manage in-game tasks and support gameplay. Especially Metin2 quest lua scripts provide server owners with high levels of customization. In this context, the automatic lottery system offers chance-based games to players at specific intervals or through special triggers.

How Does the Automatic Lottery System Work?

The system typically starts via an NPC. Players can participate in the lottery by paying a certain amount of gold or items. The system uses LUA commands to offer random rewards. Reward lists can be customized with Metin2 quest reward functions. For example, players might win a rare item or receive special bonuses.

Quest File Preparation and Installation

The automatic lottery system is prepared as a Metin2 quest file. It must be correctly integrated into the server. During Metin2 quest edit processes, one of the most important things to pay attention to is the correct definition of trigger and state structures. Incorrect configurations may cause the quest not to work or produce errors.

Key LUA Functions Used in the System

Metin2 quest systems are based on LUA language. Therefore, many LUA functions are used in the automatic lottery system. For instance, the math.random() function is used for generating random numbers. Together with timer and flag systems, it provides time-based or state-based interactions to players.

Integration with Custom Quest Systems

Metin2 custom quests can easily integrate with the lottery system. Through quest chain structures, players can gain lottery participation rights upon completing a task. Such systems are ideal for increasing player loyalty.

Debugging and Error Handling

Every Metin2 quest error debugging process is critical. Complex structures like the automatic lottery system may cause issues especially during reward and timer phases. Using Metin2 quest debug tools, the system should be tested and confirmed to work without errors.

Server-Based Applications

The automatic lottery system can be adapted for use on different Metin2 servers with modifications. In Metin2 quest server structures, the system can be tailored according to unique server rules. Thus, server-specific rewards, custom NPCs, and visual effects can be added.
 

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

Benzer konular

Geri
Üst Alt