Oyuncu Eşyasını Kontrol Etme 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 129

Admin

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

Bu sistemin Python haliyle yapılmış halini biliyorsunuzdur. Rakibin onayı ile giydiği eşyaları kontrol edebilirsiniz. Bunu LUA halinde yaptım kullanmak isteyenler için.


Sistemden görüntüler:​


d5rW9Q.jpg


XvGDZO.jpg


QA54jr.jpg


qY0mzV.jpg


KURULUM:

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

Kod:
quest esya_kontrol begin state start begin when 20087.chat."Oyuncu Eşya Kontrol" begin karakter_isim = pc.get_name() say_title("Bilgilendirme:") say("") say("Merhaba, "..karakter_isim) say("Sana istediğin oyuncunun üzerindeki eşyaları gösterebilirim.") say("Kimin eşyalarını görmek istiyorsan onun adını gir.") say("Ama unutma o kişi onay verirse eşyalarına bakabilirsin.") say("") say_reward("Oyuncu adı:") esyasinaBakilacakOyuncuAdi = string.format(input()) oyuncuAra = find_pc_by_name(esyasinaBakilacakOyuncuAdi) if esyasinaBakilacakOyuncuAdi == "" or esyasinaBakilacakOyuncuAdi == nil then say_title("Uyarı:") say("") say_reward("Boş bırakamazsınız!") say("") return elseif esyasinaBakilacakOyuncuAdi == karakter_isim then say_title("Uyarı:") say("") say_reward("Kendi isminizi giremezsiniz!") say("") return elseif oyuncuAra == 0 then say_title("Uyarı:") say("") say_reward("Aradığınız oyuncu oyunda değil yada böyle biri yok.") say("") return else if not pc.is_near_vid(oyuncuAra,10) then say_title("Uyarı:") say("") say_reward("Oyuncuya çok uzaksınız!") say("") else esyaBakmaDavetiYolla = confirm(oyuncuAra,karakter_isim.." Giydiğiniz eşyaları görmek istiyor?",30) if esyaBakmaDavetiYolla == CONFIRM_OK then ---- oyuncu bilgileri o_id = pc.select(oyuncuAra) oyuncu_id = pc.get_player_id() oyuncu_isim = pc.get_name() pc.select(o_id) ---- end esyaKodları = {} esyaAdlari = {} esyaKimlik = {} window  = "EQUIPMENT" esyayiKontrolEt = mysql_query10("select * from player.item where owner_id='"..oyuncu_id.."' and window='"..window.."' ") esyayiKontrolEtSay = tonumber(table.getn(esyayiKontrolEt)) if esyayiKontrolEtSay > 0 then for i=1,esyayiKontrolEtSay,1 do esyaKodları[i] = esyayiKontrolEt.vnum[i] esyaKimlik[i] = esyayiKontrolEt.id[i] end esyaKodlarıSay = tonumber(table.getn(esyaKodları)) for m=1,esyaKodlarıSay,1 do esyaKodu = esyaKodları[m] esyaAdKontrol = mysql_query10("select * from player.item_proto where vnum='"..esyaKodu.."' ") esyaAdlari[m] = esyaAdKontrol.locale_name[1] end esyaAdlariSay = tonumber(table.getn(esyaAdlari)) esyaAdlari[esyaAdlariSay + 1] = "Kapat" uzerindekiEsyalarSec = select_table(esyaAdlari) for k=1,esyaAdlariSay,1 do if uzerindekiEsyalarSec == esyaAdlariSay + 1 then return end if uzerindekiEsyalarSec == k then esyaKimlik = esyaKimlik[k] esyaKodu = esyaKodları[k] esyaSorgula = mysql_query10("select * from player.item where id='"..esyaKimlik.."' and owner_id='"..oyuncu_id.."' ") m=0 say_title("Eşya Bilgileri:") say_item_vnum(esyaKodu) say_reward("[WINDOW_SIZE width;350|height;400]EFSUNLAR")  for i=13,21,2 do if tonumber(esyaSorgula[1][i]) != 0 then say(esya_kontrol.efsun(tonumber(esyaSorgula[1][i]))..tostring(esyaSorgula[1][i+1])) m = 1 end end if m == 0 then say("") say_title("Eşyada herhangi bir efsun ekli değildir.") end say("") say_reward("TAŞLAR") for i=7,9,1 do say(esya_kontrol.tas(tonumber(esyaSorgula[1][i])))  end say("") end end else say_title("Uyarı:") say("") say_reward("Oyuncunun üzerinde giyili eşya bulunamadı.") say("") end else say_title("Uyarı:") say("") say_reward("Oyuncu eşyalarına bakma isteğinizi reddetti.") say("") return end -- CONFIRM_OK endi end -- uzaklık kontrol endi end -- kontrol if endi  end -- when endi function tas(vnum)              local tas =                {                    [0] = {"Bu Nesneye Taş Eklenemez "},                  [1] = {"Taş eklenmemiş "},                  [28430] = {"Kavrama Taşı +4"},                   [28431] = {"Öldürücü Darbe Taşı +4"},                   [28432] = {"Soğutma Taşı +4"},                   [28433] = {"Savaşçıdan Koruyan Taş +4"},                   [28434] = {"Ninjadan Koruyan Taş +4"},                   [28435] = {"Suradan Koruyan Taş +4"},                   [28436] = {"Şamandan Koruyan Taş +4"},                   [28437] = {"Canavardan Koruyan Taş +4"},                   [28438] = {"Korunma Taşı +4"},                   [28439] = {"Kurnazlık Taşı +4"},                   [28440] = {"Sihir Taşı +4"},                  [28441] = {"Yaşam Taşı +4"},                  [28442] = {"Savunma Taşı +4"},                  [28443] = {"Hız Taşı +4"},                  [28960] = {"Kırık Taş Parçası "},              }               return tas[vnum][1]               end                            function efsun(vnum)              local efsun =                {                   [0] = {"Efsun Yok "},                  [1] = {"Max HP +"},                  [2] = {"Max SP +"},                  [3] = {"Yaşam Enerjisi +"},                  [4] = {"Zeka +"},                  [5] = {"Güç +"},                  [6] = {"Çeviklik +"},                  [7] = {"Saldırı Hızı +"},                  [8] = {"Hareket Hızı +"},                  [9] = {"Büyü Hızı +"},                  [10] = {"HP Üretimi %"},                  [11] = {"SP Üretimi %"},                  [12] = {"Zehirleme Değişimi %"},                  [13] = {"Sersemletme Değişimi %"},                  [14] = {"Yavaşlık Değişimi %"},                  [15] = {"Kritik Vuruş Şansı %"},                  [16] = {"Delici Vuruş Şansı %"},                  [17] = {"Yarı İnsanlara Karşı Güçlü %"},                  [18] = {"Hayvanlara Karşı Güçlü %"},                  [19] = {"Orklara Karşı Güçlü %"},                  [20] = {"Mistiklere Karşı Güçlü %"},                  [21] = {"Ölümsüzlere Karşı Güçlü %"},                  [22] = {"Şeytanlara Karşı Güçlü %"},                  [23] = {"Hasar HP Tarafından Emilicek %"},                  [24] = {"Hasar SP Tarafından Emilicek %"},                  [25] = {"Düşmanın Spsini Çalma Sansi %"},                  [26] = {"Vuruş Yapıldığında Spyi geri Çalma %"},                  [27] = {"Beden Karşısındaki Atakların Bloklanması %"},                  [28] = {"Oklardan Korunma Şansı %"},                  [29] = {"Kılıç Savunması %"},                  [30] = {"Çift-El Savunması %"},                  [31] = {"Bıçak Savunması %"},                  [32] = {"Çan Savunması %"},                  [33] = {"Yelpaze Savunması %"},                  [34] = {"Oka Karşı Dayanıklılık %"},                  [35] = {"Ateşe Karşı Dayanıklılık %"},                  [36] = {"Simgeye Karşı Dayanıklılık %"},                  [37] = {"Büyüye Karşı Dayanıklılık %"},                  [38] = {"Rüzgar Dayanıklılığı %"},                  [39] = {"Vücut Darbesini Yansıtma Şansı %"},                  [40] = {"Lanet Yansıtılması %"},                  [41] = {"Zehre Karşı Koyma %"},                  [42] = {"Sp Yüklenmesi Değişti"},                  [43] = {"Yang Düşme Şansı %"},                  [44] = {"Yang Düşme Şansı %"},                  [45] = {"Eşya Düşme Şansı %"},                  [46] = {"Trank effekt zuwachs %"},                  [47] = {"HP Yüklenmesi Değişti %"},                  [48] = {"Sersemletme Karşısında Bağışıklık %"},                  [49] = {"Yavaşlatma Karşısında Bağışıklık %"},                  [50] = {"Imun gegen Stürzen "},                  [51] = {" "},                  [52] = {"Bogenreichweite +"},                  [53] = {"Saldırı Değeri +"},                  [54] = {"Savunma +"},                  [55] = {"Büyülü Saldırı Değeri +"},                  [56] = {"Büyülü Savunma +"},                  [57] = {" "},                  [58] = {"Max Dayanıklılık +"},                  [59] = {"Savaşçılara Karşı Güçlü %"},                  [60] = {"Ninjalara Karşı Güçlü %"},                  [61] = {"Suralara Karşı Güçlü %"},                  [62] = {"Şamanlara Karşı Güçlü %"},                  [63] = {"Yaratıklara Karşı Güçlü %"},                  [64] = {"Saldırı Değeri +"},                  [65] = {"Savunma +"},                  [66] = {"EXP +?%"},                  [67] = {"Dropchance [Gegenstände] "},                  [68] = {"Dropchance [Gold] "},                  [69] = {" "},                  [70] = {" "},                  [71] = {"Beceri Hasarı %"},                  [72] = {"Ortalama Zarar %"},                  [73] = {"Widerstand gegen Fertigkeitsschaden "},                  [74] = {"durchschn. Schadenswiderstand "},                  [75] = {" "},                  [76] = {"iCafe exp-bonus "},                  [77] = {"iCafe Chance auf erbeuten von gegenständen "},                  [78] = {"Savaşçı Saldırılarına Karşı Savunma %"},                  [79] = {"Ninja Saldırılarına Karşı Savunma %"},                  [80] = {"Sura Saldırılarına Karşı Savunma %"},                  [81] = {"Şaman Saldırılarına Karşı Savunma %"},              }                return efsun[vnum][1]           end  end end


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

Putty ile de işimiz bitti.

3-) Oyuna dönüyoruz ve bir GM karakter ile "/reload q" çekiyoruz.
4-) Daha sonra 20087 kodlu NPC'den sistemi deneyebilirsiniz.

Oyuncu Eşyasını Kontrol Etme Sistemi [LUA]

Metin2 sunucularında quest geliştirme süreçlerinde, oyuncunun sahip olduğu eşyaları kontrol etmek oldukça önemli bir konudur. Bu kontrol sayesinde, quest sistemlerinde belirli eşyaların varlığına göre farklı işlemler yapılabilir. Bu yazıda, LUA tabanlı bir quest sisteminde nasıl oyuncu eşyaları kontrol edilir ve bu kontrolün nasıl yapıldığını detaylıca ele alacağız.

Oyuncu Eşya Kontrolü Nedir?

Metin2 quest sistemlerinde, oyuncunun envanterindeki eşyaların varlığını veya yokluğunu kontrol etmek, quest akışını yönlendirmede kritik rol oynar. Örneğin, bir görevin tamamlanması için oyuncunun belirli bir eşyaya sahip olması gerekirse, sistem bu eşyayı kontrol eder ve buna göre yanıt verir. Bu kontrol genellikle LUA dili üzerinden yapılır.

LUA ile Eşya Kontrolünün Temelleri

LUA tabanlı quest sistemlerinde eşya kontrolü, genellikle pc.get_item_count() fonksiyonu ile sağlanır. Bu fonksiyon, oyuncunun envanterinde belirtilen eşyadan kaç adet bulunduğunu döndürür. Örneğin:

local itemCount = pc.get_item_count(72727)

Yukarıdaki satır, oyuncunun envanterinde 72727 ID'li eşyadan kaç adet olduğunu itemCount değişkenine atar. Eğer bu değer 0'dan büyükse, oyuncuda bu eşya vardır anlamına gelir.

Quest İçerisinde Eşya Kontrolü Uygulaması

Bir quest dosyasında eşya kontrolü yaparken, genellikle bir koşul bloğu içinde bu kontrol yapılır. Örneğin, oyuncudan belirli bir eşya isteniyorsa:

if pc.get_item_count(72727) > 0 then
-- Eşya varsa yapılacak işlem
else
-- Eşya yoksa yapılacak işlem
end

Bu yapı,.quest dosyasında tanımlanan bir quest'in içinde yer alabilir ve oyuncunun eylemlerine göre akışı yönlendirir.

Eşya Kontrolünde Dikkat Edilmesi Gerekenler

Eşya kontrol işlemleri sırasında bazı önemli noktalara dikkat etmek gerekir. Bunlardan birisi, eşya ID'lerinin doğru girilmesidir. Yanlış ID kullanımı, quest sisteminin beklendiği gibi çalışmasını engelleyebilir. Ayrıca, bazı eşyalar stacklenebilirken bazıları stacklenemez; bu durum da kontrol mekanizmalarını etkiler.

Özel Quest Geliştirme Sürecinde Eşya Kontrolü

Özel quest geliştirme sürecinde, oyuncu envanterindeki eşyaları kontrol etmek, ödüllerin doğru dağıtılması ve görevlerin doğru şekilde tamamlanması için önemlidir. Bu kontroller, Metin2 sunucularında daha akıcı ve kullanıcı dostu bir deneyim sunar.

Sonuç

LUA temelli quest sistemlerinde oyuncu eşya kontrolü, sistemin stabil ve verimli çalışması için kritik öneme sahiptir. Doğru kullanıldığında, bu kontrol mekanizması sayesinde gelişmiş görev sistemleri oluşturulabilir. Metin2 Lobby olarak, quest geliştirme konusunda daha fazla kaynak ve örnek bulabilirsiniz.


Player Item Check System [LUA]

In Metin2 server quest development processes, checking the items possessed by players is a crucial aspect. This control allows different operations to be performed based on whether certain items exist within the quest system. In this article, we will explore how to check player items within an LUA-based quest system and provide detailed insights into how this mechanism works.

What Is Player Item Checking?

In Metin2 quest systems, verifying the existence or absence of specific items in a player's inventory plays a critical role in directing the flow of quests. For instance, if completing a task requires the player to possess a particular item, the system checks for that item and responds accordingly. This type of verification is typically done using the LUA programming language.

Basics of Item Checking with LUA

Item checking in LUA-based quest systems is generally accomplished using the function pc.get_item_count(). This function returns the number of a specified item that the player has in their inventory. For example:

local itemCount = pc.get_item_count(72727)

The above line stores the number of items with ID 72727 that the player has in their inventory into the variable itemCount. If this value is greater than zero, it indicates that the player possesses the item.

Implementing Item Checks Within Quests

When implementing item checks inside a quest file, they are usually placed within a conditional block. For example, if a specific item is required from the player:

if pc.get_item_count(72727) > 0 then
-- Action to perform if item exists
else
-- Action to perform if item does not exist
end

This structure can be included within a .quest file and guide the flow depending on the player's actions.

Important Considerations When Checking Items

Certain important points must be considered during item checking processes. One of these is ensuring that item IDs are entered correctly. Incorrect IDs can prevent the quest system from functioning as expected. Additionally, while some items may stack, others do not; this affects how the checking mechanisms operate.

Item Checking in Custom Quest Development

During the process of developing custom quests, checking items in the player's inventory is essential for the correct distribution of rewards and the proper completion of tasks. These checks contribute to a more fluid and user-friendly experience on Metin2 servers.

Conclusion

Player item checking in LUA-based quest systems is critical for ensuring stable and efficient operation. When used correctly, these checking mechanisms enable the creation of advanced quest systems. Visit Metin2 Lobby for more resources and examples on quest development.
 

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

Geri
Üst Alt