Toxic_dino
Little Mouse
إذا كان سكربتك لا يعمل, يمكنك وضعه في هذا الموضوع و إخبارنا عن المشكلة.
يصف هذا الموضوع أنواع كثيرة من الأخطاء التي يمكن أن تحدث معك، ويعطيك كيفية إصلاحها أو منعها من الحدوث.
اذا كنت قد صادفت خطا في السكربت الخاص بك, يرجى قراءة هذا الموضوع لمحاولة ايجاد حل لها. اذا كنت لا تزال بحاجة الى المساعدة, قم بنشر السكربت بأكمله ردًا على هذا الموضوع (في علامات [ quote] او موقع خارجي مثل PasteBin), إشرح ما سيحدث, و اذكر الخطأ الذي ضهر لك.
__
حتوي بعض رسائل الأخطاء رقم السطر التي يمكن استخدامها لإيجاد سطر الكود المتسبب في الخطا. قد لا يكون الخطا بالضبط في ذلك السطر, ربما ايضا في احدى الاسطر المجاورة.
نصيحة جيدة لتصحيح النصوص البرمجية و معرفة مكان خطأها بطباعة المتغيرات وغيرها من المعلومات في مراحل مختلفة من النصوص البرمجية. وهذا قد يكون مفيداً لمعرفة إذا كان المتغير يحمل ماكنت تتوقعه، إذا كان نص, رقم ألخ, هذا لا يصلح السكربت الخاص بك، ولكن سيساعدك على تحديد ما هو الخطأ و سبب وقوعه.
__
خطأ شائع عندما لا تعمل دالة بشكل صحيح لأنه تم إعادة تعريفها مجدداً (مكرر). أخر تعريف للدالة سيحل محل السابق، لذلك على سبيل المثال هنا يوجد اثنين من eventPlayerEmotes يعني أن اخر واحد هو الوحيد الذي سيعمل فعلاً
__
الرمز Lua
_
لحل هذه المشكلة, عليك فقط دمج محتويات هاتين الدالتين.
الرمز Lua
____
تحتوي الأخطاء الواردة أدناه على أمثلة لأنواع الأخطاء المختلفة ووصف موجز. إذا لم يتم إدراج خطأ معين، يرجى نشره وسيتم إدراجه لاحقًا.
____
Init هو اختصار لعبارة "initialisation" بمعنى التهيئة, يعني ان الكود لم يتم تشغيله بشكل صحيح كما تم تحميله.
[•] Attempt to call nil.
يحدث هذا الخطأ عندما يكون هناك سطر يحتوي على متغير غير معرف. يحدث هذا عادة عندما لا يتم انشاء المتغير بشكل صحيح, او بعض الوظائف لم يتم تشغيلها.
الرمز Lua
مثال اخر يستطيع ان يحدث به هذا الخطأ وهو خطأ الاحرف الكبيرة. Lua حساسة جدًا, لذا اذا حاولت كتابة اسم متغير او دالة بحرف كبير ستحاول لوا استدعاء شيئ اخر مماثل لحجم الاحرف التي كتبتها.
الرمز Lua
-- تجربة
[•] Index expected, got nil.
محاولة تحديد أو استدعاء عنصر في جدول غير موجود سوف يسبب خطأ مثل هذا.
الرمز Lua
--هذا سيحطم, لان الجدول غير موجود.
[•] ')' expected (to close '(' at line [num])
اذا حدث هذا الخطا, معناه انه هناك اقواس مفقودة في الدالة.
الرمز Lua
print("Hi
[•] '' expected.
في حين حدوث هذا الخطأ يمكن أن ينتج في العديد من الحالات المختلفة، والأكثر شيوعا هو عند استخدام عبارة elseif عندما لا يكون هناك if.
الرمز Lua
[•] Multiple points.
الأرقام يمكن أن يكون لها فقط نقطة عشرية واحدة، في محاولة للحصول على نقط عشرية متعددة في رقم واحد سيعود هذا بخطأ.
الرمز Lua
[•] Unfinished (long) comment/string.
علامة الاقتباس المزدوجة (") يجب اغلاقها في كل الاحوال المستعملة فيها. اذا كانت رسالة الخطأ تحتوي على long comment/string, فإن استخدام الاقواس المستطيلة [[...]] هو سبب الخطأ.
الرمز Lua
[•] Nesting of [[...]] is deprecated.
الاقواس المستطيلة [[...]] لا يمكن أن يكون لها اقواس مستطيلة أخرى في الداخل.
الرمز Lua
[•] Attempt to index ? (a nil value).
يحدث هذا الخطأ عندما يُحاول إستخدام عنصر في جدول، ولكن لا يمكن العثور عليه.
الرمز Lua
[•] Null
هذا خطا بسبب خطا في Module API ويصعب حلها. لا يمكن تشغيل البرامج النصية احيانا في بعض الغرف.
____
[•] Attempt to concatenate [data] and [data].
لا يمكن ان تكون أنواع البيانات المختلفة متصلة جنبا الى جنب مع.. المشغل باستثناء السلاسل والأرقام.
الرمز Lua
[•] Invalid key to 'next'.
يحدث هذا الخطأ عندما تحتوي الدالة next() على مفتاح غير صالح يحاول الانتقال إليه. هذا هو الأكثر شيوعا عند محاولة إزالة عنصر من جدول أثناء التكرار من خلال pairs()، كما تستخدم الدلة next()
الرمز Lua
[•] Attempt to perform arithmetic on a [data] value.
أنواع البيانات المختلفة لا يمكن أن يكون لها أي حساب إلا إذا كانوا أرقام.
الرمز Lua
[•] Attempt to compare [data] with [data].
لا يمكن تنفيد الحسابات على أنواع البيانات المختلفة, لا يمكن مقارنتها برموز المقارنة (اكبر>اصغر).
الرمز Lua
[•] [data] expected, got [data].
عندما يكون من المتوقع نوع متغير معين في دالة ولكن يتم إعطاء واحد آخر، سيحدث هذا خطأ.
الرمز Lua
[•] Lua destroyed : Runtime can't exceed 40 ms in 4 seconds !
لوا دمرت: وقت التشغيل لا يمكن أن تتجاوز 40 مللي ثانية في 4 ثوان!
الرمز Lua
[•] Lua destroyed: Runtime too long!
لوا دمرت: وقت التشغيل طويل جدا!
الرمز Lua
____
نادرا ما تتسبب أخطاء الوسيطة في إيقاف النص البرمجي (السكربت) من العمل والعمل كمزيد من التحذير بأن شيئا ما لا يعمل بشكل صحيح.
[•] Argument must be integer.
يحدث هذا الخطأ عندما تتوقع في دالة عددا صحيحا ولكن تتلقى نوع بيانات آخر. على سبيل المثال، tfm.exec.movePlayer (name، "text"، 200) من مفترض ان تكون الوسيطة الثانية رقماً.
____
[•] vm error: java.lang.ArrayIndexOutOfBoundsException: 256
هذا الخطأ يمكن أن يكون ناجما عن أشياء متعددة، ولكن أكثر شيوعا عندما يتكرر شيء إلى أجل غير معين. مثال قد يكون استدعاء دالة لنفسها.
الرمز Lua
[•] You don't have the right to use this function.
يتم تعطيل بعض الدوال من استدعاءها في بيت القبيلة، بما في ذلك ما يلي.
الرمز Lua
يصف هذا الموضوع أنواع كثيرة من الأخطاء التي يمكن أن تحدث معك، ويعطيك كيفية إصلاحها أو منعها من الحدوث.
اذا كنت قد صادفت خطا في السكربت الخاص بك, يرجى قراءة هذا الموضوع لمحاولة ايجاد حل لها. اذا كنت لا تزال بحاجة الى المساعدة, قم بنشر السكربت بأكمله ردًا على هذا الموضوع (في علامات [ 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
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
في حين حدوث هذا الخطأ يمكن أن ينتج في العديد من الحالات المختلفة، والأكثر شيوعا هو عند استخدام عبارة elseif عندما لا يكون هناك if.
الرمز Lua
Code:
elseif 1>2 then
print("There's no opening if statement.")--لا توجد if مفتوحة.
end
الأرقام يمكن أن يكون لها فقط نقطة عشرية واحدة، في محاولة للحصول على نقط عشرية متعددة في رقم واحد سيعود هذا بخطأ.
الرمز Lua
Code:
--نقطة عشرية واحدة, هذا جيد.
20.43
--نقط عشرية متعددة, هذا خطأ.
20.43.9.1
علامة الاقتباس المزدوجة (") يجب اغلاقها في كل الاحوال المستعملة فيها. اذا كانت رسالة الخطأ تحتوي على 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.
الاقواس المستطيلة [[...]] لا يمكن أن يكون لها اقواس مستطيلة أخرى في الداخل.
الرمز Lua
Code:
--[[ This is a comment [[ This is inside the comment. ]] This is the end of the comment.]]
--[[ هذا تعليق [[ هذا داخل التعليق. ]] هذه نهاية التعليق.]]
يحدث هذا الخطأ عندما يُحاول إستخدام عنصر في جدول، ولكن لا يمكن العثور عليه.
الرمز Lua
Code:
tbl={}
print(tbl[1])
هذا خطا بسبب خطا في Module API ويصعب حلها. لا يمكن تشغيل البرامج النصية احيانا في بعض الغرف.
____
[•] Attempt to concatenate [data] and [data].
لا يمكن ان تكون أنواع البيانات المختلفة متصلة جنبا الى جنب مع.. المشغل باستثناء السلاسل والأرقام.
الرمز Lua
Code:
--هذا سيعمل.
"Text "..34
--هذا لن يعمل.
{"this","is","a","table"}.."string"
nil..{"table"}
nil.."string"
function().."string"
يحدث هذا الخطأ عندما تحتوي الدالة next() على مفتاح غير صالح يحاول الانتقال إليه. هذا هو الأكثر شيوعا عند محاولة إزالة عنصر من جدول أثناء التكرار من خلال pairs()، كما تستخدم الدلة next()
الرمز Lua
Code:
tbl={Something=true,somethingelse=true}
for k,v in pairs(tbl) do
tbl[k]=nil
end
أنواع البيانات المختلفة لا يمكن أن يكون لها أي حساب إلا إذا كانوا أرقام.
الرمز Lua
Code:
{"table"}+4
لا يمكن تنفيد الحسابات على أنواع البيانات المختلفة, لا يمكن مقارنتها برموز المقارنة (اكبر>اصغر).
الرمز Lua
Code:
if {"table"} > 4 then
print("This will give an error.")--هذا سيعطينا خطأ
end
عندما يكون من المتوقع نوع متغير معين في دالة ولكن يتم إعطاء واحد آخر، سيحدث هذا خطأ.
الرمز Lua
Code:
for key,value in pairs("string") do
print("The for loop above is expecting a table.")--الحلقة أعلاه تتوقع جدولًا
end
لوا دمرت: وقت التشغيل لا يمكن أن تتجاوز 40 مللي ثانية في 4 ثوان!
الرمز Lua
Code:
function eventLoop()
for i=1,1000000 do
--هذا سيسبب خطأ.
end
end
لوا دمرت: وقت التشغيل طويل جدا!
الرمز 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()
يتم تعطيل بعض الدوال من استدعاءها في بيت القبيلة، بما في ذلك ما يلي.
الرمز 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: