Çözüldü Zindan Süresi Dolunca PM'den bilgilendirme mesajı gelmesi

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ı.

Afraz

Cehalet yenilmesi gereken en büyük düşmandır.
Yardımsever Üye
MT Üye
Mesaj
678
Çözümler
30
Beğeni
181
Puan
604
Ticaret Puanı
0
Arkadaşlar zindan süresi dolunca özel pm olarak oyuncuya mesaj gelmesini istiyorum.. Yardımcı olabilicek varmı?
 
Çözüm
@Afraz
Lua (Quest):
quest ross_new_crystal_dungeon begin
    state start begin

    function setting()
        return
        {

        ["base"]={["x"] = 3072  , ["y"]= 12032 ,},
        ["floor1_s"] = { ["x"] = 20, ["y"] = 20, },
        ["floor1_e"] = { ["x"] = 500, ["y"] = 470,},
        ["floor2_s"] = { ["x"] = 510, ["y"] = 18, },
        ["floor2_e"] = { ["x"] = 978, ["y"] = 470,},
        ["floor1_entry"] = {["x"] = 73, ["y"] = 63,},
        ["floor2_entry"] = {["x"] = 550, ["y"] = 45,},
        ["floor3_entry"] = {["x"] = 1378, ["y"] = 249,},
        ["floor4_entry"] = {["x"] = 70, ["y"] = 592,},
        ["floor5_entry"] = {["x"] = 846, ["y"] = 898},
        ["floor6_entry"] = {["x"] = 1362, ["y"] = 666}...
Valla bu kadarını yapabilseydim konu açmayabilirdim :D İllaki quest'e yazıcam diye birşey yok c++ üzerinden de halledilir fakat istediğim şekilde her oyuncuya özel olarak süresi dolunca gidermi mesaj?
Dediğim şekilde yapabilirsen evet gider. Ama bunu özelleştirmek gerekir. Her level oyuncuya bu mesajın gönderilmesi saçma olur mesela. Ya da belki oyuncu bu mesajı görmek istemeyebilir. gibi gibi faktörleri de ele alarak düzenleme yapmak gerekebilir.
 
Mesaj göndermek için kullanılan tanımlar eklenmiş queste her fileste çalışacağını sanmıyorum. Bu quest senin serverinde sorunsuz bir şekilde çalışıyorsa bu questi düzenleyerek her bossa uyarlayabilirsin.

Dediğim şekilde yapabilirsen evet gider. Ama bunu özelleştirmek gerekir. Her level oyuncuya bu mesajın gönderilmesi saçma olur mesela. Ya da belki oyuncu bu mesajı görmek istemeyebilir. gibi gibi faktörleri de ele alarak düzenleme yapmak gerekebilir.
Oyun ayarlarına bildirim almak istiyormusun felan diye seçenek konması en iyisi olur
 
Mesaj göndermek için kullanılan tanımlar eklenmiş queste her fileste çalışacağını sanmıyorum. Bu quest senin serverinde sorunsuz bir şekilde çalışıyorsa bu questi düzenleyerek her bossa uyarlayabilirsin.
Attığım questi eski bir filesde denemiştim.
Yardım - Bir Quest Buldum Fakat Putty ./qc'de Abort Veriyor.
Bu hatayı vermişti üstüne pek düşmedim..


Dediğim şekilde yapabilirsen evet gider. Ama bunu özelleştirmek gerekir. Her level oyuncuya bu mesajın gönderilmesi saçma olur mesela. Ya da belki oyuncu bu mesajı görmek istemeyebilir. gibi gibi faktörleri de ele alarak düzenleme yapmak gerekebilir.
wslik bir yapı olduğu için levelin pek anlamı kalmıyor.. Toplamda 5 boss var zaten dungeon info olmamasından kaynaklı insanlar ws yada görünüş için başka bir yerde farm yaparken sürekli boss bekçisinin yanına gidip sürem doldumu diye bakması onları zorlaştırır. Kimse ben bu mesajı görmek istemiyorum demez zaten boss dönücek kişiler görünüşe düşkün her boss geldiğinde gireyim kafasına girdikleri için pek sıkıntı yaratacağını düşünmüyorum.. Kısa yoldan nasıl yapılır hakkında yardımcı olabilicek varmı.. Pek bilgim yok gibi duruyorum :D
 
Bu questi kullanan bir files bulup bazı kodları ordan alman gerek.
 
Bildiğim şekliyle anlatmaya çalıştım umarım yardımcı olur,

Linkleri görebilmek için giriş yap veya kayıt ol.


yanlışım varsa düzeltirseniz sevinirim.
Geri sayım mevcut bossa girdiktikten örneğin 5saat bir süre var ise 1 saat sonra denediğimde kalan süre 3 saat 59dk 15 saniye gibi gösteriyor.. Sizin attığınızı benim questlerim uyarlayabilirmiyiz acaba?

Benim zindan questimden bir tanesi;


Quest:
quest ross_new_crystal_dungeon begin
    state start begin

    function setting()
        return
        {

        ["base"]={["x"] = 3072  , ["y"]= 12032 ,},
        ["floor1_s"] = { ["x"] = 20, ["y"] = 20, },
        ["floor1_e"] = { ["x"] = 500, ["y"] = 470,},
        ["floor2_s"] = { ["x"] = 510, ["y"] = 18, },
        ["floor2_e"] = { ["x"] = 978, ["y"] = 470,},
        ["floor1_entry"] = {["x"] = 73, ["y"] = 63,},
        ["floor2_entry"] = {["x"] = 550, ["y"] = 45,},
        ["floor3_entry"] = {["x"] = 1378, ["y"] = 249,},
        ["floor4_entry"] = {["x"] = 70, ["y"] = 592,},
        ["floor5_entry"] = {["x"] = 846, ["y"] = 898},
        ["floor6_entry"] = {["x"] = 1362, ["y"] = 666},
        ["water_entry"] = {["x"] = 73, ["y"] = 1156},

        ["map_idx"] = 501,
        ["rag"] = 30311,

        ["devil_king"] = 2591,

        ["reapers_credit1"] = 31324,
        ["reapers_credit2"] = 30320,
        ["reapers_credit3"] = 76002,
        ["reapers_credit4"] = 79001,

        ["floor3_stone"] = 8038, 
        ["floor3_stone_pos"] = {
                {1366,    150},
                {1366,    351},
                {1234,    365},
                {1234,    140},
                {1150,    135},
                {1130,    365},
                {1135,    253}
        },

        ["mob_regen_file_path"] = "data/dungeon/devilwater/",
        ["floor4_regen_file"] = {"devilwater_floor4_regen1.txt",
                               "devilwater_floor4_regen2.txt",
                               "devilwater_floor4_regen3.txt",
                               "devilwater_floor4_regen4.txt",
                               "devilwater_floor4_regen5.txt"} ,

        ["credit_stone"] = 30101,
        ["credit_stone_pos"] = {307,323},
        ["floor2_stone"] = 30103,
        ["floor2_stone_pos"] = {741,217},
        ["floor2_merchant_npc"] = 20368,
        ["floor2_merchant_npc_pos"] = {734,214},
        
        ["floor4_npc"] = 30104,
        ["floor4_npc_pos"] = {75, 592},

        ["devil_king_pos"] = {{673,829},{691,638},{848,568},{1026,642},{1008,862}},

        ["unlock_stone"] = 30312,
        ["floor5_stone"] = 30102,
        ["floor5_stone_pos"] = {848, 735},

        ["devil_great_king"] = 2597 ,
        ["devil_great_king_pos"] = {1303,704},
        ["devil_emperor"] = 3964,
        ["devil_emperor_pos"] = {74,1103},

        ["dc2_door_set_size"] = {4,2,3,2},
        ["dc2_door_set1"] = {
                                {{30111,    566,    117,    5},{30112,  562,    311,    5,},{30118, 663,    434,    7},{30119,  881,    434,    7}},
                                {{30116,    743,    390,    3},{30119,  612,    251,    1,}},
                                {{30113,    654,    211,    5},{30111,  707,    338,    7,},{30112, 775,    336,    7}},
                                {{30117,    733,    294,    3},{30113,  694,    271,    1,}}
                            },
        ["dc2_door_set2"] = {
                                {{30115,    942,    141,    5},{30116,  942,    245,    5},{30117,  942,    321,    5},{30115,  763,    64, 7}},
                                {{30118,    643,    116,    3},{30114,  900,    167,    1}},
                                {{30114,    850,    293,    5},{30113,  715,    164,    7},{30114,  817,    162,    7}},
                                {{30111,    802,    277,    1},{30112,  800,    241,    1}}
                            },
        }
    end
    
        when logout begin
            local idx = 356
            local map = pc.get_map_index()
            if map >= (idx * 10000) and map < (idx * 10000 + 9000) then
                pc.setf("crystal","crystal_last_login",get_global_time() + 60*60*2)
            end
        end

        when 20061.chat."< Ross > Crystal Boss" begin
            local setting = ross_new_crystal_dungeon.setting()
            if pc.level < 249 or pc.level > 300 then
                addimage(35,35,'deneme31.tga')
                say_title(mob_name(20061))
                say("")
                say("")
                say("")
                say("")
                say("")
                say("Seviyen giriş gereksinimlerini karşılamıyor. ")
                say("Gereksinimler:")
                say(string.format("Minimum Seviye: %d.",249))
                say(string.format("Maksimum Seviye: %d.",300))
                say("")
                return
            end
            if pc.count_item(70254) < 1 then
                addimage(35,35,'deneme31.tga')
                say_title(mob_name(20061))
                say("")
                say("")
                say("")
                say("")
                say("")
                say_item_vnum(70254)
                say("Gerekli esya olmadan giris yapamazsin.")
                return
            end
            if party.is_party() then
                addimage(35,35,'deneme31.tga')
                say_title(mob_name(20061))
                say("")
                say("")
                say("")
                say("")
                say("")
                say("Grubun varken giris yapamazsin.")
                return
            end
            if pc.getf("crystal","crystal_last_login") > get_time() then
                say_npc()
                say("")
                say("Henüz odaya giremezsin.")
                say("Bekleme süren dolunca tekrar gel.")
                say("")
                say_reward("Kalan Süre : "..LIB_duration(pc.getf("crystal","crystal_last_login")-get_time()))
                return
            end
            say_title("                                             Bekci:")
            say("")
            say("")
            say("")
            say("Giriş Yapmaya Hazırmısın Dosd? ")
            say("")
            say_title("< Ross Bilgilendirme > Sana önerim skill kullan ! ")
            say("")
            say("")
            local s = select("Evet !!", "Hayır")
            if s == 1 then
                pc.remove_item(70254,1)
                timer("ross_crystal_sologiris",2)
            else
                return
            end
        end
        when ross_crystal_sologiris.timer begin
            d.new_jump(356, 21765 * 100, 30187 * 100)
            d.spawn_mob_dir(2601,774,693,1)
            --d.set_regen_file("data/dungeon/water_dungeon_regens/boss.txt")
            --d.jump_all (setting.water_entry.x + setting.base.x, setting.water_entry.y + setting.base.y )
            --water.Temizle()
            
            server_timer("ross_crystal_timeup",60*60*1,d.get_map_index())
        end
        
        -- 6Ãş°ú ¸¶Âù°¡Áö·Î »ç¸¶ÈÖ(3964)ÀÌ Á×À¸¸é
        -- 7ÃşÀÇ Å¸À̸Ӱ¡ ÀÛµ¿ÇÑ´Ù.
        when kill with npc.get_race() == 2601 begin
            d.notice("< Ross Bilgilendirme > Özel Crystal Bossunu Öldürdün TEBRIKLER ! Haritada Kalan Süre > 1 Dakika ! ")
            d.clear_regen()
            d.kill_all()
            server_timer ("ross_crystal_eli_check_timer_1", 5, d.get_map_index())
        end
        
        -- 7ÃşÀÇ Å¸À̸Ӵ 6Ãş ŸÀÌ¸Ó¿Í ºñ½ÁÇϸç,
        -- ¸ó½ºÅÍ ¼ıÀÚ°¡ 0À̸é exit ŸÀ̸Ӹ¦ ¹ß»ı½ÃŲ´Ù.
        -- ¹Ù·Î exitÇÏÁö ¾Ê´Â ÀÌÀ¯´Â, À¯Àúµé¿¡°Ô ÁغñÇÒ ½Ã°£À» ÁÖ±â À§ÇؼÀÌ´Ù.
        when ross_crystal_eli_check_timer_1.server_timer begin
            if d.select(get_server_timer_arg()) then
                    d.set_warp_location (306, 1687, 6113)
                    --say_in_map(get_server_timer_arg(),"Azrail yenildi. ?ytan Katakombu'na nihayet[ENTER]huzur hakim. ?mdi yer y??e ış?lanacaks?. ")
                    server_timer ("ross_crystal_eli_check_timer_2", 5, get_server_timer_arg())
            end
        end

        when ross_crystal_eli_check_timer_2.server_timer begin
            if d.select(get_server_timer_arg()) then
                    d.set_warp_location (306, 1687, 6113)
                    --say_in_map(get_server_timer_arg(),"Azrail yenildi. ?ytan Katakombu'na nihayet[ENTER]huzur hakim. ?mdi yer y??e ış?lanacaks?. ")
                    server_timer("ross_crystal_exit_timer", 30, get_server_timer_arg())
            else
                    server_timer ("ross_crystal_eli_check_timer_1", 5, get_server_timer_arg())
            end
        end
        
        when ross_crystal_timeup.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Zaman doldu.")
                d.setf("sure_doldu",1)
                d.exit_all()
            end
        end

        when ross_crystal_exit_timer.server_timer begin
            if d.select(get_server_timer_arg()) then
                clear_server_timer("ross_crystal_eli_check_timer_1", get_server_timer_arg())
                clear_server_timer("ross_crystal_eli_check_timer_2", get_server_timer_arg())
                clear_server_timer("ross_crystal_sologiris", get_server_timer_arg())
                d.clear_regen()
                d.exit_all()
            end
        end
    end  --state
end   --quest
 
Bir adet questfunc yazın pm göndermek için sonra questle time'ı getf ile çekin, o questfunc ile yazdığınız mesaj gönderme fonksiyonunu tetikleyin. Bu kadar.
 
Arkadaşımın verdiği fikir ile kaba taslak bir denedim ama bu şekilde kullanılmaz ve sadece tek zindan için.
Stabil hale getirdiğimde paylaşabilirim.

 
send_whisper quest functiona eklediğin halde bi değişim olmuyorsa sourcede ekli değildir sendeki sourcede quest le başlıyan cppleri aç olan birisinden bak olan bi filesten geçir kendine send_whisper fonksiyonunu bide öyle dene
 
@Afraz
Lua (Quest):
quest ross_new_crystal_dungeon begin
    state start begin

    function setting()
        return
        {

        ["base"]={["x"] = 3072  , ["y"]= 12032 ,},
        ["floor1_s"] = { ["x"] = 20, ["y"] = 20, },
        ["floor1_e"] = { ["x"] = 500, ["y"] = 470,},
        ["floor2_s"] = { ["x"] = 510, ["y"] = 18, },
        ["floor2_e"] = { ["x"] = 978, ["y"] = 470,},
        ["floor1_entry"] = {["x"] = 73, ["y"] = 63,},
        ["floor2_entry"] = {["x"] = 550, ["y"] = 45,},
        ["floor3_entry"] = {["x"] = 1378, ["y"] = 249,},
        ["floor4_entry"] = {["x"] = 70, ["y"] = 592,},
        ["floor5_entry"] = {["x"] = 846, ["y"] = 898},
        ["floor6_entry"] = {["x"] = 1362, ["y"] = 666},
        ["water_entry"] = {["x"] = 73, ["y"] = 1156},

        ["map_idx"] = 501,
        ["rag"] = 30311,

        ["remain_time"] = 60*60*2,

        ["devil_king"] = 2591,

        ["reapers_credit1"] = 31324,
        ["reapers_credit2"] = 30320,
        ["reapers_credit3"] = 76002,
        ["reapers_credit4"] = 79001,

        ["floor3_stone"] = 8038,
        ["floor3_stone_pos"] = {
                {1366,    150},
                {1366,    351},
                {1234,    365},
                {1234,    140},
                {1150,    135},
                {1130,    365},
                {1135,    253}
        },

        ["mob_regen_file_path"] = "data/dungeon/devilwater/",
        ["floor4_regen_file"] = {"devilwater_floor4_regen1.txt",
                               "devilwater_floor4_regen2.txt",
                               "devilwater_floor4_regen3.txt",
                               "devilwater_floor4_regen4.txt",
                               "devilwater_floor4_regen5.txt"} ,

        ["credit_stone"] = 30101,
        ["credit_stone_pos"] = {307,323},
        ["floor2_stone"] = 30103,
        ["floor2_stone_pos"] = {741,217},
        ["floor2_merchant_npc"] = 20368,
        ["floor2_merchant_npc_pos"] = {734,214},
       
        ["floor4_npc"] = 30104,
        ["floor4_npc_pos"] = {75, 592},

        ["devil_king_pos"] = {{673,829},{691,638},{848,568},{1026,642},{1008,862}},

        ["unlock_stone"] = 30312,
        ["floor5_stone"] = 30102,
        ["floor5_stone_pos"] = {848, 735},

        ["devil_great_king"] = 2597 ,
        ["devil_great_king_pos"] = {1303,704},
        ["devil_emperor"] = 3964,
        ["devil_emperor_pos"] = {74,1103},

        ["dc2_door_set_size"] = {4,2,3,2},
        ["dc2_door_set1"] = {
                                {{30111,    566,    117,    5},{30112,  562,    311,    5,},{30118, 663,    434,    7},{30119,  881,    434,    7}},
                                {{30116,    743,    390,    3},{30119,  612,    251,    1,}},
                                {{30113,    654,    211,    5},{30111,  707,    338,    7,},{30112, 775,    336,    7}},
                                {{30117,    733,    294,    3},{30113,  694,    271,    1,}}
                            },
        ["dc2_door_set2"] = {
                                {{30115,    942,    141,    5},{30116,  942,    245,    5},{30117,  942,    321,    5},{30115,  763,    64, 7}},
                                {{30118,    643,    116,    3},{30114,  900,    167,    1}},
                                {{30114,    850,    293,    5},{30113,  715,    164,    7},{30114,  817,    162,    7}},
                                {{30111,    802,    277,    1},{30112,  800,    241,    1}}
                            },
        }
    end

    function sendRemainWhisper()-- Whisper fonksiyonu tanimlandi.
        local set = ross_new_crystal_dungeon.setting()
        local rem = (set.remain_time+pc.getqf("crystal_soguma_suresi"))-get_global_time()
        if rem > 0 then timer("Whisper_Crystal", rem) end -- V4
    end
   
        ---when logout begin
            ---local idx = 356
            ---local map = pc.get_map_index()
            ---if map >= (idx * 10000) and map < (idx * 10000 + 9000) then
                ---pc.setf("crystal","crystal_last_login",get_global_time() + 60*60*2)
            ---end
        ---end

    when Whisper_Crystal.timer begin -- V4
        send_whisper(pc.get_player_id(), "[Zindan Bilgilendirme]", "Crystal Zindan'daki bekleme süreniz dolmuştur, tekrar giriş yapabilirsiniz.")
    end

        when 20061.chat."< Ross > Crystal Boss" begin
            local setting = ross_new_crystal_dungeon.setting()
            if pc.level < 249 or pc.level > 300 then
                addimage(35,35,'deneme31.tga')
                say_title(mob_name(20061))
                say("")
                say("")
                say("")
                say("")
                say("")
                say("Seviyen giriş gereksinimlerini karşılamıyor. ")
                say("Gereksinimler:")
                say(string.format("Minimum Seviye: %d.",249))
                say(string.format("Maksimum Seviye: %d.",300))
                say("")
                return
            end
            if pc.count_item(70254) < 1 then
                addimage(35,35,'deneme31.tga')
                say_title(mob_name(20061))
                say("")
                say("")
                say("")
                say("")
                say("")
                say_item_vnum(70254)
                say("Gerekli esya olmadan giris yapamazsin.")
                return
            end
            if party.is_party() then
                addimage(35,35,'deneme31.tga')
                say_title(mob_name(20061))
                say("")
                say("")
                say("")
                say("")
                say("")
                say("Grubun varken giris yapamazsin.")
                return
            end
            local remainTime = pc.getqf("crystal_soguma_suresi")+set.remain_time-get_global_time()
            if remainTime>0 then
                say_npc()
                say("")
                say("Henüz odaya giremezsin.")
                say("Bekleme süren dolunca tekrar gel.")
                say("")
                say_reward("Tekrar oda açman için kalan bekleme süren: "..LIB_duration(remainTime))
                return
            end
            say_title("                                             Bekci:")
            say("")
            say("")
            say("")
            say("Giriş Yapmaya Hazırmısın Dosd? ")
            say("")
            say_title("< Ross Bilgilendirme > Sana önerim skill kullan ! ")
            say("")
            say("")
            local s = select("Evet !!", "Hayır")
            if s == 1 then
                pc.remove_item(70254,1)
                timer("ross_crystal_sologiris",2)
            else
                return
            end
        end
        when ross_crystal_sologiris.timer begin
            d.new_jump(356, 21765 * 100, 30187 * 100)
            d.spawn_mob_dir(2601,774,693,1)
            --d.set_regen_file("data/dungeon/water_dungeon_regens/boss.txt")
            --d.jump_all (setting.water_entry.x + setting.base.x, setting.water_entry.y + setting.base.y )
            --water.Temizle()
            pc.setqf("crystal_soguma_suresi", get_global_time())--Soguma suresi tanimlandi.
            server_timer("ross_crystal_timeup",60*60*1,d.get_map_index())
        end
       
        -- 6Ãş°ú ¸¶Âù°¡Áö·Î »ç¸¶ÈÖ(3964)ÀÌ Á×À¸¸é
        -- 7ÃşÀÇ Å¸À̸Ӱ¡ ÀÛµ¿ÇÑ´Ù.
        when kill with npc.get_race() == 2601 begin
            d.notice("< Ross Bilgilendirme > Özel Crystal Bossunu Öldürdün TEBRIKLER ! Haritada Kalan Süre > 1 Dakika ! ")
            d.clear_regen()
            d.kill_all()
            server_timer ("ross_crystal_eli_check_timer_1", 5, d.get_map_index())
        end
       
        -- 7ÃşÀÇ Å¸À̸Ӵ 6Ãş ŸÀÌ¸Ó¿Í ºñ½ÁÇϸç,
        -- ¸ó½ºÅÍ ¼ıÀÚ°¡ 0À̸é exit ŸÀ̸Ӹ¦ ¹ß»ı½ÃŲ´Ù.
        -- ¹Ù·Î exitÇÏÁö ¾Ê´Â ÀÌÀ¯´Â, À¯Àúµé¿¡°Ô ÁغñÇÒ ½Ã°£À» ÁÖ±â À§ÇؼÀÌ´Ù.
        when ross_crystal_eli_check_timer_1.server_timer begin
            if d.select(get_server_timer_arg()) then
                    d.set_warp_location (306, 1687, 6113)
                    --say_in_map(get_server_timer_arg(),"Azrail yenildi. ?ytan Katakombu'na nihayet[ENTER]huzur hakim. ?mdi yer y??e ış?lanacaks?. ")
                    server_timer ("ross_crystal_eli_check_timer_2", 5, get_server_timer_arg())
            end
        end

        when ross_crystal_eli_check_timer_2.server_timer begin
            if d.select(get_server_timer_arg()) then
                    d.set_warp_location (306, 1687, 6113)
                    --say_in_map(get_server_timer_arg(),"Azrail yenildi. ?ytan Katakombu'na nihayet[ENTER]huzur hakim. ?mdi yer y??e ış?lanacaks?. ")
                    server_timer("ross_crystal_exit_timer", 30, get_server_timer_arg())
            else
                    server_timer ("ross_crystal_eli_check_timer_1", 5, get_server_timer_arg())
            end
        end
       
        when ross_crystal_timeup.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Zaman doldu.")
                d.setf("sure_doldu",1)
                d.exit_all()
            end
        end

        when ross_crystal_exit_timer.server_timer begin
            if d.select(get_server_timer_arg()) then
                clear_server_timer("ross_crystal_eli_check_timer_1", get_server_timer_arg())
                clear_server_timer("ross_crystal_eli_check_timer_2", get_server_timer_arg())
                clear_server_timer("ross_crystal_sologiris", get_server_timer_arg())
                d.clear_regen()
                d.exit_all()
            end
        end
    end  --state
end   --quest

Sanırım bu şekilde sorun çıkarmadan çalışacaktır.

NOT: Questte tanımlanan süre 2 saattir, değiştirmek için
Lua (Quest):
["remain_time"]
aratıp düzenleyebilirsin.
NOT2: Soğuma süresi zindana girildiği ilk anda başlar. Bu arada questteki türkçe karakterlerine kullandığım programdan dolayı biraz zarar vermiş olabilirim.


"send_whisper" fonksiyonunu eklemek için yapılacaklar:


game/src içindeki questlua_global aç

Kod:
void RegisterGlobalFunctionTable(lua_State* L)
arat

üstüne ekle:


C++:
int _send_whisper(lua_State* L)
    {
        // pid - title - text
        if (!lua_isnumber(L, 1) || !lua_isstring(L, 2) || !lua_isstring(L, 3))
        {
            sys_err("wrong argument _send_whisper");
            lua_pushboolean(L, 0);
            return 1;
        }

        LPCHARACTER findPC = CHARACTER_MANAGER::instance().FindByPID(lua_tonumber(L, 1));
        if (!findPC)
        {
            lua_pushboolean(L, 0);
            return 1;
        }
        else
        {
            std::string title = lua_tostring(L, 2);
            std::string text = lua_tostring(L, 3);
            char msg[CHAT_MAX_LEN + 1];
            snprintf(msg, sizeof(msg), text.c_str());
            LPDESC pkVictimDesc = findPC->GetDesc();
            if (!pkVictimDesc)
            {
                lua_pushboolean(L, 0);
                return 1;
            }
            else
            {
                TPacketGCWhisper pack;
                int len = MIN(CHAT_MAX_LEN, strlen(msg) + 1);
                pack.bHeader = HEADER_GC_WHISPER;
                pack.wSize = sizeof(TPacketGCWhisper)+len;
                pack.bType = WHISPER_TYPE_SYSTEM;
                strlcpy(pack.szNameFrom, title.c_str(), sizeof(pack.szNameFrom));
                TEMP_BUFFER buf;
                buf.write(&pack, sizeof(TPacketGCWhisper));
                buf.write(msg, len);
                pkVictimDesc->Packet(buf.read_peek(), buf.size());
                lua_pushboolean(L, 1);
            }
        }
        return 1;
    }

C++:
{    NULL,    NULL    }
arat

üstüne ekle:

C++:
{    "send_whisper",                _send_whisper                },


Ardından "quest" dosyası içindeki "quest_functions" belgesini aç.
Uygun bir yere send_whisper ekle.
Build işlemini gerçekleştirip questi deneyebilirsin.
 
Son düzenleme:
Çözüm
Build atarken hata alıyorum.7

Screenshot_7.png
 
questlua_global.cpp içindeki include'lar arasına alttakini ekle build işlemi gerçekleşir.

C++:
#include "desc.h"
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst