Partagez
Aller en bas
Yasan
Yasan
Membre

Nombre de messages : 149
Age : 34
Distinction : aucune
Date d'inscription : 18/01/2011

Compilation de scripts utilitaires (Variables) Empty Compilation de scripts utilitaires (Variables)

le Ven 21 Jan 2011 - 0:06
Les scripts que je vais montrer à ceux qui ne les connaissent pas peuvent paraitre superflus, principalement pour les scripteurs qui savent faire ça autrement. Mais pour les non-scripteurs, ça peut avoir une utilité importante pour élaborer certains systèmes complexes.

Je vais les présenter chacun leur tour.

Auteur : PK8

PK8's Self Variables


Pour celui-là j'ai du corriger une bêtise de PK8, qui avait mis un Interpreter au lieu de Game_Interpreter, du moins je le pense puisqu'en corrigeant, il ne me saute plus à la figure ^^

A quoi ça sert ?

Tout simplement à avoir une infinité de variables inhérentes à un Event en particulier. Il y a les variables du jeu, me direz-vous. C'est vrai, mais c'est tellement plus pratique car les variables de rpgmaker sont globales. Elles servent, à mon sens, aux systèmes globaux. Ces variables là, servent pour la micro-gestion de vos Events.

Il y a une infinité d'application. Par exemple, c'est ce que j'utilise dans mon projet, pour faire un PNJ. On peut attribuer par exemple 10 variables de caractères qui évoluent selon les réponses du joueur au dialogue.

Par exemple :

Nous avons un PNJ nommé Albert. Nous voulons qu'Albert ait une variable "Fierté", une variable "Tristesse" et une variable "Ennui".
Lorsqu'on parle à Albert, son humeur varie selon nos réponses. Nous pourrions utiliser des variables du jeu pour ça. Mais il faudrait à chaque fois choisir sa variable dans la liste etc. En plus, s'il faut faire pareil pour chaque PNJ, ça va vite devenir compliqué à gérer. Heureusement, le script est là pour ça.

Configurons nos variables, afin qu'elles existent. Pour ça, il faut utiliser ce script à ajouter dans l'Event Albert, sur la map de votre choix.

self_variable(id, value,oper)

id: C'est l'identification de la valeur. On peut mettre un chiffre ou même un mot (dans ce cas, on l'entoure de guillemets).
value: La valeur que l'on souhaite
oper: 0: Set, 1: Add, 2: Sub, 3: Mul, 4: Div, 5: Mod

Commençons par la Fierté. On insère donc un script dans l'Event Albert avec dedans : self_variable('fierté', 0, 0).

Décortiquons un peu tout ça. 'fierté' : c'est l'id, c'est à dire l'identifiant. Comme c'est un mot, je l'ai entouré de guillemets. 0 : le premier zéro, c'est la valeur que je lui donne, au début, il n'est pas spécialement fier, 0 : le second zéro c'est l'opérateur, ici set, c'est à dire je lui met cette valeur. Si j'avais utilisé 1, j'aurais ajouté 0 etc. C'est en fait la même chose que les variables du jeu, mais sans l'interface, mais ce n'est pas trop compliqué non plus ^^ Sisi !

Voilà, nous avons notre variables instaurée. Il suffit de faire pareil avec "Tristesse" et "Ennui".

Ensuite, il suffit d'utiliser votre imagination ! Imaginons un dialogue :

Albert : J'aime beaucoup les crabes dans ma bouche.

Joueur :

[Choix 1] C'est pour ça que tu pues autant ?
self_variable('fierté', 5, 2)

(Albert a été piqué au vif qu'on soit si impoli ! Sa fierté baisse de 5 ! (5 c'est la valeur, et 2 c'est l"opérateur, ici soustraire)

[Choix 2] C'est... charmant, vous êtes très fort !
self_variable('fierté', 5, 1)

(Là par contre, Albert a apprécié, hop sa fierté augmente de 5 !)


Vous avez compris, je pense comment ça fonctionne. Ca parait tout bête mais on peut faire des tas de choses avec ça, tout en gardant les variables du jeu pour d'autres utilisations, comme les grands choix de votre joueur, ou je ne sais quoi ^^ Ces variables de fierté ne concernent QUE Albert.

Voici le script =>

Spoiler:
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# [~]PK8's Self Variables
# Version : 1.0
# Par : PK8
# Traduction des commentaires en Français : Neko'
# Codé le : 16/09/09
# http://rmvxp.com
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

=begin

--- Table des Matières ---

[*] Notes de l'auteur

[*] Introduction & Description

[*] Caractéristiques

[*] Mode d'Emploi

[*] Liste des méthodes aliasées

[*] Remerciements

[*] Changelog

#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[*] Notes de l'auteur :

Lowell/Adalwulf mentionnait la création d'un système de "Variables Autonomes",
ce qui m'a alors inspiré des idées sur les variables et interrupteurs.
L'une de ces idées étant le Système de "Self-Variables" (Variables Autonomes).


#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[*] Introduction & Description :

Ce script est assez similaire à celui de base : Les interrupteurs locaux.
Pour ceux qui ne sont pas familiers aux Interrupteurs Locaux, ceux-ci appartiennent
à un évènement spécifique.
(Par exemple utilisés dans la création de Coffres aux Trésors)
Les Variables Autonomes permettent aux utilisateurs de définir certaines variables
relatives à un évènement en particulier.
(Par exemple faire éprouver des sentiments envers vous à un évènement)


#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[*] Caractéristiques

* Définition des Variables Autonomes via un appel de script. (Mode d'Emploi ci-dessous)
* Accès aux Variables Autonomes via un appel de script. (Mode d'Emploi ci-dessous)


#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[*] Mode d'Emploi

* Paramétrer une variable autonome :

Pour paramétrer une variable autonome pour un évènement, vous aurez besoin d'appeler ce script
sur un évènement de la map :

self_variable(id, value, oper)

Explication :

id : Identification de la Variable. Par exemple 'fierté'
value : C'est la valeur que l'on souhaite.
oper: Opération à effectuer :

0 : Attribuer
1 : Ajouter
2 : Soustraire
3 : Multiplier
4 : Diviser
5 : Modulo


* Récupérer une variable autonome :
Pour récupérer une variable autonome pour un évènement, vous pouvez appeler ce script :

self_variable(id)

Explication :

id : Identification de la Variable.



* Utiliser des variables autonomes dans les conditions évènementielles en "Si" :

Vous vous demandez probablement comment, non?
Bien. Pour faire cela, allez dans les commandes d'évènement, choisissez "Condition...".
Ensuite, cliquez sur le quatrième tableau, et sélectionnez Script.

Formes d'écriture :

self_variable(id) == value # Egal à.
self_variable(id) >= value # Supérieur ou Egal à.
self_variable(id) <= value # Inférieur ou égal à
self_variable(id) > value # Supérieur à.
self_variable(id) < value # Inférieur à.
self_variable(id) != value # Différent de.


#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[*] Liste des méthodes aliasées

command_new_game dans Scene_Title
write_save_data dans Scene_Save < Scene_File
read_save_data dans Scene_Load < Scene_File


#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[*] Remerciements

* Lowell : Il a soumis l'idée de création du système de variables autonomes,
ce qui m'a permis de trouver le problème des scripts originaux.

* Decibel : Il voulait pouvoir utiliser les variables autonomes dans les messages,
mais je n'ai pas pu le faire.

* Kain Nobel: Il m'a aidé à faire la version pour RMXP de ce script.


#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

[*] Changelog

* Version 1.0

* 16/09/09 : Initial Release

#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

=end

#==============================================================================
# ** Game_SelfVariables
#------------------------------------------------------------------------------
# This class handles self variables. It's a wrapper for the built-in class
# "Hash." The instance of this class is referenced by $game_self_variables.
#==============================================================================

class Game_SelfVariables
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
@data = {}
end
#--------------------------------------------------------------------------
# * Get Self Switch
# key : key
#--------------------------------------------------------------------------
def [](key)
if @data[key] == nil
return 0
else
return @data[key]
end
end
#--------------------------------------------------------------------------
# * Set Self Switch
# key : key
# value : key's value
#--------------------------------------------------------------------------
def []=(key, value)
@data[key] = value
end
end

#==============================================================================
# ** Interpreter
#------------------------------------------------------------------------------
# This interpreter runs event commands. This class is used within the
# Game_System class and the Game_Event class.
#==============================================================================

class Interpreter
def self_variable(id, value = nil, oper = nil)
if @event_id > 0
key = [@map_id, @event_id, id]
if value != nil
case oper
when nil, 0, 'equal', 'set', '=' # Setting
$game_self_variables[key] = value
when 1, 'add', '+' # Adding
$game_self_variables[key] += value
when 2, 'sub', 'subtract', '-' # Subtracting
$game_self_variables[key] -= value
when 3, 'mul', 'multiply', 'x', '*' # Multiplying
$game_self_variables[key] *= value
when 4, 'div', 'divide', '/' # Dividing
$game_self_variables[key] /= value if value != 0
when 5, 'mod', 'modular', '%' # Modulating
$game_self_variables[key] %= value if value != 0
else
return $game_self_variables[key]
end
end
if value != nil
$game_map.need_refresh = true
return true
end
end
end
end

#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# This class performs the title screen processing.
#==============================================================================

class Scene_Title
alias pk8_self_variables_command_new_game :command_new_game
#--------------------------------------------------------------------------
# * Create Game Objects
#--------------------------------------------------------------------------
def command_new_game
pk8_self_variables_command_new_game
$game_self_variables = Game_SelfVariables.new
end
end

#==============================================================================
# ** Scene_Save
#------------------------------------------------------------------------------
# This class performs save screen processing.
#==============================================================================

class Scene_Save < Scene_File
alias pk8_self_variables_write_save_data :write_save_data
#--------------------------------------------------------------------------
# * Write Save Data
# file : write file object (opened)
#--------------------------------------------------------------------------
def write_save_data(file)
pk8_self_variables_write_save_data(file)
Marshal.dump($game_self_variables, file)
end
end

#==============================================================================
# ** Scene_Load
#------------------------------------------------------------------------------
# This class performs load screen processing.
#==============================================================================

class Scene_Load < Scene_File
alias pk8_self_variables_read_save_data :read_save_data
#--------------------------------------------------------------------------
# * Read Save Data
# file : file object for reading (opened)
#--------------------------------------------------------------------------
def read_save_data(file)
pk8_self_variables_read_save_data(file)
$game_self_variables = Marshal.load(file)
end
end

Actor & Party Self Variables VX


Mais comment faire pour attribuer des variables, non plus aux Event mais aux personnages de votre jeu ? Eux aussi ont le droit à leur variable de faim, de soif, de beaufitude et de sadisme exacerbé !

Heureusement, il y a ce script =>

Spoiler:
=begin
????????????????????????????????????????????????????????????????????????????????​?
? Actor & Party Self Variables VX ?
? Version 1.0 ?
? by PK8 & Kain Nobel ?
? 9/16/09 ?
? http://rmvxp.com ?
????????????????????????????????????????????????????????????????????????????????​?
? ? Table of Contents ?
? ?? Author's Notes - Line 18?22 ?
? ?? Introduction & Description - Line 24?37 ?
? ?? Features - Line 39?43 ?
? ?? How to Use - Line 45?90 ?
? ?? This aliases the following... - Line 92,93 ?
? ?? Thanks - Line 95?98 ?
? ?? Changelog - Line 100,101 ?
????????????????????????????????????????????????????????????????????????????????​
? ? Author's Notes ?
? Lowell/Adalwulf mentioned creating a "Personal Variables" system which filled?
? my head in with ideas about variables and switches. One of these ideas being ?
? giving party members and actors their own self variables. I could think of a ?
? few uses for them. How about an actor's Reputation or Alignment? ?
????????????????????????????????????????????????????????????????????????????????​?
? ? Introduction & Description ?
? This script is a tad similar to that of the built in feature: Self Switches. ?
? For those not familiar with Self Switches, Self Switches pretty much pertain ?
? to a specific event. Example: Treasure Chests. ?
? ?
? Actor & Party Self Variables allows developers to set certain variables ?
? pertaining to a certain party member or actor. ?
? ?
? Let's say, you set a variable to Party Member 1 (Ralph) to 5. In case you ?
? ever change party members, the variable will still be 5 for that member in ?
? the party (Ralph). ?
? ?
? Or how about if you want to set a certain variable for a specific actor ?
? instead of a member in the party. You can do that as well! ?
????????????????????????????????????????????????????????????????????????????????​?
? ? Features ?
? ? Set party member's self variables via call script. (How to use is below) ?
? ? Get party member's self variables via call script. (How to use is below) ?
? ? Set actor's self variables via call script. (How to use is below) ?
? ? Get actor's self variables via call script. (How to use is below) ?
????????????????????????????????????????????????????????????????????????????????​
? ? How to Use ?
? ?
? ? Setting up a party member's self variable: ?
? To set a self variable for a party member, you'll need to call this script:?
? party_self_variable(member, id, value, oper) ?
? member: Party Member. (0, 1, 2, 3) ?
? id: Party Member Self Variable Identification. Example: 'A', 'B' ?
? value: Give it a value. ?
? oper: 0: Set, 1: Add, 2: Sub, 3: Mul, 4: Div, 5: Mod ?
? Example: party_self_variable(0, 'A', 5, 0) sets whoever may be the 1st ?
? party member's variable "A" to 5. ?
? ?
? ? Getting a party member's self variable: ?
? To get a self variable of a party member, you can call this script. ?
? party_self_variable(member, id) ?
? member: Party Member. (0, 1, 2, 3) ?
? id: Party Member Self Variable Identification. Example: 'A', 'B' ?
? Example: party_self_variable(0, 'A') gets variable "A" of whoever may be ?
? the 1st party member. ?
? ?
? ? Using party member's self variables in evented if conditions. ?
? You're probably wondering how, right? Alright. To do this, go to the ?
? conditional branch event command, click on the fourth tab, select Script ?
? and type either of these in the input form: ?
? party_self_variable(member, id) == value <- Equal to. ?
? party_self_variable(member, id) >= value <- Greater than or Equal to. ?
? party_self_variable(member, id) <= value <- Less than or Equal to. ?
? party_self_variable(member, id) > value <- Greater than. ?
? party_self_variable(member, id) < value <- Less than. ?
? party_self_variable(member, id) != value <- Not Equal to. ?
? ?
? ? Setting up an actor's self variable: ?
? To set a self variable for an actor, you'll need to call this script: ?
? actor_self_variable(actor, id, value, oper) ?
? actor: Character ID from the database. (1, 2, 3, 4, 5, 6, 7, Cool ?
? id: Party Member Self Variable Identification. Example: 'A', 'B' ?
? value: Give it a value. ?
? oper: 0: Set, 1: Add, 2: Sub, 3: Mul, 4: Div, 5: Mod ?
? Example: actor_self_variable(1, 'A', 5, 0) sets Actor 1's variable "A" to 5?
? ?
? ? Getting an actor's self variable: ?
? To get a self variable of an actor, you can call this script. ?
? actor_self_variable(actor, id) ?
? actor: Character ID from the database. (1, 2, 3, 4, 5, 6, 7, Cool ?
? id: Party Member Self Variable Identification. Example: 'A', 'B' ?
? Example: actor_self_variable(1, 'A') gets variable "A" of Actor 1. ?
? ?
? ? Using an actor's self variables in evented if conditions. ?
? To do this, go to the conditional branch event command, click on the fourth?
? tab, select Script and type either of these in the input form: ?
? actor_self_variable(member, id) == value <- Equal to. ?
? actor_self_variable(member, id) >= value <- Greater than or Equal to. ?
? actor_self_variable(member, id) <= value <- Less than or Equal to. ?
? actor_self_variable(member, id) > value <- Greater than. ?
? actor_self_variable(member, id) < value <- Less than. ?
? actor_self_variable(member, id) != value <- Not Equal to. ?
????????????????????????????????????????????????????????????????????????????????​
? ? This aliases the following... ?
? initialize - Game_Party ?
????????????????????????????????????????????????????????????????????????????????​
? ? Thanks ?
? Lowell: He mentioned creating a personal variables system for his project ?
? which made me (PK8) catch "the scripting bug". ?
? Kain Nobel: He modified some of the code and made it a lot better. ?
????????????????????????????????????????????????????????????????????????????????​
? ? Changelog ?
? Version 1.0 - 9/16/09: Initial Release ?
????????????????????????????????????????????????????????????????????????????????​?
=end

#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
# This class handles the party. It includes information on amount of gold
# and items. The instance of this class is referenced by $game_party.
#==============================================================================

class Game_Party
attr_accessor :self_variables
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias_method :partyselfvariables_gmparty_initialize, :initialize
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(*args)
partyselfvariables_gmparty_initialize(*args)
@self_variables = Game_Party::SelfVariables.new
end
end

#==============================================================================
# ** Game_Party::SelfVariables
#------------------------------------------------------------------------------
# This handles self variables. It's a wrapper for the built-in class "Array."
# The instance of this class is referenced by $game_party.self_variables.
#==============================================================================

class Game_Party::SelfVariables
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
@data = {}
end
#--------------------------------------------------------------------------
# * Get Self Variable of Actor
# key : key
#--------------------------------------------------------------------------
def [](key)
if @data[key] == nil
return 0
else
return @data[key]
end
end
#--------------------------------------------------------------------------
# * Set Self Variable of Actor
# key : key
# value : value
#--------------------------------------------------------------------------
def []=(key, value)
@data[key] = value
end
end

#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
# An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================

class Game_Interpreter
#--------------------------------------------------------------------------
# * Control Party Self Variable
#--------------------------------------------------------------------------
def party_self_variable(member, id, value = nil, oper = nil)
key = [$game_party.members[member].id, id]
if value != nil
case oper
when nil, 0, 'equal', 'set', '=' # Setting
$game_party.self_variables[key] = value
when 1, 'add', '+' # Adding
$game_party.self_variables[key] += value
when 2, 'sub', 'subtract', '-' # Subtracting
$game_party.self_variables[key] -= value
when 3, 'mul', 'multiply', 'x', '*' # Multiplying
$game_party.self_variables[key] *= value
when 4, 'div', 'divide', '/' # Dividing
$game_party.self_variables[key] /= value if value != 0
when 5, 'mod', 'modular', '%' # Modulating
$game_party.self_variables[key] %= value if value != 0
end
else
return $game_party.self_variables[key]
end
$game_map.need_refresh = true
return true
end

#--------------------------------------------------------------------------
# * Control Actor Self Variable
#--------------------------------------------------------------------------
def actor_self_variable(actor, id, value = nil, oper = nil)
key = [$game_actors[actor].id, id]
if value != nil
case oper
when nil, 0, 'equal', 'set', '=' # Setting
$game_party.self_variables[key] = value
when 1, 'add', '+' # Adding
$game_party.self_variables[key] += value
when 2, 'sub', 'subtract', '-' # Subtracting
$game_party.self_variables[key] -= value
when 3, 'mul', 'multiply', 'x', '*' # Multiplying
$game_party.self_variables[key] *= value
when 4, 'div', 'divide', '/' # Dividing
$game_party.self_variables[key] /= value if value != 0
when 5, 'mod', 'modular', '%' # Modulating
$game_party.self_variables[key] %= value if value != 0
end
else
return $game_party.self_variables[key]
end
$game_map.need_refresh = true
return true
end
end

Il fait la même chose... mais pour les actors ! La seule différence, c'est qu'il faut ajouter de quel personnage on parle.

Par exemple :

party_self_variable(0, 'Fierté', 5, 0)

Ca signifie que le premier personnage dans la base de donnée aura une variable Fierté qui commence avec 5 en valeur.



Dernière édition par Yasan le Ven 21 Jan 2011 - 11:12, édité 4 fois
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

Compilation de scripts utilitaires (Variables) Empty Re: Compilation de scripts utilitaires (Variables)

le Ven 21 Jan 2011 - 0:18
Hmm. C'est bien chouette comme script, j'aime bien le principe.
M'enfin, en me mettant à la place d'un non-scripteur, lu comme ça, je vois pas réellement comment ça s'emploie, de petites explications s'imposent, non...? Wink

A la limite, je me chargerais de la traduction en FR des commentaires du code :P
Yasan
Yasan
Membre

Nombre de messages : 149
Age : 34
Distinction : aucune
Date d'inscription : 18/01/2011

Compilation de scripts utilitaires (Variables) Empty Re: Compilation de scripts utilitaires (Variables)

le Ven 21 Jan 2011 - 0:48
Et comme ça, c'est mieux ?
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

Compilation de scripts utilitaires (Variables) Empty Re: Compilation de scripts utilitaires (Variables)

le Ven 21 Jan 2011 - 9:38
Là, c'est niquel Wink
Merci d'avoir pris de ton temps pour expliquer, c'est assez clair je trouve, GG.

En ce qui me concerne, je vais commencer la traduction ce matin, elle devrait être prête dans la journée Compilation de scripts utilitaires (Variables) 522164
Maloume
Maloume
Membre

Nombre de messages : 623
Age : 25
Localisation : Marseille mon con
Distinction : aucune
Date d'inscription : 28/05/2010

Compilation de scripts utilitaires (Variables) Empty Re: Compilation de scripts utilitaires (Variables)

le Ven 21 Jan 2011 - 9:45
Le tout est intéressant ! Je pense que ça va m'aider !
Mais est-ce que tu connai l'auteur?
Yasan
Yasan
Membre

Nombre de messages : 149
Age : 34
Distinction : aucune
Date d'inscription : 18/01/2011

Compilation de scripts utilitaires (Variables) Empty Re: Compilation de scripts utilitaires (Variables)

le Ven 21 Jan 2011 - 9:48
C'est PK8, l'auteur, je le connais pas personnellement.
Pharazon
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 33
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' Compilation de scripts utilitaires (Variables) 522164]
Date d'inscription : 14/04/2010

Compilation de scripts utilitaires (Variables) Empty Re: Compilation de scripts utilitaires (Variables)

le Ven 21 Jan 2011 - 12:07
très intéressant ces scripts.

c'est vrai que ça à l'air plus simple à gérer, et donne plus envie d'approfondir les évents avec ça.


merci Smile
Frozen
Frozen
Membre

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

Compilation de scripts utilitaires (Variables) Empty Re: Compilation de scripts utilitaires (Variables)

le Ven 21 Jan 2011 - 13:28
'fierté' : c'est l'id, c'est à dire l'identifiant. Comme c'est un mot, je l'ai entouré de guillemets

Tu as entouré fierté avec ce symbole: '
Le problème c'est que c'est ce qui sert d'apostrophe et pas de guillemets, les guillemets c'est avec ce symbole: "
Donc est-ce qu'il faut entourer le mot avec des guillemets (") ou des apostrophes (') ?
Et est-ce que ça marche avec les deux ?
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Compilation de scripts utilitaires (Variables) Empty Re: Compilation de scripts utilitaires (Variables)

le Ven 21 Jan 2011 - 13:36
Une bonne idée mais mal finie , je trouve .

Le "0 à 5" , c'est pas du tout intuitif .
A la place de l'auteur , j'aurais mis les opérateurs directement et j'aurais inversé les 2 derniers parametres :
self_variable('fierté', '-' , 5)
Avec '=','-','+','/','%' ...
ça se lit plus simplement , on voit "Fierté - 5" .

Niveau explication , tu as oublié de dire comment on utilise la valeur .
Pour des tests par exemple :
Condition : Si script self_variable('fierté') == 5
Donc sans les 2 autres parametres et attention au "==" .
Là aussi , c'est mal fichu , je trouve . il manque une methode comme :
"test_variable('fierté','=','5')" qui renverrait true ou false .

J'ai un doute sur le "premier personnage dans la base de donnée" que tu dis . Tu es sur ? parce que je vois des subtilités là-dessus dans le script .

Et oui, comme frozen , j'ai un doute sur les " ou ' . Mais je vois que l'auteur met ' dans son commentaire .
avatar
Az'
Membre

Nombre de messages : 3317
Age : 74
Date d'inscription : 22/12/2007

Compilation de scripts utilitaires (Variables) Empty Re: Compilation de scripts utilitaires (Variables)

le Ven 21 Jan 2011 - 14:16
Les strings (chaînes de caractères, bande de petits pervers Rolling Eyes), sont reconnues en tant que telles lorsqu'elles sont entourés de " ou de '. Les deux sont valables.

Sinon, voici ma traduction du premier code (du =begin à =end, j'ai pas jugé la traduction du reste bien utile) :

Code:
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# [~]PK8's Self Variables
# Version : 1.0
# Par : PK8
# Traduction des commentaires en Français : Neko'
# Codé le : 16/09/09
# http://rmvxp.com
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

=begin

  --- Table des Matières ---
 
   [*] Notes de l'auteur
   
   [*] Introduction & Description
   
   [*] Caractéristiques
   
   [*] Mode d'Emploi
   
   [*] Liste des méthodes aliasées
   
   [*] Remerciements
   
   [*] Changelog
   
#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

   [*] Notes de l'auteur :
   
      Lowell/Adalwulf mentionnait la création d'un système de "Variables Autonomes",
   ce qui m'a alors inspiré des idées sur les variables et interrupteurs.
   L'une de ces idées étant le Système de "Self-Variables" (Variables Autonomes).
   

#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

   [*] Introduction & Description :
   
      Ce script est assez similaire à celui de base : Les interrupteurs locaux.
   Pour ceux qui ne sont pas familiers aux Interrupteurs Locaux, ceux-ci appartiennent
   à un évènement spécifique.
   (Par exemple utilisés dans la création de Coffres aux Trésors)
      Les Variables Autonomes permettent aux utilisateurs de définir certaines variables
   relatives à un évènement en particulier.
   (Par exemple faire éprouver des sentiments envers vous à un évènement)

   
#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

   [*] Caractéristiques

      * Définition des Variables Autonomes via un appel de script. (Mode d'Emploi ci-dessous)
      * Accès aux Variables Autonomes via un appel de script. (Mode d'Emploi ci-dessous)
   
   
#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

   [*] Mode d'Emploi

      * Paramétrer une variable autonome :
      
   Pour paramétrer une variable autonome pour un évènement, vous aurez besoin d'appeler ce script
   sur un évènement de la map :
   
         self_variable(id, value, oper)
         
         Explication :
         
            id : Identification de la Variable. Par exemple 'fierté'
            value : C'est la valeur que l'on souhaite.
            oper: Opération à effectuer :
            
                                    0 : Attribuer
                                    1 : Ajouter
                                    2 : Soustraire
                                    3 : Multiplier
                                    4 : Diviser
                                    5 : Modulo
                                    
                                    
      * Récupérer une variable autonome :
   Pour récupérer une variable autonome pour un évènement, vous pouvez appeler ce script :
         
         self_variable(id)
         
         Explication :
         
         id : Identification de la Variable.
         
         

      * Utiliser des variables autonomes dans les conditions évènementielles en "Si" :
      
   Vous vous demandez probablement comment, non?
   Bien. Pour faire cela, allez dans les commandes d'évènement, choisissez "Condition...".
   Ensuite, cliquez sur le quatrième tableau, et sélectionnez Script.
   
   Formes d'écriture :
   
         self_variable(id) == value # Egal à.
         self_variable(id) >= value # Supérieur ou Egal à.
         self_variable(id) <= value # Inférieur ou égal à
         self_variable(id) > value  # Supérieur à.
         self_variable(id) < value  # Inférieur à.
         self_variable(id) != value # Différent de.
         
         
#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

   [*] Liste des méthodes aliasées
   
      command_new_game dans Scene_Title
      write_save_data dans Scene_Save < Scene_File
      read_save_data dans Scene_Load < Scene_File
      
      
#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

   [*] Remerciements
   
      * Lowell : Il a soumis l'idée de création du système de variables autonomes,
   ce qui m'a permis de trouver le problème des scripts originaux.
   
       * Decibel : Il voulait pouvoir utiliser les variables autonomes dans les messages,
   mais je n'ai pas pu le faire.
   
      * Kain Nobel: Il m'a aidé à faire la version pour RMXP de ce script.


#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

   [*] Changelog
   
       * Version 1.0
      
      * 16/09/09 : Initial Release
      
#-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

=end

#==============================================================================
# ** Game_SelfVariables
#------------------------------------------------------------------------------
# This class handles self variables. It's a wrapper for the built-in class
# "Hash." The instance of this class is referenced by $game_self_variables.
#==============================================================================

class Game_SelfVariables
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
@data = {}
end
#--------------------------------------------------------------------------
# * Get Self Switch
# key : key
#--------------------------------------------------------------------------
def [](key)
if @data[key] == nil
return 0
else
return @data[key]
end
end
#--------------------------------------------------------------------------
# * Set Self Switch
# key : key
# value : key's value
#--------------------------------------------------------------------------
def []=(key, value)
@data[key] = value
end
end

#==============================================================================
# ** Interpreter
#------------------------------------------------------------------------------
# This interpreter runs event commands. This class is used within the
# Game_System class and the Game_Event class.
#==============================================================================

class Interpreter
def self_variable(id, value = nil, oper = nil)
if @event_id > 0
key = [@map_id, @event_id, id]
if value != nil
case oper
when nil, 0, 'equal', 'set', '=' # Setting
$game_self_variables[key] = value
when 1, 'add', '+' # Adding
$game_self_variables[key] += value
when 2, 'sub', 'subtract', '-' # Subtracting
$game_self_variables[key] -= value
when 3, 'mul', 'multiply', 'x', '*' # Multiplying
$game_self_variables[key] *= value
when 4, 'div', 'divide', '/' # Dividing
$game_self_variables[key] /= value if value != 0
when 5, 'mod', 'modular', '%' # Modulating
$game_self_variables[key] %= value if value != 0
else
return $game_self_variables[key]
end
end
if value != nil
$game_map.need_refresh = true
return true
end
end
end
end

#==============================================================================
# ** Scene_Title
#------------------------------------------------------------------------------
# This class performs the title screen processing.
#==============================================================================

class Scene_Title
alias pk8_self_variables_command_new_game :command_new_game
#--------------------------------------------------------------------------
# * Create Game Objects
#--------------------------------------------------------------------------
def command_new_game
pk8_self_variables_command_new_game
$game_self_variables = Game_SelfVariables.new
end
end

#==============================================================================
# ** Scene_Save
#------------------------------------------------------------------------------
# This class performs save screen processing.
#==============================================================================

class Scene_Save < Scene_File
alias pk8_self_variables_write_save_data :write_save_data
#--------------------------------------------------------------------------
# * Write Save Data
# file : write file object (opened)
#--------------------------------------------------------------------------
def write_save_data(file)
pk8_self_variables_write_save_data(file)
Marshal.dump($game_self_variables, file)
end
end

#==============================================================================
# ** Scene_Load
#------------------------------------------------------------------------------
# This class performs load screen processing.
#==============================================================================

class Scene_Load < Scene_File
alias pk8_self_variables_read_save_data :read_save_data
#--------------------------------------------------------------------------
# * Read Save Data
# file : file object for reading (opened)
#--------------------------------------------------------------------------
def read_save_data(file)
pk8_self_variables_read_save_data(file)
$game_self_variables = Marshal.load(file)
end
end

Voilà.
Yasan
Yasan
Membre

Nombre de messages : 149
Age : 34
Distinction : aucune
Date d'inscription : 18/01/2011

Compilation de scripts utilitaires (Variables) Empty Re: Compilation de scripts utilitaires (Variables)

le Ven 21 Jan 2011 - 17:29
Merci Neko pour la traduction ^^

Dricc, ça m'étonne pas, le script a l'air d'avpir été conçu dans un but utilitaire et pas comme une fin en soit. Donc il est largement perfectible, mais pour un non-scripteur, ça peut être utile ^^
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum