المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [مكتبة+دروس]مكتبة السكربتات الصغيرة للـVX + شرح تثبيت السكربت



Noor Xp
25-04-2009, 01:28 AM
بسم الله الرحمن الرحيم






http://img7.imageshack.us/img7/4630/librarylogo.png








السلام عليكم ورحمة الله وبركاته




اليوم طخت ببالي فكرة عجبتني ,وأن شاء الله تعجبكم
وهي خاصة لمستخدمي RPG Maker Vx ,الفكرة هي
مكتبة للنصوص الصغيرة أي Mini Script وتعني اسطر
قصيرة لاتتعدى 10 أسطر تضاف الى السكربت ليتم
التحكم بخصائصها عن طريق الأيفنت,او تحسن عمل
الأيفينت.
ان شاء الله كل أسبوع حطرح مثالين + شرح
في هذا الموضوع.
هذا أذا قبل المشرفين بالفكرة.


ونبدأ باول سكربت قصير:



┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬


طريقة لربط خيارات خانة الرسائل مع عمل الأيفينت


صورة توضيحية:
http://img183.imageshack.us/img183/4159/example1.gif




اول شيئ حنقوم به هو عمل متغير جديد ونسميه MES_Counter
أو أي أسم يعجبك,وكذلك رسالة والخيارات التي سترفقها مع
الرسالة:



http://img16.imageshack.us/img16/4726/74859018.jpg



هذه هي احداث الرسالة:



http://img16.imageshack.us/img16/3994/82256398.jpg



ثانياً قم بعمل أيفينت جديد وليكن المؤشر اختر الصورة المناسبة له.
ملاحظة(جميع هذه الأيفينتس سنكونها في طرف الخريطة)



http://img12.imageshack.us/img12/5213/10824381.jpg



ثالثاً قم بعمل مفتاح جديد (Switch) وسميه MES_ON\OF
أو أي أسم يعجبك,وهو سيجعل المؤشر يختفي عند اختفاء الرسالة.


رابعاً افتح قائمة السكربتات ,اختر السكربت Window_Message
,اضف هذا السطر بعد السطر 50 :

$game_variables[1] = self.index




┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬


ماذا يفعل هذا السطر؟

هذ السطر سيقوم بتغير قيمة المتغير MES_Counter
مع مكان المؤشر حيث ان اول خيار يكون الـIndex فيه 0
والثاني 1 والثالث 2 وهكذا ,وبهذه الطريقة سيمكننا السيطرة
على حدث ما عن التغير من خيار الى أخر حسب قيمة MES_Counter
,وهذه صورة موضحة لذلك:
http://img6.imageshack.us/img6/9002/example2.gif


┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬




خامساً قم بعمل ايفينت جديد ,وسيكون الأيفينت المسيطر على الاحداث
عند تغير المتغير ,بمكنك الأن عمل ماشأت عن طريق الشرط الفرعي ,فأنا قمت
بادخال المعلومات التالية فيه:
http://img16.imageshack.us/img16/9782/84040957.jpg
في السطر الاول اخبرت البرنامج اذا كان المفتاح MES_ON\OF مفتوحاً
اظهر المؤشر ,واذا كان مغلقاً ,غير تغشية المؤشر الى صفر ليختفي,
وكذلك داخل الشرط الفرعي السابق قمت بعمل شرطين الأول
عن تحول MES_Counter قيمته الى صفر يتحول امام الشخصية الأولى,
وعندما تتغير القيمة الى 1 يتحول امام الشخصية الأخرى.



┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬


لتحميل المثال في المرفقات:


من هنا (http://www.montada.com/attachment.php?attachmentid=312827&stc=1&d=1240609930)
┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬


أن شاء الله اشوف تطبيقاتكم للدرس بصورة مختلفة
عن تحرك السهم.


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



انتظروا المزيد من النصوص القصيرة
والدروس.
كذلك في نفس الموضوع.



دُمتم بِود

Noor Xp
28-04-2009, 04:54 PM
طريقة جعل كل اداة العدد المحدود لها


جميع مستخدمي RPG Maker يعرفون ان جميع الأدوات العدد المحدود
لها هو 99 ,ولكن هل نستطيع ان نجعل لكل اداة العدد المحدود الخاص بها؟
نعم,وبكل سهولة:


اولاً هناك عدد متسلسل يبدأ به أسم الأداة,المهارة,البطل,الخ......
تجده تقريباً في كل شيئ في اللعبة حتى في الخريطة الأيفينت ويسمى
ID ,هذه يعتبر اساس التحكم في اللعبة وتحديد خواص كل شيئ فيها.
وبه نستطيع ان نعطي كل اداة العدد المحدود لها,وهذه صورة توضح الـID
في الادوات:


http://img162.imageshack.us/img162/3802/48494996.png
┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬
1-أفتح قائمة السكربتات ,واذهب الى السكربت Game_Party ,وفيه تقريباً يتم التحكم
في جميع خصائص المجموعة من ذهب وأدواة ومهارة وغيرها.
┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬



2- انتقل الى السطر 199 تلاحظ هذا النص:

@items[item.id] = [[number + n, 0].max, 99].min
http://img301.imageshack.us/img301/1574/98631629.png
هذا السطر يضع حدود لعدد الأدوات التي يمكن الحصول عليها ,وهو كما ترون 99 يمكنك
تغيرها الى أي عدد شئت,غيرها الى 15 وجرب وزود نفسك بأي اداة واجعل العدد 99 ,سترى
في قائمة الأدوات ان عدد الاداة هو 15.
لكن هنا جميع الأدواة ستكون حدودها 15,اذن كيف اجعل لكل اداة حدها المعين,هنا
تاتي فائدة الID .
هناك اداة تدعى Case وهي موجودة تقريباً في جميع اللغات وهي معروفة
تقوم بعمل تعداد اذا اقترنت قيم أي عدد من التعداد مع الشرط ستنفذ القيمة الخاصة
بالعدد ,وسنستفاد منها هنا في عملنا.
بعد السطر 198اعمل سطر جديد واضف النص التالي:



case item.id


اي اعمل تعداد لـID الأدواة.


ثم بعد هذا السطر اعمل سطر جديد أخر واضف:



when 1 # Potion ID




@items[item.id] = [[number + n, 0].max, 15].min




اخبرنا البرنامج ,اذا كان الـID يساوي 1 قم بعمل الحد 15 ,والاداة التي تبدا بالID واحد هي

الترياق أو Potion .وبذلك سيكون حده هو 15.


وهكذا مع باقي الأدواة ,ولكن لاتنسى بعد ان تنتهي من أخر حد للأداة ان تضع السطر
التالي:

else #Other item ID




@items[item.id] = [[number + n, 0].max, 99].min


end



لكي يقوم بعمل حد لباقي الادواة التي لم يتم ذكر الID في التعداد.



وهذا ماقمت بعمله:


case item.id



when 1 # Potion ID

@items[item.id] = [[number + n, 0].max, 15].min
when 15..20 #ID for Fire scroll,Flame scroll,Ice scroll,Blizzard scroll,Thunder scroll,Spark scroll
@items[item.id] = [[number + n, 0].max, 5].min
when 9 # Life up ID
@items[item.id] = [[number + n, 0].max, 34].min
else #Other item ID
@items[item.id] = [[number + n, 0].max, 99].min

end




وهذ توضيح له:

http://img131.imageshack.us/img131/7714/99042397.png


بعد تجريب اللعبة :

http://img156.imageshack.us/img156/1386/43493551.png


┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬┴┴┬


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


أي سؤال انا في الخدمة


في أمان الله

kakarot
01-05-2009, 03:11 PM
بارك الله فيك على دروسك

Noor Xp
02-05-2009, 01:10 PM
بارك الله فيك على دروسك
شكراً لك أخي على المرور.

===============================================

التحكم بخلفية خانة المحادثة عن طريقة ايفينت


صور توضيحية:

http://dc03.arabsh.com/i/00118/9lfnft8f39bj.gif

===============================================





قد يمل البعض من الجمود الموجود في خانة المسج بسبب الـWindow Skin وهو

يعطي مظهر واحد لجميع الخانات الموجودة في اللعبة ,لذلك قد يستخدم البعض خاصية
Dim Background :

http://dc02.arabsh.com/i/00118/e3xxjff2954y.png

هذه الخاصية تجعل لخانة المحادثة خلفية ,الخلفية الأعتيداية هي سوداء ,لكن
يمكن تغيرها ,فمثلاً تستخدم هذه الخلفية:
http://dc02.arabsh.com/i/00118/cnhwfxj6pmwu.png
لكن هذه الخلفية ستجبرك على وضع كل ايفينت يتم فيه اجراء محادثة ان يرفق بوجه ,
وبهذه الطريقة حتزيد من حجم اللعبة وكذلك صعوبة الحصول على وجوه للرسيورس
الخارجي.
هنا تأتي فائدة لغة RGSS2 .
نبدأ على بركة الله:

===============================================

1-افتح محرر السكربتات,ثم اعمل سكربت جديد تحت Materials واعطه
أي اسم تشاء .

2-ادخل فيه الميني سكربت التالي:







#==============================================================================


# ** NXP Mini Script

# |- Message Back Changer
#==============================================================================
class Game_Temp
attr_accessor :message_back
alias nxp_mini_script_new_verd initialize
def initialize
nxp_mini_script_new_verd
@message_back = ""
end
end
class Window_Message < Window_Selectable
alias nxp_mini_script_new_methoud create_back_sprite
alias nxp_mini_script_new_update update_back_sprite
def create_back_sprite
nxp_mini_script_new_methoud
@back_sprite = Sprite.new
if $game_temp.message_back != ""
@back_sprite.bitmap = Cache.system($game_temp.message_back)
else
@back_sprite.bitmap = Cache.system("MessageBack")
end
@back_sprite.visible = (@background == 1)
@back_sprite.z = 190
end
def update_back_sprite
nxp_mini_script_new_update
@back_sprite.visible = (@background == 1)
@back_sprite.y = y - 16
@back_sprite.opacity = openness
if $game_temp.message_back != ""
@back_sprite.bitmap = Cache.system($game_temp.message_back)
else
@back_sprite.bitmap = Cache.system("MessageBack")
end
@back_sprite.update
end
end


شرح السكربت:

attr_accessor :message_back
في هذا السطر كونا متغير جديد في الصنف Game_Temp ,وهو
متغير من نوع عالمي أي بهذا الشكل game_temp.message_back$ .



@message_back = ""


في هذا السطر حددت قيمة المتغير وكانت قيمته لاشيئ.





if $game_temp.message_back != ""


@back_sprite.bitmap = Cache.system($game_temp.message_back)

else
@back_sprite.bitmap = Cache.system("MessageBack")

end




في بداية السطر كونت شرط وفيه فلت اذا لم يكن المتغير

game_temp.message_back$ تساوي قيمته لاشيئ "" نفذ السطر انفا:

@back_sprite.bitmap = Cache.system($game_temp.message_back)
وهو يعني قم بوضع الخلفية التي عنونها يساوي اسم المتغير
game_temp.message_back$ .

والسطر الثالث يامر البرنامج اذا كان المتغير game_temp.message_back$
يساوي فراغ قم بوضع الخلفية الأعتيادية أي الخلفية السوداء.

وكذلك بالنسبة للupdate_back_sprite .
===============================================

طريقة الأستعمال :

قبل كل محاورة قم بعمل Script وادخل فيه هذا النص
"اسم الصورة" = game_temp.message_back$
وأبدل "أسم الصورة" بأسم الصورة المراد عملها كخلفية,ويجب انت
تكون موجودة في الملف System :
http://dc03.arabsh.com/i/00120/xkkrrcch5ggs.png
وبهذه الطريقة سنستطيع التحكم بالخلفية ,فمثلاً عندما يتحدث البطل ونختار الوجه
نستخدم الخلفية التالية :
http://dc02.arabsh.com/i/00118/cnhwfxj6pmwu.png
وعندما يتحدث رجل عادي مثلاً بائع نستخدم الخلفية التالية:
http://dc02.arabsh.com/i/00120/9nou5lfxyb2b.png
وهذا مااضفته من أحداث في الصورة التوضيحية:
http://dc03.arabsh.com/i/00120/g8qeyx22737d.png
===============================================

تحميل المثال في المبرفقات
او من هنا (http://www.montada.com/attachment.php?attachmentid=312896&stc=1&d=1241257813)
===============================================


أنتهى الدرس
أي سؤال انا في الخدمة.


في أمان الله

LIGEND
02-06-2009, 08:38 PM
مآشآء الله عليك أخي أنور , أبدعت والله

ياريت تواصل وتتحفنا بالمزيد من الدروس والسكربتات ^^

موفق حبيبي

Train2
04-07-2009, 05:21 AM
شكرا لك على دروسك 100%

qJLcJI
13-07-2009, 10:02 PM
شكراً لك على دروسك و ارجو الاستمرار :)

LordOfShadows
10-08-2009, 07:53 PM
انا مبتدئ في برنامج rpg maker vx >_< لكن دروسك تجعل ألعاب المبتدئين تبدوا احترافية
شكرا جزيلا ولم يبقى سوى التجريب