[مساعدة] الأخطاء

Toxic_dino

Little Mouse
إذا كان سكربتك لا يعمل, يمكنك وضعه في هذا الموضوع و إخبارنا عن المشكلة.
يصف هذا الموضوع أنواع كثيرة من الأخطاء التي يمكن أن تحدث معك، ويعطيك كيفية إصلاحها أو منعها من الحدوث.
اذا كنت قد صادفت خطا في السكربت الخاص بك, يرجى قراءة هذا الموضوع لمحاولة ايجاد حل لها. اذا كنت لا تزال بحاجة الى المساعدة, قم بنشر السكربت بأكمله ردًا على هذا الموضوع (في علامات [ quote] او موقع خارجي مثل PasteBin), إشرح ما سيحدث, و اذكر الخطأ الذي ضهر لك.
__
حتوي بعض رسائل الأخطاء رقم السطر التي يمكن استخدامها لإيجاد سطر الكود المتسبب في الخطا. قد لا يكون الخطا بالضبط في ذلك السطر, ربما ايضا في احدى الاسطر المجاورة.

نصيحة جيدة لتصحيح النصوص البرمجية و معرفة مكان خطأها بطباعة المتغيرات وغيرها من المعلومات في مراحل مختلفة من النصوص البرمجية. وهذا قد يكون مفيداً لمعرفة إذا كان المتغير يحمل ماكنت تتوقعه، إذا كان نص, رقم ألخ, هذا لا يصلح السكربت الخاص بك، ولكن سيساعدك على تحديد ما هو الخطأ و سبب وقوعه.
__
خطأ شائع عندما لا تعمل دالة بشكل صحيح لأنه تم إعادة تعريفها مجدداً (مكرر). أخر تعريف للدالة سيحل محل السابق، لذلك على سبيل المثال هنا يوجد اثنين من eventPlayerEmotes يعني أن اخر واحد هو الوحيد الذي سيعمل فعلاً
__
الرمز Lua
_
Code:
function eventEmotePlayed(name,emote)
tfm.exec.giveCheese(name)
end

function eventEmotePlayed(name,emote)
print("This one has redefined the above function, so only this one will work.")--هذا قد اعاد تعريف الدالة اعلاه, لذلك هذا هو الذي سيعمل فقط.
end
لحل هذه المشكلة, عليك فقط دمج محتويات هاتين الدالتين.
الرمز Lua
Code:
function eventEmotePlayed(name)
    tfm.exec.giveCheese(name)
    print("This will work!")--هذا سيعمل
end
____
تحتوي الأخطاء الواردة أدناه على أمثلة لأنواع الأخطاء المختلفة ووصف موجز. إذا لم يتم إدراج خطأ معين، يرجى نشره وسيتم إدراجه لاحقًا.
____

Init هو اختصار لعبارة "initialisation" بمعنى التهيئة, يعني ان الكود لم يتم تشغيله بشكل صحيح كما تم تحميله.
[•] Attempt to call nil.
يحدث هذا الخطأ عندما يكون هناك سطر يحتوي على متغير غير معرف. يحدث هذا عادة عندما لا يتم انشاء المتغير بشكل صحيح, او بعض الوظائف لم يتم تشغيلها.
الرمز Lua

