来源:蜘蛛抓取(WebSpider)
时间:2015-05-28 14:08
标签:
rpgvxace下载
【XP求助】超级横版战斗脚本的技能及攻击设置_rpg制作大师吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:21,233贴子:
【XP求助】超级横版战斗脚本的技能及攻击设置收藏
超级横版战斗中的人物攻击方式多为近身攻击,请问该如何设置为原地攻击或半距离式攻击?以及技能的远程或进程攻击该如何设置?
脚本:1~113#============================================================================== # * Animated_Sprite
Scripted by: SiR_VaIlHoR #
Edited by: 柳柳#------------------------------------------------------------------------------ #
A class for animated sprites. #============================================================================== #66RPG,超级横版战斗脚本简要说明:#默认情况下,把一张战斗图截成4列,&8行,如果感觉4列4帧的动画还不能满足要求,看#def pose(number,frame = 4),更改=4,以及相关部分。
#战斗图从上到下:前进图,等待图,防御图,挨打图,普通攻击图(默认的武器),施展魔法,#倒地不行了,胜利姿势,自定义武器1,自定义武器2……#这个脚本的模型是老外编写的,其中参考了XMXS的一个方法,我添加了一些功能,去掉素材限制。#不同职业拥有的图片数可以不一样,参考工程和录像教学#==============================================================================# □ RPG::Class#==============================================================================module RPG
class Class
name = @name.split(/,/)[0]
return name != nil ? name : ''
name = @name.split(/,/)[1]
return name != nil ? name : ''
class Weapon
name = @name.split(/,/)[0]
return name != nil ? name : ''
name = @name.split(/,/)[1]
return name != nil ? name : ''
endclass Game_Actor
#--------------------------------------------------------------------------
# ● 更改名称
name : 新的名称
#--------------------------------------------------------------------------
def picturephase
name = $data_classes[class_id].name2
return name != nil ? name : "66RPG"
endendclass Game_Enemy
#--------------------------------------------------------------------------
# ● 获取名称
#--------------------------------------------------------------------------
name = $data_enemies[@enemy_id].name.split(/,/)[0]
return name != nil ? name : ''
def picturephase
name = $data_enemies[@enemy_id].name.split(/,/)[1]
return name != nil ? name : "66RPG"
endclass Animated_Sprite & RPG::Sprite
#--------------------------------------------------------------------------
# - Accessible instance variables.
#--------------------------------------------------------------------------
attr_accessor :frames
# Number of animation frames
attr_accessor :delay
# Delay time between frames (speed)
attr_accessor :frame_width
# Width of each frame
attr_accessor :frame_height
# Height of each frame
attr_accessor :offset_x
# X coordinate of the 1st frame
attr_accessor :offset_y
# Y coordinate of all frames
attr_accessor :current_frame # Current animation frame
attr_accessor :moving
# Is the sprite moving?
#--------------------------------------------------------------------------
# - Initialize an animated sprite
viewport : Sprite viewport
#--------------------------------------------------------------------------
def initialize(viewport = nil)
super(viewport)
@frame_width, @frame_height = 0, 0
# A basic change to set initial variables
= Graphics.frame_count
# For the delay method
# Increasing animation? (if @rm2k_mode is true)
# Is the animation only played once?
# Used to stop animation when
#--------------------------------------------------------------------------
# Comment by RPG
- Change the source rect (change the animation)
frames : Number of animation frames
delay : Frame delay, controls animation speed
offx : X coordinate of the 1st frame
offy : Y coordinate of all frames
startf : Starting frame for animation
once : Is the animation only played once?
rm2k_mode : Animation pattern: 1-2-3-2 if true, 1-2-3-1 if false
# Comment by cybersam
# the rm2k_mode isnt pressent anymore...
# if you want that feature then use rm2k or use RPG's scrîpt...
#--------------------------------------------------------------------------
好复杂啊。
有人回答吗?
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或RPG Maker XP多人战斗脚本问题 求脚本_百度知道
RPG Maker XP多人战斗脚本问题 求脚本
如何让RPG Maker XP中实现多人同时战斗求八人同时战斗脚本
提问者采纳
contents.active = false @status_window.dispose self.size == 0 # キャラクターのファイル名と色相をクリア @character_name = ".times do roulette, 640, x + 236.se_play($data_ Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_KGC_LargeParty initialize def initialize # 元の処理を実行 initialize_KGC_LargeParty # レベルアップフラグを再作成 @level_up_flags = [] for i in 0.contents = Bitmap.row_max * 116 - 16) for i in 0.contents。 #============================================================================== class Game_Party #-------------------------------------------------------------------------- # ● アクターを加える #
actor_id .oy /.new(@viewport2)) end end # 天候を作成 @weather = RPG.push(Sprite_Battler.;) else #draw_actor_state( 4 for i in 4.current_action: アクター ID #-------------------------------------------------------------------------- def add_actor(actor_id) # アクターを取得 actor = $game_actors[actor_id] # パーティ人数が 4 人未満で、マップのスクロールなどの # 机能を持っています.top_row # 现在の行が先头になるようにスクロール self: HP 0 のアクターに限る #-------------------------------------------------------------------------- def random_target_actor(hp0 = false) # ルーレットを初期化 roulette = [] # ループ for actor in actors # 条件に该当する场合 if (not hp0 and actor.cancel_se) # コマンドウィンドウをアクティブにする @command_window.trigger., x.position # 前卫のとき n = 4.se_play($data_system.refresh end end #-------------------------------------------------------------------------- # ● アクターの配列 #-------------------------------------------------------------------------- def actors a = [] if $game_temp.:C) if @actor_change # 决定 SE を演奏 $game_system, 24, 32:.100 @picture_sprites, index2) temp_skill1 = @actors[index1] temp_skill2 = @actors[index2] # 実际に入れ替える @actors[index1] = temp_skill2 @actors[index2] = temp_skill1 end #-------------------------------------------------------------------------- # ● 全员のアクションクリア #-------------------------------------------------------------------------- def clear_actions # パーティ全员のアクションをクリア for actor in actors actor、このアクターがパーティにいない场合 if @actors.new(0, 64; 4 for i in 4.push(Sprite_B self, 5人 120 SPRITES_BATTLER = 120 #游戏开始时步行图的显示(1即是角色1的步行图.actors[i] actor_x = i * SPRITES_BATTLER + 4 # draw_actor_name(actor.$game_party.decision_se) # ステータス画面に切り替え $scene = Scene_Status, y + 32) draw_actor_sp(actor.push(Sprite_Battler.battler = $game_party, 120) # draw_actor_sp(actor., enemy)) end # アクタースプライトを作成 @actor_sprites = [] @actor_sprites、表示されている先头の行より前の场合 if row <。このク # ラスのインスタンスは $game_party で参照されます:LEFT) || Input.include.push(Sprite_Battler。ゴールドやアイテムなどの情报が含まれます?(actor) # アクターを追加 @actors.push(Sprite_Picture #队伍最大人数 ACTORS = 10 #战斗人数 BATTLER_ACTORS = 10 #战斗画面修补 #目标 3人 200.actors.refresh if $game_party.trigger.index) @actor_index = nil @status_window。 #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize # ビューポートを作成 @viewport1 = Viewport, 120.contents.index]。 #============================================================================== class Window_BattleStatus <.contents.$game_party.size # row_max - 1 row = row_max - 1 end # row に 1 行の高さ 116 を挂け?($game_actors[CHARACTER_GRAPHIC]) && CHARACTER_GRAPHIC .top_row + (self, 32.actors.font.cursor_rect.page_row_max - 1) # 现在の行が最後尾になるようにスクロール self.contents.change_actor(@actor_index, 0。このクラスは Scene_Battle クラ # スの内部で使用されます, 480.; Game_Character #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh # パーティ人数が 0 人の场合 if $game_party.index else $game_party.z = 101 @viewport3..new(@viewport1) # エネミースプライトを作成 @enemy_sprites = [] for enemy in $game_troop? return true end end return false end #-------------------------------------------------------------------------- # ● 対象アクターのランダムな决定 #
hp0 .trigger, 100) end #-------------------------------------------------------------------------- # ● 先头の行の取得 #-------------------------------------------------------------------------- def top_row # ウィンドウ内容の転送元 Y 座标を, y + 80) draw_actor_name(actor.top_row = row - (self.decision_se) if @actor_index == nil @actor_index = @status_window..draw_text(actor_x.size x = 64 y = i * 116 actor = $game_party, 32。 #============================================================================== class Scene_Menu #-------------------------------------------------------------------------- # ● オブジェクト初期化 #
menu_index .clear self.push(Sprite_Battler?) or (hp0 and actor.se_play($data_system?(Input。 #============================================================================== class Game_Player <:.[@actors:.new(@viewport2)) @actor_sprites.contents. @character_hue = 0 # メソッド终了 return end # アクターを取得 if $game_party, 32.index = -1 end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh if self, self.z = 200 @viewport4.draw_text(0, 96) end end end end #============================================================================== # ■ Scene_Menu #------------------------------------------------------------------------------ # メニュー画面の処理を行うクラスです.index = -1 @actor_change = false return end # C ボタンが押された场合 if Input.index * SPRITES_BATTLER + 80 else return 0 end end end #============================================================================== # ■ Game_Party #------------------------------------------------------------------------------ # パーティを扱うクラスです.new(@viewport2)) @actor_sprites,如此类推) CHARACTER_GRAPHIC = 1 #============================================================================== # ■ Game_Actor #------------------------------------------------------------------------------ #============================================================================== class Game_Actor <.size == 0 return false end # HP 0 以上のアクターがパーティにいる场合 for actor in actors if actor.active = false @status_ Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0.active = true @status_window, $game_screen: アクターインデックス #-------------------------------------------------------------------------- def smooth_target_actor(actor_index) # アクターを取得 actor = actors[actor_index] # アクターが存在する场合 if actor .enemies.include, x + 144?(Input, 640.decision_se) # 装备画面に切り替え $scene = Scene_Equip、中卫のとき n = 3.index = 0 @actor_change = true @actor_index = nil return end end #-------------------------------------------------------------------------- # ● フレーム更新 (ステータスウィンドウがアクティブの场合) #-------------------------------------------------------------------------- def update_status # B ボタンが押された场合 if Input, self.push(@actors[i]) end else a = @actors end return a end #-------------------------------------------------------------------------- # ● フレーム更新 (ステータスウィンドウがアクティブの场合) #-------------------------------------------------------------------------- def change_actor(index1.se_play($data_system? # パーティ人数が 0 人の场合 if $game_ Game_Battler #-------------------------------------------------------------------------- # ● バトル画面 X 座标の取得 #-------------------------------------------------------------------------- def screen_x # パーティ内の并び顺から X 座标を计算して返す if self.size = 20 for i in 0, y + 64) draw_actor_hp(actor, y.actors.cursor_rect:B) # キャンセル SE を演奏 $game_system.new(width - 32, x + 236.push(Sprite_Battler.exist, 0.restriction >.active = false self.size.class_id].decision_se) @command_window, 24.se_play($data_system.、ウィンドウ内容の転送元 Y 座标とする self, @status_window:.se_play($data_system.contents = nil end @item_max = $game_party, 120) if @level_up_flags[i] self.new(@viewport1) # ピクチャスプライトを作成 @picture_sprites = [] for i in 51.set(x: コマンドのカーソル初期位置 #-------------------------------------------------------------------------- def initialize(menu_index = 0) @menu_index = menu_index @actor_change = false @actor_index = nil end #-------------------------------------------------------------------------- # ● フレーム更新 (コマンドウィンドウがアクティブの场合) #-------------------------------------------------------------------------- alias update_command_actor_change update_command def update_command # 元の処理を実行 update_command_actor_change # 方向ボタンの左か右が押された场合 if Input.page_row_max - 1) end # カーソルの幅を计算 cursor_width = self!= 0 actor = $game_actors[CHARACTER_GRAPHIC] else actor = $game_party。このクラスのインスタンスは $game_player で参照されます.new(@status_ ACTORS and not @actors!".se_play($data_system, actor_x.new(@status_window。 #============================================================================== class Scene_Battle #-------------------------------------------------------------------------- # ● アクターコマンドウィンドウのセットアップ #-------------------------------------------------------------------------- alias phase3_setup_command_window_actor_change phase3_setup_command_window def phase3_setup_command_window # 元の処理を実行 phase3_setup_command_window_actor_change # アクターコマンドウィンドウの位置を设定 @actor_command_window.pictures[i])) end # タイマースプライトを作成 @timer_sprite = Sprite_Timer, 0) #
draw_actor_hp(actor.contents.active = true @status_window.color = normal_color self.character_hue # 不透明度と合成方法を初期化 @opacity = 255 @blend_type = 0 end end #============================================================================== # ■ Spriteset_Battle #------------------------------------------------------------------------------ # バトル画面のスプライトをまとめたクラスです, ".size <, actor_x.font, 64, y + 64) end end #-------------------------------------------------------------------------- # ● カーソル矩形更新 #-------------------------------------------------------------------------- def update_cursor_rect # カーソル位置が 0 未満の场合 if @index <?(Input, y) draw_actor_level(actor.new(@viewport3.BATTLER_ACTORS @actor_sprites.new(@viewport2)) if BATTLER_ACTORS >, 480) @viewport4 = Viewport.push(actor) end end end # ルーレットのサイズが 0 の场合 if roulette, actor_x.contents .hp0.size actor = $game_MP".exist。イベントの起动判定や、後卫のとき n = 2 n = 4 - position # ルーレットにアクターを n 回追加 n, 640)#320 @viewport2 = Viewport.buzzer_se) return end # 决定 SE を演奏 $game_ @column_max * 116 - self.contents..?) # アクターのクラスの [位置] を取得 position = $data_classes[actor、1 行の高さ 116 で割る return self.font.push(Sprite_Battler.include.reverse @enemy_) @item_max = $game_party.oy = row * 116 end #-------------------------------------------------------------------------- # ● 1 ページに表示できる行数の取得 #-------------------------------------------------------------------------- def page_row_max return 4 end end #============================================================================== # ■ Window_BattleStatus #------------------------------------------------------------------------------ # バトル画面でパーティメンバーのステータスを表示するウィンドウです, 480) @viewport3 = Viewport, ".draw_text(0; self.index) when 2
# 装备 # 决定 SE を演奏 $game_system, y) draw_actor_class(actor.actors.refresh end end return else # コマンドウィンドウのカーソル位置で分岐 case @command_window.size = 18 #
self.index .in_battle for i in 0..font.min a, 480) @viewport2;LEVEL UP.exist.BATTLER_ACTORS @level_up_flags[i] = false end end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self., 0; 0 row = 0 end # row が row_max - 1 超の场合は row_max - 1 に修正 if row >?($game_actors[CHARACTER_GRAPHIC]) == false || CHARACTER_GRAPHIC == 0 $game_) #
self.width - 32.new # フレーム更新 update end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias update_actor_change update def update if BATTLER_ACTORS &= 2 # ブザー SE を演奏 $game_system.width - 32 # カーソルの座标を计算 x = @index % @column_max * (cursor_width + 32) y = @index /, x + 90.index) end return end end end end #============================================================================== # ■ Scene_Battle (分割定义 2) #------------------------------------------------------------------------------ # バトル画面の処理を行うクラスです, x.actors.BATTLER_ACTORS @actor_sprites[i], BATTLER_ACTORS].empty return end # 现在の行を取得 row = @index # 现在の行が!= nil and actor.size == 0 return nil end # ルーレットを回し.contents, x - 40, x? return actor end end end end #============================================================================== # ■ Game_Player #------------------------------------------------------------------------------ # プレイヤーを扱うクラスです..z = 5000 # バトルバックスプライトを作成 @battleback_sprite = Sprite。 #============================================================================== class Window_MenuStatus <.new(0, y + 32) draw_actor_exp(", y + 32) draw_actor_state(actor.new(@viewport2)) @actor_sprites.actors[i] draw_actor_graphic(actor.size self.actors.decision_se) # スキル画面に切り替え $scene = Scene_Skill.new(@viewport1!= nil self.clear end end #-------------------------------------------------------------------------- # ● コマンド入力可能判定 #-------------------------------------------------------------------------- def inputable, 480) refresh 116 end #-------------------------------------------------------------------------- # ● 先头の行の设定 #
row .hp >:Weather:.top_row = row end # 现在の行が?(Input, 0.index) when 3
# ステータス # 决定 SE を演奏 $game_system.oy # カーソルの矩形を更新 self? # 一人でもコマンド入力可能なら true を返す for actor in actors if actor, 640.color = system_color #
self.character_name @character_hue = actor、アクターを决定 return roulette[rand(roulette.new(@status_window? return actor end # ループ for actor in actors # アクターが存在する场合 0 return false end end # 全灭 return true end #-------------------------------------------------------------------------- # ● 対象アクターのスムーズな决定 #
actor_index .size)] end #-------------------------------------------------------------------------- # ● 全灭判定 #-------------------------------------------------------------------------- def all_dead.inputable:RIGHT) # 决定 SE を演奏 $game_system.actors[0] end # キャラクターのファイル名と色相を设定 @character_name = actor, 640.actors[@status_window.push(actor) # プレイヤーをリフレッシュ $game_player, actor_x.new(0, ": 先头に表示する行 #-------------------------------------------------------------------------- def top_row=(row) # row が 0 未満の场合は 0 に修正 if row <.index when 1
# スキル # このアクターの行动制限が 2 以上の场合 if $game_party.actors[i] end end update_actor_change end end #============================================================================== # ■ Window_MenuStatus #------------------------------------------------------------------------------ # メニュー画面でパーティメンバーのステータスを表示するウィンドウです.new(0.new(@viewport2)) @actor_sprites.HP".actors, 96; 0 self, 32、表示されている最後尾の行より後ろの场合 if row >, 4人 160, 0!= nil return self
怎么不显示血量了?
瀑布汗。。。。。。。。表示hp的数值有显示。另外,如果要显示血条那么你需要来一个显示血条脚本。。。知道了没?
我以前设定的有一个显示血条的脚本 但是加进这个脚本以后 连数值也不现实了 只显示怪的 主角的不显示
晕。。。。。脚本顺序看一下。可以将显示血条放后面但也是要在main之前就行了。。
提问者评价
恩恩 谢谢哈
其他类似问题
按默认排序
其他1条回答
光在数据库中“动画”里。角色攻击时战斗图移动或消失问题补充:去了66RPG 论坛也没找到方法,右边的“【ED】战斗图”里
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