Beceri Değiştirme 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 79

Admin

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

Şimdi sizlerle Beceri Değiştirme Sistemini paylaşacağım.


Peki nedir Beceri Değiştirme Sistemini?

Oyuncunun becerisini yetenekleri sıfırlamadan değiştirmeye yarar. Ne demek istiyorum?

Şöyle ki; G1, M3 ve 2 adet de P yeteneğiniz olduğunu düşünelim ve Zihinsel bir savaşçısınız. Bu Quest sayesinde becerinizi değiştirip, Bedensel beceriye dönerseniz yeteneklerinizin değeleri sıfırlanmaz ve olduğu gibi geçer: G1, M3 ve 2 tane P şeklinde. Sistem bu şekilde işler. 40004 yüzüğüne ayarlanmıştır ve kullanıldıktan sonra yüzük silinir. Ayrıca değiştirirken de 10m yang alır.



LUA dosyasını oluşturma:

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

Kod:
quest beceridegistir begin     state start begin         when 40004.use begin             if pc.get_gold() < 10000000 then                 say_title("Uyarı:")                 say("")                 say_reward("Beceri değiştirmek için hesabında yeterli yang yok.")                 say("")                 return             elseif pc.get_level() < 5 then                 say_title("Uyarı:")                 say("")                 say_reward("Beceri değiştirme sistemini kullanabilmen için en az[ENTER]5 seviye olman gerekli.")                 say("")                 return             elseif pc.get_skill_group() == 0 then                 say_title("Uyarı:")                 say("")                 say_reward("Önce kendine beceri belirlemen gerekiyor.")                 say("")                 return             end             karakterSinif = pc.get_job()             if karakterSinif == 0 or karakterSinif == 4 then -- savaşçı                 karakterYetenek = pc.get_skill_group() -- burada hangi sınıf olduğunu seçiyor                 if karakterYetenek == 1 then                         say_title("Bilgilendirme:")                         say("")                         say("Merhaba "..pc.get_name())                         say("Buradan başka bir beceriye geçebilirsin.")                         say("Sahip olduğun yeteneklerin özelliklerini kaybetmeyeceksin.")                         say("Bunun için 10m yang ödemen gerekiyor.")                         say("Diğer beceriye geçmek istiyor musun?")                         say("")                         yetenekDegistir = select("Evet","Hayır")                             if yetenekDegistir == 1 then                                 pc.change_money(-10000000)                                 pc.set_skill_group(2)                                 pc.set_skill_level(16,pc.get_skill_level(1))                                 pc.set_skill_level(17,pc.get_skill_level(2))                                 pc.set_skill_level(18,pc.get_skill_level(3))                                 pc.set_skill_level(19,pc.get_skill_level(4))                                 pc.set_skill_level(20,pc.get_skill_level(5))                                 item.remove()                                 say_title("Bilgilendirme:")                                 say("")                                 say("Beceriniz değiştirildi. Hesabınızdan 10m yang alındı.")                                 say("3 saniye içerisinde oyundan çıkış yapacaksınız.")                                 say("")                                 command("logout")                             end                     elseif karakterYetenek == 2 then                          say_title("Bilgilendirme:")                         say("")                         say("Merhaba "..pc.get_name())                         say("Buradan başka bir beceriye geçebilirsin.")                         say("Sahip olduğun yeteneklerin özelliklerini kaybetmeyeceksin.")                         say("Bunun için 10m yang ödemen gerekiyor.")                         say("Diğer beceriye geçmek istiyor musun?")                         say("")                         yetenekDegistir = select("Evet","Hayır")                             if yetenekDegistir == 1 then                                 pc.change_money(-10000000)                                 pc.set_skill_group(1)                                 pc.set_skill_level(1,pc.get_skill_level(16))                                 pc.set_skill_level(2,pc.get_skill_level(17))                                 pc.set_skill_level(3,pc.get_skill_level(18))                                 pc.set_skill_level(4,pc.get_skill_level(19))                                 pc.set_skill_level(5,pc.get_skill_level(20))                                 item.remove()                                 say_title("Bilgilendirme:")                                 say("")                                 say("Beceriniz değiştirildi. Hesabınızdan 10m yang alındı.")                                 say("3 saniye içerisinde oyundan çıkış yapacaksınız.")                                 say("")                                 command("logout")                             end                 end             elseif karakterSinif == 1 or karakterSinif == 5 then -- ninja                 karakterYetenek = pc.get_skill_group()                 if karakterYetenek == 1 then                         say_title("Bilgilendirme:")                         say("")                         say("Merhaba "..pc.get_name())                         say("Buradan başka bir beceriye geçebilirsin.")                         say("Sahip olduğun yeteneklerin özelliklerini kaybetmeyeceksin.")                         say("Bunun için 10m yang ödemen gerekiyor.")                         say("Diğer beceriye geçmek istiyor musun?")                         say("")                         yetenekDegistir = select("Evet","Hayır")                             if yetenekDegistir == 1 then                                 pc.change_money(-10000000)                                 pc.set_skill_group(2)                                 pc.set_skill_level(49,pc.get_skill_level(31))                                 pc.set_skill_level(50,pc.get_skill_level(32))                                 pc.set_skill_level(51,pc.get_skill_level(33))                                 pc.set_skill_level(52,pc.get_skill_level(34))                                 pc.set_skill_level(53,pc.get_skill_level(35))                                 item.remove()                                 say_title("Bilgilendirme:")                                 say("")                                 say("Beceriniz değiştirildi. Hesabınızdan 10m yang alındı.")                                 say("3 saniye içerisinde oyundan çıkış yapacaksınız.")                                 say("")                                 command("logout")                             end                     elseif karakterYetenek == 2 then                          say_title("Bilgilendirme:")                         say("")                         say("Merhaba "..pc.get_name())                         say("Buradan başka bir beceriye geçebilirsin.")                         say("Sahip olduğun yeteneklerin özelliklerini kaybetmeyeceksin.")                         say("Bunun için 10m yang ödemen gerekiyor.")                         say("Diğer beceriye geçmek istiyor musun?")                         say("")                         yetenekDegistir = select("Evet","Hayır")                             if yetenekDegistir == 1 then                                 pc.change_money(-10000000)                                 pc.set_skill_group(1)                                 pc.set_skill_level(31,pc.get_skill_level(49))                                 pc.set_skill_level(32,pc.get_skill_level(50))                                 pc.set_skill_level(33,pc.get_skill_level(51))                                 pc.set_skill_level(34,pc.get_skill_level(52))                                 pc.set_skill_level(35,pc.get_skill_level(53))                                 item.remove()                                 say_title("Bilgilendirme:")                                 say("")                                 say("Beceriniz değiştirildi. Hesabınızdan 10m yang alındı.")                                 say("3 saniye içerisinde oyundan çıkış yapacaksınız.")                                 say("")                                 command("logout")                             end                 end             elseif karakterSinif == 2 or karakterSinif == 6 then -- sura                 karakterYetenek = pc.get_skill_group()                 if karakterYetenek == 1 then                         say_title("Bilgilendirme:")                         say("")                                                 say("Merhaba "..pc.get_name())                         say("Buradan başka bir beceriye geçebilirsin.")                         say("Sahip olduğun yeteneklerin özelliklerini kaybetmeyeceksin.")                         say("Bunun için 10m yang ödemen gerekiyor.")                         say("Diğer beceriye geçmek istiyor musun?")                         say("")                         yetenekDegistir = select("Evet","Hayır")                             if yetenekDegistir == 1 then                                 pc.change_money(-10000000)                                 pc.set_skill_group(2)                                 pc.set_skill_level(76,pc.get_skill_level(61))                                 pc.set_skill_level(77,pc.get_skill_level(62))                                 pc.set_skill_level(78,pc.get_skill_level(63))                                 pc.set_skill_level(79,pc.get_skill_level(64))                                 pc.set_skill_level(80,pc.get_skill_level(65))                                 pc.set_skill_level(81,pc.get_skill_level(66))                                 item.remove()                                 say_title("Bilgilendirme:")                                 say("")                                 say("Beceriniz değiştirildi. Hesabınızdan 10m yang alındı.")                                 say("3 saniye içerisinde oyundan çıkış yapacaksınız.")                                 say("")                                 command("logout")                             end                     elseif karakterYetenek == 2 then                          say_title("Bilgilendirme:")                         say("")                         say("Merhaba "..pc.get_name())                         say("Buradan başka bir beceriye geçebilirsin.")                         say("Sahip olduğun yeteneklerin özelliklerini kaybetmeyeceksin.")                         say("Bunun için 10m yang ödemen gerekiyor.")                         say("Diğer beceriye geçmek istiyor musun?")                         say("")                         yetenekDegistir = select("Evet","Hayır")                             if yetenekDegistir == 1 then                                 pc.change_money(-10000000)                                 pc.set_skill_group(1)                                 pc.set_skill_level(61,pc.get_skill_level(76))                                 pc.set_skill_level(62,pc.get_skill_level(77))                                 pc.set_skill_level(63,pc.get_skill_level(78))                                 pc.set_skill_level(64,pc.get_skill_level(79))                                 pc.set_skill_level(65,pc.get_skill_level(80))                                 pc.set_skill_level(66,pc.get_skill_level(81))                                 item.remove()                                 say_title("Bilgilendirme:")                                 say("")                                 say("Beceriniz değiştirildi. Hesabınızdan 10m yang alındı.")                                 say("3 saniye içerisinde oyundan çıkış yapacaksınız.")                                 say("")                                 command("logout")                             end                 elseif karakterSinif == 3 or karakterSinif == 7 then -- şaman                 karakterYetenek = pc.get_skill_group()                 if karakterYetenek == 1 then                         say_title("Bilgilendirme:")                         say("")                         say("Merhaba "..pc.get_name())                         say("Buradan başka bir beceriye geçebilirsin.")                         say("Sahip olduğun yeteneklerin özelliklerini kaybetmeyeceksin.")                         say("Bunun için 10m yang ödemen gerekiyor.")                         say("Diğer beceriye geçmek istiyor musun?")                         say("")                         yetenekDegistir = select("Evet","Hayır")                             if yetenekDegistir == 1 then                                 pc.change_money(-10000000)                                 pc.set_skill_group(2)                                 pc.set_skill_level(106,pc.get_skill_level(91))                                 pc.set_skill_level(107,pc.get_skill_level(92))                                 pc.set_skill_level(108,pc.get_skill_level(93))                                 pc.set_skill_level(109,pc.get_skill_level(94))                                 pc.set_skill_level(110,pc.get_skill_level(95))                                 pc.set_skill_level(111,pc.get_skill_level(96))                                 item.remove()                                 say_title("Bilgilendirme:")                                 say("")                                 say("Beceriniz değiştirildi. Hesabınızdan 10m yang alındı.")                                 say("3 saniye içerisinde oyundan çıkış yapacaksınız.")                                 say("")                                 command("logout")                             end                     elseif karakterYetenek == 2 then                          say_title("Bilgilendirme:")                         say("")                         say("Merhaba "..pc.get_name())                         say("Buradan başka bir beceriye geçebilirsin.")                         say("Sahip olduğun yeteneklerin özelliklerini kaybetmeyeceksin.")                         say("Bunun için 10m yang ödemen gerekiyor.")                         say("Diğer beceriye geçmek istiyor musun?")                         say("")                         yetenekDegistir = select("Evet","Hayır")                             if yetenekDegistir == 1 then                                 pc.change_money(-10000000)                                 pc.set_skill_group(1)                                 pc.set_skill_level(91,pc.get_skill_level(106))                                 pc.set_skill_level(92,pc.get_skill_level(107))                                 pc.set_skill_level(93,pc.get_skill_level(108))                                 pc.set_skill_level(94,pc.get_skill_level(109))                                 pc.set_skill_level(95,pc.get_skill_level(110))                                 pc.set_skill_level(96,pc.get_skill_level(111))                                 item.remove()                                 say_title("Bilgilendirme:")                                 say("")                                 say("Beceriniz değiştirildi. Hesabınızdan 10m yang alındı.")                                 say("3 saniye içerisinde oyundan çıkış yapacaksınız.")                                 say("")                                 command("logout")                             end                         end                 end-- if endi             end                  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 beceridegistir.lua

Putty ile de işimiz bitti.
3-) Oyuna dönüyoruz ve bir GM karakter ile "/reload q" çekiyoruz.
4-) Daha sonra 40004 yü sistemi kontrol edebilirsiniz.



Hazır indirmek isteyenler için:




Beceri Değiştirme Sistemi[LUA] Nedir ve Metin2'de Nasıl Uygulanır?

Metin2 sunucularında oyuncuların karakter gelişimini daha dinamik hale getirmek ve oyun deneyimini zenginleştirmek adına beceri sistemleri büyük önem taşır. Bu sistemlerden birisi olan Beceri Değiştirme Sistemi[LUA], oyuncuların karakterlerinin farklı beceri setleri arasında geçiş yapabilmesine olanak tanır. Bu yazıda, beceri değiştirme sisteminin ne olduğu, nasıl çalıştığı ve LUA script diliyle nasıl entegre edildiği üzerine odaklanacağız.

Beceri Değiştirme Sistemi Nedir?

Beceri Değiştirme Sistemi, oyuncunun karakterine ait mevcut beceri seti yerine farklı bir beceri setini aktif hale getirmesini sağlar. Bu sayede, örneğin bir savaşçı karakteri kısa mesafeli saldırı becerileri yerine menzilli becerileri kullanabilir veya büyücü karakteri destek yeteneklerine yönelerek grup yürüyüşlerinde yardımcı rol üstlenebilir. Bu esneklik, oyuncuların farklı oynatma stillerini denemelerine ve karakterlerini kişiselleştirmelerine olanak tanır.

Metin2 Üzerinde LUA ile Beceri Değiştirme Sistemi

Metin2 oyunu, özellikle sunucu tarafında özelleştirme imkanları sunmak için LUA script dilini yoğun olarak kullanır. Beceri değiştirme sistemi de bu dille yazılmış özel scriptler aracılığıyla uygulanabilir. Bu sistem genellikle bir quest dosyası üzerinden çalışır ve oyuncu belirli eylemleri gerçekleştirdiğinde sistem devreye girer. Örneğin, belirli bir NPC ile konuşulduğunda ya da özel bir item kullanıldığında beceri seti değiştirilebilir.

Beceri Değiştirme Sisteminin Kurulumu

Sistemin doğru çalışması için öncelikle LUA bilgisi gerektirir. Sunucu dosyalarında yer alan quest klasörüne özel bir beceri değiştirme quest dosyası eklenmelidir. Bu dosya, beceri listesi, aktif beceri kontrolü, beceri değişimi ve geri dönüş gibi işlemleri yönetir. Ayrıca, client tarafında da kullanıcı arayüzünde gerekli butonlar veya menüler ayarlanmalıdır. Bu işlem sırasında dikkat edilmesi gereken en önemli konulardan biri, beceri verilerinin doğru şekilde saklanması ve yüklenmesidir. Bu işlem genellikle flag veya state kullanılarak yapılır.

Beceri Sistemleri ve Quest Scriptleri

Metin2 üzerinde beceri sistemleri genellikle quest dosyaları ile yönetilir. LUA tabanlı quest scriptleri, beceri değiştirme işlemlerini tetiklemek için kullanılır. Oyuncu bir trigger ile beceri değiştirme talebinde bulunduğunda, quest çalışarak önceki becerileri kaydeder ve yeni becerileri aktif eder. Bu süreçte timer kullanılarak beceri değişimine süre sınırlaması getirilebilir. Böylece hileli kullanım engellenmiş olur. Quest scriptlerinde ayrıca reward sistemleri de entegre edilebilir; örneğin beceri değiştirme işlemi için belirli item veya gold ödemesi istenebilir.

Hata Ayıklama ve Geliştirme

Quest geliştirme sürecinde karşılaşılabilecek en sık sorunlardan biri hata oluşmasıdır. Beceri değiştirme sistemi gibi karmaşık yapılar, debug işlemleri gerektirebilir. Hatalar genellikle beceri listelerinin doğru yüklenmemesi, state değerlerinin yanlış tanımlanması ya da LUA fonksiyonlarında yaşanan sözdizimi eksikliklerinden kaynaklanabilir. Geliştiriciler, debug araçlarını kullanarak beceri değiştirme sistemini adım adım test edebilir ve olası hata durumlarını çözebilir. Ayrıca, Metin2 geliştirici toplulukları (Metin2dev, Martysama) gibi platformlarda örnek scriptler ve destek alınabilir.

Sonuç

Beceri Değiştirme Sistemi[LUA], Metin2 sunucularında karakter gelişimini çeşitlendiren ve oyunculara daha fazla özgürlük sunan güçlü bir özelliktir. Doğru uygulandığında hem oyun içi deneyimi artırır hem de oyuncuların farklı stratejiler geliştirmesine olanak tanır. Bu sistemin kurulumu ve yönetimi, LUA script bilgisi gerektirse de, Metin2 geliştiricileri için oldukça faydalı bir araçtır. Beceri sistemleri, quest dosyaları, NPC etkileşimleri, reward sistemleri ve daha birçok unsurla birleşerek zengin ve özgün sunucu deneyimleri yaratılabilir.


What is Skill Change System[LUA] and How Is It Implemented in Metin2?

Metin2 servers aim to enhance the player experience and provide dynamic character progression through skill systems. One such system, Skill Change System[LUA], allows players to switch between different skill sets for their characters. In this article, we will focus on what the skill change system is, how it works, and how it integrates with LUA scripting language.

What is the Skill Change System?

The Skill Change System enables a player to activate a different skill set instead of their current one for their character. This way, for instance, a warrior character can use ranged skills instead of close combat abilities, or a mage can shift towards support skills to play a helper role during group raids. This flexibility allows players to experiment with various gameplay styles and personalize their characters.

Skill Change System on Metin2 with LUA

Metin2 extensively uses LUA scripting language to offer customization options, especially on the server side. The skill change system can also be implemented through specially written scripts in this language. Usually, this system operates via a quest file where specific actions trigger the skill swap. For example, speaking with a certain NPC or using a special item may initiate a skill set change.

Installing the Skill Change System

Implementation of the system requires knowledge of LUA. A custom skill change quest file must be added to the quest folder in your server files. This file manages skill lists, active skill checks, swapping skills, and revert actions. Additionally, the client-side user interface must be configured with necessary buttons or menus. One of the most important aspects during setup is properly saving and loading skill data. This is typically done using flag or state.

Skill Systems and Quest Scripts

In Metin2, skill systems are usually managed by quest files. LUA-based quest scripts trigger skill change operations. When a player triggers a skill swap, the quest saves previous skills and activates new ones. During this process, a timer may be used to limit how often skill swaps can occur, preventing abuse. Reward systems can also be integrated into quest scripts; for example, requiring specific items or gold for a skill swap operation.

Debugging and Development

One of the most common issues during quest development is encountering errors. Complex structures like skill change systems require debug operations. Errors often stem from incorrect loading of skill lists, wrong state definitions, or syntax errors in LUA functions. Developers can test the skill change system step-by-step using debug tools and resolve potential error conditions. Moreover, developer communities such as Metin2dev or Martysama can provide sample scripts and support.

Conclusion

Skill Change System[LUA] is a powerful feature that diversifies character progression and offers more freedom to players on Metin2 servers. When applied correctly, it enhances in-game experience and allows players to develop different strategies. Although its setup and management require LUA scripting knowledge, it serves as a valuable tool for Metin2 developers. Combined with quest files, NPC interactions, reward systems, and other elements, rich and original server experiences can be created.
 

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

Geri
Üst Alt