设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

使角色装备「空手」(日本教学翻译)

2006-2-5 00:00| 发布者: 柳柳| 查看: 4601| 评论: 0|原作者: 不详

摘要:    作者 原贴:http://windmesser.tm.land.to/rgss/rgss003.html 版本与更新  2006年1月 相关网址 点此进入翻译贴 范例工程 教程内容 ★RGSS教学3★标题:《修改3:使角色装备「空手」》
  

作者

原贴:http://windmesser.tm.land.to/rgss/rgss003.html

版本与更新

 2006年1月

相关网址

点此进入翻译贴

范例工程



教程内容

★RGSS教学3★
标题:《修改3:使角色装备「空手」》
简介:是第1次稍微提及的内容。由于制作一个「空手」的假想装备,使得属性和状态等也可以实现。
翻译:柳柳


设想的时刻,想「看起来相当麻烦」,认为用讲座如果做需要很久以后。不过实际试着做了,也没有那么困难,故作为第3次的题材。

首先需要做前期准备,预先准备空手用的装备。虽说是假想的装备品,实际装备应该实际制作。这里用「空手」的名字把武器预先做成。其他职业内容不需要制作,可以强制装备。

准备齐备,在设定actor的武器ID的地方进行修改,给装备上「空手」武器。

Game_Actor 级的地方找@weapon_id (脚本编辑器输入ctrl+shift+f搜索)。

Game_Actor::setup

#--------------------------------------------------------------------------
# ● セットアップ
#     actor_id : アクター ID
#--------------------------------------------------------------------------
def setup(actor_id)
 actor = $data_actors[actor_id]
 @actor_id = actor_id
 @name = actor.name
 @character_name = actor.character_name
 @character_hue = actor.character_hue
 @battler_name = actor.battler_name
 @battler_hue = actor.battler_hue
 @class_id = actor.class_id
 @weapon_id = actor.weapon_id
 @armor1_id = actor.armor1_id
 @armor2_id = actor.armor2_id
 @armor3_id = actor.armor3_id
 @armor4_id = actor.armor4_id
 @level = actor.initial_level
 @exp_list = Array.new(101)
 make_exp_list
 @exp = @exp_list[@level]
 @skills = []
 @hp = maxhp
 @sp = maxsp
 @states = []
 @states_turn = {}
 @maxhp_plus = 0
 @maxsp_plus = 0
 @str_plus = 0
 @dex_plus = 0
 @agi_plus = 0
 @int_plus = 0
 # スキル習得
 for i in 1..@level
   for j in $data_classes[@class_id].learnings
     if j.level == i
       learn_skill(j.skill_id)
     end
   end
 end
 # オートステートを更新
 update_auto_state(nil, $data_armors[@armor1_id])
 update_auto_state(nil, $data_armors[@armor2_id])
 update_auto_state(nil, $data_armors[@armor3_id])
 update_auto_state(nil, $data_armors[@armor4_id])
end

Game_Actor::equip

#--------------------------------------------------------------------------
# ● 装備の変更
#   equip_type : 装備タイプ
#   id  : 武器 or 防具 ID  (0 なら装備解除)
#--------------------------------------------------------------------------
def equip(equip_type, id)
 case equip_type
 when 0  # 武器
   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  # 盾
   if id == 0 or $game_party.armor_number(id) > 0
     update_auto_state($data_armors[@armor1_id], $data_armors[id])
     $game_party.gain_armor(@armor1_id, 1)
     @armor1_id = id
     $game_party.lose_armor(id, 1)
   end
 when 2  # 頭
   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  # 身体
   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  # 装飾品
   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

以上两段是默认脚本。不需要强行记忆,需要的时候查找就行了。只需要看带颜色文字的部分。

第一段是actor角色的初始化处理(加入角色的事件,初始化),后边的一段是装备变更时的处理。下面试着变更这些。

Game_Actor::setup 改変

#--------------------------------------------------------------------------
# ● セットアップ
#     actor_id : アクター ID
#--------------------------------------------------------------------------
def setup(actor_id)
 actor = $data_actors[actor_id]
 @actor_id = actor_id
 @name = actor.name
 @character_name = actor.character_name
 @character_hue = actor.character_hue
 @battler_name = actor.battler_name
 @battler_hue = actor.battler_hue
 @class_id = actor.class_id
 if((@weapon_id = actor.weapon_id) == 0)
   @weapon_id = 33
 end

 @armor1_id = actor.armor1_id
 @armor2_id = actor.armor2_id
 @armor3_id = actor.armor3_id
 @armor4_id = actor.armor4_id
 @level = actor.initial_level
 @exp_list = Array.new(101)
 make_exp_list
 @exp = @exp_list[@level]
 @skills = []
 @hp = maxhp
 @sp = maxsp
 @states = []
 @states_turn = {}
 @maxhp_plus = 0
 @maxsp_plus = 0
 @str_plus = 0
 @dex_plus = 0
 @agi_plus = 0
 @int_plus = 0
 # スキル習得
 for i in 1..@level
   for j in $data_classes[@class_id].learnings
     if j.level == i
       learn_skill(j.skill_id)
     end
   end
 end
 # オートステートを更新
 update_auto_state(nil, $data_armors[@armor1_id])
 update_auto_state(nil, $data_armors[@armor2_id])
 update_auto_state(nil, $data_armors[@armor3_id])
 update_auto_state(nil, $data_armors[@armor4_id])
end

这里使用了一个条件分歧,当角色初始化的时候带入角色的初始武器;如果初始武器为0,则带入33号武器(也就是我们实现在数据库准备的武器【空手】)

Game_Actor::equip 改変

#--------------------------------------------------------------------------
# ● 装備の変更
#   equip_type : 装備タイプ
#   id  : 武器 or 防具 ID  (0 なら装備解除)
#--------------------------------------------------------------------------
def equip(equip_type, id)
 case equip_type
 when 0  # 武器
   if id == 0 or id == 33 or $game_party.weapon_number(id) > 0
     if(id == 0)
       id = 33
     end

     $game_party.gain_weapon(@weapon_id, 1)
     @weapon_id = id
     $game_party.lose_weapon(id, 1)
     $game_party.lose_weapon(33, 1)
   end
 when 1  # 盾
   if id == 0 or $game_party.armor_number(id) > 0
     update_auto_state($data_armors[@armor1_id], $data_armors[id])
     $game_party.gain_armor(@armor1_id, 1)
     @armor1_id = id
     $game_party.lose_armor(id, 1)
   end
 when 2  # 頭
   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  # 身体
   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  # 装飾品
   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

这里有两点变更。1是前面的条件分歧,与初始化部分的类似——当武器没有的时候放上33号【空手】;后面的lose_weapon那行则是为了保证当卸下“【空手】”的时候不会在物品中出现这个隐藏的【空手】武器。

总之修改要点就是把所有weapon_id==0的分歧都添上武器33,并把weapon_id==0和weapon_id==33作为一个新的“没有装备任何物品”条件。如果自己还制作其他脚本在这里注意一下即可。


 

教程的通用说明

本站发布的教程,大多经过一些测试,应该都能够实现相应功能。但不保证所有的教程都是最优化的制作方法。

相关问题,点击发布贴进行讨论。谢谢您的鼓励与支持。


鲜花
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-20 05:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部