Daha önceden kendi yazmış olduğum bir lua'yı sizlerle paylaşıyorum.
Düzenlenmesi gereken kod bloğu ;
Sisteme dair görüntü ;
Düzenlenmesi gereken kod bloğu ;
Kod:
function senecekler()
Sisteme dair görüntü ;
İndirmeden kodları incelemek isteyenler için ;
Kod:
quest kostum_baslik begin state start begin function senecekler() local secenek = {} secenek.erkek_kostum = {41324, 41328, 41330, 41332, 41334} -- erkek kostümleri secenek.erkek_baslik = {41324, 41328, 41330, 41332, 41334} -- erkek başlıkları secenek.bayan_kostum = {41324, 41328, 41330, 41332, 41334} -- bayan kostümleri secenek.bayan_baslik = {41324, 41328, 41330, 41332, 41334} -- bayan başlıkları secenek.istenilen_item = 90005 -- istenilen nesne secenek.istenilen_miktar = {100, 200, 300, 400, 500} -- istenilen nesne miktarı secenek.gorev_isimleri = {"Kostum & Başlık Görev -1","Kostum & Başlık Görev -2","Kostum & Başlık Görev -3","Kostum & Başlık Görev -4","Kostum & Başlık Görev -5"} return secenek end function bilgilendirme(bilgiler) local flag = kostum_baslik.senecekler() local istenilen, miktar = flag.istenilen_item, flag.istenilen_miktar local kostum, baslik = flag.erkek_kostum, flag.erkek_baslik if pc.get_sex() == 2 then kostum, baslik = flag.bayan_kostum, flag.bayan_baslik end local bilgi = { [1] = {""..miktar[1].." adet "..item_name(istenilen).." karşılığında, [ENTER]"..item_name(kostum[1]).." ve "..item_name(baslik[1]).." ödülü [ENTER]alabilirsin. İstediğim "..item_name(istenilen).." getirdiğinde[ENTER]üzerime sürükleyerek ödülünü alabilirsin. "}, [2] = {""..miktar[2].." adet "..item_name(istenilen).." karşılığında, [ENTER]"..item_name(kostum[2]).." ve "..item_name(baslik[2]).." ödülü [ENTER]alabilirsin. İstediğim "..item_name(istenilen).." getirdiğinde[ENTER]üzerime sürükleyerek ödülünü alabilirsin. "}, [3] = {""..miktar[3].." adet "..item_name(istenilen).." karşılığında, [ENTER]"..item_name(kostum[3]).." ve "..item_name(baslik[3]).." ödülü [ENTER]alabilirsin. İstediğim "..item_name(istenilen).." getirdiğinde[ENTER]üzerime sürükleyerek ödülünü alabilirsin. "}, [4] = {""..miktar[4].." adet "..item_name(istenilen).." karşılığında, [ENTER]"..item_name(kostum[4]).." ve "..item_name(baslik[4]).." ödülü [ENTER]alabilirsin. İstediğim "..item_name(istenilen).." getirdiğinde[ENTER]üzerime sürükleyerek ödülünü alabilirsin. "}, [5] = {""..miktar[5].." adet "..item_name(istenilen).." karşılığında, [ENTER]"..item_name(kostum[5]).." ve "..item_name(baslik[5]).." ödülü [ENTER]alabilirsin. İstediğim "..item_name(istenilen).." getirdiğinde[ENTER]üzerime sürükleyerek ödülünü alabilirsin. "}, } bilgiler = tonumber(bilgiler) return bilgi[bilgiler] end when 20090.chat."Kostum & Başlık Görevleri" begin local flag = kostum_baslik.senecekler() local gorevler = flag.gorev_isimleri say_title("[WINDOW_SIZE width;350|height;370]") say_title(mob_name(npc.get_race())) say("Mavi Ejderha, Cadı, Azrail, Kırmızı Ejderha vb.") say("Oyundaki Bosslardan gerekli görev malzemelerini") say("elde edebilirsiniz.") say("") say_sari("Hangi görev için bilgi istiyorsun ?") local bilgiler = select(gorevler[1],gorevler[2],gorevler[3],gorevler[4],gorevler[5],"Vazgeç ") if bilgiler == 6 then return end local bilgixx = kostum_baslik.bilgilendirme(bilgiler) local kostum, baslik = flag.erkek_kostum, flag.erkek_baslik if pc.get_sex() == 2 then kostum, baslik = flag.bayan_kostum, flag.bayan_baslik end say_title("[WINDOW_SIZE width;350|height;370]") say_title(mob_name(npc.get_race())) say_reward(bilgixx[1]) if bilgiler == 1 then say_item_vnum(kostum[1]) say_item_vnum(baslik[1]) return end if bilgiler == 2 then say_item_vnum(kostum[2]) say_item_vnum(baslik[2]) return end if bilgiler == 3 then say_item_vnum(kostum[3]) say_item_vnum(baslik[3]) return end if bilgiler == 4 then say_item_vnum(kostum[4]) say_item_vnum(baslik[4]) return end if bilgiler == 5 then say_item_vnum(kostum[5]) say_item_vnum(baslik[5]) return end end function kontrol(gelen,miktar) if pc.count_item(gelen) < miktar then say_sari("Envanterinde "..miktar.." adet "..item_name(gelen).." bulunmamaktadır.") wait() say_title(mob_name(npc.get_race())) say_reward("İşleminiz iptal edilmiştir.") return true end end when 20090.take with item.vnum == 90005 begin local flag = kostum_baslik.senecekler() local gorevler = flag.gorev_isimleri local istenilen, miktar = flag.istenilen_item, flag.istenilen_miktar local kostum, baslik = flag.erkek_kostum, flag.erkek_baslik if pc.get_sex() == 2 then kostum, baslik = flag.bayan_kostum, flag.bayan_baslik end say_title("[WINDOW_SIZE width;350|height;370]") say_title(mob_name(npc.get_race())) say_reward("Merhaba "..pc.get_name()..",") say_reward("Envanterinde toplam "..pc.count_item(istenilen).." adet "..item_name(istenilen).." bulunmakta.") wait() if pc.count_item(istenilen) < miktar[1] then say_title(mob_name(npc.get_race())) say("") say_reward("Minimum "..miktar[1].." adet "..item_name(istenilen).." ile ödül alabilirsin.") return end say_title(mob_name(npc.get_race())) say("") say_sari("Bu durumda şu görevlerin ödüllerini alabilirsin;") if pc.count_item(istenilen) >= miktar[5] then local bilgiler = select(gorevler[1],gorevler[2],gorevler[3],gorevler[4],gorevler[5],"Vazgeç ") if bilgiler == 6 then return end say_title("[WINDOW_SIZE width;350|height;370]") say_title(mob_name(npc.get_race())) if bilgiler == 1 then if kostum_baslik.kontrol(istenilen,miktar[1]) == true then return end say_reward(""..miktar[1].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[1]).." adet "..item_name(baslik[1]).." vereceğim.") say_item_vnum(kostum[1]) say_item_vnum(baslik[1]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[1]) == true then return end pc.remove_item(istenilen, miktar[1]) pc.give_item2_select(kostum[1]) pc.give_item2_select(baslik[1]) return elseif bilgiler == 2 then if kostum_baslik.kontrol(istenilen,miktar[2]) == true then return end say_reward(""..miktar[2].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[2]).." adet "..item_name(baslik[2]).." vereceğim.") say_item_vnum(kostum[2]) say_item_vnum(baslik[2]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[2]) == true then return end pc.remove_item(istenilen, miktar[2]) pc.give_item2_select(kostum[2]) pc.give_item2_select(baslik[2]) return elseif bilgiler == 3 then if kostum_baslik.kontrol(istenilen,miktar[3]) == true then return end say_reward(""..miktar[3].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[3]).." adet "..item_name(baslik[3]).." vereceğim.") say_item_vnum(kostum[3]) say_item_vnum(baslik[3]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[3]) == true then return end pc.remove_item(istenilen, miktar[3]) pc.give_item2_select(kostum[3]) pc.give_item2_select(baslik[3]) return elseif bilgiler == 4 then if kostum_baslik.kontrol(istenilen,miktar[4]) == true then return end say_reward(""..miktar[4].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[4]).." adet "..item_name(baslik[4]).." vereceğim.") say_item_vnum(kostum[4]) say_item_vnum(baslik[4]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[4]) == true then return end pc.remove_item(istenilen, miktar[4]) pc.give_item2_select(kostum[4]) pc.give_item2_select(baslik[4]) return elseif bilgiler == 5 then if kostum_baslik.kontrol(istenilen,miktar[5]) == true then return end say_reward(""..miktar[5].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[5]).." adet "..item_name(baslik[5]).." vereceğim.") say_item_vnum(kostum[5]) say_item_vnum(baslik[5]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[5]) == true then return end pc.remove_item(istenilen, miktar[5]) pc.give_item2_select(kostum[5]) pc.give_item2_select(baslik[5]) return end elseif pc.count_item(istenilen) >= miktar[4] then local bilgiler = select(gorevler[1],gorevler[2],gorevler[3],gorevler[4],"Vazgeç ") if bilgiler == 5 then return end say_title("[WINDOW_SIZE width;350|height;370]") say_title(mob_name(npc.get_race())) if bilgiler == 1 then if kostum_baslik.kontrol(istenilen,miktar[1]) == true then return end say_reward(""..miktar[1].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[1]).." adet "..item_name(baslik[1]).." vereceğim.") say_item_vnum(kostum[1]) say_item_vnum(baslik[1]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[1]) == true then return end pc.remove_item(istenilen, miktar[1]) pc.give_item2_select(kostum[1]) pc.give_item2_select(baslik[1]) return elseif bilgiler == 2 then if kostum_baslik.kontrol(istenilen,miktar[2]) == true then return end say_reward(""..miktar[2].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[2]).." adet "..item_name(baslik[2]).." vereceğim.") say_item_vnum(kostum[2]) say_item_vnum(baslik[2]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[2]) == true then return end pc.remove_item(istenilen, miktar[2]) pc.give_item2_select(kostum[2]) pc.give_item2_select(baslik[2]) return elseif bilgiler == 3 then if kostum_baslik.kontrol(istenilen,miktar[3]) == true then return end say_reward(""..miktar[3].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[3]).." adet "..item_name(baslik[3]).." vereceğim.") say_item_vnum(kostum[3]) say_item_vnum(baslik[3]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[3]) == true then return end pc.remove_item(istenilen, miktar[3]) pc.give_item2_select(kostum[3]) pc.give_item2_select(baslik[3]) return elseif bilgiler == 4 then if kostum_baslik.kontrol(istenilen,miktar[4]) == true then return end say_reward(""..miktar[4].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[4]).." adet "..item_name(baslik[4]).." vereceğim.") say_item_vnum(kostum[4]) say_item_vnum(baslik[4]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[4]) == true then return end pc.remove_item(istenilen, miktar[4]) pc.give_item2_select(kostum[4]) pc.give_item2_select(baslik[4]) return end elseif pc.count_item(istenilen) >= miktar[3] then local bilgiler = select(gorevler[1],gorevler[2],gorevler[3],"Vazgeç ") if bilgiler == 4 then return end say_title("[WINDOW_SIZE width;350|height;370]") say_title(mob_name(npc.get_race())) if bilgiler == 1 then if kostum_baslik.kontrol(istenilen,miktar[1]) == true then return end say_reward(""..miktar[1].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[1]).." adet "..item_name(baslik[1]).." vereceğim.") say_item_vnum(kostum[1]) say_item_vnum(baslik[1]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[1]) == true then return end pc.remove_item(istenilen, miktar[1]) pc.give_item2_select(kostum[1]) pc.give_item2_select(baslik[1]) return elseif bilgiler == 2 then if kostum_baslik.kontrol(istenilen,miktar[2]) == true then return end say_reward(""..miktar[2].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[2]).." adet "..item_name(baslik[2]).." vereceğim.") say_item_vnum(kostum[2]) say_item_vnum(baslik[2]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[2]) == true then return end pc.remove_item(istenilen, miktar[2]) pc.give_item2_select(kostum[2]) pc.give_item2_select(baslik[2]) return elseif bilgiler == 3 then if kostum_baslik.kontrol(istenilen,miktar[3]) == true then return end say_reward(""..miktar[3].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[3]).." adet "..item_name(baslik[3]).." vereceğim.") say_item_vnum(kostum[3]) say_item_vnum(baslik[3]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[3]) == true then return end pc.remove_item(istenilen, miktar[3]) pc.give_item2_select(kostum[3]) pc.give_item2_select(baslik[3]) return end elseif pc.count_item(istenilen) >= miktar[2] then local bilgiler = select(gorevler[1],gorevler[2],"Vazgeç ") if bilgiler == 3 then return end say_title("[WINDOW_SIZE width;350|height;370]") say_title(mob_name(npc.get_race())) if bilgiler == 1 then if kostum_baslik.kontrol(istenilen,miktar[1]) == true then return end say_reward(""..miktar[1].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[1]).." adet "..item_name(baslik[1]).." vereceğim.") say_item_vnum(kostum[1]) say_item_vnum(baslik[1]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[1]) == true then return end pc.remove_item(istenilen, miktar[1]) pc.give_item2_select(kostum[1]) pc.give_item2_select(baslik[1]) return elseif bilgiler == 2 then if kostum_baslik.kontrol(istenilen,miktar[2]) == true then return end say_reward(""..miktar[2].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[2]).." adet "..item_name(baslik[2]).." vereceğim.") say_item_vnum(kostum[2]) say_item_vnum(baslik[2]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[2]) == true then return end pc.remove_item(istenilen, miktar[2]) pc.give_item2_select(kostum[2]) pc.give_item2_select(baslik[2]) return end elseif pc.count_item(istenilen) >= miktar[1] then local bilgiler = select(gorevler[1],"Vazgeç ") if bilgiler == 2 then return end say_title("[WINDOW_SIZE width;350|height;370]") say_title(mob_name(npc.get_race())) if bilgiler == 1 then if kostum_baslik.kontrol(istenilen,miktar[1]) == true then return end say_reward(""..miktar[1].." adet "..item_name(istenilen).." karşılığında,") say_reward(""..item_name(kostum[1]).." adet "..item_name(baslik[1]).." vereceğim.") say_item_vnum(kostum[1]) say_item_vnum(baslik[1]) say("") say("") say("") say("") local onay = select("Almak İstiyorum","Hayır, Kalsın") if onay == 2 then return end if kostum_baslik.kontrol(istenilen,miktar[1]) == true then return end pc.remove_item(istenilen, miktar[1]) pc.give_item2_select(kostum[1]) pc.give_item2_select(baslik[1]) return end end end end end
Güle güle kullanmanız dileğiyle.
Metin2 Biyolog Görev Özellikleri Sorunu Fix Çözümü Burada
Metin2 oyununda Biyolog görevi, özellikle düşük seviye oyuncuların deneyim kazanması ve çeşitli ödüller elde etmesi açısından oldukça önemlidir. Ancak bazı sunucularda bu görevin özellikleri düzgün çalışmazsa, oyuncular görevi başlatamaz ya da tamamlayamaz. Bu durum hem oyuncu hem de sunucu yönetimi için ciddi bir sorundur.
Metin2 Biyolog Görevi Nedir?
Biyolog görevi, oyuncuların belirli bölgelerde belirli canavarları öldürerek görevi tamamlamasını sağlar. Oyuncular görevi tamamladıkça deneyim puanı, altın ve özel eşyalar kazanabilirler. Bu görev, genellikle 15. seviye ve üzeri karakterler için uygundur.
Sorun Nedir?
Bazı Metin2 sunucularında Biyolog görevi başlatılamıyor ya da görevin bazı özellikleri eksik geliyor. Örneğin görevin başlamaması, NPC ile konuşulamaması, görevin ilerlememesi gibi durumlar görülebilir. Bu sorunlar genellikle quest sistemine bağlıdır ve genellikle LUA script hatalarından kaynaklanır.
Fix Çözümü Nedir?
Fix çözümü, genellikle quest.lua dosyasındaki Biyolog görevi ile ilgili kodların eksik veya yanlış olmasıdır. Doğru şekilde yapılandırılmış bir quest dosyası ile bu sorun çözülebilir.
Adım Adım Fix Uygulama
1. Quest dosyasını kontrol edin. quest/biologist.lua dosyasının doğru şekilde yüklendiğinden emin olun.
2. Quest dosyasında 'start' ve 'end' fonksiyonlarının eksiksiz olduğundan emin olun.
3. NPC ile olan etkileşim kodlarının doğru çalıştığından emin olun.
4. Görevin tetiklenmesi için gerekli olan koşulların doğru tanımlandığından emin olun.
Hata Ayıklama (Debug) Yöntemleri
Quest sistemine hata ayıklama (debug) işlemleri eklemek, hangi noktada hata olduğunu anlamak için oldukça faydalıdır. Özellikle LUA scriptlerinde hata mesajlarını kontrol etmek için loglama işlemleri yapılmalıdır.
Sunucu Tarafında Gözlemlenen Diğer Hatalar
Bazı sunucularda Biyolog görevi sadece belirli seviyelerde çalışırken, diğerlerinde tüm seviyelerde aktif olabilir. Bu farklar genellikle quest ayarlarında bulunan level filtrelerinden kaynaklanır. Level filtresi doğru ayarlanmazsa, görev bazı karakterlerde görünmeyebilir.
Quest Dosyası Düzenleme Önerileri
Quest dosyası düzenlenirken dikkat edilmesi gereken birkaç önemli nokta vardır. Kodların akışı doğru olmalı, görev durumu (state) doğru şekilde tanımlanmalı ve NPC ile etkileşim kodları eksiksiz olmalıdır.
Sonuç
Metin2 Biyolog görevi, oyun içi deneyim kazanımı açısından kritik öneme sahiptir. Bu görevin düzgün çalışmayan özelliklerini fix etmek, oyuncu memnuniyetini artırmak açısından önemlidir. Doğru quest scriptleri ve debug işlemleri ile bu sorunlar kolayca çözülebilir.
Metin2 Biologist Quest Features Issue Fix Solution Is Here
In the game Metin2, the Biologist quest is very important for low-level players to gain experience and obtain various rewards. However, on some servers, if the features of this quest do not work properly, players may be unable to start or complete the quest. This situation is a serious problem for both players and server administrators.
What is the Metin2 Biologist Quest?
The Biologist quest allows players to complete the quest by killing specific monsters in certain areas. As players complete the quest, they can earn experience points, gold, and special items. This quest is generally suitable for characters starting from level 15.
What is the Problem?
On some Metin2 servers, the Biologist quest cannot be started, or some of its features are missing. For example, the quest might not start, NPCs may not interact correctly, or the quest does not progress. These issues are usually related to the quest system and often stem from LUA script errors.
What is the Fix Solution?
The fix solution usually lies in the incomplete or incorrect code related to the Biologist quest in the quest.lua file. This issue can be resolved with a properly configured quest file.
Step-by-Step Fix Application
1. Check the quest file. Ensure that the quest/biologist.lua file is loaded correctly.
2. Make sure that the 'start' and 'end' functions in the quest file are complete.
3. Verify that the interaction codes with the NPC are working correctly.
4. Ensure that the conditions required to trigger the quest are defined properly.
Debugging Methods
Adding debugging operations to the quest system is very helpful to understand where the error occurs. Especially in LUA scripts, checking error messages requires logging operations.
Other Observed Server-Side Issues
On some servers, the Biologist quest only works at certain levels, while on others, it is active for all levels. These differences often result from level filters set in the quest configurations. If the level filter is not set correctly, the quest may not appear for some characters.
Quest File Editing Suggestions
When editing the quest file, there are several important points to consider. The flow of the code must be correct, the quest state should be properly defined, and the interaction codes with the NPC must be complete.
Conclusion
The Metin2 Biologist quest is critically important for gaining in-game experience. Fixing broken features of this quest is essential for improving player satisfaction. Such issues can be easily resolved with correct quest scripts and debug operations.
