[8.24|لا]: [سكريبت مرجعي] ملخص المعلومات !

الحالة
مغلق و غير مفتوح للمزيد من الردود.

DeletedUser4248

Guest
hostk13403540211.png


كيف حالكم ؟ ان شاء الله كلكم بخير

أدري العنوان غريب شوي و فكرة الموضوع غريبة , بس راح تعتادون عليها و السكريبت الي راح تكتشفوه اغرب شوي , تدرون ليش ؟

لانها أفكار عربية :rolleyes:


===> المقدمة
ماذا يعني سكريبت مرجعي ؟ : هو عبارة عن تحليل و شرح كيف صنع سكريبت بسيط , ستكون هذه المواضيع بديل عن دورات تعليم لغة الجافاسكريبت , لانها ستتميز بالاختصار و اعطاء نقاط الاساسية و الافكار التي يجب التقيد بها , اما باقي التفاصيل و المعارف الاخرى فكل عضو يبحث عنها بنفسه , و بنفس الوقت ستحتوي على سكريبت يمكن الاستفادة منه .


ماذا يعني ملخص المعلومات ؟ : هذا اسم السكريبت الذي نحن بصدد عرضه ثم تحليله و شرحه .


===> السكريبت

في الواقع هذا السكريبت يمكن استعماله لعدة اشياء مثلا :


  • انت لاعب في نسخة أجنبية و تدو نشر ملخص عن حالتك في هذا المنتدى , لاظهار مستواك (الهايط بالعامية :p) , ما عليك الا الظغط على السكريبت و سيقوم بكتابة ملخص عن حالتك.
  • انت قائد لقبيلة و تود معرفة حالة اعضاء , ما عليك الا طلب الملخص السريع بواسطة هذا السكريبت يتعرف كيف ستتصرف , اما ترسل له دعم على حسب عدد الهجمات او ترسل له نقاط تميز خخ



بطاقة فنية


  • اسم السكريبت : ملخص معلومات الحساب
  • شرح مختصر : يقوم هذا السكريبت بكتابة مقالة مختصرة عن حالة الحساب
  • نوع السكريبت : البار السريع
  • العضوية الخاصة : لا يحتاج
  • آخر نسخة مجرب فيها : 8.4
  • المتصفح : Firefox


صورة
y1j44329.png


السكريبت
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);
لاني لما نسيتها أول مرة , السكريبت اشتغل لكن قام بفتح صفحة بيضاء و كتب فيها النتائج و هذا غير جميل , لاني اريد منه ان يقوم بالتغيرات على نفس الصفحة


-> امكانيات لغة الجافاسكريبت
لازم ما ننسى ان لغة الجافاسكريبت هي عبارة عن تفاعل بين المُتَصفِح و البرنامج التصفُح فقط , فمهما تطورنا في لغة الجاسكريبت فلن نستطيع اختراق اللعبة مثلا , أدري الكثير عنده أحلام كبيرة في اختراق اللعبة :p و لا حتى التأثير في مجرياتها مثلا تقديم الوقت , زيادة الانتاج و هذه الاشياء من الخرافات ..

-> المتغيرات
أولا، ماذا نعني "بالمتغير" ؟ هو ببساطة حجز مساحة التخزين في الذاكرة ، فبعد ما يتم تعريف المتغير ، يمكنك أن تبدأ في تخزين البيانات و اعطائه قيمة من دون مشكلة.

لتعريف او حجز متغير ، يجب أن نحدد له اسم. من المهم أن نلاحظ أن اسم المتغير يمكن أن تحتوي على أحرف أبجدية رقمية فقط، و بعض الرموز احيانا أي من 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&amp;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)
هذه بعض المعلومات التي يمكن استغللها و الهناك الكثير من المعلومات , و سنطرق لها مستقبلاً ان شاء الله , فمثلا في صفحة التدريب هناك معلومات خاصة بها عن الوحدات و تكلفتها و اكيد سنجد في صفحات اخرى معلومات اخرى بهذا الشكل .

عند استدعاء اي قيمة , يجب مراعات مستوىها , في مثلا لو قيمة مثل اسم الاعب (name) هي موجودة في المستوى الثالث يجب المرور بمتغير الاعب (player) و قبله معلومات اللعبة (game_data)
لنحصل على جملة التالية :
معلومات اللعبة - معلومات الاعب - اسم الاعب
ليكون الكود بهذا الشكل :
PHP:
 var player_name = game_data.player.name;

-> أنواع القيم الموجودة في الجافاسكريبت
لنبدأ برؤية ما هي الأنواع الرئيسية الثلاثة في جافاسكريبت:

نوع الرقمي : يعني ان القيمة هي عبارة عن عدد، سواء كان صحيحا او عشري، موجب او سلب، وما إلى ذلك. باختصار، كل انوع الأرقام.لتعيين نوع الرقمية إلى متغير، تكتب فقط رقم واحد:
PHP:
var villages = 159;
, عدد القرى هو 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);

===> الى هنا أنتهي..



 

DeletedUser

Guest
مـآ كملت آلموضوع لآني داخل من آلجوآل ,
متى مـآ دخلت من الجهاز عدلت ردي هذآ ,
 

DeletedUser23328

Guest
حقا سكريبت مفيد جدا لكل قيادي او اي لاعب تاني , من جهة يختصر الوقت ومن جهة يعطيك المعلومات المهمة فقط

+ شرح رائع والله , هل الامور تعتبر اسسيات الجافاسكريبت وهي الاهم
مشكور اخي عبدو :)
 

DeletedUser

Guest
تسلم ي عبدو على الموضوع الرائع

ثانكس لعيونك ومشكور على تعبك حبيب قلبي

.....
 

DeletedUser

Guest

الله يعطيك العافيه مجهود متعووب عليه جدا

والله أنا بفرح كثير ،، لما أشوف لاعبين (مبرمجين بالمعنى الأصح )
تميزو في النسخه العربيه

إذا بتواصل على هذا المجهود ،، رح تنقل النسخه العربيه نقله كبيره جدا
لتطوير من مهارات الاعب


فكره السكربت ممتازه ورائعه
وخصوصا انك ذكرت تحتها (أفكار عربيه) ^_^
بدايه رائعه من الجميع


رح اعدل تعديل بسيط وخفيف على السكرت ليستفيد منه الجميع
يبدو لي بأنك وااضعه لشرح كبدايه للمبتدين في تعلم اللغه


لاحظت في الخانه الأخيره التاريخ من الصوره

فارغ


لو نظيف هذا التعديل الطفيف
قبل المتغير (result) المتغير التابع لمتغيرات alert


PHP:
k=document.getElementById("serverDate");
e=k.innerText;



ويضاف في حقل التاريخ المتغير e

+e+




PHP:
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;
k=document.getElementById("serverDate");
e=k.innerHTML;

result = 'يلعب العضو (' + name + ') في النسخة (' + mark + ') و بالتحديد في العالم (' + world + ') رقم الاصدار (' + majorVersion + '), عدد قراه (' + villages + ') و نقاطه (' + points + ') و ترتيبه (' + rank + '), حاليا عدد الهجمات وصل لـ (' + incomings + ') هجمة , العضوية الخاصة (' + premium + ') , مساعد النهب (' + farm_manager + '), مدير الحساب (' + account_manager +'), تم اخذ هذه المعلومات بتاريخ ('+e+')' ;
alert(result);

void(0);


وأشكرك مره أخرى على هذا المجهود الرائع


 

DeletedUser4248

Guest
مشكورين كلكم على مروركم , و أتمنى انكم استفدتوا حقاً

بخصوص الوقت , ما حبيت اعقد الامور
انا عملت الوقت , لكن الطريقة الي اعطتني أفضل
و ان شاء الله راح أستمر في تطوير هذا السكريبت
عشان اوضح أكثر الدوالة الشرطية
و منها راح يصير السكريبت بدل ما يكتب
true يكتب فعال
و بدل ما يكتب (ae) يكتب النسخة العربية

و الكثير من التطويرات , افكر حتى اربطه بقواعد بينات و موقع خاص بالمغتربين خارج النسخة
عشان يتعرفوا على بعضهم

الافكار موجودة , و ان شاء الله نتعلم كيف نطبقها و نبهر بهم من يعتقد ان العرب ما منهم فائدة ^^

 

DeletedUser

Guest
hostk13403540211.png


كيف حالكم ؟ ان شاء الله كلكم بخير

أدري العنوان غريب شوي و فكرة الموضوع غريبة , بس راح تعتادون عليها و السكريبت الي راح تكتشفوه اغرب شوي , تدرون ليش ؟

لانها أفكار عربية :rolleyes:


===> المقدمة
ماذا يعني سكريبت مرجعي ؟ : هو عبارة عن تحليل و شرح كيف صنع سكريبت بسيط , ستكون هذه المواضيع بديل عن دورات تعليم لغة الجافاسكريبت , لانها ستتميز بالاختصار و اعطاء نقاط الاساسية و الافكار التي يجب التقيد بها , اما باقي التفاصيل و المعارف الاخرى فكل عضو يبحث عنها بنفسه , و بنفس الوقت ستحتوي على سكريبت يمكن الاستفادة منه .


ماذا يعني ملخص المعلومات ؟ : هذا اسم السكريبت الذي نحن بصدد عرضه ثم تحليله و شرحه .


===> السكريبت

في الواقع هذا السكريبت يمكن استعماله لعدة اشياء مثلا :


  • انت لاعب في نسخة أجنبية و تدو نشر ملخص عن حالتك في هذا المنتدى , لاظهار مستواك (الهايط بالعامية :p) , ما عليك الا الظغط على السكريبت و سيقوم بكتابة ملخص عن حالتك.
  • انت قائد لقبيلة و تود معرفة حالة اعضاء , ما عليك الا طلب الملخص السريع بواسطة هذا السكريبت يتعرف كيف ستتصرف , اما ترسل له دعم على حسب عدد الهجمات او ترسل له نقاط تميز خخ



بطاقة فنية


  • اسم السكريبت : ملخص معلومات الحساب
  • شرح مختصر : يقوم هذا السكريبت بكتابة مقالة مختصرة عن حالة الحساب
  • نوع السكريبت : البار السريع
  • العضوية الخاصة : لا يحتاج
  • آخر نسخة مجرب فيها : 8.4
  • المتصفح : firefox


صورة
y1j44329.png


السكريبت
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);
لاني لما نسيتها أول مرة , السكريبت اشتغل لكن قام بفتح صفحة بيضاء و كتب فيها النتائج و هذا غير جميل , لاني اريد منه ان يقوم بالتغيرات على نفس الصفحة


-> امكانيات لغة الجافاسكريبت
لازم ما ننسى ان لغة الجافاسكريبت هي عبارة عن تفاعل بين المُتَصفِح و البرنامج التصفُح فقط , فمهما تطورنا في لغة الجاسكريبت فلن نستطيع اختراق اللعبة مثلا , أدري الكثير عنده أحلام كبيرة في اختراق اللعبة :p و لا حتى التأثير في مجرياتها مثلا تقديم الوقت , زيادة الانتاج و هذه الاشياء من الخرافات ..

-> المتغيرات
أولا، ماذا نعني "بالمتغير" ؟ هو ببساطة حجز مساحة التخزين في الذاكرة ، فبعد ما يتم تعريف المتغير ، يمكنك أن تبدأ في تخزين البيانات و اعطائه قيمة من دون مشكلة.

لتعريف او حجز متغير ، يجب أن نحدد له اسم. من المهم أن نلاحظ أن اسم المتغير يمكن أن تحتوي على أحرف أبجدية رقمية فقط، و بعض الرموز احيانا أي من 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&amp;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)
هذه بعض المعلومات التي يمكن استغللها و الهناك الكثير من المعلومات , و سنطرق لها مستقبلاً ان شاء الله , فمثلا في صفحة التدريب هناك معلومات خاصة بها عن الوحدات و تكلفتها و اكيد سنجد في صفحات اخرى معلومات اخرى بهذا الشكل .

عند استدعاء اي قيمة , يجب مراعات مستوىها , في مثلا لو قيمة مثل اسم الاعب (name) هي موجودة في المستوى الثالث يجب المرور بمتغير الاعب (player) و قبله معلومات اللعبة (game_data)
لنحصل على جملة التالية :
معلومات اللعبة - معلومات الاعب - اسم الاعب
ليكون الكود بهذا الشكل :
PHP:
 var player_name = game_data.player.name;

-> أنواع القيم الموجودة في الجافاسكريبت
لنبدأ برؤية ما هي الأنواع الرئيسية الثلاثة في جافاسكريبت:

نوع الرقمي : يعني ان القيمة هي عبارة عن عدد، سواء كان صحيحا او عشري، موجب او سلب، وما إلى ذلك. باختصار، كل انوع الأرقام.لتعيين نوع الرقمية إلى متغير، تكتب فقط رقم واحد:
PHP:
var villages = 159;
, عدد القرى هو 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);

===> الى هنا أنتهي..




مشاء الله عليك رفعت راسي قدام الاجانب

بارك الله فيك
 

DeletedUser

Guest
تمت مراجعة السكربت , السكربت يعمل على الإصدار الحالي 8.14
 
الحالة
مغلق و غير مفتوح للمزيد من الردود.
أعلى