Yardım Ws Arenası Oyuncu Şehre Geri Işınlanma Sorunu

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

murphy

Üye
Üye
Mesaj
146
Çözümler
2
Beğeni
9
Puan
79
Ticaret Puanı
0
Merhaba Arkadaşlar, Gm hesapla oyuncuyu arena bölgesine çekiyorum fakat oyuncu şehre geri ışınlanıyor sadece Yu-Hwan dan birine meydan okursa birlikte arena alanına giriş yapabiliyorlar. Ben ise arena alanın dış kısmına oyuncular gelebilsin istiyorum
 
Merhaba,
Savaş başladıkdan sonramı başlamadanda gelebilsinlermi istiyosun. Hani böyle etkinlik gibi etkinlik başlayınca gelsinler etkinlik kapalıysa seçenek görünmesin gibi.
Ya da her zaman gelebilsinlermi istiyosun.
 
Merhaba,
Savaş başladıkdan sonramı başlamadanda gelebilsinlermi istiyosun. Hani böyle etkinlik gibi etkinlik başlayınca gelsinler etkinlik kapalıysa seçenek görünmesin gibi.
Ya da her zaman gelebilsinlermi istiyosun.
hocam birileri turnuva atıyorsa izleyici modda gelebiliyorlar ama iç alanda (ws alanı) turnuvayı yapanların yanında görünmez duruyorlar ben istiyorumki en azından dış tarafta durup görünür bir izleyici olarak izleyebilsinler. onun için gm hesap dışardaki iken birkaç oyuncu çektim izlesinler diye ama geri şehre atıyor onları atmazsa eğer questde yapabilirim.
 
buradaki sistem dosyalarına bakarak çözüme ulaşabilirsiniz.

Karekterler arenada birbirlerini görebiliyorlar bu sistemde. Tam sistemi bilmediğim için birşey diyemeceğim ama .hide olan kısımları incele.
 
buradaki sistem dosyalarına bakarak çözüme ulaşabilirsiniz.

Karekterler arenada birbirlerini görebiliyorlar bu sistemde. Tam sistemi bilmediğim için birşey diyemeceğim ama .hide olan kısımları incele.
hocam gm hesapla arenaya tranfer ettiğim oyuncuları geri köye ışınlanmazsa sorun benim için çözülür. geri ışınlamaya sebep olan kısmı bulsam benim için yeterlidir.
 
hocam gm hesapla arenaya tranfer ettiğim oyuncuları geri köye ışınlanmazsa sorun benim için çözülür. geri ışınlamaya sebep olan kısmı bulsam benim için yeterlidir.
arenanın quest kısmında genelde kontrol olur. Bulduğun questleri eklersen kodları inceleyelim.
 
arenanın quest kısmında genelde kontrol olur. Bulduğun questleri eklersen kodları inceleyelim.
tabiki hocam yu-hwan questi paylaştım ordan oyuncular eğitim dövüşü yapabiliyor. zaten turnuva questi henüz yazmadım quest şimdilik burdan çözüme kavuştursak yeterlidir.
 

Dosya Eklentileri

Lua (Quest):
Genişlet Daralt Kopyala
-- =====================
-- ARENA OBSERVER QUEST
-- =====================
quest arena_observer begin
    state start begin
        function make()
            pc.setqf("is_observer", 1)

            pc.set_attack_mode(0)
            pc.setqf("can_be_attacked", 0)

            pc.set_gm_level(1)

            local m = pc.get_map_index()
            local x = pc.get_x()
            local y = pc.get_y()
            pc.warp(x, y, m)
        end
    end
end

-- =====================
-- ARENA MANAGER QUEST
-- =====================
quest arena_manager begin
    state start begin
        when 20017.chat.gameforge.arena_manager._10_npcChat begin
            if game.get_event_flag("arena_close") > 0 then
                say_title(gameforge.arena_manager._20_sayTitle)
                say(gameforge.arena_manager._30_say)
                return
            end

            if not npc.lock() then
                say_title(gameforge.arena_manager._20_sayTitle)
                say(gameforge.arena_manager._40_say)
                return
            end

            local useMinLevel = game.get_event_flag("arena_use_min_level")
            if useMinLevel == 0 then useMinLevel = 25 end

            if pc.get_level() < useMinLevel then
                say_title(gameforge.arena_manager._20_sayTitle)
                say(string.format(gameforge.arena_manager._50_say, useMinLevel))
                npc.unlock()
                return
            else
                say_title(gameforge.arena_manager._20_sayTitle)
                say(gameforge.arena_manager._60_say)

                local sname = input()
                if sname == "" then
                    say_title(gameforge.arena_manager._20_sayTitle)
                    say(gameforge.arena_manager._70_say)
                    npc.unlock()
                    return
                else
                    say_title(gameforge.arena_manager._20_sayTitle)
                    say(string.format(gameforge.arena_manager._80_say, pc.name, sname))
                    wait("")

                    local opp_vid = find_pc_by_name(sname)
                    if opp_vid == 0 then
                        say_title(gameforge.arena_manager._20_sayTitle)
                        say(string.format(gameforge.arena_manager._90_say, sname))
                        npc.unlock()
                        return
                    elseif opp_vid == pc.get_vid() then
                        say_title(gameforge.arena_manager._20_sayTitle)
                        say(gameforge.arena_manager._100_say)
                        npc.unlock()
                        return
                    end

                    local old = pc.select(opp_vid, opp_vid)
                    local opp_level = pc.get_level()
                    pc.select(old, old)

                    if opp_level < useMinLevel then
                        say_title(gameforge.arena_manager._20_sayTitle)
                        say(string.format(gameforge.arena_manager._110_say, useMinLevel))
                        npc.unlock()
                        return
                    end

                    if not npc.is_near_vid(opp_vid, 10) then
                        say_title(gameforge.arena_manager._20_sayTitle)
                        say(string.format(gameforge.arena_manager._120_say, sname))
                        npc.unlock()
                        return
                    end

                    local a = arena.is_in_arena(opp_vid)
                    if a == 0 then
                        say_title(gameforge.arena_manager._20_sayTitle)
                        say(string.format(gameforge.arena_manager._130_say, sname))
                        npc.unlock()
                        return
                    end

                    say_title(gameforge.arena_manager._140_sayTitle)
                    say(string.format(gameforge.arena_manager._85_say, pc.name, sname))

                    local agree = confirm(opp_vid, string.format(gameforge.arena_manager._87_say, sname, pc.name), 30)
                    if agree != CONFIRM_OK then
                        say_title(gameforge.arena_manager._20_sayTitle)
                        say(string.format(gameforge.arena_manager._150_say, sname))
                        npc.unlock()
                        return
                    end

                    local s = arena.start_duel(sname, 3)
                    if s == 0 then
                        say_title(gameforge.arena_manager._20_sayTitle)
                        say(gameforge.arena_manager._160_say)
                    elseif s == 2 then
                        say_title(gameforge.arena_manager._20_sayTitle)
                        say(gameforge.arena_manager._170_say)
                    elseif s == 3 then
                        say_title(gameforge.arena_manager._20_sayTitle)
                        say(gameforge.arena_manager._180_say)
                    end
                end
            end
            npc.unlock()
        end

        when 20017.chat.gameforge.arena_manager._190_npcChat begin
            local g = arena.get_duel_list()
            local arena_name = {}
            local arena_observer = {}

            table.foreachi(g, function(n, p)
                arena_name[n] = string.format(gameforge.arena_manager._195_say, p[1], p[2])
                arena_observer[n] = { p[3], p[4], p[5] }
            end)

            table.insert(arena_name, "Arenayı İzle")
            table.insert(arena_observer, { -1 })

            table.insert(arena_name, gameforge.arena_manager._200_tableInsert)
            table.insert(arena_observer, 0)

            local count = table.getn(g)
            if count == 0 then
                say_title(gameforge.arena_manager._20_sayTitle)
                say(gameforge.arena_manager._210_say)
                return
            else
                say_title(gameforge.arena_manager._20_sayTitle)
                say(string.format(gameforge.arena_manager._220_say, count))
                wait()
            end

            if table.getn(g) != 0 then
                local s = select_table(arena_name)

                if arena_observer[s][1] == -1 then
                    local map = 112
                    local x = 998
                    local y = 1246

                    pc.warp(x, y, map)
                    arena_observer.make()
                    return
                end

                if table.getn(arena_observer) >= s and arena_observer[s][1] ~= -1 then
                    arena.add_observer(arena_observer[s][1], arena_observer[s][2], arena_observer[s][3])
                end
            end
        end
    end
end

Şunu bi deneyebilirmisin.
 
Geri
Üst