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

مشاهدة النسخة كاملة : [اسكربات] المرجع الاول لإسكربات الـ RPG Maker XP



.AJ.
27-05-2007, 02:40 PM
بسم الله الرحمن الرحيم


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




في حالت وجود اي استفسارات بشان الاسكربت ضع استفسارك في موضوع الطلبات و المساعدات (http://www.montada.com/showthread.php?t=446152)مع ذكر المشكله و اسم الاسكربت في حالت ارت ان تشكرنا على السكربات والله افضل مكان هو في موضوع درداشت اعضاء منتدى صناعة الالعاب (http://www.montada.com/showthread.php?t=516120) حتى لا يضر شكل الموضوع.




عليك في المشركات ان تحدد اسم كاتب الاسكربت و المصدر في حالت عدم معرفتك كاتب الاسكربت ضع فقط المصدر
عليك أيضا ذكر وظيفة الاسكربت و طريقة عمله وكفيت وضعه


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




ارجو من المراقبين حذف اي مشاركه لا تخص الموضوع

.AJ.
27-05-2007, 02:45 PM
أسكربت التحكم بالأعضاء


الكاتب: Fomar0153

المصدر: http://www.rmxp.org (http://www.rmxp.org)




المقدمه:
الاسكربت يسمح لك بإضافة المزيد من اللعبين يتعدى 4 لعبين ويمكنك أيضاً تبديل أماكنهم.




كيفية الوضع:
ضع الاسكربت فوق اسكربت Main و تحت كل الاسكربات الاصليه.




الكود:





class Game_Party

Max_Party_Size = 8

def max_party_size
return Max_Party_Size
end

defadd_actor(actor_id)
actor = $game_actors[actor_id]
if not @actors.include?(actor) and $game_party.actors.size < Max_Party_Size
@actors.push(actor)
$game_player.refresh
end
end

def all_dead?
if $game_party.actors.size == 0
returnfalse
end
for actor in @actors
if actor.hp > 0
return false
end
if actor.index >= 4
return true
end
end
return true
end
end

class Scene_Menu

alias party_swap_update_commandupdate_command
def update_command
party_swap_update_command
if Input.trigger?(Input::LEFT) or Input.trigger?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
@previous_index = @command_window.index
@command_window.index = -1
@command_window.active = false
@status_window.active = true
@status_window.index = @status_window.top_row
return
end
end

alias party_swap_update_status update_status
defupdate_status
if Input.trigger?(Input::B)
unless @swapee != nil
$game_system.se_play($data_system.cancel_se)
if @command_window.index == -1
@command_window.index = @previous_index
end
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
@swapee = nil
return
end
if Input.trigger?(Input::C) and @command_window.index == -1
unless @swapee != nil
@swapee = @status_window.index
$game_system.se_play($data_system.decision_se)
return
end
if @swapee == @status_window.index
$game_system.se_play($data_system.decision_se)
@swapee = nil
return
end
$game_system.se_play($data_system.decision_se)
party_ids = []
for actor in $game_party.actors
party_ids.push(actor.id)
end
swapee2 = @status_window.index
if @swapee < swapee2
for i in @swapee...party_ids.size
$game_party.remove_actor(party_ids[i])
end
$game_party.add_actor(party_ids[swapee2])
for i in (@swapee + 1)...party_ids.size
unless i == swapee2
$game_party.add_actor(party_ids[i])
else
$game_party.add_actor(party_ids[@swapee])
end
end
else
for i in swapee2...party_ids.size
$game_party.remove_actor(party_ids[i])
end
$game_party.add_actor(party_ids[@swapee])
for i in (swapee2 + 1)...party_ids.size
unless i == @swapee
$game_party.add_actor(party_ids[i])
else
$game_party.add_actor(party_ids[swapee2])
end
end
end
@swapee = nil
@status_window.refresh
return
end
if Input.trigger?(Input::LEFT) orInput.trigger?(Input::RIGHT)
if @swapee == nil and @command_window.index == -1
$game_system.se_play($data_system.cursor_se)
@command_window.index = @previous_index
@command_window.active = true
@status_window.active = false
@status_window.index = -1
end
end
party_swap_update_status
end


end

class Window_MenuStatus < Window_Selectable

definitialize
unless $game_party.actors.size > 4
super(0, 0, 480, 480)
else
super(0, 0, 480, 160 * $game_party.actors.size)
end
self.contents = Bitmap.new(width - 32, height - 32)
refresh
self.active = false
self.index = -1
end

alias large_refresh refresh
def refresh
large_refresh
self.height = 480
end

defupdate_cursor_rect
if @index < 0
self.cursor_rect.empty
return
end
row = @index / @column_max
if row < self.top_row
self.top_row = row
end
if row > self.top_row + (self.page_row_max - 1)
self.top_row = row - (self.page_row_max - 1)
end
cursor_width = self.width / @column_max - 32
x = @index % @column_max * (cursor_width + 32)
y = @index / @column_max * 116 - self.oy
self.cursor_rect.set(x, y, cursor_width, 96)
end

deftop_row
return self.oy / 116
end

def top_row=(row)
if row < 0
row = 0
end
if row > row_max - 1
row = row_max - 1
end
self.oy = row * 116
end

def page_row_max
return 4
end
end

classScene_Battle
def phase3_next_actor
begin
if @active_battler != nil
@active_battler.blink = false
end
if @actor_index == ([$game_party.actors.size, 4].min - 1)
start_phase4
return
end
@actor_index += 1
@active_battler = $game_party.actors[@actor_index]
@active_battler.blink = true
end until @active_battler.inputable?
phase3_setup_command_window
end

end

class Game_Actor < Game_Battler
def exist?
return super == self.index < 4
end
end




كيفية الاستخدام:



في السطر الثالث هناك الكود



Max_Party_Size = 8



قم بتبدل الرقم لتغير العدد النهائي للاعضاء حاليا العدد النهئي للاعبين هو 8



قم بإضافة اللعبين باستخدام امر Change party members من قائمة الاحداث Event list
لتبدل اللاعبين افتح menu إضغط زر اليمين او اليسار للانتقال الى الشخصيات




http://i4.photobucket.com/albums/y139/Fomar0153/partychanging03.png




انزل الاسفل وسترى ان كل اللاعبين موجودين في الاسفل اختر اللاعب الذي تريد ان تبدله وإضغط عليه



http://i4.photobucket.com/albums/y139/Fomar0153/partychanging04.png



اختر اللاعب الاخر


http://i4.photobucket.com/albums/y139/Fomar0153/partychanging05.png




إضغط عليه ليتبدل



http://i4.photobucket.com/albums/y139/Fomar0153/partychanging06.png


تم التبديل بنجاح


كلمه أخيره من صاحب الاسكربت

.AJ.
27-05-2007, 02:54 PM
أسكربت نظام القتال الجانبي

المصدر: Rye For The Script



المقدمه:

الاسكربت يجعل المقاتلين يظهرون من الجانب في القتال مثل الموضح في الصوره
http://img171.imageshack.us/img171/6994/asbsax4.png




كيفية الوضع:

ضع الاسكربت فوق اسكربت Main و تحت كل الاسكربات الاصليه.



الكود:

الكود طويل بعض الشيء لذا وضعته في ملف txt يمكنك تحميله من المرفقات (http://www.montada.com/attachment.php?attachmentid=283627&stc=1&d=1180266816)

.AJ.
27-05-2007, 03:02 PM
أسكربت السلاحين

الكاتب: Fomar0153

المصدر: http://www.rmxp.org (http://www.rmxp.org/)







المقدمه:

الاسكربت يسمح لك بإستخدام سلاحين عوضن عن سلاح واحد حيث سيضرب اللاعب مرتين بدل مره واحده لكن في حالت وضع سلاحين يتم إزالة درع اللاعب من اليد الأخرى.









كيفية الوضع:

ضع الاسكربت فوق اسكربت Main و تحت كل الاسكربات الاصليه.







الكود:




class Game_Actor < Game_Battler

attr_accessor :two_weapons
attr_accessor :sec_attack

alias before_fomar_two_weapons_setup setup
def setup(actor_id)
before_fomar_two_weapons_setup(actor_id)
@two_weapons = false
@sec_attack = false
end

def hand_check
if @weapon_id == 0 and @two_weapons == true
@weapon_id = @armor1_id
@armor1_id = 0
@two_weapons = false
end
end

def equip(equip_type, item)

if item == 0
id = 0
else
id = item.id
end


case equip_type
when 0 # Weapon
if id == 0 or $game_party.weapon_number(id) > 0
$game_party.gain_weapon(@weapon_id, 1)
@weapon_id = id
$game_party.lose_weapon(id, 1)
end
when 1 # Shield
if item.is_a?(RPG::Weapon)
if @weapon_id == 0
@weapon_id = id
$game_party.lose_weapon(id, 1)
else
if @two_weapons == true
$game_party.gain_weapon(@armor1_id, 1)
else
$game_party.gain_armor(@armor1_id, 1)
end
@armor1_id = id
$game_party.lose_weapon(id, 1)
@two_weapons = true
end
else # RPG::Armor
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor1_id], $data_armors[id])
if @two_weapons == true
$game_party.gain_weapon(@armor1_id, 1)
@two_weapons = false
else
$game_party.gain_armor(@armor1_id, 1)
end
@armor1_id = id
$game_party.lose_armor(id, 1)
end
end
when 2 # Head
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor2_id], $data_armors[id])
$game_party.gain_armor(@armor2_id, 1)
@armor2_id = id
$game_party.lose_armor(id, 1)
end
when 3 # Body
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor3_id], $data_armors[id])
$game_party.gain_armor(@armor3_id, 1)
@armor3_id = id
$game_party.lose_armor(id, 1)
end
when 4 # Accessory
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@armor4_id], $data_armors[id])
$game_party.gain_armor(@armor4_id, 1)
@armor4_id = id
$game_party.lose_armor(id, 1)
end
end
end

def element_rate(element_id)
# Get values corresponding to element effectiveness
table = [0,200,150,100,50,0,-100]
result = table[$data_classes[@class_id].element_ranks[element_id]]
# If this element is protected by armor, then it's reduced by half


# MODIFIED
#for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
# armor = $data_armors[i]
# if armor != nil and armor.guard_element_set.include?(element_id)
# result /= 2
# end
#end

unless @two_weapons == true
armor_ids = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
else
armor_ids = [@armor2_id, @armor3_id, @armor4_id]
end

for i in armor_ids
armor = $data_armors[i]
if armor != nil and armor.guard_element_set.include?(element_id)
result /= 2
end
end

# END OF MODIFIED SECTION


# If this element is protected by states, then it's reduced by half
for i in @states
if $data_states[i].guard_element_set.include?(element_id)
result /= 2
end
end
# End Method
return result
end

def state_guard?(state_id)
# MODIFIED
#for i in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]

unless @two_weapons == true
armor_ids = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
else
armor_ids = [@armor2_id, @armor3_id, @armor4_id]
end

for i in armor_ids

# END OF MODIFIED SECTION

armor = $data_armors[i]
if armor != nil
if armor.guard_state_set.include?(state_id)
return true
end
end
end
return false
end

def element_set
# MODIFIED
#weapon = $data_weapons[@weapon_id]
unless sec_attack == true
weapon = $data_weapons[@weapon_id]
else
weapon = $data_weapons[@armor1_id]
end


# END OF MODIFIED SECTION

return weapon != nil ? weapon.element_set : []
end

def plus_state_set
# MODIFIED
#weapon = $data_weapons[@weapon_id]
unless sec_attack == true
weapon = $data_weapons[@weapon_id]
else
weapon = $data_weapons[@armor1_id]
end


# END OF MODIFIED SECTION
return weapon != nil ? weapon.plus_state_set : []
end

def minus_state_set
# MODIFIED
#weapon = $data_weapons[@weapon_id]
unless sec_attack == true
weapon = $data_weapons[@weapon_id]
else
weapon = $data_weapons[@armor1_id]
end


# END OF MODIFIED SECTION
return weapon != nil ? weapon.minus_state_set : []
end

def base_str
n = $data_actors[@actor_id].parameters[2, @level]
weapon = $data_weapons[@weapon_id]
# MODIFIED
#armor1 = $data_armors[@armor1_id]
unless @two_weapons == true
armor1 = $data_armors[@armor1_id]
else
armor1 = $data_weapons[@armor1_id]
end
# END OF MODIFIED SECTION
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
n += weapon != nil ? weapon.str_plus : 0
n += armor1 != nil ? armor1.str_plus : 0
n += armor2 != nil ? armor2.str_plus : 0
n += armor3 != nil ? armor3.str_plus : 0
n += armor4 != nil ? armor4.str_plus : 0
return [[n, 1].max, 999].min
end

def base_dex
n = $data_actors[@actor_id].parameters[3, @level]
weapon = $data_weapons[@weapon_id]
# MODIFIED
#armor1 = $data_armors[@armor1_id]
unless @two_weapons == true
armor1 = $data_armors[@armor1_id]
else
armor1 = $data_weapons[@armor1_id]
end
# END OF MODIFIED SECTION
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
n += weapon != nil ? weapon.dex_plus : 0
n += armor1 != nil ? armor1.dex_plus : 0
n += armor2 != nil ? armor2.dex_plus : 0
n += armor3 != nil ? armor3.dex_plus : 0
n += armor4 != nil ? armor4.dex_plus : 0
return [[n, 1].max, 999].min
end

def base_agi
n = $data_actors[@actor_id].parameters[4, @level]
weapon = $data_weapons[@weapon_id]
# MODIFIED
#armor1 = $data_armors[@armor1_id]
unless @two_weapons == true
armor1 = $data_armors[@armor1_id]
else
armor1 = $data_weapons[@armor1_id]
end
# END OF MODIFIED SECTION
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
n += weapon != nil ? weapon.agi_plus : 0
n += armor1 != nil ? armor1.agi_plus : 0
n += armor2 != nil ? armor2.agi_plus : 0
n += armor3 != nil ? armor3.agi_plus : 0
n += armor4 != nil ? armor4.agi_plus : 0
return [[n, 1].max, 999].min
end

def base_int
n = $data_actors[@actor_id].parameters[5, @level]
weapon = $data_weapons[@weapon_id]
# MODIFIED
#armor1 = $data_armors[@armor1_id]
unless @two_weapons == true
armor1 = $data_armors[@armor1_id]
else
armor1 = $data_weapons[@armor1_id]
end
# END OF MODIFIED SECTION
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
n += weapon != nil ? weapon.int_plus : 0
n += armor1 != nil ? armor1.int_plus : 0
n += armor2 != nil ? armor2.int_plus : 0
n += armor3 != nil ? armor3.int_plus : 0
n += armor4 != nil ? armor4.int_plus : 0
return [[n, 1].max, 999].min
end

def base_atk
# MODIFIED
#weapon = $data_weapons[@weapon_id]
unless sec_attack == true
weapon = $data_weapons[@weapon_id]
else
weapon = $data_weapons[@armor1_id]
end
# END OF MODIFIED SECTION
return weapon != nil ? weapon.atk : 0
end

def base_pdef
weapon = $data_weapons[@weapon_id]
# MODIFIED
#armor1 = $data_armors[@armor1_id]
unless @two_weapons == true
armor1 = $data_armors[@armor1_id]
else
armor1 = $data_weapons[@armor1_id]
end
# END OF MODIFIED SECTION
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
pdef1 = weapon != nil ? weapon.pdef : 0
pdef2 = armor1 != nil ? armor1.pdef : 0
pdef3 = armor2 != nil ? armor2.pdef : 0
pdef4 = armor3 != nil ? armor3.pdef : 0
pdef5 = armor4 != nil ? armor4.pdef : 0
return pdef1 + pdef2 + pdef3 + pdef4 + pdef5
end

def base_mdef
weapon = $data_weapons[@weapon_id]
# MODIFIED
#armor1 = $data_armors[@armor1_id]
unless @two_weapons == true
armor1 = $data_armors[@armor1_id]
else
armor1 = $data_weapons[@armor1_id]
end
# END OF MODIFIED SECTION
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
mdef1 = weapon != nil ? weapon.mdef : 0
mdef2 = armor1 != nil ? armor1.mdef : 0
mdef3 = armor2 != nil ? armor2.mdef : 0
mdef4 = armor3 != nil ? armor3.mdef : 0
mdef5 = armor4 != nil ? armor4.mdef : 0
return mdef1 + mdef2 + mdef3 + mdef4 + mdef5
end

def base_eva
# MODIFIED
#armor1 = $data_armors[@armor1_id]
unless @two_weapons == true
armor1 = $data_armors[@armor1_id]
else
armor1 = nil
end
# END OF MODIFIED SECTION
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
eva1 = armor1 != nil ? armor1.eva : 0
eva2 = armor2 != nil ? armor2.eva : 0
eva3 = armor3 != nil ? armor3.eva : 0
eva4 = armor4 != nil ? armor4.eva : 0
return eva1 + eva2 + eva3 + eva4
end

def animation1_id
# MODIFIED
#weapon = $data_weapons[@weapon_id]
unless sec_attack == true
weapon = $data_weapons[@weapon_id]
else
weapon = $data_weapons[@armor1_id]
end
# END OF MODIFIED SECTION
return weapon != nil ? weapon.animation1_id : 0
end

def animation2_id
# MODIFIED
#weapon = $data_weapons[@weapon_id]
unless sec_attack == true
weapon = $data_weapons[@weapon_id]
else
weapon = $data_weapons[@armor1_id]
end
# END OF MODIFIED SECTION
return weapon != nil ? weapon.animation2_id : 0
end

end


class Window_EquipItem < Window_Selectable
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# Add equippable weapons
if @equip_type == 0
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
@data.push($data_weapons[i])
end
end
end
# Add equippable armor
if @equip_type != 0
# MODIFIED
if @equip_type == 1
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
@data.push($data_weapons[i])
end
end
end
# END OF MODIFIED SECTION
armor_set = $data_classes[@actor.class_id].armor_set
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and armor_set.include?(i)
if $data_armors[i].kind == @equip_type-1
@data.push($data_armors[i])
end
end
end
end
# Add blank page
@data.push(nil)
# Make a bit map and draw all items
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max-1
draw_item(i)
end
end
end


class Window_EquipRight < Window_Selectable
def refresh
self.contents.clear
@data = []
@data.push($data_weapons[@actor.weapon_id])
# MODIFIED
#@data.push($data_armors[@actor.armor1_id])
unless @actor.two_weapons == true
@data.push($data_armors[@actor.armor1_id])
else
@data.push($data_weapons[@actor.armor1_id])
end
# END OF MODIFIED SECTION
@data.push($data_armors[@actor.armor2_id])
@data.push($data_armors[@actor.armor3_id])
@data.push($data_armors[@actor.armor4_id])
@item_max = @data.size
self.contents.font.color = system_color
self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon)
self.contents.draw_text(4, 32 * 1, 92, 32, $data_system.words.armor1)
self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2)
self.contents.draw_text(4, 32 * 3, 92, 32, $data_system.words.armor3)
self.contents.draw_text(5, 32 * 4, 92, 32, $data_system.words.armor4)
draw_item_name(@data[0], 92, 32 * 0)
draw_item_name(@data[1], 92, 32 * 1)
draw_item_name(@data[2], 92, 32 * 2)
draw_item_name(@data[3], 92, 32 * 3)
draw_item_name(@data[4], 92, 32 * 4)
end
end


class Scene_Equip
def update


# Update windows
@left_window.update
@right_window.update
@item_window.update
refresh
# If right window is active: call update_right
if @right_window.active
update_right
return
end
# If item window is active: call update_item
if @item_window.active
update_item
return
end
end


def update_item
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Activate right window
@right_window.active = true
@item_window.active = false
@item_window.index = -1
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play equip SE
$game_system.se_play($data_system.equip_se)
# Get currently selected data on the item window
item = @item_window.item
# Change equipment
@actor.equip(@right_window.index, item == nil ? 0 : item)

@actor.hand_check

# Activate right window
@right_window.active = true
@item_window.active = false
@item_window.index = -1
# Remake right window and item window contents
@right_window.refresh
@item_window.refresh
@item_window1.refresh
@item_window2.refresh
return
end
end
end


class Window_Status < Window_Base
def refresh
self.contents.clear
draw_actor_graphic(@actor, 40, 112)
draw_actor_name(@actor, 4, 0)
draw_actor_class(@actor, 4 + 144, 0)
draw_actor_level(@actor, 96, 32)
draw_actor_state(@actor, 96, 64)
draw_actor_hp(@actor, 96, 112, 172)
draw_actor_sp(@actor, 96, 144, 172)
draw_actor_parameter(@actor, 96, 192, 0)
draw_actor_parameter(@actor, 96, 256, 1)
draw_actor_parameter(@actor, 96, 288, 2)
draw_actor_parameter(@actor, 96, 320, 3)
draw_actor_parameter(@actor, 96, 352, 4)
draw_actor_parameter(@actor, 96, 384, 5)
draw_actor_parameter(@actor, 96, 416, 6)
draw_actor_parameter(@actor, 96, 224, 7)
self.contents.font.color = system_color
self.contents.draw_text(320, 48, 80, 32, "EXP")
self.contents.draw_text(320, 80, 80, 32, "NEXT")
self.contents.font.color = normal_color
self.contents.draw_text(320 + 80, 48, 84, 32, @actor.exp_s, 2)
self.contents.draw_text(320 + 80, 80, 84, 32, @actor.next_rest_exp_s, 2)
self.contents.font.color = system_color
self.contents.draw_text(320, 160, 96, 32, "equipment")
draw_item_name($data_weapons[@actor.weapon_id], 320 + 16, 208)
# MODIFIED
#draw_item_name($data_armors[@actor.armor1_id], 320 + 16, 256)
unless @actor.two_weapons == true
draw_item_name($data_armors[@actor.armor1_id], 320 + 16, 256)
else
draw_item_name($data_weapons[@actor.armor1_id], 320 + 16, 256)
end
# END OF MODIFIED SECTION
draw_item_name($data_armors[@actor.armor2_id], 320 + 16, 304)
draw_item_name($data_armors[@actor.armor3_id], 320 + 16, 352)
draw_item_name($data_armors[@actor.armor4_id], 320 + 16, 400)
end
end

class Window_Base < Window
def draw_actor_parameter(actor, x, y, type)
case type
when 0
parameter_name = $data_system.words.atk
parameter_value = actor.atk
when 1
parameter_name = $data_system.words.pdef
parameter_value = actor.pdef
when 2
parameter_name = $data_system.words.mdef
parameter_value = actor.mdef
when 3
parameter_name = $data_system.words.str
parameter_value = actor.str
when 4
parameter_name = $data_system.words.dex
parameter_value = actor.dex
when 5
parameter_name = $data_system.words.agi
parameter_value = actor.agi
when 6
parameter_name = $data_system.words.int
parameter_value = actor.int
when 7
parameter_name = $data_system.words.atk
if actor.two_weapons == true
actor.sec_attack = true
parameter_value = actor.atk
actor.sec_attack = false
else
parameter_value = 0
end
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
end
end


class Scene_Battle

alias before_fomar_start_phase4 start_phase4
def start_phase4
for actor in $game_party.actors
actor.sec_attack = false
end
before_fomar_start_phase4
end

def update_phase4_step6
# Clear battler being forced into action
$game_temp.forcing_battler = nil
# If common event ID is valid
if @common_event_id > 0
# Set up event
common_event = $data_common_events[@common_event_id]
$game_system.battle_interpreter.setup(common_event.list, 0)
end

if @active_battler.is_a?(Game_Actor) and @active_battler.current_action.kind == 0
if @active_battler.two_weapons == true and @active_battler.sec_attack == false
unless judge
@active_battler.sec_attack = true
@phase4_step = 2
return
end
end
end


# Shift to step 1
@phase4_step = 1
end
end
class Scene_Equip
def refresh
# Set item window to visible
@item_window1.visible = (@right_window.index == 0)
@item_window2.visible = (@right_window.index == 1)
@item_window3.visible = (@right_window.index == 2)
@item_window4.visible = (@right_window.index == 3)
@item_window5.visible = (@right_window.index == 4)
# Get currently equipped item
item1 = @right_window.item
# Set current item window to @item_window
case @right_window.index
when 0
@item_window = @item_window1
when 1
@item_window = @item_window2
when 2
@item_window = @item_window3
when 3
@item_window = @item_window4
when 4
@item_window = @item_window5
end
item2 = @item_window.item
# If right window is active
if @right_window.active
# Erase parameters for after equipment change
@left_window.set_new_parameters(nil, nil, nil, nil)
end
# If item window is active
if @item_window.active
if item2 == nil
id = 0
else
id = item2.id
end

new_atk = @actor.new_atk(@right_window.index, id)
new_atk2 = @actor.new_atk2(@right_window.index, id, item2.is_a?(RPG::Weapon))
new_pdef = @actor.new_pdef(@right_window.index, id, item2.is_a?(RPG::Weapon))
new_mdef = @actor.new_mdef(@right_window.index, id, item2.is_a?(RPG::Weapon))

@left_window.set_new_parameters(new_atk, new_atk2, new_pdef, new_mdef)
end
end
end

class Game_Actor < Game_Battler

def new_atk(index, id)
if index == 0
weapon = $data_weapons[id]
else
weapon = $data_weapons[@weapon_id]
end
return weapon != nil ? weapon.atk : 0
end

def new_atk2(index, id, weapony = false)
if index == 1
if weapony == false
return 0
end
weapon = $data_weapons[id]
else
if @two_weapons == true
weapon = $data_weapons[@armor1_id]
end
end
return weapon != nil ? weapon.atk : 0
end

def new_pdef(index, id, weapony = false)
weapon = $data_weapons[@weapon_id]
unless @two_weapons == true
armor1 = $data_armors[@armor1_id]
else
armor1 = $data_weapons[@armor1_id]
end
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
case index
when 0
weapon = $data_weapons[id]
when 1
unless weapony == true
armor1 = $data_armors[id]
else
armor1 = $data_weapons[id]
end
when 2
armor2 = $data_armors[id]
when 3
armor3 = $data_armors[id]
when 4
armor4 = $data_armors[id]
end
pdef1 = weapon != nil ? weapon.pdef : 0
pdef2 = armor1 != nil ? armor1.pdef : 0
pdef3 = armor2 != nil ? armor2.pdef : 0
pdef4 = armor3 != nil ? armor3.pdef : 0
pdef5 = armor4 != nil ? armor4.pdef : 0
return pdef1 + pdef2 + pdef3 + pdef4 + pdef5
end

def new_mdef(index, id, weapony = false)
weapon = $data_weapons[@weapon_id]
unless @two_weapons == true
armor1 = $data_armors[@armor1_id]
else
armor1 = $data_weapons[@armor1_id]
end
armor2 = $data_armors[@armor2_id]
armor3 = $data_armors[@armor3_id]
armor4 = $data_armors[@armor4_id]
case index
when 0
weapon = $data_weapons[id]
when 1
unless weapony == true
armor1 = $data_armors[id]
else
armor1 = $data_weapons[id]
end
when 2
armor2 = $data_armors[id]
when 3
armor3 = $data_armors[id]
when 4
armor4 = $data_armors[id]
end
mdef1 = weapon != nil ? weapon.mdef : 0
mdef2 = armor1 != nil ? armor1.mdef : 0
mdef3 = armor2 != nil ? armor2.mdef : 0
mdef4 = armor3 != nil ? armor3.mdef : 0
mdef5 = armor4 != nil ? armor4.mdef : 0
return mdef1 + mdef2 + mdef3 + mdef4 + mdef5
end
end


class Window_EquipLeft < Window_Base

def refresh
self.contents.clear
self.contents.font.size = 22
draw_actor_name(@actor, 4, 0)
draw_actor_level(@actor, 4, 32)
draw_actor_parameter(@actor, 4, 64, 0)
@actor.sec_attack = true
draw_actor_parameter(@actor, 4, 86, 7)
@actor.sec_attack = false

draw_actor_parameter(@actor, 4, 108, 1)
draw_actor_parameter(@actor, 4, 130, 2)
if @new_atk != nil
self.contents.font.color = system_color
self.contents.draw_text(160, 64, 40, 32, "->", 1)
self.contents.font.color = normal_color
self.contents.draw_text(200, 64, 36, 32, @new_atk.to_s, 2)
end
if @new_pdef != nil
self.contents.font.color = system_color
self.contents.draw_text(160, 108, 40, 32, "->", 1)
self.contents.font.color = normal_color
self.contents.draw_text(200, 108, 36, 32, @new_pdef.to_s, 2)
end
if @new_mdef != nil
self.contents.font.color = system_color
self.contents.draw_text(160, 130, 40, 32, "->", 1)
self.contents.font.color = normal_color
self.contents.draw_text(200, 130, 36, 32, @new_mdef.to_s, 2)
end

if @new_atk2 != nil
self.contents.font.color = system_color
self.contents.draw_text(160, 86, 40, 32, "->", 1)
self.contents.font.color = normal_color
self.contents.draw_text(200, 86, 36, 32, @new_atk2.to_s, 2)
end
end

def set_new_parameters(new_atk, new_atk2, new_pdef, new_mdef)
if @new_atk != new_atk or @new_atk2 != new_atk2 or @new_pdef != new_pdef or @new_mdef != new_mdef
@new_atk = new_atk
@new_atk2 = new_atk2
@new_pdef = new_pdef
@new_mdef = new_mdef
refresh
end
end
end





كيفية الاستخدام:
إذهب الى Equip اخر الشخصيه ثم اختر الدرع (يمكنك تبديل اسمه في DataBese ) ثم اختر و سترى انه يمكنك إضافة سلاح او درع

.AJ.
27-05-2007, 03:46 PM
أسكربت الظل

الكاتب: Rataime

المصدر: http://www.rmxp.org (http://www.rmxp.org)




المقدمه:

الاسكربت يسمح لك بإضافة مؤثرات الظل لكل الشخصيات في الخريطه.




كيفية الوضع:

ضع الاسكربت فوق اسكربت Main و تحت كل الاسكربات الاصليه.



الكود:





#==============================================================================
# ■ Sprite_Shadow (Sprite_Ombre )
# Based on Genzai Kawakami's shadows, dynamisme&features by Rataime, extra features Boushy
#==============================================================================


CATERPILLAR_COMPATIBLE = true
SHADOW_WARN = true


class Game_Party
attr_reader :characters
end


class Sprite_Shadow < RPG::Sprite


attr_accessor :character

def initialize(viewport, character = nil,id=0)
super(viewport)
params=$shadow_spriteset.shadows[id]
@source=params[0]
@anglemin=0
@anglemin=params[1] if params.size>1
@anglemax=0
@anglemax=params[2] if params.size>2
@self_opacity=100
@self_opacity=params[4] if params.size>4
@distancemax=350
@distancemax=params[3] if params.size>3
@character = character
update
end

def update


if !in_range?(@character, @source, @distancemax)
self.opacity=0
return
end
super

if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_hue != @character.character_hue
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
if @tile_id >= 384
self.bitmap = RPG::Cache.tile($game_map.tileset_name,
@tile_id, @character.character_hue)
self.src_rect.set(0, 0, 32, 32)
self.ox = 16
self.oy = 32
else
self.bitmap = RPG::Cache.character(@character.character_name,
@character.character_hue)
@cw = bitmap.width / 4
@ch = bitmap.height / 4
self.ox = @cw / 2
self.oy = @ch
end
end
self.visible = (not @character.transparent)
if @tile_id == 0
sx = @character.pattern * @cw
sy = (@character.direction - 2) / 2 * @ch
if self.angle>90 or angle<-90
if @character.direction== 6
sy = ( 4- 2) / 2 * @ch
end
if @character.direction== 4
sy = ( 6- 2) / 2 * @ch
end
if @character.direction== 2
sy = ( 8- 2) / 2 * @ch
end
if @character.direction== 8
sy = ( 2- 2) / 2 * @ch
end
end
self.src_rect.set(sx, sy, @cw, @ch)
end
self.x = @character.screen_x
self.y = @character.screen_y-5
self.z = @character.screen_z(@ch)-1
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
if @character.animation_id != 0
animation = $data_animations[@character.animation_id]
animation(animation, true)
@character.animation_id = 0
end
@deltax=@source.screen_x-self.x
@deltay= @source.screen_y-self.y
self.color = Color.new(0, 0, 0)
@distance = ((@deltax ** 2) + (@deltay ** 2))
self.opacity = @self_opacity*13000/((@distance*370/@distancemax)+6000)
self.angle = 57.3*Math.atan2(@deltax, @deltay )
@angle_trigo=self.angle+90
if @angle_trigo<0
@angle_trigo=360+@angle_trigo
end
if @anglemin !=0 or @anglemax !=0
if (@angle_trigo<@anglemin or @angle_trigo>@anglemax) and @anglemin<@anglemax
self.opacity=0
return
end
if (@angle_trigo<@anglemin and @angle_trigo>@anglemax) and @anglemin>@anglemax
self.opacity=0
return
end
end
end

def in_range?(element, object, range)# From Near's Anti Lag Script, edited
x = (element.screen_x - object.screen_x) * (element.screen_x - object.screen_x)
y = (element.screen_y - object.screen_y) * (element.screen_y - object.screen_y)
r = x + y
if r <= (range * range)
return true
else
return false
end
end

end


#===================================================
# ▼ CLASS Sprite_Character edit
#===================================================


class Sprite_Character < RPG::Sprite
alias shadow_initialize initialize

def initialize(viewport, character = nil)
@character = character
super(viewport)
@ombrelist=[]
if character.is_a?(Game_Event) and $shadow_spriteset.shadows!=[]
params = XPML_read("Shadow",@character.id,4)
if params!=nil
for i in 0...$shadow_spriteset.shadows.size
@ombrelist.push(Sprite_Shadow.new(viewport, @character,i))
end
end
end
if character.is_a?(Game_Player) and $shadow_spriteset.shadows!=[]
for i in 0...$shadow_spriteset.shadows.size
@ombrelist.push(Sprite_Shadow.new(viewport, $game_player,i))
end
#===================================================
# ● Compatibility with fukuyama's caterpillar script
#===================================================
if CATERPILLAR_COMPATIBLE and $game_party.characters!=nil
for member in $game_party.characters
for i in 0...$shadow_spriteset.shadows.size
@ombrelist.push(Sprite_Shadow.new(viewport, member,i))
end
end
end
#===================================================
# ● End of the compatibility
#===================================================
end
shadow_initialize(viewport, @character)
end

alias shadow_update update

def update
shadow_update
if @ombrelist!=[]
for i in 0...@ombrelist.size
@ombrelist[i].update
end
end
end

end


#===================================================
# ▼ CLASS Game_Event edit
#===================================================
class Game_Event
attr_accessor :id
end


#===================================================
# ▼ CLASS Spriteset_Map edit
#===================================================
class Spriteset_Map
attr_accessor :shadows
alias shadow_initialize initialize

def initialize
$shadow_spriteset=self
@shadows=[]
warn=false
for k in $game_map.events.keys.sort
warn=true if ($game_map.events[k].list!=nil and $game_map.events[k].list[0].code == 108 and ($game_map.events[k].list[0].parameters == ["s"] or $game_map.events[k].list[0].parameters == ["o"]))
params = XPML_read("Shadow Source",k,4)
$shadow_spriteset.shadows.push([$game_map.events[k]]+params) if params!=nil
end
p "Warning : At least one event on this map uses the obsolete way to add shadows" if warn == true and SHADOW_WARN
shadow_initialize
end
end





#===================================================
# ▼ XPML Definition, by Rataime, using ideas from Near Fantastica
#
# Returns nil if the markup wasn't present at all,
# returns [] if there wasn't any parameters, else
# returns a parameters list with "int" converted as int
# eg :
# begin first
# begin second
# param1 1
# param2 two
# begin third
# anything 3
#
# p XPML_read("first", event_id) -> []
# p XPML_read("second", event_id) -> [1,"two"]
# p XPML_read("third", event_id) -> [3]
# p XPML_read("forth", event_id) -> nil
#===================================================


def XPML_read(markup,event_id,max_param_number=0)
parameter_list = nil
event=$game_map.events[event_id]
return if event.list==nil
for i in 0...event.list.size
if event.list[i].code == 108 and event.list[i].parameters[0].downcase == "begin "+markup.downcase
parameter_list = [] if parameter_list == nil
for j in i+1...event.list.size
if event.list[j].code == 108
parts = event.list[j].parameters[0].split
if parts.size!=1 and parts[0].downcase!="begin"
if parts[1].to_i!=0 or parts[1]=="0"
parameter_list.push(parts[1].to_i)
else
parameter_list.push(parts[1])
end
else
return parameter_list
end
else
return parameter_list
end
return parameter_list if max_param_number!=0 and j==i+max_param_number
end
end
end
return parameter_list
end




كيفية الاستخدام:

اولا يجب عليك تحديد مصدر الضوء بإضافة comment للحدث event على الخريطه.


begin Shadow Source



والان ضيف لكل event تريد ان يظهر ظله comment


begin Shadow

.AJ.
27-05-2007, 04:06 PM
أسكربت الظل


الكاتب: fukuyama

المصدر: http://www4.big.or.jp/~fukuyama/











المقدمه:


هل ارت يوما ان تجعل كل اصدقائك يمشون معك في الخريطه خلفك؟ مثل فاينل فانتسي؟ فإذا هذا هو الاسكربت الذي تبحث عنه انت الاسكربت يجعل كل الاعضاء الذين مع يمشون خلفك.


http://www.montada.com/attachment.php?attachmentid=283642&stc=1&d=1180271013









كيفية الوضع:


ضع الاسكربت فوق اسكربت Main و تحت كل الاسكربات الاصليه.

الكود:













# 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

.AJ.
27-05-2007, 04:31 PM
أسكربت الموفي movie
الكاتب: غير معروف
المصدر: غير معروف

المقدمه:
الاسكربت يسمح لك بتشغيل الافلام في لعبتك لكن لا انصح به لأنه يحتوي على بعض المشاكل (الله أعلم يمكن يشتعل زين في لعبتك).

كيفية الوضع:
ضع الاسكربت فوق اسكربت Main و تحت كل الاسكربات الاصليه.

الكود:



class Scene_Movie
def initialize(movie)
@readini = Win32API.new 'kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l'
@movie_name = Dir.getwd()+"\\Movies\\"+movie+".avi (file://\\Movies\\)"
main
end

def main
game_name = "\0" * 256
@readini.call('Game','Title','',game_name,255,".\\Game.ini")
game_name.delete!("\0")
@wnd = Win32API.new('user32','FindWindowEx','%w(l,l,p,p)','L')
@temp = @wnd.call(0,0,nil,game_name).to_s
movie = Win32API.new('winmm','mciSendString','%w(p,p,l,l)','V')
movie.call("open \""<A href="mailto:+@movie_name+"\">+@movie_name+"\" alias FILE style 1073741824 parent " + @temp.to_s,0,0,0)
@message = Win32API.new('user32','SendMessage','%w(l,l,l,l)','V')

@detector = Win32API.new('user32','GetSystemMetrics','%w(l)','L')
@width = @detector.call(0)
if @width == 640
fullscreen
Graphics.update
sleep(1)
Graphics.update
sleep(1)
Graphics.update
sleep(1)
end

status = " " * 255
movie.call("play FILE",0,0,0)
loop do
sleep(0.1)
@message.call(@temp.to_i,11,0,0)
Graphics.update
@message.call(@temp.to_i,11,1,0)
Input.update
movie.call("status FILE mode",status,255,0)
true_status = status.unpack("aaaa")
if true_status.to_s != "play"
break
end
if Input.trigger?(Input::B)
Input.update
break
end
end
movie.call("close FILE",0,0,0)
bail
end

def bail
if @width == 640
fullscreen
end
end
end
def fullscreen()

$full.call(18,0,0,0)
$full.call(13,0,0,0)
$full.call(18,0,2,0)
$full.call(13,0,2,0)
end
$full = Win32API.new('user32','keybd_event','%w(l,l,l,l)','')

كيفية الاستخدام:
أولا أحفظ الموفي في ملف \Movies خلص للعبتك الملف يكون في نفس الفولدر
أحفظ الموفي بصيغة avi

ثم في Event الخريطه اضف اسكربت

Scene_Movie.new("NameOfTheFile")
ستبدل الكلام الملون بالاحمر باسم ملف الفلم

.AJ.
27-05-2007, 05:29 PM
أسكربت النهار و الليل
الكاتب: Deke
تعديل: Near Fantastica
المصدر: http://www.rmxp.org (http://www.rmxp.org)


المقدمه:
الاسكربت يسمح لك بإضافت مؤقت حيث ان الضوء يتغير من مع مرور الوقت و تلاحض ان الوقت يتغير من النهار الى الليل و حين تدخل الـ Menu تجد ان نافذة عد الخطوات تحولت الى ساعه مع تاريخ.

كيفية الوضع:
ضع الاسكربت فوق اسكربت Main و تحت كل الاسكربات الاصليه.


الكود:



#=======================================
# ■ class Game_Title
# written by Deke
# Rewiten by Near Fantastica
#------------------------------------------------------------------------------
#=======================================
class Game_Time
attr_accessor :minute_length

def initialize
@minute_length=2.0 #length of game minute in real seconds
@hour_length= 60.0 #minute in an hour
@day_length=24.0 #hours in a day
@month_length=30.0 #days in a month
@year_length=12.0 #months in a year
@minutes=0 #starting minute count
start_minute=56
add_minutes(start_minute)
start_hour=23 #starting hour count
add_hours(start_hour)
start_day=5 #starting day count
add_days(start_day)
start_month=1 #starting month count
add_months(start_month-1)
start_year=129 #starting year count
add_years(start_year)
end
def add_minutes(minutes)
@minutes +=minutes
end
def add_hours(hours)
@minutes +=hours*@hour_length
end
def add_days(days)
@minutes += days*@hour_length*@day_length
end
def add_months(months)
@minutes +=months * @hour_length*@day_length*@month_length
end
def add_years(years)
@minutes += years * @hour_length*@day_length*@month_length * @year_length
end


def get_year
minutes=get_total_minutes
year=minutes / @hour_length / @day_length / @month_length / @year_length
return year
end

def get_month
minutes=get_total_minutes
month=minutes / @hour_length / @day_length / @month_length % @year_length + 1
return month
end

def get_day
minutes=get_total_minutes
day=minutes / @hour_length / @day_length % @month_length
return day
end

def get_hour
minutes=get_total_minutes
hour=minutes / @hour_length % @day_length
return hour
end

def get_total_minutes
total_sec=Graphics.frame_count / Graphics.frame_rate
minute=(total_sec/@minute_length+@minutes)
return minute
end

def get_minute
minutes=get_total_minutes % @hour_length
return minutes
end
def get_tone
hour=get_hour.floor
minutes=get_minute + hour*@hour_length
phase_shift=Math::PI*(minutes/(@hour_length*@day_length))
illumination= -150+ 165*Math.sin(phase_shift)
tone=Tone.new(illumination,illumination,illumination,0)
return tone
end
end # of class Game_Time
#=======================================#
# ■ class Window_Time #
# written by Deke #
#------------------------------------------------------------------------------#
#=======================================#
class Window_Time < Window_Base
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 96)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $defaultfonttype # "Time" window font
self.contents.font.size = $defaultfontsize
refresh
end
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@total_sec = Graphics.frame_count / Graphics.frame_rate
@minute=$game_time.get_minute.floor
hour = $game_time.get_hour
pm_flag= hour >=12 ? true : false
hour= hour >= 12 ? hour-12 : hour
day=$game_time.get_day
month=$game_time.get_month
year=$game_time.get_year
if hour.floor==0
text=sprintf("%02d:%02d",12,@minute)
else
text=sprintf("%02d:%02d",hour,@minute)
end
if pm_flag
text += " PM"
else
text += " AM"
end
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, 120, 32, text, 2)
text = sprintf("%02d-%02d-%02d", month, day, year)
self.contents.font.color=system_color
self.contents.draw_text(4,32,120,32,text)
end
#--------------------------------------------------------------------------
def update
if $game_time.get_minute.floor != @minute
refresh
end
end
end # of class
#=======================================
class Game_Temp
#--------------------------------------------------------------------------
# ● Refer setup to Game Temp
#--------------------------------------------------------------------------
alias dns_game_temp_initalize initialize
#--------------------------------------------------------------------------
# ● Refer the Attr
#--------------------------------------------------------------------------
attr_reader :map_infos #Added Lines
attr_reader :outside_array #Added Lines
#--------------------------------------------------------------------------
# ● Refer setup to Scene Map
#--------------------------------------------------------------------------
def initialize
dns_game_temp_initalize
@outside_array = Array.new
@map_infos = load_data("Data/MapInfos.rxdata")
for key in @map_infos.keys
@outside_array[key] = @map_infos[key].name.include?("*")
end
end
end
#=======================================
class Scene_Map
#--------------------------------------------------------------------------
# ● Refer setup to Scene Map
#--------------------------------------------------------------------------
alias dns_scene_map_main main
alias dns_scene_map_update update
#--------------------------------------------------------------------------
# ● Main
#--------------------------------------------------------------------------
def main
if $game_temp.outside_array[$game_map.map_id]
tone=$game_time.get_tone
@minute=$game_time.get_minute.floor
$game_screen.start_tone_change(tone, 0)
end
dns_scene_map_main
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
conditional1 =$game_temp.outside_array[$game_map.map_id] and $game_time.get_minute.floor != @minute
conditional2 =$game_temp.outside_array[$game_map.map_id] and @current_id != $game_map.map_id
if conditional1 or conditional2
tone=$game_time.get_tone
$game_screen.start_tone_change(tone, 0)
@minute = $game_time.get_minute.floor
$game_map.need_refresh=true
@current_id=$game_map.map_id
end
if $game_temp.outside_array[$game_map.map_id] == false and @current_id != $game_map.map_id
$game_screen.start_tone_change(Tone.new(0,0,0,0),0)
@current_id=$game_map.map_id
end
dns_scene_map_update
end
end
#======================================================
class Scene_Title
#--------------------------------------------------------------------------
# ● Refer setup to Scene Map
#--------------------------------------------------------------------------
alias dns_scene_title_update update
#--------------------------------------------------------------------------
# ● Refer setup to Scene Map
#--------------------------------------------------------------------------
def update
$game_time=Game_Time.new
#Dubealex Addition (from XRXS) to show Map Name on screen
dns_scene_title_update
end
end
#========================================================
class Scene_Load
def read_save_data(file)
characters = Marshal.load(file)
Graphics.frame_count = Marshal.load(file)
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
$game_time =Marshal.load(file) #Added Line
if $game_system.magic_number != $data_system.magic_number
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
$game_party.refresh
end
end # of Scene_Load updates
#=======================================================
class Scene_Save
def write_save_data(file)
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
Marshal.dump(characters, file)
Marshal.dump(Graphics.frame_count, file)
$game_system.save_count += 1
$game_system.magic_number = $data_system.magic_number
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
Marshal.dump($game_time,file) # Added Line
end
end # of Scene_Save updates
#========================================================
class Game_Map
#--------------------------------------------------------------------------
# ● Refer the attr
#--------------------------------------------------------------------------
attr_reader :outside
attr_reader :map_id
#--------------------------------------------------------------------------
# ● Outside
#--------------------------------------------------------------------------
def outside
return $game_temp.outside_array[@map_id]
end
end


كيفية الاستعمال:


@minute_length=2.0
قم بتبديل الرقم و هو يعني الدقيقه في اللعبه بالثواني العاديه اي حسب الكود الحالي كل ثانيتان تساوي دقيقه في اللعبه.

لتبديل الوقت ضع الاسكربت في Map Event

$game_time.add_minutes(...)
استبل النقاط برقم حيث يعني ان تضيف عدد الدقائق


$game_time.add_hours(5)
استبل النقاط برقم حيث يعني ان تضيف عدد الساعات


$game_time.get_hour >= 8 and $game_time.get_hour <= 17
ضع هذا الاسكربت في Conditional Branch
لتعني من الساعه : 8 صباح حتى 5 مساء

.AJ.
28-05-2007, 12:56 PM
أسكربت الـ Mode7
الكاتب: MGCaladtogel
المصدر: http://www.rmxp.org


المقدمه:
الصوره تتحدث
http://img375.imageshack.us/img375/5082/m701nu3.png


كيفية الوضع:
ضع الاسكربت فوق اسكربت Main و تحت كل الاسكربات الاصليه.



الكود:


الكود طويل بعض الشيء لذا وضعته في ملف txt يمكنك تحميله من المرفقات (http://www.montada.com/attachment.php?attachmentid=283686&d=1180345286)



الاستخدام:
أولا لتشغيل المود7 عليك وضع التاج [M7] في اسم الخريطه.
ثم ضف التاج [XX#] في اسم الخريطه واستبدل الـXX ارقام تحدد ترجه الانحدار
[A] لإضافة الحركه لـautotiles ذات 4 اشكال
[C] لتجعل مركز الخريطه هو البطل
[P] لتثبت الـ panorama
[H] لتشكل خط افقي أبيض مثل ما هو موضح بالشكل
[OV] لتصغير الاشكال و تكون خريطة عالم
[Y] لتسمح للاعب المتابعه من المحور الرأسي
[X] لتسمح للاعب المتابعه من المحور الافقي


رقما الـ terrain tags 1&2 يضع حتى لا يميل السبريل مع الخريطه خلال عمل الاسكربت ويمكنك تبديله من الكود في الاسكربت استبدل الارقام فقط

$terrain_tags_vertical_tiles = [1,2]


يوضع التاج 1 و 2 حتى اذا وضعة مكائنان في Layer واح فوق بعضهم يتمكن الاسكربت من التميز بينهم و يفصلهم.


مثال:
http://img181.imageshack.us/img181/9245/terraintagsyh3.png


اللايرات الثلاثه انظر كيف تم التوزيع
http://img181.imageshack.us/img181/9644/m7201wh0.png
http://img181.imageshack.us/img181/2463/m7202yl5.png
http://img181.imageshack.us/img181/386/m7203sl8.png


النتيجه:
http://img181.imageshack.us/img181/872/m7204sz5.png

.AJ.
28-05-2007, 01:39 PM
أسكربت صيحة القتال
الكاتب: DerVVulfman
المصدر: http://www.rmxp.org


المقدمه:
الاسكربت يسمح بإضافه صرخه لهجمات اللاعبين يعمل الاسكربت مع نظام القتال المتحرك Animated Battlers أيضا



كيفية الوضع:

ضع الاسكربت فوق اسكربت Main و تحت كل الاسكربات الاصليه.
ضع الاسكربت أسفل كل اسكربات تغير نظام القتال إن وجد.



الكود:





#==============================================================================
# ** Dalissa's Battle Cry
# by DerVVulfman
# Version 1.4
# 04-21-2007
#
#------------------------------------------------------------------------------
#
# INTRODUCTION:
#
# This add-on system allows you to pre-program additional vocal cues for your
# battlers so they can play these additional vocals during battle events. It
# can perform battle cries for heroes and enemies, for regular attacks or for
# skill events.
#
# This script was a request by a couple of friends. Both wanted a system to
# enhance their combat systems and personalize their battles with an audio
# system not dependant on the "battle animation" built into RMXP. Now, with
# this script, you can set each battler to scream out their 'battle cry' when
# they perform their battle action.
#
#
#------------------------------------------------------------------------------
#
# SETTING THE BATTLECRIES:
#
# First off, let me point out that this system plays audio clips that are
# kept in either your project's or the RTP's Audio\SE directory. These clips
# may be of any file format goverened by RMXP, and as such, no file extension
# will be necessary when actually setting up your battlecry system.
#
# In the script's SCENE_BATTLE code, you'll see two sets of hashes, one group
# for the actor battlers and the other for enemy battlers. Each group has 5
# identical hashes: Attack, Skill, Item, Block and Escape.
#
# Within each hash, you are able to enter the id number of a battler and the
# audio clip it will perform. It's pretty simple.
#
# If, for example, you want a 'ghost' battler to moan when it is performing
# an attack (assuming it's enemy #1 in your RTP), you would add the following:
#
# $enemy_cry_attack = {1 => "GhostMoan01"}
#
# ... assuming you have an audio file named "GhostMoan01" in your project's
# Audio\SE directory or in your RTP directory. Again, please note that no
# file extension is needed or required.
#
# And, if you were to set TWO sets of battlecries (one for a ghost & one for
# a zombie), you'd enter them in the following manner (again, assuming the
# RTP monsters are being used):
#
# $enemy_cry_attack = {1 => "GhostMoan01", 9 => "ZombieGroan04"}
#
# As you can see, you can skip between battlers when setting audio clips. And
# while it is preferred to enter them in the id number order, it isn't neces-
# sary.
#
# There are also a series of individual skill hashes. What this does is that
# you can link a single sound effect to an individual skill... for each actor
# or enemy. The format is fairly simple:
#
# $enemy_cry_skill_i = { enemy.id => { skill.id => "audiofile",... }, ... )
#
# and the same difference for the actor's skill id.
#
# To prevent monotony, there is an additional value that is in the system be-
# low the two sets of hashes. This value, $occur_cry_chance, determines the
# chance of an audio clip to be played. A value of 100 equals a 100% chance
# of the file to be played, while a 25 gives the system a 1 in 4 chance of it
# being played.
#
#------------------------------------------------------------------------------
#
# COMPATIBILITY:
#
# This script was designed around the basic DBS system. I can confirm it's
# functionality with the RTAB system, as well as ParaDog's CTB v 2.58, the
# newest CTB by XRXS (version 65a).
#
# It is NOT compatible with Ccoa's CTB v 3.04 script and it is unknown as to
# the compatability to KGC's Active Count Battle system.
#
# This audio system will not work, and is not compatible with Cybersam's Ani-
# mation system.
#
#------------------------------------------------------------------------------
#
# KNOWN ISSUES:
#
# As this system retrieves the action states of the battlers: Attack, Skill,
# Item... and from nothing else, then this system begins to play the battle
# cries from the very moment these states are triggered. The only battler
# overlay system (Front-View system to a Side-View System) that this script
# works with is the new incarnation of Minkoff's Animated Battlers - Enhanced
# (version 4.7 or higher) as a trigger system has been recently added to that
# script.
#
# Earlier versions of Animated Battlers will not play the audio clips for the
# battlers.
#
#------------------------------------------------------------------------------
#
# JUST IN CASE:
#
# By default, the battlecry system will merely NOT play any sound effect if a
# given battler has no related audio clip. The system will even skip search-
# ing through the system if a hash is empty. This is designed to prevent
# avoidable errors as well as to play only the proper clip for the proper
# battler.
#
# Also, with a little assistance from Me? and Mr.Mo, I was able to create an
# Error-Check routine that 'ensures' that no error in this system will cause
# the system to crash.
#
# For example, if you enter into a hash of audio clips in the system, a piece
# that doesn't exist (either in the project or the RTP file), then this script
# will merely skip playing this audio file to prevent errors.
#
#------------------------------------------------------------------------------
#
# THANKS:
#
# Thanks to Mimi-Chan and ~AtlasWing~ for requesting this script, and to
# grimreaper1357 for noticing a 'bug', though it wasn't the error he thought
# it was.
#
#==============================================================================

#--------------------------------------------------------------------------
# * Configuration Section
#--------------------------------------------------------------------------

# Hero battle cries
$actor_cry_attack = {} # The only PROPER way to have empty hashes.
$actor_cry_skill = {} # Do not use a NIL pseudovalue!
$actor_cry_skill_i = { 1 => {57 => "015-Jump01", 58 => "022-Dive02"} }
$actor_cry_item = {}
$actor_cry_block = { 1 => "006-System06", 2 => "006-System06",7 => "006-System06",8 => "006-System06"}
$actor_cry_escape = {}

# Enemy battle cries
$enemy_cry_attack = { 1 => "006-System06"}
$enemy_cry_skill = {}
$enemy_cry_skill_i = { 1 => {7 => "015-Jump01"} }
$enemy_cry_item = {}
$enemy_cry_block = { 1 => "006-System06"}
$enemy_cry_escape = {}

# Chance of occuring
$occur_cry_chance = 100




#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
# This class performs battle screen processing.
#==============================================================================

class Scene_Battle
#--------------------------------------------------------------------------
# * Frame Update (main phase step 2 : start action)
#--------------------------------------------------------------------------
alias update_phase4_step2_scream update_phase4_step2
def update_phase4_step2(battler = @active_battler)
# Do not perform here if Animated Battlers is detected
unless $anim_cry_detect == true
# Obtain & Play Battle Cries
perform_cry(battler)
end
# Perform original routine
if $rtab_cry_detect == true
update_phase4_step2_scream(battler)
else
update_phase4_step2_scream
end
end


#--------------------------------------------------------------------------
# * Frame Update (main phase step 3 : animation for action performer)
#--------------------------------------------------------------------------
alias dbc_update_phase4_step3 update_phase4_step3
def update_phase4_step3(battler = @active_battler)
# Perform original routine
if $rtab_cry_detect == true
dbc_update_phase4_step3(battler)
else
dbc_update_phase4_step3
end
# Only perform if using Animated Battlers
if $anim_cry_detect == true
if $battle_charge == true
# Obtain & Play Battle Cries
perform_cry(battler)
# Reset Flag
$battle_charge = false
end
end
end

#--------------------------------------------------------------------------
# * Retrieve & Perform the Cry
#--------------------------------------------------------------------------
def perform_cry(battler)
# Re-Set Battle Cry to empty
battlecry = nil
# Temp Hash
bcry_temp = {}
# Obtain Battle Cries for Enemies
if battler.is_a?(Game_Enemy)
# Branch according to each action
case battler.current_action.kind
when 0 # basic
battlecry = $enemy_cry_attack[battler.id] if $enemy_cry_attack.include?(battler.id)
# If blocking
if battler.current_action.basic == 1
battlecry = $enemy_cry_block[battler.id] if $enemy_cry_block.include?(battler.id)
end
# If escaping
if battler.current_action.basic == 2
battlecry = $enemy_cry_escape[battler.id] if $enemy_cry_escape.include?(battler.id)
end
# If resting
if battler.current_action.basic == 3
battlecry = nil
end
when 1 # skill
bcry_skill = battler.current_action.skill_id
battlecry = $enemy_cry_skill[battler.id] if $enemy_cry_skill.include?(battler.id)
bcry_temp = $enemy_cry_skill_i[battler.id] if $enemy_cry_skill_i.include?(battler.id)
battlecry = bcry_temp[bcry_skill] if bcry_temp[bcry_skill]
when 2 # item
battlecry = $enemy_cry_item[battler.id] if $enemy_cry_item.include?(battler.id)
end
# otherwise, Obtain Battle Cries for Actors
else
# Branch according to each action
case battler.current_action.kind
when 0 # basic
battlecry = $actor_cry_attack[battler.id] if $actor_cry_attack.include?(battler.id)
# If blocking
if battler.current_action.basic == 1
battlecry = $actor_cry_block[battler.id] if $actor_cry_block.include?(battler.id)
end
# If escaping
if battler.current_action.basic == 2
battlecry = $actor_cry_escape[battler.id] if $actor_cry_escape.include?(battler.id)
end
# If resting
if battler.current_action.basic == 3
battlecry = nil
end
when 1 # skill
bcry_skill = battler.current_action.skill_id
battlecry = $actor_cry_skill[battler.id] if $actor_cry_skill.include?(battler.id)
bcry_temp = $actor_cry_skill_i[battler.id] if $actor_cry_skill_i.include?(battler.id)
battlecry = bcry_temp[bcry_skill] if bcry_temp[bcry_skill]
when 2 # item
battlecry = $actor_cry_item[battler.id] if $actor_cry_item.include?(battler.id)
end
end
# Perform the cry
play_cry(battlecry)
# Erase Battle Cry
battlecry = nil
end
#--------------------------------------------------------------------------
# * Play the Cry
#--------------------------------------------------------------------------
def play_cry(battlecry)
# Error checking. Makes sure that even the default sound file is available.
# If it is missing, then the system will set the battle cry to >none<.
#
# If the chance of the battle cry is true
if rand(100) <= $occur_cry_chance
# If the battle cry isn't nil
if battlecry != nil
begin
@trd = RPG::AudioFile.new(battlecry)
Audio.se_play("Audio/SE/" + @trd.name,0,100)
# Sound file is true
rescue Errno::ENOENT
# Sound file is invalid (restore default)
battlecry = nil
end
# Play the cry
if battlecry != nil
Audio.se_play("Audio/SE/"+@trd.name, 80, 100)
end
end
end
end
end



#==============================================================================
# ** Spriteset_Battle
#------------------------------------------------------------------------------
# This class brings together battle screen sprites. It's used within
# the Scene_Battle class.
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
# Special note: When the normal method for detecting RTAB fails, I do this
alias bcry_initialize initialize
def initialize
# Perform the original routine
bcry_initialize
# If RTAB's 'zoom' feature is present
if @real_zoom != nil
# Set the RTAB detector to 'true'
$rtab_cry_detect = true
end
end
end



#==============================================================================
# ** Sprite_Battler
#------------------------------------------------------------------------------
# This sprite is used to display the battler. It observes the Game_Character
# class and automatically changes sprite conditions.
#==============================================================================

class Sprite_Battler < RPG::Sprite
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias bcry_initialize initialize
def initialize(viewport, battler = nil)
# Perform the original routine
bcry_initialize(viewport,battler)
# If Animated Battler's 'battler offset' feature is present
if @battler_offset != nil
# Set the Animated Battlers detector to 'true'
$anim_cry_detect = true
end
end
end



كيفية الاستخدام:
تحفظ الاصوات في ملف Audio\SE الخاص للعبتك
يعمل اي ملف مصرح به ببرنامج الاربيجي ميكر اكس بي و منها الـMP3


كما تلحظون هناك الكود:


# Hero battle cries




$actor_cry_attack = {} # The only PROPER way to have empty hashes.

$actor_cry_skill = {} # Do not use a NIL pseudovalue!

$actor_cry_skill_i = { 1 => {57 => "015-Jump01", 58 => "022-Dive02"} }
$actor_cry_item = {}
$actor_cry_block = { 1 => "006-System06", 2 => "006-System06",7 => "006-System06",8 => "006-System06"}
$actor_cry_escape = {}


# Enemy battle cries
$enemy_cry_attack = { 1 => "006-System06"}
$enemy_cry_skill = {}
$enemy_cry_skill_i = { 1 => {7 => "015-Jump01"} }
$enemy_cry_item = {}
$enemy_cry_block = { 1 => "006-System06"}
$enemy_cry_escape = {}






هذا الكود يجب ان تعدله بنفسك طريقة عمله كالتالي


القسم الاول لابطال الثاني للاعداء


النص وضيفته كالتالي

$enemy_cry_attack = {enemyID => "Sound"}


في البدايه يجب تكتب رقم العدو (او البطل اذا كان من خانت الابطال)
ثم اكتب اسم الصوت الذي تريده ان يعمل


مثال انت تريد تشغل صوت GhostMoan01 عندما يهاجم الشبح الذي هو الاول في لست الوحوش

$enemy_cry_attack = {1 => "GhostMoan01"}


هذا في حالة وجود وحش واحد لدك في الDataBase
ان ارت ان تضعه لاكثر من وحش عليك وضع فاصله

$enemy_cry_attack = {1 => "GhostMoan01", 9 => "ZombieGroan04"}


فيحلت ان ارت ان تضع صوت مختلف لكل ضربه

$enemy_cry_skill_i = { enemyID => { skillID => "sound",skillID => "sound" }, enemyID => { skillID => "sound",skillID => "sound" } }


وهكذا

Dark Gamer
02-06-2007, 02:10 PM
السـلام


في حالت ارت ان تشكرنا على السكربات والله افضل مكان هو في موضوع دردشة اعضاء منتدى صناعة الالعاب حتى لا يضر شكل الموضوع.

لقيت سكربت جميل يمكن يفيدكم ..

سكربت الخريطة كخلفية المعركة
المصدر: http://www.phanxgames.com

المقدمه:
السكربت يجعل الخريطة خلفية معركة ..

كيفية الوضع:

ضع السكربت فوق الـMain

الكود:


#==============================================================================
# â– Spriteset_Battle
#------------------------------------------------------------------------------
# This class contains the set of sprites used in the Scene_Battle class, such
# as the enemies, actors, battle background, and any pictures being displayed
#==============================================================================

class Spriteset_Battle
#--------------------------------------------------------------------------
# â—? initialize
#--------------------------------------------------------------------------
def initialize
@viewport1 = Viewport.new(0, 0, 640, 320)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 101
@viewport3.z = 200
@viewport4.z = 5000
@battleback_sprite = Tilemap.new(@viewport1)
@battleback_sprite.tileset = RPG::Cache.tileset($game_map.tileset_name)
for i in 0..6
autotile_name = $game_map.autotile_names[i]
@battleback_sprite.autotiles[i] = RPG::Cache.autotile(autotile_name)
end
@battleback_sprite.map_data = $game_map.data
@battleback_sprite.ox = $game_map.display_x / 4
@battleback_sprite.oy = $game_map.display_y / 4
@enemy_sprites = []
for enemy in $game_troop.enemies.reverse
@enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
end
@actor_sprites = []
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@actor_sprites.push(Sprite_Battler.new(@viewport2))
@weather = RPG::Weather.new(@viewport1)
@picture_sprites = []
for i in 51..100
@picture_sprites.push(Sprite_Picture.new(@viewport3,
$game_screen.pictures[i]))
end
@timer_sprite = Sprite_Timer.new
update
end
#--------------------------------------------------------------------------
# â—? Dispose the battle spriteset
#--------------------------------------------------------------------------
def dispose
@battleback_sprite.tileset.dispose
for i in 0..6
@battleback_sprite.autotiles[i].dispose
end
@battleback_sprite.dispose
for sprite in @enemy_sprites + @actor_sprites
sprite.dispose
end
@weather.dispose
for sprite in @picture_sprites
sprite.dispose
end
@timer_sprite.dispose
@viewport1.dispose
@viewport2.dispose
@viewport3.dispose
@viewport4.dispose
end
#--------------------------------------------------------------------------
# â—? Update the battleset sprite
#--------------------------------------------------------------------------
def update
@battleback_sprite.update
@actor_sprites[0].battler = $game_party.actors[0]
@actor_sprites[1].battler = $game_party.actors[1]
@actor_sprites[2].battler = $game_party.actors[2]
@actor_sprites[3].battler = $game_party.actors[3]
for sprite in @enemy_sprites + @actor_sprites
sprite.update
end
@weather.type = $game_screen.weather_type
@weather.max = $game_screen.weather_max
@weather.update
for sprite in @picture_sprites
sprite.update
end
@timer_sprite.update
@viewport1.tone = $game_screen.tone
@viewport1.ox = $game_screen.shake
@viewport4.color = $game_screen.flash_color
@viewport1.update
@viewport2.update
@viewport4.update
end
end


كيفية الاستخدام:

ضع وحوشاً في الـ Encounters .. وستظهر الخريطة كخلفية المعركة .

صورة عن السكربت :

284056

والسـلام خير ختام

.AJ.
16-06-2007, 09:12 PM
أسكربت المتابعه عند في حاله الموت
الكاتب: A J
المصدر: http://www.rmxp.org (http://www.rmxp.org/)


المقدمه:
الاسكربت يسمح لك بالمتابعه عند الهزيمه في اي معركه ليعطيك خيارات المتابعه و العوده الى المعركه او العوده البدايه Title


كيفية الوضع:

ضع الاسكربت فوق اسكربت Main و تحت كل الاسكربات الاصليه.
ضع الاسكربت أسفل كل اسكربات تغير نظام القتال إن وجد.


الكود:



#==============================================================================
# ** Scene_Gameover
#------------------------------------------------------------------------------
# This class performs game over screen processing.
#==============================================================================

class Scene_Gameover
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Make game over graphic
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.gameover($data_system.gameover_name)
# Stop BGM and BGS
$game_system.bgm_stop
# Play game over ME
$game_system.me_play($data_system.gameover_me)
# Execute transition
Graphics.transition(120)
for c in 0..300
end
if $game_temp.lost_battle
s1 = "Continue"
s2 = "Back to Title"
s3 = "Shutdown"
@command_window = Window_Command.new(192, [s1, s2, s3])
@command_window.back_opacity = 160
@command_window.x = 320 - @command_window.width / 2
@command_window.y = 288
end
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of game over graphic
@sprite.bitmap.dispose
@sprite.dispose
# Execute transition
Graphics.transition(40)
# Prepare for transition
Graphics.freeze
# If battle test
if $BTEST
$scene = nil
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
if $game_temp.lost_battle
# If C button was pressed
@command_window.update
if Input.trigger?(Input::C)
case @command_window.index
when 0
start_battle
when 1
to_title
when 2
shut_down
end
end
else
if Input.trigger?(Input::C)
# Switch to title screen
$scene = Scene_Title.new
end
end
end

def start_battle
# Play decision Battle BGM and Stop ME
$game_system.bgm_play($game_system.battle_bgm)
$game_system.me_play(nil)
for i in 0..$game_party.actors.size - 1
$game_party.actors[i].hp = $game_party.actors[i].maxhp
$game_party.actors[i].sp = $game_party.actors[i].maxsp
end
$game_temp.gameover = false
$game_temp.lost_battle = false
$game_party.add_lost_point
# Play battle Battle start SE
$game_system.se_play($data_system.battle_start_se)
$game_player.straighten
@command_window.dispose
$scene = Scene_Battle.new
end

def to_title
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Fade out BGM, BGS, and ME
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# Switch to title screen
@command_window.dispose
$scene = Scene_Title.new
end


def shut_down
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Fade out BGM, BGS, and ME
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# Shutdown
$scene = nil
end
end
class Scene_Battle

def update
# If battle event is running
if $game_system.battle_interpreter.running?
# Update interpreter
$game_system.battle_interpreter.update
# If a battler which is forcing actions doesn't exist
if $game_temp.forcing_battler == nil
# If battle event has finished running
unless $game_system.battle_interpreter.running?
# Rerun battle event set up if battle continues
unless judge
setup_battle_event
end
end
# If not after battle phase
if @phase != 5
# Refresh status window
@status_window.refresh
end
end
end
# Update system (timer) and screen
$game_system.update
$game_screen.update
# If timer has reached 0
if $game_system.timer_working and $game_system.timer == 0
# Abort battle
$game_temp.battle_abort = true
end
# Update windows
@help_window.update
@party_command_window.update
@actor_command_window.update
@status_window.update
@message_window.update
# Update sprite set
@spriteset.update
# If transition is processing
if $game_temp.transition_processing
# Clear transition processing flag
$game_temp.transition_processing = false
# Execute transition
if $game_temp.transition_name == ""
Graphics.transition(20)
else
Graphics.transition(40, "Graphics/Transitions/" +
$game_temp.transition_name)
end
end
# If message window is showing
if $game_temp.message_window_showing
return
end
# If effect is showing
if @spriteset.effect?
return
end
# If game over
if $game_temp.gameover
$game_temp.lost_battle = true
# Switch to game over screen
$scene = Scene_Gameover.new
return
end
# If returning to title screen
if $game_temp.to_title
# Switch to title screen
$scene = Scene_Title.new
return
end
# If battle is aborted
if $game_temp.battle_abort
# Return to BGM used before battle started
$game_system.bgm_play($game_temp.map_bgm)
# Battle ends
battle_end(1)
return
end
# If waiting
if @wait_count > 0
# Decrease wait count
@wait_count -= 1
return
end
# If battler forcing an action doesn't exist,
# and battle event is running
if $game_temp.forcing_battler == nil and
$game_system.battle_interpreter.running?
return
end
# Branch according to phase
case @phase
when 1 # pre-battle phase
update_phase1
when 2 # party command phase
update_phase2
when 3 # actor command phase
update_phase3
when 4 # main phase
update_phase4
when 5 # after battle phase
update_phase5
end
end
end


أيضا ضع:

attr_accessor :lost_battle
تحت class Game_Temp
و

@lost_battle = false
تحت def initialize في نفس الـ class

أيضا

attr_reader :lost
تحت class Game_Party
و

@lost = 0
تحت def initialize في نفس الـ class
وأخيرا

def add_lost_point
@lost += 1
end
في نفس الـ class حيث يوجد كل معادله التعريف def اذا كنت لا تعرف اين
اذهب الى السطر 334 تقريبا و ستجد الملاحظه

#--------------------------------------------------------------------------
# * Random Selection of Target Actor (HP 0)
#--------------------------------------------------------------------------

فقط ضع الكود الاخير فوقه بالضبط

كيفية الاستخدام:
حاول ان تعرض نفسك للموت وسترى ما يحدث
الاسكربت يميز بين الموت في المعركه وبين الاستعاء Game over من الإفنتس

$game_party.lost
هذا الكود يحسب عدد المرات التي تعيد فيها اللعب عند الهزيمه

ليون.سكوت
17-02-2010, 12:18 PM
شكرا لكم لكن لم أفهم ما معنئ هذا

ضع الاسكربت فوق اسكربت Main و تحت كل الاسكربات الاصليه.