كيف عمل لعبة اون لاين
صفحة 1 من اصل 1 • شاطر
كيف عمل لعبة اون لاين
السلام عليكم ورحمة الله وبركاته
انا معاية النهاردة درس في غاية الروعة ولاكن هوا منقول من موقع ثاني
ول خلاني انقل الموضوع ان ادقدم بهذه المنتدا الى الامام
اهوا انا اتقلو اهو
الحين بنروح للروم الثاني بعد ما كون الاتصال هنا طريقة عمل غرفة للعب
تقدر تحدد انت عدد اللاعبين الي فيها مع المعلومية اني سمعت تقدر تخليها ل 32 لاعب لكن للحين انا سويت 2 وفي الثالث وقفت -_- يعني ما جربت يزبط لو لا
في الروم هذا لازم نظهر للاعب خيارين اما
Create room اصنع غرفة
Join room ادخل غرفة
هذا كود ل create طبعا يفضل وضعه في صورة او كلمة بخاصية LeftPressed او الضغط بزر الفارة اليسار
كود:
{
if (mplay_session_create('',2,''))
{
global.master = true;
// إذا صنعت غرفة للاعبين … مع المعلومية عدد لاعبين الروم تقدر تغيره بأي رقم بس حطه بدل الرقم 2 في الكود
و global.master مهمة وتعني الماستر حق الروم وهو الي سوى الروم
room_goto(*****);
// اذهب الى الروم ***** بدله باسم الروم
}
else
show_message('Failed to create a session.')
}
//إذا ما توفرت احد الخيارت يطلع رسالة خطأ
الكود بدون شرح
كود:
{
if (mplay_session_create('',2,''))
{
global.master = true;
room_goto(room8);
}
else
show_message('Failed to create a session.')
}
هذا كود ل join طبعا يفضل وضعه في صورة او كلمة بخاصية LeftPressed او الضغط بزر الفارة اليسار
كود:
{
if (mplay_session_find() > 0)
{
if (mplay_session_join(0,''))
{
global.master = false;
room_goto(room8);
}
else
show_message('Failed to join a session.')
}
else
show_message('No session available to join.')
}
ما أفضل شرحها تفصيليا لانها بتعور مخ المبتدئين لان فيها if الشرطية ثنتين
لكن هي بتوجه اللاعب لروم عشوائي باختصار
وهنا أمر اختياري تقدر تخلي اللاعب ينتظر الى ان يدخل لاعب آخر الروم بعدين يكمل وهذا هو الكود
تكتب الكود في الخاصية step في غرفة الانتظار
كود:
{
if (mplay_player_find() > 1)
room_goto_next();
معناته اذا صاروا اللاعبين في الغرفة أكثر من 1 روح للروم الي بعده زي ما قلنا قبل شوي تقدر تخليه يروح لروم معين مو لازم الروم الي بعده
الحين مبرووووك تم صناعة نصف اللعبة والباقي بسيط التعديل على الروم فقط واللاعبين
الحين نجي لسالفة التحكم باللاعبين
فكرته انك لازم تضيف شي اسمه controller او المتحكم طبعا تقدر تسميه أي شي مو لازم متحكم في هذا المتحكم عموما بنضيف فيه الأوامر بطريقة بسيطة
يعني باختصار في أوامر نستعملها بالجيم ماكر مثلا :
Sprite_index هذي الكلمة بنضيفها وبنحط لها قيمة بتصير هذي القيمة مثلا 1 هي الي تغير السبرايت وهكذا بتفهم أكثر مع المتابعة ^_*
في المتحكم نضيف ايفنت create
ونكتب كود
كود:
mplay_data_mode(false)
هذا الكود لتسريع أداء اللعب اون لاين (يقال لكني مو متأكد)
أما الآن في خاصية ال step نضع هذا الكود الجميل ^_^
كود:
{
while (mplay_message_receive(0))
{
messid = mplay_message_id();
val = mplay_message_value();
if (messid == 1)player1.x = val;
if (messid == 2)player1.y = val;
if (messid == 3)player1.direction = val;
if (messid == 4)player1.sprite_index = val;
if (messid == 5)player1.Health = val;
if (messid == 6)player1.image_xscale= val;
if (messid == 7)player1.vspeed= val;
if (messid == 8)player1.instance_create= val;
if (messid == 11)player2.x = val;
if (messid == 12)player2.y = val;
if (messid == 13)player2.direction = val;
if (messid == 14)player2.sprite_index = val;
if (messid == 15)player2.Health = val;
if (messid == 16)player2.image_xscale= val;
if (messid == 17)player2.vspeed= val;
if (messid == 18)player2.instance_create= val;
}
}
واااااااااااااااااااااااااااااااا ما هذا الكود ؟؟؟؟؟؟؟؟؟؟
قلت لنا كل شي بسيـــــــط !!!!!!
شوي شوي يا حبيبي هو بسيط يبي له تركيز شوي بس
كل لاعب لما يسوي حاجة في كود نكتبه له فائدته يرسل حركات اللاعب لجميع اللاعبين وهذا هو الكود
mplay_message_send(0,1,2)
0 معناها يرسل حركة اللاعب لكل اللاعبين لو بدلتها ب 1 بيرسل للاعب رقم 1 ولو بلتها ب 2 بيرسلها ل 2 وهكذا
1 هو رقم الأمر(ID) الي كان مكتوب فوق بنشرحه قريبا ان شاء الله
2 هي القيمة مثلا الأمر (1) كان الحركة لجهة اليمين ف (2) القيمة هي 2 بيتحرك الجسم 2 لجهة اليمين وهكذا …..
بتفهم أكثر مع المتابعة ما عليك ^_*
كود:
{
while (mplay_message_receive(0))
{
messid = mplay_message_id();
val = mplay_message_value();
if (messid == 1)player1.x = val;
if (messid == 4)player1.sprite_index = val;
if (messid == 6)player1.image_xscale= val;
if (messid == 7)player1.vspeed= val;
if (messid == 8)player1.instance_create= val;
if (messid == 11)player2.x = val;
if (messid == 14)player2.sprite_index = val;
if (messid == 16)player2.image_xscale= val;
if (messid == 17)player2.vspeed= val;
if (messid == 18)player2.instance_create= val;
}
}
مسحت الأوامر الي مو مستعملة وخليت المهمة عشان يبسط الموضوع ^_*
كود:
{
while (mplay_message_receive(0))
{
messid = mplay_message_id();
val = mplay_message_value();
//messid هي ال(ID) او رقم الأمر
// val هو قيمة الامر
if (messid == 1)player1.x = val;
// معنى الأمر هذا هو الحركة أفقيا أما الحركة راسيا فهي y يعني قيمة الاكس لو كانت +2 بتكون السرعة الى اتجاه اليمين 2 اما -2 بتكون السرعة لليسار 2
if (messid == 4)player1.sprite_index = val;
// هذا لتغيير السبرايت مكان val نكتب اسم السبرايت الي نبيه يتحول له
if (messid == 6)player1.image_xscale= val;
// هذا الأمر مفيد وهو لقلب الصورة يعني ما تحتاج صورة للشخصية من جهة اليمين و صورة من جهة اليسار لو بدلت القيمة ب 1 بتكون الصورة صحيحة اما لو بدلتها ب -1 بتكون مقلوبة وهذا الامر مهم بالنسبة لي
if (messid == 7)player1.vspeed= val;
// السرعة الأفقية شبيهة تماما ل x لهذا ما يحتاج توضيح نستعمل x افضل
if (messid == 8)player1.instance_create= val;
// اصنع اوبجيكت جديد وهذي مهمة لو كان البطل يطلق رصاص مثلا وفي مشروعي انا ما عملتها للآن للأسف لهذا جربها بنفسك ^____^
if (messid == 11)player2.x = val;
if (messid == 14)player2.sprite_index = val;
if (messid == 16)player2.image_xscale= val;
if (messid == 17)player2.vspeed= val;
if (messid == 18)player2.instance_create= val;
// نفس الي فوق مع اختلاف القيم ورقم اللاعب
}
}
هذا أهم شي في اللعبة المتحكم وهو بسيط تحتاج تتعلم كم أمر فقط
في المتحكم أيضا وفي خاصية ال step نكتب هذا الكود الاختياري
كود:
{
if (mplay_player_find() < 2)
{
show_message('Other player has stopped!');
mplay_session_end();
room_goto(*****);
}
}
لو بقى في الروم اقل من لاعب واحد روح للروم ****
ايضا يوجد أمر بسيط اختياري فائدته اذا كنت تريد اللاعب الثاني تطلع شخصيته لما يدخل الروم او تكون موجودة من البداية ؟
وهو بسيط يتالف من 4 اوامر كل وحدة سطر راجعه من المثال ^_*
موجود في ال controller---step---order3-8
الامر من 3-8
أما الآن مع كيفية وضع الحركات وتطبيق بسيط عن القيم في المتحكم
ولاحظ اننا نكتب الأمر انه يستوي للاعب نفسه وينرسل لجميع اللاعبين
كود:
if (global.master) exit;
// هذا الأمر مهم وهو لجعل اللاعب الثاني هو الي ينفذ هذي الأوامر
اما اذا كانت بعلامة تعجب هكذا if (!global.master) exit;
فهذي للاعب الأول
//keyboard left
if keyboard_check(vk_left)
//اذا ضغط الزر يسار
{
if (beat=false)
// هذي قيمة انا ضايفها معناها اذا كانت الشخصية ما تنفذ احدى الضربات
{
if (place_free(x-11,y)) {{x-=11}
// اذا كان المكان فاضي على اليسار اتجه لليسار بسرعة -11
mplay_message_send(0,11,x)
ارسل رسالة للاعبين بان اللاعب تحرك لليسار هنا الid 11 راجع فوق
والقيمة هنا x أي ان القيمة هنا 11 لاننا كتبنا x = 11 لو تلاحظ
mplay_message_send(0,14,sasukew)
//أيضا ارسل رسالة بال id 14 (وهو تغيير السبرايت) والقيمة هنا هي احدى السبرايت
{sprite_index=sasukew}
غير السبرايت الى المكتوب
{right=false left=true walk=true down=false up=false beat=false stand=false}
هذي قيم كاتبها أنا فائدتها معرفة السبرايت اذا كان متجه لليسار او اليمين او يضرب او … لو تبوا شرح لها ان شاء الله اوضع شرح
mplay_message_send(0,16,-1);
ارسل رسالة بال id 16 وهو عمل قلب للصورة و القيمة هنا -1 يعني اقلب الصورة
{image_xscale=-1}}}
}
هذا الكود بدون شرح
كود:
//keyboard left
if keyboard_check(vk_left)
{
if (beat=false)
{
if (place_free(x-11,y)) {{x-=11}
mplay_message_send(0,11,x)
mplay_message_send(0,14,sasukew)
{sprite_index=sasukew}
{right=false left=true walk=true down=false up=false beat=false stand=false}
mplay_message_send(0,16,-1);
{image_xscale=-1}}}
}
احدى الحركات للاعب الأول
كود:
if (!global.master) exit;
{
//keyboard left
if keyboard_check(vk_left)
{
if (beat=false)
{
if (place_free(x-7,y)) {{x-=7}
mplay_message_send(0,1,x)
mplay_message_send(0,4,luffyw)
{sprite_index=luffyw}
{right=false left=true walk=true down=false up=false beat=false stand=false}
mplay_message_send(0,6,-1);
{image_xscale=-1}}}
}
لاحظ انه نفس الي قبله مع وجود علامة التعجب if (!global.master) exit;
وتغييرال id لل id الخاصين باللعب الأول وتغير السبرايتز
أما الآن مع المثال وهو تعبت اكثر من 3 اسابيع لكن ما يغلى عليكم
قمت بارفاقه وأحب أقول يمنع النقل من دون ذكر المصدر
الحقوق محفوظة في المشروع يمنع تشيلها لكن ما أمانع انك تسوي لعبة أخرى اعتمادا على المشروع
تم الرفع على الميديا فاير حاليا توجد مشكلة في الارفاق
الباسورد TwilightPrince
http://www.mediafire.com/?32z8tk0x783uabr
حاااضر لأي سؤال الي عنده استفسار انا حاضر للمساعدة
جميع الحقوق محفوظة
أرجو من الي استفاد من الموضوع يرد ولو بكلمت شكرا
انا معاية النهاردة درس في غاية الروعة ولاكن هوا منقول من موقع ثاني
ول خلاني انقل الموضوع ان ادقدم بهذه المنتدا الى الامام
اهوا انا اتقلو اهو
اليوم حبيت أوضح شي بسيط عن كيف تسوي لعبة اون لاين وان شاء الله بكون في شرح ومثال شامل لكل الي بتحتاجه تقريبا تحتاج لانك تكون فاهم بلغة ال GML شوي لكن انا باوضح كل كود أكتبه ان شاء الله وهي السالفة بسيطة اللغة رائعة جدا وما يبي لها شي بس تركيز تقريبا الأكواد الي باستعملها 3 أكواد بسيطة تابع الموضوع للمزيد …..
هنا بعض الأسئلة و الأجوبة :
1- هل تعتبر هذي لعبة اون لاين ضخمة واي واحد يقدر يلعب معي ؟؟
حلو في البداية أحب اوضح انi للحين لا هذي اللعبة تقدر تلعبها مع واحد لو كان معك الآي بي حقه او تلعبها مع أي احد يستعمل نفس المودم الي معك
ولكن في الدروس القادمة ان شاء الله لو شفت متابعة نشرح كيف تسوي لعبة مع سيرفر
2- ما هو المشروع الذي ستوضح به الدرس ؟؟
هو مشروع عن لعبة كنت باسويها وهي تشمل شخصيات anime مشهورة من Naruto & onePiece & FairyTail & DragonBall
والشخصيات الي وضعتها هم لاعبين luffy & sasuke
أما الباقي الغير مبرمجين Vegoto & WhiteBeard
3- هل ستوضح لنا كيفية عمل لعبة اون لاين مع سيرفر ….. ؟؟
لو الموضوع جذب الأعضاء …..
أنا مستعد لكن حتى الآن أنا مو خبير فيها أعرف أسوي سيرفر لكن التحكم في الشخصيات صعب شوي
عموما انت بتحتاج شي اسمه 39dll وهو شبه معقد خصوصا لان ما فيه شروح له على الانترنت الا قليل
وللمعلومية الكثير من الشباب يتوقع السيرفر شي معقد
السيرفر عبارة عن برنامج يفضل تشغيله في جهاز قوي ونت قوي
لانه ينقل بيانات كل لاعب لكل اللاعبين لكن كلعبة بسيطة تقدر تخلي جهازك الشخصي سيرفر
4- لو انا ما اعرف لغة ال GML أقدر أتابع الدرس و أفهم ؟؟
أكيد انت بس تابع الموضوع وكل كود بنوضح ان شاء الله معناه
في البداية بتكون أوامر صعبة شوي لا تخاف كل ما نتقدم تبسط الاوامر ما تصعب ^_^ يعني لو فهمت البداية خلاص
5- لماذا لم تكمل المشروع ؟؟؟؟؟؟؟
للأسف أنا كنت فقط أريد التجربة لكني ما أبي اسوي لعبة محدودة أبي أسويها مع سيرفر ^___^
ولازم كلنا نخلي نظرنا فوق
نبدأ على بركة الله
اولا لازم نخلي كل واحد يشغل اللعبة يتصل وانواع الاتصال الي تقدر تسويها هي :
1-IPX
2- TCPIP
3- MODEM
4- SERIAL
لكن لأكون صادق معاكم للأسف كلها غير مقنعة كوسائل اتصال اون لاين لكن الأفضل TCPIP حتى الآن
أول شي لتكوين الاتصال هذا هو الكود
كود
هنا بعض الأسئلة و الأجوبة :
1- هل تعتبر هذي لعبة اون لاين ضخمة واي واحد يقدر يلعب معي ؟؟
حلو في البداية أحب اوضح انi للحين لا هذي اللعبة تقدر تلعبها مع واحد لو كان معك الآي بي حقه او تلعبها مع أي احد يستعمل نفس المودم الي معك
ولكن في الدروس القادمة ان شاء الله لو شفت متابعة نشرح كيف تسوي لعبة مع سيرفر
2- ما هو المشروع الذي ستوضح به الدرس ؟؟
هو مشروع عن لعبة كنت باسويها وهي تشمل شخصيات anime مشهورة من Naruto & onePiece & FairyTail & DragonBall
والشخصيات الي وضعتها هم لاعبين luffy & sasuke
أما الباقي الغير مبرمجين Vegoto & WhiteBeard
3- هل ستوضح لنا كيفية عمل لعبة اون لاين مع سيرفر ….. ؟؟
لو الموضوع جذب الأعضاء …..
أنا مستعد لكن حتى الآن أنا مو خبير فيها أعرف أسوي سيرفر لكن التحكم في الشخصيات صعب شوي
عموما انت بتحتاج شي اسمه 39dll وهو شبه معقد خصوصا لان ما فيه شروح له على الانترنت الا قليل
وللمعلومية الكثير من الشباب يتوقع السيرفر شي معقد
السيرفر عبارة عن برنامج يفضل تشغيله في جهاز قوي ونت قوي
لانه ينقل بيانات كل لاعب لكل اللاعبين لكن كلعبة بسيطة تقدر تخلي جهازك الشخصي سيرفر
4- لو انا ما اعرف لغة ال GML أقدر أتابع الدرس و أفهم ؟؟
أكيد انت بس تابع الموضوع وكل كود بنوضح ان شاء الله معناه
في البداية بتكون أوامر صعبة شوي لا تخاف كل ما نتقدم تبسط الاوامر ما تصعب ^_^ يعني لو فهمت البداية خلاص
5- لماذا لم تكمل المشروع ؟؟؟؟؟؟؟
للأسف أنا كنت فقط أريد التجربة لكني ما أبي اسوي لعبة محدودة أبي أسويها مع سيرفر ^___^
ولازم كلنا نخلي نظرنا فوق
نبدأ على بركة الله
اولا لازم نخلي كل واحد يشغل اللعبة يتصل وانواع الاتصال الي تقدر تسويها هي :
1-IPX
2- TCPIP
3- MODEM
4- SERIAL
لكن لأكون صادق معاكم للأسف كلها غير مقنعة كوسائل اتصال اون لاين لكن الأفضل TCPIP حتى الآن
أول شي لتكوين الاتصال هذا هو الكود
كود
:
{
str = get_string('Give the address (or an empty string for local network).','');
//هذا الكود بطلع مربع تكتب فيه الادريس (العنوان للعب اون لاين) اذا تتركه فاضي بصير حق الاتصال بنفس الشبكة (المودم)
if (mplay_init_tcpip(str))
room_goto_next()
// إذا أدخل الأخ الكتابة الي كتبها اتجه للروم الي بعده طبعا انت تقدر تخليه يروح لروم معين اذا قلت له
Room_goto(*****)
مع تبديل ***** باسم الروم ^_^
else
show_message('Failed to initialize TCP/IP connection.')
}
// يعني لو ما سوى الأخ أحد الخيارات الي فوق بيطلع له هذي الرسالة
Failed to initialize TCP/IP connection
يعني الكود باختصار
كود:
{
str = get_string('Give the address (or an empty string for local network).','');
if (mplay_init_tcpip(str))
room_goto_next()
else
show_message('Failed to initialize TCP/IP connection.')
{
str = get_string('Give the address (or an empty string for local network).','');
//هذا الكود بطلع مربع تكتب فيه الادريس (العنوان للعب اون لاين) اذا تتركه فاضي بصير حق الاتصال بنفس الشبكة (المودم)
if (mplay_init_tcpip(str))
room_goto_next()
// إذا أدخل الأخ الكتابة الي كتبها اتجه للروم الي بعده طبعا انت تقدر تخليه يروح لروم معين اذا قلت له
Room_goto(*****)
مع تبديل ***** باسم الروم ^_^
else
show_message('Failed to initialize TCP/IP connection.')
}
// يعني لو ما سوى الأخ أحد الخيارات الي فوق بيطلع له هذي الرسالة
Failed to initialize TCP/IP connection
يعني الكود باختصار
كود:
{
str = get_string('Give the address (or an empty string for local network).','');
if (mplay_init_tcpip(str))
room_goto_next()
else
show_message('Failed to initialize TCP/IP connection.')
}
الحين بنروح للروم الثاني بعد ما كون الاتصال هنا طريقة عمل غرفة للعب
تقدر تحدد انت عدد اللاعبين الي فيها مع المعلومية اني سمعت تقدر تخليها ل 32 لاعب لكن للحين انا سويت 2 وفي الثالث وقفت -_- يعني ما جربت يزبط لو لا
في الروم هذا لازم نظهر للاعب خيارين اما
Create room اصنع غرفة
Join room ادخل غرفة
هذا كود ل create طبعا يفضل وضعه في صورة او كلمة بخاصية LeftPressed او الضغط بزر الفارة اليسار
كود:
{
if (mplay_session_create('',2,''))
{
global.master = true;
// إذا صنعت غرفة للاعبين … مع المعلومية عدد لاعبين الروم تقدر تغيره بأي رقم بس حطه بدل الرقم 2 في الكود
و global.master مهمة وتعني الماستر حق الروم وهو الي سوى الروم
room_goto(*****);
// اذهب الى الروم ***** بدله باسم الروم
}
else
show_message('Failed to create a session.')
}
//إذا ما توفرت احد الخيارت يطلع رسالة خطأ
الكود بدون شرح
كود:
{
if (mplay_session_create('',2,''))
{
global.master = true;
room_goto(room8);
}
else
show_message('Failed to create a session.')
}
هذا كود ل join طبعا يفضل وضعه في صورة او كلمة بخاصية LeftPressed او الضغط بزر الفارة اليسار
كود:
{
if (mplay_session_find() > 0)
{
if (mplay_session_join(0,''))
{
global.master = false;
room_goto(room8);
}
else
show_message('Failed to join a session.')
}
else
show_message('No session available to join.')
}
ما أفضل شرحها تفصيليا لانها بتعور مخ المبتدئين لان فيها if الشرطية ثنتين
لكن هي بتوجه اللاعب لروم عشوائي باختصار
وهنا أمر اختياري تقدر تخلي اللاعب ينتظر الى ان يدخل لاعب آخر الروم بعدين يكمل وهذا هو الكود
تكتب الكود في الخاصية step في غرفة الانتظار
كود:
{
if (mplay_player_find() > 1)
room_goto_next();
}
معناته اذا صاروا اللاعبين في الغرفة أكثر من 1 روح للروم الي بعده زي ما قلنا قبل شوي تقدر تخليه يروح لروم معين مو لازم الروم الي بعده
الحين مبرووووك تم صناعة نصف اللعبة والباقي بسيط التعديل على الروم فقط واللاعبين
الحين نجي لسالفة التحكم باللاعبين
فكرته انك لازم تضيف شي اسمه controller او المتحكم طبعا تقدر تسميه أي شي مو لازم متحكم في هذا المتحكم عموما بنضيف فيه الأوامر بطريقة بسيطة
يعني باختصار في أوامر نستعملها بالجيم ماكر مثلا :
Sprite_index هذي الكلمة بنضيفها وبنحط لها قيمة بتصير هذي القيمة مثلا 1 هي الي تغير السبرايت وهكذا بتفهم أكثر مع المتابعة ^_*
في المتحكم نضيف ايفنت create
ونكتب كود
كود:
mplay_data_mode(false)
هذا الكود لتسريع أداء اللعب اون لاين (يقال لكني مو متأكد)
أما الآن في خاصية ال step نضع هذا الكود الجميل ^_^
كود:
{
while (mplay_message_receive(0))
{
messid = mplay_message_id();
val = mplay_message_value();
if (messid == 1)player1.x = val;
if (messid == 2)player1.y = val;
if (messid == 3)player1.direction = val;
if (messid == 4)player1.sprite_index = val;
if (messid == 5)player1.Health = val;
if (messid == 6)player1.image_xscale= val;
if (messid == 7)player1.vspeed= val;
if (messid == 8)player1.instance_create= val;
if (messid == 11)player2.x = val;
if (messid == 12)player2.y = val;
if (messid == 13)player2.direction = val;
if (messid == 14)player2.sprite_index = val;
if (messid == 15)player2.Health = val;
if (messid == 16)player2.image_xscale= val;
if (messid == 17)player2.vspeed= val;
if (messid == 18)player2.instance_create= val;
}
}
واااااااااااااااااااااااااااااااا ما هذا الكود ؟؟؟؟؟؟؟؟؟؟
قلت لنا كل شي بسيـــــــط !!!!!!
شوي شوي يا حبيبي هو بسيط يبي له تركيز شوي بس
كل لاعب لما يسوي حاجة في كود نكتبه له فائدته يرسل حركات اللاعب لجميع اللاعبين وهذا هو الكود
mplay_message_send(0,1,2)
0 معناها يرسل حركة اللاعب لكل اللاعبين لو بدلتها ب 1 بيرسل للاعب رقم 1 ولو بلتها ب 2 بيرسلها ل 2 وهكذا
1 هو رقم الأمر(ID) الي كان مكتوب فوق بنشرحه قريبا ان شاء الله
2 هي القيمة مثلا الأمر (1) كان الحركة لجهة اليمين ف (2) القيمة هي 2 بيتحرك الجسم 2 لجهة اليمين وهكذا …..
بتفهم أكثر مع المتابعة ما عليك ^_*
كود:
{
while (mplay_message_receive(0))
{
messid = mplay_message_id();
val = mplay_message_value();
if (messid == 1)player1.x = val;
if (messid == 4)player1.sprite_index = val;
if (messid == 6)player1.image_xscale= val;
if (messid == 7)player1.vspeed= val;
if (messid == 8)player1.instance_create= val;
if (messid == 11)player2.x = val;
if (messid == 14)player2.sprite_index = val;
if (messid == 16)player2.image_xscale= val;
if (messid == 17)player2.vspeed= val;
if (messid == 18)player2.instance_create= val;
}
}
مسحت الأوامر الي مو مستعملة وخليت المهمة عشان يبسط الموضوع ^_*
كود:
{
while (mplay_message_receive(0))
{
messid = mplay_message_id();
val = mplay_message_value();
//messid هي ال(ID) او رقم الأمر
// val هو قيمة الامر
if (messid == 1)player1.x = val;
// معنى الأمر هذا هو الحركة أفقيا أما الحركة راسيا فهي y يعني قيمة الاكس لو كانت +2 بتكون السرعة الى اتجاه اليمين 2 اما -2 بتكون السرعة لليسار 2
if (messid == 4)player1.sprite_index = val;
// هذا لتغيير السبرايت مكان val نكتب اسم السبرايت الي نبيه يتحول له
if (messid == 6)player1.image_xscale= val;
// هذا الأمر مفيد وهو لقلب الصورة يعني ما تحتاج صورة للشخصية من جهة اليمين و صورة من جهة اليسار لو بدلت القيمة ب 1 بتكون الصورة صحيحة اما لو بدلتها ب -1 بتكون مقلوبة وهذا الامر مهم بالنسبة لي
if (messid == 7)player1.vspeed= val;
// السرعة الأفقية شبيهة تماما ل x لهذا ما يحتاج توضيح نستعمل x افضل
if (messid == 8)player1.instance_create= val;
// اصنع اوبجيكت جديد وهذي مهمة لو كان البطل يطلق رصاص مثلا وفي مشروعي انا ما عملتها للآن للأسف لهذا جربها بنفسك ^____^
if (messid == 11)player2.x = val;
if (messid == 14)player2.sprite_index = val;
if (messid == 16)player2.image_xscale= val;
if (messid == 17)player2.vspeed= val;
if (messid == 18)player2.instance_create= val;
// نفس الي فوق مع اختلاف القيم ورقم اللاعب
}
}
هذا أهم شي في اللعبة المتحكم وهو بسيط تحتاج تتعلم كم أمر فقط
في المتحكم أيضا وفي خاصية ال step نكتب هذا الكود الاختياري
كود:
{
if (mplay_player_find() < 2)
{
show_message('Other player has stopped!');
mplay_session_end();
room_goto(*****);
}
}
لو بقى في الروم اقل من لاعب واحد روح للروم ****
ايضا يوجد أمر بسيط اختياري فائدته اذا كنت تريد اللاعب الثاني تطلع شخصيته لما يدخل الروم او تكون موجودة من البداية ؟
وهو بسيط يتالف من 4 اوامر كل وحدة سطر راجعه من المثال ^_*
موجود في ال controller---step---order3-8
الامر من 3-8
أما الآن مع كيفية وضع الحركات وتطبيق بسيط عن القيم في المتحكم
ولاحظ اننا نكتب الأمر انه يستوي للاعب نفسه وينرسل لجميع اللاعبين
كود:
if (global.master) exit;
// هذا الأمر مهم وهو لجعل اللاعب الثاني هو الي ينفذ هذي الأوامر
اما اذا كانت بعلامة تعجب هكذا if (!global.master) exit;
فهذي للاعب الأول
//keyboard left
if keyboard_check(vk_left)
//اذا ضغط الزر يسار
{
if (beat=false)
// هذي قيمة انا ضايفها معناها اذا كانت الشخصية ما تنفذ احدى الضربات
{
if (place_free(x-11,y)) {{x-=11}
// اذا كان المكان فاضي على اليسار اتجه لليسار بسرعة -11
mplay_message_send(0,11,x)
ارسل رسالة للاعبين بان اللاعب تحرك لليسار هنا الid 11 راجع فوق
والقيمة هنا x أي ان القيمة هنا 11 لاننا كتبنا x = 11 لو تلاحظ
mplay_message_send(0,14,sasukew)
//أيضا ارسل رسالة بال id 14 (وهو تغيير السبرايت) والقيمة هنا هي احدى السبرايت
{sprite_index=sasukew}
غير السبرايت الى المكتوب
{right=false left=true walk=true down=false up=false beat=false stand=false}
هذي قيم كاتبها أنا فائدتها معرفة السبرايت اذا كان متجه لليسار او اليمين او يضرب او … لو تبوا شرح لها ان شاء الله اوضع شرح
mplay_message_send(0,16,-1);
ارسل رسالة بال id 16 وهو عمل قلب للصورة و القيمة هنا -1 يعني اقلب الصورة
{image_xscale=-1}}}
}
هذا الكود بدون شرح
كود:
//keyboard left
if keyboard_check(vk_left)
{
if (beat=false)
{
if (place_free(x-11,y)) {{x-=11}
mplay_message_send(0,11,x)
mplay_message_send(0,14,sasukew)
{sprite_index=sasukew}
{right=false left=true walk=true down=false up=false beat=false stand=false}
mplay_message_send(0,16,-1);
{image_xscale=-1}}}
}
احدى الحركات للاعب الأول
كود:
if (!global.master) exit;
{
//keyboard left
if keyboard_check(vk_left)
{
if (beat=false)
{
if (place_free(x-7,y)) {{x-=7}
mplay_message_send(0,1,x)
mplay_message_send(0,4,luffyw)
{sprite_index=luffyw}
{right=false left=true walk=true down=false up=false beat=false stand=false}
mplay_message_send(0,6,-1);
{image_xscale=-1}}}
}
لاحظ انه نفس الي قبله مع وجود علامة التعجب if (!global.master) exit;
وتغييرال id لل id الخاصين باللعب الأول وتغير السبرايتز
أما الآن مع المثال وهو تعبت اكثر من 3 اسابيع لكن ما يغلى عليكم
قمت بارفاقه وأحب أقول يمنع النقل من دون ذكر المصدر
الحقوق محفوظة في المشروع يمنع تشيلها لكن ما أمانع انك تسوي لعبة أخرى اعتمادا على المشروع
تم الرفع على الميديا فاير حاليا توجد مشكلة في الارفاق
الباسورد TwilightPrince
http://www.mediafire.com/?32z8tk0x783uabr
حاااضر لأي سؤال الي عنده استفسار انا حاضر للمساعدة
جميع الحقوق محفوظة
أرجو من الي استفاد من الموضوع يرد ولو بكلمت شكرا
yahianour-
- الجنس :
عدد المساهمات : 56
رد: كيف عمل لعبة اون لاين
ايه يا جدعان هوا الدرس وحش ولا ايه ولا في ريحة بصل علا باب الموضوع متدخلو و اعملو تعليق ولا خسارة ال انا عملت الدرس ده
yahianour-
- الجنس :
عدد المساهمات : 56
رد: كيف عمل لعبة اون لاين
شكرا اخى ولكن هل تسطتيع ارفاق لينك آخر للتنزيل
zezo900-
- الجنس :
عدد المساهمات : 168
مواضيع مماثلة
» كيف اصنع لعبة اون لاين
» كيف اصنع لعبة اون لاين؟
» هل يمكن عمل لعبة اون لاين؟
» مشروع لعبة اون لاين
» [تم الحل] [ مكرر ] كيف أصنع لعبة أون لاين ؟
» كيف اصنع لعبة اون لاين؟
» هل يمكن عمل لعبة اون لاين؟
» مشروع لعبة اون لاين
» [تم الحل] [ مكرر ] كيف أصنع لعبة أون لاين ؟
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
السبت فبراير 03, 2018 7:40 pm من طرف ZAHRANI BLACK
» مساعدة ضروورية
الإثنين يناير 29, 2018 10:32 pm من طرف king_of_fun
» شارك رابط تطبيقك من تطبيقك على الاندرويد على وسائل التواصل الاجتماعي
الإثنين يناير 29, 2018 12:45 pm من طرف ibraheem2d
» ازاي اصنع لعبه علي Android
الأحد يناير 28, 2018 4:31 pm من طرف ibraheem2d
» درس صناعة 2D بلاتفورم بسيط باستخدام مكتبة Simple Platform LIB حصريا !
الخميس يناير 11, 2018 2:44 am من طرف Abdullah Alsayed
» اخر مساعدة منكم لي في الجيم ماكر
الأربعاء يناير 03, 2018 2:18 am من طرف king_of_fun
» ادعوكم اصدقائي لتجريب لعبتي الاولي Am Head Soccer
الثلاثاء ديسمبر 26, 2017 2:41 pm من طرف nexusrex
» طلب مساعدة بخصوص لعبة pinball.
الأحد ديسمبر 03, 2017 8:52 pm من طرف moummi.mouh@gmail.com