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

مشاهدة النسخة كاملة : ( درس ) بالصور طريقة جعل الابطال يسرون وراء البطل الرئيسي مثل فاينال فانتاسي .



Karim Ghazal
09-08-2007, 06:28 AM
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته .. بعد أن أتقنت اساسيات الاربي جي ميكر اكس بي .. حبيت ان اشارك الاخوة بهذا الدرس البسيط ...وهو عبارة عن سكربت تضيفه لكي تجعل الابطال يسيرون وراء البطل الرئيسي ... نبدأ على بركة الله .

أولاً أنتبه هذا السكربت فهو مهم :



# Train_Actor
#

# fukuyama@alles.or.jp
# http://www4.big.or.jp/~fukuyama/
#
# ●透明状態用スイッチ設定
# true だとスイッチ制御を行う
# TRAIN_ACTOR_TRANSPARENT_SWITCH = false
TRAIN_ACTOR_TRANSPARENT_SWITCH = true
# ●透明状態用スイッチ番号
# この番号のスイッチがONだと透明になる
TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX = 20
# 定数
#Input::DOWN = 2
#Input::LEFT = 4
#Input::RIGHT = 6
#Input::UP = 8
DOWN_LEFT = 1
DOWN_RIGHT = 3
UP_LEFT = 7
UP_RIGHT = 9
JUMP = 5
class Game_Party_Actor < Game_Character
def initialize
super()
@through = true
end
def setup(actor)
# キャラクターのファイル名と色相を設定
if actor != nil
@character_name = actor.character_name
@character_hue = actor.character_hue
else
@character_name = ""
@character_hue = 0
end
# 不透明度と合成方法を初期化
@opacity = 255
@blend_type = 0
end
def screen_z(height = 0)
if $game_player.x == @x and $game_player.y == @y
return $game_player.screen_z(height) - 1
end
super(height)
end
#--------------------------------------------------------------------------
# ● 下に移動
# turn_enabled : その場での向き変更を許可するフラグ
#--------------------------------------------------------------------------
def move_down(turn_enabled = true)
# 下を向く
if turn_enabled
turn_down
end
# 通行可能な場合
if passable?(@x, @y, Input::DOWN)
# 下を向く
turn_down
# 座標を更新
@y += 1
end
end
#--------------------------------------------------------------------------
# ● 左に移動
# turn_enabled : その場での向き変更を許可するフラグ
#--------------------------------------------------------------------------
def move_left(turn_enabled = true)
# 左を向く
if turn_enabled
turn_left
end
# 通行可能な場合
if passable?(@x, @y, Input::LEFT)
# 左を向く
turn_left
# 座標を更新
@x -= 1
end
end
#--------------------------------------------------------------------------
# ● 右に移動
# turn_enabled : その場での向き変更を許可するフラグ
#--------------------------------------------------------------------------
def move_right(turn_enabled = true)
# 右を向く
if turn_enabled
turn_right
end
# 通行可能な場合
if passable?(@x, @y, Input::RIGHT)
# 右を向く
turn_right
# 座標を更新
@x += 1
end
end
#--------------------------------------------------------------------------
# ● 上に移動
# turn_enabled : その場での向き変更を許可するフラグ
#--------------------------------------------------------------------------
def move_up(turn_enabled = true)
# 上を向く
if turn_enabled
turn_up
end
# 通行可能な場合
if passable?(@x, @y, Input::UP)
# 上を向く
turn_up
# 座標を更新
@y -= 1
end
end
#--------------------------------------------------------------------------
# ● 左下に移動
#--------------------------------------------------------------------------
def move_lower_left
# 向き固定でない場合
unless @direction_fix
# 右向きだった場合は左を、上向きだった場合は下を向く
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::UP ? Input::DOWN : @direction)
end
# 下→左、左→下 のどちらかのコースが通行可能な場合
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
# 座標を更新
@x -= 1
@y += 1
end
end
#--------------------------------------------------------------------------
# ● 右下に移動
#--------------------------------------------------------------------------
def move_lower_right
# 向き固定でない場合
unless @direction_fix
# 左向きだった場合は右を、上向きだった場合は下を向く
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::UP ? Input::DOWN : @direction)
end
# 下→右、右→下 のどちらかのコースが通行可能な場合
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
# 座標を更新
@x += 1
@y += 1
end
end
#--------------------------------------------------------------------------
# ● 左上に移動
#--------------------------------------------------------------------------
def move_upper_left
# 向き固定でない場合
unless @direction_fix
# 右向きだった場合は左を、下向きだった場合は上を向く
@direction = (@direction == Input::RIGHT ? Input::LEFT : @direction == Input::DOWN ? Input::UP : @direction)
end
# 上→左、左→上 のどちらかのコースが通行可能な場合
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
# 座標を更新
@x -= 1
@y -= 1
end
end
#--------------------------------------------------------------------------
# ● 右上に移動
#--------------------------------------------------------------------------
def move_upper_right
# 向き固定でない場合
unless @direction_fix
# 左向きだった場合は右を、下向きだった場合は上を向く
@direction = (@direction == Input::LEFT ? Input::RIGHT : @direction == Input::DOWN ? Input::UP : @direction)
end
# 上→右、右→上 のどちらかのコースが通行可能な場合
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
# 座標を更新
@x += 1
@y -= 1
end
end
def set_move_speed(move_speed)
@move_speed = move_speed
end
end
class Spriteset_Map
def setup_actor_character_sprites?
return @setup_actor_character_sprites_flag != nil
end
def setup_actor_character_sprites(characters)
if !setup_actor_character_sprites?
index_game_player = 0
@character_sprites.each_index do |i|
if @character_sprites[i].character.instance_of?(Game_Player)
index_game_player = i
break
end
end
for character in characters.reverse
@character_sprites.unshift(
Sprite_Character.new(@viewport1, character)
)
end
@setup_actor_character_sprites_flag = true
end
end
end
class Scene_Map
def setup_actor_character_sprites(characters)
@spriteset.setup_actor_character_sprites(characters)
end
end
class Game_Party
def set_transparent_actors(transparent)
@transparent = transparent
end
def setup_actor_character_sprites
if @characters == nil
@characters = []
for i in 1 .. 4
@characters.push(Game_Party_Actor.new)
end
end
if @actors_chach == nil
@actors_chach = []
end
if @actors_chach != @actors
@actors_chach = @actors.clone
for i in 1 .. 4
@characters[i - 1].setup(actors[i])
end
end
if $scene.instance_of?(Scene_Map)
$scene.setup_actor_character_sprites(@characters)
end
end
def update_party_actors
setup_actor_character_sprites
transparent = $game_player.transparent
if transparent == false
if TRAIN_ACTOR_TRANSPARENT_SWITCH
transparent = $game_switches[TRAIN_ACTOR_TRANSPARENT_SWITCHES_INDEX]
else
transparent = $game_player.transparent
end
end
for character in @characters
character.transparent = transparent
character.set_move_speed($game_player.get_move_speed)
character.update
end
end
def moveto_party_actors( x, y )
setup_actor_character_sprites
for character in @characters
character.moveto( x, y )
end
if @move_list == nil
@move_list = []
end
for i in 0 .. 10
@move_list[i] = nil
end
end
def move_party_actors
if @move_list == nil
@move_list = []
for i in 0 .. 10
@move_list[i] = nil
end
end
@move_list.each_index do |i|
if @characters[i] != nil
case @move_list[i].type
when Input::DOWN
@characters[i].move_down(@move_list[i].args[0])
when Input::LEFT
@characters[i].move_left(@move_list[i].args[0])
when Input::RIGHT
@characters[i].move_right(@move_list[i].args[0])
when Input::UP
@characters[i].move_up(@move_list[i].args[0])
when DOWN_LEFT
@characters[i].move_lower_left
when DOWN_RIGHT
@characters[i].move_lower_right
when UP_LEFT
@characters[i].move_upper_left
when UP_RIGHT
@characters[i].move_upper_right
when JUMP
@characters[i].jump(@move_list[i].args[0],@move_list[i].args[1])
end
end
end
end
class Move_List_Element
def initialize(type,args)
@type = type
@args = args
end
def type() return @type end
def args() return @args end
end
def add_move_list(type,*args)
@move_list.unshift(Move_List_Element.new(type,args)).pop
end
def move_down_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::DOWN,turn_enabled)
end
def move_left_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::LEFT,turn_enabled)
end
def move_right_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::RIGHT,turn_enabled)
end
def move_up_party_actors(turn_enabled = true)
move_party_actors
add_move_list(Input::UP,turn_enabled)
end
def move_lower_left_party_actors
move_party_actors
add_move_list(DOWN_LEFT)
end
def move_lower_right_party_actors
move_party_actors
add_move_list(DOWN_RIGHT)
end
def move_upper_left_party_actors
move_party_actors
add_move_list(UP_LEFT)
end
def move_upper_right_party_actors
move_party_actors
add_move_list(UP_RIGHT)
end
def jump_party_actors(x_plus, y_plus)
move_party_actors
add_move_list(JUMP,x_plus, y_plus)
end
end
module Game_Player_Module
def update
$game_party.update_party_actors
super
end
def moveto( x, y )
super
$game_party.moveto_party_actors( x, y )
end
def move_down(turn_enabled = true)
if passable?(@x, @y, Input::DOWN)
$game_party.move_down_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_left(turn_enabled = true)
if passable?(@x, @y, Input::LEFT)
$game_party.move_left_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_right(turn_enabled = true)
if passable?(@x, @y, Input::RIGHT)
$game_party.move_right_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_up(turn_enabled = true)
if passable?(@x, @y, Input::UP)
$game_party.move_up_party_actors(turn_enabled)
end
super(turn_enabled)
end
def move_lower_left
# 下→左、左→下 のどちらかのコースが通行可能な場合
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::DOWN))
$game_party.move_lower_left_party_actors
end
super
end
def move_lower_right
# 下→右、右→下 のどちらかのコースが通行可能な場合
if (passable?(@x, @y, Input::DOWN) and passable?(@x, @y + 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::DOWN))
$game_party.move_lower_right_party_actors
end
super
end
def move_upper_left
# 上→左、左→上 のどちらかのコースが通行可能な場合
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::LEFT)) or
(passable?(@x, @y, Input::LEFT) and passable?(@x - 1, @y, Input::UP))
$game_party.move_upper_left_party_actors
end
super
end
def move_upper_right
# 上→右、右→上 のどちらかのコースが通行可能な場合
if (passable?(@x, @y, Input::UP) and passable?(@x, @y - 1, Input::RIGHT)) or
(passable?(@x, @y, Input::RIGHT) and passable?(@x + 1, @y, Input::UP))
$game_party.move_upper_right_party_actors
end
super
end
def jump(x_plus, y_plus)
# 新しい座標を計算
new_x = @x + x_plus
new_y = @y + y_plus
# 加算値が (0,0) の場合か、ジャンプ先が通行可能な場合
if (x_plus == 0 and y_plus == 0) or passable?(new_x, new_y, 0)
$game_party.jump_party_actors(x_plus, y_plus)
end
super(x_plus, y_plus)
end
# -----------------------------------------------
# move_speed を外から見れるように
# -----------------------------------------------
def get_move_speed
return @move_speed
end
end
class Game_Player
include Game_Player_Module
end</DIV>

و الان نأتي اى الشرح بالصور :

http://up.joreyat.org/09Aug2007/1278953687_1.jpg


http://up.joreyat.org/09Aug2007/834149468_2.jpg


http://up.joreyat.org/09Aug2007/1680571963_4.jpg

http://up.joreyat.org/09Aug2007/1386528461_5.jpg

http://up.joreyat.org/09Aug2007/1128161065_6.jpg


http://up.joreyat.org/09Aug2007/44866523_7.jpg


http://up.joreyat.org/09Aug2007/1983309889_8.jpg


انتهى الدرس و الى اللقاء ..

Karim Ghazal
09-08-2007, 06:38 AM
اسف لكبر الصور ...

.AJ.
09-08-2007, 08:12 AM
مشكووووووووووور أخوي على جهدك الرائع وان شاء الله الكثيرين يستفيدون من دروس هذا واتمنى منك المزيد
^_^


اسف لكبر الصور ...

لا عادي

Karim Ghazal
09-08-2007, 08:44 AM
مشكووووووووووور أخوي على جهدك الرائع وان شاء الله الكثيرين يستفيدون من دروس هذا واتمنى منك المزيد
^_^

لا عادي

أهلاً بالغالي عبد الله .. كما قلت لك .. أنت استاذي .. و هذا السكربت أخذته من موضوعك .. و اتمنى أن يستفاد الجميع منه .. وشكراً :flowers:.

PrinceOfSorrow
09-08-2007, 09:31 AM
شكرا شكرا على الموضوع الرائع @.@

صراحة بفيدنا جدا جدا ^^

+

اخوي اربيجي ميكر مالك عربي !! انا احسه انه عربي =)
مبروك عليك لو كان اربيجي ميكر عربي عندك ^^

AL J
09-08-2007, 03:01 PM
اخوي مشكور على جهدك



شكرا على الدرس لكن انا تعلمت بعض الاشياء :biggthump




اسف لكبر الصور ...
عادي المهم طلعو :biggthump

Karim Ghazal
16-08-2007, 06:21 PM
أشكر الجميع على الرد .. واسف على ردي المتأخر شباب .. مشكورين جميعاً ..

أخي برنس اوف سورو .. سوف أرفع البرنامج عربياً قريباً ..

اسود الرافدين
16-08-2007, 07:02 PM
شكرا اخوي كريم هذا رائع بس صعب لشخص ما يعرف البرنامج مشكور وتسلم

Amir Imam
16-08-2007, 07:23 PM
بسم الله
مشكور على الدرس مع اني معرفش اشتغل على البرنامج ده ولا شوفته اصلا
وبالمناسبة بقى ... انا عارف ايه هي العاب الر بي جي ... يعني اعرف ان فاينل فانتسي ار بي جي ... لكن مش عارف ايه هو تعريف الالعاب دي ... ممكن حد يديني تعريف والفرق بينها وبين الالعاب العادية ,,,

.AJ.
17-08-2007, 02:05 AM
أمير:هذا ممكن يساعدك بقلم المراقب أكتوبوت (http://www.montada.com/showpost.php?p=5421724&postcount=24)

PrinceOfSorrow
17-08-2007, 05:51 AM
بسم الله
مشكور على الدرس مع اني معرفش اشتغل على البرنامج ده ولا شوفته اصلا
وبالمناسبة بقى ... انا عارف ايه هي العاب الر بي جي ... يعني اعرف ان فاينل فانتسي ار بي جي ... لكن مش عارف ايه هو تعريف الالعاب دي ... ممكن حد يديني تعريف والفرق بينها وبين الالعاب العادية ,,,


شوووف هذه صفحة :
http://en.wikipedia.org/wiki/Computer_role-playing_game

وهذه للعبة اربيجي من احد اعضاء المنتدى العبها :
http://www.montada.com/showpost.php?p=5338302&postcount=29

لكن للاسف لعبته يغلب عليها اسلوب المغامرة في طريق واحد !!

PrinceOfSorrow
17-08-2007, 05:52 AM
فتى ألعاب : هل انت من قام بتعريب أربيجي ميكر ياخي العزيز @.@
صراحة انا متشوق لمعرفة ذلك !!

Amir Imam
17-08-2007, 03:28 PM
بسم الله
جزاك الله خيرا يا اخي العزيز

Dark Gamer
17-08-2007, 05:05 PM
شرح اكثر من راائع .. الف شكر فتى الألعاب =)

والصراحة .. ما كنت اعرف ان هناك في RMXP معرب ^^"

Karim Ghazal
18-08-2007, 02:31 PM
اسود الرافدين (http://www.montada.com/member.php?u=378509) :

شكراً على الرد .. أخوية علاوي .. ترة البرنامج مو سهل أنما أسهل من السهل .. جيم ميكر أصعب من عنده .. جربه و انطيني رأيك ..

Amir Imam (http://www.montada.com/member.php?u=521352) :

البرنامج سهل للغاية ... كما قلت للاخ علي .. و كذلك أنه البرنامج لو ستعمله راح تفهمة و تتقنه في أقل من شهر ..

MangaTutorials (http://www.montada.com/member.php?u=343635) :

شكراً لماسعدتك للأخ امير ..

Karim Ghazal
18-08-2007, 02:37 PM
PrinceOfSorrow (http://www.montada.com/member.php?u=337591) :

الصراحة لا يا أخي .. أشتريت من دمشق قرص سيدي فيه برامج لتصميم الالعاب و كان فيه جيم ميكر و عدة برامج ممتازة اخرى .. فجلبته لما شاهدت تنصيب برنامج الاربي جي ميكر .. شاهدت ملفان واحد باللغة الانجليزية و الثاني مكتوب ارابيك .. و فيه طريقة التعريب و هي سهلة مجرد نقل الملف الى الملف الاصلي .. و بذلك تعرب البرنامج و أصبح أكثر أكثر أكثر سهولة من ما تتوقعه أخي .. و اعدك و كلمة رجل أنني سوف أرفع الملف المعرب لكم و حجمه 2 ميجا !! .. ولكن عندما أفرغ ان شاء الله .. اطلت عليك اسف ..

Dark Gamer (http://www.montada.com/member.php?u=309882) :

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

al moh
08-10-2007, 06:25 PM
يعمل 100/100

نصير1
16-05-2009, 05:15 PM
الصور لم تضهر
أرجو أن تعطينا الروابط

سامي.خ
16-05-2009, 06:02 PM
يمنع الرد على المواضيع القديمة التي مضى على آخر رد فيها أكثر من 3 أشهر

مغلق