- Mesaj
- 678
- Çözümler
- 30
- Beğeni
- 181
- Puan
- 604
Verilen hata yukarda bu hataya rağmen oyuna işledi reload q attım npc'de gözüküyor. Fakat Oda Kur denildiğinde Merhabalar NICK yazıyor ve kalıyor devamı yok
sorun nedir acaba?
Quest:
quest scp_kule begin
state start begin
---------------------------------------------------------------------------------------------------------FUNCTIONS START
function isSystemOpen() return (game.get_event_flag("scp_kule_sys")!=0) end
function testMode() return true end
function is_this_dungeon()
if not pc.in_dungeon() then return false end
local set = scp_kule.getSetting()
return (d.get_orig_map_index()==set.map_index)
end
function isOutside()
local set = scp_kule.getSetting()
return (pc.get_map_index()==set.out_map_index)
end
function isValidCahnnel(ch) return true end
function pc_can_create()--return index, pass, remain(second)
local id = pc.get_player_id()
local set = scp_kule.getSetting()
local inds = {d.get_opened_dungeons_indexes(set.map_index)}
local set = scp_kule.getSetting()
local ind
for i=1, table.getn(inds) do
ind = inds[i]
if d.find(ind) then
if d.getf_from_map_index("creator", ind) == id then
return ind, d.getf_from_map_index("sifre", ind), math.floor((set.open_time+d.getf_from_map_index("lgt", ind)-get_global_time()))
end
end
end
return 0, 0, 0
end
function check_pc(ctype) -- remove items!
local set = scp_kule.getSetting()
local needs = set.needs
if ctype == 1 then
if pc.get_level() < needs[2] then return 2 end
if needs[3] < pc.get_level() then return 3 end
if pc.get_gold() < needs[1] then return 4 end
if needs[3] != 0 then
if pc.count_item(needs[4]) < needs[5] then return 5 end
end
if pc.is_busy() or pc.is_hack() then return 6 end
return 1
elseif ctype == 2 then
if pc.is_busy() or pc.is_hack() then return false end
if needs[34] != 0 then
pc.remove_item(needs[4], needs[5])
end
pc.change_gold(-needs[1])
return true
end
end
function getSetting()
return {
["map_index"] = 66,
["base_coor_local"] = {619, 142},
["out_map_index"] = 65,
["out_coor_local"] = {530, 601},
["open_time"] = 60*60*1,
["remain_time"] = 60*60*1,
["needs"] = {0, 75, 120, 30737, 1},
--Level 1
["boss_lib"] = {1093, 610, 189}
}
end
function sendRemainWhisper()
local set = scp_kule.getSetting()
local rem = (set.remain_time+pc.getqf("scp_kule_time"))-get_global_time()
if rem > 0 then timer("Whisper_DeadBully", rem) end -- V4
end
---------------------------------------------------------------------------------------------------------FUNCTIONS END
---------------------------------------------------------------------------------------------------------LOGIN-LOGOUT START
when login begin
local pindex = pc.get_map_index()
clear_letter()
local set = scp_kule.getSetting()
if pindex == set.map_index then
if pc.get_local_x() < 160 and pc.get_local_y() > 910 then
warp_to_village()
else
scp_kule.sendRemainWhisper()
end
elseif scp_kule.is_this_dungeon() then
local isCreator = (d.getf("creator") == pc.get_player_id())
local isRegistered = (d.getf("register_"..pc.get_player_id()) != 0)
if not (isCreator or isRegistered) then
sys_err("Not registered but in dungeon!")
warp_to_village()
else
if not isCreator then d.setf("notSelf", 1) end -- V3
pc.set_warp_location(set.out_map_index, set.out_coor_local[1], set.out_coor_local[2])
send_letter("Oda Bilgileri")
big_notice("Oda Numarasi: "..(d.get_map_index()-(set.map_index*10000)))
big_notice("Oda Sifresi: "..d.getf("sifre"))
big_notice("Kalan Süre: "..LIB_duration((set.open_time+d.getf("lgt")-get_global_time())))
big_notice("Bilgilere tekrar ulasmak için görevlerinizi kontrol edin.")
end
else
scp_kule.sendRemainWhisper()
end
end
when button or info with scp_kule.is_this_dungeon() begin
setskin(0)
local set = scp_kule.getSetting()
big_notice("Oda Numarasi: "..d.get_map_index()-(set.map_index*10000))
big_notice("Oda Sifresi: "..d.getf("sifre"))
big_notice("Kalan Süre: "..LIB_duration((set.open_time+d.getf("lgt")-get_global_time())))
send_letter("Oda Bilgileri")
end
---------------------------------------------------------------------------------------------------------LOGIN-LOGOUT END
---------------------------------------------------------------------------------------------------------NPC START
when 20348.chat."Bilgilendirme" with scp_kule.isValidCahnnel(pc.get_channel_id()) and scp_kule.isOutside() begin
if not scp_kule.isSystemOpen() then
setskin(0)
syschat("Sistem, yönetici tarafından kapatılmıştır.")
return
end
local set = scp_kule.getSetting()
local needs = set.needs
say_title("Oda kurmak için gerekenler:")
say("")
say("Öncelikle en az "..needs[2]..", en fazla "..needs[3].." level olmalısınız.")
if needs[1]>0 then
say("En az "..genel_veri(needs[1]).." yanga sahip olmalısınız.")
end
if needs[4]!=0 then
say_item_vnum(needs[4])
say("'"..item_name(needs[4]).."' nesnesinden en az "..needs[5].." adete sahip olmalısınız.")
end
say("")
say("Oda kurarken/kurmadan 10 saniye önce ticaret yapmamış olmanız gerekiyor.")
say("")
wait()
say("")
say("")
say_yellow("Oda Sistemi Güncellemesi:")
say("")
say_yellow("Eğer gitmek istediğiniz odaya daha önceden girmişseniz:")
say_yellow(" > sizden oda şifresi istenmez.")
say_yellow(" > sizden gerekli nesne/yang istenmez.")
say("")
say_yellow("Eğer odaya kurucusu dışında birisi girmemişse, boss kesilme duyurusu farklı olacak.") -- V3
say("")
wait()
end
when 20348.chat."Oda Kur" with scp_kule.isValidCahnnel(pc.get_channel_id()) and scp_kule.isOutside() begin
if not scp_kule.isSystemOpen() then
setskin(0)
syschat("Sistem, yönetici tarafından kapatılmıştır.")
return
end
say_title("Merhabalar "..pc.get_name())
say("")
local set = scp_kule.getSetting()
local n, p, x = scp_kule.pc_can_create()
if n != 0 then
say("Zaten bir oda kurmussun, tekrar oda kurmak için açık olan odanin kapanmasını beklemelisin.")
say("Oda Bilgilerin:")
say("Oda No: "..n-((set.map_index)*10000))
say("Oda Sifresi: "..p)
say("Odanın Kapanmasına Kalan Süre: "..LIB_duration(x))
wait()
return
end
-- Remain Time Disabled -- --
local remainTime = pc.getqf("scp_kule_time")+set.remain_time-get_global_time()
if remainTime>0 then
say("Bir oda açtıktan sonra toplam "..LIB_duration(set.remain_time).."beklemelisin.")
say("")
say("Tekrar oda açman için kalan bekleme süren: "..LIB_duration(remainTime))
say("")
wait()
return
end
say("Oda kurmak için öncelikle bir sifre belirlemen gerekiyor.")
say("")
say_reward("Sadece rakamlardan olusan 7 haneli bir sifre belirleyiniz.")
say_reward("Iptal etmek için geçersiz bir sifre girebilirsiniz.")
say("")
say_reward("Gerekenleri sagliyorsaniz direkt odaya isinlanacaksiniz!")
local sifre = tonumber(input())
setskin(0)
if sifre==nil or sifre<1000000 or sifre>9999999 then syschat("<Giris Kontrolü> Geçersiz sifre girdiniz.") return end
local control = scp_kule.check_pc(1)
if control == 1 then
if not scp_kule.check_pc(2) then return end
local x = get_map_base_x(set.map_index)+set.base_coor_local[1]*100
local y = get_map_base_y(set.map_index)+set.base_coor_local[2]*100
d.new_jump(set.map_index, x, y, true)
-- Remain Time -- --
pc.setqf("scp_kule_time", get_global_time())
d.setf("sifre", sifre)
d.setf("level", 1)
d.setf("lgt", get_global_time())
d.exit_all2(set.open_time)
d.setf("creator", pc.get_player_id())
local blib = set.boss_lib
d.spawn_mob(blib[1], blib[2], blib[3])
notice_multiline("<Lusifer> Boss'u alt edin ve ödülünüzü alın!", d.big_notice)
notice_all(pc.get_name().." Şeytan Kulesi'nde oda açtı!")
return
elseif control == 2 then
syschat("<Giris Kontrolü> Oda kurmak için leveliniz yeterli degil.")
return
elseif control == 3 then
syschat("<Giris Kontrolü> Oda kurmak için leveliniz çok fazla.")
return
elseif control == 4 then
syschat("<Giris Kontrolü> Oda kurmak için yeterli yanginiz bulunmuyor.")
return
elseif control == 5 then
syschat("<Giris Kontrolü> Oda kurmak için gerekli nesneye/nesne sayısına sahip değilsiniz.")
return
elseif control == 6 then
syschat("<Giris Kontrolü> Ticaret pencerelerini kapatmalisiniz.")
return
end
end
when Whisper_DeadBully.timer begin -- V4
send_whisper(pc.get_player_id(), "[Zindan Bilgilendirme]", "Şeytan Kulesi'ndeki bekleme süreniz dolmuştur, tekrar oda açabilirsiniz.")
end
when 20348.chat."Odaya Katıl" with scp_kule.isValidCahnnel(pc.get_channel_id()) and scp_kule.isOutside() begin
if not scp_kule.isSystemOpen() then
setskin(0)
syschat("Sistem, yönetici tarafından kapatılmıştır.")
return
end
if (pc.getqf("lst_pass")+15>get_time() and not pc.is_gm()) then setskin(0) syschat("<Giris Kontrolü> İki şifre denemesi arasinda 15 saniye beklemeniz gerekiyor.") return end
say_title("Merhabalar "..pc.get_name())
say("")
say("Açik olan bir odaya girmek için öncelikle oda numarasini girmelisin.")
say("")
say("")
local oda_no = tonumber(input())
if oda_no==nil or oda_no<0 or oda_no>9999 then setskin(0) syschat("<Giris Kontrolü> Geçersiz oda numarasi girdiniz.") return end
local set = scp_kule.getSetting()
oda_no = oda_no+(set.map_index*10000)
if d.find(oda_no) and (d.getf_from_map_index("register_"..pc.get_player_id(), oda_no) == 1 or d.getf_from_map_index("creator", oda_no)==pc.get_player_id()) and d.getf_from_map_index("level", oda_no)!=0 then
setskin(0)
d.pc_warp(oda_no)
return
end
say_title("Merhabalar "..pc.get_name())
say("")
say(oda_no-(set.map_index*10000).." numarali oda için oda sifresini giriniz.")
say("")
say("")
local sifre = tonumber(input())
setskin(0)
if sifre==nil or sifre<1000000 or sifre>9999999 then syschat("<Giris Kontrolü> Geçersiz sifre girdiniz.") return end
if d.getf_from_map_index("sifre", oda_no) == sifre then
local control = scp_kule.check_pc(1)
if control == 1 then
local dl = d.getf_from_map_index("level", oda_no)
if dl == 0 or get_global_time()>(d.getf_from_map_index("lgt", oda_no)+set.open_time-10) then syschat("<Giris Kontrolü> Bu odaya artık girilemez.") return end
if not scp_kule.check_pc(2) then return end
pc.delqf("lst_pass")
d.setf_from_to_index("register_"..pc.get_player_id(), 1, oda_no)
d.pc_warp(oda_no)
return
elseif control == 2 then
syschat("<Giris Kontrolü> Giris için yeterli leveliniz bulunmuyor.")
return
elseif control == 3 then
syschat("<Giris Kontrolü> Giris için leveliniz çok fazla.")
return
elseif control == 4 then
syschat("<Giris Kontrolü> Giris için yeterli yanginiz bulunmuyor.")
return
elseif control == 5 then
syschat("<Giris Kontrolü> Odaya katılmak için gerekli nesneye sahip değilsiniz.")
return
elseif control == 6 then
syschat("<Giris Kontrolü> Ticaret pencerelerini kapatmalisiniz.")
return
else
syschat("<Giris Kontrolü> Bir sorun oluştu!.")
return
end
else
pc.setqf("lst_pass", get_time())
syschat("<Giris Kontrolü> Oda numarasini ve ya sifresini yanlis girdiniz.")
end
end
when 20348.chat."GM:: Oda Kapat" with pc.is_gm() and scp_kule.isValidCahnnel(pc.get_channel_id()) and scp_kule.isOutside() begin
say_title("GM:: Oda Kapat")
say("")
say("Kapatılacak oda numarasını gir:")
say("")
local odaNo = tonumber(input()) or -1
if odaNo<0 then return end
local set = scp_kule.getSetting()
odaNo = odaNo+(set.map_index*10000)
d.exit_all2(1, odaNo)
end
-- Remain Time -- --
when 20348.chat."GM:: Bekleme Süresi Sıfırla" with pc.is_gm() and scp_kule.isValidCahnnel(pc.get_channel_id()) and scp_kule.isOutside() begin
setskin(0)
pc.delqf("scp_kule_time")
cleartimer("Whisper_DeadBully") -- V4
end
---------------------------------------------------------------------------------------------------------NPC END
when 1093.kill with scp_kule.is_this_dungeon() and d.getf("level") == 1 begin
d.setf("level", 0)
if d.getf("notSelf") == 1 then notice_all(pc.get_name().." ve odasındakiler, Lusifer'i öldürdü!")
else notice_all(pc.get_name()..", Lusifer'i tek başına öldürdü!")
end -- V3
d.big_notice("20 saniye sonra oda kapatılacak!")
d.exit_all2(20)
end
end
end