Jump to content

bug every event or quest


Recommended Posts

hello, i've a error when open ox o others event

set max players to events and return to select channel...

https://metin2.download/picture/kP7ud3YQtOL3V2IpLqfy1HF0q9J1emY9/.png

https://metin2.download/picture/Y82A7CargHujk8R1C1QXhNocE9v6jovJ/.jpg

chanel1

SYSERR: Sep 24 00:29:03.606729 :: SpawnGroup: NOT_EXIST_GROUP_VNUM(2410) Map(72) 
SYSERR: Sep 24 00:29:05.646051 :: Process: SEQUENCE 63eeb980 mismatch 0xdf != 0x0 header 30
SYSERR: Sep 24 00:29:05.646125 :: Process: SEQUENCE_LOG [XXXXXX]-------------
	[109 : 0xaf]
	[006 : 0xca]
	[241 : 0x8a]
	[010 : 0xcf]
	[061 : 0x48]
	[026 : 0xa7]
	[007 : 0x54]
	[029 : 0xc7]
	[029 : 0xd7]
	[030 : 0xdf]

SYSERR: Sep 24 00:29:05.687004 :: ChildLoop: AsyncSQL: query failed: Data too long for column 'hint' at row 1 (query: INSERT DELAYED INTO log (type, time, who, x, y, what, how, hint, ip) VALUES('CHARACTER', NOW(), 57787, 956026, 274765, 0, 'LOGOUT', '186.89.180.164 194424000 1 41 857', '186.89.180.164') errno: 1406)
SYSERR: Sep 24 00:30:20.608194 :: SpawnGroupGroup: NOT_EXIST_GROUP_GROUP_VNUM(2410) MAP(73)

every events like ox, battle empire and others

 

Edited by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

So none of quests are working for you?

try simple quest:

 

quest working begin
    state start begin
        when kill begin
            chat("YOU KILL MOB/PC")
        end
    end
end

save it as working.quest and put in locale_list or compile it by ./qc and write /reload q in game
I think it depends on your quest which dumps core for ex. by wrong timer or smth like that

 

Paste here your OX event quest so we can check it

Edited by kodepiko
  • Love 2
Link to comment
Share on other sites

The quest work.

a2ec481ae37369169fe42144500760ef.png

But the OX dont the part of the OX were send you to login is this.

elseif s == 2 then                
                    say_gm_title("Panou competiþie OX")
                    say("")
                    say_gm("Parolã:")
                    say("")
                    local sname = input()
                    if sname == "m2" then 
            
                    say_gm_title("Panou competiþie OX")
                    say("")
                    say_gm("Adaugã obiect:")
                    say("")
                    
                    local item_vnum = input()
                    
                    say_gm_title("Panou competiþie OX")
                    say("")
                    say_gm("Adaugã numãr articole:")
                    say("")
                    
                    local item_count = input()
                    oxevent.give_item(item_vnum, item_count)
                    
                    say_gm_title("Panou competiþie OX" )
                    say("")
                    say_gm("Participanþii au primit "..item_name(item_vnum))
                    say("")                    
                    
                    notice_all("Participanþii competiþei OX au primit "..item_count.."x"..item_name(item_vnum))
                    end    

I think is for the INPUT because i tested whit another quest and give me a INPUT error. 

Edited by Metin2 Dev
Core X - External 2 Internal
  • Love 1
Link to comment
Share on other sites

You paste here wrong part of quest, I suggest you to paste complete OX quest or in best way you should find working OX event quest

here it is: (I got it from another site)

-------------------------------------------------------------- 
--- For Epvp 
--- Erza² 
--- Automatic Ox Event 
-------------------------------------------------------------- 
quest automaticoxevent begin 
    state start begin 
        -- Dialogue with Uriel 
        when 20011.chat."GM: Automatic Ox Event" with pc.is_gm() and pc.get_name() == "Erza" begin 
            say_title(mob_name(npc.get_race())..":") 
            say("") 
             
            say("Do you want to open the Ox Event? ") 
            say("") 
            local s = select(locale.yes,locale.no) 
            if(s == 2) then return end 
            say_title(mob_name(npc.get_race())..":") 
            say("") 
             
            say("Ox opened the event!. ") 
            say("Please wait. ") 
            server_timer("countdown",10) 
            game.set_event_flag("automatic_oxevent_status",1) 
        end 
         
        --- Start Countdown !. 
        when countdown.server_timer begin 
            if(game.get_event_flag("automatic_oxevent_status") == 0) then 
                notice_all("an unexpected error occurred") 
                notice_all("closing event!. ") 
            else 
                notice_all("<Automatic-OxEvent> Ox opened the event!. ") 
                notice_all("<Automatic-OxEvent> 5 Minutes the countdown has begun and Entries will be closed at the end of 5 minutes.. ") 
                server_timer("countdownone",60) 
            end 
        end 
         
        --- CountDown 2 
        when countdownone.server_timer begin 
            if(game.get_event_flag("automatic_oxevent_status") == 0) then 
                notice_all("an unexpected error occurred") 
                notice_all("closing event !. ") 
            else 
                notice_all("<Automatic-OxEvent> Ox closing entries : 4 minutes left") 
                server_timer("countdowntwo",60) 
            end 
        end 
         
        --- CountDown 3 
        when countdowntwo.server_timer begin 
            if(game.get_event_flag("automatic_oxevent_status") == 0) then 
                notice_all("an unexpected error occurred") 
                notice_all("closing event !. ") 
            else 
                notice_all("<Automatic-OxEvent> Ox closing entries : 3 minutes left") 
                server_timer("countdownthre",60) 
            end 
        end 
         
        --- CountDown 4 
        when countdownthre.server_timer begin 
            if(game.get_event_flag("automatic_oxevent_status") == 0) then 
                notice_all("an unexpected error occurred") 
                notice_all("closing event!. ") 
            else 
                notice_all("<Automatic-OxEvent> Ox closing entries : 2 minutes left") 
                server_timer("countdownfour",60) 
            end 
        end 
         
        --- CountDown 5 
        when countdownfour.server_timer begin 
            if(game.get_event_flag("automatic_oxevent_status") == 0) then 
                notice_all("an unexpected error occurred") 
                notice_all("closing event!. ") 
            else 
                notice_all("<Automatic-OxEvent> Ox closing entries : 1 minutes left") 
                server_timer("countdownfive",60) 
            end 
        end 
         
        --- Countdown 6 
        when countdownfive.server_timer begin 
            if(game.get_event_flag("automatic_oxevent_status") == 0) then 
                notice_all("an unexpected error occurred") 
                notice_all("closing event!. ") 
            else 
                notice_all("<Automatic-OxEvent> Ox entries closed. ") 
                notice_all("<Automatic-OxEvent> Join as a spectator!. ") 
                server_timer("playercheck",5) 
                game.set_event_flag("automatic_oxevent_status",2) 
            end 
        end 
         
        --- Player Check 
        when playercheck.server_timer begin 
            if(oxevent.get_attender() == 0) then 
                notice_all("<Automatic-OxEvent> Event is closed because ; There's no one inside.. ") 
                game.set_event_flag("automatic_oxevent_status",0) 
            else 
                server_timer("startox",5) 
            end 
        end 
         
        --- Start Ox Event 
        when startox.server_timer begin 
            setskin(NOWINDOW) 
            quiz = oxevent.quiz(1,30) 
            if(quiz == 0) then 
                notice_all("an unexpected error occurred") 
                notice_all("closing event!. ") 
                game.set_event_flag("automatic_oxevent_status",0) 
                warp_all_to_village() 
            elseif(quiz == 1) then 
                if(oxevent.get_attender() == 1) then 
                    game.set_event_flag("automatic_oxevent_status",0) 
                    notice_all("<Automatic-OxEvent> Event is over. See you soon ") 
                    warp_all_to_village() 
                else 
                    server_timer("startoxone",40) 
                end 
            else 
                notice_all("an unexpected error occurred") 
                notice_all("closing event!. ") 
                game.set_event_flag("automatic_oxevent_status",0) 
                warp_all_to_village() 
            end 
        end 
         
        --- Start Ox 1 
        when startoxone.server_timer begin 
            setskin(NOWINDOW) 
            quiz = oxevent.quiz(1,30) 
            if(quiz == 0) then 
                notice_all("an unexpected error occurred") 
                notice_all("closing event!. ") 
                game.set_event_flag("automatic_oxevent_status",0) 
                warp_all_to_village() 
            elseif(quiz == 1) then 
                if(oxevent.get_attender() == 1) then 
                    game.set_event_flag("automatic_oxevent_status",0) 
                    notice_all("<Automatic-OxEvent> Event is over. See you soon ") 
                    warp_all_to_village() 
                else 
                    server_timer("startox",40) 
                end 
            else 
                notice_all("an unexpected error occurred") 
                notice_all("closing event!. ") 
                game.set_event_flag("automatic_oxevent_status",0) 
                warp_all_to_village() 
            end 
        end 
         
        when 20011.chat."Ox Event !. " begin 
            say_title(mob_name(npc.get_race())..":") 
            say("") 
            --- 
            if(game.get_event_flag("automatic_oxevent_status") == 1) then 
            say("Do you want to enter the effectiveness of the Ox") 
            say("") 
            local s = select(locale.yes,locale.no) 
            if(s == 2) then return end 
            pc.warp(896500, 24600) 
            elseif(game.get_event_flag("automatic_oxevent_status") == 2) then 
            say("Do you want to enter the effectiveness of the Ox") 
            say("") 
            local s = select(locale.yes,locale.no) 
            if(s == 2) then return end 
            pc.warp(896300, 28900) 
            elseif(game.get_event_flag("automatic_oxevent_status") == 0) then 
            say("The effectiveness of the Ox now closed") 
            say("") 
            end 
        end 
    end 
end 

Just replace yours OX EVENT quest and if this quest work and you want I can add for you a OX EVENT MEMBER LIMIT like in old quest

Edited by kodepiko
  • Love 1
Link to comment
Share on other sites

Do you edit your client for client -> server quest communication? If not there is no possibility to not working input

Test this quest (you need to summon id 20001 npc and talk to him)

 

quest working begin
    state start begin
        when 20001.chat."Working input" begin
            say_title("TEST")
            say("write smth")
            local something = input()
            chat("INPUT: "..something.." ")
        end
    end
end
Edited by kodepiko
Link to comment
Share on other sites

Send me quests.

On 9/24/2015 at 12:39 AM, fantans said:

hello, i've a error when open ox o others event

set max players to events and return to select channel...

https://metin2.download/picture/kP7ud3YQtOL3V2IpLqfy1HF0q9J1emY9/.png

https://metin2.download/picture/Y82A7CargHujk8R1C1QXhNocE9v6jovJ/.jpg

chanel1

SYSERR: Sep 24 00:29:03.606729 :: SpawnGroup: NOT_EXIST_GROUP_VNUM(2410) Map(72) 
SYSERR: Sep 24 00:29:05.646051 :: Process: SEQUENCE 63eeb980 mismatch 0xdf != 0x0 header 30
SYSERR: Sep 24 00:29:05.646125 :: Process: SEQUENCE_LOG [XXXXXX]-------------
	[109 : 0xaf]
	[006 : 0xca]
	[241 : 0x8a]
	[010 : 0xcf]
	[061 : 0x48]
	[026 : 0xa7]
	[007 : 0x54]
	[029 : 0xc7]
	[029 : 0xd7]
	[030 : 0xdf]

SYSERR: Sep 24 00:29:05.687004 :: ChildLoop: AsyncSQL: query failed: Data too long for column 'hint' at row 1 (query: INSERT DELAYED INTO log (type, time, who, x, y, what, how, hint, ip) VALUES('CHARACTER', NOW(), 57787, 956026, 274765, 0, 'LOGOUT', '186.89.180.164 194424000 1 41 857', '186.89.180.164') errno: 1406)
SYSERR: Sep 24 00:30:20.608194 :: SpawnGroupGroup: NOT_EXIST_GROUP_GROUP_VNUM(2410) MAP(73)

every events like ox, battle empire and others

 

quest oto_ox begin 
    state start begin 
        when 20011.chat." OX-Yarışması " begin 
            say_title(" Uriel : ") 
            say(" Hey! ") 
            say(" Sen Gerçekten Çok Zeki Görünüyorsun. ") 
            say(" OX Yarışması Olacak. ")  
            say(" Sorular Sorulacak Cevap Vereceksin, ") 
            say(" Bilirsen Süper Bir Hediye Kazanacaksın. ") 
            if game.get_event_flag("oxevent_status") == 0 then 
                wait() 
                say_title(" Uriel: ") 
                say(" Şu anda OX-Yarışması Yok ") 
            elseif game.get_event_flag("oxevent_status") == 1 then 
                wait() 
                say_title("Uriel:") 
                pc.setqf("ox_engel",get_time()+10) 
                say(" Yarışmaya Katılmak İstiyormusun? ") 
                local s = select(" Evet ", " Hayır ", " İzlemek İstiyorum ") 
                if s == 1 then 
                if get_time() > pc.getqf("ox_engel") then 
				say("Bug girişiminde bulunmayın !")
                    return 
                end 
                    say_title(" Uriel: ") 
                    say(" Tamam Şimdi Seni Işınlıyorum. ") 
                    wait() 
                    pc.warp(896500, 24600) 
                elseif s == 3 then 
                    say_title(" Uriel: ") 
                    say(" İzleyici Olarakmı Katılmak İstiyorsun? ") 
                    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ı, Giremezsiniz! ") 
                say(" Ancak İzleyici Olarak Katılabilirsin. ") 
                local s = select(" Katıl ", " Katılma ") 
                if s == 1 then 
                    say_title(" Uriel: ") 
                    say(" Tamam,Işınlıyorum Seni. ") 
                    wait() 
                    pc.warp(896300, 28900) 
                end 
            end 
        end 
         
		when 20011.chat."GM: Ox Ayar" begin
		say_title("Auto Ox Event")
		local s = select("Ödül ayarla", "Saat ayarla")
		if s == 2 then
		say("Saat yazınız:")
		local saat = tonumber(input()) -- int
		game.set_event_flag("oxeventsaat",saat)
		end
		if s == 1 then
		say("Ödül kodu giriniz")
		local odulkod = tonumber(input())
		say("Ödül adeti giriniz")
		local oduladet = tonumber(input())
		game.set_event_flag("oxodulkod",odulkod)
		game.set_event_flag("oxoduladet",oduladet)
		chat("Ox event ödülü ayarlanmıştır.")
		end

        when login begin 
            local saat = tonumber(os.date("%H")) 
            local gun = tostring(os.date("%A")) 
            if saat == game.get_event_flag("oxeventsaat") and gun == "Saturday" then -- days settings
                if pc.get_map_index() == 113 then 
                    if game.get_event_flag("oto_ox") == 0 then 
                        if game.get_event_flag("oxevent_maintenance5_status") == 0 then 
                            local stat = oxevent.get_status() 
                            if stat == 1 and game.get_event_flag("oxevent_running_status") == 0 and game.get_event_flag("oxevent_maintenance1_time") == 0 and game.get_event_flag("oxevent_maintenance2_status") == 0 and game.get_event_flag("oxevent_maintenance3_status") == 0 and game.get_event_flag("oxevent_maintenance4_status") == 0 and game.get_event_flag("oxevent_maintenance5_status") == 0 then 
                                local stat = oxevent.get_status() 
                                if stat == 1 and game.get_event_flag("oxevent_running_status") == 0 and game.get_event_flag("oxevent_maintenance1_time") == 0 and game.get_event_flag("oxevent_maintenance2_status") == 0 and game.get_event_flag("oxevent_maintenance3_status") == 0 and game.get_event_flag("oxevent_maintenance4_status") == 0 and game.get_event_flag("oxevent_maintenance5_status") == 0 then 
                                    game.set_event_flag("oxevent_running_status", 1) 
                                    game.set_event_flag("oxevent_status",1) 
                                    game.set_event_flag("oxevent_maintenance1_time", 5) 
                                    game.set_event_flag("oxevent_maintenance3_status", 1) 
                                    notice_all(" <Otomatik OX Sistemi> Acele et ve yerini al! ") 
                                    server_timer('oxevent4', 0, get_server_timer_arg()) 
                                    server_timer('oxevent1', 60, get_server_timer_arg()) 
                                    game.set_event_flag("oto_ox",1)     
                                end 
                            end 
                        end     
                    end 
                else 
                    game.set_event_flag("oxevent_status",1) 
                    if game.get_event_flag("ox_ac_1") == 0 then 
                        notice_all(" <Otomatik OX Sistemi> OX Eventi Başlamıştır ") 
                        game.set_event_flag("ox_ac_1",1) 
                    end 
                end 
            else 
                if game.get_event_flag("oxevent_running_status") == 1 then 
                    oxevent.end_event() 
                    notice_all(" <Otomatik OX Sistemi> OX Kapatıldı ") 
                    game.set_event_flag("oxevent_running_status", 0) 
                    game.set_event_flag("oxevent_status", 0) 
                    game.set_event_flag("ox_ac_1",0) 
                    game.set_event_flag("oxevent_maintenance1_time", 0) 
                    game.set_event_flag("oxevent_maintenance2_status", 0) 
                    game.set_event_flag("oxevent_maintenance3_status", 0) 
                    game.set_event_flag("oxevent_maintenance4_status", 0) 
                    game.set_event_flag("oxevent_maintenance5_status", 0) 
                    game.set_event_flag("oxevent_maintenance6_status", 0) 
                    clear_server_timer('oxevent1', get_server_timer_arg()) 
                    clear_server_timer('oxevent2', get_server_timer_arg()) 
                    clear_server_timer('oxevent3', get_server_timer_arg()) 
                    clear_server_timer('oxevent4', get_server_timer_arg()) 
                    game.set_event_flag("oto_ox",0) 
                end 
                game.set_event_flag("oxevent_running_status", 0) 
                game.set_event_flag("oxevent_status", 0) 
                game.set_event_flag("oxevent_maintenance1_time", 0) 
                game.set_event_flag("oxevent_maintenance2_status", 0) 
                game.set_event_flag("oxevent_maintenance3_status", 0) 
                game.set_event_flag("oxevent_maintenance4_status", 0) 
                game.set_event_flag("oxevent_maintenance5_status", 0) 
                game.set_event_flag("oxevent_maintenance6_status", 0) 
                clear_server_timer('oxevent1', get_server_timer_arg()) 
                clear_server_timer('oxevent2', get_server_timer_arg()) 
                clear_server_timer('oxevent3', get_server_timer_arg()) 
                clear_server_timer('oxevent4', get_server_timer_arg()) 
                game.set_event_flag("oto_ox",0) 
                game.set_event_flag("ox_ac_1",0) 
            end 
        end 

        when oxevent1.server_timer begin 
            if game.get_event_flag("oto_ox") == 1 then 
                clear_server_timer('oxevent1', get_server_timer_arg()) 
                if game.get_event_flag("oxevent_running_status") == 1 then 
                    local stat = oxevent.get_status() 
                    if stat == 1 then 
                        local min_user_number = 2 
                        if game.get_event_flag("oxevent_maintenance1_time") == 0 and oxevent.get_attender() > 1 then 
                            game.set_event_flag("oxevent_maintenance1_time", 0) 
                            oxevent.close() 
                            game.set_event_flag("oxevent_status",2) 
                            local user_number = oxevent.get_attender() 
                            notice_all(" <Otomatik OX Sistemi> OX Eventi "..user_number.." kişiyle başlamıştır ") 
                            server_timer('oxevent2', 5, get_server_timer_arg()) 
                        else 
                            local close_time = game.get_event_flag("oxevent_maintenance1_time") 
                            local close_time_typ = 2 
                            local close_time_typ_text = {"Saniye", "Dakika", "Saat", "Gün", "Ay", "Yıl"} 
                            if close_time == 0 then 
                                min_user_number = 2 
                            elseif close_time == 1 then 
                                close_time_typ_text = {"Saniye", "Dakika", "Saat", "Gün", "Ay", "Yıl"} 
                            end 
                            if close_time != 0 then 
                                game.set_event_flag("oxevent_maintenance1_time", close_time-1) 
                                notice_all(" <Otomatik OX Sistemi> OX Girişleri "..close_time.." "..close_time_typ_text[close_time_typ].." sonra kapanacaktır. ") 
                            else 
                                notice_all(" <Otomatik OX Sistemi> OX Eventi "..oxevent.get_attender().." kişi ile başlatılamıyor. ") 
                                notice_all(" <Otomatik OX Sistemi> Yeni bir oyuncu gelene kadar OX Eventi bekletiliyor. ") 
                            end 
                            server_timer('oxevent1', 60, get_server_timer_arg()) 
                        end 
                    end 
                end 
            end 
        end 

        when oxevent2.server_timer begin 
            if game.get_event_flag("oto_ox") == 1 then 
                clear_server_timer('oxevent2', get_server_timer_arg()) 
                if game.get_event_flag("oxevent_running_status") == 1 then 
                    local stat = oxevent.get_status() 
                    if stat == 2 then 
                        if oxevent.get_attender() > 1 then 
                            local v = oxevent.quiz(1, 30) 
                            if v == 0 then 
                                    game.set_event_flag("oxevent_maintenance1_time", 0) 
                                    server_timer('oxevent1', 5, get_server_timer_arg()) 
                             
                            elseif v == 1 then 
                                server_timer('oxevent2', 40, get_server_timer_arg()) 
                            else 
                                server_timer('oxevent2', 40, get_server_timer_arg()) 
                            end 
                        elseif oxevent.get_attender() == 1 then 
                            oxevent.give_item(40001, 1) 
                            notice_all(" <Otomatik OX Sistemi> 5 Saniye Sonra OX Eventi Sona Erecektir. ") 
                            notice_all(" <Otomatik OX Sistemi> Kazanan birazdan açıklanacak. ") 
                            server_timer('oxevent3', 5, get_server_timer_arg()) 
                        elseif oxevent.get_attender() == 0 then 
                            notice_all(" <Otomatik OX Sistemi> OX Eventi Kazanan Olmadığı İçin Tekrarlanıcaktır. ") 
                            oxevent.end_event() 
                            clear_server_timer('oxevent1', get_server_timer_arg()) 
                            clear_server_timer('oxevent2', get_server_timer_arg()) 
                            clear_server_timer('oxevent3', get_server_timer_arg()) 
                            clear_server_timer('oxevent4', get_server_timer_arg()) 
                            game.set_event_flag("oxevent_running_status", 0) 
                            game.set_event_flag("oxevent_maintenance2_status", 1) 
                            server_timer('oxevent3', 30, get_server_timer_arg()) 
                        end 
                    elseif stat == 3 then 
                        server_timer('oxevent2', 5, get_server_timer_arg()) 
                    else 
                        notice_all(" <Otomatik OX Sistemi> OX Eventinde Bir Hata Oluştu! ") 
                    end 
                end 
            end 
        end 

        when oxevent3.server_timer begin 
            if game.get_event_flag("oto_ox") == 1 then 
                clear_server_timer('oxevent3', get_server_timer_arg()) 
                if game.get_event_flag("oxevent_running_status") == 0 then 
                    if oxevent.open() == 1 then 
                        game.set_event_flag("oxevent_running_status", 1) 
                        game.set_event_flag("oxevent_maintenance1_time", 5) ---- OX Açıldıktan Sonra Girişlerin Kaç Dakika Açık Tutulacağı Örn: 5 Dakika 
                        game.set_event_flag("oxevent_maintenance2_status", 0) 
                        notice_all(" <Otomatik OX Sistemi> OX Yarışması Başladı ") 
                        server_timer('oxevent1', 30, get_server_timer_arg()) 
                    else 
                        notice_all(" <Otomatik OX Sistemi> OX Eventinde Bir Hata Oluştu! ") 
                    end 
                elseif game.get_event_flag("oxevent_running_status") == 1 then 
                    oxevent.end_event() 
                    game.set_event_flag("oxevent_running_status", 0) 
                    clear_server_timer('oxevent1', get_server_timer_arg()) 
                    clear_server_timer('oxevent2', get_server_timer_arg()) 
                    clear_server_timer('oxevent3', get_server_timer_arg()) 
                    notice_all(" <Otomatik OX Sistemi> OX Yarışması Sona Erdiı ") 
                    if game.get_event_flag("oxevent_maintenance4_status") == 0 and game.get_event_flag("oxevent_maintenance5_status") == 0 and game.get_event_flag("oxevent_maintenance6_status") == 0 then 
                        game.set_event_flag("oxevent_maintenance2_status", 1) 
                    else 
                        game.set_event_flag("oxevent_maintenance4_status", 0) 
                        game.set_event_flag("oxevent_maintenance5_status", 0) 
                        game.set_event_flag("oxevent_maintenance6_status", 0) 
                    end 
                end 
            end 
        end 

        when oxevent4.server_timer begin 
            if game.get_event_flag("oto_ox") == 1 then 
                clear_server_timer('oxevent4', get_server_timer_arg()) 
                if game.get_event_flag("oxevent_maintenance3_status") == 1 then 
                    if game.get_event_flag("oxevent_website_status") == 1 then 
                        server_timer('oxevent3', 0, get_server_timer_arg()) 
                        game.set_event_flag("oxevent_website_status", 0) 
                    end 
                    server_timer('oxevent4', 1, get_server_timer_arg()) 
                end 
            end 
        end 
         
         

        when login with pc.count_item("40001") > 0 begin 
            if game.get_event_flag("oto_ox") == 1 then 
                timer("oxevent_price", 0)
				pc.remove_item(40001,999999)
				pc.give_item2(game.get_event_flag("oxodulkod"), game.get_event_flag("oxoduladet"))
            end 
        end 

        when oxevent_price.timer begin 
            if game.get_event_flag("oto_ox") == 1 then 
                say_title(item_name(40001)..":") 
                pc.remove_item(40001,200) ----- OX İtemi Sadece Karakterin Üstünde Bir Kereliğine Bulunan Bir İtem 
                notice_all(" <Otomatik OX Sistemi> OX Eventini "..pc.get_name().." kazandı. ") 
                -- pc.give_item2(71129,1) 
                -- pc.give_item2(71123,1) 
                -- pc.give_item2(50513,10) 
                -- chat("5 EP Kazandın.") 
                game.set_event_flag("oxevent_status",0) 
            end 
        end 
         
        when 20358.chat."GM: OX Sıfırla" with pc.is_gm() begin ---- OX Eventi Aktifken OX'u Kapatmak (Yarışma Anında) 
            say_title(" "..mob_name(20358)..": ") 
            say(" Kapatmak İstiyor Musun? [ENTER] ") 
            local s = select(locale.yes, locale.no) 
            if s == 1 then 
                oxevent.end_event_force() 
                game.set_event_flag("oxevent_running_status", 0) 
                game.set_event_flag("oxevent_status", 0) 
                game.set_event_flag("oxevent_maintenance1_time", 0) 
                game.set_event_flag("oxevent_maintenance2_status", 0) 
                game.set_event_flag("oxevent_maintenance3_status", 0) 
                game.set_event_flag("oxevent_maintenance4_status", 0) 
                game.set_event_flag("oxevent_maintenance5_status", 0) 
                game.set_event_flag("oxevent_maintenance6_status", 0) 
                clear_server_timer('oxevent1', get_server_timer_arg()) 
                clear_server_timer('oxevent2', get_server_timer_arg()) 
                clear_server_timer('oxevent3', get_server_timer_arg()) 
                clear_server_timer('oxevent4', get_server_timer_arg()) 
                game.set_event_flag("oto_ox",0) 
                game.set_event_flag("ox_ac_1",0) 
                say_title(" "..mob_name(20358)..": ") 
                say(" OX Kapatıldı ") 
                notice_all(" <Otomatik OX Sistemi> Otomatik OX Eventi Kapatıldı. ") 
            end 
        end 
    end 
end 
  • Love 1
Link to comment
Share on other sites

priv_empire.quest

oxevent.quest

 

quest oxevent_manager begin
    state start begin
        
        function cleanup_event()
            oxevent.end_event()
            game.set_event_flag("ox_map_login_counter",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

        function enter_level (vnum1,vnum2)
            lv_range={}
            lv_range[1] ={25,105}
            lv_range[2] ={40,105}
            lv_range[3] ={50,105}
            lv_range[4] ={60,105}
            lv_range[5] ={70,105}
            return lv_range [vnum1][vnum2]
        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() + 10*1)
            else
                pc.setqf("ox_end_cooldown_time", get_time()+10*1) -----------------------------------15 Minuten nun
            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()
                    
                    -- read the limits that the admin set hopefully
                    local min = game.get_event_flag("ox_map_level_min")
                    local max = game.get_event_flag("ox_map_level_max")
                    
                    if pc.level < min or pc.level > max then
                        say_title(gameforge.main_quest_lv30._40_sayTitle)
                        say_reward(string.format(gameforge.entry_event_map._040_say, min, max))
                        return
                    end
										
                    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
                    
                    
                    -- check again the limit before we warp the player, maybe someone have trigger the limit 
                    if  oxevent_manager.check_limit() == 0 then
                        say_title(gameforge.main_quest_lv30._40_sayTitle)
                        say(gameforge.entry_event_map._060_say)
                        return
                    end
                    
                    -- removed the random warp, cause the current binary checks the coordinates.
                    --pc.warp(math.random(892973,899719), math.random(23256, 26044) )
                     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.is_gm() begin

            local stat = oxevent.get_status()

            if stat == 0 then
            
                say(gameforge.entry_event_map._150_say)
                local choice = select ("1> min "..oxevent_manager.enter_level(1,1).." max "..oxevent_manager.enter_level(1,2),"2> min "..oxevent_manager.enter_level(2,1).." max "..oxevent_manager.enter_level(2,2), "3> min "..oxevent_manager.enter_level(3,1).." max "..oxevent_manager.enter_level(3,2), "4> min "..oxevent_manager.enter_level(4,1).." max "..oxevent_manager.enter_level(4,2),  "5> min "..oxevent_manager.enter_level(5,1).." max "..oxevent_manager.enter_level(5,2), gameforge.locale.cancel)
                if choice == 6 then
                    return
                end
                
                say(gameforge.entry_event_map._160_say)
                local amount_choice = input_number(gameforge.entry_event_map._240_say)

                 if amount_choice > 200 or amount_choice <= 0 then
                    say(gameforge.entry_event_map._250_say)
                    return
                end

                say(gameforge.oxevent._80_say)
                say(gameforge.entry_event_map._180_say)
                say(gameforge.entry_event_map._190_say .. " " .. oxevent_manager.enter_level(choice,1).. " - " ..oxevent_manager.enter_level(choice,2))
                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)
                        -- set the limits we set previous asked
                        game.set_event_flag("ox_map_level_min",oxevent_manager.enter_level(choice,1))
                        game.set_event_flag("ox_map_level_max",oxevent_manager.enter_level(choice,2))
                        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
