DeletedUser4248
Guest
كيف حالكم ؟ ان شاء الله كلكم بخير
أدري العنوان غريب شوي و فكرة الموضوع غريبة , بس راح تعتادون عليها و السكريبت الي راح تكتشفوه اغرب شوي , تدرون ليش ؟
لانها أفكار عربية
===> المقدمة
ماذا يعني سكريبت مرجعي ؟ : هو عبارة عن تحليل و شرح كيف صنع سكريبت بسيط , ستكون هذه المواضيع بديل عن دورات تعليم لغة الجافاسكريبت , لانها ستتميز بالاختصار و اعطاء نقاط الاساسية و الافكار التي يجب التقيد بها , اما باقي التفاصيل و المعارف الاخرى فكل عضو يبحث عنها بنفسه , و بنفس الوقت ستحتوي على سكريبت يمكن الاستفادة منه .
ماذا يعني ملخص المعلومات ؟ : هذا اسم السكريبت الذي نحن بصدد عرضه ثم تحليله و شرحه .
ماذا يعني ملخص المعلومات ؟ : هذا اسم السكريبت الذي نحن بصدد عرضه ثم تحليله و شرحه .
===> السكريبت
في الواقع هذا السكريبت يمكن استعماله لعدة اشياء مثلا :
- انت لاعب في نسخة أجنبية و تدو نشر ملخص عن حالتك في هذا المنتدى , لاظهار مستواك (الهايط بالعامية ) , ما عليك الا الظغط على السكريبت و سيقوم بكتابة ملخص عن حالتك.
- انت قائد لقبيلة و تود معرفة حالة اعضاء , ما عليك الا طلب الملخص السريع بواسطة هذا السكريبت يتعرف كيف ستتصرف , اما ترسل له دعم على حسب عدد الهجمات او ترسل له نقاط تميز خخ
بطاقة فنية
- اسم السكريبت : ملخص معلومات الحساب
- شرح مختصر : يقوم هذا السكريبت بكتابة مقالة مختصرة عن حالة الحساب
- نوع السكريبت : البار السريع
- العضوية الخاصة : لا يحتاج
- آخر نسخة مجرب فيها : 8.4
- المتصفح : Firefox
صورة
السكريبت
HTML:
javascript:
var head = document.getElementsByTagName("head")[0];
var gamedata = JSON.parse(head.innerHTML.match(/var game_data = (\{.+\})\;/)[1]);
var result;
name = gamedata.player.name;
villages = gamedata.player.villages;
points = gamedata.player.points;
rank = gamedata.player.rank;
incomings = gamedata.player.incomings;
premium = gamedata.player.premium;
account_manager = gamedata.player.account_manager;
farm_manager = gamedata.player.farm_manager;
world = gamedata.world;
mark = gamedata.market;
majorVersion = gamedata.majorVersion;
result = 'يلعب العضو (' + name + ') في النسخة (' + mark + ') و بالتحديد في العالم (' + world + ') رقم الاصدار (' + majorVersion + '), عدد قراه (' + villages + ') و نقاطه (' + points + ') و ترتيبه (' + rank + '), حاليا عدد الهجمات وصل لـ (' + incomings + ') هجمة , العضوية الخاصة (' + premium + ') , مساعد النهب (' + farm_manager + '), مدير الحساب (' + account_manager + '), تم اخذ هذه المعلومات بتاريخ ().' ;
alert(result);
void(0);
===> التحليل
ترى راح يعجبكم الدرس لانه سريع جداً , مثلنا تماماً خخ
-> أساسيات في تصميم سكريبت للعبة
من الأخير أي سكريبت توده تصميم على اللعبة يجب ان يبدأ بهذه الكلمة السحرية
هي توضيح ان سنستعمل لغة الجافا سكريبت
و يجب ان ينتهي بهذه ايضاً
لاني لما نسيتها أول مرة , السكريبت اشتغل لكن قام بفتح صفحة بيضاء و كتب فيها النتائج و هذا غير جميل , لاني اريد منه ان يقوم بالتغيرات على نفس الصفحة
PHP:
javascript:
و يجب ان ينتهي بهذه ايضاً
PHP:
void(0);
-> امكانيات لغة الجافاسكريبت
لازم ما ننسى ان لغة الجافاسكريبت هي عبارة عن تفاعل بين المُتَصفِح و البرنامج التصفُح فقط , فمهما تطورنا في لغة الجاسكريبت فلن نستطيع اختراق اللعبة مثلا , أدري الكثير عنده أحلام كبيرة في اختراق اللعبة و لا حتى التأثير في مجرياتها مثلا تقديم الوقت , زيادة الانتاج و هذه الاشياء من الخرافات ..
-> المتغيرات
-> ماهي المعلومات المقدمة من طرف اللعبة و كيف الحصول عليه ؟
هذا الكود الموجود في هيدر صفحات اللعبة , يحتوي على كم هائل من المعلومات سنحاول شرح بعضها الآن , المعلومات التي يحتوي عليها هذا الكود هي :
عند استدعاء اي قيمة , يجب مراعات مستوىها , في مثلا لو قيمة مثل اسم الاعب (name) هي موجودة في المستوى الثالث يجب المرور بمتغير الاعب (player) و قبله معلومات اللعبة (game_data)
لنحصل على جملة التالية :
معلومات اللعبة - معلومات الاعب - اسم الاعب
ليكون الكود بهذا الشكل :
-> أنواع القيم الموجودة في الجافاسكريبت
لنبدأ برؤية ما هي الأنواع الرئيسية الثلاثة في جافاسكريبت:
نوع الرقمي : يعني ان القيمة هي عبارة عن عدد، سواء كان صحيحا او عشري، موجب او سلب، وما إلى ذلك. باختصار، كل انوع الأرقام.لتعيين نوع الرقمية إلى متغير، تكتب فقط رقم واحد:
, عدد القرى هو 159.
نوع الرموز و الحروف :وهذا النوع يمثل أي نص. يمكننا استعمال احدى الطرقتين:
الطريقة الاولى بواسطة فواصل الاقتباس من النوع منفرد
الطريقة الثانية بواسطة فواصل الاقتباس المزدوجة
كلهما صحيح , ينصح التقيد بنوع واحد اثناء البرمجة
نوع القيم المنطقية : هي قيمة تحتاج تشغيل المخ بكل أجهزته ^^
يمكن نتطرق لها لاحق , خاصة كيف صناعتها و ما هي فوائدها
لكن نعرفعها هي عبارة عن مصطلح صحيح (true) و خاطئ (false)
مثال هل العضو هذا يستعمل العضوية الخاصة
هذا العضو لا يستعمل مدير الحساب
تلك هي ثلاثة الأنواع الرئيسية. وهناك آنواع اخرى اعتقد.
-> كتابة السكريبت
نجي لجزء الاخير , و هو كتابة السكريبت او بالاحرى تركيب السكريبت لاننا تطرقنا لكل تفاصيله سابقاً
كما ذكرتنا سابقاً
علينا ان نضع اولاً الكلمة
نضيف فراغ ثم نضع هذين السطرين
في الواقع هذه السطرين مهمين جداً , فهما من يحددان اين توجد معلومات اللعبة
فالسطر الاول يستدعي الهدير الذي يوجد في المعلومات
و السطر الثاني يقوم بمعاجلتها لكي تتمكن من استغللها
سنقوم بالتحليلها بالتفصيل و شرحهما كما ينبغي في وقت لاحق ان شاء الله
بعدين نقوم بحجز متغيرات , اولهم متغير النتيجة الذي سيقوم بترتيب المعلومات التي سنعرضها
ثم نختار النتائج التي نود عرضها بالطريقة التي وضحتها في الأعلى
انا اخترت هذه المعلومات عشان يناسب وظيفة السكريبت الي صممته
نقوم الآن بجمع المتغيرات في المتغير الذي اعطينها اسم result , انا قمت بترتيب المتغيرات ثم اضفت بينها نصوص لكي يبدو السكريبت واضح . لينتج لنا هذا
ملاحظة , يتم جمع بين المتغيرات و النصوص بالعلامة +
في النهاية نأمر بأن يتم عرض المتغير result في شكل نافذة بواسة الدالة
ليصبح لدينا
و أخيراً نترك فراغ واحد ثم نكتب
===> الى هنا أنتهي..
أولا، ماذا نعني "بالمتغير" ؟ هو ببساطة حجز مساحة التخزين في الذاكرة ، فبعد ما يتم تعريف المتغير ، يمكنك أن تبدأ في تخزين البيانات و اعطائه قيمة من دون مشكلة.
لتعريف او حجز متغير ، يجب أن نحدد له اسم. من المهم أن نلاحظ أن اسم المتغير يمكن أن تحتوي على أحرف أبجدية رقمية فقط، و بعض الرموز احيانا أي من A إلى Z والأرقام من 0 إلى 9، الرمزين (_) والدولار ($) هي أيضا المسموحة. شيء آخر: اسم متغير لا يمكن أن يبدأ بأرقام، كما انه لا يمكن استغملات اسماء لمتغيرات محجوزة من طرف اللغة نفسها مثل الكلمات الرئيسية المستخدمة من قبل جافا سكريبت. على سبيل المثال، لا يمكنك إنشاء متغير var يدعى سترى أن يتم ، ولكن لكن يمكننا إنشاء متغير باسم Var_ .
بخصوص الكلمات الرئيسية المستخدمة من قبل جافا سكريبت، يمكنك أن تسميها "الكلمات المحجوزة"، لأنه ببساطة ليس لديك الحق في استخدامها كأسماء متغير. وسوف تجد في هذه الصفحة (باللغة الإنجليزية) جميع الكلمات المحجوزة من قبل جافا سكريبت.
لتعريف متغير، تكتب ببساطة السطر التالي:
PHP:
var myVariable;
- لغة جافا سكريبت حساسة لحالة الحروف ، يجب الحرص على عدم الخلط بين الحروف الكبيرة و الحروب الصغيرة و ترتيبها .
-> ماهي المعلومات المقدمة من طرف اللعبة و كيف الحصول عليه ؟
في الواقع هي برمجة بواسطة لغة الجافاسكريبت متوفرة بشكل ضروري في كل الحسابات , تستعملها اللعبة نفسها قبل ان نستعملها نحن , تحتوي على الكثير من المعلومات مثل معلومات الاعب , معلومات القرية , معلومات العالم و الاصدار و لمشاهدة هذه المعلومات يكفي ان نظغط بالزر يمين على اي مكان في صفحة داخل اللعبة , ثم نظغط اظهر مصدر الصفحة , عندما تفتح لك نافدة جديدة تحتوي على اكواد الصفحة , في الأول الصفحة و بالتحديد في السطر رقم 12 سيبدأ هذا الكود :
HTML:
//<=!=[=C=D=A=T=A=[
var sds = false;
var image_base = "http://cdn2.tribalwars.net/graphic/";
var mobile = false;
var mobile_on_normal = false;
var game_data = {"player":{"id":"21747","name":"vk4500abdo","ally_id":"24","villages":"1","points":"2976","rank":"219","incomings":"0","sitter_id":"0","premium":true,"account_manager":false,"farm_manager":false},"village":{"id":5257,"name":"\u0623\u0631\u064a\u062d\u0627","coord":"456|529","con":"K54 ","bonus":null,"group":"0","buildings":{"main":"20","farm":"19","storage":"23","place":"1","barracks":"10","church":"0","church_f":"0","smith":"20","wood":"20","stone":"23","iron":"20","market":"11","stable":"6","wall":"15","garage":"3","hide":"10","snob":"1","statue":"0"}},"link_base":"\/game.php?village=5257&screen=","link_base_pure":"\/game.php?village=5257&screen=","csrf":"910a","world":"aec1","market":"ae","RTL":true,"version":"15281 8.4","majorVersion":"8.4","screen":"train","mode":null};
ScriptAPI.url = '/game.php?village=5257&screen=api&ajax=save_script';
ScriptAPI.version = parseFloat(game_data.majorVersion);
var userCSS = false;
var isIE7 = false;
var topmenuIsAlwaysVisible = false;
topmenuIsAlwaysVisible = true;
$(document).ready( function() {
UI.ToolTip( $( '.group_tooltip' ), { delay: 1000 } );
});
//]=]=>
هذا الكود الموجود في هيدر صفحات اللعبة , يحتوي على كم هائل من المعلومات سنحاول شرح بعضها الآن , المعلومات التي يحتوي عليها هذا الكود هي :
- متغير لجولات السرعة (sds)
- متغير لحزمة الجرافيك الاساسية (image_base)
- متغير لمن يتصل من هاتف (mobile )
- متغير لمن يتصل من هاتف لكن وضع عادي (mobile_on_normal)
- متغير لمعلومات اللعبة (game_data)
- متغير لمعلومات الاعب (player)
- اي دي الاعب (id)
- اسم الاعب (name)
- اي دي القبيلة (ally_id)
- عدد القرى (villages)
- النقاط (points)
- الترتيب (rank)
- عدد الهجمات (incomings)
- اي دي حاضن الحساب (sitter_id)
- العضوية الخاصة (premium)
- مدير الحساب (account_manager)
- مساعد الهب (farm_manager)
- متغير لمعلومات القرية (village)
- اي دي القرية (id)
- اسم القرية (name)
- الاحداثيات (coord)
- القارة (con)
- اضافية او لا (bonus)
- مجموعة القرية (group)
- المباني (buildings)
- لكل مبنى تعريف خاص و القيمة تعبر عن مستواه
- العالم (world)
- النسخة (market)
- اتجاه اللغة (RTL)
- النسخة (version)
- النسخة (majorVersion)
- الصفحة الحالية (screen)
- متغير لمعلومات الاعب (player)
عند استدعاء اي قيمة , يجب مراعات مستوىها , في مثلا لو قيمة مثل اسم الاعب (name) هي موجودة في المستوى الثالث يجب المرور بمتغير الاعب (player) و قبله معلومات اللعبة (game_data)
لنحصل على جملة التالية :
معلومات اللعبة - معلومات الاعب - اسم الاعب
ليكون الكود بهذا الشكل :
PHP:
var player_name = game_data.player.name;
-> أنواع القيم الموجودة في الجافاسكريبت
لنبدأ برؤية ما هي الأنواع الرئيسية الثلاثة في جافاسكريبت:
نوع الرقمي : يعني ان القيمة هي عبارة عن عدد، سواء كان صحيحا او عشري، موجب او سلب، وما إلى ذلك. باختصار، كل انوع الأرقام.لتعيين نوع الرقمية إلى متغير، تكتب فقط رقم واحد:
PHP:
var villages = 159;
نوع الرموز و الحروف :وهذا النوع يمثل أي نص. يمكننا استعمال احدى الطرقتين:
الطريقة الاولى بواسطة فواصل الاقتباس من النوع منفرد
PHP:
var player_name = 'vk4500abdo'
PHP:
var player_name = "vk4500abdo"
نوع القيم المنطقية : هي قيمة تحتاج تشغيل المخ بكل أجهزته ^^
يمكن نتطرق لها لاحق , خاصة كيف صناعتها و ما هي فوائدها
لكن نعرفعها هي عبارة عن مصطلح صحيح (true) و خاطئ (false)
مثال هل العضو هذا يستعمل العضوية الخاصة
PHP:
var player_premium = 'true';
PHP:
var player_account_manager = 'false';
-> كتابة السكريبت
نجي لجزء الاخير , و هو كتابة السكريبت او بالاحرى تركيب السكريبت لاننا تطرقنا لكل تفاصيله سابقاً
كما ذكرتنا سابقاً
علينا ان نضع اولاً الكلمة
HTML:
javascript:
HTML:
var head = document.getElementsByTagName("head")[0];
var gamedata = JSON.parse(head.innerHTML.match(/var game_data = (\{.+\})\;/)[1]);
فالسطر الاول يستدعي الهدير الذي يوجد في المعلومات
و السطر الثاني يقوم بمعاجلتها لكي تتمكن من استغللها
سنقوم بالتحليلها بالتفصيل و شرحهما كما ينبغي في وقت لاحق ان شاء الله
بعدين نقوم بحجز متغيرات , اولهم متغير النتيجة الذي سيقوم بترتيب المعلومات التي سنعرضها
HTML:
var result;
انا اخترت هذه المعلومات عشان يناسب وظيفة السكريبت الي صممته
HTML:
name = gamedata.player.name;
villages = gamedata.player.villages;
points = gamedata.player.points;
rank = gamedata.player.rank;
incomings = gamedata.player.incomings;
premium = gamedata.player.premium;
account_manager = gamedata.player.account_manager;
farm_manager = gamedata.player.farm_manager;
world = gamedata.world;
mark = gamedata.market;
majorVersion = gamedata.majorVersion;
نقوم الآن بجمع المتغيرات في المتغير الذي اعطينها اسم result , انا قمت بترتيب المتغيرات ثم اضفت بينها نصوص لكي يبدو السكريبت واضح . لينتج لنا هذا
HTML:
result = 'يلعب العضو (' + name + ') في النسخة (' + mark + ') و بالتحديد في العالم (' + world + ') رقم الاصدار (' + majorVersion + '), عدد قراه (' + villages + ') و نقاطه (' + points + ') و ترتيبه (' + rank + '), حاليا عدد الهجمات وصل لـ (' + incomings + ') هجمة , العضوية الخاصة (' + premium + ') , مساعد النهب (' + farm_manager + '), مدير الحساب (' + account_manager + '), تم اخذ هذه المعلومات بتاريخ ().' ;
ملاحظة , يتم جمع بين المتغيرات و النصوص بالعلامة +
في النهاية نأمر بأن يتم عرض المتغير result في شكل نافذة بواسة الدالة
PHP:
alert();
ليصبح لدينا
HTML:
alert(result);
PHP:
void(0);
===> الى هنا أنتهي..