Jump to content
Rpg²S Forum
  • 0

QUALCUNO CAPISCE IL FRANCESE?(almeno credo sia franceseXD)


sorcioni
 Share

Question

Ho trovato su un sito postato qui sul forum uno script che credo possa risolvere i miei problemi :D

 

Lo posto sotto spoiler

#------------------------------------------------------------------------

# MouseOver Version 1.3

# RPG Maker VX

#

# Auteur : Samarium

#

# Créé le 12 Février 2008

#

#

# Fonction : Permet d'afficher une fenêtre contenant un texte sur

# un ou des évènement(s) lors du passage de la souris

# sur ce dernier

#

# Utilisation : Très facile ! Faites un commentaire commençant par [M]

# suivit du texte dans l'/les évènement(s) de votre choix.

# Allez vers la ligne 45 pour changer certaines propriétés.

#

# Site : www.rpgcreative.net

#

# Remarque : Script disponible aussi sous RPG Maker XP

#

#------- Modification ---------

# Modifié le 27/03/08

# - Correction des incompatiblités (Remerciement à Siegfried pour quelques éclairements)

# - Correction d'un bug : Affichage selon le déplacement de l'évènement

# - Correction d'un bug : Affichage lorsqu'il y a un changement de map

#

# Modifié le 13/02/08

# - Position de la fenêtre fixe (sur l'évènement) ou mobile (sur la souris)

# - Possibilité de mettre un son

# - Fonctionnalité de \N[x] et \V[x]

#

# Modifié le 12/02/08

# - Correction d'un bug : Affichage de la fenêtre pour tous les évènements

# - Correction d'un bug : Commentaire sans message commençant par [M]

# - Optimation de la vitesse d'éxécution du script

# - Fusionnement de la modification du script Scene_Map avec ce script

#------------------------------------------------------------------------

 

def defaut

return "Window"

end

 

# ------------------ A définir -------------------

 

FONT_SIZE = 16 # La taille du texte

FONT_FACE = "Arial" # Police du texte

WINDOWSKIN = defaut # Le nom du Windoskin. Mettez "defaut" (sans les guillemets) pour afficher le Windowskins par défaut.

 

# Mettez la couleur RGB du texte. Mettez 0 pour tous pour la couleur noire et 255 pour la couleur blanche

COLOR_RED = 255

COLOR_BLUE = 255

COLOR_GREEN = 255

 

OPACITY = 160 # Opacité de la fenêtre

SON = false # Le nom du fichier son. Mettez "false" (sans les guillemets) pour ne pas mettre de son

FIX = true # "true" pour fixer la fenêtre sur l'évènement et "false" pour la rendre mobile : fenêtre suit la souris

# ------------------------------------------------

 

#---------------------------------------------------------------------

# Game_Search_Event

#

# Permet, dès le départ, chercher tout les évènements ayant un

# commentaire commençant par [M] et de les enregistrer dans un

# tableau (ID de l'évènement et message)

#---------------------------------------------------------------------

class Game_Search_Event

 

def initialize

# initialisation des variables

@element_event = {}

@map = load_data(sprintf("Data/Map%03d.rvdata", $game_map.map_id))

@nb_event = @map.events.size

@tab_event = @map.events.values # Retourne les valeurs du Hash dans un tableau

 

main

end

 

def main

for i in 0..@nb_event - 1

# Prend le contenu de la page de chaques évènements

event = @tab_event

pages = event.pages

for page in event.pages

# Prend la liste et le code de la commande d'évènement

list = page.list

code = cod(list)

# Si le code est celui que l'on veut

if code[0]

event_id = event.id

message = code[1]

 

# Ajoute dans un Hash, l'ID et le message de l'évènement

@element_event[event_id] = message

 

end

end

 

$search_finish = $game_map.map_id

end

 

 

end

 

def element_event_id

return @element_event.keys # Array

end

 

def element_event_message(event)

return @element_event[event] # String

end

 

def element_event_size

return @element_event.size # Integer

end

 

def cod(list)

# initialisation des variables

for index in 0...list.size

parameters = list[index].parameters

# Si la commande est un commentaire et commence par [M]

if list[index].code == 108 and commentaire(parameters[0])

message_text = parameters[0] + "\n"

# Ajoute aux messages les lignes suivantes

for line_count in 1..5

if list[line_count] != nil

if list[index + line_count].code == 408

message_text += text_sub(list[index + line_count].parameters[0]) + "\n"

 

end

end

end

return true, message_text

end

end

 

return false, false

end

 

 

def commentaire(text)

# Cherche le [M] et l'efface

text.gsub!(/[\[Mm]\]/) { "\001" }

 

while ((c = text.slice!(/./m)) != nil)

if c == "\001"

text.sub!(/[\[Mm]\]/, "")

text_sub(text)

return true

end

end

return false

end

 

# Remplace \N[x] par le nom du héros d'ID x et \V[x] par la variable x

def text_sub(text)

begin

last_text = text.clone

text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }

end until text == last_text

text.gsub!(/\\[Nn]\[([0-9]+)\]/) do

$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""

end

return text

end

 

end

 

#---------------------------------------------------------------------

# Mouse

#

# Reprise du module Mouse créé par Cybersam et édité par Astro_mech

# Calcule et retourne la position X et Y de la souris sur l'écran

#

#---------------------------------------------------------------------

 

module Mouse

gsm = Win32API.new('user32', 'GetSystemMetrics', 'i', 'i')

 

@cursor_pos = Win32API.new('user32', 'GetCursorPos', 'p', 'i')

module_function

 

def mouse_global_pos

pos = [0, 0].pack('ll')

if @cursor_pos.call(pos) != 0

return pos.unpack('ll')

else

return nil

end

end

 

def mouse_pos(catch_anywhere = false)

x, y = screen_to_client(*mouse_global_pos)

width, height = client_size

# if catch_anywhere or (x >= 0 and y >= 0 and x < width and y < height)

return x, y

# else

# return $m.x, $m.y

# end

end

 

 

def del

if @oldcursor == nil

return

else

@SetClassLong.call(handel ,-12, @oldcursor)

@oldcursor = nil

end

end

 

 

end

 

$scr2cli = Win32API.new('user32', 'ScreenToClient', %w(l p), 'i')

$client_rect = Win32API.new('user32', 'GetClientRect', %w(l p), 'i')

$readini = Win32API.new('kernel32', 'GetPrivateProfileStringA', %w(p p p p l p), 'l')

$findwindow = Win32API.new('user32', 'FindWindowA', %w(p p), 'l')

 

def screen_to_client(x, y)

return nil unless x and y

pos = [x, y].pack('ll')

if $scr2cli.call(hwnd, pos) != 0

return pos.unpack('ll')

else

return nil

end

end

 

def hwnd

game_name = "\0" * 256

$readini.call('Game','Title','',game_name,255,".\\Game.ini")

game_name.delete!("\0")

return $findwindow.call('RGSS Player',game_name)

end

 

def client_size

rect = [0, 0, 0, 0].pack('l4')

$client_rect.call(hwnd, rect)

right, bottom = rect.unpack('l4')[2..3]

return right, bottom

end

 

 

#---------------------------------------------------------------------

# Game_Pos_Screen_Event

#

# Calcul la position de l'évènement non par rapport à la carte

# mais selon l'écran.

#---------------------------------------------------------------------

 

class Game_Pos_Screen_Event

 

def initialize

# Initialisation

@x = @y = @real_x = @real_y = 0

@map = load_data(sprintf("Data/Map%03d.rvdata", $game_map.map_id))

end

 

def calcul_pos_event(event_id = 1)

# Prend la position de l'évènement

event = $game_map.events[event_id]

pos_x_event = event.x

pos_y_event = event.y

 

# Calcule la position relative à l'écran

@x = pos_x_event % @map.width

@y = pos_y_event % @map.height

@real_x = @x * 256

@real_y = @y * 256

end

 

def screen_x

return ($game_map.adjust_x(@real_x) + 8007) / 8 - 1000 + 16

end

 

def screen_y

return ($game_map.adjust_y(@real_y) + 8007) / 8 - 1000 + 32

end

 

end

 

#---------------------------------------------------------------------

# Game_Pos_Screen_Mouse

#

# Retourne les positions de la souris grâce au module Mouse

#---------------------------------------------------------------------

 

class Game_Pos_Screen_Mouse

 

def initialize

@pos_x_mouse = @pos_y_mouse = 0

end

 

def screen_x

return @pos_x_mouse = Mouse.mouse_pos[0]

end

 

def screen_y

return @pos_y_mouse = Mouse.mouse_pos[1]

end

 

end

 

#---------------------------------------------------------------------

# Window_MouseOver

#

# Affichage de la fenêtre MouseOver. Calcule la taille de la feêtre

# selon la taille du texte.

#---------------------------------------------------------------------

 

 

class Window_MouseOver < Window_Base

 

def initialize

super(0, 0, 64, 64)

@height = @width = 64

end

 

def refresh(text)

# initialisation

x = y = lign_size = max_size = 0

 

self.contents = Bitmap.new(@width - 32, @height - 32)

 

self.contents.font.name = FONT_FACE

self.contents.font.size = FONT_SIZE

self.windowskin = Cache.system(WINDOWSKIN)

self.contents.font.color = Color.new(COLOR_RED,COLOR_BLUE, COLOR_GREEN, 255)

self.opacity = OPACITY

 

self.contents.clear

 

ctab = text.scan(/./m)

for i in 0..ctab.size - 1

if ctab == "\n"

# Prend la ligne la plus grande (pour la taille de la fenêtre)

if lign_size > max_size

max_size = lign_size

end

 

lign_size = x = 0

y += 1

next

end

 

lign_size += self.contents.text_size(ctab).width

taille_height = self.contents.text_size(ctab).height

# Affichage du texte

self.contents.draw_text(x, taille_height * y, 20, 20, ctab)

x += self.contents.text_size(ctab).width

end

 

 

# Calcule de la taille de la fenêtre

@height = self.height = taille_height * y + 32

@width = self.width = max_size + 32

 

# Affichage si la taille du contenu de la Bitmap (- 32px) est égal à la taille de la fenêtre

if self.contents.width == @width - 32 and self.contents.height == @height - 32

self.visible = true

else

self.visible = false

end

end

 

def width_window

return self.width

end

 

def height_window

return self.height

end

 

 

end

 

#---------------------------------------------------------------------

# Scene_Map

#

# Reprise du scritp Scene_Map avec des parties rajoutées

# Affiche la fenêtre sur la carte.

#---------------------------------------------------------------------

 

class Scene_Map

 

# Définition des alias pour la classe Scene_Map

alias new_start start

alias new_update update

alias new_terminate terminate

alias new_fadein fadein

 

def start

 

$search_finish = 0

 

@map = load_data(sprintf("Data/Map%03d.rvdata", $game_map.map_id))

@mouseover_window = Window_MouseOver.new

@mouseover_window.visible = false

@event_memoire = 0

 

new_start

end

 

def terminate

@mouseover_window.dispose

new_terminate

end

 

def fadein(duration)

@mouseover_window.visible = false

new_fadein(duration)

end

 

def update

@mouseover_window.update

 

# Cherche les évènements commentés commençant par [M]

if $search_finish != $game_map.map_id # Cette condition permet de chercher seulement une fois les évènements par map

$game_search_event = Game_Search_Event.new

@event_tab = $game_search_event.element_event_id

end

 

# Positions X et Y de la souris sur l'écran

$game_pos_screen_mouse = Game_Pos_Screen_Mouse.new

 

mouse_x = $game_pos_screen_mouse.screen_x

mouse_y = $game_pos_screen_mouse.screen_y

 

# Positions X et Y des évènements sur l'écran

$game_pos_screen_event = Game_Pos_Screen_Event.new

element_event_size = $game_search_event.element_event_size

 

# Parcours le tableau contenant les évènements à afficher

for i in 0..element_event_size - 1

 

event = @event_tab

 

# Calcul la position de l'évènement relative à l'écran

$game_pos_screen_event.calcul_pos_event(event)

 

event_x = $game_pos_screen_event.screen_x

event_y = $game_pos_screen_event.screen_y

 

# Si la souris est sur l'évènement (carreau de 32*32)

if mouse_x != nil and mouse_y != nil # Evite de tester une position nulle de la souris

if mouse_x <= (event_x + 16) and mouse_x >= (event_x - 16)

if mouse_y <= (event_y) and mouse_y >= (event_y - 32)

 

if @event_memoire != event and SON != false

$game_system.se_play(SON)

end

 

# Affiche la fenêtre avec le message de l'évènement et à ses positions

text = $game_search_event.element_event_message(event)

 

if text.size != 1

@mouseover_window.refresh(text)

end

 

# Calcul la position X et Y à afficher afin d'éviter que l'écran coupe la fenêtre

width_window = @mouseover_window.width_window

height_window = @mouseover_window.height_window

 

if FIX

if (width_window + event_x) > 544

@mouseover_window.x = event_x - width_window

else

@mouseover_window.x = event_x

end

 

if (height_window + event_y) > 416

@mouseover_window.y = event_y - height_window - 16

else

@mouseover_window.y = event_y - 16

end

else

if (width_window + event_x) > 544

@mouseover_window.x = mouse_x - width_window

else

@mouseover_window.x = mouse_x

end

 

if (height_window + event_y) > 416

@mouseover_window.y = mouse_y - height_window

