Herkese Hayırlı Kullanımlar Quest Belirlitigi Gibi
Quest Can Baran Aittir.
Quest Can Baran Aittir.
Kod:
quest karakter_takasi begin state start begin when 20364.chat."Karakter takası yapmak" with game.get_event_flag("takas_yap") >= 1 begin if pc.getqf("takas") - get_time() > 0 then say_title("Nakajima:") say("") say("Malesef son karakter değişikliğinin üzerinden en az") say("üç gün geçmeden sana yardım edemem. Benim de bir") say("özel hayatım var değil mi? Sürekli rahatsız") say("edilmekten hoşlanmıyorum.") say("") else if pc.get_level() < 95 then say_title("Nakajima:") say("") say("Yeterli seviyede değilsin. En az 95. seviyeye") say("ulaş ki sana yardım edeyim.") say("") else local value = "557528158" local g = get_quest_state("collect_quest_lv90") local g_ = string.format("%d", g) if g_ != value and not pc.is_gm() then say_title("Nakajima:") say("") say("Chaegirab'ın sana verdiği görevlerden en az") say("Liderlerin Notu'na kadar gelmiş olmalısın. Aksi") say("taktirde sana yardım etmeyeceğim.") say("") else local karakter1 = pc.get_name() local acc1 = pc.get_account_id() local acc11 = pc.get_account() local mail1 = karakter_takasi.takas_read_mail() local sifre1 = karakter_takasi.takas_read_pswrd() local p1 = pc.get_player_id() --say_title("Nakajima:") --say("") --say("Merhaba! Ben bu şehirin hakimiyim. Yanlış anlama.") --say("Sadece haklıyı ve haksızı ayırmak için insanlara") --say("yardım ederim. İki kişi alışveriş yapacağı zaman") --say("ortayı bulmalarına yardımcı olurum ve alışveriş ") --say("benim huzurumda gerçekleşir. Eğer seninde bir ") --say("problemin varsa seve seve yardım ederim. Ama her") --say("istediğinde beni rahatsız edemezsin.") --say_reward("Karakter takası gerçekleştikten sonra bir") --say_reward("sonraki karakter takası için en az 3 gün") --say_reward("beklemek zorundasın.") --say("") --wait() --say_title("Bilgi:") --say("") --say_reward("Buradan mail adreslerinizi karşılıklı olarak") --say_reward("değiştirirsiniz. Alacağınız karakterin şifresi,") --say_reward("şu anki karakterinizin şifresi ile değiştirilecek.") --say_reward("Yani sadece hesap ID'niz değişmiş olacak. Diğer") --say_reward("bütün bilgiler aynı kalacak. Takas işlemini") --say_reward("yapmadan önce karakterinizi boşaltmanız, gerekli") --say_reward("eşyaları daha sonra ticaret aracılığıyla takas") --say_reward("etmeniz önerilir.") --say("") --wait() say_title("Nakajima:") say("") say("Karakterini takas edeceğin kişinin adını ") say("aşağıdaki kutuya yaz.") say_reward("Büyük ve küçük harflere dikkat et.") say("") local karakter2 = input() if karakter2 == "" then say_title("Nakajima:") say("") say("Onun bir ismi yok mu?") say("") else local opp_vid = find_pc_by_name(karakter2) if opp_vid == 0 then say_title("Nakajima:") say("") say("Böyle bir oyuncu yok.") say("") elseif opp_vid == pc.get_vid() then say_title("Nakajima:") say("") say("Kendinle mi karakter takası yapacaksın?") say("") else local krk2 = pc.select(opp_vid) local opp_level = pc.get_level() local value2 = "557528158" local g2 = get_quest_state("collect_quest_lv90") local g2_ = string.format("%d", g2) pc.select(krk2) if not npc.is_near_vid(opp_vid, 10) then say_title("Nakajima:") say("") say("Karakter takası yapacağın kişi bize") say("yaklaşmalı.") say("") elseif opp_level < 95 then say_title("Nakajima:") say("") say(""..karakter2.." adlı oyuncunun seviyesi") say("yeterli değil.") say("") elseif g2_ != value2 and not pc.is_gm() then say_title("Nakajima:") say("") say(""..karakter2.." adlı oyuncu henüz Liderlerin Notu") say("görevini tamamlamamış.") say("") else say_title("Onay") say("") say("Bu aşamadan sonra kontrol diğer oyuncuya geçecek.") say("İptal etmek mümkün olmayacak. Gerçekten karakterini") say(""..karakter2.." ile takas etmek istiyor musun?") say("") local onay1 = select("Evet, istiyorum.","Vazgeçtim.") if onay1 == 2 then return else if not npc.is_near_vid(opp_vid, 10) then say_title("Nakajima:") say("") say(""..karakter2.." oyundan çıkmış ya da bizden") say("uzaklaşmış.") say("") else say_title("Onay") say("") say(""..karakter2.." adlı oyuncudan gelecek cevabı ") say("bekle.") local agree = confirm(opp_vid, pc.name.." ile takas işlemi gerçekleşsin mi?", 30) if agree != CONFIRM_OK or not npc.is_near_vid(opp_vid, 10) then say_title("Nakajima:") say("") say(""..karakter2.." seninle karakter takası yapmak") say("istemiyor.") say("") else pc.select(opp_vid) local mail2 = karakter_takasi.takas_read_mail() local sifre2 = karakter_takasi.takas_read_pswrd() local acc2 = pc.get_account_id() local acc22 = pc.get_account() local p2 = pc.get_player_id() if not pc.is_gm() then pc.setqf("takas",get_time() + 24*60*60*3) end syschat(""..karakter1.." ile takas işlemi gerçekleşti. Hesabın bilgileri aşağıdaki gibidir:") syschat("Hesap ID: "..acc11..", Mail adresi: "..mail2.."") syschat("Şifreniz diğer oyuncuya verdiğiniz hesabınızın şifresi ile aynıdır.") if karakter_takasi.sadakat_read("id",p1) != 0 then syschat("Sadakat Mührü şifresi: "..karakter_takasi.sadakat_read("id",p1).."") else syschat("Sadakat Mührü şifresi henüz oluşturulmamış.") end mysql.execute("UPDATE account.account set email = "..mail2.." where id= "..acc1.."") mysql.execute("UPDATE account.account set password = "..sifre2.." where id= "..acc1.."") mysql.execute("UPDATE account.account set gecici = 0 where id= "..acc1.."") local opp_vid2 = find_pc_by_name(karakter1) setskin(NOWINDOW) pc.select(opp_vid2) syschat(""..karakter2.." ile takas işlemi gerçekleşti. Hesabın bilgileri aşağıdaki gibidir:") syschat("Hesap ID: "..acc22..", Mail adresi: "..mail1.."") syschat("Şifreniz diğer oyuncuya verdiğiniz hesabınızın şifresi ile aynıdır.") if karakter_takasi.sadakat_read("id",p2) != 0 then syschat("Sadakat Mührü şifresi: "..karakter_takasi.sadakat_read("id",p2).."") else syschat("Sadakat Mührü şifresi henüz oluşturulmamış.") end mysql.execute("UPDATE account.account set email = "..mail1.." where id= "..acc2.."") mysql.execute("UPDATE account.account set password = "..sifre1.." where id= "..acc2.."") mysql.execute("UPDATE account.account set gecici = 0 where id= "..acc2.."") notice_all(""..karakter1.." ile "..karakter2.." arasında karakter takası gerçekleşmiştir.") if not pc.is_gm() then pc.setqf("takas",get_time() + 24*60*60*3) end setskin(NOWINDOW) return end end end end end end end end end end function takas_read_mail() local database = mysql.connect("localhost", "mt2", "mt2!@#", "account") local mysql_read = mysql.execute(database, "SELECT email from account where id = "..pc.get_account_id().."") mysql.close(database) return tostring(mysql_read[1][1]) end function takas_read_pswrd() local database = mysql.connect("localhost", "mt2", "mt2!@#", "account") local mysql_read = mysql.execute(database, "SELECT password from account where id = "..pc.get_account_id().."") mysql.close(database) return tostring(mysql_read[1][1]) end function sadakat_read(a,b) local database = mysql.connect("localhost", "mt2", "mt2!@#", "player") local mysql_read = mysql.execute(database, "SELECT sadakat_muhru from player where "..a.." = "..b.."") mysql.close(database) return tonumber(mysql_read[1][1]) end end end[/FONT]
Metin2 Karakter Takası Quest Sistemi
Metin2 Lobby olarak, Metin2 sunucularında quest sistemlerinin oyun deneyimi üzerinde büyük bir etkisi vardır. Özellikle karakter takası gibi gelişmiş özellikler, oyuncuların farklı karakterlerle oynamasını ve daha fazla içerik keşfetmesini sağlar. Bu yazıda, Metin2 üzerinde karakter takası yapma quest sisteminin nasıl kurulacağını, hangi lua komutlarının kullanılacağını ve olası debug süreçlerini detaylıca inceleyeceğiz.
Karakter Takası Nedir?
Karakter takası, oyuncuların sahip oldukları birden fazla karakter arasında geçiş yapmalarına olanak tanıyan bir özelliktir. Ancak bu işlem, sadece sunucu tarafında aktifse ve belli quest koşullarını karşılayan oyuncular tarafından yapılabilir. Bu da quest sistemini çok daha önemli kılar.
Quest Sisteminin Kurulumu
Metin2’de bir quest sistemi oluşturmak için genellikle lua dili kullanılır. Quest dosyaları, server_files/quest klasörüne yerleştirilir. Karakter takısı yapma quest'i için bir lua script yazılması gerekir. Örneğin, character_switch.lua adında bir dosya oluşturabiliriz.
Script Örnekleri ve Kullanımı
Quest dosyasında, oyuncu belirli bir NPC ile etkileşime girip quest başlatıldığında, flag veya state değerleri kullanılır. Bu değerler, quest’in hangi aşamada olduğunu gösterir. Örneğin:
state start begin
say('Karakter takası için özel görevleri tamamlamalısın.')
when login or levelup
if pc.get_level() >= 100 then
set_state(ready)
end
end
Hata Ayıklama (Debug) Süreci
Bazı durumlarda quest çalışmayabilir ya da beklendiği gibi davranmayabilir. Bu durumda debug işlemleri yapılmalıdır. Logları kontrol etmek, quest içinde notice mesajları yazdırmak gibi yöntemlerle hatalar bulunabilir. Quest sistemlerinde timer kullanımı da dikkat edilmesi gereken konulardan biridir.
Reward ve Item Sistemleri
Quest tamamlandığında, oyuncuya ödül verilmesi önemlidir. Ödül olarak item, gold veya özel yetenekler eklenebilir. Bu işlemler quest dosyasının sonunda tanımlanır. Örneğin:
when complete
pc.give_item2('switch_token', 1)
end[/BR][/BR]
Karakter takısı quest sistemleri, Metin2 sunucularında kullanıcı deneyimini ciddi anlamda artırır. Doğru kurulduğunda, oyuncuların farklı karakterlerle deneyim yaşamalarını sağlar.
Kaynaklar ve Yardımcı Araçlar
Metin2 quest geliştirme sürecinde Metin2Dev veya Martysama gibi platformlardan faydalanabilirsiniz. Ayrıca custom quest örnekleri, daily quest yapıları gibi konular da öğrenmeyi kolaylaştırır.
Metin2 Character Switch Quest System
Metin2 Lobby As Metin2 servers, quest systems have a major impact on the gaming experience. Particularly advanced features like character switching allow players to play with different characters and explore more content. In this article, we will examine in detail how to set up the character switch quest system in Metin2, which lua commands to use, and potential debug processes.
What is Character Switching?
Character switching is a feature that allows players to switch between their multiple characters. However, this action can only be performed if it's active on the server side and by players who meet certain quest conditions. This makes the quest system even more important.
Setting Up the Quest System
To create a quest system in Metin2, lua language is generally used. Quest files are placed in the server_files/quest folder. For character switching quest, a lua script must be written. For example, we can create a file named character_switch.lua.
Script Examples and Usage
In the quest file, when a player interacts with a specific NPC and starts the quest, flag or state values are used. These values indicate which stage the quest is at. For example:
state start begin
say('You must complete special quests to switch characters.')
when login or levelup
if pc.get_level() >= 100 then
set_state(ready)
end
end[/BR][/BR]
Debugging Process
In some cases, the quest may not work or behave unexpectedly. In such cases, debug operations should be performed. Checking logs, printing notice messages within the quest can help locate errors. Timer usage in quest systems is also one of the aspects that require attention.
Reward and Item Systems
Upon completion of the quest, rewarding the player is crucial. Rewards can include items, gold, or special abilities. These actions are defined at the end of the quest file. For example:
when complete
pc.give_item2('switch_token', 1)
end[/BR][/BR]
Character switching quest systems significantly enhance user experience on Metin2 servers. When properly implemented, they allow players to experience gameplay with different characters.
Resources and Helpful Tools
During the Metin2 quest development process, you can utilize platforms such as Metin2Dev or Martysama. Additionally, topics like custom quest examples and daily quest structures make learning easier.