Code:
print(test)-- تجربة
test="Hello."
مثال اخر يستطيع ان يحدث به هذا الخطأ وهو خطأ الاحرف الكبيرة. Lua حساسة جدًا, لذا اذا حاولت كتابة اسم متغير او دالة بحرف كبير ستحاول لوا استدعاء شيئ اخر مماثل لحجم الاحرف التي كتبتها.
الرمز Lua
Code:
Print("Test.")
-- تجربة
[•] Index expected, got nil.
محاولة تحديد أو استدعاء عنصر في جدول غير موجود سوف يسبب خطأ مثل هذا.
الرمز Lua
Code:
tbl[1] = "This will break, since tbl doesn't exist."
--هذا سيحطم, لان الجدول غير موجود.
[•] ')' expected (to close '(' at line [num])
اذا حدث هذا الخطا, معناه انه هناك اقواس مفقودة في الدالة.
الرمز Lua
print("Hi
Code:
print("Hi
[•] '' expected.
في حين حدوث هذا الخطأ يمكن أن ينتج في العديد من الحالات المختلفة، والأكثر شيوعا هو عند استخدام عبارة elseif عندما لا يكون هناك if.
الرمز Lua
Code:
elseif 1>2 then
    print("There's no opening if statement.")--لا توجد if مفتوحة.
end
[•] Multiple points.
الأرقام يمكن أن يكون لها فقط نقطة عشرية واحدة، في محاولة للحصول على نقط عشرية متعددة في رقم واحد سيعود هذا بخطأ.
الرمز Lua
Code:
--نقطة عشرية واحدة, هذا جيد.
20.43

--نقط عشرية متعددة, هذا خطأ.
20.43.9.1
[•] Unfinished (long) comment/string.
علامة الاقتباس المزدوجة (") يجب اغلاقها في كل الاحوال المستعملة فيها. اذا كانت رسالة الخطأ تحتوي على long comment/string, فإن استخدام الاقواس المستطيلة [[...]] هو سبب الخطأ.
الرمز Lua

Code:
text="This is a variable definition that is never finished. --هذا المتغير لن ينتهي ابدًا
--[[مثال, هذا تعليق غير مغلق
--[[ This is a comment that isn't ever closed, for example.
[•] Nesting of [[...]] is deprecated.
الاقواس المستطيلة [[...]] لا يمكن أن يكون لها اقواس مستطيلة أخرى في الداخل.
الرمز Lua
Code:
--[[ This is a comment [[ This is inside the comment. ]] This is the end of the comment.]]
--[[ هذا تعليق [[ هذا داخل التعليق. ]] هذه نهاية التعليق.]]
[•] Attempt to index ? (a nil value).
يحدث هذا الخطأ عندما يُحاول إستخدام عنصر في جدول، ولكن لا يمكن العثور عليه.
الرمز Lua
Code:
tbl={}
print(tbl[1])
[•] Null
هذا خطا بسبب خطا في Module API ويصعب حلها. لا يمكن تشغيل البرامج النصية احيانا في بعض الغرف.
____

[•] Attempt to concatenate [data] and [data].
لا يمكن ان تكون أنواع البيانات المختلفة متصلة جنبا الى جنب مع.. المشغل باستثناء السلاسل والأرقام.
الرمز Lua
Code:
--هذا سيعمل.
"Text "..34

--هذا لن يعمل.
{"this","is","a","table"}.."string"
nil..{"table"}
nil.."string"
function().."string"
[•] Invalid key to 'next'.
يحدث هذا الخطأ عندما تحتوي الدالة next() على مفتاح غير صالح يحاول الانتقال إليه. هذا هو الأكثر شيوعا عند محاولة إزالة عنصر من جدول أثناء التكرار من خلال pairs()، كما تستخدم الدلة next()
الرمز Lua
Code:
tbl={Something=true,somethingelse=true}

for k,v in pairs(tbl) do
    tbl[k]=nil
end
[•] Attempt to perform arithmetic on a [data] value.
أنواع البيانات المختلفة لا يمكن أن يكون لها أي حساب إلا إذا كانوا أرقام.
الرمز Lua
Code:
{"table"}+4
[•] Attempt to compare [data] with [data].
لا يمكن تنفيد الحسابات على أنواع البيانات المختلفة, لا يمكن مقارنتها برموز المقارنة (اكبر>اصغر).
الرمز Lua
Code:
if {"table"} > 4 then
    print("This will give an error.")--هذا سيعطينا خطأ
end
[•] [data] expected, got [data].
عندما يكون من المتوقع نوع متغير معين في دالة ولكن يتم إعطاء واحد آخر، سيحدث هذا خطأ.
الرمز Lua
Code:
for key,value in pairs("string") do
    print("The for loop above is expecting a table.")--الحلقة أعلاه تتوقع جدولًا
end
[•] Lua destroyed : Runtime can't exceed 40 ms in 4 seconds !
لوا دمرت: وقت التشغيل لا يمكن أن تتجاوز 40 مللي ثانية في 4 ثوان!
الرمز Lua
Code:
function eventLoop()
    for i=1,1000000 do
        --هذا سيسبب خطأ.
    end
end
[•] Lua destroyed: Runtime too long!
لوا دمرت: وقت التشغيل طويل جدا!
الرمز Lua
Code:
for i=1,10000000000 do
    --هذا سيسبب خطأ.
end
____

نادرا ما تتسبب أخطاء الوسيطة في إيقاف النص البرمجي (السكربت) من العمل والعمل كمزيد من التحذير بأن شيئا ما لا يعمل بشكل صحيح.
[•] Argument must be integer.
يحدث هذا الخطأ عندما تتوقع في دالة عددا صحيحا ولكن تتلقى نوع بيانات آخر. على سبيل المثال، tfm.exec.movePlayer (name، "text"، 200) من مفترض ان تكون الوسيطة الثانية رقماً.
____

[•] vm error: java.lang.ArrayIndexOutOfBoundsException: 256
هذا الخطأ يمكن أن يكون ناجما عن أشياء متعددة، ولكن أكثر شيوعا عندما يتكرر شيء إلى أجل غير معين. مثال قد يكون استدعاء دالة لنفسها.
الرمز Lua
Code:
function a()
    a()
end
a()
[•] You don't have the right to use this function.
يتم تعطيل بعض الدوال من استدعاءها في بيت القبيلة، بما في ذلك ما يلي.
الرمز Lua
Code:
tfm.exec.chatMessage()
system.newTimer()
system.removeTimer()
system.saveFile()
system.loadFile()
tfm.exec.addImage ()
tfm.exec.removeImage ()
tfm.exec.giveConsumables ()
 
Last edited by a moderator:

Maivs

Retired AR Sentinel
شكرًأ على الموضوع

يُثبت نظرًا لأهميته

الرجاء عدم الخروج عن سياق الموضوع او رفع المواضيع القديمة دون ضرورة
 
Top
"Dev-TR" theme by Soulzone