Günlük Buff & Yang Eritme Sistemi
Sistemin Özellikleri:
24 Saatlik Limit: Oyuncu bonusu aldığı an süre başlar ve 24 saat geçmeden yeni bonus alamaz.
Dinamik Seçenekler: Defans (10M), STR (15M) ve Ortalama Zarar (20M) seçenekleri mevcuttur.
Eski Buff Temizliği: Yeni bir buff alındığında karakterdeki eski sistem buffları otomatik silinir, bug yapılması engellenir.
Ekonomik Denge: Sunucudaki Yang stoklarını eritmek için tasarlanmıştır.
Kurulum:
1. Kodu vote_buff.lua olarak kaydedin.
2. /usr/game/share/locale/turkey/quest dizinine yükleyin.
3. ./qc vote_buff.lua ile aktif edip /reload q yapın.
Quest Kodu:
Vote 4 Buff Code (Serverinize Göre Düzenleyin):
quest vote_buff begin
state start begin
-- AYARLAR VE VERILER
function config()
return {
["bekleme_suresi"] = 86400, -- 24 Saat (Saniye)
["buff_sure"] = 86400, -- 24 Saat (Saniye)
["fiyat_def"] = 10000000,
["fiyat_str"] = 15000000,
["fiyat_ort"] = 20000000
}
end
when 20095.chat."Gunluk Guclendirme Al" begin
local cfg = vote_buff.config()
local son_alim = pc.getqf("buff_zaman")
local su_anki_zaman = get_time()
-- 24 SAAT KONTROLU
if su_anki_zaman < son_alim + cfg.bekleme_suresi then
local kalan = (son_alim + cfg.bekleme_suresi) - su_anki_zaman
-- HATA VEREN % ISARETI YERINE ALTERNATIF HESAPLAMA
local saat = math.floor(kalan / 3600)
local dakika = math.floor((kalan - (saat * 3600)) / 60)
say_title("Bilge:")
say("Henuz yeni bir guclendirme alamazsin.")
say("Beklemen gereken sure:")
say_reward(saat.." saat "..dakika.." dakika.")
return
end
say_title("Gunluk Guclendirme Sistemi")
say("Merhaba "..pc.get_name()..",")
say("Bugun hangi bonusu satin almak istersin?")
say("Not: Bonuslar 24 saat gecerlidir.")
local secim = select("+50 Defans (10M Yang)", "+50 Guc (15M Yang)", "+5 Ortalama (20M Yang)", "Kapat")
if secim == 4 then return end
-- Bonus Detaylari Tablosu
local bonuslar = {
{apply.DEF_GRADE_BONUS, 50, cfg.fiyat_def, "Defans"},
{apply.ATT_GRADE_BONUS, 50, cfg.fiyat_str, "Guc (STR)"},
{apply.NORMAL_HIT_DAMAGE_BONUS, 5, cfg.fiyat_ort, "Ortalama Zarar"}
}
local secilen_bonus = bonuslar[secim][1]
local miktar = bonuslar[secim][2]
local maliyet = bonuslar[secim][3]
local b_adi = bonuslar[secim][4]
-- PARA KONTROLU
if pc.get_gold() < maliyet then
say_title("Bilge:")
say("Yeterli Yang bulunmuyor.")
say_reward("Gereken: "..maliyet.." Yang")
return
end
-- ESKI BUFFLARI TEMIZLE
affect.remove_collect(apply.DEF_GRADE_BONUS, 50, 86400)
affect.remove_collect(apply.ATT_GRADE_BONUS, 50, 86400)
affect.remove_collect(apply.NORMAL_HIT_DAMAGE_BONUS, 5, 86400)
-- ISLEMI TAMAMLA
pc.change_gold(-maliyet)
affect.add_collect(secilen_bonus, miktar, cfg.buff_sure)
pc.setqf("buff_zaman", get_time())
say_title("Basarili!")
say("Sectigin bonus tanimlandi:")
say_reward(b_adi.." +"..miktar)
say("Suresi: 24 Saat")
notice_all(pc.get_name().." gunluk "..b_adi.." bonusunu aldi!")
end
end
end
Kod Hakkında Önemli Not:
• affect.add_collect komutu, karakter ölse bile bonusun süresi bitene kadar (veya karakter oyunda olduğu sürece) üzerinde kalmasını sağlar. En güvenli yöntem budur.
• ID Kontrolü: Eğer sunucunda Biyolog görevleri de bu bonusları veriyorsa, değerleri (Örn: 50 STR) öyle bir ayarla ki Biyolog ile karıştırılmasın. Bu kodda verdiğim değerler standarttır.








