D 1
delimuratt
melankolıa18 1
melankolıa18
shrpnl 1
shrpnl
Fethi Polat 1
Fethi Polat
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Best Studio 1
Best Studio
Agora Metin2 1
Agora Metin2
raderde 1
raderde
Cannn6161 1
Cannn6161
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Cevaplanmadı Questle ilgili bilgi

  • Konuyu başlatan Konuyu başlatan BGLT
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 3
  • Görüntüleme Görüntüleme 50

BGLT

Level 1
Üye
Katılım
20 Ara 2025
Konular
13
Mesajlar
44
Çözüm
1
Online süresi
2d 22h
Reaksiyon Skoru
20
Altın Konu
0
TM Yaşı
5 Ay 17 Gün
Başarım Puanı
28
MmoLira
1,376
DevLira
0
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Merhabalar ,ox eventi questinde belirtiğim resimdeki gibi lvl aralığı sistemi mevcut bunu nasıl kaldırabilirim.

 

Ekli dosyalar

  • 1768475321872.png
    1768475321872.png
    10.9 KB · Görüntüleme: 0
Bu seviye aralığı olayı OX eventinin kendi içinde koyulmuş bir quest kontrolü, yani ekstra bir sistem ya da source ile alakası yok. O yüzden kaldırması da oldukça basit.

Gösterdiğin fonksiyonun amacı şu:
Oyuncunun levelini alıp belirlenen aralıklara sokmak ve OX’e girişte buna göre izin vermek. Asıl kısıtlama bu fonksiyonun kendisi değil, quest içinde çağrıldığı yer.

OX quest dosyasında genelde şöyle bir kontrol olur (birebir aynı olmayabilir ama mantık budur):

  • Oyuncunun leveli,
  • enter_level() fonksiyonundan dönen min–max değerlerin dışındaysa,
  • “Bu etkinliğe katılamazsın” deyip geri çevirir.
Eğer amacın seviye farkı olmadan herkesin OX’e girebilmesi ise yapman gereken şey çok net:

Quest dosyasında enter_level( şeklinde arama yap.
Bu fonksiyonun kullanıldığı if bloğunu tamamen kaldır ya da yorum satırı yap.

Yani level kontrolü yapılan kısmı iptal ettiğin anda:

  • Seviye aralığı sistemi devre dışı kalır
  • OX’e her level oyuncu girebilir
  • Üstteki fonksiyon dursa bile artık bir anlamı kalmaz
Alternatif olarak, quest yapısı bozulmasın diyorsan enter_level fonksiyonunu sabit bir değer döndürecek şekilde de değiştirebilirsin. Ama en temiz yol, doğrudan level kontrolünün yapıldığı if bloğunu silmek.

Değişiklikten sonra mutlaka:

  • quest’i yeniden derle
  • reload q yap ya da server’ı yeniden başlat
Özetle:
Bu sistem OX’in vazgeçilmez bir parçası değil. Tamamen quest içine sonradan eklenmiş bir kısıtlama. Kontrolü kaldırdığın anda seviye sınırı da kalkar.
 
BU SENİN QUESTİNİN DÜZENLENMİŞİ

Kod:
quest oxevent_manager begin
    state start begin
        
        function cleanup_event()
            oxevent.end_event()
            game.set_event_flag("ox_map_login_counter", 0)
            game.set_event_flag("ox_map_level_min", 0)
            game.set_event_flag("ox_map_level_max", 0)
        end
        
        function check_limit()
            if game.get_event_flag("ox_map_login_counter") == game.get_event_flag("ox_map_player_max") then
                return 0
            else
                return 1
            end
        end

        when login or enter begin
            if pc.get_map_index() == 113 then
                local counter = game.get_event_flag("ox_map_login_counter")
                game.set_event_flag("ox_map_login_counter", counter+1)
            end
        end

        when logout begin
            if pc.get_map_index() == 113 then
                 if is_test_server() then
                    pc.setqf("ox_end_cooldown_time", get_time() + 60)
                else
                    pc.setqf("ox_end_cooldown_time", get_time()+60*15)
                end
            end
        end
    
        when 20011.chat.gameforge.oxevent._10_npcChat begin
            say_title(gameforge.main_quest_lv30._40_sayTitle)
            say(gameforge.oxevent._20_say)
            wait()

            if game.get_event_flag("oxevent_status") == 0 then
                say_title(gameforge.main_quest_lv30._40_sayTitle)
                say(gameforge.oxevent._30_say)

            elseif game.get_event_flag("oxevent_status") == 1 then
                say_title(gameforge.main_quest_lv30._40_sayTitle)
                say(gameforge.oxevent._40_say)

                local s =  select(gameforge.buy_fishrod._120_select, gameforge.locale.cancel)

                if s == 1 then
                    say_title(gameforge.main_quest_lv30._40_sayTitle)
                    say(gameforge.oxevent._50_say)
                    wait()
                    
                    if get_time() < pc.getqf("ox_end_cooldown_time") then
                        say_title(gameforge.main_quest_lv30._40_sayTitle)
                        say(gameforge.locale.monkey_dungeon.cannot_enter_yet)
                        return
                    end
                    
                    if oxevent_manager.check_limit() == 0 then
                        say_title(gameforge.main_quest_lv30._40_sayTitle)
                        say(gameforge.entry_event_map._060_say)
                        return
                    end
                    
                    pc.warp(896500, 24600)
                elseif s == 2 then
                    return
                end

            elseif game.get_event_flag("oxevent_status") == 2 then
                say_title(gameforge.main_quest_lv30._40_sayTitle)
                say(gameforge.oxevent._60_say)
            end
        end

        when 20358.chat.gameforge.oxevent._70_npcChat with pc.get_gm_level()== 5  begin
            local stat = oxevent.get_status()

            if stat == 0 then
                say(gameforge.entry_event_map._160_say)
                local amount_choice = input_number(gameforge.entry_event_map._240_say)

                 if amount_choice > 500 or amount_choice <= 0 then
                    say("Miktar 1-500 arasinda olmalidir.")
                    return
                end

                say(gameforge.oxevent._80_say)
                say(gameforge.entry_event_map._200_say .. " " .. amount_choice)

                local s =  select(gameforge.oxevent._90_select, gameforge.locale.cancel)

                if s == 1 then
                    local v = oxevent.open()

                    if v == 0 then
                        say(gameforge.oxevent._100_say)
                        say_reward(gameforge.oxevent._110_sayReward)
                        
                    elseif v == 1 then
                        say(gameforge.oxevent._120_say)
                        notice_multiline(gameforge.oxevent._130_notice_all,notice_all)
                        notice_multiline(gameforge.oxevent._131_notice_all,notice_all)
                        
                        game.set_event_flag("ox_map_level_min", 1)
                        game.set_event_flag("ox_map_level_max", 250)
                        game.set_event_flag("ox_map_player_max", amount_choice)
                    else
                        say(gameforge.oxevent._100_say)
                    end
                end
            elseif stat == 1 then
                    say(string.format(gameforge.oxevent._140_say, oxevent.get_attender()))

                    local s =  select(gameforge.oxevent._150_select, gameforge.locale.cancel)

                    if s == 1 then
                        oxevent.close()
                        say(gameforge.oxevent._160_say)
                    end
            elseif stat == 2 then
                    say(gameforge.oxevent._170_say)

                    local s =  select(
                        gameforge.oxevent._180_select,
                        gameforge.oxevent._190_select, 
                        gameforge.oxevent._195_select,
                        gameforge.locale.cancel
                        )

                    if s == 1 then
                        local v = oxevent.quiz(1, 30)

                        if v == 0 then
                            say(gameforge.oxevent._200_say)
                        elseif v == 1 then
                            say(gameforge.oxevent._210_say)
                        else
                            say(gameforge.oxevent._220_say)
                        end
                    elseif s == 2 then
                        oxevent_manager.cleanup_event()
                        say(gameforge.oxevent._230_say)
                        notice_multiline(gameforge.oxevent._240_notice_all,notice_all)
                        notice_multiline(gameforge.oxevent._241_notice_all,notice_all)
                    elseif s == 3 then
                        oxevent_manager.cleanup_event()
                        say(gameforge.oxevent._250_say)
                        notice_multiline(gameforge.oxevent._260_notice_all,notice_all)
                        notice_multiline(gameforge.oxevent._261_notice_all,notice_all)
                    end
            elseif stat == 3 then
                    say(gameforge.oxevent._270_say)
                    say_reward(gameforge.oxevent._280_sayReward)
            else
                    say(gameforge.oxevent._290_say)
                end
            end

        when 20358.chat.gameforge.oxevent._300_npcChat with pc.get_gm_level()== 5  begin
            say(gameforge.oxevent._310_say)

            local s =  select(gameforge.oxevent._320_select, gameforge.locale.cancel)

            if s == 1 then
                oxevent.end_event_force()
                game.set_event_flag("ox_map_login_counter", 0)
                say(gameforge.oxevent._330_say)
            end
        end

        when 20358.chat.gameforge.oxevent._340_npcChat with pc.get_gm_level()== 5  begin
            say(gameforge.oxevent._350_say)
            local item_vnum = input()
            say(gameforge.oxevent._360_say)
            local item_count = input()
            
            oxevent.give_item(item_vnum, item_count)

            say(string.format(gameforge.oxevent._370_say, oxevent.get_attender()))
        end
    end
end

ALTERNATİF ESKİ TİP QUESTTE BU


[CODE title="oxevent.quest"]quest oxevent_manager begin
state start begin
when 20011.chat."OX-Yarışması " begin
say_title("Uriel:")
say("Hey Evet Sen.")
say("Sen gerçekten çok zeki görünüyorsun.")
say("Yarışmanın ismi Ox Yarışması. ")
say("Sorular sorulacak cevap vereceksin,")
say("bilirsen süpriz bir hediye kazanacaksın.")

if game.get_event_flag("oxevent_status") == 0 then
wait()
say_title("Uriel:")
say("Yarışmaya katılmana izin veriyorum.")
say("İstersen ayrıca izleyici de olabilirsin.")
say("Başlama zamanı henüz kararlaştırılmadı.")
say("Zaman geldiğinde seni bilgilendireceğim.")
say("Tetikte kal!")
elseif game.get_event_flag("oxevent_status") == 1 then
wait()
say_title("Uriel:")
say("Yarışmaya katılmak istiyormusun?")

local s = select("Evet", "Hayır", "İzlemek istiyorum")

if s == 1 then
say_title("Uriel:")
say("Tamam Şimdi Seni Işınlıyorum.")

wait()

pc.warp(896500, 24600)
elseif s == 3 then
say_title("Uriel:")
say("İzleyici olarak mı katılmak istiyorsun?")
say("Tamam, ışınlıyorum seni.")

wait()

pc.warp(896300, 28900)
end
elseif game.get_event_flag("oxevent_status") == 2 then

say_title("Uriel:")
say("Yarışma başladı, giremezsin!")
say("Ancak izleyici olarak katılabilirsin.")

local s = select("Katıl", "Katılma")
if s == 1 then
say_title("Uriel:")
say("Tamam, ışınlıyorum seni.")

wait()

pc.warp(896300, 28900)
end
end
end

when 20358.chat."OX-Yarışması " with pc.is_gm() begin

local stat = oxevent.get_status()

if stat == 0 then

say_title("OX Çiçekleri:")
say("Yarışmayı Başlatmak İstiyormusun?")


local s = select("Evet", "Hayır")

if s == 1 then
local v = oxevent.open()

if v == 0 then
say_title("OX Çiçekleri:")
say("OX-Yarışması zaten etkinleştirildi.")
elseif v == 1 then
say_title("OX Çiçekleri:")
say("Tebrikler yarisma baslamistir.")

notice_all("Ox Yarışması başladı! Uriel'den giriş yapabilirsin.")
else
say_title("OX Çiçekleri:")
say("OX-Yarışması çalıştırılamadı.")
end
end
elseif stat == 1 then
say_title("OX Çiçekleri:")
say("Ox Yarışmasında "..oxevent.get_attender().." Kişi Var.")
say("Yarışmayı Başlatmak İstiyormusun?")

local s = select("Evet", "Hayır")

if s == 1 then
oxevent.close()

say_title("OX Çiçekleri:")
say("Girişler Kapatıldı..Yarışma Başlaması İçin Aynı İşlemi Yapın!")
end
elseif stat == 2 then

say_title("OX Çiçekleri:")
say("Ne Yapmak İstiyorsunuz?")

local s = select("Yarışmayı Başlatmak", "İtem Vermek", "Yarışmayı Sonlandırmak", "Kapat")

if s == 1 then
local v = oxevent.quiz(1, 30)

if v == 0 then
say_title("OX Çiçekleri:")
say("Yarışma Başlatılamadı!")
elseif v == 1 then
say_title("OX Çiçekleri:")
say("Soru Başarıyla Gönderildi!")
else
say_title("OX Çiçekleri:")
say("Zaten bir soru sordunuz!")
end
elseif s == 2 then
say_title("OX Çiçekleri:")
say("İtemin Kodunu Giriniz.")

local item_vnum = input()

say_title("OX Çiçekleri:")
say("İtemin Verileceği Kişinin Nicki.")

local item_count = input()

oxevent.give_item(item_vnum, item_count)

say_title("OX Çiçekleri:")
say("İtem "..oxevent.get_attender().." Kişiye Verildi!")
elseif s == 3 then
oxevent.end_event()

notice_all("Ox Yarışması sona erdi.")

say_title("OX Çiçekleri:")
say("Ox-Yarışması bitirildi.!")
end
elseif stat == 3 then
say_title("OX Çiçekleri:")
say("Lütfen Bekleyiniz.")
else
say("Bir hata oluştu!")
end
end



when 20358.chat."TAKIM ADASI" with pc.is_gm() begin
say_title("OX Çiçekleri:")
say("Özel Gm Yerine Işınlanmak İstiyormusun?")

local s = select("Evet", "Hayır")

if s == 1 then
say_title("OX Çiçekleri:")
say("Lütfen Bekle Işınlanıyorsun.")

wait()

pc.warp(45000, 65000)
end
end
end
end[/CODE]
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst