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:
Cortez -
posté le 13/08/2013 à 11:10:04 (524 messages postés)
| | Système : RmXP
Question : Je voudrais changer l'apparence d'un event en fonction d'une variable.
Je ne veux pas utiliser les commandes d'évent classique car il
faudrait que je fasse 100 condition !
Pour bien comprendre, il faut un petit exemple.
Mon dossier character contient 100 chara ayant leur nom de 1 à
100. (1.png, 2.png, ...)
Maintenant je rend la variable Y égale à 5 et j'obtient un
changement d'apparence avec le chara "5.png".
La ligne de commande existe mais seulement dans les script :
1
| @character_name = @page.graphic.character_name |
Dans mon idée, je cherche à obtenir une commande en "insérez
un script" :
$game_event.character_name = $game_variables(Y)
| Suite du sujet:
Mack -
posté le 13/08/2013 à 14:01:20 (2310 messages postés)
- - | | Finalement, c'est bon j'ai réussis.
J'ai fait comme ça :
1
2
3
4
5
6
7
8
9
10
| int r = 16;
int d = (int) Math.sqrt(Math.pow(player().x - x, 2)
+ Math.pow(player().y - y, 2));
double t = angle(
new Point(x + d, y),
new Point(x, y),
new Point(player().x, player().y));
int dx = (int) (x + r * Math.cos(t));
int dy = (int) (y + r * Math.sin(t)); |
player() renvoyant vers mon Heros, et x/y les coordonnées de l'ennemi.
La fonction angle me calcule l'angle entre trois points ( Celui des coordonnées x/y de l'ennemi, un point à une distance d pile à droite ( d étant la distance entre le héros et le mob ), et les coordonnées x/y du héros. )
Cortez :
Justement, $game_event.character_name = $game_variables(Y)
ne marche pas ?
Essaie de remplacer :
1
| attr_reader :character_name |
par :
1
| attr_accessor :character_name |
Dans Game_Character.
Orbital :
J'ai pas RMVX/RMVX Ace sous la main, mais en faite faut que tu regardes du côté des defs update.
La la def make_command_list n'est appeler qu'une seule fois, donc tes conditions de touches sont pas bonnes.
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
Orbital -
posté le 13/08/2013 à 18:06:14 (194 messages postés)
| | Je suis sous RM VXA (RGSS3 donc). Sinon oui, je comprends Mack. Mais là y a déjà pas mal d'update dans le Scene_Battle. Ça commence déjà à devenir trop pointu pour moi.
Je pense que ça se passe dans la méthode update_info_viewport, et encore, même pas sûr.
Dans Scene_Battle à un moment on fait ça :
def create_actor_command_window
@actor_command_window = Window_ActorCommand.new
Puis :
def create_all_windows
create_actor_command_window
Mais après cette méthode est juste utilisée dans la méthode start et je vois pas où c'est mis à jour... Du coup je suis un peu paumé. :/ Par exemple, même rien que pour ma culture, je comprends toujours pas où ça se passe le simple fait de faire "flèche du bas" pour sélectionner une autre commande (entre Attaquer et Magie par exemple).
Et pour en revenir au menu de commande de 5 lignes j'arrive soit à ça :
soit à ça :
Mais j'arrive pas à désolidariser le haut des 2 fenêtres car apparemment elles utilises le même @info_viewport. J'ai bien essayé d'en créer un 2ème mais il y a d'autres trucs à modifier et d'autres méthodes à faire en double mais je sais pas les quelles.
|
Final Fantasy Fury |
Mack -
posté le 13/08/2013 à 18:15:44 (2310 messages postés)
- - | | Bah, les flèches haut/bas, c'est dans la def update de ta fenêtre.
Donc quand dans ta Scene_Battle, la fenêtre d'action est updater, tu mets ton code pour faire gauche/droite.
Mais je suis pas certain à 100% que ça fonctionne, j'verrais quand j'aurais réinstaller RMVXAce.
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
Orbital -
posté le 13/08/2013 à 18:29:22 (194 messages postés)
| | Ok, je vais faire un test.
Pour mes 5 lignes je regardais juste au mauvais endroit, je viens de trouver. x)
Edit : ouais bon pour le test c'est rapé, je peux pas inventer la syntaxe. Je sais même pas comment faire comprendre au jeu que je veux 2 pages dans ma Window_ActorCommand.
Et le if right/left je sais pas où je dois le mettre dans le Scene_Battle (y a 5 méthodes update). Je sais même pas si je dois/peux le mettre dans create_actor_command_window.
'fin bref. Impossible de deviner. Autant le bidouillage de valeur je peux faire, autant ça, c'chaud.
Si quelqu'un a la réponse je veux bien (RGSS3 je rappelle).
Edit : bon au pire je ferais sans, je me débrouillerai autrement. ^^
|
Final Fantasy Fury |
Cortez -
posté le 14/08/2013 à 11:17:32 (524 messages postés)
| | Mack : modifier le reader ne marche pas, je retrouve la même erreur
NoMethodError undefined method 'character_name' for nil:NilClass
Je pense qu'il faudrais aliaser la classe game_character (ou
game_event) et lui attribuer un appel de ligne spécifique.
|
Mack -
posté le 14/08/2013 à 11:20:49 (2310 messages postés)
- - | | Là, l'erreur dis que t'essaie d'acceder à la variable character_name d'un Objet dont la class est NilClass hein
Donc c'est totalement normal.
Orbital :
J'essaierais de voir ça ce WE si tu veux.
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
Orbital -
posté le 14/08/2013 à 17:35:06 (194 messages postés)
| | Ouais non, te fatigue pas va. ^^
Merci quand même.
Je me contenterai de virer la commande Guarde et de remplacer la commande Attaquer par la commande Exceed pour accéder aux limites.
Par contre faut que je toruve le moyen d'afficher un curseur en plus au dessus de mes persos quand on choisit une action pour le perso en cours car comme sur mes screen, la window_battlestatus se barre à gauche et on voit plus les noms.
Par contre faudra que je m'assure que ce curseur se barre lors des invocations ou des grosses magies qui font disparaître les persos (ah bah non vu que le script pour ça c'est du RGSS2).
|
Final Fantasy Fury |
Cortez -
posté le 14/08/2013 à 20:42:32 (524 messages postés)
| | @Mack : c'est bien beau mais ça m'aide pas
Un coup de main ?
|
Orbital -
posté le 14/08/2013 à 22:49:54 (194 messages postés)
| | Cortez :
$game_event n'existe pas je crois. Je peux pas t'en dire plus.
Game_Event appartient à la classe Game_BaseCharacter (et donc Game_Character), mais là aussi ni sur l'un ni sur l'autre on peut agir avec un $game_machin.
Y a que ça qui est valide visiblement :
$game_temp
$game_system
$game_timer
$game_message
$game_switches
$game_variables
$game_self_switches
$game_actors
$game_party
$game_troop
$game_map
$game_player
Ou alors peut-être qu'ne rajoutant $game_event = Game_Event.new dans le datamanager tu pourras t'amuser, mais pas sur que ça fasse pas tout sauter.
|
Final Fantasy Fury |
Mack -
posté le 15/08/2013 à 13:15:50 (2310 messages postés)
- - | |
1
| $game_map.events[ID].character_name |
Avec le code plus haut ça devrait marcher.
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
Cortez -
posté le 15/08/2013 à 13:26:08 (524 messages postés)
| | Super c'est exactement ça.
J'ai fait quelques essais avant mais ma syntaxe plantait à chaque
fois.
Si tu as le temps j'aimerais une explication (surtout l'ordre de ta
syntaxe)
|
Grim -
posté le 15/08/2013 à 15:36:36 (251 messages postés)
| | l'objet stocké dans $game_map est de type Game_Map et possède un attribut events qui est un Hash et qui contient tous les évènements. Donc on y accède par $game_map.events[ID] et ça renvoi un objet Game_Event auquel on peut accéder à toutes ses propriétés.
|
http://funkywork.github.io/ |
Cortez -
posté le 15/08/2013 à 17:19:15 (524 messages postés)
| | @Grim :
C'est une sacrée coïncidence que tu postes une réponse.
J'ai d'abord testé d'ajouter une commande à l'event-extender avec
de multiples essais de syntaxe (ton script est assez simple.)
Sans succès, bien sur mais j'ai essayé.
Merci pour l'explication, je comprend un peu mieux la syntaxe,
même si je ne suis pas capable de comprendre l'organisation des
données du game_map (et du reste.)
@Mack :
Merci pour la ligne de code ^^
au fait pour ceux qui ne savent pas, le nom d'une ressource entre
crochet "Arshes"
peut très bien être remplacé par "#{$game_variables(Y)}" si la
variable Y contient du texte.
$game_variable(Y) = "Arshes"
|
Grim -
posté le 15/08/2013 à 17:25:13 (251 messages postés)
| | $game_variables[Y]*
Pour ajouter une commande, tu utilises quelle version? La vieille XP ou alors celle de VXAce?
|
http://funkywork.github.io/ |
Cortez -
posté le 15/08/2013 à 17:42:14 (524 messages postés)
| | bah XP, je suis sur xp et j'aime pas VX/Ace.
D'après ce que j'ai compris on crée sa commande dans le script
dans un module ou une classe.
Puis on intègre la syntaxe de notre commande dans le module cmd.
Le meilleur essai que j'ai eu ne fessait pas planter rm (ni au
chargement ni à l'appel de la commande) Mais il ne se passait rien !
Du coup j'ai abandonné car je ne voyait pas comment faire
fonctionner ma commande (pas celle du module cmd mais celle de
la classe Game_Map)
|
Grim -
posté le 15/08/2013 à 18:24:37 (251 messages postés)
| | En fait il suffit d'étendre le module commande.
1
2
3
4
5
6
| module Command
def ta_commande
ce que tu veux
end
end
|
|
http://funkywork.github.io/ |
Slime55 -
posté le 15/08/2013 à 21:33:03 (442 messages postés)
| | Up pour mon problème qui se trouve à la page 42
|
gay164 -
posté le 16/08/2013 à 15:35:42 (23 messages postés)
| | Support : RPG Maker XP
Question :
Lorsqu'on utilise la commande d'événement entrer un nombre, les chiffres ne se réinitialisent pas et restent selon la dernière requête entrée.
Comment faire en sorte que la dernière valeur entrée ne soit pas gardé en mémoire et que la commande entrer un nombre remette tous les chiffres à 0 à chaque fois ?
|
Åvygeil -
posté le 16/08/2013 à 17:35:53 (2502 messages postés)
| | Slime55 a dit: Up pour mon problème qui se trouve à la page 42 |
Attends, je te montre le titre du topic :
"[Scripts] Petites questions connes sur les SCRIPTS!!"
Ce topic n'est pas là pour traiter des bugs sur des scripts de 3 bornes de long non indentés.
Il est là pour que les personnes désireuses de se perfectionner en Ruby et en RGSS puissent demander des conseils aux scripteurs plus expérimentés.
Ici, on pose des questions dans une démarche d'apprentissage. Il était quand même temps que quelqu'un fasse ce petit rappel pour tous les membres qui posent leurs questions ici dès qu'ils utilisent un script dégueulasse et bugué ramassé on ne sait où...
@gay164 : Tu n'as qu'à repasser la variable de stockage à 0 juste avant la commande "Entrer un nombre" et ça n'a rien à voir avec les scripts...
|
Slime55 -
posté le 16/08/2013 à 19:23:57 (442 messages postés)
| | Citation: Il était quand même temps que quelqu'un fasse ce petit rappel pour tous les membres qui posent leurs questions ici dès qu'ils utilisent un script dégueulasse et bugué ramassé on ne sait où... |
Merci d'avoir fait alors de moi le cobaye, l'exemple
Sinon, je comprends que ça énerve mais un peu moins d'animosité aurait rendu le message un peu plus adéquat surtout que je n'ai pas demandé cela méchamment mais bon.
|
gay164 -
posté le 22/08/2013 à 19:00:48 (23 messages postés)
| | Version de RPG Maker utilisée : RPG Maker XP
Question : J'utilise un script pour mettre mon jeu en plein écran quand il est lancé (http://www.rpg-maker.fr/scripts-186-plein-ecran-automatique.html).
Mais lorsque je fais F12 pour relancer le jeu et revenir à l'écran titre, le jeu se met en mode fenêtré. Et lorsque j'appuie F12 alors qu'il est en fenêtre, ça se met en plein écran.
Comment cela se fait-il, et y a t-il un moyen de faire en sorte que le jeu reste comme il est lorsqu'il est relancé avec F12 ?
|
Nagato Yuki -
posté le 23/08/2013 à 19:37:51 (351 messages postés)
| | Utiliser un Loader qui ne charge qu'une seule fois les scripts.
|
Pokémon Workshop, le site de Making Pokémon sur RPG Maker~ |
gay164 -
posté le 23/08/2013 à 20:34:10 (23 messages postés)
| | Et où peut-on trouver ce genre de Loader ? (J'ai cherché un peu, mais j'ai rien trouvé de bien concret...) Si quelqu'un a ça sous la main, ça serait sympa, ça me rendrai bien service
|
Nagato Yuki -
posté le 23/08/2013 à 23:06:02 (351 messages postés)
| | Il faut le coder :b
(Le mien est spécifiquement compatible avec PSP, sur des projets RMXP ça ne passerait pas à cause des variables qui sont différentes ^^')
|
Pokémon Workshop, le site de Making Pokémon sur RPG Maker~ |
Dyeel -
posté le 23/08/2013 à 23:43:38 (200 messages postés)
| | Salut.
Gay164, sinon tu peux utiliser les APIs Windows en script
C'est ce que j'ai fait pour mon jeu. C'est une petite bidouille mais ça marche.
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
|
#=============
# Main (+ plein écran)
#--------------------
# Script de base revu par DYEEL
#=============
# Lancer le programme
begin
# Plein écran commande Win32API
hauteur_ecran = Win32API.new('user32','GetSystemMetrics','i','i').call(0)
if hauteur_ecran != 640
screen = Win32API.new('user32', 'keybd_event', %w(l l l l), '')
screen.call(18,0,0,0)
screen.call(13,0,0,0)
screen.call(18,0,2,0)
screen.call(13,0,2,0)
end
#--------------------
# Script de base du jeu
#--------------------
# Choix de la police + taille
Font.default_name = $fontface = "Arial"
Font.default_size = $fontsize = 22
Graphics.freeze
# Lancer l'écran titre
$scene = Scene_Title.new
# ???
while $scene != nil
$scene.main
end
# ???
Graphics.transition(20)
rescue Errno::ENOENT
# Erreurs de démarrage, fichiers non trouvés
# If unable to open file, display message and end
filename = $!.message.sub("No such file or directory - ", "")
print("Le fichier \"#{filename}\" n'a pas été trouvé.")
end
|
| 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!!
|