النتائج 1 إلى 13 من 13

الموضوع: [اسكربات] المرجع الاول لإسكربات الـ RPG Maker XP

  1. #1
    التسجيل
    15-02-2006
    الدولة
    كوكب الارض
    المشاركات
    769

    [اسكربات] المرجع الاول لإسكربات الـ RPG Maker XP

    بسم الله الرحمن الرحيم

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



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



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


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


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

  2. #2
    التسجيل
    15-02-2006
    الدولة
    كوكب الارض
    المشاركات
    769

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

    أسكربت التحكم بالأعضاء

    الكاتب: Fomar0153

    المصدر: 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 إضغط زر اليمين او اليسار للانتقال الى الشخصيات






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




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




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



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

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



  3. #3
    التسجيل
    15-02-2006
    الدولة
    كوكب الارض
    المشاركات
    769

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

    أسكربت نظام القتال الجانبي
    المصدر: Rye For The Script
    المقدمه:
    الاسكربت يجعل المقاتلين يظهرون من الجانب في القتال مثل الموضح في الصوره



    كيفية الوضع:
    ضع الاسكربت فوق اسكربت Main و تحت كل الاسكربات الاصليه.
    الكود:
    الكود طويل بعض الشيء لذا وضعته في ملف txt يمكنك تحميله من المرفقات
    الملفات المرفقة الملفات المرفقة

  4. #4
    التسجيل
    15-02-2006
    الدولة
    كوكب الارض
    المشاركات
    769

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

    أسكربت السلاحين
    الكاتب: Fomar0153
    المصدر: 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 ) ثم اختر و سترى انه يمكنك إضافة سلاح او درع


  5. #5
    التسجيل
    15-02-2006
    الدولة
    كوكب الارض
    المشاركات
    769

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

    أسكربت الظل
    الكاتب: Rataime
    المصدر: 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

  6. #6
    التسجيل
    15-02-2006
    الدولة
    كوكب الارض
    المشاركات
    769

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

    أسكربت الظل

    الكاتب: fukuyama

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









    المقدمه:


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










    كيفية الوضع:


    ضع الاسكربت فوق اسكربت 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
    الصور المصغرة للصور المرفقة الصور المصغرة للصور المرفقة Train_actor.jpg‏  

  7. #7
    التسجيل
    15-02-2006
    الدولة
    كوكب الارض
    المشاركات
    769

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

    أسكربت الموفي 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"
       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")
    ستبدل الكلام الملون بالاحمر باسم ملف الفلم

  8. #8
    التسجيل
    15-02-2006
    الدولة
    كوكب الارض
    المشاركات
    769

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

    أسكربت النهار و الليل
    الكاتب: Deke
    تعديل: Near Fantastica
    المصدر: 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 مساء

  9. #9
    التسجيل
    15-02-2006
    الدولة
    كوكب الارض
    المشاركات
    769

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

    أسكربت الـ Mode7
    الكاتب: MGCaladtogel
    المصدر: http://www.rmxp.org

    المقدمه:
    الصوره تتحدث

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


    الكود:

    الكود طويل بعض الشيء لذا وضعته في ملف txt يمكنك تحميله من المرفقات


    الاستخدام:
    أولا لتشغيل المود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 واح فوق بعضهم يتمكن الاسكربت من التميز بينهم و يفصلهم.

    مثال:

    اللايرات الثلاثه انظر كيف تم التوزيع



    النتيجه:
    الملفات المرفقة الملفات المرفقة
    • نوع الملف: txt Mode7.txt‏ (79.8 كيلوبايت, المشاهدات 59)

  10. #10
    التسجيل
    15-02-2006
    الدولة
    كوكب الارض
    المشاركات
    769

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

    أسكربت صيحة القتال
    الكاتب: 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" } }

    وهكذا


  11. #11
    التسجيل
    19-10-2005
    الدولة
    Qatar
    المشاركات
    1,888

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

    السـلام

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

    سكربت الخريطة كخلفية المعركة
    المصدر: 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 .. وستظهر الخريطة كخلفية المعركة .

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

    اضغط على الصورة لعرض أكبر

الاســـم:	MapAsBattleBack.gif
المشاهدات:	52
الحجـــم:	153.1 كيلوبايت
الرقم:	284056

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


  12. #12
    التسجيل
    15-02-2006
    الدولة
    كوكب الارض
    المشاركات
    769

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

    أسكربت المتابعه عند في حاله الموت
    الكاتب: A J
    المصدر: 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
    هذا الكود يحسب عدد المرات التي تعيد فيها اللعب عند الهزيمه

  13. #13
    التسجيل
    31-10-2009
    المشاركات
    42

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

    شكرا لكم لكن لم أفهم ما معنئ هذا

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

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •