Cannn6161 1
Cannn6161
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Mt2Hizmet 1
Mt2Hizmet
melankolıa18 1
melankolıa18
romegames 1
romegames
Krutzo 1
Krutzo
shrpnl 1
shrpnl
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Cevaplanmadı RunState: LUA_ERROR hatası

  • Konuyu başlatan Konuyu başlatan odinogluthorr
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 4
  • Görüntüleme Görüntüleme 304

odinogluthorr

Level 4
TM Üye
Üye
Katılım
27 Şub 2024
Konular
108
Mesajlar
324
Çözüm
16
Online süresi
4mo 9d
Reaksiyon Skoru
53
Altın Konu
0
TM Yaşı
2 Yıl 3 Ay 8 Gün
Başarım Puanı
101
MmoLira
7,913
DevLira
12
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Kod:
SYSERR: Jul 31 01:22:01 :: RunState: LUA_ERROR: [string "orc_maze"]:10: attempt to compare nil with number
SYSERR: Jul 31 01:22:01 :: WriteRunningStateToSyserr: LUA_ERROR: quest orc_maze.start click

bu hatayı alıyorum nasıl düzelir
 

Ekli dosyalar

Bak, syserr ne diyor: orc_maze:10: attempt to compare nil with number. Yani diyor ki, "orc_maze quest'inin içinde, bir sayıyla 'nil' yani 'boş' bir değeri karşılaştırmaya çalışıyorum ve bu yüzden hata veriyorum". click dediğine göre de bu bir NPC'ye tıkladığında veya bir menüden seçim yaptığında oluyor.

Şimdi koda baktığımda, bu hatanın kaynağı %99 ihtimalle şurası:

Oyuncunun zindana girip giremeyeceğini kontrol eden if pc.getf("orc_maze","dungeon_time") > get_time() then satırı.

Sorun da şu: Bir oyuncu bu zindana daha önce hiç girmediyse veya zindandan hiç çıkış yapmadıysa, onun "dungeon_time" diye bir hafıza kaydı (flag'ı) olmaz. Sistem de bu olmayan kaydı okumaya çalıştığında nil yani 'boş' bir değer alır. Sonra da bu 'boş' değeri, o anki zamanla (get_time()) karşılaştırmaya çalışınca "boş değerle sayıyı karşılaştıramam" diye hata verir.

Çözümü çok basit

Bu hatayı düzeltmek için, o pc.getf'ten sonra or 0 ekleyeceksin. Bu, sisteme "eğer bu kayıt boşsa, onu 0 olarak kabul et ve karşılaştırmayı öyle yap" demektir.

Yani, quest dosyasındaki şu satırı bul:if pc.getf("orc_maze","dungeon_time") > get_time() then

Ve onu şu şekilde değiştir:if (pc.getf("orc_maze","dungeon_time") or 0) > get_time() then

Bu küçük parantez ve or 0 eklemesi, o nil hatasını tamamen ortadan kaldıracaktır.

Bu değişikliği yapıp questi yeniden okut (/reload q veya ./qc orc_maze.quest), sorunun çözülecektir.

Hatta bu mantığı, quest içinde sayısal bir değer beklediğin bütün pc.getf'li karşılaştırmalarda kullanabilirsin, bu bir genel kuraldır, ileride başka hatalar almanı engeller.

Hadi kolay gelsin.
 
dediğiniz gibi yaptım devam ediyor yine aynı hata
 
dediğiniz gibi yaptım devam ediyor yine aynı hata
Düzenlenmiş hali:

[CODE title="Lua"]quest orc_maze begin
state start begin
------ fonksiyonlar ----------------


function get_settings()
local orc_maze_dungeon_settings = {}
orc_maze_dungeon_settings.map_index = 352 --Mapindex
orc_maze_dungeon_settings.girisitem = 71130 --Mapindex
orc_maze_dungeon_settings.girisitemadet = 1 --Mapindex
orc_maze_dungeon_settings.base_cord = {12170,8100} --Base Kordinaten
orc_maze_dungeon_settings.outside_entry_pos = {64,3343,7750} --Mapindex, Exit Position (Eisland)
orc_maze_dungeon_settings.need_level = 30 --Ab wann ist der Dungeon betretbar.
orc_maze_dungeon_settings.max_level = 60 --Ab wann ist der Dungeon betretbar.
orc_maze_dungeon_settings.DurationLoopTimer = 10 --Welchen intervall die Level und Missionen gepruft werden sollen. (Empfohlen 45)
orc_maze_dungeon_settings.key_level_2 = 30312 --KeyVnum fur die 2.Ebene --Frostschlussel
orc_maze_dungeon_settings.FakeBossVnum = 6209 --MobVnum von 10.Ebene --orc_maze(6191)
orc_maze_dungeon_settings.BossVnum = 693 --MobVnum von 10.Ebene --orc_maze(6191)
orc_maze_dungeon_settings.Position_level_10 = { 73,1145 } --Position ebene 10 (BossZone) --Besiege orc_maze, den Konig uber Frost und Eis.
return orc_maze_dungeon_settings
end

function GrupKontrol()
local user_fail_level = {}
local user_fail_level2 = {}
local user_fail_cd = {}
local user_fail_cr = {}
local pids = {party.get_member_pids()}
local set = orc_maze.get_settings()
local need_level = set.need_level
local max_level = set.max_level
local girisitemadet = set.girisitemadet

for i = 1, table.getn(pids), 1 do
q.begin_other_pc_block(pids)
if pc.get_level() < need_level then
table.insert(user_fail_level, table.getn(user_fail_level) +1, pc.get_name())
end
if pc.get_level() > max_level then
table.insert(user_fail_level2, table.getn(user_fail_level2) +1, pc.get_name())
end
if (pc.getf("orc_maze","dungeon_time") or 0) > get_time() then
table.insert(user_fail_cd, table.getn(user_fail_cd) +1, pc.get_name())
end
if pc.getqf("orc_maze_regis") != 1 then
table.insert(user_fail_cr, table.getn(user_fail_cr) +1, pc.get_name())
end
q.end_other_pc_block()
end
if table.getn(user_fail_level) == 0 and table.getn(user_fail_level2) == 0 and table.getn(user_fail_cd) == 0 and table.getn(user_fail_cr) == 0 then
return true
end
say_npc()
say("Grubun bazı üyeleri ")
say("içeriye girmeye uygun değil.")
if table.getn(user_fail_level) >= 1 then
say(need_level.." seviyeye ulaşmamış:")
for x = 1, table.getn(user_fail_level), 1 do
say(color(1,1,0), " "..user_fail_level[x])
end
end
if table.getn(user_fail_level2) >= 1 then
say(max_level.." seviyeye ulaşmamış:")
for x = 1, table.getn(user_fail_level2), 1 do
say(color(1,1,0), " "..user_fail_level2[x])
end
end
if table.getn(user_fail_cd) >= 1 then
say("Giriş süresi dolmayanlar :")
for x = 1, table.getn(user_fail_cd), 1 do
say(color(1,1,0), " "..user_fail_cd[x])
end
end
if table.getn(user_fail_cr) >= 1 then
say("Kayıt olmayanlar :")
for x = 1, table.getn(user_fail_cr), 1 do
say(color(1,1,0), " "..user_fail_cr[x])
end
end
return false
end

function Temizle()
local d_index = d.get_map_index()
clear_server_timer("orc_maze_timeup",d_index)
clear_server_timer("orc_maze_15left",d_index)
clear_server_timer("orc_maze_10left",d_index)
clear_server_timer("orc_maze_5left",d_index)
clear_server_timer("orc_maze_out",d_index)
clear_server_timer("orc_maze_slotcounter",d_index)
clear_server_timer("orc_maze_lv2",d_index)
clear_server_timer("orc_maze_lv3",d_index)
clear_server_timer("orc_maze_lv4",d_index)
d.setf("party_leader_pid",0)
d.setf("dungeon_endtime",0)
d.setf("orc_maze_dead",0)
d.setf("orc_maze_key1",0)
d.setf("level",0)
d.setf("sure_doldu",0)
d.clear_regen()
d.kill_all()
end

------------------------------------
when 20394.chat."Kayıt Ol!" begin
local regis = select("Kayıt ol", "Daha sonra")
if regis == 1 then
if pc.getqf("orc_maze_regis") == 1 then
say_npc()
say("")
say("Ork Labirenti'ne zaten kayıt yapmışsınız.")
return
end
if pc.count_item(71130) < 1 then
say_npc()
say("")
say_item_vnum(71130)
say("1 adet "..item_name(71130).." ihtiyacın var.")
return
end
say_npc()
say("Ork Labirenti'ne gerekli kaydın yapıldı.")
say("Artık içeri girebilirsin.")
pc.remove_item(71130,1)
pc.setqf("orc_maze_regis",1)
else
return
end
end

when 20394.chat."Ork Labirenti" begin
if game.get_event_flag("orc_maze_open") == 0 then
if pc.is_gm() then
say_title("Event Flag : orc_maze_open ")
end
say("Dungeon henüz aktif değil!")
return
end
local set = orc_maze.get_settings()
local girisitem = set.girisitem
local girisitemadet = set.girisitemadet
local need_level = set.need_level
local max_level = set.max_level
local isparty = false
if party.is_party() then
isparty = true
end
if isparty then
if not party.is_leader() then
say("Bu işlemi sadece grup lideri yapabilir.")
return
end
say_npc()
say("")
say("Ork Labirenti'ne girmek ")
say("istediğinize emin misiniz ?")
say("")
local gir = select(locale.yes,locale.no)
if gir == 1 then
if orc_maze.GrupKontrol() == false then
return
else
--orc_maze.GrupSok()
--pc.remove_item(71130,1)
timer("orc_maze_grupgiris",2)
end
else
return
end
else
if pc.get_level() < need_level then
say_npc()
say("")
say("İçeriye sadece "..need_level.." seviye ve üstü oyuncular girebilir.")
return
end
if pc.get_level() > max_level then
say_npc()
say("")
say("İçeriye sadece "..max_level.." seviye ve altı oyuncular girebilir.")
return
end
if pc.getqf("orc_maze_regis") != 1 then
say_npc()
say("")
say("Ork Labirenti'ne kayıt yapmamışsınız.")
say("Lütfen Kayıt Ol kısmını kullanın.")
return
end
if (pc.getf("orc_maze","dungeon_time") or 0) > 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("orc_maze","dungeon_time") or 0)-get_time()))
return
end
say_npc()
say("")
say("Ork Labirenti'ne girmek ")
say("istediğine emin misin ?")
say("")
local gir = select(locale.yes,locale.no)
if gir == 1 then
--pc.remove_item(71130,1)
timer("orc_maze_sologiris",2)
else
return
end
end
end


-- [diğer kodlar aynı şekilde devam eder, sadece pc.getf("orc_maze","dungeon_time") veya benzeri satırlarda or 0 eklenmiştir]

when orc_maze_sologiris.timer begin
local set = orc_maze.get_settings()
local cord = set.base_cord
local start_pos = set.Position_level_10
local girisitemadet = set.girisitemadet
local girisitem = set.girisitem
d.join_coords(set.map_index,(cord[1]),(cord[2]))
orc_maze.Temizle()
d.setf("party_leader_pid",pc.get_player_id())
d.setf("dungeon_endtime",get_global_time()+60*30*1)
server_timer("orc_maze_timeup",60*30*1,d.get_map_index())
server_timer("orc_maze_15left",15*60*1,d.get_map_index())
d.spawn_mob_dir(30103, 138, 918,1)
end

when orc_maze_grupgiris.timer begin
local set = orc_maze.get_settings()
local cord = set.base_cord
local start_pos = set.Position_level_10
local girisitemadet = set.girisitemadet
local girisitem = set.girisitem
d.new_jump_party(set.map_index,(cord[1]),(cord[2]))
orc_maze.Temizle()
d.setf("party_leader_pid",pc.get_player_id())
party.setf("orc_maze_mapindex",d.get_map_index())
server_timer("orc_maze_timeup",60*30*1,d.get_map_index())
server_timer("orc_maze_15left",15*60*1,d.get_map_index())
d.setf("dungeon_endtime",get_global_time()+60*30*1)
d.spawn_mob_dir(30103, 138, 918,1)
end


-- ve diğer kısımlar aynen devam ediyor --

end
end
[/CODE]
 
Kod:
SYSERR: Jul 31 01:22:01 :: RunState: LUA_ERROR: [string "orc_maze"]:10: attempt to compare nil with number
SYSERR: Jul 31 01:22:01 :: WriteRunningStateToSyserr: LUA_ERROR: quest orc_maze.start click

bu hatayı alıyorum nasıl düzelir
Hatanın olduğu satırı şu hale getir:

lua

local kills = pc.getqf("kill_count") or 0
if kills >= 10 then
-- işlemler
end
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst