Bug arena duel 1 vs 1(Rezolvare) 40 k

Ghiduri şi tutoriale despre cum să vă îmbunătăţiţi serverul/clientul dv. de metin2.
Deconectat
Avatar utilizator
Bendis
Nou Venit
Nou Venit
Mesaje: 46
Membru din: 03 Mar 2014
Status: Sunt bine mersi ^.^
Server Metin2: Metin2Dar
Regat: Jinno
Mulțumiri acordate: 0
Mulțumiri primite: 0

Bug arena duel 1 vs 1(Rezolvare) 40 k

Mesajde Bendis » 21 Aug 2016, 22:58

Desi nu se gaseste pe forumuri rezolvare am sa va postez rezolvarea deoarece am cautat si eu 3 zile poate pe uni ajuta.

1 Mapa de duel sa fie 112
2 Bagam mapa 112 in toate canalele si corele existente si in game99 doar in 1 singur.
3 Ne asiguram ca avem in setting.lua urmatoarele lini :

Cod: Selectaţi tot

arena.add_map(112, 8534, 101, 8564, 101)
arena.add_map(112, 8584, 101, 8614, 101)
arena.add_map(112, 8534, 155, 8564, 155)
arena.add_map(112, 8584, 155, 8614, 155)

4 Ne asiguram ca avem un quest corect(desi functioneaza cam oricare):

Cod: Selectaţi tot

quest arena_manager begin
   state start begin
      when 20017.chat."Începe o luptã de antrenament" begin
         if game.get_event_flag("arena_close") > 1 then
            say_title("Yu-Hwan:")
            say("Momentan aceastã arenã este inchisã din motive")
            say("mai mult personale.")           
            return
         end
         if not npc.lock() then
            say_title("Yu-Hwan:")
            say("Momentan alt cineva a intrat în arenã.")
            say("Revino în câteva momente.")
            return
         end
         local useMinLevel = 1
         if pc.get_level() < useMinLevel then
            say_title("Yuhwan:")
            say("Ai nevoie de nivelul "..useMinLevel.." pentru a intra.")
            say("Revino cand ai nivelul necesar.")
            npc.unlock()
            return
         else
            say_title("Yuhwan:")
            say("Doresti sa participi la o lupta de antrenament?")
            say("Atunci spune-mi numele partenerului tau.")
            local sname = input()
            if sname == "" then
               say_title("Yu-Hwan:")
               say("Nu stii cu cine vrei sa lupti? Daca nu imi spui")
               say("un nume nu poti participa.")
               npc.unlock()
               return
            else
               say_title("Yu-Hwan:")
               say("Ok, "..pc.name..". Te-ai inscris la o lupta de")
               say("antrenament impotriva lui "..sname.." ")
               wait("")
               local opp_vid = find_pc_by_name(sname)
               if opp_vid == 0 then
                  say_title("Yu-Hwan:")
                  say(sname.." nu este online momentan. Incearca mai tarziu")
                  say("sau sabileste cu el o intalnire in arena.")
                  npc.unlock()
                  return
               elseif opp_vid == pc.get_vid() then
                  say_title("Yu-Hwan:")
                  say("Du willst nicht wirklich gegen dich")
                  say("selber kämpfen oder?")
                  npc.unlock()
                  return
               end
                    local old = pc.select(opp_vid)
                    local opp_level = pc.get_level()
                    pc.select(old)
                    if opp_level < useMinLevel then
                  say_title("Yuhwan")         
                        say("Dein Gegner ist noch nicht Level 25")
                        npc.unlock()
                        return
                    end
                    if not npc.is_near_vid(opp_vid, 10) then
                        say_title("Yuhwan")
                        say(""..sname.." ist nicht in deiner Nähe.")
                        npc.unlock()
                        return
                    end
                    local a = arena.is_in_arena(opp_vid)
                    if a == 0 then
                        say_title("Yuhwan:")
                        say(""..sname.." kämpft bereits.")
                        npc.unlock()
                        return
                    end
                    say_title("Entscheidung")
                    say(""..pc.name.." wartet darauf, dass "..sname.."")
                    say("die Herausforderung annimmt.")
                    local agree = confirm(opp_vid, "Möchtest du gegen "..pc.name.." kämpfen?", 30)
                    if agree!= CONFIRM_OK then
                  say_title("Yuhwan:")
                        say(""..sname.." hat abgelehnt.")
                        npc.unlock()
                        return
                    end
                    s = arena.start_duel(sname, 3)
                    if s == 0 then
                        say_title("Yu-Hwan:")
                        say("Es gibt ein Problem.")
                        say("Probierst du es später nochmal?")
                    elseif s == 2 then
                        say_title("Yu-Hwan:")
                        say("Jemand anderes kämpft gerade.")
                    elseif s == 3 then
                        say_title("Yu-Hwan:")
                        say("Die Trainingshalle ist inmoment voll.")
                        say("Probiert es später nochmal.")
                    end               
            end           
         end
      end     
      when 20017.chat."Participã la o luptã de antrenament" begin
            local g = arena.get_duel_list()
            local arena_name = {}
            local arena_observer = {}
            table.foreachi(g,
                function(n, p)
                arena_name[n] = p[1].." gegen "..p[2]
                arena_observer[n] = { p[3], p[4], p[5] }
                end
            )
            table.insert(arena_name, "Schließen")
            table.insert(arena_observer, 0)
            local count = table.getn(g)
            if count == 0 then
            say_title("Yu-Hwan:")
            say("Momentan nu sunt lupte de antrenament.")
            return
            else
                say_title("Yu-Hwan:")
                say("Momentan finden "..count.." Trainingskämpfe statt.")
                wait()
            end
         if table.getn(g)!= 0 then
                local s = select_table(arena_name)
            if table.getn(arena_observer) == s then
                    return
                end
            if table.getn(arena_observer) >= s then
                    arena.add_observer(arena_observer[s][1], arena_observer[s][2], arena_observer[s][3])
                end
            end
        end
    end
end


Nu inceta sa ajuti daca poti , lasa si pe alti sa se ridice pe langa tine!!!

Conectat
Avatar utilizator
OkamiTV
Moderator
Moderator
Mesaje: 515
Membru din: 01 Ian 2015
Localitate: Castleblayney, Ireland
Reputație: ------------------------------------------------
►Fost Moderator J4M
►Fost Trial Moderator J4M
►Cerşetor pe J4M
►Atât, restul dacă voi trece!
------------------------------------------------
►Nume anterior: dogariuionut
------------------------------------------------
Status: Mă uit la tine!
Server Metin2: Metin2 World Online
Regat: Chunjo
Mulțumiri acordate: 8
Mulțumiri primite: 7
Contact:

Re: Bug arena duel 1 vs 1(Rezolvare) 40 k

Mesajde OkamiTV » 19 Mar 2017, 13:23

Am probat şi eu pe serverfile Cryptex, acest tutorial este funcţional, felicitări!
Sărbători fericite, oricare ar fi acelea!

Trebuie să fii logat sau înregistrat pentru a vedea acest link.
Nivel 120, newschool, toate sistemele implementate, pvm mediu echilibrat, te asteptam cu drag!
Imagine
Lasă un comm, like și/sau abonează-te, mulțam!
Trebuie să fii logat sau înregistrat pentru a vedea acest link.


Înapoi la “Ghiduri şi Tutoriale”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 14 vizitatori