Boa noite galera, primeiramente venho dizer que a Steam esta com engines em promoção de ate 90% do valor da ferramenta aproveitem e de uma olhada, após um bom tempo usando o RMVXace e ter me acostumado com RUBY por ter muito conteúdo online e suporte aqui no condado comprei o RMMV quentinho na promoção acima a algum tempo acho que nas ferias de 2017 e venho tentando criar meu próprio ABS porem todos sabem a dificuldade que eu enfrentei por não conhecer a linguagem....
Ironia do destino ainda não saco nada apesar de cursos e gastos pra tentar aprender isso online!!
Consegui criar boa parte das coisas que fiz no RUBY no Javascript, Porem tenho muita dificuldade! Queria uma ajuda pra converter os plugins que produzi no Ruby e trazer ao JavaScript ate mesmo coloco todos cientes que logo sai um jogo meu completo... [member=3]RyanKamos[/member] depois volto a falar com você sobre pixel art e seu trabalho se estiver com tempo...
segue o video:
[youtube]https://youtu.be/e-Ylk3EmiKA[/youtube]
o codigo é o seguinte no Ruby:
HUD
Consegui fazer isso porem ainda não funcional no JavaScript;
Se alguem puder me socorrer ta complicado pra mim kkk não achei que ia chegar ao ponto de travar como travei.
Ironia do destino ainda não saco nada apesar de cursos e gastos pra tentar aprender isso online!!
Consegui criar boa parte das coisas que fiz no RUBY no Javascript, Porem tenho muita dificuldade! Queria uma ajuda pra converter os plugins que produzi no Ruby e trazer ao JavaScript ate mesmo coloco todos cientes que logo sai um jogo meu completo... [member=3]RyanKamos[/member] depois volto a falar com você sobre pixel art e seu trabalho se estiver com tempo...
segue o video:
[youtube]https://youtu.be/e-Ylk3EmiKA[/youtube]
o codigo é o seguinte no Ruby:
Código:
module ABS_Configurations
Default_Animation = 1
Opacity_Burn = 10
Enemy_Recover = 60
Player_Recover = 60
Botton_Attack = :A
end
class Game_Map
attr_accessor :enemies
attr_accessor :damage_sprites
alias abs_setup setup
def setup(map_id)
@enemies.nil? ? @enemies = [] : @enemies.clear
abs_setup(map_id)
end
end
class ABS_Enemy
include ABS_Configurations
attr_accessor :enemy_hp
attr_accessor :enemy_exp
attr_accessor :enemy_atk
attr_accessor :enemy_def
attr_reader :enemy_name
attr_reader :enemy_animation
def initialize(id)
enemy = Game_Enemy.new(0,id)
note = enemy.enemy.note
if note.include?("animation=")
animation_id = note.sub("animation=","")
@enemy_animation = animation_id.to_i
else
@enemy_animation = Default_Animation
end
@enemy_hp = enemy.mhp
@enemy_exp = enemy.exp
@enemy_atk = enemy.atk
@enemy_def = enemy.def
@enemy_name = enemy.name
end
end
class Game_Event < Game_Character
attr_reader :enemy
alias abs_setup_page setup_page_settings
alias abs_initialize initialize
alias abs_update update
alias abs_start start
def initialize(map_id, event)
@enemy = nil
@recover = 0
abs_initialize(map_id, event)
end
def setup_page_settings
abs_setup_page
check_enemy
end
def check_enemy
unless @enemy.nil?
@enemy = nil
$game_map.enemies.delete(self) if $game_map.enemies.include?(self)
end
return if @list.nil?
for command in @list
next unless command.code == 108 or command.code == 408
if command.parameters[0].include?("cmd:enemy=")
id = command.parameters[0].sub("cmd:enemy=","")
@enemy = ABS_Enemy.new(id.to_i)
@trigger = 2
$game_map.enemies.push(self)
end
end
end
def damage_enemy(value)
value -= @enemy.enemy_def
value = 0 if value < 0
$game_map.damage_sprites.push(Damage_Sprite.new(self,value))
@enemy.enemy_hp -= value
if @enemy.enemy_hp <= 0
$game_map.enemies.delete(self)
RPG::SE.new("Collapse1",80).play
end
end
def update
if @enemy != nil
@recover -= 1 if @recover > 0
update_enemy_death if @enemy.enemy_hp <= 0
end
abs_update
end
def update_enemy_death
if @opacity > 0
@opacity -= ABS_Configurations::Opacity_Burn
else
@character_name = ""
@opacity = 255
@priority_type = 0
@trigger = 0
@enemy = nil
end
end
def start
@enemy.nil? ? abs_start : attack
end
def attack
return if @enemy.enemy_hp <= 0 or @recover > 0
@recover = ABS_Configurations::Enemy_Recover
$game_player.animation_id = @enemy.enemy_animation
$game_player.damage_hero(@enemy.enemy_atk)
end
end
class Game_Player < Game_Character
alias abs_initialize initialize
alias abs_update update
def initialize
@recover = 0
@player_death = false
abs_initialize
end
def update
@recover -= 1 if @recover > 0
update_attack if @recover == 0 and Input.trigger?(ABS_Configurations::Botton_Attack)
update_player_death if @player_death
abs_update
end
def update_attack
return if @player_death
for enemy in $game_map.enemies
ax = @x - enemy.x
ay = @y - enemy.y
case @direction
when 2
attack_enemy(enemy) if ax == 0 and ay == -1
when 4
attack_enemy(enemy) if ay == 0 and ax == 1
when 6
attack_enemy(enemy) if ay == 0 and ax == -1
when 8
attack_enemy(enemy) if ax == 0 and ay == 1
end
end
end
def attack_enemy(event)
hero = $game_party.members[0]
event.damage_enemy(hero.atk)
event.animation_id = hero.weapons[0].animation_id
@recover = ABS_Configurations::Player_Recover
end
def damage_hero(value)
return if @player_death
hero = $game_party.members[0]
value -= hero.def
value = 0 if value < 0
$game_map.damage_sprites.push(Damage_Sprite.new(self,value))
if value > hero.hp
hero.hp = 1
@player_death = true
RPG::SE.new("Collapse1",80).play
else
hero.hp -= value
end
end
def update_player_death
if @opacity > 0
@opacity -= ABS_Configurations::Opacity_Burn
else
SceneManager.goto(Scene_Gameover)
end
end
end
class Spriteset_Map
alias abs_initialize initialize
alias abs_update update
alias abs_dispose dispose
def initialize
$game_map.damage_sprites = []
abs_initialize
end
def update
abs_update
trash = []
for sprite in $game_map.damage_sprites
sprite.update
trash.push(sprite) if sprite.disposed?
end
for item in trash
$game_map.damage_sprites.delete(item)
end
trash.clear
end
def dispose
abs_dispose
for sprite in $game_map.damage_sprites
sprite.bitmap.dispose
sprite.dispose
end
$game_map.damage_sprites.clear
end
end
class Damage_Sprite < Sprite
def initialize(target,value)
super(nil)
@target = target
self.bitmap = Bitmap.new(100,20)
self.bitmap.draw_text(x,y,100,20,value,1)
self.ox = 50
self.x = @target.screen_x
self.y = @target.screen_y - 48
self.z = 999
@timer = 25
end
def update
self.x = @target.screen_x
self.y = @target.screen_y - 48
if @timer > 0
@timer -= 1
self.zoom_x += 0.01
self.zoom_y += 0.01
else
self.opacity > 0 ? self.opacity -= 15 : dispose
end
end
def dispose
self.bitmap.dispose
super
end
end
HUD
Código:
class Spriteset_Map
alias hud_init initialize
alias hud_update update
alias hud_dispose dispose
def initialize
@hud_player = Game_HUD.new($game_player.actor)
hud_init
end
def update
SceneManager.goto(Scene_Gameover) if $game_player.actor.hp <= 0
@hud_player.update
hud_update
end
def dispose
@hud_player.dispose
hud_dispose
end
end
class Sprite
def width=(width)
src_rect.width = width
end
end
class Game_HUD
def initialize(actor)
@actor = actor
@last_level = @actor.level
@hud_graphic = Sprite.new
@hud_graphic.bitmap = Cache.picture("Layout")
@hud_graphic.x = 0
@hud_graphic.y = 0
@hud_graphic.z = 999
@hud_face = Sprite.new
@hud_face.bitmap = Cache.picture("Face")
@hud_face.x = 0
@hud_face.y = 0
@hud_face.z = 1000
@hud_hp = Sprite.new
@hud_hp.bitmap = Cache.picture("Layout_HP")
@hud_hp.x = 84
@hud_hp.y = 10
@hud_hp.z = 1000
@hud_mp = Sprite.new
@hud_mp.bitmap = Cache.picture("Layout_MP")
@hud_mp.x = 84
@hud_mp.y = 18
@hud_mp.z = 1000
@hud_lv = Sprite.new
@hud_lv.bitmap = Cache.picture("Level_" + (@actor.level / 10).to_s)
@hud_lv.x = 24
@hud_lv.y = 21
@hud_lv.z = 1000
@hud_lv2 = Sprite.new
@hud_lv2.bitmap = Cache.picture("Level_" + (@actor.level % 10).to_s)
@hud_lv2.x = 32
@hud_lv2.y = 21
@hud_lv2.z = 1000
@hud_xp = Sprite.new
@hud_xp.bitmap = Cache.picture("Layout_XP")
@hud_xp.x = 0
@hud_xp.y = 32
@hud_xp.z = 1000
end
def update
@hud_hp.width = 100 * @actor.hp / @actor.mhp
@hud_mp.width = 100 * @actor.mp / @actor.mmp
@hud_xp.width = 100 * (@actor.exp - @actor.current_level_exp) / (@actor.next_level_exp - @actor.current_level_exp)
if @last_level != @actor.level
@hud_lv.bitmap = Cache.picture("Level_" + (@actor.level / 10).to_s)
@hud_lv2.bitmap = Cache.picture("Level_" + (@actor.level % 10).to_s)
@last_level = @actor.level
end
end
def dispose
@hud_graphic.dispose
@hud_face.dispose
@hud_hp.dispose
@hud_mp.dispose
@hud_xp.dispose
@hud_lv.dispose
@hud_lv2.dispose
end
end
Consegui fazer isso porem ainda não funcional no JavaScript;
Código:
var EnemyABS_initialize = Game_Event.prototype.initialize;
Game_Event.prototype.initialize = function(mapId, eventId) {
EnemyABS_initialize.call(this, mapId, eventId);
if (this.isEnemy()) {
this._eventEnemyId = Number($dataMap.events[eventId].meta.enemy);
this._eventEnemyMHp = $dataEnemies[this._eventEnemyId].params[0];
this._eventEnemyMMp = $dataEnemies[this._eventEnemyId].params[1];
this._eventEnemyAtk = $dataEnemies[this._eventEnemyId].params[2];
this._eventEnemyDef = $dataEnemies[this._eventEnemyId].params[3];
this._eventEnemyMat = $dataEnemies[this._eventEnemyId].params[4];
this._eventEnemyMdf = $dataEnemies[this._eventEnemyId].params[5];
this._eventEnemyAgi = $dataEnemies[this._eventEnemyId].params[6];
this._eventEnemyLuk = $dataEnemies[this._eventEnemyId].params[7];
this._eventEnemyActions = $dataEnemies[this._eventEnemyId].actions;
};
};
//Atualização do cooldown, Morte;
var EnemyABS_update = Game_Event.prototype.update;
Game_Event.prototype.update = function(){
EnemyABS_update.call(this);
if (this.isEnemy()) {
this.EnemyCooldown();
};
};
//Formula do Cooldown.
Game_Event.prototype.EnemyCooldown = function() {
var Wait = ((50 - this._eventEnemyAgi) / 50) * 180 + 180;
if (this._waitCount == undefined || this._waitCount == null){
this._waitCount = Wait;
};
var Wait_Max = 360
var Wait_Min = 180
this.Wait_Max = Wait > 360 ? 360 : Wait;
this.Wait_Min = Wait < 180 ? 180 : Wait;
if (this.isEnemy()) {
if (this._waitCount >= 0) {
this._waitCount--;
} else {
this.EnemyDistanceendDirection();
this._waitCount = Wait;
};
};
};
//Reconhecendo o inimigo.
Game_Event.prototype.isEnemy = function() {
return $dataMap.events[this._eventId].meta.enemy;
};
//Inimigo morre ao Hp se torna menor ou igual a 0.
var EnemyABS_EnemyDeath = Game_Event.prototype.EnemyDeath;
Game_Event.prototype.EnemyDeath = function() {
EnemyABS_EnemyDeath.call(this);
if (this.isEnemy()) {
if (this._eventEnemyHp <= 0) this.erase();
};
};
//Verificando HP atual do inimigo.
Game_Event.prototype.EnemyHP = function() {
if (this.isEnemy()) {
var _eventEnemyHp = this._hp;
this._eventEnemyHp *= 100;
this._eventEnemyHp /= this._eventEnemyMHp;
return this._eventEnemyHp;
};
};
//Verificando MP atual do inimigo.
Game_Event.prototype.EnemyMP = function() {
if (this.isEnemy()) {
var _eventEnemyMp = this._mp;
this._eventEnemyMp *= 100;
this._eventEnemyMp /= this._eventEnemyMMp;
return this._eventEnemyMp;
};
};
//Verificando a distancia e a direcao do evento em relacao ao player.
Game_Event.prototype.EnemyDistanceendDirection = function() {
if (!this.isEnemy()) {
return;
};
switch (this.direction()) {
case 2: if (this.y >= $gamePlayer.y) { return }; break;
case 4: if (this.x <= $gamePlayer.x) { return }; break;
case 6: if (this.x >= $gamePlayer.x) { return }; break;
case 8: if (this.y <= $gamePlayer.y) { return }; break;
};
var distance = $gameMap.distance(
$gamePlayer.x, $gamePlayer.y, this.x, this.y
);
if (distance < 2) {
this.EnemyPhysicalAttack();
};
};
//Movimentacao do evento.
var EnemyABS_updateSelfMovement = Game_Event.prototype.updateSelfMovement;
Game_Event.prototype.updateSelfMovement = function() {
EnemyABS_updateSelfMovement.call(this);
if (!this.isEnemy()) {
return;
};
if (this.isNearThePlayer()) {
this.moveTowardPlayer();
} else {
this.moveRandom();
};
};
//Proximidade entre evento e Player.
var EnemyABS_isNearThePlayer = Game_Event.prototype.isNearThePlayer;
Game_Event.prototype.isNearThePlayer = function() {
if (!this.isEnemy()) {
return EnemyABS_isNearThePlayer.apply(this, arguments);
};
var sx = Math.abs(this.deltaXFrom($gamePlayer.x));
var sy = Math.abs(this.deltaYFrom($gamePlayer.y));
return sx + sy < 5;
};
//Animacoes de ataque do Evento.
Game_Event.prototype.EnemyPhysicalAttack = function() {
if (this.isEnemy()) {
for (var i = 0; i < this._eventEnemyActions.length; i++) {
$gamePlayer.requestAnimation(this._eventEnemyActions[i].skillId);
$gameParty.leader().hp -= this._eventEnemyAtk;
console.log($gameParty.leader().hp)
console.log(this._eventEnemyAtk)
return $gameParty.leader().hp;
};
};
};
Se alguem puder me socorrer ta complicado pra mim kkk não achei que ia chegar ao ponto de travar como travei.