else

@mouseover_window.y = mouse_y

end

end

 

# Retient en mérmoire l'ID de l'évènement

@event_memoire = event

 

# Si la souris n'est plus sur l'évènement

elsif @event_memoire == event

@mouseover_window.visible = false

@event_memoire = 0

end

 

elsif @event_memoire == event

@mouseover_window.visible = false

@event_memoire = 0

end

else

@mouseover_window.visible = false

end

end

 

new_update

 

end

end

 

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0
Non puoi provarlo e basta? Poi sei troppo vago... Quali sono i tuoi problemi?

http://img256.imageshack.us/img256/7639/ihateyou.gif

Un uomo senza religione è come un pesce senza bicicletta.

http://img18.imageshack.us/img18/3668/decasoft1.png

http://rpg2s.net/gif/SCContest1Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gifhttp://rpg2s.net/gif/SCContest2Oct.gif

Link to comment
Share on other sites

  • 0
Non puoi provarlo e basta? Poi sei troppo vago... Quali sono i tuoi problemi?

 

Il problema è che non lo capisco cioè credo che ci sia bisogno di settare qualcosa anche perché provandolo lo script nn fa nnt eppure da quello che ho capito dovrebbe permettermi di attivare eventi a distanza o roba simile

Link to comment
Share on other sites

  • 0
Allora lo script ti permette di mostrare un testo in una piccola finestra quando il cursore del mouse è su un determinato evento. Dovresti inserire un commento in un evento che cominci per [M] e poi il testo da mostrare. Alla linea 45 dovrebbero esserci dei comandi d configurazione epr lo script, credo grandezza del testo, della finestra, la windowskin etc... Hey io ho studiato francese in terza media quindi figurati xD però questo con un po' di intuizione è abbastanza comprensibile :P

"Oh perché dobbiamo essere così, noi? – ci domandiamo talvolta allo specchio - con questa faccia, con questo corpo? – alziamo una mano, nell'incoscienza; e il gesto ci resta sospeso. Ci pare strano che l'abbiamo fatto noi. Ci vediamo vivere. […] In certi momenti di silenzio interiore, in cui l'anima nostra si spoglia di tutte le funzioni abituali, e gli occhi nostri diventano più acuti e più penetranti, noi vediamo noi stessi nella vita, e in se stessa la vita, quasi in una modalità arida, inquietante; ci sentiamo assaltare da una strana impressione, come se, in un baleno, ci si chiarisse una realtà diversa da quella che normalmente percepiamo, una realtà vivente oltre la vista umana, fuori delle forme dell'umana ragione." [L.P.]

 

http://img43.imageshack.us/img43/4231/vgmiud3f.png

 

 

http://rpg2s.net/gif/SCContest1Oct.gif http://www.rpg2s.net/img/fablecontest3rd.png http://rpg2s.net/gif/SCContest1Oct.gif

 

RPG by forum

 

 

 

 

 

 

 

 

 

 

http://img59.imageshack.us/img59/6/av2w.png

Nome: Erech (In elfico "lancia solitaria", da er (ereb) = "solitario" e ech = "lancia")

 

Età: 19

 

Razza: Umani

 

Descrizione: Erech è un ragazzo alto e slanciato, dalla corporatura tonica e scattante. Ha capelli lunghi e violacei come gli occhi che però sono spesso coperti in parte da un elegante cappello nero. Veste con uno stile classico, una camicetta bianca sotto una giacca nera e un fiocco al collo ornato con un'immancabile piuma azzurra. Gli piace leggere e scrivere e ama tradurre testi in lingue antiche.

 

Carattere: Il ragazzo ha un carattere chiuso e introverso, è di poche parole e preferisce i fatti alle parole. Non si relaziona spesso con i coetanei o se lo fa significa che si fida cecamente della persona che ha davanti; è diffidente e tende a non raccontare fatti del suo passato, belli o brutti che siano.

 

 

Link to comment
Share on other sites

  • 0
Allora lo script ti permette di mostrare un testo in una piccola finestra quando il cursore del mouse è su un determinato evento. Dovresti inserire un commento in un evento che cominci per [M] e poi il testo da mostrare. Alla linea 45 dovrebbero esserci dei comandi d configurazione epr lo script, credo grandezza del testo, della finestra, la windowskin etc... Hey io ho studiato francese in terza media quindi figurati xD però questo con un po' di intuizione è abbastanza comprensibile :P

 

 

ah ok grazie mille:D Peccato però, a me serviva che faceva attivare un evento e non un testo uffaXD

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...