Lambda -
posté le 11/12/2013 à 18:26:55 (15 messages postés)
| | Domaine concerné: Evenement / script Logiciel utilisé: RMXP Bonjour,
Je suis en train de faire une grotte. J'ai essayer les événements communs pour faire un système de lampe. Pas très convainquant !
J'ai dans l'idée de faire ceci:
- un script dans lequel il y a un tableau avec les id des maps qui doivent être noircie.
- mettre ces maps à 255 avant la téléportation
- si le joueur possède une lanterne, si on appuie sur "A" du clavier ou "A" du paddle, utiliser une image 960 x 720 px avec un rond blanc au centre en suivant le héros.
Voila, maintenant, je ne sait pas si c'est faisable, j'aimerais bien découvrir déjà comment faire le tableau.
Je pense que la première étape, ça sera de faire un script au dessus de main. Le renommer Gestion_Lanterne.
Créer la lanterne, l'ajouter dans les inventaire (enfin en base de donnée). Je pense qu'un coffre contiendra la lanterne. A voir si je ne vais pas en profiter pour mettre une jauge
Il faudra régulièrement acheter des recharges de pétrole. Ce sera une amélioration du script initial.
Voila, je veux bien un peu d'aide la dessus.
Merci beaucoup.
|
Cortez -
posté le 11/12/2013 à 21:23:01 (523 messages postés)
| | Tout ce que tu souhaites est réalisable en event.
1- Avant de téléporter le joueur sur une map "sombre" il suffit de
placer la commande "modifier le ton de la map".
2- Un event commun parallèle pour tester l'appui de la touche A.
Tu te sers alors de pictures afin d'afficher une jauge (que tu crée).
3- La jauge doit être lié à une variable qui contient la "quantité"
de pétrole que tu as. Il est aussi possible d'ajouter des icones
près de la jauge afin de dire au joueur combien de baril il lui reste
voire même comme dans un metroid de remplir automatiquement
la jauge si il possède des barils (tout en enlevant 1 baril de l'inven-
taire).
Voici en bref ce qu'il faut faire pour que tout fonctionne comme tu
le souhaites SANS script ![:D](smileys/grincant.gif)
|
Lambda -
posté le 11/12/2013 à 21:45:45 (15 messages postés)
| | Non, en évenement c'est trop le bord** !
J'ai essayé, et 1 ça ne fonctionne pas comme je le désire.
Je suis bien plus à l'aise avec de la programmation.
Je pense faire cela :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class LanternPlayer
# INITIALISATION
def initialize
@map_black = [005, 006] #Les maps qui seront à noircir
end
# SELECT
def select
# Si le joueur entre dans une des cartes à noircir
# C'est ici que j'ai besoin d'aide !
end
end
|
Bon, ok, j'ai mis que la base. Maintenant, il faut que je fasse le test entre le tableau et l'endroit ou est le joueur.
Si quelqu'un à une idée. Je suis prenenur. ![:grossourire](smileys/grossourire.gif)
|
Cortez -
posté le 11/12/2013 à 22:06:54 (523 messages postés)
| | J'ai édité mon message avec les event tous fait. Ya plus qu'a copier.
Pour quelqu'un qui est à l'aise dans le codage, tu demandes de
l'aide pour ça...
M'enfin c'est pas grave, essaye ma solution et si tu t'en sors pas
là au moins tu auras essayé et tu pourras demander l'aide d'un
scripteur.
Sache aussi qu'un script n'est pas la solution à tout, et que les
scripteurs qui voient ta demande ne répondent sans doute pas à
cause du fait que tu peux le faire par toi-même.
|
Dyeel -
posté le 11/12/2013 à 22:54:05 (200 messages postés)
| | Cortez a dit: Sache aussi qu'un script n'est pas la solution à tout, et que les
scripteurs qui voient ta demande ne répondent sans doute pas à
cause du fait que tu peux le faire par toi-même. |
C'est vrai. Et ce que tu demandes, Lambda, est réalisable en event.
Après c'est vrai que niveau rendu ce sera pas aussi bien que ce que permettent les scripts.
Après c'est bien de vouloir te lancer dans le ruby avec des idées, mais les idées ça te suffira pas et je doute que "passer une commande" d'un script que tu veux portera ses fruits. Mais je veux en aucun cas te décourager.
Le truc c'est que dans ton script il faut pas juste gérer une map qui va se noircir, mais aussi chaque lumière, son rayon, son intensité, sa position par rapport à l'écran, etc...
Par contre, tu peux jeter un oeil sur ce projet rmxp, le mec qui l'a fait a codé un système de lumière vraiment joli. Si ça peut te donner une piste...
Mais si tu veux commencer le ruby pour coder ton système, commence par la base, tu n'apprendras que mieux
Bon courage!
|
Lambda -
posté le 12/12/2013 à 06:27:32 (15 messages postés)
| | Oui, bon, alors, vue comme ça j'ai pas été adroit ! En effet !
Non, à l'évent, sauf en dernier recours.
Là ou je pose ma question, en fait j'aurais du dire. Il doit existé une variable pour le player. Je cherche à la répérer dans les scripts et à la tester. Je pourrait afficher à l'écran le contenu de cette variable. Sorte de débug, mais je vais trouver par moi-même !
Ensuite, je pense faire une sorte de scan à tableau. En php c'est un foreach, je cherche l'équivalent en ruby. Mais là encore, à bien y regarder, je vais googoler un peu et ça sera vite trouvé !
Si je comprends bien, du fait de poser une question avec un début de code, c'est qu'on ne sait pas coder. C'est bien malheureux mais ça vous permet de faire le tris. Et c'est parfait !
Merci de votre aide en event, mais là, je n'y songe même plus par ce que ça ne corresponds pas à ma demande. Mais je garde sous le coude au cas ou.
Finalement, le scripting, c'est quand même très sympa. J'aime bien pour le peu que j'ai déjà coder dedans. Il me reste à approfondir.
Ok pour le lien du gars qui a tout coder. Je vais regarder de plus prêt.
Merci. ![:sonic](smileys/sonic.gif)
|
Dyeel -
posté le 12/12/2013 à 12:46:18 (200 messages postés)
| | Citation: Si je comprends bien, du fait de poser une question avec un début de code, c'est qu'on ne sait pas coder. |
C'est pas du tout ce que j'ai voulu dire, désolé!
Sous ruby, tu fais un tableau et tu le parcoures comme ceci :
1
2
3
4
5
6
7
8
9
10
11
12
| tab = []
tab2 = [1, 4, 6]
tab3 = [Sprite.new, Sprite.new]
for element in tab
#tes commandes
end
for spr in tab3
#tes commandes pour les sprites par exemple
end
|
Ensuite pour le joueur, il y a la variable $game_player. Tu as les attributs x, y, screen_x, screen_y entre autres.
Tu peux aussi capturer la position de l'écran : $game_map.display_x et display_y ^^
Rubydoc est très complet, et pour les variables de RM et leurs attributs ($game_player par exemple) tu as le fichier d'aide de RMXP qui est vraiment bien !
|
Lambda -
posté le 12/12/2013 à 13:23:42 (15 messages postés)
| | Effectivement ! C'est ce que j'ai été cherché ce matin sur Stackoverflow
Pour la petite histoire, j'ai retrouvé la trace de cela dans le code du coup. Et c'est là que j'ai compris une chose ! Mon tableau n'étais pas bon.
Ensuite, je pense qu'il manque quelque-chose dans mon code. En effet, rien ne lance la méthode... Du coup, je pense que ça compilera mais qu'il ne se passera rien. Je travaille la dessus maintenant pour faire un code simple, clair, optimisé et propre.
Oui, par ce que voila, j'aime le beau code simple à lire et à reproduire. Et plus c'est simple, plus c'est dépanable. C'est le but ! Si en plus ça sert aux autres, c'est que mieux.
Voyons maintenant ce que ça donne dans le code
Ah voila, je savait bien... Bon, alors j'ai renommé mes maps tel que "Diwa", "Diwa-Grotte-01" et "Diwa-grotte-02". Et là les chiffres ne tiennent plus !
Donc je ais déjà modifier le tableau de sorte que:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class LanternPlayer
# INITIALISATION
def initialize
#Les maps qui seront à noircir
@tMapBlack = ["Diwa-Grotte-01", "Diwa-Grotte-02"]
@heroCurrentMap = hero.current_map
end
# SELECT
def select
# Pour chaque valeur de map à noircir
for @heroCurrentMap in @tMapBlack
if @heroCurrentMap
# Eteindre la map
end
end
end
end
|
Bon, il me reste à tester ce que ça donne, ajouter le noircissement. J'espère que je trouverais.
|
Dyeel -
posté le 12/12/2013 à 16:17:07 (200 messages postés)
| | Je comprends pas bien où tu veux en venir avec ta liste de maps.
Tu as besoin de noircir celle qui est actuellement à l'écran si elle fait partie de ta liste.
Alors plutôt que de rentrer des noms dans un tableau, rentre les ids des maps à noircir et teste en jeu si tu es dans une map dont l'ID est dans le tableau.
Pour obtenir l'ID de la map dans laquelle tu es : $game_map.map_id
Pour tester si c'est dans le tableau, tu utilises @tMapBlack.include?($game_map.map_id)
Puis c'est pour ça que je te disais de commencer par des choses basiques plutôt que par un script de lumières. Pas pour te dire que t'es une bille et que tu sais pas coder, mais pour te dire que tu as des choses à maîtriser avant de te lancer là-dedans.
Une liste rapide :
1
| @heroCurrentMap = hero.current_map |
C'est quoi le "hero.current_map" ? hero c'est une variable locale que tu n'as pas déclarée.
1
| for @heroCurrentMap in @tMapBlack |
Tu vas gérer toutes les maps en même temps sans qu'elles soient à l'écran?
Puis c'est bien de créer une classe LanternPlayer, mais tu as créé quelque part une variable qui va l'instancier?
Si tu veux agir sur un éclairage dans une grotte par exemple, ce sera juste un calque sur ta map à l'écran.
Alors va plutôt modifier les scripts Scene_Map ou Spriteset_Map.
Comprends bien que je dis tout ça pour orienter tes recherches et je ne te dénigre pas donc pas de mauvaise interprétation. =)
|
Lambda -
posté le 12/12/2013 à 17:51:51 (15 messages postés)
| | Oui, c'est justement là ou je voulais en venir
Tu a bien vue sur le fait que j'ai utiliser hero non déclarer pour le moment.
Remarque, j'aurais certainement du me faire un appel de méthode qui me retournais des infos à l'écran. Mais c'est encore possible.
Alors, si je reprends, je casse ce que j'ai fait, en parti. Mais c'est voulue à ce stade. J'aime refaire. Déjà, comment puis-je instancier ma classe ? Oui, là tu va me traité d'abruti. Mais je préfère en passer par là, par petit bon, en sachant exactement ce que je veux faire plutôt que de m'en remettre à du tout fait bêtement.
Et oui, perdu le coup du copier collé et basta. Ce qui m'amuse le plus c'est d'apprendre ! Alors, go, pour l'instanciation.
Je vais devoir créer une def info quelque part. Elle se chargera de me retourner, provisioirement l'id de map sur laquelle on est.
Genre en haut de l'écran un truc du stype:
Id Map : 1
Heros : Nom héros
Je sait, c'est la base. Mais patience, je compte bien apprendre avec ce script et poursuivre ensuite. Mais de grâce, ne te fâche pas
Bon, aller, c'est bien par ce que j'aime bien oniro que je vais en parler hein ! Je me suis taper, déjà en c++ des softs et même de l'embarqué. Mais effectivement le Ruby j'apprends. Ya du mal à ça ?
Bref, on papote; j'aime papoter ! Mais j'aime encore plus apprendre et expérimenté, quitte à me tromper et à refaire. ![:grossourire](smileys/grossourire.gif)
|
Mack -
posté le 12/12/2013 à 18:04:03 (2292 messages postés)
- ![staff](interface/rangs/staff.png) Une erreur est survenue, si le problème persiste merci de le signaler à un administateur.
|
|
|