quest priv_empire begin
	state start begin
		when guild_man1.chat.gameforge.priv_empire._10_npcChat or guild_man2.chat.gameforge.priv_empire._10_npcChat or guild_man3.chat.gameforge.priv_empire._10_npcChat with pc.get_gm_level() == 5  begin

			say_title(gameforge.priv_empire._20_sayTitle)

			say(gameforge.priv_empire._30_say)
			local empire_names = 
			{
				[0] = gameforge.priv_empire._33_array,
				[1] = gameforge.locale.empire_names_2,
				[2] = gameforge.locale.empire_names_3,
				[3] = gameforge.locale.empire_names_4,
			}

                        local e = select(empire_names[1], empire_names[2], empire_names[3], empire_names[0], gameforge.locale.cancel)

			if 5 == e then
				return
			end

			if 4 == e then
				e = 0
			end

			say_title(gameforge.priv_empire._40_sayTitle)
			say_reward(__get_empire_priv_string(e))

			say(gameforge.priv_empire._50_say)
			local titles = 
			{
				gameforge.priv_empire._53_array, 
				gameforge.priv_empire._54_array, 
				gameforge.priv_empire._55_array,
				gameforge.priv_empire._56_array,
			}

			local t = select(
				titles[1],
				titles[2],
				titles[3],
				titles[4],
				gameforge.locale.cancel)

			if 5 == t then
				return
			end

			say_title(gameforge.priv_empire._40_sayTitle)
