Partagez
Aller en bas
avatar
Frozen
Membre

Nombre de messages : 584
Age : 23
Distinction : Prêt à tout pour aider le staff !
(distinction promise ^^)
Date d'inscription : 20/03/2010

Problème A-rpg [résolu]

le Sam 20 Mar 2010 - 15:24
Bonjour,
J'ai trouvé sur le site Rpg creative ce script d'A-rpg.

=>
Spoiler:
#=============================================================================
# Window Hud
#=============================================================================

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
Spoiler:
#===================================
# Vlad ABS
#===================================
#--------------------------------------------------------------
# Créditos a Vlad
#--------------------------------------------------------------
# Para Crear un Enemigo, coloca las siguientes anotaciones:
# Enemy ID - donde ID es la ID del enemigo en la base de datos.
# Die X - donde X = 1 o 2 (1 borra el evento de enemigo, 2 pasa al interruptor local 'A')
# Follow - Para que el evento siga al personaje automáticamente.
#--------------------------------------------------------------
# Configuración General
#--------------------------------------------------------------
#--------------------------------------------------------------
# Tecla de Ataque, cambia X por la letra que quieras:
Attack_Button = Input::X
#--------------------------------------------------------------
# Tecla de Habilidad, cambia Y por la letra que quieras:
Skill_Button = {Input::Y => 0}
#--------------------------------------------------------------
# Animación cuando el Héroe sube de Nivel:
LevelUp_Ani = 40
#--------------------------------------------------------------
# Animación de ataque del enemigo, copia Enemy_atk_ani[2] = 13
# y cambia el 2 por la ID del enemigo, y el 13 por la ID de animación.
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, "Fallo", 1)
bitmap.font.color.set(255, 245, 155)
bitmap.draw_text(0, 12, 160, 36, "Fallo", 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, "Crítico", 1)
bitmap.font.color.set(255, 245, 155)
bitmap.draw_text(0, 5, 160, 20, "Crítico", 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, ["¡Memorizada!"])
@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

#--------------------------------------------------------------
# Fin del ABS
#--------------------------------------------------------------

J'ai réussi à placer un monstre mais il ne m'attaque pas et je n'arrive pas a l'attaquer ...

Pouvez-vous m'aider ?

Excusez-moi, ce problème est peut-être basique mais je ne suis que débutant dans le Making...


Dernière édition par Frozen le Sam 20 Mar 2010 - 16:20, édité 1 fois
avatar
ZangtherOld
Membre

Nombre de messages : 1711
Date d'inscription : 07/08/2009

Re: Problème A-rpg [résolu]

le Sam 20 Mar 2010 - 15:37
Merci d'aller te présenter sous peine de recevoir un avertissement, de plus fais donc un tour partie réglement pour t'informer des règles en vigeur.
Aux autres : Merci d'éviter le flood. Vous pouvez répondre, mais pas pour lui dire d'aller se présenter. Merci
avatar
Hayate
Membre

Nombre de messages : 105
Age : 23
Localisation : Quelquepart dans l'univers derrière un PC portable!
Distinction : On le connait pas, il nous connait pas. Pourtant, il fait déjà chier o/
[Kojy']

Fan officiel de Coco'

Documentaliste Animalier
[Skillo]
Membre du club masochiste de la Commu'. [Coco' Smile]
Date d'inscription : 19/08/2009

Re: Problème A-rpg [résolu]

le Sam 20 Mar 2010 - 15:42
As-tu pris l'intégralité des scripts du SBABS de Vald?
As-tu mis les commentaires nécessaires au bon fonctionnement du monstre?
As-tu seulement essayé de lire ou comprendre la notice ne serai-ce que grâce à google traduc'?

Réponds à ces questions s'il te plaît si tu veux comprendre ton problème et que les autres comprennent.
Mist' à fait un code de demande, c'est pas pour rien... merci de l'utiliser pour plus de clarté!

(si tu veux faire un A-rpg, le mieux est d'utiliser la démo de Vlad comme base, la renommer, et y mettre tes scripts...)
avatar
Djidane
Membre

Nombre de messages : 1444
Age : 25
Localisation : Paris
Distinction : Héritier d'Alexdream (mais on l'aime quand même).
Lèche cul professionnel
et il aime ça!!!
Date d'inscription : 30/12/2008

Re: Problème A-rpg [résolu]

le Sam 20 Mar 2010 - 15:43
Va te présenter ! (Je plaisante Wink ).

Plus sérieusement : Je n'arrive pas trop à voir la quelle version ABS c'est . Sur le forum tu trouvera le ABS récent et un tutoriel de moi te disant comment l'utiliser sans problème .

Regarde sa , sa t'aidera surment Smile
avatar
Frozen
Membre

Nombre de messages : 584
Age : 23
Distinction : Prêt à tout pour aider le staff !
(distinction promise ^^)
Date d'inscription : 20/03/2010

Re: Problème A-rpg [résolu]

le Sam 20 Mar 2010 - 15:57
J'ai mis les deux scripts que j'ai trouvé sur le site.
J'ai mis les commentaires correspondants à l'explication sur le site d'Rpg Creative
Spoiler:
Créez un évènement et mettez en commentaire :
- "Enemy ID" où "ID" est le numéro de l'ennemi dans la base de données
- "Die 1" ou "Die 2". Le chiffre correspond à l'interrupteur enclenché après la défaite de l'ennemi. 1 permet de désactiver l'interrupteur et 2 pour passer à l'interrupteur local 1
- "Follow"

(mais j'ai pu me tromper, je n'ai pas bien compris.)

Est-ce qu'avec ceci vous pouvez m'aider ? Ou me donner un exemple des commentaires que je dois mettre ?
avatar
Djidane
Membre

Nombre de messages : 1444
Age : 25
Localisation : Paris
Distinction : Héritier d'Alexdream (mais on l'aime quand même).
Lèche cul professionnel
et il aime ça!!!
Date d'inscription : 30/12/2008

Re: Problème A-rpg [résolu]

le Sam 20 Mar 2010 - 15:59
Je t'ai dit d'aller voir mon tutoriel . Sa t'explique tou y'as rien de plus simple !
avatar
Frozen
Membre

Nombre de messages : 584
Age : 23
Distinction : Prêt à tout pour aider le staff !
(distinction promise ^^)
Date d'inscription : 20/03/2010

Re: Problème A-rpg [résolu]

le Sam 20 Mar 2010 - 16:01
Oui excuse moi j'avais pas vu le message ^^"
J'y vais tout de suite !
avatar
Djidane
Membre

Nombre de messages : 1444
Age : 25
Localisation : Paris
Distinction : Héritier d'Alexdream (mais on l'aime quand même).
Lèche cul professionnel
et il aime ça!!!
Date d'inscription : 30/12/2008

Re: Problème A-rpg [résolu]

le Sam 20 Mar 2010 - 16:04
ça marche .

Quand tu auras trouver ton bonheur , fait signe Smile
avatar
Frozen
Membre

Nombre de messages : 584
Age : 23
Distinction : Prêt à tout pour aider le staff !
(distinction promise ^^)
Date d'inscription : 20/03/2010

Re: Problème A-rpg [résolu]

le Sam 20 Mar 2010 - 16:11
Merci, le système de combat marche =)
Maintenant j'ai plus qu'a faire des zones anti-monstres ^^
Et encore merci Wink
avatar
Djidane
Membre

Nombre de messages : 1444
Age : 25
Localisation : Paris
Distinction : Héritier d'Alexdream (mais on l'aime quand même).
Lèche cul professionnel
et il aime ça!!!
Date d'inscription : 30/12/2008

Re: Problème A-rpg [résolu]

le Sam 20 Mar 2010 - 16:17
De rien , met résolu dans ton titre avant de partir surtout x)
Contenu sponsorisé

Re: Problème A-rpg [résolu]

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum