Bar Buglarına Kesin Çözüm ! - LykeeN Farkı ile..

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 40

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Hali hazırda zaten yazmış olduğum quest var :)
Fakat şunu söyleyeyim ben çırak sandıklarını kullanmıştım. Buna dikkat edelim çırak sandıklarınız bozulur. Çırak sandıklarının bozulmaması için lütfen anlatımda ki kodları dikkatli şekilde teker teker değiştirin.
Ek olarak şimdi kardeşim sen bu kodları verdinde ne işe yarayacak bunlar derseniz gerekli açıklama hemen bir satır altta;
Bu makaleyi okuyup birebir yaparsanız artık Barlar ticarete koyulmayacak, depoya koyulmayacak veya yere atılamayacaktır. NPC'De bar sandıkları paket halinde duracaktır ve oyuncu bar sandığını alıp açtığında içinden ilgili bar sandığı çıkacaktır. Bu bar sandığını kullandığında ilgili bar envanterine gelecek ve açtığında ilgili miktar karaktere işlenecektir. E kardeşim sen bunu yaptın iyi güzel hoş oyuncular nasıl bu barların ticaretini yapacak derseniz bu sırada kodlamalarımız devreye giriyor. Oyuncu açmış olduğu barı tekrar npcye götüecek ve paketleyebilecektir. Paketlenmiş olan sandığında ticareti açıktır. Dahada uzatmadan asıl konuya geçelim.
-----------------------------------------------------------------------------------------------------------------------------------------------------------
NPC için Kodlar;
50M Bar sandığı için ; 50187 kodlu sandık.
50M Bar ; 80003
100M Bar sandığı için ; 50188 kodlu sandık.
100M Bar ; 80004
250M Bar sandığı için ; 50189 kodlu sandık.
250M Bar ; 80005
500M Bar sandığı için ; 50190 kodlu sandık.
500M Bar ; 80006
750M Bar sandığı için ; 50191 kodlu sandık.
750M Bar ; 80007

Not: Altta verdiğim kodları Notepad++ ile yeni bir txt dosyasına yapıştırın. Kodlama dilinin Lua olmasına dikkat edin ve mutlaka ANSI ile yazılmış olsun. Örneğin 50M Bar Paketle Lua'sının ismini koddaki "quest ellibar begin" ile belirtilmiş olan "ellibar" olarak adlandırın. Anlamınız için yine bir örnek daha 100M Bar Paketle Lua'sının ismini yuzbar olarak kaydedin.

* 50M Bar Paketle *

[/RIGHT]
Kod:
quest ellibar begin     state start begin         when 20095.chat." 50M BAR Paketle " begin                 say_orange ( "50M Bar Paketle;" )             say_white ( "" )             say_white ( "Merhaba ".. pc.get_name() ..";" )             say_white ( "Demek 50M Bar paketlemek istiyorsun;" )             say_white ( "Emin misin?" )             local s = select ( "Evet" , "Hayır" )              if s == 1 then                 if pc . count_item ( 80003 ) < 1 then                 say_orange ( "50M Bar Paketle;" )                  say_white ( "" )                 say_white ( "Merhaba ".. pc.get_name() ..";" )                 say_white ( "Bana 50M Bar vermediğin sürece sana paketleme yapmam." )                 say_white ( "Bu devirde herşey karşılıklı !" )                 return                 end             say_orange ( "50M BAR Paketle;" )             say ( "" )             say_reward ( "50M BAR Başarıyla Paketlendi!" )              say_white ( "Tekrar işin düşerse ben hep buralardayım." )             say ( "" )             say_green ( "İyi oyunlar " ..pc.getname().. "!" )              pc.give_item2("50187",1)             pc.removeitem("80003",1)              end         end     end end
*100M Bar Paketle*
Kod:
quest yuzbar begin     state start begin         when 20095.chat." 100M BAR Paketle " begin                 say_orange ( "100M Bar Paketle;" )             say_white ( "" )             say_white ( "Merhaba ".. pc.get_name() ..";" )             say_white ( "Demek 100M Bar paketlemek istiyorsun;" )             say_white ( "Emin misin?" )             local s = select ( "Evet" , "Hayır" )              if s == 1 then                 if pc . count_item ( 80004 ) < 1 then                 say_orange ( "100M Bar Paketle;" )                  say_white ( "" )                 say_white ( "Merhaba ".. pc.get_name() ..";" )                 say_white ( "Bana 50M Bar vermediğin sürece sana paketleme yapmam." )                 say_white ( "Bu devirde herşey karşılıklı !" )                 return                 end             say_orange ( "100M BAR Paketle;" )             say ( "" )             say_reward ( "100M BAR Başarıyla Paketlendi!" )              say_white ( "Tekrar işin düşerse ben hep buralardayım." )             say ( "" )             say_green ( "İyi oyunlar " ..pc.getname().. "!" )              pc.give_item2("50188",1)             pc.removeitem("80004",1)              end         end     end end

*250M Bar Paketle*
Kod:
quest ikiyuzellibar begin     state start begin         when 20095.chat." 250M BAR Paketle " begin                 say_orange ( "250M Bar Paketle;" )             say_white ( "" )             say_white ( "Merhaba ".. pc.get_name() ..";" )             say_white ( "Demek 250M Bar paketlemek istiyorsun;" )             say_white ( "Emin misin?" )             local s = select ( "Evet" , "Hayır" )              if s == 1 then                 if pc . count_item ( 80005 ) < 1 then                 say_orange ( "250M Bar Paketle;" )                  say_white ( "" )                 say_white ( "Merhaba ".. pc.get_name() ..";" )                 say_white ( "Bana 250M Bar vermediğin sürece sana paketleme yapmam." )                 say_white ( "Bu devirde herşey karşılıklı !" )                 return                 end             say_orange ( "250M BAR Paketle;" )             say ( "" )             say_reward ( "250M BAR Başarıyla Paketlendi!" )              say_white ( "Tekrar işin düşerse ben hep buralardayım." )             say ( "" )             say_green ( "İyi oyunlar " ..pc.getname().. "!" )              pc.give_item2("50189",1)             pc.removeitem("80005",1)              end         end     end end
*500M Bar Paketle*
Kod:
quest besyuzbar begin     state start begin         when 20095.chat." 500M BAR Paketle " begin                 say_orange ( "500M Bar Paketle;" )             say_white ( "" )             say_white ( "Merhaba ".. pc.get_name() ..";" )             say_white ( "Demek 500M Bar paketlemek istiyorsun;" )             say_white ( "Emin misin?" )             local s = select ( "Evet" , "Hayır" )              if s == 1 then                 if pc . count_item ( 80006 ) < 1 then                 say_orange ( "500M Bar Paketle;" )                  say_white ( "" )                 say_white ( "Merhaba ".. pc.get_name() ..";" )                 say_white ( "Bana 500M Bar vermediğin sürece sana paketleme yapmam." )                 say_white ( "Bu devirde herşey karşılıklı !" )                 return                 end             say_orange ( "500M BAR Paketle;" )             say ( "" )             say_reward ( "500M BAR Başarıyla Paketlendi!" )              say_white ( "Tekrar işin düşerse ben hep buralardayım." )             say ( "" )             say_green ( "İyi oyunlar " ..pc.getname().. "!" )              pc.give_item2("50190",1)             pc.removeitem("80006",1)              end         end     end end
*750M Bar Paketle*
Kod:
quest yediyuzbar begin     state start begin         when 20095.chat." 750M BAR Paketle " begin                 say_orange ( "750M Bar Paketle;" )             say_white ( "" )             say_white ( "Merhaba ".. pc.get_name() ..";" )             say_white ( "Demek 750M Bar paketlemek istiyorsun;" )             say_white ( "Emin misin?" )             local s = select ( "Evet" , "Hayır" )              if s == 1 then                 if pc . count_item ( 80007 ) < 1 then                 say_orange ( "750M Bar Paketle;" )                  say_white ( "" )                 say_white ( "Merhaba ".. pc.get_name() ..";" )                 say_white ( "Bana 750M Bar vermediğin sürece sana paketleme yapmam." )                 say_white ( "Bu devirde herşey karşılıklı !" )                 return                 end             say_orange ( "750M BAR Paketle;" )             say ( "" )             say_reward ( "750M BAR Başarıyla Paketlendi!" )              say_white ( "Tekrar işin düşerse ben hep buralardayım." )             say ( "" )             say_green ( "İyi oyunlar " ..pc.getname().. "!" )              pc.give_item2("50191",1)             pc.removeitem("80007",1)              end         end     end end

-----------------------------------------------------------------------------------------------------------------------------------------------------------
Sandıklar için Kodlar;
Önemli not; Bu aşamaya geldikten sonra ilk önce aşağıdaki işlemleri yapın ve sonra işlemlere devam edin;
Filezilla'dan;
/usr/game/share/locale/turkey/quest/object dizinine girin,
Altta yazmış olduğum klasörleri tamamen silin;
50187
50188
50189
50190
50191

Not: Altta verdiğim kodları Notepad++ ile yeni bir txt dosyasına yapıştırın. Kodlama dilinin Lua olmasına dikkat edin ve mutlaka ANSI ile yazılmış olsun. Örneğin Birs Lua'sının ismini koddaki "quest birs begin" ile belirtilmiş olan "birs" olarak adlandırın. Anlamınız için yine bir örnek daha İkis Lua'sının ismini ikis olarak kaydedin.

*50M Bar Sandığı*
Kod:
quest birs begin     state start begin         when 50187.use begin                 if pc . count_item ( 50187 ) >= 1 then             pc.give_item2("80003",1)             pc.remove_item("50187",1)             end         end     end end
*100M Bar Sandığı*
Kod:
quest ikis begin     state start begin         when 50188.use begin                 if pc . count_item ( 50188 ) >= 1 then             pc.give_item2("80004",1)             pc.remove_item("50188",1)             end         end     end end
*250M Bar Sandığı*
Kod:
quest ucs begin     state start begin         when 50189.use begin                 if pc . count_item ( 50189 ) >= 1 then             pc.give_item2("80005",1)             pc.remove_item("50189",1)             end         end     end end
*500M Bar Sandığı*
Kod:
quest dorts begin     state start begin         when 50190.use begin                 if pc . count_item ( 50190 ) >= 1 then             pc.give_item2("80006",1)             pc.remove_item("50190",1)             end         end     end end
*750M Bar Sandığı*
Kod:
quest bess begin     state start begin         when 50191.use begin                 if pc . count_item ( 50191 ) >= 1 then             pc.give_item2("80007",1)             pc.remove_item("50191",1)             end         end     end end
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Evet bunları hazırladıktan sonra
Navicatta;
mob_proto tablosunda 20095 kodlu npcnin type değerini 1 on_click değerini 2 yapıyoruz ve kaydediyoruz hemen ardından,
item_proto tablosunda 50187, 50188, 50189, 50190 ve 50191 kodlu itemlerin type değerlerini 18 ile değiştirin. Eğer 18 ise dokunmayın ve kaydedip kapatın. Yine item_proto tablosunda 50187, 50188, 50189, 50190 ve 50191 kodlu itemlerin antiflag değerlerini 0 flag değerini ise 4 yapın. Yine item_proto tablosunda 80003, 80004, 80005, 80006 ve 80007 kodlu itemlerin antiflag değerlerini 258496 flag değerini ise 0 yapın.
Filezillada ;
Hazırlamış olduğumuz questleri,
/usr/game/share/locale/turkey/quest dizinine atıyoruz.
Putty açıp sırasıyla alttaki kodları yazıyoruz;
cd /usr/game/share/locale/turkey/quest
./qc birs.lua
./qc ikis.lua
./qc ucs.lua
./qc dorts.lua
./qc bess.lua
./qc ellibar.lua
./qc yuzbar.lua
./qc ikiyuzellibar.lua
./qc besyuzbar.lua
./qc yediyuzbar.lua
Ardından oyuna geçiyoruz ve yazıyoruz;
/reload p
/reload q
/m 20095
/i 80003
/i 80004
/i 80005
/i 80006
/i 80007

Deniyoruz,
Gelen barları yere atmaya çalışın, ticaretini deneyin depoya koymayı deneyin. Hiçbir denemeniz başarılı olmayacaktır.
Gelen NPC'Ye tıklayın sekmeleri tamamen kontrol edin sizden ilgili barı alıp ilgili sandığı verecektir. Eğer bar envanterinizde yoksa hata verecektir. Bu sandıklar ticarete vs. koyulabilir.

Sandıkların resmini değiştirmek için icon packini editleyin,
Sandıkların isimlerini ve açıklamalarını değiştirmek için locale_tr packinin içinden "item_proto" ve "itemdesc.txt" editleyin. item_proto editlemek için Zagre İtem Proto açıcı kullanmanızı tavsiye ederim.
Aynı zamanda örneğin sandık paketlendikten sonra alttaki sohbet kısmında "Çırak Sandığı kazandın." yazacaktır bunun içinse;
Navicatta;
item_proto tablosunda Çırak Sandıklarının isimlerini ilgili bar sandığının ismi ile değiştirin. Örneğin Çırak SandığıI ismini 50M Bar Sandığı, Çırak SandığıII ismini 100M Bar Sandığı vs. gibi kaydedip kapatın ve oyuna geçerek;
/reload p komutunu yazın.

Bu arada unutmuşum hemen ekleyelim;
NPC'yi haritada bir yerlere sabitlemeyi unutmayın :)

LykeeN
İyi forumlar diler.
Bar Buglarına Kesin Çözüm ! - LykeeN Farkı ile...

Metin2 Lobby olarak sunucularınızda karşılaştığınız bar bugları artık tarihe karışıyor! Metin2 geliştiricileri için en büyük baş ağrılarından birisi olan bar bugları, hem oyun deneyimini düşürmekte hem de sunucu performansını ciddi anlamda etkilemektedir. Bu yazıda sizlere LykeeN'in sunduğu yenilikçi çözümlerle bu soruna nasıl kalıcı bir çıkış yolu bulunduğunu anlatıyoruz.

Bar Bugları Nedir ?

Bar bugları, Metin2 oyununda karakterin can veya mana çubuğunun anormal şekilde artması, azalması ya da donması gibi durumlar olarak tanımlanabilir. Özellikle quest sistemleri ile çalışan sunucularda, lua script hataları, flag veya state yönetiminde yaşanan sorunlar bu bugların ortaya çıkmasında başrol oynar. Kullanıcılar için büyük bir deneyim kırılması olan bu durum, aynı zamanda yöneticiler için de debug süreçlerini uzatır.

LykeeN Farkı ile Metin2 Quest Sistemleri

LykeeN, Metin2 geliştiricileri için tasarlanmış güçlü ve kullanıcı dostu bir quest geliştirme platformudur. Geleneksel lua quest dosyalarında yaşanan karmaşıklığı azaltarak, quest sistemi oluşturma sürecini kolaylaştırır. Bar buglarının temel nedenlerinden biri olan quest trigger ve timer yapılarının doğru yönetilememesi, LykeeN sayesinde daha stabil hale getirilmiştir.

Quest Script Hatalarını Önleme

Quest script yazarken dikkat edilmesi gereken pek çok detay vardır. Yanlış bir flag kullanımı, eksik bir quest begin/end yapısı, hatta bir item veya mob referans hatası bar buglarına sebebiyet verebilir. LykeeN, bu hataları önceden tespit ederek geliştiricilere uyarılar sunar. Böylece debug süresi azalır, quest chain sistemleri daha sağlıklı çalışır.

Daily Quest ve Özel Görev Sistemleri

Metin2 sunucularında popüler olan daily quest ve custom quest sistemleri, oyuncuların aktif kalmasını sağlar. Ancak bu sistemlerin doğru entegrasyonu olmadan bar bugları gibi sorunlarla karşılaşılması kaçınılmazdır. LykeeN ile Metin2Dev ve Martysama tabanlı quest sistemleri, çok daha kolay entegre edilebilir ve test edilebilir hale gelir.

LykeeN ile Quest Geliştirme Kolaylığı

LykeeN sayesinde, quest edit işlemleri daha az kod, daha fazla görsellikle yapılabilir. NPC, item, reward gibi unsurlar arayüz üzerinden hızlıca tanımlanabilir. Bu sayede hem geliştirme süresi kısalır hem de hata payı azalır. Bar buglarını engellemenin en iyi yolu, doğru ve temiz quest script dosyaları kullanmaktır.

Sonuç

Metin2 Lobby olarak, Metin2 sunucularında yaşanan her türlü teknik soruna kalıcı çözümler sunmayı hedefliyoruz. LykeeN ile birlikte artık bar bugları tarih oluyor. Hem Metin2 quest geliştiricileri hem de sunucu sahipleri için harika bir alternatif olan LykeeN, Metin2 dünyasında yeni bir dönem başlatıyor. Hemen deneyin ve farkı kendiniz görün!

Metin2 Lobby


Definitive Solution to Bar Bugs! - With The LykeeN Difference...

Metin2 Lobby brings you an end to the bar bugs encountered on your servers! Bar bugs are among the biggest headaches for Metin2 developers, as they significantly impact both the gaming experience and server performance. In this article, we explain how the innovative solutions offered by LykeeN provide a permanent fix to this issue.

What Are Bar Bugs?

Bar bugs refer to abnormal behaviors such as sudden increases, decreases, or freezes in a character's HP or MP bars in Metin2. Especially in servers running complex quest systems, errors in lua scripts, mismanagement of flags or states, can lead to these bugs. These issues greatly disrupt the user experience and often extend debugging processes for administrators.

The LykeeN Difference for Metin2 Quest Systems

LykeeN is a powerful and user-friendly quest development platform designed specifically for Metin2 developers. It simplifies the process of creating quest systems by reducing complexity found in traditional lua quests. Issues like improper handling of quest triggers and timers, which often cause bar bugs, are stabilized through LykeeN’s advanced tools.

Preventing Quest Script Errors

Quest scripts require attention to many details during development. Incorrect flag usage, incomplete quest begin/end structures, or even missing references to items or mobs can result in bar bugs. LykeeN detects such errors beforehand and alerts developers, thus reducing debug time and enabling more stable quest chains.

Daily Quests and Custom Mission Systems

Metin2 servers often rely on popular daily quests and custom quests to keep players engaged. However, without proper integration, issues like bar bugs become inevitable. With LykeeN, quest systems based on Metin2Dev and Martysama are easier to integrate and test.

Ease of Quest Development with LykeeN

Thanks to LykeeN, quest editing tasks can be performed with less code and more visual tools. Elements like NPCs, items, and rewards can be configured quickly via a user-friendly interface. This reduces development time and minimizes error risks. The best way to prevent bar bugs is by using clean and correct quest scripts.

Conclusion

At Metin2 Lobby, our goal is to offer long-term solutions for all technical issues encountered in Metin2 servers. Together with LykeeN, bar bugs are becoming history. An excellent alternative for both Metin2 quest developers and server owners, LykeeN ushers in a new era in the world of Metin2. Try it now and see the difference!

Metin2 Lobby
 

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

Benzer konular

Geri
Üst Alt