[ Autre ] Fenêtre de téléportation

Poster un nouveau sujet   Répondre au sujet

Voir le sujet précédent Voir le sujet suivant Aller en bas

[ Autre ] Fenêtre de téléportation

Message par Scythe Darklight le Lun 21 Mai - 1:55

En tout cas lisez bien les commentaires du début du scrîpt, sinon vous avez de fortes chances d'avoir une erreur. Je pense qu'il assez facile à modifier sachant que DarkSquall a mis des commentaires là où il le faut.
Pour ceux qui se le demande encore, il est effectivement à ajouter dans un nouveau scrîpt au-dessus de main.

Écrit par Krazplay

Code:
#=======================================================================
# ■ Scene_Worldmap v0.9
#--------------------------------------------------------------------------------------------------------------------------------
# Ecrit par Krazplay, version la plus à jour disponible sur le forum du site rpgmakerxp.free.fr
# Nécessite : le scrîpt Window_world
# Description :
# Ce scrîpt permet d'afficher un menu de carte du monde/téléporteur comportant dans une
# première fenêtre à gauche une liste de choix (les destinations), chacun des choix est
# accompagné d'une image qui apparaitra à droite, et probablement dans une prochaine version
# d'une description dans la fenêtre de bienvenu, un choix peut être ajouté/enlevé ou désactivé
# à l'aide de variables ou de switchs.
# Utilisation :
# Il y a trois endroits où vous devez modifier ce scrîpt pour qu'il fonctionne, pour cela faites
# comme dans les exemples, ils sont à mon avis assez explicites.
#
# Modifications 1 : C'est là que vous mettrez le nom de la destination (dans la variable @s[i],
# où i est la position de ce choix, 0 = première position, 1 = 2nde position ou 1ère position si
# le choix 0 n'est pas disponible et ainsi de suite) et le nom de l'image du dossier Pictures lui
# correspondant dans la variable @ni[i] (le nom doit être entre crochets (exemple "Ville"), et ne
# doit PAS contenir le nom de l'extension (.jpg).
#
# Modifications 2 : Optionnel, si vous voullez qu'à un moment le joueur ne puisse pas aller
# quelquepart mais que le choix soit tout de même visible, c'est là qu'il faut le mettre, à l'aide
# de la commande : @command_window.disable_item("nom du l'endroit")
#
# Modifications 3 : Entrer ici les conséquences du choix, générallement la téléportion complète
# de l'équipe. Pour téléporter l'équipe vous pouvez utiliser la commande :
# téléportation(id_de_la_map, coordonnée_x, coordonnée_y, direction_du_héros_optionnel)
# Je ne me rappelle plus des différentes direction du héros, il me semble que ce chiffre peut
# une valeur entre 0 et 3, 0 et 3 étant compris. Cela permet en tout cas que le héro regarde
# vers le haut ou la droite par exemple, après s'être téléporté.
#
# Notes importantes : L'image doit être au format jpg (c'est le seul que j'ai testé, je ne sais pas
# si les autres sont acceptés). Son format conseillé est de 368x352, si l'image est plus petite,
# elle sera automatiquement centré au milieu de la fenêtre, de même si elle est trop grande, on
# verra son milieu, et non son côté.
# Pour appeller cette carte du monde, utliser la ligne de scrîpt suivante :
# $scene = Scene_Worldmap.new
# à partir de n'importe quel évènement ou scrîpt.
#=======================================================================
class Scene_Worldmap

def initialize(menu_index = 0)
@menu_index = menu_index
end


def main
@s = []
@ni = []
############### Modifications 1 ################
@s[0] = "Naboo" #Nom du premier choix
@ni[0] = "naboo" #Nom de l'image du premier choix ds votre dossier Pictures (sans l'extension)
@s[1] = "Tatooine"
@ni[1] = "tatooine"
@s[2] = "Coruscant"
@ni[2] = "Coruscant"
@s[3] = "Bespin"
@ni[3] = "bespin"
@s[4] = "Hoth"
@ni[4] = "hoth"
@s[5] = "Kashyyyk"
@ni[5] = "kashyyyk"
@s[6] = "Kessel"
@ni[6] = "kessel"
@s[7] = "sluis-van"
@ni[7] = "sluisvan"
@s[8] = "Yavin4"
@ni[8] = "yavin4"
for i in 0...@s.size
if @ni[i] == nil and @s[i] != nil # Si aucun nom d'image n'a été attribué alors que le lieu existe
@ni[i] = @s[i] # Alors le nom du lieu devient le nom de l'image
end
end
@s.compact! # Enlève les espaces vides possibles.
@ni.compact!
#Création de la fenêtre de bienvenue => (coordonnée x, coordonnée y, largeur, hauteur)
largeur = 640
hauteur = 96
@bienvenue_window = Window_Base.new(0,0,largeur,hauteur)
@bienvenue_window.contents = Bitmap.new(largeur-32, hauteur-32)
@bienvenue_window.contents.font.name = $fontface #si vous voullez modifier la police d'écriture
@bienvenue_window.contents.font.size = $fontsize #ou sa taille c'est ici.
message1 = "Systeme de teleportation"
message2 = "Veuillez choisir votre destination"
align = 1 #(0 = texte aligné à gauche ; 1 = texte centré ; 2 = aligné à droite)
@bienvenue_window.contents.draw_text(0, 0, largeur, 32, message1, align)
@bienvenue_window.contents.draw_text(0, 32, largeur, 32, message2, align)
largeur2 = 240 #(largeur de la fenêtre des choix)
@command_window = Window_World.new(largeur2, @s)
@command_window.x = 0 # position x de la fenêtre des choix
@command_window.y = 96 # position y de la fenêtre des choix
@command_window.index = @menu_index
# Fenêtre qui contiendra l'image => (position x, position y, largeur, hauteur)
@image_window = Window_Base.new(240, 96, 400, 480-96)

############### Modifications 2 ################
# Liste des choix non selectionnables, ils sont visibles en grisé par le joueur.
if $game_switches[2] == true # Exemple avec un switch :
@command_window.disable_item("Ville du desert") # Le choix "Ville du desert" sera grisé
end # et non selectionnable si le switch 2 est activé

if $game_variables[66] < 4 # Exemple avec une variable : Le choix "Mines"
@command_window.disable_item("Mines") # sera grisé et non selectionnable
end # tant que la variable 66 est inférieur à 4.

Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@command_window.dispose
end


def update
@command_window.update
if @image_window.active
update_image
end
if @command_window.active
update_command
return
end
end


def update_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@bienvenue_window.dispose
@image_window.dispose
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
case @s[@command_window.index]

############### Modifications 3 ################
when "Mines" # Ce qui se passe si le joueur choisit "Mines"
if not @command_window.disable_item?("Mines") # Le choix n'est pas validé s'il est désactivé (grisé).
téléportation(2, 1, 1, 2) # téléportation de l'équipe
# rappel : (id_de_la_map, coordonnée_x, coordonnée_y, direction_du_héros_optionnel)
end

when "Ville du desert"
if not @command_window.disable_item?("Ville du desert")
téléportation(4, 8, 10)
end

when "Test"
if not @command_window.disable_item?("Test")
téléportation(2, 1, 1)
end
end

if $scene == self # Si la scene est encore celle-ci, le choix n'était pas bon, donc on
$game_system.se_play($data_system.buzzer_se) # joue un bruit de buzzer
else
$game_system.se_play($data_system.decision_se)
end
return
end
end

def téléportation(map_id, coord_x, coord_y, héro_direction=0)
@bienvenue_window.dispose
@image_window.dispose
$game_temp.player_transferring = true
$game_temp.player_new_map_id = map_id
$game_temp.player_new_x = coord_x
$game_temp.player_new_y = coord_y
$game_temp.player_new_direction = héro_direction
Graphics.freeze
$game_temp.transition_processing = true
$game_temp.transition_name = ""
$scene = Scene_Map.new
end

def update_image
i =@command_window.index
if @ni[i] != nil and i != @vieuxi
@image_window.contents = Bitmap.new(400-32, 480-96-32)
bitmap = RPG::Cache.picture(@ni[i])
cw = bitmap.width
ch = bitmap.height
if cw > 368 # Ce qui suit sert à centrer l'image si elle est trop petite ou trop grande.
aw = (cw - 368) / 2
bw = 0
else
aw = 0
bw = (368 - cw) / 2
end
if ch > 352
ah = (ch - 352) / 2
bh =0
else
ah = 0
bh = (352 - ch) / 2
end
src_rect = Rect.new(aw, ah, cw, ch)
@image_window.contents.blt(bw, bh, bitmap, src_rect)
@vieuxi = i
end
end

end

#=======================================================================
# ■ Window_World v0.9
#--------------------------------------------------------------------------------------------------------------------------------
# Ecrit par Krazplay, version la plus à jour disponible sur le forum du site rpgmakerxp.free.fr
# Nécessite : le scrîpt Scene_Worldmap
# Toutes les explications sont dans le scrîpt Scene_Worldmap, il ne devrait rien avoir à faire
# dans celui-ci.
#=======================================================================
class Window_World < Window_Selectable
def initialize(width, commands)
@item_désactivé =[]
if commands.size > 11
hauteur = 11
else
hauteur = commands.size
end
super(0, 0, width, hauteur * 32 + 32)
@item_max = commands.size
@commands = commands
self.contents = Bitmap.new(width - 32, @item_max * 32)
self.contents.font.name = $fontface
self.contents.font.size = $fontsize
refresh
self.index = 0
end

def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end

def draw_item(index, color)
self.contents.font.color = color
rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index])
@item_désactivé[index] = 0
end

def disable_item(nom)
if indexde(nom) != false
draw_item(indexde(nom), disabled_color)
@item_désactivé[indexde(nom)] = 1
end
end

def disable_item?(nom)
if @item_désactivé[indexde(nom)] == 1
return true
else
return false
end
end

def indexde(nom)
for i in 0...@commands.size
if @commands[i] == nom
return i
end
end
return false
end

end



Scythe Darklight
Invoqueur de tempête
Invoqueur de tempête

Nombre de messages: 1166
Age: 20
Date d'inscription: 17/08/2006

Voir le profil de l'utilisateur http://www.freewebs.com/scythedarklight/

Revenir en haut Aller en bas

Re: [ Autre ] Fenêtre de téléportation

Message par Rayne Darkmist le Sam 26 Mai - 9:02

Je compren pas...commen on choisi la map ou téléporter.

Rayne Darkmist
Meneur des Vagues
Meneur des Vagues

Nombre de messages: 390
Age: 16
Date d'inscription: 26/03/2007

Voir le profil de l'utilisateur http://enigmatopia.iquebec.com

Revenir en haut Aller en bas

Re: [ Autre ] Fenêtre de téléportation

Message par Scythe Darklight le Sam 26 Mai - 13:50

En premier tu met le nom de tes lieu ici
@s[1] = "lieu1"
@ni[1] = "image du lieu1"
@s[2] = "lieu2"
@ni[2] = "image du lieu2"
@s[3] = "Bespin"
@ni[3] = "bespin"
@s[4] = "Hoth"
@ni[4] = "hoth"
@s[5] = "Kashyyyk"
@ni[5] = "kashyyyk"
@s[6] = "Kessel"
@ni[6] = "kessel"
@s[7] = "sluis-van"
@ni[7] = "sluisvan"
@s[8] = "Yavin4"
@ni[8] = "yavin4"

2 eme modif

if $game_switches[2 ( c'est le numero de l'interupteur ) ] == true # Exemple avec un switch :
@command_window.disable_item("lieu1") # Le choix "lieu1" sera grisé
end # et non selectionnable si le switch 2 est activé

3 eme modif

when "lieu1" # Ce qui se passe si le joueur choisit "lieu1"
if not @command_window.disable_item?("lieu1") # Le choix n'est pas validé s'il est désactivé (grisé).
téléportation(2, 1, 1, 2) # téléportation de l'équipe
# rappel : (id_de_la_map, coordonnée_x, coordonnée_y, direction_du_héros_optionnel)
end

Scythe Darklight
Invoqueur de tempête
Invoqueur de tempête

Nombre de messages: 1166
Age: 20
Date d'inscription: 17/08/2006

Voir le profil de l'utilisateur http://www.freewebs.com/scythedarklight/

Revenir en haut Aller en bas

Re: [ Autre ] Fenêtre de téléportation

Message par Rayne Darkmist le Dim 27 Mai - 9:41

ok...jten reparle kan j'aurai plus avancé ds mon projet.

C ke ds mon projet, on se promène entre les enfers, le paradis et la Terre fake c pratique.

Rayne Darkmist
Meneur des Vagues
Meneur des Vagues

Nombre de messages: 390
Age: 16
Date d'inscription: 26/03/2007

Voir le profil de l'utilisateur http://enigmatopia.iquebec.com

Revenir en haut Aller en bas

Re: [ Autre ] Fenêtre de téléportation

Message par zero le Sam 14 Juil - 14:00

GENIAL MERCI cétait THE scripts que je chercher merci de l'avoir poster...

zero
Puissance Ténébreuse
Puissance Ténébreuse

Nombre de messages: 276
Age: 17
Date d'inscription: 30/05/2007

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


Poster un nouveau sujet   Répondre au sujet
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum