در اين تاپيك آموزش اسكريپت نويسي اين برنامه داده مي شود !
Printable View
در اين تاپيك آموزش اسكريپت نويسي اين برنامه داده مي شود !
اول از همه بايد تنظيمات صفحه ي نمايش را درست كنيم براي اين كار دستور زير را مي نويسيم :
اين دستور رزولشن 640 * 480 مي كند ... !کد:var video_mode = 6 ;
حال براي چه 6 ؟
مي توانيد از براي هر اندازه اي يك عدد بزنيد كه در ليست زير اندازه ها نوشته شده است :
کد:320x200 - 1
320x240 - 2
320x400 - 3 (not supported by some graphics adapters)
400x300 - 4 (not supported by some graphics adapters)
512x384 - 5
640x480 - 6 (default mode)
800x600 - 7
1024x768 E - 8
1280x960 P - 9
1400x1050 P - 10
1600x1200 P - 11
حال با استفاده از اين دستور بيت هاي صفحه را به 16 تغيير بدهيد ( به هر چيزي كه مي خواهيد تغيير بدهيد ولي بهتر است همون 16 باشد البته غير از 16 فقط 32 مي توانيد بگذاريد ) !
ليست بيت هايي كه مي توانيد بگذاريد همراه با توضيح :کد:var video_depth = 16 ;
کد:16 - 16 Bit Farbetiefe (65536 Farben)
32 - 32 Bit Farbtiefe P /16,7 Millionen Farben
يك تابع هست كه مي گويد وقتي صفحه ي بازي باز مي شود چه اطفاقي بيفتد ... مثلا مي شه گفت كه مرحله اي كه در Level Editor ساخته ايم رل بيا ورد براي اين كار مثلا اسم مرحله اي كه درست كرديد Level 1 هست كه ما براي اينكه اين مرحله در اول بازي بيايد دستور زير را بدهيد :
دقت داشته باشيد :کد:function main () {
level_load('level1.wmb');
}
اين را گفتم كه شايد خيلي ها دقت نكنند !کد:level1.wmb نه level.wmp
روش تعريف متغيير :
به جاي :کد:var Name = Integer ;
يا
var name ;
name :
نام متغيير
Integer :
مقدار متغيير
روش تعريف function يا همان تابع :
name :کد:function Name () {
دستورات
}
نام تابع
روش تعريف اكشن :
name :کد:action Name {
دستورات
}
نام اكشن
متغير چيست ؟
متغير يا مي تونه يك عدد يا يك رشته باشه كه در طول برنامه مرتب عدد آن تغيير مي كند ... يعني ما مي توانيم به آن عدد دهيم و عدد داخل آن را تغيير دهيم ... ( در طول آموزش بشتر متوجه مي شوديد ) !
اكشن چيست ؟
اكشن يعني برنامه نويسي كه براي يك شي ء در LEVEL EDITOR مي كنيم ... براي نام اكشن بايد نام شي ءمورد نظر ما در LEVEL EDITOR باشد ... براي تعيين نام يك شي ء در level editor بايد روي شي راست كليك و گزينه ي Properties رفته و سپس به تب Behaviour كليك كرده و در قسمت Action براي شي يك نام بر گزينيد !
توجه : اگر نام اكشن درون Level editor نباشد برنامه پيغام خطا مي دهد !
تابع چيست ؟
تابع ها يك سري عوامل هستند كه قسمتي از آنها را خود برنامه تعريف كرده مثل تابع :
Main
تابع هاي ديگري هم هست كه در جلسات بعدي آموزش داده مي شود !
خوب ... !
حال براي برنامه نويسي درون اكشن مورد نظرمان آماده مي شويم !
براي اين كه يك كاري را به يك شي نصب بدهيم اول بايد نام اكشن را در داخل اكشن مورد نظر به همراه يك نقطه ي كوچك همراه با مشخصات براي آن بنويسيم ... مثلا اسم اكشن ما محسن است :
اين دستور به برنامه مي گويد كه آبجكت محسن را در مختصات 25 بردار X قرار بده ... !کد:Mohsen.x = 25 ;
حال ما براي اينكه نخواهيم اسم اكشن را تايپ كنيم از پسوند MY استفاده مي كنيم كه My به جاي نام مي آيد مانند دستور زير !
بعضي از خصوصيات MY :کد:My.x = 25 ;
و ... كه در آموزش هاي بعدي داده مي شوند !کد:My.pan گردش دور خود
My.tilt چرخش به بالا و پايي
My.roll چرخش به چپ و راست
My.flare براق كردن شي
My.x كنترل محور x
My.y كنترل محور Y
my.z كنترل محور Z
توجه داشته باشيد كه كليه ي حقوق مربوط به خودم هست و اين آموزش را در هيچ كجا نمي بينيد ! ( البته به اين كاملي ! )
حلقه هاي تكرار :
آموزش دستور While :
اين دستور شرط يك نوع دستور شرطي مي باشد كه بوسيله ي آن مي توانيد يك حلقه ي تكرار درست كننيد كه به آن بگوييد تا شرط برقرار هست دستوري كه به آن داديد را اجرا كند ... روش تعريف كردن حلقه ي تكرار :
در پرانتز به جاي علامت * شرطي مورد نظر خود را قرار دهيد !کد:While ( *) {
دستورات
}
توجه :
اگر مي خواهيد حلقه ي شما بي نهايت باشد به معني اينكه حلقه اي كه برايش تعريف كرديد هيچ وقت تمام نشود به جاي * در داخل پرانتر يك عدد مثل 1 بگذاريد ... !
مثال :
اين دستور آبجكت محسن را تا بينهايت دور خود مي چرخاند !کد:action Mohsen{
while(1) {
My.pan +=1 ;
}
}
دقت كنيد به دستور :
اين دستور به برنامه مي گويد هر دفعه به مقدار X يكي اضافه كن !کد:My.pan +=1 ;
:biggrin:
ممنون
تاپيك استيكي شد!
خوب به سراغ آموزش مي رويم :
در آخرين پست آموزشيم استفاده از حلقه ي While را درس دادم ولي يه چيز يادم رفت بگم :
ملاحظه مي كنيد كه درون حلقه ي While من دستور Wait را اضافه كردم و داخل () عدد يك را گذاشتم ... حال اين دستور چيست :کد:action Mohsen{
while(1) {
Wait(1) ;
My.pan +=1 ;
}
}
اگر اين دستور را نزنيد برنامه فقط آخر حلقه را به شما نمايش مي دهد ولي اگر اين دستور را بزنيد لحظه به لحظه ي حلقه و تغييرات آن را نمايش مي دهد ... !
استفاده از دستور Wait درون حلقه ي While ضروري است !
سلام
دوست عزيز ممنون
حتما ادامه بده و آموزش هاي حرفه اي تر هم بذار
اگه مي توني pdf كن و بذار البته پيشنهاد بودها!
چشم ... آموزش ها كه تمام شد PDF هم مي كنم !نقل قول:
نوشته شده توسط ehsan30
جملات شرطي :
براي تعريف يك شرط براي ايجاد يك دستور به شكل زير عمل مي كنيم :
در داخل پرانتز بالا به جاي علامت * يك شرط قرار دهيد ... براي مثال در دستور زير گفته ايم اگر متغيير U مقدارش به 20 رسيد شكل شي محسن شروع كند دور خود بچرخد !کد:if (*) {
دستورات
}
در دستور بالا دقت كرديد كه ما در اول جمله ي شرطي خود دستور While را به كار برديم !کد:While(1) {
wait(1) ;
if ( U ==20) {
mohsen.pan +=1 ;
}
}
حال براي چه ؟
براي اينكه اگر ما اين دستور را بزنيم به برنامه گفته ايم كه هر وقت كه U به 20 رسيد در غير اين صورت اگر ما از دستور While استفاده نمي كرديم برنامه ي ما هيچ وقت اجرا نمي شد !
در پست قبلي آموزش استفاده از دستور IF را توضيح دادم و مجبور شدم اين نكته را در يك پست ديگه قرار بدم :
در مثال ديديد گه من دستور زير را دادم :
علامت == يعني مساوي !کد:if ( U == 25) {
}
علامت != يعني نامساوي !
علامت && يعني و !
يه نكته ي ديگر هم بگم :
براي اينكه به برنامه بگوييد اگر شرط اجرا شد اين كار و اگر شرط اجرا نشد كار ديگري انجام شود بايد از دستور زير استفاده كنيد :
خوب اين دستور به واضحي معلوم است و فقط بايد به جاي * شرط خود را بنويسيد !کد:if (*) {
دستوراتي كه در صورت درست بودن شرط مي خواهيد اجرا شوند .
}else{
دستوراتي كه در صورت اشتباه بودن شرط مي خواهيد اجرا شوند .
}
آموزش كنترل توسط صفحه كليد :
براي اينكه بفهميم كليدي فشار داده شده است از دستور زير استفاده مي كنيم :
حال براي اينكه مثلا بخواهيم بگوييم اگر كليد M فشار داده شد دستورات اجرا شود بايد از دستور زير استفاده كنيد :کد:while (1) {
wait (1) ;
if (key_any == on ) {
دستورات ;
}
}
نكته : ديديد كه من براي هر دستور اولش حلقه ي While + Wait را تعريف كردم چون اگر تعريف نمي كردم اين دستورات فقط يك بار اجرا مي شدند .کد:While (1) {
wait(1);
if (key_m == on ){
دستورات ;
}
}
مطابق دستور به جاي M مي توانيد كليد هاي ديگري را نيز جايگزين كنيد اما براي كليد ها ي بالا و پايين و چپ و راست بايد اين جمله ها را قرار دهيد :
كليد چپ : Key_cud
كليد راست : key_cuu
كليد بالا : Key_cur
كليد پايين : key_cul
دوستان و عزيزان اگه مشكلي چيزي داشتيد يا در خواست اسكريپت آماده داشتيد لطف كنيد توي اين تاپيك مطرح كنيد :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ممنونم ادامه بده.
خوب رسيديم به يكي از سخت ترين قسمت هاي بازي سازي يعني ايجاد يك شكل در طول بازي :
شما بعضي از وقت ها مثلا مي خواهيد از تفنگي تير شكليك شود يا مثلا ايجاد يك سيستم ذره اي كنيد ... براي اين كار ها شما بايد ابتدا آموزش زير را بخوانيد :
براي ساختن اشياء در طول و در حين بازي بايد از دستور Ent_create استفاده كنيد :
[PHP]
ent_create(*,#,%) ;
[/PHP]
* :
شما بايد به جاي اين علامت آدرس شي خود كه با فرمت Mdl در فولدر مخصوص بازي خودتان ذخيره كرديد بدهيد براي اين كار بايد اول يك رشته تعريف كنيد ( فرض مي گيريم فايل MDL شما محسن نام دارم و اسمي كه مي خواهيد براي رشته بگذاريد هم محسن نام دارد ) !
[PHP]
String Mohsen = <Mohsen.mdl>;
[/PHP]
حال شما با تعريف كردن اين رشته به جاي علامت * فقط بايد اسم رشته اي كه تعريف كرديد و ما در اينجا محسن تعرفي كرده ايم را قرار دهيد !
# :
به جاي اين علامت بايد شما محله ساخته شدن شي خود را تعريف كنيد ... براي اين كار بايد از دستور زيد استفاده كنيد :
[PHP]
Vector(x,y,z) ;
[/PHP]
كه به آنها مقدار بدهيد ... مي توانيد از دستور بالا هم استفاده نكنيد و هرچي خودتان خواستيد بزنيد ... !
% :
شما در اين قسمت بايد نام تابع كنترل كننده ي اين شي ساخته شده را بگوييد ( در مورد تابع قبلا حرف زده شده بود ) ! اگر هم تابعي نداريد از دستور زير به جاي % استفاده كنيد :
[PHP]
Null
[/PHP]
حال يك مثال :
[PHP]
ent_create(Mohsen,vector(20,50,70),Null);
[/PHP]
اين مثال نيازي به توضيح ندارد چون كامل درس داده شده !
حركت اجسام :
بعضي از وقت ها مي خواهيد اجسام حركت كنند .... براي جركت اجسام دو حالت وجود دارد :
1 - مي خواهيد اجسام به فاصله ي مورد نظري از جسم برند .
2 - مي خواهيد در هر ثانيه به موقيعت اجسام اضافه شود ( بر واحد زمان ) !
حال براي تعريف حركت :
[PHP]
ent_move(*,$);
[/PHP]
* :
نقش گزينه ي 2 را بازي مي كند !
براي تعريف بايد از دستور Vector (x,y,z) ; استفاده كرد !
% :
نقش گزينه ي1 را بازي مي كند !
براي تعريف بايد از دستور Vector (x,y,z) ; استفاده كرد !
توجه :
اگر گزينه ي * را را تعريف كرديد براي % دستور زير را بگذاريد :
[PHP]
Nullvector
[/PHP]
و بلعكس !
عاليه واقعا موفق باشين
دوستان دقت كنيد ... جزوه ي آماتور به اتمام رسيد و از اين به بعد حرفه اي رفتار مي كنيم ... از كليه ي دوستاني كه اشكال دارند مي خواستم تقاضا كنم در تاپيك مربوطه سوالاتشان را بپرسند !
فعلا هم درحال تحيه ي Pdf اين آموزش ها هستم و بعد از اتمام اين كار بحث حرفه اي تر مي شود !
[PHP]
// A camera is hunting a target and turns with them. The target is always in the middle of the views
var cam_dist[3] = 0,-200,60; // xyz Distance of the camera towards the target
function chase_camera(target)
{
my = target; // The target Entity
// calculate the camera view's direction angle to the target
var cam_ang[3]; // direction angle of the camera to the target.
vec_diff(temp,nullvector,cam_dist);
vec_to_angle(cam_ang,temp);
cam_ang.roll = 0; // roll didn't change vec_to_angle
// permanent updating of the camera's position and angle
while (1)
{
// place the camera at the right position to the target
vec_set(camera.x,cam_dist);
vec_rotate(camera.x,my.pan);
vec_add(camera.x,my.x);
// Set the camera angles to the camera view direction
vec_set(camera.pan,cam_ang);
// and rotate it about the target angle
ang_add(camera.pan,my.pan);
wait(1);
}
}
[/PHP]
اين كه ديديد كد اين بود كه دوربين همراه شي شما تكان بخورد و آن را تغيب كند ... ( البته اگر جمله اي در علامت // قرار داشت به معني توضيحات است و هيچ تغييري در برنامه نويسي نمي دهد !
شلام با تشكر از آقاي mohsen و اموزشهايخوب و جالبشان
من عمري با ايننرم افزار سر كردم و تقريباهمه فوتوفن هايش را بلد هستم
منهم از اين به بعد در اين قسمت و قسمتهايديگه آموزش خودم را شروع كردم
با تشكر از همه شما
شما با اين اكشن ميتوانيد به آبجكت و يا به اصتلاه دوست خوبم Mohsen شي گراويتي يا همان جازبه بدهيم
[php]
var gravity; //در اينجا متغييري به ايننام براي بازي خودتان به اصتلاه تعريف ميكنيد
action player_1{
while (1){
gravity=my.z; // get the position of any model ; for example " PLAYER "
gravity-=100; //check for any block or model in -100 of base position
gravity=trace(my.x,gravity); //set the distance of player and model or block
// for larger mass you can sub a number of gravity;for example -1
ent_move(vector(0,0,gravity.z),nullvector); // set the gravity for this object
wait(1);
}
}
[/php]
نميتونستم بقيه را فارسيبنويسم چون صبح مي شد
سلام
ببخشيد شما اين نرم افزار چه جوري ياد گرفتين ؟
ممنون بلا
من ؟نقل قول:
نوشته شده توسط hossein_dig
اگه منظور شما منم خودم يادم نيست اين برنامه را يادگيريش را از كجا ياد گرفتم .. ولي بيشتر منوال خود برنامه كمك كرد !
اره عزيز جان منظور شما هستيد .اين برنامه سيديش تو بازار هست من فكردم شما با سيدي آموزشي ياد گرفتي .در ضمن اگه ميخواي همه از اين تاپيك چيزي ياد بگيرن يكم سرعت كم كن .چون برنامه نويسي يه مقدار احتياج به مقدمه
داره
موفق باشي .
اگه عكستم عوض كني خيلي بهتر .آدم وقتي ميبين ميگرخه (ميترس)
من تا حالا سي دي آموزشي از اين بازي نديدم در واقع هنوز براي اين بازي 25 ريالي هم خرج نكردم !نقل قول:
نوشته شده توسط hossein_dig
برنامه را از يه دوستام گرفتم رايت كردم !
در ضمن والا به خدا من يه ماه هست كه آموزشي نمي زارم !
در ضمن آواترم هم عوض نمي كنم .. آخه از ريش بزيش خيلي خوشم مي ياد ! :biggrin:
سلام لطفا لينك دانلود برنامه رو هم بزار
مرسي erif
خيلي ممنون
ببخشيد وقتي مي خوام برنامه رو دانلود كنم از user name و password می خواد
می شه برام بزاریدش؟
اينا دانلود كنيد :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دوستان اگه ميشه لينك دانلود اين برنامه رو واسمون بزاريد
پست بالایی پست شما ! [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]نقل قول:
دوستان اگه ميشه لينك دانلود اين برنامه رو واسمون بزاريد
دست همگي درد نكنه
واقعاَ به اين ميگن تاپيك !
سلام دوستان ، من تازه عضو سایت شدم ، ولی تو سایتهای دیگه ریشه کردم (مجید آنلاین ، برنامه نویس ....)
یک انتقاد :
دوست عزیز از اینکه داری آموزش میدی ممنون ولی داری خیلی بد میگی ! در ضمن اول بگو از کجا شروع کنن و بعدش باید چجوی آکشن ها رو تو Designer بیارن و به آبجکت ربط بدن و از این جور صحبت ها
پیشنهاد :
دوست عزیز در صورت تمایل می تونی یک فیلم بگیری بدش با من تماس بگیری بهت هاست بدم آپلود کنی تا دوستان به راحتی بتونن استفاده کنن و یاد بگیرم
-----------------------------------------
به امید ایران موفق