Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Sorties: "Dread Mac Farlane", (...) / Tutos: Checklist de la composition (...) / Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

385 connectés actuellement

29451229 visiteurs
depuis l'ouverture

17109 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Zarok

Guelnika & E-magination

Alex d'Or

Offgame

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Entraide > [Scripts] Petites questions connes sur les SCRIPTS!!

Aller à la page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

Reprise du message précédent:

zou - posté le 28/12/2010 à 21:41:33 (2197 messages postés)

❤ 0

Bonsoir, ceci, n'est pas un problème mais plutôt une question :
dans ce script

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 
self.x = @picture.x
    self.y = @picture.y
    self.z = @picture.number
    # Set zoom rate, opacity level, and blend method
    self.zoom_x = @picture.zoom_x / 100.0
    self.zoom_y = @picture.zoom_y / 100.0
    self.opacity = @picture.opacity
    self.blend_type = @picture.blend_type
    # Set rotation angle and color tone
    self.angle = @picture.angle
    self.tone = @picture.tone
 



A quoi sert le "self", pourquoi ne pas mettre @ ?


Suite du sujet:

Kaila - posté le 29/12/2010 à 00:04:59 (3617 messages postés)

❤ 0

Hmmm ?

Là ? À rien: self = @.

Everything is better with zombies.


Autres - posté le 29/12/2010 à 09:07:16 (470 messages postés)

❤ 0

@ Patton : merci pour ton aide, mais ça ne marche pas. Quand j'appelle le script $game_variables[200] = $game_party.weapon_number(1), il me dit : "NoMethodError occured while running script.
undefined method "weapon_number" for #<Game_Party:0x3f5fd50>"

On se couche moins con chaque soir... enfin, en principe. Le Pac-Nor !


zou - posté le 29/12/2010 à 10:56:21 (2197 messages postés)

❤ 0

Citation:

Là ? À rien: self = @.


A quoi sert self alors dans le cas général ?


Kaila - posté le 29/12/2010 à 12:10:03 (3617 messages postés)

❤ 0

Hmmm ?

En fait, on se sert de self pour appeler des fonctions, pas des attributs.
Dans le cas des accesseurs Ruby, étant donné qu'ils sont équivalents à ces deux fonctions

Portion de code : Tout sélectionner

1
2
3
4
5
6
def val=(x)
  @val=x
end
def val
  return @val
end

on ne voit pas de différence entre @val et self.val, mais il y en a une: on passe bien par une fonction, et pas directement par l'attribut. C'est utile quand on fait des accesseurs qui font un traitement particulier.

Testes ce bout de code:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Test
  def initialize
    @val = 0
  end
  
  def val=(x)
    @val = x*2
  end
  
  def afficher
    @val = 3
    print @val
  end
  
  def afficherSelf
    self.val = 3
    print @val
  end
end

Tu verras que 'afficher' affiche 3 (l'attribut brut), mais 'afficherSelf' affiche 6 (car l'accesseur multiplie la valeur par 2).

Donc dans l'exemple que tu as donné, il y a sûrement des accesseurs (soit implicites (attr_writer, attr_reader, attr_accessor) soit explicites (comme dans ma classe Test)), sinon le self.angle, par exemple, renverrait une belle erreur "NoMethodError: undefined method 'angle' for #<....>".


Self sert aussi à faire des méthodes statiques (des méthodes qu'on appelle directement, sans passer par un objet). Par exemple, avec cette classe:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
class Test2
  @@nb_objets = 0
 
  def initialize
    @@nb_objets += 1
  end
 
  def self.nombre_objets
    return @@nb_objets
  end
end


Si exécute ce code:

Portion de code : Tout sélectionner

1
2
3
4
5
6
test1 = Test2.new
test2 = Test2.new
test3 = Test2.new
test4 = Test2.new
test5 = Test2.new
print Test2.nombre_objets

ça m'affiche 5.
Par contre, qui dit "méthode statique" dit aussi "traitement statique", donc impossible d'utiliser des attributs dépendant du contexte d'un objet (pas de @val là dedans, donc).
C'est très utilisé dans les modules parce que, justement, on ne peut pas les instancier.

Hmmm... voilà.

Everything is better with zombies.


zou - posté le 29/12/2010 à 12:31:03 (2197 messages postés)

❤ 0

Merci beaucoup Kaila :)
Pour faire simple @ renvoie la variable et self la méthode


Kaila - posté le 29/12/2010 à 13:08:50 (3617 messages postés)

❤ 0

Hmmm ?

Exactement ^^

Everything is better with zombies.


patton - posté le 29/12/2010 à 22:05:04 (35 messages postés)

❤ 0

Autres a dit:


Bien je ne sais pas quoi te dire... chez moi ca marche plutôt bien. A savoir que j'ai testé avec la commande d'event "inserer script"...

Zeus81 a dit:


$game_party.actors[0].hit

Tu sais ce genre de chose ça se devine pas, suffit d'aller voir les fonctions de Game_Actor / Game_Battller pour trouver ce qu'on cherche.



En faite je pensais..a tord effectivement que le $game_party.actors[0].hit ne variait pas qu'il etait toujours a 100. Je me demande si j'ai pas tendance a chercher midi a 14 heure:lol

Bref merci beaucoup.


Support : RMXP

Attention...Question :

Peut on modifier les caractéristiques d'un hero qui ne serrais pas dans la party(equipe). Genre les hpmax, agi ...ect. Je ne sais pas comment faire comme c'est dans la base de donnée.

merci d'avance.


Zeus81 - posté le 30/12/2010 à 17:50:34 (11071 messages postés)

❤ 0

$game_actors[id du héros dans la bdd]


patton - posté le 30/12/2010 à 18:15:19 (35 messages postés)

❤ 0

Merci.

Je sais pas pourquoi j'en voulais t'en a $data_actors[id].agi ...
Celui la sert a quoi alors?


Zeus81 - posté le 30/12/2010 à 18:34:26 (11071 messages postés)

❤ 0

$data_actors contient les données des héros de la bdd au format RPG::Actor et c'est utilisé pour initialiser les Game_Actor, le modifier ne sert à rien vu que c'est pas sauvegardé.

$game_actors contient les Game_Actor.


patton - posté le 30/12/2010 à 18:44:51 (35 messages postés)

❤ 0

Merci de ton éclairage et de tes réponses.


Autres - posté le 31/12/2010 à 09:02:41 (470 messages postés)

❤ 0

Support : RMVX

Question 1 : RESOLUE
Est-il possible d'obtenir le numéro d'un perso dans l'équipe en sachant son ID (par exemple, j'ai les persos d'ID 1, 3 et 6 dans mon équipe, comment faire pour connaître la position du perso 3 dans l'équipe (0,1 ou 2) ?) ?
REPONSE :

Portion de code : Tout sélectionner

1
position = $game_party.members.index($game_actors[3])



Merci d'avance !

P.S. : ma première question n'est toujours pas résolue (maintenant, si).

On se couche moins con chaque soir... enfin, en principe. Le Pac-Nor !


Kaila - posté le 31/12/2010 à 11:09:11 (3617 messages postés)

❤ 0

Hmmm ?

*remonte le topic*

Citation:

Comment mémoriser dans une variable (de script) le nombre d'armes/armures/casques... équipées possédées par le héros (en clair : si le héros est équipé avec une épée et qu'il en a une autre dans son sac comment mémoriser cette valeur (2) dans une variable) ?

Pour l'arme:

Portion de code : Tout sélectionner

1
2
3
4
5
id = 2   # id de l'arme dans la BDD
nombre = $game_party.item_number($data_weapons[id])
for actor in $game_party.members
  nombre += 1 if actor.weapon_id == id
end

Pour les armures, c'est pareil, sauf que tu vas chercher dans $data_armors à la place de $data_weapons et tu devras remplacer actor.weapon_id par actor.armor1_id, actor.armor2_id, actor.armor3_id ou actor.armor4_id respectivement pour le bouclier, le casque, l'armure ou l'accessoire.


Citation:

Est-il possible d'obtenir le numéro d'un perso dans l'équipe en sachant son ID (par exemple, j'ai les persos d'ID 1, 3 et 6 dans mon équipe, comment faire pour connaître la position du perso 3 dans l'équipe (0,1 ou 2) ?) ?


Portion de code : Tout sélectionner

1
position = $game_party.members.index($game_actors[3])



Everything is better with zombies.


Autres - posté le 31/12/2010 à 15:31:55 (470 messages postés)

❤ 0

Merci beaucoup Kaila ! Je teste et je te dit si ça marche ^^'.
EDIT : ça marche parfaitement bien ! Merci beaucoup !
Par contre j'ai une nouvelle question maintenant :
Support : RMVX

Question :
Comment modifier la quantité d'objet/arme/armure... possédé via un script (exemple : j'ai 6 épées et je veux en avoir 7 via un script.) ? Je suppose qu'il faut utiliser

Portion de code : Tout sélectionner

1
$game_party.gain_item(item, n, include_equip = false)

mais je n'arrive pas à comprendre ce qu'il faut mettre à la place de "item". Encore merci à celui/celle/ceux qui me répondra/répondront !
EDIT : Résolu : il faut remplacer item par

Portion de code : Tout sélectionner

1
$data_weapons[id]

et "weapons" par "armors" ou "items".

On se couche moins con chaque soir... enfin, en principe. Le Pac-Nor !


Mack - posté le 01/01/2011 à 00:49:04 (2290 messages postés) - staff

❤ 0

Support : RMXP

Question 1 :
Savoir quelle définition se joue.

Voila, je cherche à savoir comment faire pour savoir quelle définition est en train de se jouer dans une scene ou dans une autre classe.

En faite, je voudrait savoir si, dans la classe Game_Character, les définitions move_up, move_down, move_right, move_left, sont en train de se passer.

J'ai pas l'impression que cela soit très clair, m'enfin bon ^^".

( Je prend note de tout les commentaires, même si je n'y répond pas )


zou - posté le 01/01/2011 à 00:50:30 (2197 messages postés)

❤ 0

moving?


Mack - posté le 01/01/2011 à 00:53:51 (2290 messages postés) - staff

❤ 0

Déjà essayer, et c'est pas ce qu'il me faut.
La méthode moving? renvoie true seulement si les coordonnées X ou Y change.
Hors, moi elle ne change pas, c'est seulement quand j'essaie de faire un déplacement.


Et puis, des fois j'en aurais besoin pour d'autre scripts.

( Je prend note de tout les commentaires, même si je n'y répond pas )


kilam1110 - posté le 01/01/2011 à 00:56:45 (9159 messages postés)

❤ 0

Et en detectant l'appui des touches fléchées ?

New RPG Maker - Forum traitant du logiciel RPG Maker tout en français ! | SURVIVE V2.5 - Dégommez du zombie !


Mack - posté le 01/01/2011 à 00:59:09 (2290 messages postés) - staff

❤ 0

Sauf qu'il faudrait que ça le fasse aussi pour les évents =').

Sinon, je le ferais comme ça ... M'enfin, ça me parait pas être une très bonne solution.

( Je prend note de tout les commentaires, même si je n'y répond pas )


zou - posté le 01/01/2011 à 01:04:59 (2197 messages postés)

❤ 0

Tu creer une variable @move dans game_characters et tu la rends = à true dans move_up left right down
tu mes un attr_reader :move


Tasslehoff - posté le 01/01/2011 à 01:07:50 (5234 messages postés)

❤ 0

Disciple de Pythagolf

Sinon dans chaque def tu change la valeur d'une variable quelconque puis tu test la valeur de cette variable.

Edit: Grilled

~~


Timo - posté le 05/01/2011 à 13:55:20 (822 messages postés)

❤ 0

Je me permet un up.
Support : RMXP

Question 1 :
Dans quel script (et à quel ligne si possible) je peux retirer l'option "attaquer" pour les combat par défaut ???


zou - posté le 10/01/2011 à 18:39:51 (2197 messages postés)

❤ 0

Salut tout le monde.
dans Game_Map il y a ça

Citation:

bit = (1 << (d / 2 - 1)) & 0x0f


A quoi ça sert svp ? (ligne 212)


Kaila - posté le 10/01/2011 à 19:19:27 (3617 messages postés)

❤ 0

Hmmm ?

d peut valoir 0, 2, 4, 6, 8 ou 10.
- (d/2-1), je pense que tu sais.
- 1 << x, c'est un décalage de x bit vers la gauche.*
- x & y, c'est un ET binaire entre x et y.**

* Le décalage de bit (il faut déjà connaître la représentation binaire d'un entier):
Si ton entier vaut, par exemple, 5. En binaire, ça fait 00000101 (sur 1 octet).
Si tu décales de 2 bits vers la gauche, t'obtiens 00010100. Donc ton entier vaut maintenant 20.

** Le ET binaire avec 0x0f:
0x0f, c'est de l'hexadécimal et ça vaut 00001111 en binaire (sur 1 octet).
Un ET binaire avec 0x0f permet de mettre la partie haute de l'octet (les 4 premiers bits) à 0:
00010100 & 00001111 = 00000100. Ton entier vaut maintenant 4.

Si tu ne sais pas faire d'opérations binaires ni de conversion entier <=> binaire <=> hexadécimal, tu peux te renseigner sur Google, les cours y foisonnent.

Après, pour savoir exactement à quoi ça sert dans le code de Game_Map, faudra que tu fasses des tests à la sortie de la fonction (j'ai jeté un rapide coup d'œil, ça doit certainement définir les passabilités en fonction de la direction...).

Everything is better with zombies.


berka - posté le 10/01/2011 à 19:30:07 (493 messages postés)

❤ 0

planchant sur un script

L'opérateur << de Fixnum déplace l'objet d'un rang vers la gauche.
Il faut raisonner en binaire (noté 0bxxx en ruby)

1 = 0b1 = 1 << 0
2 = 0b10 = 1 << 1
4 = 0b100 = 1 << 2
8 = 0b1000 = 1 << 3
...
512 = 0b1000000000 = 1 << 9

et inversement avec l'opérateur >> (décale vers la droite)
& est un opérateur "bitwise" AND (et).
Si on prend 6 & 3
6 & 3 = 0b110 & 0b011 (équiv. 0b11, car les 0 à gauche s'annulent) = 2

Le fonctionnement: on énumère chaque bit de gauche à droite:
1 & 0; 1 & 1; 0 & 1
Dès que les deux bits sont égaux à 1 on marque 1, si un des bits est 0 on marque 0:
donc :
1 & 0 = 0;
1 & 1 = 1;
0 & 1 = 0;
ce qui fait:
6 & 3 = 0b110 & 0b011 = 0b010 = 2
Avec sa réciproque | (OR)

Dans Game_Map, ca sert à savoir la praticabilité en fonction de la direction (cf. les fleches de passabilité sur RMXP)

EDIT: doublé :hihi

Twitter: Pensées politiques et juridiques. Réflexions informatiques

Aller à la page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

Index du forum > Entraide > [Scripts] Petites questions connes sur les SCRIPTS!!

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers