RMRK is retiring.
Server is paid up for the rest of 2026, but the forum may go after that. See here for more information. Please archive or save anything you would like to keep before 2027.
Main Menu
  • Welcome to The RPG Maker Resource Kit.

Need Help Editing a Script

Started by Helios, February 15, 2010, 04:20:55 PM

0 Members and 1 Guest are viewing this topic.

Helios

I'm not an English-mind so sorry for my bad grammer.

This is the original script made by scripter MoMo from Japan. The script will auto-equip a "default" weapon when you remove your hero's equipped weapon. Works flawlessly.

[spoiler]module MoMo_No_Weapon_Equip
  # ???????ID
  # weapon_id[????ID] = ??ID
  weapon_id = []
  weapon_id[0] = 2 # ??????(?????????????)
  weapon_id[1] = 3
 
  NO_WEAPON_ID = weapon_id
 
  module_function
  def get_no_weapon_id(actor_id)
    if NO_WEAPON_ID[actor_id] == nil
      return NO_WEAPON_ID[0]
    end
    return NO_WEAPON_ID[actor_id]
  end
end
class Game_Actor < Game_Battler
  alias game_actor_no_weapon_equip_initialize initialize
  def initialize(actor_id)
    game_actor_no_weapon_equip_initialize(actor_id)
    @no_weapon_id = MoMo_No_Weapon_Equip.get_no_weapon_id(actor_id)
  end
  alias game_actor_no_weapon_equip_equip equip
  def equip(equip_type, id)
    wep_id = @weapon_id
    if equip_type == 0
      id = 0 if id == @no_weapon_id
      game_actor_no_weapon_equip_equip(equip_type, id)
      @weapon_id = @no_weapon_id if @weapon_id == 0
      $game_party.lose_weapon(@no_weapon_id, 1) if wep_id == @no_weapon_id
    else
      game_actor_no_weapon_equip_equip(equip_type, id)
    end
  end
end
[/spoiler]


And I'm trying to make it work for armor too.
The result is as follows:

[spoiler]
module MoMo_No_armor3_Equip
  # ???????ID
  # weapon_id[????ID] = ??ID
  armor_id = []
  armor_id[0] = 2 # ??????(?????????????)
  armor_id[1] = 3
 
  NO_ARMOR3_ID = armor_id
 
  module_function
  def get_no_armor3_id(actor_id)
    if NO_ARMOR3_ID[actor_id] == nil
      return NO_ARMOR3_ID[0]
    end
    return NO_ARMOR3_ID[actor_id]
  end
end
class Game_Actor < Game_Battler
  alias game_actor_no_armor3_equip_initialize initialize
  def initialize(actor_id)
    game_actor_no_armor3_equip_initialize(actor_id)
    @no_armor3_id = MoMo_No_armor3_Equip.get_no_armor3_id(actor_id)
  end
  alias game_actor_no_armor3_equip_equip equip
  def equip(equip_type, id)
    ar3_id = @armor3_id
    if equip_type == 0
      id = 0 if id == @no_armor3_id
      game_actor_no_armor3_equip_equip(equip_type, id)
      @armor3_id = @no_armor3_id if @armor3_id == 0
      $game_party.lose_armor(@no_armor3_id, 1) if ar3_id == @no_armor3_id
    else
      game_actor_no_armor3_equip_equip(equip_type, id)
    end
  end
end
[/spoiler]

It "worked" in a strange way...the "default" armor only appear when I change my WEAPON, not armor.

Could someone help me please?

modern algebra

Keeping in mind that I haven't looked at RMXP for a long time, I think your problem is that you are only running the appropriate part of the method when equipping a weapon:


    if equip_type == 0


If equip_type is 0, it means you are equipping a weapon. If you changed that to the appropriate type (by memory: 0 => Weapon, 1 => Shield, 2 => Head, 3 => Body, 4 => Accessory), then it would run when you want it to. Judging by your naming, you want it to be body armor, so try doing it with

if equip_type == 3

Helios

Yes it worked! Thanks for your help :D