Forum Zeldamateur

Un forum dédié à toutes les personnes qui veulent créer un Zelda ainsi qu'aux fans de créations.
 
AccueilPortailFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 faire un zelda avec rmxp c'est faisable

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
link78
Zeld-Aide Précieuse


Nombre de messages : 47
Localisation : dans un coin paumé
Date d'inscription : 16/10/2005

MessageSujet: faire un zelda avec rmxp c'est faisable   Sam 5 Nov à 8:21

j'ai découvert il n'y a pas longtemps quelquechose qui permet de faire un meilleur zelda avec rmxp un script de déplacement comme dans tgf et comme rpg maker est plus simple c'est super. Si vous le voulez je vous le passe
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
lcnleader
Zeld-Amateur
Zeld-Amateur


Nombre de messages : 4
Date d'inscription : 29/10/2005

MessageSujet: Re: faire un zelda avec rmxp c'est faisable   Sam 26 Nov à 9:26

Oui moi je voudrai bien stp :p
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
link78
Zeld-Aide Précieuse


Nombre de messages : 47
Localisation : dans un coin paumé
Date d'inscription : 16/10/2005

MessageSujet: Re: faire un zelda avec rmxp c'est faisable   Sam 26 Nov à 9:47

il faut le mettre dans un nouveau script au dessu de main peut importe le nom

# ■ XRXS22. Systême de déplacement par pixel.
# Par 桜雅 在土.

#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ● Initialisation
#--------------------------------------------------------------------------
alias xrxs22_initialize initialize
def initialize
xrxs22_initialize
@step_count_decimal = 0.00
@offsetable = 0.375
end
#--------------------------------------------------------------------------
# ● Possibilité de passage
# distance : longueur de migration
#--------------------------------------------------------------------------
def xc_passable?(x, y, d)
# La nouvelle coordonnée est calculée
case d
when 2
y += $fineness
when 4
x -= $fineness
when 6
x += $fineness
when 8
y -= $fineness
when 1
x -= $fineness
y += $fineness
when 3
x += $fineness
y += $fineness
when 7
x -= $fineness
y -= $fineness
when 9
x += $fineness
y -= $fineness
end
new_x1 = x.floor
new_x2 = x.ceil
new_y1 = y.floor
new_y2 = y.ceil
if ((($game_player.x == new_x1 and $game_player.y == new_y1) or passable?(new_x1, new_y1, 0)) and
(($game_player.x == new_x2 and $game_player.y == new_y1) or passable?(new_x2, new_y1, 0)) and
(($game_player.x == new_x1 and $game_player.y == new_y2) or passable?(new_x1, new_y2, 0)) and
(($game_player.x == new_x2 and $game_player.y == new_y2) or passable?(new_x2, new_y2, 0)))
return true
end
return false
end
#--------------------------------------------------------------------------
# ● Déplacement vers le bas
#--------------------------------------------------------------------------
def move_down(turn_enabled = true)
# Vers la direction basse du regard actuel
if turn_enabled
turn_down
end
# Vers la direction basse du regard actuel
turn_down
# Si le déplacement est possible
if xc_passable?(@x, @y, 2)
# Renouvellement des coordonnées
@y += $fineness
# Augmentation des pas
@step_count_decimal += $fineness
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch(@x.round, (@y + $fineness).ceil)
# Glissement
if @x%1 <= @offsetable and passable?(@x.floor, @y + 1, 0)
move_left(turn_enabled)
elsif @x%1 >= 1-@offsetable and passable?(@x.ceil, @y + 1, 0)
move_right(turn_enabled)
end
end
end
#--------------------------------------------------------------------------
# ● Déplacement vers la gauche
#--------------------------------------------------------------------------
def move_left(turn_enabled = true)
# Vers la direction gauche du regard actuel
if turn_enabled
turn_left
end
# Vers la direction gauche du regard actuel
turn_left
# Si le déplacement est possible
if xc_passable?(@x, @y, 4)
# Renouvellement des coordonnées
@x -= $fineness
# Augmentation des pas
@step_count_decimal += $fineness
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch((@x - $fineness).floor, @y.round)
# Glissement
if @y%1 <= @offsetable and passable?(@x - 1, @y.floor, 0)
move_up(turn_enabled)
elsif @y%1 >= 1-@offsetable and passable?(@x - 1, @y.ceil, 0)
move_down(turn_enabled)
end
end
end
#--------------------------------------------------------------------------
# ● Déplacement vers la droite
# turn_enabled : Le drapeau qui permet la modification de direction à
# cet endroit
#--------------------------------------------------------------------------
def move_right(turn_enabled = true)
# Vers la direction droite du regard actuel
if turn_enabled
turn_right
end
# Vers la direction droite du regard actuel
turn_right
# Si le déplacement est possible
if xc_passable?(@x, @y, 6)
# Renouvellement des coordonnées
@x += $fineness
# Augmentation des pas
@step_count_decimal += $fineness
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch((@x + $fineness).floor, @y.round)
# Glissement
if @y%1 <= @offsetable and passable?(@x.floor + 1, @y.floor, 0)
move_up(turn_enabled)
elsif @y%1 >= 1-@offsetable and passable?(@x.floor + 1, @y.ceil, 0)
move_down(turn_enabled)
end
end
end
#--------------------------------------------------------------------------
# ● Déplacement vers le haut
# turn_enabled : Le drapeau qui permet la modification de direction à
# cet endroit
#--------------------------------------------------------------------------
def move_up(turn_enabled = true)
# Vers la direction haute du regard actuel
if turn_enabled
turn_up
end
# Vers la direction haute du regard actuel
turn_up
# Si le déplacement est possible
if xc_passable?(@x, @y, 8)
# Renouvellement des coordonnées
@y -= $fineness
# Augmentation des pas
@step_count_decimal += $fineness
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch(@x.round, (@y - $fineness).ceil)
# Glissement
if @x%1 <= @offsetable and passable?(@x.floor, @y - 1, 0)
move_left(turn_enabled)
elsif @x%1 >= 1-@offsetable and passable?(@x.ceil, @y - 1, 0)
move_right(turn_enabled)
end
end
end
#--------------------------------------------------------------------------
# ● Déplacement vers la diagonale bas-gauche
#--------------------------------------------------------------------------
def move_lower_left
# 向き固定でない場合
unless @direction_fix
# 右向きだった場合は左を、上向きだった場合は下を向く
@direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)
end
stepped = false
# Si le déplacement est possible
if xc_passable?(@x, @y, 1)
# Renouvellement des coordonnées
@x -= $fineness
@y += $fineness
stepped = true
elsif xc_passable?(@x, @y, 4)
@x -= $fineness
stepped = true
elsif xc_passable?(@x, @y, 2)
@y += $fineness
stepped = true
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch((@x - $fineness).round, (@y + $fineness).ceil)
end
# Augmentation des pas
@step_count_decimal += $fineness if stepped
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
end
#--------------------------------------------------------------------------
# ● Déplacement vers la diagonale bas-droite
#--------------------------------------------------------------------------
def move_lower_right
# 向き固定でない場合
unless @direction_fix
# 左向きだった場合は右を、上向きだった場合は下を向く
@direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)
end
stepped = false
# Si le déplacement est possible
if xc_passable?(@x, @y, 3)
# Renouvellement des coordonnées
@x += $fineness
@y += $fineness
stepped = true
elsif xc_passable?(@x, @y, 6)
@x += $fineness
stepped = true
elsif xc_passable?(@x, @y, 2)
@y += $fineness
stepped = true
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch((@x + $fineness).ceil, (@y + $fineness).ceil)
end
# Augmentation des pas
@step_count_decimal += $fineness if stepped
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
end
#--------------------------------------------------------------------------
# ● Déplacement vers la diagonale haut-gauche
#--------------------------------------------------------------------------
def move_upper_left
# 向き固定でない場合
unless @direction_fix
# 右向きだった場合は左を、下向きだった場合は上を向く
@direction = (@direction == 6 ? 4 : @direction == 2 ? 8 : @direction)
end
# Si le déplacement est possible
if xc_passable?(@x, @y, 7)
# Renouvellement des coordonnées
@x -= $fineness
@y -= $fineness
stepped = true
elsif xc_passable?(@x, @y, 4)
@x -= $fineness
stepped = true
elsif xc_passable?(@x, @y, 8)
@y -= $fineness
stepped = true


Dernière édition par le Sam 6 Mai à 19:13, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
link78
Zeld-Aide Précieuse


Nombre de messages : 47
Localisation : dans un coin paumé
Date d'inscription : 16/10/2005

MessageSujet: Re: faire un zelda avec rmxp c'est faisable   Sam 26 Nov à 9:48

# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch((@x - $fineness).floor, (@y - $fineness).floor)
end
# Augmentation des pas
@step_count_decimal += $fineness if stepped
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
end
#--------------------------------------------------------------------------
# ● Déplacement vers la diagonale haut-droite
#--------------------------------------------------------------------------
def move_upper_right
# 向き固定でない場合
unless @direction_fix
# 左向きだった場合は右を、下向きだった場合は上を向く
@direction = (@direction == 4 ? 6 : @direction == 2 ? 8 : @direction)
end
# Si le déplacement est possible
if xc_passable?(@x, @y, 9)
# Renouvellement des coordonnées
@x += $fineness
@y -= $fineness
stepped = true
elsif xc_passable?(@x, @y, 6)
@x += $fineness
stepped = true
elsif xc_passable?(@x, @y, Cool
@y -= $fineness
stepped = true
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch((@x + $fineness).ceil, (@y - $fineness).floor)
end
# Augmentation des pas
@step_count_decimal += $fineness if stepped
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
end
end
#==============================================================================
# ■ Game_Player
#==============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# ● 同位置のイベント起動判定
#--------------------------------------------------------------------------
def check_event_trigger_here(triggers)
result = false
# イベント実行中の場合
if $game_system.map_interpreter.running?
return result
end
# 全イベントのループ
for event in $game_map.events.values
# イベントの座標とトリガーが一致した場合
if event.x == @x.round and event.y == @y.round and triggers.include?(event.trigger)
# ジャンプ中以外で、起動判定が同位置のイベントなら
if not event.jumping? and event.over_trigger?
event.start
result = true
end
end
end
return result
end
#--------------------------------------------------------------------------
# ● 正面のイベント起動判定
#--------------------------------------------------------------------------
def check_event_trigger_there(triggers)
result = false
# イベント実行中の場合
if $game_system.map_interpreter.running?
return result
end
# 正面の座標を計算
new_x = @x.round + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
new_y = @y.round + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
# 全イベントのループ
for event in $game_map.events.values
# イベントの座標とトリガーが一致した場合
if event.x == new_x and event.y == new_y and
triggers.include?(event.trigger)
# ジャンプ中以外で、起動判定が正面のイベントなら
if not event.jumping? and not event.over_trigger?
event.start
result = true
end
end
end
# 該当するイベントが見つからなかった場合
if result == false
# 正面のタイルがカウンターなら
if $game_map.counter?(new_x, new_y)
# 1 タイル奥の座標を計算
new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
# 全イベントのループ
for event in $game_map.events.values
# イベントの座標とトリガーが一致した場合
if event.x == new_x and event.y == new_y and
triggers.include?(event.trigger)
# ジャンプ中以外で、起動判定が正面のイベントなら
if not event.jumping? and not event.over_trigger?
event.start
result = true
end
end
end
end
end
return result
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
# ローカル変数に移動中かどうかを記憶
last_moving = moving?
# 移動の細かさ(基本的に固定、変更した場合は歩数増加部分も変更のこと)
if @x%1 == 0.00 and @y%1 == 0.00
case @move_speed
when 4..6
$fineness = 2.00 ** (@move_speed - 6)
else
$fineness = 0.25
end
end
# 移動中、イベント実行中、移動ルート強制中、
# メッセージウィンドウ表示中のいずれでもない場合
unless moving? or $game_system.map_interpreter.running? or
@move_route_forcing or $game_temp.message_window_showing
# 方向ボタンが押されていれば、その方向へプレイヤーを移動
case Input.dir8
when 2
move_down(@direction_fix)
when 4
move_left(@direction_fix)
when 6
move_right(@direction_fix)
when 8
move_up(@direction_fix)
when 1
move_lower_left
when 3
move_lower_right
when 7
move_upper_left
when 9
move_upper_right
end
end
# ローカル変数に座標を記憶
last_real_x = @real_x
last_real_y = @real_y
super
# キャラクターが下に移動し、かつ画面上の位置が中央より下の場合
if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
# マップを下にスクロール
$game_map.scroll_down(@real_y - last_real_y)
end
# キャラクターが左に移動し、かつ画面上の位置が中央より左の場合
if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
# マップを左にスクロール
$game_map.scroll_left(last_real_x - @real_x)
end
# キャラクターが右に移動し、かつ画面上の位置が中央より右の場合
if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
# マップを右にスクロール
$game_map.scroll_right(@real_x - last_real_x)
end
# キャラクターが上に移動し、かつ画面上の位置が中央より上の場合
if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
# マップを上にスクロール
$game_map.scroll_up(last_real_y - @real_y)
end
# 移動中ではない場合
unless moving?
# 前回プレイヤーが移動中だった場合
if last_moving
# 同位置のイベントとの接触によるイベント起動判定
result = check_event_trigger_here([1,2])
# 起動したイベントがない場合
if result == false
# デバッグモードが ON かつ CTRL キーが押されている場合を除き
unless $DEBUG and Input.press?(Input::CTRL)
# エンカウント カウントダウン
if @encounter_count > 0
@encounter_count -= $fineness
end
end
end
end
# C ボタンが押された場合
if Input.trigger?(Input::C)
# 同位置および正面のイベント起動判定
check_event_trigger_here([0])
check_event_trigger_there([0,1,2])
end
end
end
end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Fastolph
Zeld-Aide Précieuse


Nombre de messages : 15
Date d'inscription : 10/10/2005

MessageSujet: Re: faire un zelda avec rmxp c'est faisable   Sam 26 Nov à 20:33

et tu comprends quelque chose a tout ca?
t'aurait pas pu filer le lien plutot?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Lkevin52
Zeld-Admin
Zeld-Admin


Nombre de messages : 94
Localisation : Devant l'ordi du bonheur de créer
Date d'inscription : 08/10/2005

MessageSujet: Re: faire un zelda avec rmxp c'est faisable   Sam 26 Nov à 23:12

Ou faire minimum un tuto?

_________________
Lkevin52

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://zeldamateur.fr-bb.com
link78
Zeld-Aide Précieuse


Nombre de messages : 47
Localisation : dans un coin paumé
Date d'inscription : 16/10/2005

MessageSujet: Re: faire un zelda avec rmxp c'est faisable   Dim 27 Nov à 17:03

heureusement que j'ai dit qu'il fallait le mettre dans un script nouveau et peut importe le nom c'est tout ce qu'il faut faire
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Fastolph
Zeld-Aide Précieuse


Nombre de messages : 15
Date d'inscription : 10/10/2005

MessageSujet: Re: faire un zelda avec rmxp c'est faisable   Sam 3 Déc à 18:55

je veux dire: tu le comprends le code avant de le donner?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
link78
Zeld-Aide Précieuse


Nombre de messages : 47
Localisation : dans un coin paumé
Date d'inscription : 16/10/2005

MessageSujet: Re: faire un zelda avec rmxp c'est faisable   Dim 4 Déc à 1:30

je mi connais pas trop en ruby mais compren un peu le script
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: faire un zelda avec rmxp c'est faisable   Aujourd'hui à 7:57

Revenir en haut Aller en bas
 
faire un zelda avec rmxp c'est faisable
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» profite de la 5.2 pour se faire des po avec l'ectofer
» [TUTO] Faire des Patapons avec GIMP-Paint
» [RESOLU]Comment faire un coup chargé avec la grande épée sans faire le combo avant
» faire des vagues avec du papier toilette
» [TUTO]: Faire un fauteuil avec une boîte d'oeufs!

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Zeldamateur :: Logiciels :: Rpg Maker :: Rpg Maker XP-
Sauter vers: