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:
zebrot -
posté le 07/08/2010 à 15:26:06 (1601 messages postés)
| Troller lvl 1 | Bonjour, comme le précise le titre du topic, ma question est vraiment conne:
Support : RMXP
Question 1 :
Il existe un moyen d'appeler un script depuis la commande d'event.
Existe-t'il un moyen d'appeler un common event par un script?
Je pense que oui, mais il me manque la toute p'tite ligne de code qui me permettra de le faire.
En fait, c'est pour faire un CMS, c'est assez dur en event, donc je fais le menu en script et certaines Scene seraient beaucoup plus faciles en event (les quêtes...)
|
01010011 01110101 01100011 01100101 00100000 01101101 01101111 01101001 00100000 00111100 00110011 | Suite du sujet:
Lufia -
posté le 07/08/2010 à 15:50:25 (5792 messages postés)
| Un Oniromancien. PVs 1, Attaque 0, Défense 0. | @TIMO et Joke :
$game_actors[id]
Ensuite, on peut faire des concaténations de chaîne avec des +, mais il faut faire attention au type de ce que t'écris :
1
2
3
| print "chtonk" + $game_variables[0] # Type Error
print "chtonk #{$game_variables[0]}"
print "chtonk" + $game_variables[0].to_s |
to_s = to string, convertit (en tout cas essaye) l'objet précédent en chaîne de caractère.
Enfin, $game_actors[id], ça sera un objet Game_Actor. Ça va t'afficher un truc du genre #<Game_Actor:deschiffres>. Faut aller lire la classe Game_Actor et voir quel attribut tu veux afficher, exactement.
@zebrot :
$game_temp.common_event_id = id
Attention, les events communs ne se jouent que sur la carte. (Et dans les combats, mais bref.) Cette commande permet simplement de dire qu'il faudra jouer un évènement commun lorsque tu reviendras à Scene_Map, pas de le lancer tout de suite.
|
Une signature ? Pour quoi faire ? |
zebrot -
posté le 07/08/2010 à 16:05:31 (1601 messages postés)
| Troller lvl 1 | Citation: Attention, les events communs ne se jouent que sur la carte. (Et dans les combats, mais bref.) Cette commande permet simplement de dire qu'il faudra jouer un évènement commun lorsque tu reviendras à Scene_Map, pas de le lancer tout de suite. |
=/
Oui bon donc c'est inutile...
Y'a aucun moyen de jouer un event commun ou pas dans une scene autre scene_map?
EDIT: c'est bon, merci beaucoup =)
|
01010011 01110101 01100011 01100101 00100000 01101101 01101111 01101001 00100000 00111100 00110011 |
Lufia -
posté le 07/08/2010 à 16:13:19 (5792 messages postés)
| Un Oniromancien. PVs 1, Attaque 0, Défense 0. | Peut-être en créant un nouvel objet Game_Interpreter dans ta scène ? Ça risque juste d'être un peu la galère à gérer.
|
Une signature ? Pour quoi faire ? |
TIMO -
posté le 07/08/2010 à 17:09:54 (822 messages postés)
| |
1
2
| self.contents.draw_text(4, 0, 190, 32, "Empire " $game_actors[2].to_s", ")
|
Il me dit qu'il y a une erreur de syntaxe à cet ligne, je vois pas où.
C'est bien pour afficher le nom du 2° héros de la base de données.
|
Lufia -
posté le 07/08/2010 à 18:08:45 (5792 messages postés)
| Un Oniromancien. PVs 1, Attaque 0, Défense 0. | TIMO a dit:
1
2
| self.contents.draw_text(4, 0, 190, 32, "Empire " $game_actors[2].to_s", ")
|
Il me dit qu'il y a une erreur de syntaxe à cet ligne, je vois pas où. |
Tu m'expliques la syntaxe de
"Empire " $game_actors[2].to_s", "
je la comprends pas. T'as réfléchi 2 minutes à la façon d'écrire ta chaîne de caractères ? Surtout que j'en ai donné des exemples corrects 2 messages plus haut. Que t'orthographies mal un nom de variable, je veux bien. Mais les guillemets à la nawak, c'est déjà moins excusable.
TIMO a dit:
C'est bien pour afficher le nom du 2° héros de la base de données. |
Non. $game_actors[2].name, oui.
|
Une signature ? Pour quoi faire ? |
TIMO -
posté le 07/08/2010 à 19:01:43 (822 messages postés)
| | Ce qui t'étonne c'est le ", " à la fin. Je l'ai mit pour mettre une virgule après le nom du deuxième héros. En plus je l'ai enlevé pour voir si c'est ça qui gêné mais ça n'a rien changé.
1
2
| self.contents.draw_text(4, 0, 190, 32, "Empire " $game_actors[2].name.to_s)
|
Ça me dit la même chose.
|
Lufia -
posté le 07/08/2010 à 19:07:55 (5792 messages postés)
| Un Oniromancien. PVs 1, Attaque 0, Défense 0. | Quand je dis que t'as écris ta chaîne à la nawak et d'aller regarder les exemples donnés plus haut, c'était pas juste une façon de parler, hein.
"truchmuche #{unevariable} bidulechouette"
ou
"trucmuche" + unevariable + "bidulechouette"
mais pas des trucs hybrides bizarres.
Et oui, je refuse obstinément de t'écrire ta chaîne. Le truc à propos d'apprendre au gens à pêcher au lieu de leur donner du poisson, tout ça...
|
Une signature ? Pour quoi faire ? |
TIMO -
posté le 07/08/2010 à 19:20:27 (822 messages postés)
| | Chouette ! Ça marche !
1
2
| self.contents.draw_text(4, 0, 190, 32, "Empire #{$game_actors[2].name.to_s}, ")
|
Merci.
Edit :
Comment affiche-t-on la vie d'un héros ?
|
| | En affichant une image représentant la vie du héro
|
trophe -
posté le 18/08/2010 à 10:29:49 (136 messages postés)
| les pouvoirs de l'infini... | j'ai une question et J'AIMERAIS AVOIR UNE REPONCE!
quand j'active rpg maker VX, il me dit :
impossible de lire les données de l'énnemi.
qu'es ce que sa veut dire? des heures de créations en l'air?
si je n'ai pas de réponce, je retournerais par obligation à 001 action/rpg maker
|
forum LPDI : http://lpdileforumofficiel.forumgratuit/ - chaîne youtube : http://www.youtube.com/user/trophe80 |
sriden -
posté le 18/08/2010 à 20:23:53 (16645 messages postés)
- | | strophe a dit: J'AIMERAIS AVOIR UNE REPONCE! |
Trophe, ton 2e pseudo c'est pas Catas' ?
|
Escapade | La 7e porte | Vader Ou La Fin des Haricots | Ketsuro | Polaris 03 | Blog ciné/jv | Mes albums de zyk : Diaphanous Horizons & Retranchements ౡ |
Ephy -
posté le 18/08/2010 à 20:29:34 (30099 messages postés)
- | [BIG SHOT] | trophe> Ptêtre le fichier "ennemies" du dossier data qu'est corrompu.
Remplace le et ça marchera je pense (à savoir que, si tu avais modifié les données des monstres, ce sera perdu si tu n'a pas fait de sauvegarde (et vu que tu pose la question je pense que tu n'en a pas fait).
Du coup cet incident t'apprendra surement qu'il faut faire pleins de copies de son projet.
Citation: J'AIMERAIS AVOIR UNE REPONCE! |
Je sais pas si tu en aura. Personnellement, je dois avouer que je sais pas ce que c'est une "réponce"...
|
Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14 |
trophe -
posté le 19/08/2010 à 22:02:08 (136 messages postés)
| les pouvoirs de l'infini... | c'est bon, j'ai changé de jeu et maintenant, j'ai une séquence d'introduction mais à la fin, mon héros ne fait aucun geste... (même échap ne fonctionne pas par contre il y a un combat à un moment et sa marche assez bien..... (sa me rend fou!)
EDIT: catas' n'est pas mon deuxième pseudo, mais par contre je dessine des BD dont le perso principal est un lycéen appelé "Catasse trophe"
|
forum LPDI : http://lpdileforumofficiel.forumgratuit/ - chaîne youtube : http://www.youtube.com/user/trophe80 |
Ephy -
posté le 19/08/2010 à 22:04:57 (30099 messages postés)
- | [BIG SHOT] | Faut surement mettre un interrupteur (local ou non) pour terminer l'événement automatique.
Mais après pour en savoir plus faut aller consulter les tutos sur les interrupteurs ou encore mieux, le tuto de Monos pour apprendre à faire une introduction.
|
Power Level: 1 148 355,38|Mystic Slayer (Value!+)|Le monde d'Adélaïde|Reikon no Yume|★ H-Project|Toho Danmaku Arena|Loli versus Ponies|Mes vidéos|Ma galerie|Débuter sur VX:10, 11|Tuto: Importation de ressources|Mapper avec les RTP VX|Touhou|Fan de Omenides|Fan de Estheone|Eph'ille: 14 |
Mack -
posté le 20/08/2010 à 12:33:06 (2309 messages postés)
- | | Support : RMXP
Questions : Condition "si l'évent comporte "XXX" dans son nom", et Condition de contact entre évent.
Donc voila, comme l'indique la question, je suis à la recherche des deux conditions ci dessus, elles seront toutes deux placé dans un évent.
J'ai essayer :
1
2
3
4
5
| for event in $game_map.events.values
if event.name.include?("[DJ]")
print "123"
end
end |
Pour le nom, mais la fonction "include?" n'a pas l'air de marcher ... ( Je sais pas si ça viens de la fonction, ou de " $game_map.events.values " )
( ??? NoMethodError ????
undefined method 'includeN' for nil:NilClass )
Pour le contact, je pense que ça doit être un truc du genre :
1
2
3
4
5
6
7
8
9
10
11
| gme = $game_map.events
x = gme[@event_id].x + (gme[@event_id].direction == 6 ? 1 : gme[@event_id].direction == 4 ? -1 : 0)
y = gme[@event_id].y + (gme[@event_id].direction == 2 ? 1 : gme[@event_id].direction == 8 ? -1 : 0)
for e in $game_map.events.values
if e.name.include?("[DJ]")
if e.x == x and e.y == y
print "123"
end
end
end
|
Mais le code rentre pas dans la commande insérer un script ...
J'arrive plus à me souvenir le nom du logiciel pour augmenter la taille de la boite, j'vais essayer de le retrouver.
Bref', merci d'avance.
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
Kaila -
posté le 20/08/2010 à 14:09:57 (3617 messages postés)
| Hmmm ? | As-tu rendu le nom de l'event accessible par le biais d'un script dans ce genre ?:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| #====================================
# Modif de Game_Event pour pouvoir
# récupérer le nom d'un événement en
# écrivant "$game_map.events[x].name"
#====================================
class Game_Event
attr_reader :name
alias k_name_initialize initialize
def initialize(map_id, event)
@name = event.name
k_name_initialize(map_id, event)
end
end
#==================================== |
Pour ta seconde demande, même si je n'ai pas testé, je pense que c'est ça.
Par contre, étant donné que ton code ne rentre pas dans la fenêtre d'insertion de script et que, je pense, tu seras amené à le réécrire plusieurs fois (j'anticipe, mais je me trompe peut être ?), tu peux en faire une commande supplémentaire de l'interpreter que tu appelleras simplement par son nom.
|
Everything is better with zombies. |
Lufia -
posté le 20/08/2010 à 14:11:46 (5792 messages postés)
| Un Oniromancien. PVs 1, Attaque 0, Défense 0. | C'est quoi ce "values" ?
Sinon, t'auras un autre problème : le nom d'un évènement n'est pas accessible par défaut. Si tu vas faire un tour dans Game_Event, tu verras que les seules variables accessibles sont @trigger, @list et @starting.
Tu peux faire de deux façons.
- Rendre accessible la variable @event pour écrire $game_map.events.event.name
- Créer une nouvelle variable d'instance @name dans initialize en lui donnant pour valeur event.name
Pour le contact, je comprends pas ce que tu fais. Si tu veux savoir si deux évènements se touchent, tu compare juste leurs coordonnées.
|
Une signature ? Pour quoi faire ? |
Mack -
posté le 20/08/2010 à 14:29:40 (2309 messages postés)
- | | La solution de Kaila marche pour le nom.
En faite, j'ai trouvé ce code pour le héros :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[...]
x = $game_player.x + ($game_player.direction == 6 ? 1 : $game_player.direction == 4 ? -1 : 0)
y = $game_player.y + ($game_player.direction == 2 ? 1 : $game_player.direction == 8 ? -1 : 0)
event = nil
for e in $game_map.events.values
if e.x == x and e.y == y
event = e
else
$game_system.map_interpreter.agir
end
end
[...]
|
Donc j'ai pensé qu'on pouvait s'en servir pour le faire avec les évents.
Mais, j'arrive pas vraiment à le faire fonctionner ^^".
Le faire dans une Interpreter serait surement pas mal, mais comment m'y prendre ?
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
Lufia -
posté le 20/08/2010 à 14:52:35 (5792 messages postés)
| Un Oniromancien. PVs 1, Attaque 0, Défense 0. | Bin, faut voir ce que t'appelles "contact", quoi. Là, ça vérifie si un évènement est en face du joueur, pas dessus, pas derrière, pas sur les côtés, juste en face.
Pis rajouter des trucs à l'interpréteur, c'est très simple :
1
2
3
4
5
| class Intepreter
def ma_nouvelle_commande
print "pouet"
end
end |
Et hop, on peut utiliser ma_nouvelle_commande dans une insertion de script.
|
Une signature ? Pour quoi faire ? |
Mack -
posté le 20/08/2010 à 15:11:37 (2309 messages postés)
- | | Oui, mais la c'est dans "Inserer un Script".
J'voulais dire dans la commande Condition.
Pour le contact, c'est si un évènement est à côté d'un autre et essaie de se déplacer sur l'autre évènement ( J'sais pas si c'est possible, si c'est pas possible, peut être faire que la boule doit regarder l'évent devant elle pour que la condition soit vrai ? ).
Exemple :
Mon évent 1 se déplace à droite, ignorer commande si impossible, et répéter les commandes.
Mon évent 2 est un pnj normal, donc in-traversable.
Voila un petit schéma.
Donc la boule va aller vers la droite jusqu'à rencontrer l'évent.
Lorsque celle ci va "toucher" l'évènement la boule va disparaitre.
La conditions sera dans l'évent 2.
Mais lorsque la boule passe à côté ( Le même schéma qu'au dessus, mais avec la boule une case plus haut ), rien ne se passe.
Bien entendu c'est pour les 4 directions.
Voila, j'espère que c'est plus clair.
EDIT : J'ai réussis à faire la condition, manqueras plus que la collision.
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
Joke -
posté le 22/08/2010 à 19:09:10 (5090 messages postés)
| Bilouteux fou | Mack, si la flamme part vers la droite, et entre en collision, tu auras : Xflamme+1=Xperso et Yflamme = flamme, c'est tout ^^
Support : RMVX
Question : [résolu]
Je voudrais savoir comment faire en script pour modifier le sprite d'un événement, du genre : modifier les couleurs de l'événement 2... ^^
|
biloumaster.fr, mon joli site ouèb tout bô tout frai ! |
Mack -
posté le 22/08/2010 à 19:26:07 (2309 messages postés)
- | | Effectivement, j'ai fait ça :
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
| def contactevent(eventname)
x = $game_map.events[@event_id].x
y = $game_map.events[@event_id].y
for event in $game_map.events.values
if event.name.include?(eventname)
dir = event.direction
case dir
when 2
posx = x
posy = y-1
when 4
posx = x+1
posy = y
when 6
posx = x-1
posy = y
when 8
posx = x
posy = y+1
end
if posx == event.x and
posy == event.y
return true
end
end
end
end
|
Ça marche, mais si quelqu'un à une meilleur solution ^^".
Joke, j'vais voir si je trouve pour VX ^^.
EDIT :
T'as de la chance, ça marche plus ou moins comme sur XP :
1
2
3
4
5
| $game_map.events[@event_id].character_name = "Animal"# Le nom du Fichier
$game_map.events[@event_id].character_index = 2 #L'index du character (Ceux de VX sont
découper en tablette de 6 Character, cette commande permet de savoir laquelle tu veux
prendre, si tu le met pas, ça te garderas la même que celle d'avant
( Elle se compte à partir de 0 et augmente de 1 en allant vers la droite. ) |
Dans le script Game_Character rajoute :
1
2
| attr_accessor :character_name # character graphic filename
attr_accessor :character_index # character graphic index |
Au dessus la def initialize, avec les autres attr.
Ah et @event_id définit l'évent actuel, remplace par l'id de l'évent que tu veux. ( J'sais pas si tu t'y connais ^^" )
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
Joke -
posté le 22/08/2010 à 19:40:33 (5090 messages postés)
| Bilouteux fou | Hmmm oui en fait je ne cherchais pas à modifier le charset, mais la couleur du sprite quel que soit le charset... serais-ce :
"$game_map.events[id].bitmap.tone = set(R,V,B,G)" ?
L'info est sympa ^^
|
biloumaster.fr, mon joli site ouèb tout bô tout frai ! |
berka -
posté le 22/08/2010 à 20:09:09 (493 messages postés)
| planchant sur un script | Bonsoir,
Le probleme c'est que Bitmap ne dispose pas d'attribut Tone.
Seuls Plane, Sprite et Viewport en ont. il faudrait donc faire :
Sprite.tone.set(r,g,b,a)
Ce qui se passe aussi en l'occurrence, c'est que ton $game_map.events[id]
n'est pas du tout un sprite, mais un objet Game_Event, qui hérite de Game_Character. Donc c'est de la "donnée", pas du graphisme. Pas étonnant, car les scripts sont identifiables par leur nom:
Données: Game_xxx / Scene_xxx
Graphiques: Sprite_xxx / Spriteset / Window_xxx
Donc pour oser modifier ton charset, il faut que tu te tournes vers Sprite_Character
Ou bien que tu passes indirectement par la propriété character_hue de Game_Character, donc par $game_map.events[id].character_hue.
Mais c'est très fortement limité...
Mais si tu veux modifier tous les sprites d'évents, le plus simple est de te tourner vers Spriteset_Map, mettre le tableau @character_sprites en attribut rw. Il suffira d'une simple boucle pour égir sur chacun des sprites d'event qu'il contient.
Bonne soirée,
Berka
|
Twitter: Pensées politiques et juridiques. Réflexions informatiques |
Zeus81 -
posté le 22/08/2010 à 21:38:17 (11071 messages postés)
| | C'est plus compliqué que ça Joke.
Il faut créer une variable dans Game_Character :
1
2
3
4
5
6
7
8
| class Game_Character
attr_accessor :tone
alias :joke_initialize :initialize
def initialize
joke_initialize
@tone = Tone.new(0, 0, 0, 0)
end
end |
Ensuite il faut mettre à jour le ton dans la classe Sprite_Character
1
2
3
4
5
6
7
| class Sprite_Character
alias :joke_update :update
def update
joke_update
self.tone = @character.tone
end
end |
Pour l'utiliser :
1
2
| $game_map.events[id].tone.set(r, v, b, g)
$game_player.tone.set(r, v, b, g) |
Et tu peux en rajouter d'autres pareillement.
Et Mack tu déformes la page et ça fait chier !
| 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 73Index du forum > Entraide > [Scripts] Petites questions connes sur les SCRIPTS!!
|