Merhabalar,
Şimdiki sistem Gelişmiş Işınlama Sistemi. Bu sistem ile oyuncular birbirlerini yanlarına çağırabilirler. Sistemde herhangi bir bug yada sorun yoktur. Özel haritaları dilediğiniz gibi engelleyebilirsiniz. Ayrıca dileyen oyuncu ışınlama sistemini kapatabilir böylelikle diğer oyuncular ışınlama isteği yollayamazlar. Ek olarak oyuncular dakikada 1 defa ışınlanabilirler. Tekrardan ışınlanabilmeleri için 1 dakika beklemeleri gerekir.
Sistemin en güzel özelliği ise arkadaş listenizde ekli olan kişilerin adlarını yazmanız gerekmiyor! Dilediğiniz arkadaşınızı tek tıklama ile yanınıza çağırabilirsiniz. Dilerseniz sistemin tanıtım videosuna geçelim. Daha sonra da kurulumunu anlatacağım:
Daha sonra Default değerini 0 yapıyorsunuz! Kesinlikle çok önemli. Default değerini 0 yapmayı unutmayın! Aşağıdaki gibi:
Gelişmiş Işınlama Sistemi - ÖNEMLİ BİLGİLER
İlk başta da belirttiğim gibi dilediğiniz haritada ışınlama olayını engelleyebilirsiniz. Bunun için şu kısma eklemeler yapmanız gerekiyor:
Buradaki kodu şu şekilde düzenlerseniz:
Buraya eklenen "1" kırmızı bayrağın harita index kodudur. Sizde ışınlamayı engellemek istediğiniz haritanın index kodunu buraya eklerseniz o haritada ışınlama gerçekleşmez.
Bir diğer bilgi "Işınlama Pasaportu" adlı nesneyi değiştirmek için şuradaki kodu değiştirmeniz yeterlidir:
Buraya hangi eşyanın kodunu yazarsanız onu "Işınlama Pasaportu" olarak görür. Dilediğiniz eşyayı "Işınlama Pasaportu" yapabilirsiniz.
Son olarak süre ayarını göstereceğim. Oyuncu 1 kere ışınlandıktan sonra 1 dakika beklemesi gerekir bu süreyi düzeltmek istiyorsanız aşağıdaki kodu düzenlemeniz gerekli:
Buradaki "60" saniye cinsindendir. Eğer bunu aşağıdaki gibi değiştirirseniz:
"3600" saniye olur yani 1 saat. Tabii bunu şu şekilde de yapabilirsiniz:
Yine "3600" saniye yapar yani 1 saat. Buradaki sayıyı düzenlemeniz yeterlidir süreyi ayarlamak için. Önemli bilgiler bu kadar.
İndirmek istemeyip, LUA dosyasını oluşturmak isteyenler için:
1-) usr/game/share/locale/turkey/quest bölümüne "oyuncu_isinla.lua" adında bir lua dosyası açalım. Daha sonra dosyasının içine aşağıdaki kodları yazalım:
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 oyuncu_isinla.lua
Putty ile de işimiz bitti.
3-) Oyuna dönüyoruz ve bir GM karakter ile "/reload q" çekiyoruz.
4-) Daha sonra sol tarafta görev şeklinde gelen Oyuncu Işınla kısmından sistemi deneyebilirsiniz.
Gelişmiş Işınlama Sistemi[LUA] Nedir? Metin2'de Quest ve Lua Script Kullanımıyla Nasıl Uygulanır?
Metin2 sunucularında gelişmiş sistemler kurmak isteyen geliştiriciler için kritik öneme sahip olan Işınlama Sistemi, LUA script dili ile yazılmış quest dosyaları üzerinden çalışmaktadır. Bu sistem, oyuncuların belirli koordinatlara, haritalara veya NPC etkileşimleriyle aktarıldığı dinamik bir yapıdır. Metin2 Lobby olarak bu konuda detaylı bilgiler sunarak, geliştiricilere yardımcı olmayı hedefliyoruz.
Metin2 Işınlama Sistemi Özellikleri
Işınlama sistemi, oyuncuların oyun içi görevleri tamamladıklarında veya belirli bir süre geçtikten sonra başka bir bölgeye otomatik olarak taşınmasını sağlar. Bu sistem genellikle özel görevlerde (custom quest), PvP alanlarında veya etkinliklerde kullanılır. Işınlama sistemi LUA dilinde yazılmış bir quest dosyası ile yönetilir. Quest dosyaları, Metin2 sunucusunda belirli durumları kontrol eden ve buna göre eylemler gerçekleştiren yapılardır.
LUA Dilinde Işınlama Sistemi Oluşturmak
Işınlama işlemi genellikle warp_to_vnum veya warp gibi fonksiyonlarla gerçekleştirilir. Bu fonksiyonlar, oyuncuyu belirtilen vnum değerine ya da koordinatlara ışınlar. Örneğin:
quest warp_system begin
state start begin
when login or levelup with pc.get_level() >= 30 begin
say_title('Işınlama Menüsü')
local s = select('Güvenli Bölge', 'Savaş Alanı', 'Etkinlik Haritası', 'İptal')
if s == 1 then
warp_to_vnum(1234)
elseif s == 2 then
warp_to_vnum(5678)
elseif s == 3 then
warp_to_vnum(9012)
end
end
end
end
Işınlama Sistemine Güvenlik ve Yetkilendirme Katmak
Işınlama sisteminde güvenlik oldukça önemlidir. Yanlışlıkla ışınlanan oyuncuların tehlikeli bölgelere düşmesini önlemek için yetkilendirme mekanizmaları eklenmelidir. Bu, flag ve state[/BR][/BR]kontrolleri ile sağlanabilir. Örneğin, sadece belirli görevleri tamamlamış oyuncular belirli haritalara ışınlanabilsin.
Quest Trigger ve Timer Kullanımı
Bazı ışınlama sistemleri belirli zaman aralıklarında veya belirli tetikleyicilerle çalışabilir. timer kullanarak, bir görevin belirli bir sürede bitirilmemesi durumunda oyuncunun otomatik olarak başka bir konuma ışınlanması sağlanabilir. Bu tür sistemler, PvP etkinliklerinde veya turnuvalarda oldukça faydalıdır.
Metin2'de Işınlama Sistemi ile Görev Zinciri Oluşturmak
Gelişmiş ışınlama sistemleri, görev zincirlerine entegre edilebilir. Örneğin, bir görevin tamamlanması ile oyuncu bir sonraki görevin başladığı haritaya ışınlanabilir. Bu tür sistemler, oyuncuların deneyimini artırır ve oyun içi akışı daha keyifli hale getirir. Quest chain mantığıyla çalışan bu yapılar, LUA ile kolayca uygulanabilir.
Hatalar ve Debug İşlemleri
Işınlama sistemlerinde karşılaşılan yaygın sorunlardan biri, yanlış koordinat veya vnum kullanımıdır. Bu tür hatalar, quest debug işlemleri ile çözülebilir. Geliştiriciler, quest loglarını kontrol ederek sistemdeki eksiklikleri giderebilir. Ayrıca, quest begin ve quest end bloklarının doğru tanımlanması önemlidir.
Metin2 Lobby: Quest ve LUA Script Uzmanlığı
olarak, Metin2 geliştiricileri için geniş kaynaklar sunuyoruz. Quest script örnekleri, hata giderme rehberleri, özel sistem tasarımları gibi konularda tecrübeli bir ekip olarak hizmet veriyoruz. Işınlama sistemleri gibi gelişmiş konularda da destek vermeye devam ediyoruz.
What is Advanced Warp System[LUA]? How is it Implemented with Quest and Lua Scripts in Metin2?
The Warp System, which is of critical importance for developers who want to set up advanced systems on Metin2 servers, operates through quest files written in LUA script language. This system is a dynamic structure that transfers players to specific coordinates, maps, or via NPC interactions. As Metin2 Lobby, we aim to assist developers by providing detailed information on this subject.
Features of the Metin2 Warp System
The warp system allows players to be automatically transported to another area after completing in-game quests or after a certain period of time. This system is commonly used in custom quests, PvP areas, or events. The warp system is managed by a quest file written in the LUA language. Quest files are structures in Metin2 servers that control certain conditions and perform actions accordingly.
Creating a Warp System in LUA Language
Warp operations are typically performed using functions like warp_to_vnum or warp. These functions teleport the player to the specified vnum value or coordinates. For example:
quest warp_system begin
state start begin
when login or levelup with pc.get_level() >= 30 begin
say_title('Warp Menu')
local s = select('Safe Zone', 'Battlefield', 'Event Map', 'Cancel')
if s == 1 then
warp_to_vnum(1234)
elseif s == 2 then
warp_to_vnum(5678)
elseif s == 3 then
warp_to_vnum(9012)
end
end
end
end
Adding Security and Authorization to the Warp System
Security is very important in the warp system. To prevent players from accidentally warping into dangerous areas, authorization mechanisms should be added. This can be achieved using flag and state checks. For instance, only players who have completed certain quests can warp to specific maps.
Using Quest Triggers and Timers
Some warp systems may operate at specific intervals or upon certain triggers. By using timer, players can be automatically warped to another location if they fail to complete a quest within a given time frame. Such systems are highly beneficial in PvP events or tournaments.
Creating Quest Chains with the Warp System in Metin2
Advanced warp systems can be integrated into quest chains. For example, upon completing a quest, the player can be warped to the map where the next quest begins. Such structures enhance the player experience and make the in-game flow more enjoyable. These structures based on quest chain logic can easily be implemented with LUA.
Errors and Debugging
One common issue in warp systems is incorrect coordinate or vnum usage. Such errors can be resolved through quest debugging. Developers can fix deficiencies in the system by checking quest logs. Moreover, correctly defining quest begin and quest end blocks is essential.
Metin2 Lobby: Expertise in Quest and LUA Scripts
As
, we offer extensive resources for Metin2 developers. We provide services as an experienced team covering topics such as quest script examples, error resolution guides, and custom system designs. We continue to support advanced topics like warp systems.
Şimdiki sistem Gelişmiş Işınlama Sistemi. Bu sistem ile oyuncular birbirlerini yanlarına çağırabilirler. Sistemde herhangi bir bug yada sorun yoktur. Özel haritaları dilediğiniz gibi engelleyebilirsiniz. Ayrıca dileyen oyuncu ışınlama sistemini kapatabilir böylelikle diğer oyuncular ışınlama isteği yollayamazlar. Ek olarak oyuncular dakikada 1 defa ışınlanabilirler. Tekrardan ışınlanabilmeleri için 1 dakika beklemeleri gerekir.
Sistemin en güzel özelliği ise arkadaş listenizde ekli olan kişilerin adlarını yazmanız gerekmiyor! Dilediğiniz arkadaşınızı tek tıklama ile yanınıza çağırabilirsiniz. Dilerseniz sistemin tanıtım videosuna geçelim. Daha sonra da kurulumunu anlatacağım:
Gelişmiş Işınlama Sistemi - Tanıtım
Gelişmiş Işınlama Sistemi - Dosyalar
Oyununuzda MySQL kodları çalışmıyorsa ise aşağıdaki "questing.lua" yı indirin.
"questing.lua" nın içindeki tüm kodları "questlib.lua" ya yapıştırın MySQL sorunu çözülecektir.
Gelişmiş Işınlama Sistemi - Kurulum
"player" veritabanından "player" tablosunu açıyoruz ve en alta: "isinlan_durum" sütununu ekliyoruz. Aşağıdaki gibi:
Gelişmiş Işınlama Sistemi - Dosyalar
Oyununuzda MySQL kodları çalışmıyorsa ise aşağıdaki "questing.lua" yı indirin.
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.
"questing.lua" nın içindeki tüm kodları "questlib.lua" ya yapıştırın MySQL sorunu çözülecektir.
Gelişmiş Işınlama Sistemi - Kurulum
"player" veritabanından "player" tablosunu açıyoruz ve en alta: "isinlan_durum" sütununu ekliyoruz. Aşağıdaki gibi:
Daha sonra Default değerini 0 yapıyorsunuz! Kesinlikle çok önemli. Default değerini 0 yapmayı unutmayın! Aşağıdaki gibi:
Gelişmiş Işınlama Sistemi - ÖNEMLİ BİLGİLER
İlk başta da belirttiğim gibi dilediğiniz haritada ışınlama olayını engelleyebilirsiniz. Bunun için şu kısma eklemeler yapmanız gerekiyor:
Kod:
yasakli_bolgeD = { 103 }
Buradaki kodu şu şekilde düzenlerseniz:
Kod:
yasakli_bolgeD = { 1, 103 }
Buraya eklenen "1" kırmızı bayrağın harita index kodudur. Sizde ışınlamayı engellemek istediğiniz haritanın index kodunu buraya eklerseniz o haritada ışınlama gerçekleşmez.
Bir diğer bilgi "Işınlama Pasaportu" adlı nesneyi değiştirmek için şuradaki kodu değiştirmeniz yeterlidir:
Kod:
istenilecek_esya_kodu = 30168 -- eklenecek eşya kodu
Buraya hangi eşyanın kodunu yazarsanız onu "Işınlama Pasaportu" olarak görür. Dilediğiniz eşyayı "Işınlama Pasaportu" yapabilirsiniz.
Son olarak süre ayarını göstereceğim. Oyuncu 1 kere ışınlandıktan sonra 1 dakika beklemesi gerekir bu süreyi düzeltmek istiyorsanız aşağıdaki kodu düzenlemeniz gerekli:
Kod:
pc.setqf("sure",get_time()+60)
Buradaki "60" saniye cinsindendir. Eğer bunu aşağıdaki gibi değiştirirseniz:
Kod:
pc.setqf("sure",get_time()+3600)
"3600" saniye olur yani 1 saat. Tabii bunu şu şekilde de yapabilirsiniz:
Kod:
pc.setqf("sure",get_time()+60*60)
Yine "3600" saniye yapar yani 1 saat. Buradaki sayıyı düzenlemeniz yeterlidir süreyi ayarlamak için. Önemli bilgiler bu kadar.
İndirmek istemeyip, LUA dosyasını oluşturmak isteyenler için:
1-) usr/game/share/locale/turkey/quest bölümüne "oyuncu_isinla.lua" adında bir lua dosyası açalım. Daha sonra dosyasının içine aşağıdaki kodları yazalım:
Kod:
quest oyuncu_isinlan begin state start begin when letter with pc.get_level() >= 5 begin send_letter("Oyuncu Işınla") end -- when letter with pc.get_level() >= 5 begin endi when oyuncu_isinla.timer with pc.getqf("isinlamaya_tikladim") == 1 begin send_letter("Oyuncu Işınla") pc.setqf("isinlamaya_tikladim",0) end when info or button with pc.get_level() >= 5 begin pc.setqf("isinlamaya_tikladim",1) timer("oyuncu_isinla",1) istenilecek_esya_kodu = 30168 -- eklenecek eşya kodu baslikO = "Bilgilendirme:" baslikOL = "Uyarı:" oyuncu_isim = pc.get_name() oyuncu_kimlik = pc.get_player_id() say_title("[WINDOW_SIZE width;350|height;450]"..baslikO) say("") say("Merhaba oyuncu, "..oyuncu_isim) say("Buradan dilediğin oyuncuyu yanına çağırabilirsin.") say("Ama unutma ki bunu dakikada sadece 1 kere yapabilirsin.") say("") say("Işınlamayı kullanabilmen için hem senin hem de çağıracağın[ENTER]kişinin aşağıdaki eşyaya sahip olması gerekiyor: ") say_item_vnum(istenilecek_esya_kodu) say("") say_reward("Ne yapmak istiyorsun?") say("") oyuncu_isinlan_sec = select("Yanına Çağır","Arkadaşını Çağır","Ayarlar","Kapat") if oyuncu_isinlan_sec == 1 then say_title(baslikO) say("") say_reward("Yanına çağırmak istediğin kişinin ismini gir: ") cagirilacak_oyuncu_isim = tostring(input()) cagirilacak_oyuncu_isimK = oyuncu_isinlan.isim_kontrol(cagirilacak_oyuncu_isim) if pc.count_item(istenilecek_esya_kodu) < 1 then say_title(baslikOL) say("") say_reward("Oyuncuyu çağırabilmek için Işınlama Pasaportuna sahip[ENTER]olmanız gerekiyor.") say("") return elseif not cagirilacak_oyuncu_isimK then say_title(baslikOL) say("") say_reward("Hatalı bir giriş yaptınız yada oyuncu oyunda değil.") say("") return elseif cagirilacak_oyuncu_isimK == -1 then say_title(baslikOL) say("") say_reward("Yöneticiyi yanınıza çağıramazsınız!") say("") return elseif cagirilacak_oyuncu_isimK == -2 then say_title(baslikOL) say("") say_reward("Çağırdığınız oyuncu ışınlama isteklerini kabul etmiyor.") say("") return end -- if pc.count_item(istenilecek_esya_kodu) < 1 then harita_kimlik = pc.get_map_index() yasakli_bolgelerK = oyuncu_isinlan.yasakli_bolge(harita_kimlik) if not yasakli_bolgelerK then say_title(baslikOL) say("") say_reward("Bu bölgeye oyuncu çağıramazsınız!") say("") return end -- if not yasakli_bolgelerK then oyuncu_kontrol = find_pc_by_name(cagirilacak_oyuncu_isim) istek_yolla = confirm(oyuncu_kontrol,oyuncu_isim.." sizi yanına çağırıyor. Gitmek istiyor musunuz?",30) if istek_yolla == CONFIRM_OK then oyuncu_konum_x = pc.get_x()*100 oyuncu_konum_y = pc.get_y()*100 o_id = pc.select(oyuncu_kontrol) if pc.getqf("sure") - get_time() > 0 then sure_k = 1 syschat("Sistem: Henüz yeni ışınlandınız. 1 dakika beklemeniz gerekiyor.") elseif pc.count_item(istenilecek_esya_kodu) < 1 then esya_k = 1 syschat("Sistem: Işınlanmak için Işınlanma Pasaportuna sahip olmanız gerekiyor.") else pc.setqf("sure",get_time()+60) pc.warp(oyuncu_konum_x,oyuncu_konum_y) end -- if pc.getqf("sure") - get_time() > 0 then endi pc.select(o_id) if esya_k == 1 then syschat("Sistem: Çağırdığınız oyuncuda Işınlama Pasaportu mevcut değil.") esya_k = 0 elseif sure_k == 1 then syschat("Sistem: Oyuncu henüz yeni ışınlanmış. 1 dakika beklemesi gerekiyor.") sure_k = 0 end -- if esya_k == 1 then endi else o_id = pc.select(oyuncu_kontrol) syschat("Sistem: Işınlamayı kabul etmediniz.") pc.select(o_id) syschat("Sistem: Oyuncu ışınlama isteğinizi kabul etmedi.") end -- if istek_yolla == CONFIRM_OK then endi elseif oyuncu_isinlan_sec == 2 then say_title(baslikO) say("") say("Çağırmak istediğiniz arkadaşınızı seçin: ") say("") arkadasKontrol = mysql_query10("select * from player.messenger_list where account='"..oyuncu_isim.."' ") arkadasKontrolSay = tonumber(table.getn(arkadasKontrol)) if arkadasKontrolSay < 1 then say_reward("Arkadaş listenizde kimse ekli değil.") say("") else arkadasListesiDizi = {} for i=1,arkadasKontrolSay,1 do arkadas = arkadasKontrol.companion[i] arkadasAra = find_pc_by_name(arkadas) if arkadasAra != 0 then arkadasListesiDizi[i] = arkadas end -- if arkadasAra != 0 then endi end -- for i=1,arkadasKontrolSay,1 do endi arkadasListesiDiziSay = tonumber(table.getn(arkadasListesiDizi)) arkadasListesiDizi[arkadasListesiDiziSay+1] = "Kapat" arkadasSec = select_table(arkadasListesiDizi) for i=1,arkadasListesiDiziSay,1 do if arkadasSec == arkadasListesiDiziSay + 1 then return end -- if arkadasSec == arkadasListesiDiziSay + 1 then endi if arkadasSec == i then cagirilacak_oyuncu_isim = tostring(arkadasListesiDizi[i]) cagirilacak_oyuncu_isimK = oyuncu_isinlan.isim_kontrol(cagirilacak_oyuncu_isim) if pc.count_item(istenilecek_esya_kodu) < 1 then say_title(baslikOL) say("") say_reward("Oyuncuyu çağırabilmek için Işınlama Pasaportuna sahip[ENTER]olmanız gerekiyor.") say("") return elseif not cagirilacak_oyuncu_isimK then say_title(baslikOL) say("") say_reward("Oyuncu oyunda değil!") say("") return elseif cagirilacak_oyuncu_isimK == -1 then say_title(baslikOL) say("") say_reward("Yöneticiyi yanınıza çağıramazsınız!") say("") return elseif cagirilacak_oyuncu_isimK == -2 then say_title(baslikOL) say("") say_reward("Çağırdığınız oyuncu ışınlama isteklerini kabul etmiyor.") say("") return end -- if pc.count_item(istenilecek_esya_kodu) < 1 then endi harita_kimlik = pc.get_map_index() yasakli_bolgelerK = oyuncu_isinlan.yasakli_bolge(harita_kimlik) if not yasakli_bolgelerK then say_title(baslikOL) say("") say_reward("Bu bölgeye oyuncu çağıramazsınız!") say("") return end -- if not yasakli_bolgelerK then oyuncu_kontrol = find_pc_by_name(cagirilacak_oyuncu_isim) istek_yolla = confirm(oyuncu_kontrol,oyuncu_isim.." sizi yanına çağırıyor. Gitmek istiyor musunuz?",30) if istek_yolla == CONFIRM_OK then oyuncu_konum_x = pc.get_x()*100 oyuncu_konum_y = pc.get_y()*100 o_id = pc.select(oyuncu_kontrol) if pc.getqf("sure") - get_time() > 0 then sure_k = 1 syschat("Sistem: Henüz yeni ışınlandınız. 1 dakika beklemeniz gerekiyor.") elseif pc.count_item(istenilecek_esya_kodu) < 1 then esya_k = 1 syschat("Sistem: Işınlanmak için Işınlanma Pasaportuna sahip olmanız gerekiyor.") else pc.setqf("sure",get_time()+60) pc.warp(oyuncu_konum_x,oyuncu_konum_y) end -- if pc.getqf("sure") - get_time() > 0 then endi pc.select(o_id) if esya_k == 1 then syschat("Sistem: Çağırdığınız oyuncuda Işınlama Pasaportu mevcut değil.") esya_k = 0 elseif sure_k == 1 then syschat("Sistem: Oyuncu henüz yeni ışınlanmış. 1 dakika beklemesi gerekiyor.") end -- if esya_k == 1 then endi else o_id = pc.select(oyuncu_kontrol) syschat("Sistem: Işınlamayı kabul etmediniz.") pc.select(o_id) syschat("Sistem: Oyuncu ışınlama isteğinizi kabul etmedi.") end -- if istek_yolla == CONFIRM_OK then endi end -- if arkadasSec == i then endi end -- for i=1,arkadasListesiDiziSay,1 do endi end -- if arkadasKontrolSay < 1 then endi elseif oyuncu_isinlan_sec == 3 then isinlama_durumK = mysql_query("select * from player.player where id='"..oyuncu_kimlik.."' ") oyuncu_isinlama_durum = tonumber(isinlama_durumK.isinlan_durum[1]) if oyuncu_isinlama_durum == 0 then durum = "PASİF" elseif oyuncu_isinlama_durum == 1 then durum = "AKTİF" end say_title(baslikO) say("") say("Merhaba oyuncu, "..oyuncu_isim) say("Dilersen buradan ışınlama isteklerini kapatabilirsin.") say("Böylelikle kimse sana ışınlama isteği yollayamaz.") say("") say_reward("Işınlama durumun: "..durum) say("") say_reward("Ne yapmak istiyorsun?") say("") isinlanma_durum_sec = select("Işınlama Durumu: Aktif Et","Işınlama Durumu: Pasifleştir","Kapat") if isinlanma_durum_sec == 1 then isinlama_durumK = mysql_query("select * from player.player where id='"..oyuncu_kimlik.."' ") oyuncu_isinlama_durum = tonumber(isinlama_durumK.isinlan_durum[1]) if oyuncu_isinlama_durum == 1 then say_title(baslikOL) say("") say_reward("Işınlama durumu zaten aktif. Tekrar aktifleştiremezsiniz.") say("") elseif oyuncu_isinlama_durum == 0 then say_title(baslikO) say("") say("Işınlama durumu başarı ile aktifleştirildi.") say("") mysql_query("UPDATE player.player SET isinlan_durum=1 where id='"..oyuncu_kimlik.."' ") end elseif isinlanma_durum_sec == 2 then if oyuncu_isinlama_durum == 0 then say_title(baslikOL) say("") say_reward("Işınlama durumu zaten pasif. Tekrar pasifleştiremezsiniz.") say("") elseif oyuncu_isinlama_durum == 1 then say_title(baslikO) say("") say("Işınlama durumu başarı ile pasifleştirildi.") say("") mysql_query("UPDATE player.player SET isinlan_durum=0 where id='"..oyuncu_kimlik.."' ") end end -- if isinlanma_durum_sec == 1 then endi elseif oyuncu_isinlan_sec == 4 then return end -- if oyuncu_isinlan_sec == 1 then endi end -- when info or button with pc.get_level() >= 5 begin endi function isim_kontrol(gelen_oyuncu_isim) oyuncu_isim_f = gelen_oyuncu_isim oyuncu_ara = find_pc_by_name(oyuncu_isim_f) if oyuncu_isim_f == "" or oyuncu_isim_f == nil then return false elseif oyuncu_isim_f == pc.get_name() then return false elseif oyuncu_ara == 0 then return false end o_id = pc.select(oyuncu_ara) if pc.is_gm() then oyuncu_yonetici = 1 else oyuncu_kimlik = pc.get_player_id() isinlan_durumK = mysql_query10("select * from player.player where id='"..oyuncu_kimlik.."' ") isinlan_durumK_Say = tonumber(table.getn(isinlan_durumK)) if isinlan_durumK_Say > 0 then isinlan_deger = tonumber(isinlan_durumK.isinlan_durum[1]) if isinlan_deger == 0 then isinlan_durum_kontrol = 1 end end end pc.select(o_id) if oyuncu_yonetici == 1 then oyuncu_yonetici = 0 return -1 elseif isinlan_durum_kontrol == 1 then isinlan_durum_kontrol = 0 return -2 end return true end -- function isim_kontrol(gelen_oyuncu_isim) endi function yasakli_bolge(gelen_harita_kimlik) harita_kimlik_f = gelen_harita_kimlik yasakli_bolgeD = { 103 } yasakli_bolgeD_Say = tonumber(table.getn(yasakli_bolgeD)) for i=1,yasakli_bolgeD_Say,1 do if harita_kimlik_f == yasakli_bolgeD[i] then return false end end return true end --function yasakli_bolge(gelen_harita_kimlik) end -- state start begin endi end -- quest oyuncu_isinlan begin 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 oyuncu_isinla.lua
Putty ile de işimiz bitti.
3-) Oyuna dönüyoruz ve bir GM karakter ile "/reload q" çekiyoruz.
4-) Daha sonra sol tarafta görev şeklinde gelen Oyuncu Işınla kısmından sistemi deneyebilirsiniz.
Gelişmiş Işınlama Sistemi[LUA] Nedir? Metin2'de Quest ve Lua Script Kullanımıyla Nasıl Uygulanır?
Metin2 sunucularında gelişmiş sistemler kurmak isteyen geliştiriciler için kritik öneme sahip olan Işınlama Sistemi, LUA script dili ile yazılmış quest dosyaları üzerinden çalışmaktadır. Bu sistem, oyuncuların belirli koordinatlara, haritalara veya NPC etkileşimleriyle aktarıldığı dinamik bir yapıdır. Metin2 Lobby olarak bu konuda detaylı bilgiler sunarak, geliştiricilere yardımcı olmayı hedefliyoruz.
Metin2 Işınlama Sistemi Özellikleri
Işınlama sistemi, oyuncuların oyun içi görevleri tamamladıklarında veya belirli bir süre geçtikten sonra başka bir bölgeye otomatik olarak taşınmasını sağlar. Bu sistem genellikle özel görevlerde (custom quest), PvP alanlarında veya etkinliklerde kullanılır. Işınlama sistemi LUA dilinde yazılmış bir quest dosyası ile yönetilir. Quest dosyaları, Metin2 sunucusunda belirli durumları kontrol eden ve buna göre eylemler gerçekleştiren yapılardır.
LUA Dilinde Işınlama Sistemi Oluşturmak
Işınlama işlemi genellikle warp_to_vnum veya warp gibi fonksiyonlarla gerçekleştirilir. Bu fonksiyonlar, oyuncuyu belirtilen vnum değerine ya da koordinatlara ışınlar. Örneğin:
quest warp_system begin
state start begin
when login or levelup with pc.get_level() >= 30 begin
say_title('Işınlama Menüsü')
local s = select('Güvenli Bölge', 'Savaş Alanı', 'Etkinlik Haritası', 'İptal')
if s == 1 then
warp_to_vnum(1234)
elseif s == 2 then
warp_to_vnum(5678)
elseif s == 3 then
warp_to_vnum(9012)
end
end
end
end
Işınlama Sistemine Güvenlik ve Yetkilendirme Katmak
Işınlama sisteminde güvenlik oldukça önemlidir. Yanlışlıkla ışınlanan oyuncuların tehlikeli bölgelere düşmesini önlemek için yetkilendirme mekanizmaları eklenmelidir. Bu, flag ve state[/BR][/BR]kontrolleri ile sağlanabilir. Örneğin, sadece belirli görevleri tamamlamış oyuncular belirli haritalara ışınlanabilsin.
Quest Trigger ve Timer Kullanımı
Bazı ışınlama sistemleri belirli zaman aralıklarında veya belirli tetikleyicilerle çalışabilir. timer kullanarak, bir görevin belirli bir sürede bitirilmemesi durumunda oyuncunun otomatik olarak başka bir konuma ışınlanması sağlanabilir. Bu tür sistemler, PvP etkinliklerinde veya turnuvalarda oldukça faydalıdır.
Metin2'de Işınlama Sistemi ile Görev Zinciri Oluşturmak
Gelişmiş ışınlama sistemleri, görev zincirlerine entegre edilebilir. Örneğin, bir görevin tamamlanması ile oyuncu bir sonraki görevin başladığı haritaya ışınlanabilir. Bu tür sistemler, oyuncuların deneyimini artırır ve oyun içi akışı daha keyifli hale getirir. Quest chain mantığıyla çalışan bu yapılar, LUA ile kolayca uygulanabilir.
Hatalar ve Debug İşlemleri
Işınlama sistemlerinde karşılaşılan yaygın sorunlardan biri, yanlış koordinat veya vnum kullanımıdır. Bu tür hatalar, quest debug işlemleri ile çözülebilir. Geliştiriciler, quest loglarını kontrol ederek sistemdeki eksiklikleri giderebilir. Ayrıca, quest begin ve quest end bloklarının doğru tanımlanması önemlidir.
Metin2 Lobby: Quest ve LUA Script Uzmanlığı
What is Advanced Warp System[LUA]? How is it Implemented with Quest and Lua Scripts in Metin2?
The Warp System, which is of critical importance for developers who want to set up advanced systems on Metin2 servers, operates through quest files written in LUA script language. This system is a dynamic structure that transfers players to specific coordinates, maps, or via NPC interactions. As Metin2 Lobby, we aim to assist developers by providing detailed information on this subject.
Features of the Metin2 Warp System
The warp system allows players to be automatically transported to another area after completing in-game quests or after a certain period of time. This system is commonly used in custom quests, PvP areas, or events. The warp system is managed by a quest file written in the LUA language. Quest files are structures in Metin2 servers that control certain conditions and perform actions accordingly.
Creating a Warp System in LUA Language
Warp operations are typically performed using functions like warp_to_vnum or warp. These functions teleport the player to the specified vnum value or coordinates. For example:
quest warp_system begin
state start begin
when login or levelup with pc.get_level() >= 30 begin
say_title('Warp Menu')
local s = select('Safe Zone', 'Battlefield', 'Event Map', 'Cancel')
if s == 1 then
warp_to_vnum(1234)
elseif s == 2 then
warp_to_vnum(5678)
elseif s == 3 then
warp_to_vnum(9012)
end
end
end
end
Adding Security and Authorization to the Warp System
Security is very important in the warp system. To prevent players from accidentally warping into dangerous areas, authorization mechanisms should be added. This can be achieved using flag and state checks. For instance, only players who have completed certain quests can warp to specific maps.
Using Quest Triggers and Timers
Some warp systems may operate at specific intervals or upon certain triggers. By using timer, players can be automatically warped to another location if they fail to complete a quest within a given time frame. Such systems are highly beneficial in PvP events or tournaments.
Creating Quest Chains with the Warp System in Metin2
Advanced warp systems can be integrated into quest chains. For example, upon completing a quest, the player can be warped to the map where the next quest begins. Such structures enhance the player experience and make the in-game flow more enjoyable. These structures based on quest chain logic can easily be implemented with LUA.
Errors and Debugging
One common issue in warp systems is incorrect coordinate or vnum usage. Such errors can be resolved through quest debugging. Developers can fix deficiencies in the system by checking quest logs. Moreover, correctly defining quest begin and quest end blocks is essential.
Metin2 Lobby: Expertise in Quest and LUA Scripts
As