say_reward(string.format(gameforge.priv_empire._60_sayReward, empire_names[e], titles[t]))
			say(gameforge.priv_empire._70_say)
			local g={10, 20, 50, 100, 150, 200}
			local p = select(g[1]..'%', g[2]..'%', g[3]..'%', g[4]..'%', g[5]..'%', g[6]..'%', gameforge.locale.cancel)
			if p == 7 then
				return
			end

			say_title(gameforge.priv_empire._40_sayTitle)
say_reward(string.format(gameforge.priv_empire._100_sayReward, empire_names[e], titles[t], g[p]))
			say(gameforge.priv_empire._110_say)
			local v = 0
			local h =  select (
				gameforge.priv_empire._120_select, 
				gameforge.priv_empire._130_select,  
				gameforge.priv_empire._134_select,
				gameforge.priv_empire._135_select,
				gameforge.locale.cancel
			)
			if 5 == h then
				return
			elseif 4 == h then
				say_title(gameforge.priv_empire._40_sayTitle)
say_reward(string.format(gameforge.priv_empire._100_sayReward, empire_names[e], titles[t], g[p]))
				say(gameforge.priv_empire._140_say)
				v=input()
				if v == "" then
					v = 0
				else
					v=tonumber(v)
				end

			elseif 3 == h then
				v=24
			elseif 2 == h then
				v=12
			elseif 1 == h then
				v=6
			end

			say_title(gameforge.priv_empire._40_sayTitle)
say_reward(string.format(gameforge.priv_empire._150_sayReward, empire_names[e], titles[t], g[p], v))
			say(gameforge.priv_empire._160_say)
			local s =  select(gameforge.locale.guild.yes, gameforge.locale.guild.no)
			if 1 == s then
				say_title(gameforge.priv_empire._40_sayTitle)
				__give_empire_priv(e, t, g[p], v*60*60)
				say_reward(gameforge.priv_empire._170_sayReward)
			else
				say_title(gameforge.priv_empire._40_sayTitle)
				say_reward(gameforge.priv_empire._180_sayReward)
			end
		end
	end
end


 

when input "30"  or every number in "max_player" return to login

Edited by fantans
Link to comment
Share on other sites

Ok, but even using my simple test quest when you write something at input - it crash your channel core or only crash your client, and you are still able to login again at this channel?

If it's core crash then you have something wrong in your source code or have mess with questlib.lua (you using files from someone so it can be)

Link to comment
Share on other sites

yes I still to login channel, not crash in client but go to login again

 

sry for my bad english

If you write ps command at putty/virtualbox console you still see all processes?

Umm.. you can login again to the server after disconnect? or you need to restart your server?

It's important because only on that way we can say it's client or game problem

  • Love 1
Link to comment
Share on other sites

Yes you can login again on the metin the core dont crash only client.

How can I make the quest comunication whit client to see if is god.

P.D: After put your quest write test whit input. Then and after kick me.

fa52c885c9ddf72679f1ace188e887e5.png

Edited by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

  • 3 months later...

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.