class Window_Hud < Window_Base def initialize super(0,0,128,96) self.opacity = 0 # self.visible = false refresh end def refresh self.contents.clear actor = $game_actors[1] draw_actor_hp(actor, 0, 0, 96) draw_actor_mp(actor, 0, 32, 96) end def update # self.visible = true if $game_switches[1] == true # 1=interruptor que activa y desactiva el HUD refresh end end
class Scene_Map alias hud_main main alias hud_update update alias hud_terminate terminate def main @hud = Window_Hud.new hud_main end def update @hud.update hud_update end def terminate @hud.dispose end end #=================================== # Vlad ABS #=================================== #-------------------------------------------------------------- # Credits to Vlad #-------------------------------------------------------------- # To create an enemy, make an event with these annotations: # Enemy ID - Where ID is the ID number of the enemy in the Database. # Die X - where X = 1 or 2 (1, erases the event of the enemy, # 2, passes to the local interrupter A) # Follow - Makes the event automatically follow the hero. #-------------------------------------------------------------- # General Configuration #-------------------------------------------------------------- #-------------------------------------------------------------- # Attack Button, Don't Change: [DEFAULT= A] Attack_Button = Input::X #-------------------------------------------------------------- # Ability Button, Don't Change: [DEFAULT= S] Skill_Button = {Input::Y => 0} #-------------------------------------------------------------- # LevelUP Animation: LevelUp_Ani = 40 #-------------------------------------------------------------- # Attack Animation, copy Enemy_atk_ani[2] = 13 # change the 2 to the ID of the enemy, and the 13 to the ID of the animation. # Example: Enemy_atk_ani[25] = 24 Enemy_atk_ani = {} Enemy_atk_ani[2] = 13 #--------------------------------------------------------------
#-------------------------------------------------------------- # Game Character #-------------------------------------------------------------- class Game_Character attr_accessor :hp attr_accessor :mp attr_accessor :damage attr_accessor :critical attr_accessor :wait_ataque attr_accessor :die alias vlad_abs_gchar_initialize initialize def initialize @hp = 0 @mp = 0 @die = 0 $skill_for_use = 0 @wait_ataque = 0 @damage = nil @critical = false vlad_abs_gchar_initialize end def recebe_atk(attacker) attacker_status = (attacker.is_a?(Game_Event) ? attacker.enemy_status : $game_actors[1]) receptor_status = (self.is_a?(Game_Event) ? self.enemy_status : $game_actors[1]) self.damage = attacker_status.atk - receptor_status.def self.damage *= attacker_status.elements_max_rate(attacker_status.element_set) self.damage /= 100 self.damage = 0 if self.damage < 0 self.critical = (rand(100) < 4) self.damage *= 2 if self.critical if self.is_a?(Game_Player) $game_actors[1].hp -= self.damage if $game_actors[1].hp <= 0 $scene = Scene_Gameover.new end elsif self.is_a?(Game_Event) self.hp -= self.damage if self.hp <= 0 self.animation_id = 88 $game_actors[1].gain_exp(enemy_status.exp, 1) if @die == 1 self.erase elsif @die == 2 key = [$game_map.map_id, self.id, "A"] $game_self_switches[key] = true end refresh end end end def recebe_skl(attacker) for key in Skill_Button.keys sklid = Skill_Button[key] attacker_status = (attacker.is_a?(Game_Event) ? attacker.enemy_status : $game_actors[1]) receptor_status = (self.is_a?(Game_Event) ? self.enemy_status : $game_actors[1]) self.damage = $data_skills[sklid].atk_f - receptor_status.def self.damage *= attacker_status.elements_max_rate(attacker_status.element_set) self.damage /= 100 self.damage = 0 if self.damage < 0 self.critical = (rand(100) < 4) self.damage *= 2 if self.critical attacker_status.mp -= $data_skills[sklid].mp_cost if self.is_a?(Game_Player) $game_actors[1].hp -= self.damage $scene = Scene_Gameover.new if $game_actors[1].hp <= 0 elsif self.is_a?(Game_Event) self.hp -= self.damage if self.hp <= 0 $game_actors[1].gain_exp(enemy_status.exp, 1) if @die == 1 self.erase elsif @die == 2 key = [$game_map.map_id, self.id, "A"] $game_self_switches[key] = true end refresh end end end end def follow_hero(dx, dy) sx = @x - dx sy = @y - dy if sx == 0 and sy == 0 return end abs_sx = sx.abs abs_sy = sy.abs if abs_sx == 0 sy > 0 ? move_up : move_down if not moving? and sx != 0 sx > 0 ? move_left : move_right end return elsif abs_sy == 0 sx > 0 ? move_left : move_right if not moving? and sy != 0 sy > 0 ? move_up : move_down end return end if abs_sx == abs_sy rand(2) == 0 ? abs_sx += 1 : abs_sy += 1 end if abs_sx > abs_sy sx > 0 ? move_left : move_right if not moving? and sy != 0 sy > 0 ? move_up : move_down end else sy > 0 ? move_up : move_down if not moving? and sx != 0 sx > 0 ? move_left : move_right end end end def raio(dx, dy) ax = (@x - dx) ** 2 ay = (@y - dy) ** 2 return Math.sqrt(ax + ay) end end
#-------------------------------------------------------------- # Game Event #-------------------------------------------------------------- class Game_Event < Game_Character attr_reader :inimigo attr_reader :enemy_status alias vlad_abs_gevent_initialize initialize alias vlad_abs_gevent_update update alias vlad_abs_gevent_refresh refresh def initialize(map_id, event) @inimigo = false @automove = false vlad_abs_gevent_initialize(map_id, event) end def check_com(comentario) return false if @list.nil? or @list.size <= 0 for item in @list if item.code == 108 or item.code == 408 if item.parameters[0].downcase.include?(comentario.downcase) return true end end end end def check_comment(comentario) com = comentario.downcase return 0 if @list.nil? or @list.size <= 0 for item in @list if item.code == 108 or item.code == 408 if item.parameters[0].downcase =~ /#{com}[ ]?(\d+)?/ return $1.to_i end end end return 0 end def update vlad_abs_gevent_update if @inimigo new_x = (@x + (@direction == 4 ? -1 : @direction == 6 ? 1 : 0)) new_y = (@y + (@direction == 8 ? -1 : @direction == 2 ? 1 : 0)) if self.wait_ataque > 0 self.wait_ataque -= 1 elsif $game_player.x == new_x and $game_player.y == new_y $game_player.recebe_atk(self) $game_player.animation_id = self.enemy_atk_animation_id $game_player.jump(0,0) self.wait_ataque = 60 end end if @automove unless moving? self.follow_hero($game_player.x, $game_player.y) end end end def refresh vlad_abs_gevent_refresh @inimigo = false @enemy_id = check_comment("Enemy") @automove = true if check_com("Follow") == true @die = check_comment("Die") if @enemy_id > 0 @inimigo = true @enemy_status = Game_Enemy.new(@enemy_id, @enemy_id) self.hp = @enemy_status.maxhp self.mp = @enemy_status.maxmp end end def enemy_atk_animation_id if Enemy_atk_ani[@enemy_id] return (@enemy_status.nil? ? 0 : Enemy_atk_ani[@enemy_id]) else return (@enemy_status.nil? ? 0 : 1) end end def Enemy_atk_ani return Enemy_atk_ani end end
#-------------------------------------------------------------- # Game Player #-------------------------------------------------------------- class Game_Player < Game_Character alias vlad_abs_gplayer_update update alias vlad_abs_gplayer_refresh refresh def update vlad_abs_gplayer_update if self.wait_ataque > 0 self.wait_ataque -= 1 end def refresh vlad_abs_gplayer_refresh self.hp = $game_actors[1].hp self.mp = $game_actors[1].mp end if Input.trigger?(Attack_Button) and self.wait_ataque <= 0 new_x = (@x + ($game_player.direction == 4 ? -1 : $game_player.direction == 6 ? 1 : 0)) new_y = (@y + ($game_player.direction == 8 ? -1 : $game_player.direction == 2 ? 1 : 0)) for event in $game_map.events.values if event.inimigo if event.x == new_x and event.y == new_y event.recebe_atk(self) event.animation_id = self.player_atk_animation_id event.jump(0,0) self.wait_ataque = 30 break end end end end for key in Skill_Button.keys if Input.trigger?(key) and Skill_Button[key] != nil and Skill_Button[key] != 0 and $game_actors[1].mp >= $data_skills[Skill_Button[key]].mp_cost and self.wait_ataque <= 0 new_x = (@x + ($game_player.direction == 4 ? -1 : $game_player.direction == 6 ? 1 : 0)) new_y = (@y + ($game_player.direction == 8 ? -1 : $game_player.direction == 2 ? 1 : 0)) for event in $game_map.events.values if event.inimigo if event.x == new_x and event.y == new_y event.recebe_skl(self) event.animation_id = self.player_skl_animation_id event.jump(0,0) self.wait_ataque = 60 break end end end end end def player_atk_animation_id return ($game_actors[1].nil? ? 0 : $game_actors[1].atk_animation_id) end def player_skl_animation_id for key in Skill_Button.keys sklid = Skill_Button[key] return ($game_actors[1].nil? ? 0 : $data_skills[sklid].animation_id) end end def Attack_Button return Attack_Button end def Skill_Button return Skill_Button end end end
#-------------------------------------------------------------- # Game Actor #-------------------------------------------------------------- class Game_Actor alias vlad_abs_change_exp change_exp def change_exp(exp, show) last_level = @level last_skills = skills @exp = [[exp, 9999999].min, 0].max while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0 level_up end while @exp < @exp_list[@level] level_down end @hp = [@hp, maxhp].min @mp = [@mp, maxmp].min if show and @level > last_level show_level_up end vlad_abs_change_exp(exp,show) end def show_level_up $game_player.animation_id = LevelUp_Ani $game_actors[1].hp = $game_actors[1].maxhp $game_actors[1].mp = $game_actors[1].maxmp end def LevelUp_Ani return LevelUp_Ani end end
#-------------------------------------------------------------- # Sprite Base #-------------------------------------------------------------- class Sprite_Base alias animation animation_set_sprites def animation_set_sprites(frame) cell_data = frame.cell_data for i in 0..15 sprite = @animation_sprites[i] next if sprite == nil pattern = cell_data[i, 0] if pattern == nil or pattern == -1 sprite.visible = false next end if pattern < 100 sprite.bitmap = @animation_bitmap1 else sprite.bitmap = @animation_bitmap2 end sprite.visible = true sprite.src_rect.set(pattern % 5 * 192, pattern % 100 / 5 * 192, 192, 192) if @animation_mirror sprite.x = @animation_ox - cell_data[i, 1] / 2 sprite.y = @animation_oy - cell_data[i, 2] / 2 sprite.angle = (360 - cell_data[i, 4]) sprite.mirror = (cell_data[i, 5] == 0) else sprite.x = @animation_ox + cell_data[i, 1] / 2 sprite.y = @animation_oy + cell_data[i, 2] / 2 sprite.angle = cell_data[i, 4] sprite.mirror = (cell_data[i, 5] == 1) end sprite.z = self.z + 300 sprite.ox = 96 sprite.oy = 96 sprite.zoom_x = cell_data[i, 3] / 200.0 sprite.zoom_y = cell_data[i, 3] / 200.0 sprite.opacity = cell_data[i, 6] * self.opacity / 255.0 sprite.blend_type = cell_data[i, 7] end end end #-------------------------------------------------------------- # Sprite Character #-------------------------------------------------------------- class Sprite_Character < Sprite_Base alias vlad_abs_spchar_update update def initialize(viewport, character = nil) super(viewport) @character = character @balloon_duration = 0 @_damage_duration = 0 update end def update super if @_damage_duration > 0 @_damage_duration -=1 @_damage_sprite.x = self.x if @_damage_duration <= 0 dispose_damage end end if @character != nil and @character.damage != nil damage(@character.damage, @character.critical) @character.damage = nil @character.critical = false end vlad_abs_spchar_update end def damage(value, critical) dispose_damage if value.is_a?(Numeric) damage_string = value.abs.to_s else damage_string = value.to_s end bitmap = Bitmap.new(160, 48) bitmap.font.name = "Georgia" bitmap.font.size = 22 bitmap.font.italic = true if value.is_a?(Numeric) and value <= 0 bitmap.font.color.set(0, 0, 0) bitmap.draw_text(1, 13, 160, 36, "Miss", 1) bitmap.font.color.set(255, 245, 155) bitmap.draw_text(0, 12, 160, 36, "Miss", 1) else bitmap.font.color.set(0, 0, 0) bitmap.draw_text(1, 13, 160, 36, damage_string, 1) bitmap.font.color.set(255, 255, 255) bitmap.draw_text(0, 12, 160, 36, damage_string, 1) end if critical bitmap.font.color.set(0, 0, 0) bitmap.draw_text(1, 6, 160, 20, "Critical", 1) bitmap.font.color.set(255, 245, 155) bitmap.draw_text(0, 5, 160, 20, "Critical", 1) end @_damage_sprite = ::Sprite.new(self.viewport) @_damage_sprite.bitmap = bitmap @_damage_sprite.ox = 80 @_damage_sprite.oy = 20 @_damage_sprite.x = self.x @_damage_sprite.y = self.y - self.oy / 2 - 40 @_damage_sprite.z += 99999 @_damage_duration = 30 end def show_text(string, size=16, color=0) dispose_damage damage_string = string if string.is_a?(Array) array = true else array = false end bitmap = Bitmap.new(160, 48) bitmap.font.name = "Georgia" bitmap.font.size = size bitmap.font.italic = true if array for i in 0..string.size next if damage_string[i] == nil bitmap.font.color.set(96, 96-20, 0) if color == 0 bitmap.font.color.set(0, 0, 0) if color != 0 bitmap.draw_text(-1, (12+(16*i)-1)-16, 160, 36, damage_string[i], 1) bitmap.draw_text(+1, (12+(16*i)-1)-16, 160, 36, damage_string[i], 1) bitmap.draw_text(-1, (12+(16*i)+1)-16, 160, 36, damage_string[i], 1) bitmap.draw_text(+1, (12+(16*i)+1)-16, 160, 36, damage_string[i], 1) bitmap.font.color.set(255, 245, 155) if color == 0 bitmap.font.color.set(144, 199, 150) if color == 1 bitmap.font.color.set(197, 147, 190)if color == 2 bitmap.font.color.set(138, 204, 198)if color == 3 bitmap.draw_text(0, (12+(16*i))-16, 160, 36, damage_string[i], 1) end else bitmap.font.color.set(96, 96-20, 0) if color == 0 bitmap.font.color.set(0, 0, 0) if color != 0 bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1) bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1) bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1) bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1) bitmap.font.color.set(255, 245, 155) if color == 0 bitmap.font.color.set(144, 199, 150) if color == 1 bitmap.font.color.set(197, 147, 190)if color == 2 bitmap.font.color.set(138, 204, 198)if color == 3 bitmap.draw_text(0, 12, 160, 36, damage_string, 1) end @_damage_sprite = ::Sprite.new(self.viewport) @_damage_sprite.bitmap = bitmap @_damage_sprite.ox = 80 @_damage_sprite.oy = 20 @_damage_sprite.x = self.x @_damage_sprite.y = self.y - self.oy / 2 @_damage_sprite.z = 3000 @_damage_duration = 30 end def dispose_damage if @_damage_sprite != nil @_damage_sprite.dispose @_damage_sprite = nil end end end
#-------------------------------------------------------------- # Window Skill #-------------------------------------------------------------- class Scene_Skill alias vlad_abs_sskill_initialize initialize alias vlad_abs_sskill_update update def initialize(actor_index = 0, equip_index = 0) @memory = Window_Command.new(150, ["Memorize"]) @memory.active = false @memory.visible = false @memory.x = (544 - @memory.width) / 2 @memory.y = (416 - @memory.height) / 2 @memory.z = 1500 vlad_abs_sskill_initialize end def update update_skill @memory.update if @memory.active return update_memory if @memory.active vlad_abs_sskill_update end def update_skill for key in Skill_Button.keys if Input.trigger?(key) Sound.play_decision Skill_Button[key] = @skill_window.skill.id @memory.active = @memory.visible = true @skill_window.active = false end end end def update_memory if Input.trigger?(Input::C) Sound.play_decision @memory.active = @memory.visible = false @skill_window.active = true end end def Skill_Button return Skill_Button end end
Credit Vlad for script.. And me for Translation.. And my old friend BLUE FIRE GAMES
Oh yea .. To make it able for enemy to attack... Call Event
CODE
Enemy 5 Die 1 Follow
Thats Just a detail show... The higher the enemy number the stronger the opponent... A button to attack.. U dnt have to put follow... That just makes it able so the enemy follows you.. Dnt change Die 1... You can change to die 2... Does different Things... Dnt Ever Remove ENEMY Or they wont battle at all...
HAVE FUN!! Also Put over main... Materials Section
This post has been edited by meganew2: Jul 20 2008, 08:18 PM
Has already been posted, and besides those are 2 different scripts put together not 1. Look around before posting, also you don't call script, just comment.
__________________________
Current Project[RC]: Twilight Realm 3DMMORPG w/dx9, and char creation through mysql after I get a server, now C++ scripting Current Project[VX]: Obsidian Trilogy just started 08/12/2008 Current Project[XP&RM2K3]: none
Could someone add somthing like. once you do atk then it follows.
EXp/ a monsterr is gust walking around you tk it then it atks you. and if you run it follows
Its Vlad's script, we can't modify it without his permission, you would have to request it from him, most likely in Portuguese.
__________________________
Current Project[RC]: Twilight Realm 3DMMORPG w/dx9, and char creation through mysql after I get a server, now C++ scripting Current Project[VX]: Obsidian Trilogy just started 08/12/2008 Current Project[XP&RM2K3]: none
Group: Local Mod
Posts: 1,633
Type: Artist
RM Skill: Skilled
Rev Points: 5
Vlad already made an ABS for VX?
__________________________
The userbar links to the right thread this time. :P
Click here for other crap
QUOTE (gamezerstudios @ Jan 18 2010, 03:29 AM)
i don't like blogs last time i got one my desktop blew up!
ROFL!!
Dragons and Eggs! Please click :3
Weird Dragon is weird.Pretty Dragon is pretty. Midjet Dragon is a midget.Cool Dragon is cool. Awesome Dragon is AWESOMEOkay Dragon is... Meh UGLY DRAGON IS UGLY! >_<... Ok seriously WTF!? Another Pretty DragonPrettier Dragon WOAH BADASS!Woah... Same as before. >_> Ooh it's a godly looking dragon!Ooh, it's a dragon prettier than the other two! ... Okay seriously what the hell is this thing?
This was a while ago =/ I think about 2-3 months have passed since it was public.
__________________________
Current Project[RC]: Twilight Realm 3DMMORPG w/dx9, and char creation through mysql after I get a server, now C++ scripting Current Project[VX]: Obsidian Trilogy just started 08/12/2008 Current Project[XP&RM2K3]: none
I tried this but there are certain things I don't know if they are possible or not.
First, Is there a way to set a variable to change when you kill something, so you can't leave certain areas without killing all the enemies.
Also, I wanted to make boss battles, where the boss can have certain moves he will make randomly, like maybe an attack, then a beam, then two attacks, then a fireball, then an attack, etc.
If I find a script like that, it would be awesome!
I tried this but there are certain things I don't know if they are possible or not.
First, Is there a way to set a variable to change when you kill something, so you can't leave certain areas without killing all the enemies.
Also, I wanted to make boss battles, where the boss can have certain moves he will make randomly, like maybe an attack, then a beam, then two attacks, then a fireball, then an attack, etc.
If I find a script like that, it would be awesome!
The features are in the newer version in the other Crissaegrim ABS topic in this forum, please visit that one rather than this "reposted" one of the old version. I think this topic should be locked/deleted.
__________________________
Current Project[RC]: Twilight Realm 3DMMORPG w/dx9, and char creation through mysql after I get a server, now C++ scripting Current Project[VX]: Obsidian Trilogy just started 08/12/2008 Current Project[XP&RM2K3]: none
This isn't vlad's most recent ABS script. the new one had 4 parts. i think its named crissaegrim abs v1.5
I wanna download it.. Wheres link?
Look for the other Crissaegrim ABS topic, it has the links in there.
__________________________
Current Project[RC]: Twilight Realm 3DMMORPG w/dx9, and char creation through mysql after I get a server, now C++ scripting Current Project[VX]: Obsidian Trilogy just started 08/12/2008 Current Project[XP&RM2K3]: none
Current Project[RC]: Twilight Realm 3DMMORPG w/dx9, and char creation through mysql after I get a server, now C++ scripting Current Project[VX]: Obsidian Trilogy just started 08/12/2008 Current Project[XP&RM2K3]: none