Çözüldü GM Servis Quest Ekledim Fakat Oyunda Bulamıyorum

  • Konuyu açan Konuyu açan akin025
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 45
  • Gösterim Gösterim 6K
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

akin025

Üye
Üye
Mesaj
42
Çözümler
1
Beğeni
22
Puan
661
Ticaret Puanı
0
Lua (Quest):
Genişlet Daralt Kopyala
quest gmservis begin
    state start begin
        when letter with pc.is_gm() begin
            send_letter("Yönetim Paneli ")
            end
        when info or button with pc.is_gm() begin
        if pc.is_gm() == false then
            say("Hayırdır la sana ?")
            return
        end
        local sec123 = select("Servis ","Dropları Aç ","Otomatik Yedek Alma ","Duyuruları Başlat ","Bonus ekle","Binek Çağır","Bakım Modu","Vazgeç ")
            if sec123 == 1 then
            local s = select("Becerilerimi Perfect yap","İtem ver","Saç Stili ver","Güneş Özütü ve Ay Özütü ver","Giriş eşyası al","NPC çağır","Event başlat veya bitir","Vazgeç ")
                if s == 1 then
                    if pc.get_job() == 0 then
                                    pc.set_skill_level(1,40)
                                    pc.set_skill_level(2,40)
                                    pc.set_skill_level(3,40)
                                    pc.set_skill_level(4,40)
                                    pc.set_skill_level(5,40)
                                    pc.set_skill_level(137,20)
                                    pc.set_skill_level(138,20)
                                    pc.set_skill_level(139,20)
                                    pc.set_skill_level(131,10)
                                    pc.set_skill_level(129,40)
                                    pc.set_skill_level(128,20)
                                    pc.set_skill_level(130,21)
                                    pc.set_skill_level(127,20)
                                    pc.set_skill_level(126,20)
                                    pc.set_skill_level(124,40)
                                    pc.set_skill_level(121,40)
                                    pc.set_skill_level(122,2)
                                    pc.set_skill_level(17,40)
                                    pc.set_skill_level(18,40)
                                    pc.set_skill_level(19,40)
                                    pc.set_skill_level(20,40)
                                    pc.set_skill_level(16,40)
                                    send_letter("Yönetim Paneli")
                                    end
                    if pc.get_job() == 1 then
                                    pc.set_skill_level(46,40)
                                    pc.set_skill_level(47,40)
                                    pc.set_skill_level(48,40)
                                    pc.set_skill_level(49,40)
                                    pc.set_skill_level(50,40)
                                    pc.set_skill_level(137,20)
                                    pc.set_skill_level(138,20)
                                    pc.set_skill_level(139,20)
                                    pc.set_skill_level(140,20)
                                    pc.set_skill_level(131,10)
                                    pc.set_skill_level(130,21)
                                    pc.set_skill_level(129,40)
                                    pc.set_skill_level(128,20)
                                    pc.set_skill_level(127,20)
                                    pc.set_skill_level(126,20)
                                    pc.set_skill_level(124,40)
                                    pc.set_skill_level(121,40)
                                    pc.set_skill_level(122,2)
                                    pc.set_skill_level(49,40)
                                    pc.set_skill_level(50,40)
                                    pc.set_skill_level(48,40)
                                    pc.set_skill_level(47,40)
                                    pc.set_skill_level(46,40)
                                    send_letter("Yönetim Paneli")
                                    end
                    if pc.get_job() == 2 then
                                    pc.set_skill_level(61,40)
                                    pc.set_skill_level(62,40)
                                    pc.set_skill_level(63,40)
                                    pc.set_skill_level(64,40)
                                    pc.set_skill_level(65,40)
                                    pc.set_skill_level(66,40)
                                    pc.set_skill_level(137,20)
                                    pc.set_skill_level(138,20)
                                    pc.set_skill_level(139,20)
                                    pc.set_skill_level(130,21)
                                    pc.set_skill_level(131,10)
                                    pc.set_skill_level(129,40)
                                    pc.set_skill_level(128,20)
                                    pc.set_skill_level(127,20)
                                    pc.set_skill_level(126,20)
                                    pc.set_skill_level(124,40)
                                    pc.set_skill_level(121,40)
                                    pc.set_skill_level(122,2)
                                    pc.set_skill_level(76,40)
                                    pc.set_skill_level(77,40)
                                    pc.set_skill_level(78,40)
                                    pc.set_skill_level(79,40)
                                    pc.set_skill_level(80,40)
                                    pc.set_skill_level(81,40)
                                    send_letter("Yönetim Paneli")
                                    end
                    if pc.get_job() == 3 then
                                    pc.set_skill_level(91,40)
                                    pc.set_skill_level(92,40)
                                    pc.set_skill_level(93,40)
                                    pc.set_skill_level(94,40)
                                    pc.set_skill_level(95,40)
                                    pc.set_skill_level(96,40)
                                    pc.set_skill_level(137,20)
                                    pc.set_skill_level(138,20)
                                    pc.set_skill_level(139,20)
                                    pc.set_skill_level(131,10)
                                    pc.set_skill_level(130,21)
                                    pc.set_skill_level(129,40)
                                    pc.set_skill_level(128,20)
                                    pc.set_skill_level(127,20)
                                    pc.set_skill_level(126,20)
                                    pc.set_skill_level(124,40)
                                    pc.set_skill_level(121,40)
                                    pc.set_skill_level(122,2)
                                    pc.set_skill_level(106,40)
                                    pc.set_skill_level(107,40)
                                    pc.set_skill_level(108,40)
                                    pc.set_skill_level(109,40)
                                    pc.set_skill_level(110,40)
                                    pc.set_skill_level(111,40)
                                    end
                elseif s == 2 then
                    if pc.get_job() == 0 then
                                    pc . give_item2("40002" , 1)
                                    pc . give_item2("40003" , 1)
                                    pc . give_item2("189" , 1)
                                    pc . give_item2("279" , 1)
                                    pc . give_item2("11299" , 1)
                                    pc . give_item2("12019" , 1)
                                    pc . give_item2("14229" , 1)
                                    pc . give_item2("16229" , 1)
                                    pc . give_item2("15419" , 1)
                                    pc . give_item2("17229" , 1)
                                    pc . give_item2("12289" , 1)
                                    pc . give_item2("13149" , 1)
                                    send_letter("Yönetim Paneli")
                                    end
                    if pc.get_job() == 1 then
                                    pc . give_item2("40002" , 1)
                                    pc . give_item2("40003" , 1)
                                    pc . give_item2("1139" , 1)
                                    pc . give_item2("4049" , 1)
                                    pc . give_item2("2179" , 1)
                                    pc . give_item2("2169" , 1)
                                    pc . give_item2("12029" , 1)
                                    pc . give_item2("11499" , 1)
                                    pc . give_item2("14229" , 1)
                                    pc . give_item2("16229" , 1)
                                    pc . give_item2("15419" , 1)
                                    pc . give_item2("17229" , 1)
                                    pc . give_item2("12409" , 1)
                                    pc . give_item2("13149" , 1)
                                    send_letter("Yönetim Paneli")
                                    end
                    if pc.get_job() == 2 then
                                    pc . give_item2("40002" , 1)
                                    pc . give_item2("40003" , 1)
                                    pc . give_item2("12039" , 1)
                                    pc . give_item2("11699" , 1)
                                    pc . give_item2("14229" , 1)
                                    pc . give_item2("16229" , 1)
                                    pc . give_item2("15419" , 1)
                                    pc . give_item2("17229" , 1)
                                    pc . give_item2("12549" , 1)
                                    pc . give_item2("13149" , 1)
                                    pc . give_item2("289" , 1)
                                    pc . give_item2("3129" , 1)
                                    pc . give_item2("279" , 1)
                                    send_letter("Yönetim Paneli")
                                    end
                    if pc.get_job() == 3 then
                                    pc . give_item2("40002" , 1)
                                    pc . give_item2("40003" , 1)
                                    pc . give_item2("12049" , 1)
                                    pc . give_item2("11899" , 1)
                                    pc . give_item2("14229" , 1)
                                    pc . give_item2("16229" , 1)
                                    pc . give_item2("15419" , 1)
                                    pc . give_item2("17229" , 1)
                                    pc . give_item2("12689" , 1)
                                    pc . give_item2("13149" , 1)
                                    pc . give_item2("5129" , 1)
                                    pc . give_item2("7199" , 1)
                                    send_letter("Yönetim Paneli")
                                    end
                elseif s == 3 then
                    if pc.get_job() == 0 then
                        if pc.get_sex() == 1 then
                                    pc . give_item2("75013" , 1)
                                    pc . give_item2("75014" , 1)
                                    pc . give_item2("75015" , 1)
                                    pc . give_item2("75016" , 1)
                                    pc . give_item2("75017" , 1)
                                    pc . give_item2("75018" , 1)
                                    pc . give_item2("75019" , 1)
                                    pc . give_item2("75020" , 1)
                                    send_letter("Yönetim Paneli")
                    else
                                    pc . give_item2("74013" , 1)
                                    pc . give_item2("74014" , 1)
                                    pc . give_item2("74015" , 1)
                                    pc . give_item2("74016" , 1)
                                    pc . give_item2("74017" , 1)
                                    pc . give_item2("74018" , 1)
                                    pc . give_item2("74019" , 1)
                                    pc . give_item2("74020" , 1)
                                    send_letter("Yönetim Paneli")
                                    end
                                end
                    if pc.get_job() == 1 then
                        if pc.get_sex() == 1 then
                                    pc . give_item2("74263" , 1)
                                    pc . give_item2("74264" , 1)
                                    pc . give_item2("74265" , 1)
                                    pc . give_item2("74266" , 1)
                                    pc . give_item2("74267" , 1)
                                    pc . give_item2("74268" , 1)
                                    pc . give_item2("74269" , 1)
                                    pc . give_item2("74270" , 1)
                                    send_letter("Yönetim Paneli")
                        else
                                    pc . give_item2("75213" , 1)
                                    pc . give_item2("75214" , 1)
                                    pc . give_item2("75215" , 1)
                                    pc . give_item2("75216" , 1)
                                    pc . give_item2("75217" , 1)
                                    pc . give_item2("75218" , 1)
                                    pc . give_item2("75219" , 1)
                                    pc . give_item2("75220" , 1)
                                    send_letter("Yönetim Paneli")
                                    end
                                end
                    if pc.get_job() == 2 then
                        if pc.get_sex() == 1 then
                                    pc . give_item2("75413" , 1)
                                    pc . give_item2("75414" , 1)
                                    pc . give_item2("75415" , 1)
                                    pc . give_item2("75416" , 1)
                                    pc . give_item2("75417" , 1)
                                    pc . give_item2("75418" , 1)
                                    pc . give_item2("75419" , 1)
                                    pc . give_item2("75420" , 1)
                                    send_letter("Yönetim Paneli")
                        else
                                    pc . give_item2("74513" , 1)
                                    pc . give_item2("74514" , 1)
                                    pc . give_item2("74515" , 1)
                                    pc . give_item2("74516" , 1)
                                    pc . give_item2("74517" , 1)
                                    pc . give_item2("74518" , 1)
                                    pc . give_item2("74519" , 1)
                                    pc . give_item2("74520" , 1)
                                    send_letter("Yönetim Paneli")
                                    end
                                end
                    if pc.get_job() == 3 then
                        if pc.get_sex() == 1 then
                                    pc . give_item2("74763" , 1)
                                    pc . give_item2("74764" , 1)
                                    pc . give_item2("74765" , 1)
                                    pc . give_item2("74766" , 1)
                                    pc . give_item2("74767" , 1)
                                    pc . give_item2("74768" , 1)
                                    pc . give_item2("74769" , 1)
                                    pc . give_item2("74770" , 1)
                                    send_letter("Yönetim Paneli")
                        else
                                    pc . give_item2("75613" , 1)
                                    pc . give_item2("75614" , 1)
                                    pc . give_item2("75615" , 1)
                                    pc . give_item2("75616" , 1)
                                    pc . give_item2("75617" , 1)
                                    pc . give_item2("75618" , 1)
                                    pc . give_item2("75619" , 1)
                                    pc . give_item2("75620" , 1)
                                    send_letter("Yönetim Paneli")
                                    end
                                end
                elseif s == 4 then
                                    pc . give_item2("72726" , 1)
                                    pc . give_item2("72730" , 1)
                                    send_letter("Yönetim Paneli")
                elseif s == 5 then
                    local ss = select("Kilit Açma Taşı(5 adet)","Zin-Sa-Gui Kale Haritası ","Zin-Bong-In Anahtar","Kan Taşı, Geçiş Bileti, Kıvrık Anahtar","Ruh Kristali Anahtarı ","Küçülen Kafa","Surat Totemi","Vazgeç ")
                        if ss == 1 then
                            pc . give_item2("50084" , 1)
                            pc . give_item2("50084" , 1)
                            pc . give_item2("50084" , 1)
                            pc . give_item2("50084" , 1)
                            pc . give_item2("50084" , 1)
                            send_letter("Yönetim Paneli")
                        elseif ss == 2 then
                            pc . give_item2("30302" , 1)
                            send_letter("Yönetim Paneli")
                        elseif ss == 3 then
                            pc . give_item2("30304" , 1)
                            send_letter("Yönetim Paneli")
                        elseif ss == 4 then
                            pc . give_item2("30190" , 1)
                            pc . give_item2("71095" , 1)
                            pc . give_item2("30179" , 3)                      
                            send_letter("Yönetim Paneli")
                        elseif ss == 5 then
                            pc . give_item2("30311" , 1)
                            send_letter("Yönetim Paneli")
                        elseif ss == 6 then
                            pc . give_item2("30319" , 1)
                            send_letter("Yönetim Paneli")
                        elseif ss == 7 then
                            pc . give_item2("30312" , 1)
                            send_letter("Yönetim Paneli")
                        elseif ss == 8 then
                            return
                            send_letter("Yönetim Paneli")
                        end
                elseif s == 6 then
                    local sss = select("Satıcı, Silahçı, Zırhçı ","Genel Depocu Helen, Olay Yardımcısı ","Malzemeci Glocken, Madenci","Kud Heykeli","Kaplumbağa Kayalığı ","Runik Direği","Bazalt Dikili Taş ","Vazgeç ")
                        if sss == 1 then
                            command("mob 9001")
                            command("mob 9002")
                            command("mob 9003")
                            send_letter("Yönetim Paneli")
                        elseif sss == 2 then
                            command("mob 9010")
                            command("mob 9004")
                            send_letter("Yönetim Paneli")
                        elseif sss == 3 then
                            command("mob 9007")
                            command("mob 9008")
                            send_letter("Yönetim Paneli")
                        elseif sss == 4 then
                            command("mob 30101")
                            send_letter("Yönetim Paneli")
                        elseif sss == 5 then
                            command("mob 30103")
                            send_letter("Yönetim Paneli")
                        elseif sss == 6 then
                            command("mob 30104")
                            send_letter("Yönetim Paneli")
                        elseif sss == 7 then
                            command("mob 30102")
                            send_letter("Yönetim Paneli")
                        elseif sss == 8 then
                            return
                            send_letter("Yönetim Paneli")
                        end
                elseif s == 7 then
                    local event = select("Ramazan Etkinliği","Lonca Savaşları Turnuvası ","Savun ve Yok et ","Kostüm Etkinliği","Ayışığı Etkinliği","Mistik Sandık Etkinliği","Futbol Topu Etkinliği","Kapat")
                    if event == 1 then
                    local event2 = select("Ramazan Etkinliği başlat","Bereket Meyvesi ödülleri","Ramazan etkinliği bitir","Tabak drobu aç ","Hiçbir şey")
                    if event2 == 1 then
                    notice_all("Ramazan ayı etkinliği başladı!")
                    notice_all("Tarihçi'yi ziyaret et, Niyetli Vatandaş'a bir iyilik yap ya da")
                    notice_all("yaratıkları öldürüp simitleri al!")
                    game.set_event_flag("ramazan",1)
                    send_letter("Yönetim Paneli")
                    elseif event2 == 2 then
                    notice_all("Bereket meyvelerini Tarihçi'ye götür!")
                    notice_all("Ödülünü al!")
                    game.set_event_flag("ramazan",2)
                    send_letter("Yönetim Paneli")
                    elseif event2 == 3 then
                    notice_all("Ramazan ayı etkinliği sona erdi.")
                    game.set_event_flag("ramazan",0)
                    send_letter("Yönetim Paneli")
                    elseif event2 == 4 then
                    game.set_event_flag("tabak",1)
                    server_timer("tabak",60*60*6)
                    notice_all("Bağış Tabağı düşürmek için Metin Taşlarını ve patronları yok et!")
                    notice_all("Kalan Süre: 6 saat")
                    send_letter("Yönetim Paneli")
                    return
                    else
                    send_letter("Yönetim Paneli")
                    return
                    end
                    elseif event == 2 then
                    local event3 = select("Turnuva kayıtlarını aç ","Turnuva kayıtlarını kapat","Hiçbir şey")
                    if event3 == 1 then
                    notice_all("Lonca Savaşları Turnuvası kayıtları açıldı!")
                    notice_all("Turnuvaya katılmak için Savaş Sorumlusu ile konuş.")
                    game.set_event_flag("turnuva",1)
                    send_letter("Yönetim Paneli")
                    elseif event3 == 2 then
                    notice_all("Lonca Savaşları Turnuvası kayıtları kapandı.")
                    notice_all("Turnuva zamanı ve lonca eşleşmeleri forumdan duyurulacaktır.")
                    game.set_event_flag("turnuva",0)
                    send_letter("Yönetim Paneli")
                    elseif event3 == 3 then
                    return
                    send_letter("Yönetim Paneli")
                    end
                    elseif event == 3 then
                    local event4 = select("Savun Yok et aç ","Savun Yok et kapat","Hiçbir şey")
                    if event4 == 1 then
                        send_letter("Yönetim Paneli")
                        say_reward("Etkinliğin yapılacağı haritayı seç.")
                        say("")
                        local o = select("Yongbi Çölü ", "Sohan Dağı ", "Vadi", "Alev Diyarı ", "Vazgeç ")  
                        if o == 1 then
                        say_title("Savun ve Yok et")
                        say("")
                        say("Harita : Çöl")
                        say_reward("Başlatmak istiyor musun?")
                        local w = select("Evet", "Hayır")
                            if w == 1 then
                            game.set_event_flag("defend_and_destroy_red", 5 )
                            game.set_event_flag("defend_and_destroy_yellow", 5 )
                            game.set_event_flag("defend_and_destroy_blue", 5 )
                            game.set_event_flag("defend_and_destroy", 1 )
                            regen_in_map(63, "data/dungeon/defend_and_destroy_wueste.txt")
                            notice_all("Savun ve Yok et etkinliği başladı.")
                            notice_all("Etkinlik haritası: Yongbi Çölü ")
                            notice_all("Bilgi almak ve kuralları öğrenmek için Savaş Sorumlusu'na git.")
                            elseif w == 2 then
                            return
                            end
                        elseif o == 2 then
                        say_title("Savun Ve Yok et")
                        say("")
                        say("Harita : Sohan Dağı ")
                        say_reward("Başlatmak istiyor musun?")
                        local e = select("Evet", "Hayır")
                            if e == 1 then
                            game.set_event_flag("defend_and_destroy_red", 5 )
                            game.set_event_flag("defend_and_destroy_yellow", 5 )
                            game.set_event_flag("defend_and_destroy_blue", 5 )
                            game.set_event_flag("defend_and_destroy", 1 )
                            regen_in_map(61, "data/dungeon/defend_and_destroy_ice.txt")
                            notice_all("Savun ve Yok et etkinliği başladı.")
                            notice_all("Etkinlik haritası: Sohan Dağı ")
                            notice_all("Bilgi almak ve kuralları öğrenmek için Savaş Sorumlusu'na git.")
                            elseif e == 2 then
                            return
                            end
                        elseif o == 3 then
                        say_title("Savun ve Yok et")
                        say("")
                        say("Harita : Seungryong Vadisi")
                        say_reward("Başlatmak istiyor musun?")
                        local t = select("Evet", "Hayır")  
                            if t == 1 then
                            game.set_event_flag("defend_and_destroy_red", 5 )
                            game.set_event_flag("defend_and_destroy_yellow", 5 )
                            game.set_event_flag("defend_and_destroy_blue", 5 )
                            game.set_event_flag("defend_and_destroy", 1 )
                            regen_in_map(64, "data/dungeon/defend_and_destroy_ork.txt")
                            notice_all("Savun ve Yok et etkinliği başladı.")
                            notice_all("Etkinlik haritası: Seungryong Vadisi")
                            notice_all("Bilgi almak ve kuralları öğrenmek için Savaş Sorumlusu'na git.")
                            elseif t == 2 then
                            return
                            end
                        elseif o == 4 then
                        say_title("Savun ve Yok et")
                        say("")
                        say("Harita : Doyyumhwan")
                        say_reward("Başlatmak istiyor musun?")
                        local f = select("Evet", "Hayır")
                            if f == 1 then
                            game.set_event_flag("defend_and_destroy_red", 5 )
                            game.set_event_flag("defend_and_destroy_yellow", 5 )
                            game.set_event_flag("defend_and_destroy_blue", 5 )
                            game.set_event_flag("defend_and_destroy", 1 )
                            regen_in_map(62, "data/dungeon/defend_and_destroy_fire.txt")
                            notice_all("Savun ve Yok et etkinliği başladı.")
                            notice_all("Etkinlik haritası: Doyyumhwan")
                            notice_all("Bilgi almak ve kuralları öğrenmek için Savaş Sorumlusu'na git.")
                            elseif f == 2 then
                            return
                            end
                        elseif o == 5 then
                        return
                        end
                    elseif event4 == 2 then
                    notice_all("Savun ve Yok et etkinliği sona erdi.")
                    game.set_event_flag("defend_and_destroy", 0 )
                    send_letter("Yönetim Paneli")
                    elseif event4 == 3 then
                    return
                    send_letter("Yönetim Paneli")
                    end
                    elseif event == 4 then
                    local event5 = select("Kostüm drop aç ","Hiçbir şey")
                    if event5 == 1 then
                    clear_server_timer("kostum_kapat")
                    notice_all("Metin Taşlarını yok et ve Olimpiyat Kostümü kazan!")
                    notice_all("Kalan Süre: 6 saat")
                    game.set_event_flag("dressup",1)
                    server_timer("kostum_kapat",60*60*6)
                    send_letter("Yönetim Paneli")
                    elseif event5 == 2 then          
                    return
                    send_letter("Yönetim Paneli")
                    end
                    elseif event == 5 then
                    local panpa = select("Ayışığı etkinliği başlat","Ayışığı etkinliği bitir","Vazgeç ")
                    if panpa == 1 then
                    say("Kaç saat açılacak?")
                    local aysaat = tonumber(input(""))
                    say("Emin misin?")
                    local aye = select("Evet","Hayır")
                        if aye == 2 then
                        send_letter("Yönetim Paneli")
                        return
                        else                  
                        game.set_event_flag("ayisigi",1)
                        notice_all("Ayışığı Define Sandığı etkinliği başladı!")
                        notice_all("Kalan Süre: "..aysaat.." saat")
                        server_timer("ayisik",aysaat*60*60)
                        send_letter("Yönetim Paneli")
                        return
                        end
                    elseif panpa == 2 then
                    game.set_event_flag("ayisigi",0)
                    clear_server_timer("ayisik")
                    notice_all("Ayışığı Define Sandığı etkinliği sona erdi.")
                    send_letter("Yönetim Paneli")
                    elseif panpa == 3 then
                    return
                    send_letter("Yönetim Paneli")
                    end
                    elseif event == 6 then
                    local panpa2 = select("Mistik Sandık droplarını aç ","Anahtar droplarını aç ","Etkinliği bitir","Vazgeç ")
                    if panpa2 == 1 then
                    say("Kaç saat açılacak?")
                    local missaat = tonumber(input(""))
                    say("Emin misin?")
                    local mise = select("Evet","Hayır")
                        if mise == 2 then
                        send_letter("Yönetim Paneli")
                        return
                        else                  
                        game.set_event_flag("esrarengiz_sandik",1)
                        notice_all("Mistik Sandık etkinliği başladı...!")
                        notice_all("Kalan Süre: "..missaat.." saat")
                        server_timer("mistik1",missaat*60*60)
                        send_letter("Yönetim Paneli")
                        return
                        end
                    elseif panpa2 == 2 then
                    game.set_event_flag("esrarengiz_sandik",2)
                    notice_all("Mistik Sandıklarını açmak için gerekli olan anahtarları ")
                    notice_all("elde etmek için düşman krallıkların oyuncularını yen!")
                    send_letter("Yönetim Paneli")
                    elseif panpa2 == 3 then
                    notice_all("Mistik Sandık etkinlği sona erdi.")
                    clear_server_timer("mistik1")
                    send_letter("Yönetim Paneli")
                    elseif panpa2 == 4 then
                    send_letter("Yönetim Paneli")
                    return
                    end
                    elseif event == 7 then
                    local panpa5 = select("Futbol Topu etkinliği başlat","Futbol Topu etkinliği bitir","Hiçbir şey")
                    if panpa5 == 1 then
                    say("Kaç saat açılacak?")
                    local futsaat = tonumber(input(""))
                    say("Emin misin?")
                    local fute = select("Evet","Hayır")
                        if fute == 2 then
                        send_letter("Yönetim Paneli")
                        return
                        else                  
                        game.set_event_flag("futboltopu",1)
                        notice_all("Futbol Topu etkinliği başladı!")
                        notice_all("Kalan Süre: "..futsaat.." saat")
                        server_timer("futboltopu",futsaat*60*60)
                        send_letter("Yönetim Paneli")
                        return
                        end
                    elseif panpa5 == 2 then
                    game.set_event_flag("futboltopu",0)
                    notice_all("Futbol Topu etkinliği sona erdi.")
                    clear_server_timer("futboltopu")
                    send_letter("Yönetim Paneli")
                    elseif panpa5 == 3 then
                    send_letter("Yönetim Paneli")
                    return
                    end
                    elseif event == 8 then
                    send_letter("Yönetim Paneli")
                    return
                    end
                elseif s == 8 then
                    send_letter("Yönetim Paneli")
                    return
                end
                end
              
            if sec123 == 2 then  
            say_title("Yönetim Paneli  ")
            say("Dropları otomatik olarak ; ")
            say_reward("başlatmak istediğine eminmisin? ")
            local dr1 = select("Evet", "Hayır")
            if dr1 == 1 then  
            __give_empire_priv(0, 1, 150, 60*60*24*15)
            __give_empire_priv(0, 2, 150, 60*60*24*15)
            __give_empire_priv(0, 3, 150, 60*60*24*15)
            __give_empire_priv(0, 4, 150, 60*60*24*15)          
            send_letter("Yönetim Paneli ")  
          
          
            end
            end
          
            if sec123 == 3 then      
            say_title("Yönetim Paneli  ")
            say("Otomatik yedekleme sistemi ve Log silme sistemini ")
            say_reward("başlatmak istediğine eminmisin? ")
            local y1 =select("Evet", "Hayır")
            if 1 == y1 then  
            chat("6 saat arayla yedek alınacak.")
            os.execute("cd /usr/game && sh yedek.sh &")                      
            server_loop_timer("oto_yedek",60*60*6)                          
            send_letter("Yönetim Paneli ")      
      
          
            end
            end
      
            if sec123 == 4 then      
            say_title("Yönetim Paneli  ")
            say("Duyuruları başlatmak istediğine eminmisin ")
            local d1 =select("Evet", "Hayır")
            if 1 == d1 then
            clear_server_timer("auto_notice")
            server_loop_timer("auto_notice",1)
            chat("Duyurular zamanı gelince başlayacak.")  
            send_letter("Yönetim Paneli ")                  
              
            end
            end  
          
            if sec123 == 5 then
            say_title("Yönetim Paneli")
            local ass = select("Hareket Hızı (500)","Saldırı Hızı (200)","Büyü Hızı (1000)","Saldırı Değeri","Max. HP ve HP Üretimi","Yarı İnsan ","Defans","Hiçbiri")
            if ass == 1 then
            chat("Karakterine 7 gün için 500 Hareket Hızı ekledin.")
            affect.add_collect(apply.MOV_SPEED, 500, 60*60*24*7)
            affect.add_collect(apply.IMMUNE_STUN, 1, 60*60*24*365) ----1 yıl sersemlik -----
            elseif ass == 2 then
            chat("Karakterine 7 gün için 500 Saldırı Hızı ekledin.")
            affect.add_collect(apply.ATT_SPEED, 200, 60*60*24*7)
            affect.add_collect(apply.IMMUNE_STUN, 1, 60*60*24*365) ----1 yıl sersemlik -----
            elseif ass == 3 then
            chat("Karakterine 7 gün için 1000 Büyü Hızı ekledin.")
            affect.add_collect(apply.CAST_SPEED, 1000, 60*60*24*7)
            affect.add_collect(apply.IMMUNE_STUN, 1, 60*60*24*365) ----1 yıl sersemlik -----
            elseif ass == 4 then
            chat("Karakterine 7 gün için 2000 Saldırı Değeri ekledin.")
            affect.add_collect(apply.ATT_BONUS,2000,60*60*24*7)
            affect.add_collect(apply.IMMUNE_STUN, 1, 60*60*24*365) ----1 yıl sersemlik -----
            elseif ass == 5 then
            chat("Karakterine 7 gün için 20000 HP ve %5000 Hp Üretimi ekledin.")
            affect.add_collect(apply.HP_REGEN, 5000, 60*60*24*7)
            affect.add_collect(apply.MAX_HP, 20000, 60*60*24*7)
            affect.add_collect(apply.IMMUNE_STUN, 1, 60*60*24*365) ----1 yıl sersemlik -----
            elseif ass == 6 then
            chat("Karakterine 7 gün için %500 Yarı İnsan ekledin.")
            affect.add_collect(apply.ATTBONUS_HUMAN, 500, 60*60*24*7)
            affect.add_collect(apply.IMMUNE_STUN, 1, 60*60*24*365) ----1 yıl sersemlik -----
            elseif ass == 7 then
            chat("Karakterine 7 gün için 500 Defans ekledin.")
            affect.add_collect(apply.DEF_BONUS, 500, 60*60*24*7)
            affect.add_collect(apply.IMMUNE_STUN, 1, 60*60*24*365) ----1 yıl sersemlik -----
            elseif ass == 8 then
            return
            end              
            end
      
            if sec123 == 6 then
            say_title("Birini seç. ")
            local gnssssss = select("Yavru Ren Geyiği(e)","Vahşi Ren Geyiği(e)","Cesur Ren Geyiği(e)","Yavru Ren Geyiği(d)","Vahşi Ren Geyiği(d)","Cesur Ren Geyiği(d)","Kapat")
            if gnssssss == 1 then
                pc.mount(20213, 1800)
                chat("Binek çağırıldı!")  
            elseif gnssssss == 2 then
                pc.mount(20214, 1800)
                chat("Binek çağırıldı!")  
            elseif gnssssss == 3 then
                pc.mount(20215, 1800)
                chat("Binek çağırıldı!")  
            elseif gnssssss == 4 then
                pc.mount(20216, 1800)
                chat("Binek çağırıldı!")
            elseif gnssssss == 5 then
                pc.mount(20217, 1800)
                chat("Binek çağırıldı!")  
            elseif gnssssss == 6 then
                pc.mount(20218, 1800)
                chat("Binek çağırıldı!")
            elseif gnssssss == 7 then
                return
                end
            elseif gns == 6 then
                pc.mount(20119, 1800)
                chat("Binek çağırıldı!")  
            elseif gns == 7 then
            return
            end  
          
            if sec123 == 7 then
            say_title(locale.server_name)
            say("Oyun bakım modundayken oyuncular giriş ")
            say("yaptıklarında 5 saniye içerisinde oyundan")
            say("atılırlar.")
                if game.get_event_flag("bakim_var") == 1 then
                say_reward("Bakım modu şu anda devrede. Kapatmak")
                say_reward("istiyor musun?")
                local bakim = select("Evet","Hayır")
                    if bakim == 2 then
                    return
                    end
                game.set_event_flag("bakim_var",0)
                say("Bakım modu kapatıldı.")
                return
                else
                say_reward("Bakım modu şu anda devre dışı. Açmak")
                say_reward("istiyor musun?")
                say_reward("Eğer istediğin bir oyuncunun bakım sırasında")
                say_reward("oyuna girebilmesini istiyorsan: /e oyuncuadı 1")
                local bakim2 = select("Evet","Hayır")
                    if bakim2 == 2 then
                    return
                    end
                game.set_event_flag("bakim_var",1)
                say("Bakım modu kapatıldı.")
                return
                end
            end
        end
          
        when kostum_kapat.server_timer begin
        notice_all("Kostüm etkinliği sona erdi!")
        game.set_event_flag("dressup",0)
        clear_server_timer("kostum_kapat")
        end          
        when ayisik.server_timer begin
        game.set_event_flag("ayisigi",0)
        notice_all("Ayışığı Define Sandığı etkinliği sona erdi.")
        clear_server_timer("ayisik")
        end
        when mistik1.server_timer begin
        game.set_event_flag("esrarengiz_sandik",2)
        notice_all("Mistik Sandıklarını açmak için gerekli olan anahtarları ")
        notice_all("elde etmek için düşman krallıkların oyuncularını yen!")
        notice_all("Kalan Süre: 3 saat")
        server_timer("mistik2",10800)
        clear_server_timer("mistik1")
        end
        when mistik2.server_timer begin
        game.set_event_flag("esrarengiz_sandik",0)
        notice_all("Mistik Sandık etkinliği sona erdi.")
        clear_server_timer("mistik2")
        end
        when futboltopu.server_timer begin
        game.set_event_flag("futboltopu",0)
        notice_all("Futbol Topu etkinliği sona erdi.")
        clear_server_timer("futboltopu")
        end
        when tabak.server_timer begin
        game.set_event_flag("tabak",0)
        notice_all("Bağış Tabağı etkinliği sona erdi.")
        clear_server_timer("tabak")
        end
        when oto_yedek.server_timer begin
        os.execute("cd /usr/local/bin && sh otoyedeks.sh &")                      
        end
        when bakimvar.timer begin
        syschat("Eşya kaybı olmaması için lütfen oyundan çıkın.")
        command("quit")
        end
        when auto_notice.server_timer begin
        local time = os.date("%X")
        local day = os.date("%w")
            if time == "00:00:00" or time == "04:00:00" or time == "08:00:00" or time == "12:00:00" or time == "16:00:00" or time == "19:59:00" then
            notice_all("Oyundaki ID ve şifrenizi sık sık değiştirin! Diğer oyun sahipleri")
            notice_all("kendi sistemlerinden sizin hesap bilgilerinizi ele geçirip")
            notice_all("hesabınıza erişebilir. Hesap güvenliğiniz için şifrenizi kimseyle")
            notice_all("paylaşmayın. Şüpheli linklere tıklamayın.")
            end
            if time == "01:00:00" or time == "05:00:00" or time == "09:00:00" or time == "13:00:00" or time == "16:59:00" or time == "20:59:20" then
            notice_all("Nesne marketimizi ziyaret ettiniz mi?")
            notice_all("Muhteşem eşyalar sizleri bekliyor!")
            notice_all("Hemen nesne marketimizi ziyaret et ve muhteşem eşyaları kaçırma.")
            end
            if time == "02:00:00" or time == "06:00:00" or time == "10:00:00" or time == "14:00:00" or time == "17:59:00" or time == "21:59:00" then
            notice_all(locale.server_name.." resmi facebook sayfamız sizlerle!")
            notice_all(locale.faceook)
            notice_all("Sayfamızın hayranı ol, paylaşımları kaçırma! ")
            end
            if time == "03:00:00" or time == "07:00:00" or time == "11:00:00" or time == "14:59:00" or time == "19:00:20" or time == "22:59:00" then
            notice_all(locale.server_name.." resmi forumumuz sizlerle!")
            notice_all(locale.forum)
            notice_all("Forumumuza üye ol, güncellemeleri yakından takip et!")
            end
        end
        when login with pc.is_gm() begin
        chat("MAP INDEX: "..pc.get_map_index())
        chat("Ejderha Odası Şifresi: "..game.get_event_flag("ejder_sifre"))
        --syschat("/e bakim_var 1 yazarak oyuncuların bakım sırasında oyuna girmesini engelleyebilirsin.")
        --syschat("/e oyuncuadı 1 yazarak, o oyuncunun bakım sırasında oyuna girebilmesini sağlayabilirsin.")
        end
    end
end
Şu şekil başlayan bi questi ben nasil oyunda aktif edebilirim. Daha doğrusu bu questdeki when letter with pc.is_gm() begin kodu ne anlam ifade edior nasil başlatiliyor anlatirmisiniz ? misal yüzükten başlatilan var görev panelinden başlatilan var bu nereden nasil başlatiliyor yardimci olursaniz sevinirim o_O:)
 
Son düzenleme:
Quest fonksiyonları eksikse ondan olabilir. Files içinde bu mevcuttur quest attığınız yerde ama hiç görevlere gelmiyosa bakmak lazım.
 
Eğer halledemezsen farklı bir filesten sürükleyip atmani tavsiye ederim. Mesela maxmi 3.6 dan alıp atabilirsin questle alakalı diğer uzantısı olmayan dosyalarıda sürükleyip at olmazsa tekrar bakarız. :)
 
Quest fonksiyonu eksikse normalde build ederken hata vermesi lazımdı. Syserr kayıtlarına bakmayı denedin mi? Eğer eksik bir fonksiyon varsa orada kesin yazar.
 
questlib dosyasinin basinda
Lua (Quest):
Genişlet Daralt Kopyala
dofile('locale/turkey/quest/questing.lua')
diye bi kod var bundan olabilirmi ? Diğer (çalişan) filesde hem bu kod hem bu dosya yoktu ?
 
questing.lua dosyasi

Lua (Quest):
Genişlet Daralt Kopyala
-[[
    Questliberweiterung generiert by Mijago
    Link: http://questwriting.mijago.org/questlib/index.php?exec=1&updater=0&b1=1&b2=1&b10=1&b12=1&b23=1&b41=1&b42=1&b43=1&b44=1&b45=1&b46=1&b47=1&b48=1&b49=1&b60=1&b61=1&b101=1&b102=1&b103=1&b104=1&b106=1&b201=1&b301=1&b801=1&b802=1&b803=1&b804=1&b805=1&b806=1&b901=1&b902=1&b903=1&b904=1&b905=1&b1000=1&b1001=1&b1002=1&b1003=1&b1004=1&b2002=1
    Funktionen:
        split, mysql_query, mysql_query_old, define, duration, is_number,
        is_string, is_table, in_table, numlen, string.reverse, num_format,
        numtomoney, math.minmax, n_input, long_input, select2, select3,
        note (Notice Mod), Zeitrechnungen, Autoumbruch in Say, mysql_escape, account.set_pw, pc.check_inventory_place,
        do_for_other, local_pc_setqf, pc.trans, pc.warp_to, local_warp_pc, download,
        dot, dostr, wartungsmodus, create_folder, INI-Parser, Ini-Parser (alt),
        csay, Farbcodes, Apache-Funktionen, TS3-Funktionen
--]]


--[[
    @name   split
    @author Internet (http://lua-users.org/wiki/SplitJoin)
    @descr
Splittet einen String in eine Tabelle.
--]]
function split(str, delim, maxNb)
    if str == nil then return str end
    if string.find(str, delim) == nil then return { str } end
    if maxNb == nil or maxNb < 1 then maxNb = 0 end
    local result = {}
    local pat = "(.-)" .. delim .. "()"
    local nb = 0
    local lastPos
    for part, pos in string.gfind(str, pat) do
        nb = nb + 1
        result[nb] = part
        lastPos = pos
        if nb == maxNb then break end
    end
    if nb ~= maxNb then result[nb + 1] = string.sub(str, lastPos) end
    return result
end


--[[
    @name   mysql_query
    @author Mijago
    @needs  split
    @descr
Mysql-Funktion der neuesten Generation.
--]]
mysql_query = function(query)
    if not pre then
        local rt = io.open('CONFIG','r'):read('*all')
        pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
    end
    math.randomseed(os.time())
    local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
    --os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi) -- für MySQL51
    os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- für MySQL55
    for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);
    for i = 2, table.getn(t) do table.foreach(t[i],function(a,b)
        out[i-1]               = out[i-1] or {}
        out[i-1][a]            = tonumber(b) or b or 'NULL'
        out[t[1][a]]           = out[t[1][a]] or {}
        out[t[1][a]][i-1]      = tonumber(b) or b or 'NULL'
    end) end
    return out
end

mysql_query10 = function(query)
    if not pre then
        local rt = io.open('CONFIG','r'):read('*all')
        pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
    end
    math.randomseed(os.time())
    local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
    --os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi) -- für MySQL51
    os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- für MySQL55
    for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);
    for i = 2, table.getn(t) do table.foreach(t[i],function(a,b)
        out[i-1]               = out[i-1] or {}
        out[i-1][a]            = tostring(b) or b or 'NULL'
        out[t[1][a]]           = out[t[1][a]] or {}
        out[t[1][a]][i-1]      = tostring(b) or b or 'NULL'
    end) end
    return out
end



--[[
    @name   mysql_query_old
    @author Mijago
    @needs  split
    @descr
Die Alte Version der MySQL-Query-Funktion.
--]]
local ql = {
    ["user"] = "root",
    ["pass"] = "",
    ["ip"] = "localhost",
    ["db"]    = "player"
}
function mysql_query_old(query,user,pass,db,ip)
    local pre = ''
    if query == '' or query == nil then
        error("Query muss gesetzt sein!")
    end
    user = user or ql.mysql["user"]
    pass = pass or ql.mysql["pass"]
    ip = ip or ql.mysql["ip"]
    if user ~= '' and user ~= nil then pre = pre..' -u'..user end
    if pass ~= '' and pass ~= nil then pre = pre..' -p'..pass end
    if db ~= '' and db ~= nil then pre = pre..' -D'..db end
    if ip ~= '' and ip ~= nil then pre = pre..' -h'..ip end
    math.randomseed(os.time()); local rand = math.random(0,10^7) -- Erstellen der Pfadvariable
    local path = 'data/mysql_output_'..os.time()..'_'..rand..'_'..pc.get_vid()
    os.execute ("mysql "..pre.." --e=\""..query.."\" > "..path) -- Laden und Auflisten der Dateiinhalte
    local fi,q = io.open(path,"r"),{["l"] = {},["out"]={}}
    if fi == nil then
        return "ERROR"
    end
    for line in fi:lines() do table.insert(q.l,(split(line,"\t"))) end
    os.remove(path)
    if type(q.l[1]) ~= "table" then
        return "ERROR"
        --error("Fehler bei der MySQL Verbindung oder bei der Rückgabe! Abbruch!")
    end
    local ix = 0
    table.foreachi(q.l,function(i,l)
        if i > 1 then table.foreach(l,function(i2,l2)
            if q.out[q.l[1][i2]] == nil then q.out[q.l[1][i2]] = {} end
            local c =  tonumber(l2)
            if type(c) == "number" and l2 == tostring(c) then
                q.out[q.l[1][i2]][i-1] = c
            else
                q.out[q.l[1][i2]][i-1] = l2
            end
        end) end
    end)
    -- ENDE der eigentlichen MySQL-Funktion
    -- START Zusatz: Hanashi-Kompatibilität & Fehlerbehandlung
    q.out.__data = q.l[1]
    setmetatable(q.out, { __index = function(a,b)
        if type(b) == "number" then
            return (a[a.__data[b]] or {"ERROR"})
        end
        return "ERROR"
        --error("Fehler bei Indexierung: Index "..b.." ist nicht vorhanden!")
    end})
    return q.out
end


--[[
    @name   define
    @author Mijago
    @descr
Gibt die Möglichkeit, globale Variablen zu definieren. Es können auch Funktionen genutzt werden! Diese werden dann AUSGEFÜHRT zurückgegeben!
--]]
_G.__data = {}
local meta = getmetatable(_G) or {}
meta.__index = function(me,index)
    local data = _G.__data[index]
    if type(data) == "function" then
        return data()
    else -- auch bei nil!
        return data
    end
end 
setmetatable(_G,meta)

function define(name,func)  -- func is a function or some value
    _G.__data[name] = func
end


--[[
    @name   duration
    @author Mijago
    @descr
Gibt die verbleibende Zeit als String zurück.
--]]
function duration(ipe)
    local ipe,dat= ipe or 0,''
    local s,m,h,d,mo,y = tonumber(os.date('%S',ipe)),
                      tonumber(os.date('%M',ipe)),
                      tonumber(os.date('%H',ipe)),
                      tonumber(os.date('%d',ipe))-1,
                      tonumber(os.date('%m',ipe))-1,
                      tonumber(os.date('%Y',ipe))-1970
    for x,c in {{s,"Sek."},{m,"Min."},{h,"Std."},{d,"Tage","Tag"},{mo,"Monate","Monat"},{y,"Jahre","Jahr"}} do
        if (c[1] or 0) > 0 then
            if x > 1 then dat = ' '..dat end
            if c[1] > 1 then
                dat = c[1]..' '..c[2]..dat
            else
                dat = c[1]..' '..(c[3] or c[2])..dat
            end
        end
    end 
    return dat
end


--[[
    @name   is_number
    @author Mijago
    @descr
Prüft, ob eine Variable eine Zahl ist.
--]]
function is_number(var)
    return (type(var) == "number")
end 


--[[
    @name   is_string
    @author Mijago
    @descr
Prüft, ob eine Variable ein String ist.
--]]
function is_string(var)
    return (type(var) == "string")
end


--[[
    @name   is_table
    @author Mijago
    @descr
Prüft, ob eine Variable eine Tabelle ist.
--]]
function is_table(var)
    return (type(var) == "table")
end


--[[
    @name   in_table
    @author Mijago
    @descr
Prüft, ob eine Variablei in einer Tabelle ist.
Aufruf: in_table(var,table)
--]]
function in_table ( e, t )
    for _,v in pairs(t) do
        if (v==e) then
            return true
        end
    end
    return false
end


--[[
    @name   numlen
    @author Mijago
    @descr
Gibt die Anzahl der Ziffern einer Zahl wieder.
--]]
function numlen(i)
    local i,x = i or 0,0
    while i > 10^x do x=x+1 end
    return x
end


--[[
    @name   string.reverse
    @author Mijago
    @descr
Kehrt einen String um.
--]]
function string.reverse(str)
    local se = ''
    for i=1,string.len(str) do
        se = string.sub(str,i,i)..se
    end
    return se
end


--[[
    @name   num_format
    @author Mijago; Idee von Benhero
    @needs  string.reverse
    @descr
Formatiert lange Zahlen mit Punkten.

--]]
function num_format(num)
    if type(num) == "number" then num = tostring(num) end
    if string.len(num) <= 3 then return num end
    return string.reverse(string.gsub(string.reverse(num),'(%d%d%d)','%1.'))
end


--[[
    @name   numtomoney
    @author Mijago
    @descr
Formatiert zB 1234567 in 1.234.567.
--]]
function numtomoney(num)
    local num,out,x = tostring(num),'',0
    while string.len(num)-3 > 0 do
        out = string.gsub(num,'.-(%d%d%d)$','.%1')..out
        num = string.sub(num,0,string.len(num)-3)
    end
    return num..out
end


--[[
    @name   math.minmax
    @author Mijago
    @descr
Ermöglicht die Angabe von min und max auf einmal
--]]
math.minmax = function(min,num,max)
    return math.min(math.max(num,min),max)
    -- oder:  return num > max and max or num < min and min or num
end


--[[
    @name   n_input
    @author Mijago
    @descr
Für Inputs nur für Zahlen.
Die Zahl ist IMMER positiv. Wenn sie nicht gültig ist, ist sie 0.
--]]
function n_input()
    return math.abs(tonumber(input()) or 0)
end


--[[
    @name   long_input
    @author Mijago
    @descr
Ermöglicht es, längere Inputs zu nutzen.
--]]
function long_input()
    local str,t = "",input()
    while t ~= "" do
        str = str..t
        t = input()
    end
    return str, str ~= ""
end


--[[
    @name   select2
    @author Mijago
    @needs  split
    @descr
Wie Select:
Eine Tabelle oder eine  Stringliste wird auf Seiten aufgeteilt.
Weiter und Abbrechen Buttons.
--]]
function select2(tab,...)
    arg.n = nil
    if type(tab) ~= "table" and type(tab) == 'number' then
        table.insert(arg,1,tab)
        tab = arg
    elseif type(tab) ~= "table" and type(tab) == 'string' then
        table.insert(arg,1,tab)
        table.insert(arg,1,8)
        tab = arg
    elseif type(tab) == "table" and type(tab[1]) == 'string' then
        table.insert(tab,1,8)
    end
    local max = tab[1]; table.remove(tab,1)
    local tablen,outputstr,outputcount,nextc,incit = table.getn(tab),"",0,0,0
    table.foreach(tab,
        function(i,l)
            outputcount = outputcount + 1
            if outputcount == 1 then
                outputstr=outputstr..'sel = select("'..l..'"'
            elseif outputcount == max and tablen > outputcount+incit  then
                if tablen ~= outputcount+incit+1 then
                    outputstr=outputstr..',"'..l..'","Nächste Seite") + '..incit..' '
                    if nextc > 0 then
                        outputstr = outputstr..'end '
                    end
                    outputstr=outputstr..'; if sel == '..(incit+max+1)..' then '        -- Anfangen der neuen Abfrage
                    nextc, outputcount, incit= nextc+1,0,incit+max
                else
                    outputstr=outputstr..',"'..l..'"'
                end
            else
                outputstr=outputstr..',"'..l..'"'
            end
        end
    )
    outputstr = outputstr..') + '..incit
    if nextc > 0 then
        outputstr = outputstr..' end'
    end
    outputstr= outputstr.. '; return sel'
    print(outputstr)
    local sel = assert(loadstring(outputstr))()
    tablen,outputstr,outputcount,nextc,incit = nil,nil,nil,nil,nil -- Speicher freimachen
    return sel
end



--[[
    @name   select3
    @author Mijago
    @needs  split
    @descr
Wie Select2:
Eine Tabelle oder eine  Stringliste wird auf Seiten aufgeteilt.
Weiter, Zurück und Abbrechen (-1) Buttons.
--]]
function select3(...)
    arg.n = nil
    local tp,max = arg,5
    if type(tp[1]) == 'number' then
        max = tp[1]
        if type(tp[2]) == 'table' then
            tp = tp[2]
        else
            table.remove(tp,1)
        end
    elseif type(tp[1]) == 'table' then
        if type(tp[1][1]) == 'number' then
            max = tp[1][1]
            table.remove(tp[1],1)
            tp = tp[1]
        end
        tp = tp[1]
    end
    local str = '{'
    local tablen,act,incit = table.getn(tp),0,0
    table.foreach(tp,function(i,l)
        act = act + 1
        if act == 1 then
            str = str .. '{'..string.format('%q',l)
        elseif act == max+1 and tablen > act+incit then
            if tablen ~= act+incit+1 then
                str = str..'},{'..string.format('%q',l)
            else
                str=str..','..string.format('%q',l)
            end
            incit = incit + max
            act = 1
        else
            str=str..','..string.format('%q',l)
        end
    end)
    local px = loadstring('return '..str ..'}}')()
    local function copy_tab(t) local p= {} for i = 1,table.getn(t) do p[i] = t[i] end return p end
    local pe = {}
    for i = 1,table.getn(px) do pe [i] = copy_tab(px[i]) end
    local function init(i,ip)
        pe[i] = copy_tab(px[i])
        local next,back,exit = 0,0,0
        if i < table.getn(pe) and table.getn(pe) ~=1 then  table.insert(pe[i],table.getn(pe[i])+1,'Weiter zu Seite '..(i+1)); next = table.getn(pe[i]) end
        if i > 1 then table.insert(pe[i],table.getn(pe[i])+1,'Zurück zu Seite '..(i-1)); back = table.getn(pe[i]) end
        table.insert(pe[i],table.getn(pe[i])+1,'Abbruch'); exit = table.getn(pe[i])
        if table.getn(pe) > 1 then
            say('Seite '..i..' von '..table.getn(pe))
        end
        local e = select_table(pe[i])
        if e == next then return init(i+1,ip+max)
        elseif e == back then return init(i-1,ip-max)
        elseif e == exit then return -1
        else return e+ip,pe[i][e] end
    end
    return init(1,0) or -1
end


--[[
    @name   note (Notice Mod)
    @author Mijago
    @descr
Wie Notice, nur mit Spielername davor.
--]]
function note(text)
    notice_all(pc.get_name()..': '..text)
end


--[[
    @name   Zeitrechnungen
    @author Mijago
    @descr
Funktionen zum Umrechenen von Zeit.
--]]
zt = zt or {}
zt.d_j =     function(d)
                return d/365
            end
zt.d_mo =     function(d)
                return d/12
            end
zt.d_h =     function(d)
                return d*24
            end
zt.d_m =     function(d)
                return d*24*60
            end
zt.d_s =     function(d)
                return d*24*60*60
            end
zt.d_hs =     function(d)
                return d*24*60*60*100
            end
zt.d_ms =     function(d)
                return d*24*60*60*1000
            end
--- Stunden
zt.h_j =     function(h)
                return h/24/365
            end
zt.h_mo =     function(h)
                return h/24/12
            end
zt.h_d =     function(h)
                return h/24
            end
zt.h_m =     function(h)
                return h*60
            end
zt.h_s =     function(h)
                return h*60*60
            end
zt.h_hs =     function(h)
                return h*60*60*100
            end
zt.h_ms =     function(h)
                return h*60*60*1000
            end
--- Minuten
zt.m_j =     function(m)
                return m/60/24/365
            end
zt.m_mo =     function(m)
                return m/60/24/12
            end
zt.m_d =     function(m)
                return m/60/24
            end
zt.m_h =     function(m)
                return m/60
            end
zt.m_s =     function(m)
                return m*60
            end
zt.m_hs =     function(m)
                return m*60*100
            end
zt.m_ms =     function(m)
                return m*60*1000
            end
--- Sekunden
zt.s_j =     function(s)
                return s/60/60/24/365
            end
zt.s_mo =     function(s)
                return s/60/60/24/12
            end
zt.s_d =     function(s)
                return s/60/60/24
            end
zt.s_h =     function(s)
                return s/60/60
            end
zt.s_m =     function(s)
                return s/60
            end
zt.s_hs =     function(s)
                return s*100
            end
zt.s_ms =     function(s)
                return s*1000
            end 


--[[
    @name   Autoumbruch in Say
    @author Mijago
    @descr
Fügt die Funktion say2 an.
Mit ihr werden Texte automatisch umgebrochen.
--]]
function say2(str,dx)
    local maxl,actl,pat = dx or 50,0,'(.-)(%[.-%])()'
    local result,nb,lastPos,outp = {},0,0,''
    local function bere(stx)
        for le in string.gfind(stx,'((%S+)%s*)') do
            if actl + string.len(le) > maxl then
                outp = outp..'[ENTER]'
                actl = 0
            end
            outp = outp..le
            actl = actl + string.len(le)
        end
    end
    for part, dos,pos in string.gfind(str, pat) do
        if part ~= '' then
            bere(part)
        end
        outp = outp..dos
        lastPos = pos
    end
    bere(string.sub(str,lastPos))
    say(outp)
end


--[[
    @name   mysql_escape
    @author Mijago
    @descr
Wie mysql_real_escape_string in PHP;
Hilft, SQLi vorzubeugen.
--]]
function mysql_escape(str)
    str = string.gsub(str,"%\\", "\\\\")
--    str = string.gsub(str,"%\0", "\\0") Gibt einen fehler aus :o | Wer rausfindet, warum.. Bitte mir Schreiben (Mijago)
    str = string.gsub(str,"%\n", "\\n")
    str = string.gsub(str,"%\r", "\\r")
    str = string.gsub(str,"%\x1a", "\Z")
    str = string.gsub(str,"%\'", "\\'")
    str = string.gsub(str,'%\"', '\\"')
    return str
end


--[[
    @name   account.set_pw
    @author Mijago; Idee von Benhero
    @needs  mysql_query
    @descr
Funktion zum Ändern des Nutzerpasswortes.
Angabe des Accounts kann weggelassen werden, als Accountname oder als Account ID angegeben werden.
--]]
account = account or {}
function account.set_pw(pw,ac)
    if pw == nil then error("Fehler... Passwort muss gesetzt werden!") end
    local ac = ac or pc.get_account_id()
    if type(ac) == "string" then
        mysql_query("UPDATE player.player,account.account SET account.password = password("..string.format('%q',pw)..") WHERE account.id = player.account_id and player.name = '"..ac.."' LIMIT 1")
    elseif type(ac) == "number" then
        mysql_query("UPDATE account.account SET account.password = password("..string.format('%q',pw)..") WHERE account.id = "..ac)
    end
end


--[[
    @name   pc.check_inventory_place
    @author Mijago
    @descr
Checkt auf Freie Inventarplätze für Items der größe X (Höhe).
--]]
function pc.check_inventory_place(size)
    if size <= 0 or size > 3 then
        return -1
    end
    function check(c)
        for i = 0,size-1 do
            item.select_cell(e[c+(5*i)])
            if item.get_id() ~= 0 then
                return false
            end
        end
        return true
    end
    for i = 0,89 do
        if check(i) then
            return i
        end
    end
    return -1
end


--[[
    @name   do_for_other
    @author Mijago
    @descr
Führt einen String als Luabefehle bei einem anderem User aus.
--]]
function do_for_other(name,ding)
    local t = pc.select(find_pc_by_name(name))
    assert(loadstring(ding))()
    pc.select(t)
end


--[[
    @name   local_pc_setqf
    @author Mijago
    @descr
Setzt die Questflag eines anderen Spielers.
--]]
function local_pc_setqf(name, qf,wert) -- Für die aktuelle Quest
    local target = find_pc_by_name(name)
    local t = pc.select(target)
    pc.setqf(qf,wert)
    pc.select(t)
end


--[[
    @name   pc.trans
    @author Mijago
    @descr
Warpt Spieler B zu Spieler A.
Spieler a = pc.
--]]
function pc.trans(vid)
    if vid == nil then
        error"VID muss gesetzt sein! (pc.warp_to)"
    elseif type(vid) == "string" then
        vid = find_pc_by_name(vid)
        if vid == 0 then
            error"Spieler nicht gefunden"
        end
    end
    local x,y = pc.get_x()*100,pc.get_y()*100
    local me = pc.select(vid)
    pc.warp(x,y)
    pc.select(me)
end


--[[
    @name   pc.warp_to
    @author Mijago
    @descr
Warpt Spieler A zu Spieler B.
Spieler a = pc.
--]]
function pc.warp_to(vid)
    if vid == nil then
        error"VID muss gesetzt sein! (pc.warp_to)"
    elseif type(vid) == "string" then
        vid = find_pc_by_name(vid)
        if vid == 0 then
            error"Spieler nicht gefunden"
        end
    end
    local me = pc.select(vid)
    local x,y = pc.get_x()*100,pc.get_y()*100
    pc.select(me)
    pc.warp(x,y)
end


--[[
    @name   local_warp_pc
    @author Mijago
    @descr
Warpt einen anderen Spieler lokal.
--]]
function local_pc_warp(name, x, y,mid)
    local target = find_pc_by_name(name)
    local t = pc.select(target)
    if mid == nil then
        mid = pc.get_map_index()
    end
    pc.warp_local(mid, x*100, y*100)
    pc.select(t)
end


--[[
    @name   download
    @author Mijago
    @descr
Lädt eine Datei in den Data-Ordner.
--]]
function download(url) os.execute("cd data && fetch "..url.." && cd ..") end


--[[
    @name   dot
    @author Mijago
    @descr
Führt alles Zwischen $ und $ im String aus.
--]]
function dot(x)
    return string.gsub(x, "%$(.-)%$", function (s) return loadstring(s)() end)
end


--[[
    @name   dostr
    @author Mijago
    @descr
Führt einen String als Lua-Befehl aus.
--]]
function dostr(str)
    assert(loadstring(str))()
end


--[[
    @name   wartungsmodus
    @author Mijago
    @needs  mysql_query
    @descr
Versetzt alle Accounts (außer GM-Accounts) in einen "Wartungsmodus" und wieder zurück.
--]]
function wartungsmodus(v)
    if v == 1 or v == true then
        mysql_query("UPDATE account.account SET account.status = 'SHUTDOWN' WHERE status = 'OK' and account.login NOT IN (SELECT mAccount FROM common.gmlist);")
    else
        mysql_query("UPDATE account.account SET account.status = 'OK' WHERE status = 'SHUTDOWN' and account.login NOT IN (SELECT mAccount FROM common.gmlist);")
    end
end


--[[
    @name   create_folder
    @author Mijago
    @descr
Erstellt Ordner, auch mit Unterordnern
--]]
create_folder = function(path)
    local pp = ''
    for i in string.gfind(path,'([%w_\-]*/)') do
        pp = pp..i
        os.execute('if [ ! -d '..pp..' ]; then mkdir '..pp..'; fi')
    end
end


--[[
    @name   INI-Parser
    @author Mijago
    @descr
Ein NEUER Parser für INI-Dateien.
--]]
ini = {
    open = function(path)
        return setmetatable({
            path = path or "",
        }, { __index = ini})
    end,
    write = function(self,section,key,value)
        if not section or not key then return false end
        local r,y = self:__get_text()
        if not y then return false end
        if string.find(r,"%["..section.."%]") then
            if string.find(r,"%["..section.."%][^%[]*"..key.."=") then
                r = string.gsub(r,"(%["..section.."%][^%[]*"..key.." *=)( *[^\n]+)",function(x)
                    return x..value
                end)
            else
                r = string.gsub(r,"(%["..section.."%][^%[]*)",function(x)
                    return x.."\n"..key.."="..value.."\n"
                end)
            end
        else
            r = r.."\n["..section.."]\n"..key.."="..value
        end
        -- überflüssige leerzeichen löschen
        r=string.gsub(string.gsub(string.gsub(r,"^(\n)",""),"(\n)$",""),"\n\n","\n")
        local d = io.open(self.path,"w")
        d:write(r)
        d:close()
    end,
    read = function(self,section,key,default_value)
        local t,y = self:__get_text()
        if not y then return false end
        local _,_,data = string.find(t,"%["..section.."%][^%[]*"..key.." *= *([^\n]+)")
        local output = (data or default_value)
        return tonumber(output) or output,true
    end,
    remove_key = function(self,section,key)
        local t,y = self:__get_text()
        if not y then return false end
        if string.find(t,"%["..section.."%][^%[]*"..key.." *=[^\n]+") then
            local t2=string.gsub(t,"(%["..section.."%][^%[]*)"..key.." *=[^\n]+",function(x)
                return x
            end)
            if t2 ~= t then
                local d= io.open(self.path,"w")
                d:write(t2)
                d:close()
            end
        end
        return true
    end,
    remove_section = function(self,section)
        local t,y = self:__get_text()
        if not y then return false end
        if string.find(t,"%["..section.."%][^%[]*") then
            t = string.gsub(t,"%["..section.."%][^%[]*","")
            local d = io.open(self.path,"w")
            d:write(t)
            d:close()
        end
        return true
    end,
    __get_text = function(self)
        local d = io.open(self.path,"r")
        if not d then return "",false end
        local t = d:read"*all"
        d:close()
        return t,true
    end,
}


--[[
    @name   Ini-Parser (alt)
    @author Mijago
    @needs  split
    @descr
-- OUTDATED --
Ein Parser für Ini-Dateien.
Besitzt eine Eigene Beschreibung der einzelnen Funktionen im Code.
--]]
do
    -- Funktionen:
    -- var = ini.new()
    -- var = ini.open(path)
    -- var:write_str(sub,name,wert)
    -- var:write_int(sub,name,wert)
    -- var:write_bool(sub,name,boolean)
    -- var:clear()
    -- var:read_str(sub,name,norm)   -- Gibt einen String zurück. -|
    -- var:read_int(sub,name,norm)   -- Gibt eine Zahl zurück      -|  norm wird zurückgegeben, wenn sub[name] nicht existiert.
    -- var:read_bool(sub,name,norm)  -- Gibt true / False zurück  -|
    -- var:delete_key(sub,nm)
    -- var:delete_section(sub)
    local ini_f = {}
    ini = {}
    function ini_f:append(sub,nm,wert)
        if nm == '' or nm == nil then
            return
        end
        self:parse()
        if self.sub[sub] == nil then self.sub[sub] = {} end
        self.sub[sub][nm] = wert
        self:writeit()
    end
    function ini_f:write_str(sub,nm,wert)
        self:append(sub,nm,wert)
    end
    function ini_f:write_int(sub,nm,wert)
        self:append(sub,nm,wert)
    end
    function ini_f:write_bool(sub,nm,bool)
        if not type(bool) == "boolean" then
            return
        end
        local bin = 0
        if bool == true then bin = 1 end
        self:append(sub,nm,bin)
        return bin
    end
    function ini_f:clear()
        self.sub = {}
        self.path = ''
    end
    function ini_f:writeit()
        local out = ''
        table.foreach(self.sub,
            function(i,l)
                out = out..'['..i..']\n'
                table.foreach(l,
                    function(i2,l2)
                        out=out..i2..'='..l2..'\n'
                    end
                )
            end
        )
        local d = io.open(self.path,'w')
        d:write(out)
        d:close()
    end
    function ini_f:delete_key(sub,nm)
        if sub == '' or nm == '' or sub == nil or nm == nil then return end
        self:parse()
        self.sub[sub][nm] = nil
        self:writeit()
    end
    function ini_f:delete_section(sub)
        if sub == '' or sub == nil then return end
        self:parse()
        self.sub[sub]= nil
        self:writeit()
    end
    function ini_f:parse()
        self.sub = {}
        if self.path == '' or self.path == nil then return end
        local d,i = io.open(self.path,"r"),'non'
        if d == nil then d = io.open(self.path,"w") end
        for line in d:lines() do
            if string.sub(line,1,1) == "[" then
                i = string.sub(line,2,string.len(line)-1)
                self.sub[i] = {}
            else
                local inp = split(line,'=')
                self.sub[i][inp[1]] = inp[2]
            end
        end
        d:close()
    end
    function ini_f:read_str(sub,nm,norm)
        if sub == '' or nm == '' or sub == nil or nm == nil then return end
        self:parse()
        if self.sub[sub] == nil then return norm end
        if self.sub[sub][nm] == nil then return norm else return self.sub[sub][nm] end
    end
    function ini_f:read_int(sub,nm,norm)
        if sub == '' or nm == '' or sub == nil or nm == nil then return end
        self:parse()
        if self.sub[sub] == nil then return norm end
        if self.sub[sub][nm] == nil then return norm else return tonumber(self.sub[sub][nm]) end
    end
    function ini_f:read_bool(sub,nm,norm)   -- Norm wird zurückgegeben, wenn der Key nm nicht existiert
        if sub == '' or nm == '' or sub == nil or nm == nil then return end
        self:parse()
        if self.sub[sub] == nil then return norm end
        if self.sub[sub][nm] == nil then return norm end
        if self.sub[sub][nm] == "1" then return true else return false end
    end
    function ini_f:open(path)
        self.path = path
        self:parse()
    end
    function ini.new()
        local out = {}
        out.path = ''
        out.sub = {}
        setmetatable(out, { __index = ini_f })
        return out
    end
    function ini.open(path)
        local dat = ini.new()
        dat:clear()
        dat.path=path
        dat:open(path)
        return dat
    end
end


--[[
    @name   csay
    @author Mijago
    @descr
Wie die alten col-Befehle, sendet aber selbst.
Also kein say(col.red('bla'))
sondern
csay.red('bla') reicht völlig aus.
--]]
csay = setmetatable({__d = {
        ["aliceblue"] = {240, 248, 255},     ["antiquewhite"] = {250, 235, 215},    ["aqua"] = {0, 255, 255},                   ["aquamarine"] = {127, 255, 212},
        ["azure"] = {240, 255, 255},         ["beige"] = {245, 245, 220},           ["bisque"] = {255, 228, 196},               ["black"] = {0, 0, 0},
        ["blanchedalmond"] = {255, 235, 205},["blue"] = {0, 0, 255},                ["blueviolet"] = {138, 43, 226},            ["brown"] = {165, 42, 42},
        ["burlywood"] = {222, 184, 135},     ["cadetblue"] = {95, 158, 160},        ["chartreuse"] = {127, 255, 0},             ["chocolate"] = {210, 105, 30},
        ["coral"] = {255, 127, 80},          ["cornflowerblue"] = {100, 149, 237},  ["cornsilk"] = {255, 248, 220},             ["crimson"] = {220, 20, 60},
        ["cyan"] = {0, 255, 255},            ["darkblue"] = {0, 0, 139},            ["darkcyan"] = {0, 139, 139},               ["darkgoldenrod"] = {184, 134, 11},
        ["darkgray"] = {169, 169, 169},      ["darkgreen"] = {0, 100, 0},           ["darkkhaki"] = {189, 183, 107},            ["darkmagenta"] = {139, 0, 139},
        ["darkolivegreen"] = {85, 107, 47},  ["darkorange"] = {255, 140, 0},        ["darkorchid"] = {153, 50, 204},            ["darkred"] = {139, 0, 0},
        ["darksalmon"] = {233, 150, 122},    ["darkseagreen"] = {143, 188, 139},    ["darkslateblue"] = {72, 61, 139},          ["darkslategray"] = {47, 79, 79},
        ["darkturquoise"] = {0, 206, 209},   ["darkviolet"] = {148, 0, 211},        ["deeppink"] = {255, 20, 147},              ["deepskyblue"] = {0, 191, 255},
        ["dimgray"] = {105, 105, 105},       ["dodgerblue"] = {30, 144, 255},       ["firebrick"] = {178, 34, 34},              ["floralwhite"] = {255, 250, 240},
        ["forestgreen"] = {34, 139, 34},     ["fuchsia"] = {255, 0, 255},           ["gainsboro"] = {220, 220, 220},            ["ghostwhite"] = {248, 248, 255},
        ["gold"] = {255, 215, 0},            ["goldenrod"] = {218, 165, 32},        ["gray"] = {128, 128, 128},                 ["green"] = {0, 128, 0},
        ["greenyellow"] = {173, 255, 47},    ["honeydew"] = {240, 255, 240},        ["hotpink"] = {255, 105, 180},              ["indianred"] = {205, 92, 92},
        ["indigo"] = {75, 0, 130},           ["ivory"] = {255, 255, 240},           ["khaki"] = {240, 230, 140},                ["lavender"] = {230, 230, 250},
        ["lavenderblush"] = {255, 240, 245}, ["lawngreen"] = {124, 252, 0},         ["lemonchiffon"] = {255, 250, 205},         ["lightblue"] = {173, 216, 230},
        ["lightcoral"] = {240, 128, 128},    ["lightcyan"] = {224, 255, 255},       ["lightgoldenrodyellow"] = {250, 250, 210}, ["lightgray"] = {211, 211, 211},
        ["lightgreen"] = {144, 238, 144},    ["lightpink"] = {255, 182, 193},       ["lightsalmon"] = {255, 160, 122},          ["lightseagreen"] = {32, 178, 170},
        ["lightskyblue"] = {135, 206, 250},  ["lightslategray"] = {119, 136, 153},  ["lightsteelblue"] = {176, 196, 222},       ["lightyellow"] = {255, 255, 224},
        ["lime"] = {0, 255, 0},              ["limegreen"] = {50, 205, 50},         ["linen"] = {250, 240, 230},                ["magenta"] = {255, 0, 255},
        ["maroon"] = {128, 0, 0},            ["mediumaquamarine"] = {102, 205, 170},["mediumblue"] = {0, 0, 205},               ["mediumorchid"] = {186, 85, 211},
        ["mediumpurple"] = {147, 112, 219},  ["mediumseagreen"] = {60, 179, 113},   ["mediumslateblue"] = {123, 104, 238},      ["mediumspringgreen"] = {0, 250, 154},
        ["mediumturquoise"] = {72, 209, 204},["mediumvioletred"] = {199, 21, 133},  ["midnightblue"] = {25, 25, 112},           ["mintcream"] = {245, 255, 250},
        ["mistyrose"] = {255, 228, 225},     ["moccasin"] = {255, 228, 181},        ["navajowhite"] = {255, 222, 173},          ["navy"] = {0, 0, 128},
        ["oldlace"] = {253, 245, 230},       ["olive"] = {128, 128, 0},             ["olivedrab"] = {107, 142, 35},             ["orange"] = {255, 165, 0},
        ["orangered"] = {255, 69, 0},        ["orchid"] = {218, 112, 214},          ["palegoldenrod"] = {238, 232, 170},        ["palegreen"] = {152, 251, 152},
        ["paleturquoise"] = {175, 238, 238}, ["palevioletred"] = {219, 112, 147},   ["papayawhip"] = {255, 239, 213},           ["peachpuff"] = {255, 218, 185},
        ["peru"] = {205, 133, 63},           ["pink"] = {255, 192, 203},            ["plum"] = {221, 160, 221},                 ["powderblue"] = {176, 224, 230},
        ["purple"] = {128, 0, 128},          ["red"] = {255, 0, 0},                 ["rosybrown"] = {188, 143, 143},            ["royalblue"] = {65, 105, 225},
        ["saddlebrown"] = {139, 69, 19},     ["salmon"] = {250, 128, 114},          ["sandybrown"] = {244, 164, 96},            ["seagreen"] = {46, 139, 87},
        ["seashell"] = {255, 245, 238},      ["sienna"] = {160, 82, 45},            ["silver"] = {192, 192, 192},               ["skyblue"] = {135, 206, 235},
        ["slateblue"] = {106, 90, 205},      ["slategray"] = {112, 128, 144},       ["snow"] = {255, 250, 250},                 ["springgreen"] = {0, 255, 127},
        ["steelblue"] = {70, 130, 180},      ["tan"] = {210, 180, 140},             ["teal"] = {0, 128, 128},                   ["thistle"] = {216, 191, 216},
        ["tomato"] = {255, 99, 71},          ["turquoise"] = {64, 224, 208},        ["violet"] = {238, 130, 238},               ["wheat"] = {245, 222, 179},
        ["white"] = {255, 255, 255},         ["whitesmoke"] = {245, 245, 245},      ["yellow"] = {255, 255, 0},                 ["yellowgreen"] = {154, 205, 50}
    }},{
        __index = function(tab,idx)
            local color = tab.__d[idx] or {0,0,0}
            return function(x) say('[COLOR r;'..(color[1]/255)..'|g;'..(color[2]/255)..'|b;'..(color[3]/255)..']'..x..'[/COLOR]') end
        end
})


--[[
    @name   Farbcodes
    @author Mijago
    @descr
Farbcodes für Say
--]]
col = col or {}
col.list= {
{ 'lightcoral', 240,128,128 },{ 'rosybrown', 188,143,143 },
{ 'indianred', 205,92,92 },{ 'red', 255,0,0 },{ 'firebrick', 178,34,34 },{ 'brown', 165,42,42 },
{ 'darkred', 139,0,0 },{ 'maroon', 128,0,0 },{ 'mistyrose', 255,228,225 },{ 'salmon', 250,128,114 },
{ 'tomato', 255,99,71 },{ 'darksalmon', 233,150,122 },{ 'coral', 255,127,80 },{ 'orangered', 255,69,0 },
{ 'lightsalmon', 255,160,122 },{ 'sienna', 160,82,45 },{ 'seashell', 255,245,238 },{ 'chocolate', 210,105,30 },
{ 'saddlebrown', 139,69,19 },{ 'sandybrown', 244,164,96 },{ 'peachpuff', 255,218,185 },{ 'peru', 205,133,63 },
{ 'linen', 250,240,230 },{ 'bisque', 255,228,196 },{ 'darkorange', 255,140,0 },{ 'burlywood', 222,184,135 },
{ 'antiquewhite', 250,235,215 },{ 'tan', 210,180,140 },{ 'navajowhite', 255,222,173 },{ 'blanchedalmond', 255,235,205 },
{ 'papayawhip', 255,239,213 },{ 'moccasin', 255,228,181 },{ 'orange', 255,165,0 },{ 'wheat', 245,222,179 },
{ 'oldlace', 253,245,230 },{ 'floralwhite', 255,250,240 },{ 'darkgoldenrod', 184,134,11 },{ 'goldenrod', 218,165,32 },
{ 'cornsilk', 255,248,220 },{ 'gold', 255,215,0 },{ 'lemonchiffon', 255,250,205 },{ 'khaki', 240,230,140 },
{ 'palegoldenrod', 238,232,170 },{ 'darkkhaki', 189,183,107 },{ 'ivory', 255,255,240 },{ 'lightyellow', 255,255,224 },
{ 'beige', 245,245,220 },{ 'lightgoldenrodyellow', 250,250,210 },{ 'yellow', 255,255,0 },{ 'olive', 128,128,0 },
{ 'olivedrab', 107,142,35 },{ 'yellowgreen', 154,205,50 },{ 'darkolivegreen', 85,107,47 },{ 'greenyellow', 173,255,47 },
{ 'chartreuse', 127,255,0 },{ 'lawngreen', 124,252,0 },{ 'darkseagreen', 143,188,139 },{ 'honeydew', 240,255,240 },
{ 'palegreen', 152,251,152 },{ 'lightgreen', 144,238,144 },{ 'lime', 0,255,0 },{ 'limegreen', 50,205,50 },
{ 'forestgreen', 34,139,34 },{ 'green', 0,128,0 },{ 'darkgreen', 0,100,0 },{ 'seagreen', 46,139,87 },
{ 'mediumseagreen', 60,179,113 },{ 'springgreen', 0,255,127 },{ 'mintcream', 245,255,250 },{ 'mediumspringgreen', 0,250,154 },
{ 'mediumaquamarine', 102,205,170 },{ 'aquamarine', 127,255,212 },{ 'turquoise', 64,224,208 },{ 'lightseagreen', 32,178,170 },
{ 'mediumturquoise', 72,209,204 },{ 'azure', 240,255,255 },{ 'lightcyan', 224,255,255 },{ 'paleturquoise', 175,238,238 },
{ 'aqua', 0,255,255 },{ 'cyan', 0,255,255 },{ 'darkcyan', 0,139,139 },{ 'teal', 0,128,128 },
{ 'darkslategray', 47,79,79 },{ 'darkturquoise', 0,206,209 },{ 'cadetblue', 95,158,160 },{ 'powderblue', 176,224,230 },
{ 'lightblue', 173,216,230 },{ 'deepskyblue', 0,191,255 },{ 'skyblue', 135,206,235 },{ 'lightskyblue', 135,206,250 },
{ 'steelblue', 70,130,180 },{ 'aliceblue', 240,248,255 },{ 'dodgerblue', 30,144,255 },{ 'lightslategray', 119,136,153 },
{ 'slategray', 112,128,144 },{ 'lightsteelblue', 176,196,222 },{ 'cornflowerblue', 100,149,237 },{ 'royalblue', 65,105,225 },
{ 'ghostwhite', 248,248,255 },{ 'lavender', 230,230,250 },{ 'blue', 0,0,255 },{ 'mediumblue', 0,0,205 },
{ 'darkblue', 0,0,139 },{ 'midnightblue', 25,25,112 },{ 'navy', 0,0,128 },{ 'slateblue', 106,90,205 },
{ 'darkslateblue', 72,61,139 },{ 'mediumslateblue', 123,104,238 },{ 'mediumpurple', 147,112,219 },{ 'blueviolet', 138,43,226 },
{ 'indigo', 75,0,130 },{ 'darkorchid', 153,50,204 },{ 'darkviolet', 148,0,211 },{ 'mediumorchid', 186,85,211 },
{ 'thistle', 216,191,216 },{ 'plum', 221,160,221 },{ 'violet', 238,130,238 },{ 'fuchsia', 255,0,255 },
{ 'magenta', 255,0,255 },{ 'darkmagenta', 139,0,139 },{ 'purple', 128,0,128 },{ 'orchid', 218,112,214 },
{ 'mediumvioletred', 199,21,133 },{ 'deeppink', 255,20,147 },{ 'hotpink', 255,105,180 },{ 'lavenderblush', 255,240,245 },
{ 'palevioletred', 219,112,147 },{ 'crimson', 220,20,60 },{ 'pink', 255,192,203 },{ 'lightpink', 255,182,193 },
{ 'white', 255,255,255 },{ 'snow', 255,250,250 },{ 'whitesmoke', 245,245,245 },{ 'gainsboro', 220,220,220 },
{ 'lightgray', 211,211,211 },{ 'silver', 192,192,192 },{ 'darkgray', 169,169,169 },{ 'gray', 128,128,128 },
{ 'dimgray', 105,105,105 },{ 'black', 0,0,0 },{ 'aliceblue', 240,248,255 },{ 'antiquewhite', 250,235,215 },
{ 'aqua', 0,255,255 },{ 'aquamarine', 127,255,212 },{ 'azure', 240,255,255 },{ 'beige', 245,245,220 },
{ 'bisque', 255,228,196 },{ 'black', 0,0,0 },{ 'blanchedalmond', 255,235,205 },{ 'blue', 0,0,255 },
{ 'blueviolet', 138,43,226 },{ 'brown', 165,42,42 },{ 'burlywood', 222,184,135 },{ 'cadetblue', 95,158,160 },
{ 'chartreuse', 127,255,0 },{ 'chocolate', 210,105,30 },{ 'coral', 255,127,80 },{ 'cornflowerblue', 100,149,237 },
{ 'cornsilk', 255,248,220 },{ 'crimson', 220,20,60 },{ 'cyan', 0,255,255 },{ 'darkblue', 0,0,139 },
{ 'darkcyan', 0,139,139 },{ 'darkgoldenrod', 184,134,11 },{ 'darkgray', 169,169,169 },{ 'darkgreen', 0,100,0 },
{ 'darkkhaki', 189,183,107 },{ 'darkmagenta', 139,0,139 },{ 'darkolivegreen', 85,107,47 },{ 'darkorange', 255,140,0 },
{ 'darkorchid', 153,50,204 },{ 'darkred', 139,0,0 },{ 'darksalmon', 233,150,122 },{ 'darkseagreen', 143,188,139 },
{ 'darkslateblue', 72,61,139 },{ 'darkslategray', 47,79,79 },{ 'darkturquoise', 0,206,209 },{ 'darkviolet', 148,0,211 },
{ 'deeppink', 255,20,147 },{ 'deepskyblue', 0,191,255 },{ 'dimgray', 105,105,105 },{ 'dodgerblue', 30,144,255 },
{ 'firebrick', 178,34,34 },{ 'floralwhite', 255,250,240 },{ 'forestgreen', 34,139,34 },{ 'fuchsia', 255,0,255 },
{ 'gainsboro', 220,220,220 },{ 'ghostwhite', 248,248,255 },{ 'gold', 255,215,0 },{ 'goldenrod', 218,165,32 },
{ 'gray', 128,128,128 },{ 'green', 0,128,0 },{ 'greenyellow', 173,255,47 },{ 'honeydew', 240,255,240 },
{ 'hotpink', 255,105,180 },{ 'indianred', 205,92,92 },{ 'indigo', 75,0,130 },{ 'ivory', 255,255,240 },
{ 'khaki', 240,230,140 },{ 'lavender', 230,230,250 },{ 'lavenderblush', 255,240,245 },{ 'lawngreen', 124,252,0 },
{ 'lemonchiffon', 255,250,205 },{ 'lightblue', 173,216,230 },{ 'lightcoral', 240,128,128 },{ 'lightcyan', 224,255,255 },
{ 'lightgoldenrodyellow', 250,250,210 },{ 'lightgray', 211,211,211 },{ 'lightgreen', 144,238,144 },{ 'lightpink', 255,182,193 },
{ 'lightsalmon', 255,160,122 },{ 'lightseagreen', 32,178,170 },{ 'lightskyblue', 135,206,250 },{ 'lightslategray', 119,136,153 },
{ 'lightsteelblue', 176,196,222 },{ 'lightyellow', 255,255,224 },{ 'lime', 0,255,0 },{ 'limegreen', 50,205,50 },
{ 'linen', 250,240,230 },{ 'magenta', 255,0,255 },{ 'maroon', 128,0,0 },{ 'mediumaquamarine', 102,205,170 },
{ 'mediumblue', 0,0,205 },{ 'mediumorchid', 186,85,211 },{ 'mediumpurple', 147,112,219 },{ 'mediumseagreen', 60,179,113 },
{ 'mediumslateblue', 123,104,238 },{ 'mediumspringgreen', 0,250,154 },{ 'mediumturquoise', 72,209,204 },{ 'mediumvioletred', 199,21,133 },
{ 'midnightblue', 25,25,112 },{ 'mintcream', 245,255,250 },{ 'mistyrose', 255,228,225 },{ 'moccasin', 255,228,181 },
{ 'navajowhite', 255,222,173 },{ 'navy', 0,0,128 },{ 'oldlace', 253,245,230 },{ 'olive', 128,128,0 },
{ 'olivedrab', 107,142,35 },{ 'orange', 255,165,0 },{ 'orangered', 255,69,0 },{ 'orchid', 218,112,214 },
{ 'palegoldenrod', 238,232,170 },{ 'palegreen', 152,251,152 },{ 'paleturquoise', 175,238,238 },{ 'palevioletred', 219,112,147 },
{ 'papayawhip', 255,239,213 },{ 'peachpuff', 255,218,185 },{ 'peru', 205,133,63 },{ 'pink', 255,192,203 },
{ 'plum', 221,160,221 },{ 'powderblue', 176,224,230 },{ 'purple', 128,0,128 },{ 'red', 255,0,0 },
{ 'rosybrown', 188,143,143 },{ 'royalblue', 65,105,225 },{ 'saddlebrown', 139,69,19 },{ 'salmon', 250,128,114 },
{ 'sandybrown', 244,164,96 },{ 'seagreen', 46,139,87 },{ 'seashell', 255,245,238 },{ 'sienna', 160,82,45 },
{ 'silver', 192,192,192 },{ 'skyblue', 135,206,235 },{ 'slateblue', 106,90,205 },{ 'slategray', 112,128,144 },
{ 'snow', 255,250,250 },{ 'springgreen', 0,255,127 },{ 'steelblue', 70,130,180 },{ 'tan', 210,180,140 },
{ 'teal', 0,128,128 },{ 'thistle', 216,191,216 },{ 'tomato', 255,99,71 },{ 'turquoise', 64,224,208 },
{ 'violet', 238,130,238 },{ 'wheat', 245,222,179 },{ 'white', 255,255,255 },{ 'whitesmoke', 245,245,245 },
{ 'yellow', 255,255,0 },{ 'yellowgreen', 154,205,50 }}
table.foreachi(col.list,function(a,b)
    col[b[1]] =     function(text) return "[COLOR r;"..(b[2]/255.0).."|g;"..(b[3]/255.0).."|b;"..(b[4]/255.0).."]"..text..'[/COLOR]' end
end)


--[[
    @name   Apache-Funktionen
    @author Mijago
    @descr
Funktionen, um Apache neu zu starten.
--]]
proc=proc or {}
proc.apache_start = function()
                os.execute('apachectl start')
            end
proc.apache_stop = function()
                os.execute('apachectl stop')
            end
proc.apache_restart = function()
                os.execute('apachectl restart')
            end
proc.apache_graceful = function()
                os.execute('apachectl graceful')
            end


--[[
    @name   TS3-Funktionen
    @author Mijago
    @descr
Funktionen zum Starten, Stoppen und Neustarten eines TS3 Servers.
--]]
proc=proc or {}
proc.ts3_start = function(path)
                os.execute('cd '..path..' && sh ts3server_startscript.sh start')
                end
proc.ts3_stop = function(path)
                os.execute('cd '..path..' && sh ts3server_startscript.sh stop')
                end
proc.ts3_restart = function(path)
                os.execute('cd '..path..' && sh ts3server_startscript.sh restart')
                end
             
function register_player(vid)
    local player_count = d.getf("player_count")
    player_count = player_count + 1
    d.setf("player_count", tonumber(player_count))
    d.setf(string.format("player%d", player_count), tonumber(vid))
end 
function unregister_player(vid)
    local player_count = d.getf("player_count")
    local found = false
    for i = 1, player_count, 1 do
        if found == true then
            d.setf(string.format("player%d", tonumber(i)), d.getf(string.format("player%d", i+1)))
        end
        p = d.getf("player"..tostring(i))
        if p == vid then
            i = i -1
            found = true
        end
    end 
    if found == true then
        d.setf("player_count", tonumber(player_count - 1))
    end
end 
function get_players()
    local players = {}
    local player_count = d.getf("player_count")
    for i = 1, player_count, 1 do
        players[i] = d.getf("player"..tostring(i))
    end
    return players
end
function give_dc_access(pindex)
    local self_checked = false
    local self = pc.select(d.getf("player"..tostring(pindex)))
    --pc.setqf("dcenter", 1)
    pc.setf("deviltower_zone", "dcenter", 1)
    pc.select(self)
end

function getinput(par)
    cmdchat("getinputbegin")
    local ret = input(cmdchat(par))
    cmdchat("getinputend")
    return ret
end
 
Sorunu buldum tam olarak nerede hata yaptiğimi bulunca hatami açikliyacağim. Şunu söyleyebilirim şimdilik eklediğim bir sistemden kaynakli bakalim hangi sistemde hata yaptık :D
 
Çözüm
Sorunu buldum tam olarak nerede hata yaptiğimi bulunca hatami açikliyacağim. Şunu söyleyebilirim şimdilik eklediğim bir sistemden kaynakli bakalim hangi sistemde hata yaptık :D
Hadi hayırlısı. Aklıma şu da geldi ../turkey/quest klasörünün içinde .list uzantılı bir şey olması lazım gmservis.quest ismini bunun içine ekleyin bulmuşsunuz ama buda çözüm olabilir. Bazı fileslerde bu listeye eklenmeyince çalışmıyor.
 
Hadi hayırlısı. Aklıma şu da geldi ../turkey/quest klasörünün içinde .list uzantılı bir şey olması lazım gmservis.quest ismini bunun içine ekleyin bulmuşsunuz ama buda çözüm olabilir. Bazı fileslerde bu listeye eklenmeyince çalışmıyor.
Locale_list filan mi? O liste make.sh çekerken işe yarıyor. Diğer durumlarda çalışması için bir faydası yok. Metin2 questleri çalıştırırken object dosyasındaki derlenmiş dosyaları çalıştırır.
 
Locale_list filan mi? O liste make.sh çekerken işe yarıyor. Diğer durumlarda çalışması için bir faydası yok. Metin2 questleri çalıştırırken object dosyasındaki derlenmiş dosyaları çalıştırır.
Evet hocam. Yani bu şekilde de karşılaştım ki make.sh ile çalışmanın faydalı olduğunu düşünüyorum ekleme/çıkarma fark etmeksizin. Kullanılan filesi link olarak paylaşırsa aslında daha iyi olacaktır. Bu yüzden net bir şey konuşamıyorum şahsen. :)
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst