Başlatma (GM)
Yönetici, panel üzerinden satmak istediği eşyanın kodunu ve başlangıç fiyatını girerek müzayedeyi başlatır. Etkinlik başladığında tüm sunucuya duyuru gider.
Teklif Verme
Oyuncular NPC (20087) üzerinden teklif verirler. Her yeni teklif, bir öncekinden en az %10 daha yüksek olmak zorundadır. Teklif veren kişinin parası o an hesabından düşer.
Son Dakika Rekabeti (Anti-Snipe)
Müzayedenin bitmesine 1 dakikadan az kalmışken yeni bir teklif gelirse, sistem süreyi otomatik olarak 30 saniye uzatır. Bu sayede "son saniyede itemi kaptım" hilesi yapılamaz, rekabet devam eder.
Kazananın Belirlenmesi
10 dakikalık süre (veya uzatmalar) bittiğinde, en yüksek teklifi veren oyuncu eşyanın sahibi olur. Sistem kazananı tüm servera duyurur ve eşyayı oyuncuya teslim eder.
Kısacası: En yüksek parayı veren nadir eşyayı kapar; hem Yang piyasası dengelenir hem de oyuncular arasında büyük bir rekabet oluşur.
Kısacası: En yüksek parayı veren nadir eşyayı kapar; hem Yang piyasası dengelenir hem de oyuncular arasında büyük bir rekabet oluşur.
Kod:
quest seumondizayn_muzayede begin
state start begin
when letter with pc.is_gm() begin
send_letter("GM: Müzayede Paneli")
end
when button or info begin
say_title("SeumonDizayn - Müzayede Yönetimi")
local s = select("Yeni Müzayede Başlat", "Müzayedeyi İptal Et", "Kapat")
if s == 1 then
if game.get_event_flag("muzayede_aktif") == 1 then
say_reward("Hata: Zaten aktif bir müzayede var.")
return
end
say("İtem Vnum girin:")
local item_vnum = tonumber(input())
say("Başlangıç fiyatı girin:")
local baslangic_fiyat = tonumber(input())
if item_vnum == nil or baslangic_fiyat == nil then
say_reward("Hata: Geçersiz giriş.")
return
end
game.set_event_flag("muzayede_aktif", 1)
game.set_event_flag("muzayede_item", item_vnum)
game.set_event_flag("muzayede_fiyat", baslangic_fiyat)
game.set_event_flag("muzayede_bitis", get_global_time() + 600)
game.set_event_flag("son_teklif_id", 0)
notice_all("SeumonDizayn: Müzayede Başladı!")
notice_all("Ürün: " .. item_name(item_vnum) .. " | Başlangıç: " .. baslangic_fiyat .. " Yang")
notice_all("NPC 20087 üzerinden teklif verebilirsiniz. Süre: 10 Dakika.")
elseif s == 2 then
game.set_event_flag("muzayede_aktif", 0)
notice_all("SeumonDizayn: Müzayede iptal edildi.")
end
end
when 20087.chat."Müzayede Sistemi" begin
say_title("SeumonDizayn - Açık Artırma")
if game.get_event_flag("muzayede_aktif") == 0 then
say("Aktif müzayede yok.")
return
end
local kalan_sure = game.get_event_flag("muzayede_bitis") - get_global_time()
if kalan_sure <= 0 then
seumondizayn_muzayede.muzayede_bitir()
return
end
local su_an_fiyat = game.get_event_flag("muzayede_fiyat")
local min_teklif = math.floor(su_an_fiyat + (su_an_fiyat * 10 / 100))
local son_teklif_isim = game.get_event_flag("son_teklif_id") == 0 and "Yok" or game.get_event_flag("son_teklif_isim_flag")
say_item_vnum(game.get_event_flag("muzayede_item"))
say_reward("Mevcut Teklif: " .. su_an_fiyat .. " Yang")
say_reward("Lider: " .. son_teklif_isim)
say("Kalan Süre: " .. kalan_sure .. " sn.")
say("Min. Teklif: " .. min_teklif .. " Yang")
if select("Teklif Ver", "Kapat") == 1 then
if pc.get_gold() < min_teklif then
say_reward("Yetersiz Yang.")
return
end
if pc.get_player_id() == game.get_event_flag("son_teklif_id") then
say_reward("Zaten en yüksek teklif senin.")
return
end
pc.change_gold(-min_teklif)
game.set_event_flag("muzayede_fiyat", min_teklif)
game.set_event_flag("son_teklif_id", pc.get_player_id())
game.set_event_flag("son_teklif_isim_flag", pc.get_name())
if kalan_sure < 60 then
game.set_event_flag("muzayede_bitis", game.get_event_flag("muzayede_bitis") + 30)
notice_all("SeumonDizayn: Son saniye teklifi! Süre 30 saniye uzatıldı.")
end
notice_all("Müzayede: " .. pc.get_name() .. " yeni lider! Fiyat: " .. min_teklif)
end
end
function muzayede_bitir()
local kazanan_id = game.get_event_flag("son_teklif_id")
local urun = game.get_event_flag("muzayede_item")
if kazanan_id == 0 then
notice_all("SeumonDizayn: Müzayede bitti. Ürün satılamadı.")
else
notice_all("SeumonDizayn: Müzayede bitti! Kazanan: " .. game.get_event_flag("son_teklif_isim_flag"))
if pc.get_player_id() == kazanan_id then
pc.give_item2(urun, 1)
end
end
game.set_event_flag("muzayede_aktif", 0)
end
end
end