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:
Joke -
posté le 28/06/2013 à 00:46:59 (5090 messages postés)
| Bilouteux fou | Estheone a dit: applique-les dans son image avec 18 éléments et tu vas vite voir le problème.
|
Bien vu, il ne faut pas faire "%= @item_max - 1" mais simplement "%= @item_max" pauvre abruti incompétent nul que je suis.
Je corrige. J'ai corrigé.
|
biloumaster.fr, mon joli site ouèb tout bô tout frai ! | Suite du sujet:
Estheone -
posté le 28/06/2013 à 02:04:44 (312 messages postés)
| | Désolé mais ça suffit toujours pas.
Partons de l'élément en bas à gauche sur l'image (@index = 15)
En faisant bas avec ta formule :
@index = 15+15 = 30
@index = 30%18 = 12
On retombe pas sur 0.
Un simple modulo avec @item_max ne fonctionne pas quand @item_max n'est pas multiple de @column_max... et c'est bien pour ça que c'est la merde cette histoire.
Je viens aussi de me rendre compte que mes formules sont moisies et ça va faire les sons inutilement quand il y a 15 éléments ou moins.
Bon au final :
1
2
3
4
5
| # Move cursor down
last_index = @index
@index += @column_max
@index = (@index%@column_max) if @index >= @item_max
$game_system.se_play($data_system.cursor_se) if last_index != @index |
1
2
3
4
5
6
7
8
9
| # Move cursor up
last_index = @index
@index -= @column_max
if @index < 0
max_rows = 1+((@item_max-1)/@column_max)
@index += max_rows*@column_max
@index -= @column_max if @index >= @item_max
end
$game_system.se_play($data_system.cursor_se) if last_index != @index |
J'ai testé tous les cas possibles et ça fonctionne.
|
Wandering Souls : Jeu complet / Topic sur Oniro |
Joke -
posté le 28/06/2013 à 09:59:44 (5090 messages postés)
| Bilouteux fou | Ah, dans ce cas je comprends mieux ta méthode. Effectivement, pour "Bas" c'est une bonne idée, mais pour "Haut" je pense qu'on peut aussi faire :
1
2
3
4
5
6
| # Move cursor up
last_index = @index
@index -= @column_max
@index %= (@item_max.to_f/@column_max).floor*@column_max
@index = [@index, @item_max-1].min
$game_system.se_play($data_system.cursor_se) if @index != last_index |
Et je soutiens que :
@index %= @column_max if @index >= @item_max
Est plus joli que :
@index = (@index%@column_max) if @index >= @item_max
|
biloumaster.fr, mon joli site ouèb tout bô tout frai ! |
moska -
posté le 28/06/2013 à 10:54:53 (120 messages postés)
| | Logiciel : vx
script : SBS
J'aimerais savoir comment changer la direction des héros en combat. Genre qu'ils regardent à droite au lieu d'à gauche. J'ai cherché dans les script mais je n'ai pas trouvé/mal regardé.
Merci
|
cortez -
posté le 28/06/2013 à 11:22:08 (524 messages postés)
| | Je vous répond directement, je ne sais pas pourquoi mais lorsque
que j'ai modifié le scripts selon vos formules, je saute une ligne lorsque
je presse Down ou Up, et c'est valable pour les 2 versions.
(Joke et Estheone).
Il a fallu que je clone le script Windows_selectable (c'est lui qui
faisais tout foirer car window_item < window_selectable)
Je l'ai renommé window_selectable_item et j'ai changé les
dépendances des script liés.
Ainsi tout marche (pour le moment) et je n'ai aucun conflit.
J'aurais juste une question, même si les objets ne remplissent pas
la page des items, j'ai la petite flèche qui apparait en bas (elle
indique normalement que la liste continue plus bas). Je voulais
juste savoir ou modifier afin qu'elle n'apparaisse que lorsque j'ai la
page pleine d'objet + 1.
|
le_colosse -
posté le 01/07/2013 à 21:38:26 (66 messages postés)
| Rush FTW | Regarde si la taille des derniers objets de ta liste débordent du contents. Ça peut être bête comme ça. Sinon tu peux peut être ajuster le padding dans le bas de ta fenêtre. je crois que c'est update_padding_bottom.
|
ratorix -
posté le 01/07/2013 à 23:12:04 (99 messages postés)
| | Moska :
Je connais pas VX ni le script, mais si c'est un script vue de coté, tu doit pouvoir regarder comment son mis les ennemies, eux sont surement inversé, du coups t'utilise la même méthode sur tes héros, ainsi il devrais regarder de l'autre coté.
Désolé de ne pas aidé plus mais si c'est bien un script vu de coté, il y as de forte chance que tu trouve la réponse ou je te dis.
|
paradoxII -
posté le 04/07/2013 à 19:04:24 (259 messages postés)
| NYA | Support : RM VX ACE
Question 1 :
J'aimerai savoir s'il y a moyen de cesser le clignotement de "la boite" de sélection dans les menu ?
|
NYA |
le_colosse -
posté le 04/07/2013 à 22:10:43 (66 messages postés)
| Rush FTW | @paradoxII
C'est la propriété active de la classe Window qui gère le clignotement du curseur.
Citation: active
The cursor's blink status. If TRUE, the cursor is blinking. The default is TRUE. |
Le seul problème, c'est que cette propriété est prise en compte lors de l'activation et la déactivation d'une fenêtre. Donc, si active == false, le curseur ne peut plus bouger et tu ne peux pas faire de sélection. Il faudrait donc que tu modifies tous les appels à la propriété active dans le code par un second booléen qui lui, serait utilisé pour gérer l'activation des fenêtres.
|
Mack -
posté le 04/07/2013 à 22:31:08 (2310 messages postés)
- - | | Nan, mais là tu pars carrément à l'envers xD.
Faut plutôt voir comment ai géré le clignotement du curseur, ça sera carrément moins chiant .
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
paradoxII -
posté le 04/07/2013 à 23:22:00 (259 messages postés)
| NYA | Mouai et donc je fait quoi ?
|
NYA |
le_colosse -
posté le 04/07/2013 à 23:23:15 (66 messages postés)
| Rush FTW | Le clignotement du curseur est géré à l'interne par la classe Window. Puisque c'est une classe built-in, le code n'est pas disponible. Dans la doc, il est spécifié que la propriété active gère le clignotement du curseur. Mais comme j'ai spécifié plus haut, l'activation d'une fenêtre est liée à cette propriété.
EDIT: Je peux te faire un petit script qui redirigera chaque appel à active vers un nouveau booléen active_window, ce qui te permetterait d'utiliser la propriété par défaut active uniquement pour le clignotement du curseur.
|
Zeus81 -
posté le 04/07/2013 à 23:29:39 (11071 messages postés)
| | Indice : la classe de base a beau être scellée le clignotement ne se met pas à jour tout seul comme par magie.
|
le_colosse -
posté le 04/07/2013 à 23:29:30 (66 messages postés)
| Rush FTW | C'est la méthode update de la classe Window qui rafraîchit à chaque frame le curseur.
EDIT: J'ai mieux regarder mon affaire et effectivement, c'est beaucoup plus simple de changer la valeur de active avant et après l'update à chaque frame.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| class Window_Base < Window
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
@current_active = self.active
self.active = false
super
update_tone
update_open if @opening
update_close if @closing
self.active = @current_active
end
end |
|
Dyeel -
posté le 16/07/2013 à 16:23:11 (200 messages postés)
| | Support : RMXP
Question 1 :
Bonjour.
J'ai voulu récupérer le nom de mon projet dans le Game.ini, j'ai donc utilisé cette commande :
1
2
3
4
5
6
|
fichier = File.open("Game.ini","rb")
lines = fichier.readlines
nom = lines[4]
nom.gsub!("Title=","")
return nom |
Le problème est que ce nom contient deux caractères de plus que le nom de mon projet. (J'ai repéré ça avec nom.size)
J'ai vu qu'un des caractères est le retour à la ligne : "\n".
Je l'enlève avec un gsub! mais j'ai toujours un caractère de trop et j'arrive pas à le déterminer.
Du coup j'ai magouillé en sélectionnant tous les caractères sauf le dernier et là je récupère mon nom et uniquement mon nom donc c'est bon.
Alors ma question est la suivante : Quel est ce caractère en trop?
Ca me gêne pas pour récupérer le nom mais j'aimerais quand même savoir à quoi ça correspond.
Question 2 :
J'ai voulu faire un alias de méthodes pour un module.
J'ai essayé alias et alias_method sans grand succès.
J'ai fini par y arriver en faisant :
1
2
3
4
5
6
7
8
9
10
|
module Mod
class << self
alias nouvelle ancienne
end
def ancienne
...
Mod.nouvelle
end
end |
Ma question : Est-ce que le class << self signifie qu'on effectue une sorte de transformation de module en classe afin d'utiliser des commandes prévues pour les classes? Ou bien ça fait autre chose?
Merci d'avance. ^^
|
Cortez -
posté le 16/07/2013 à 19:07:54 (524 messages postés)
| | Réponse 1 :
Le caractère en question est surement celui ci '[]' c'est une sorte de
cube avec des contours fins. Il est présent lors d'une conversion
entre les formats jap et eng. (certains en ont lorsqu'ils choisisent le nom de leur personnage.)
C'est un caractère qui correspond à un espace, donc invisible.
Réponse 2 :
De mon niveau faible je pense que seul
suffit, le tout est de bien respecter la syntaxe du nom de l'ancienne méthode.
|
Dyeel -
posté le 16/07/2013 à 19:18:00 (200 messages postés)
| | Merci pour tes réponses.
Pour la première, je sais pas trop si tu as raison étant donné que le Game.ini ne comprend que les caractères que j'ai tapé.
Mais je vois de quoi tu parles.
Pour la seconde, l'alias ne fonctionne pas dans ce cas là^^ sinon j'aurais pas utilisé le class << self.
Je pense que ça vient du fait que les méthodes de ce module sont définies de la manière self.method et pas juste method. (C'était le module Graphics en fait)
Mais je ne sais toujours pas ce que fait class << self du coup...
|
Åvygeil -
posté le 16/07/2013 à 19:39:32 (2502 messages postés)
| |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
module Mod
class << self
alias nouvelle ancienne
def ancienne
# ...
nouvelle
end
end
end
|
De rien.
|
Zeus81 -
posté le 16/07/2013 à 19:40:14 (11071 messages postés)
| | 1) C'est \r parce que sous windows une fin de ligne c'est \r\n.
Plutôt qu'utiliser un gsub utilise strip.
2) class << self ça change la portée.
Si tu fais :
1
2
3
4
| class Caca
def self.prout
end
end |
Ça revient au même que :
1
2
3
4
5
6
| class Caca
class << self
def prout
end
end
end |
ou si la classe existe déjà :
ou :
1
2
3
4
| class << Caca
def prout
end
end |
|
Dyeel -
posté le 16/07/2013 à 20:26:21 (200 messages postés)
| | Avygeil : Merci mais ça j'avais réussi, c'était pas ça mon problème.
Zeus : Super, merci pour ces réponses! Je cerne un peu mieux.
|
Cortez -
posté le 16/07/2013 à 21:17:48 (524 messages postés)
| | Du coup Zeus m'a appris un truc pour la réponse 1.
Comme quoi on apprend en permanence !
|
Åvygeil -
posté le 16/07/2013 à 21:35:27 (2502 messages postés)
| | Citation: Avygeil : Merci mais ça j'avais réussi, c'était pas ça mon problème. |
Vu le code que tu nous as mis :
1
2
3
4
5
6
7
8
9
10
11
|
module Mod
class << self
alias nouvelle ancienne
end
def ancienne
...
Mod.nouvelle
end
end
|
ou indenté pour que tu vois mieux :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
module Mod
class << self
alias nouvelle ancienne
end
def ancienne
...
Mod.nouvelle
end
end
|
ça ne fait clairement pas ce que tu penses que ça fait...
Là ça crée une nouvelle méthode "Mod#ancienne" qui ne fait qu'appeler la méthode "Mod.nouvelle" qui est un nouveau nom de "Mod.ancienne".
Tu n'as absolument pas redéfini la méthode "Mod.ancienne".
Sinon, pour être plus précis que Zeus, "class << self" ouvre la metaclasse ou classe singleton de l'objet self, qui est en l’occurrence le module Mod. Mais ça marche avec n'importe quel objet.
Typiquement :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
o1 = Object.new
o2 = Object.new
class << o1
def ma_methode
print "toto"
end
end
o1.ma_methode # va afficher toto
o2.ma_methode # va crasher
|
C'est juste qu'on s'en sert dans ce cas pour mimiquer les méthodes de classe à la Java ("static") alors qu'en fait, c'est juste qu'on rajoute une méthode à une instance particulière.
|
Dyeel -
posté le 16/07/2013 à 23:06:24 (200 messages postés)
| | Merci pour ta réponse ^^
En effet j'ai oublié de recopier un truc (et j'en suis désolé) :
J'avais écrit : def self.ancienne et pas def ancienne
Ça revient à faire ce que la solution de ton premier post faisait.
En fait j'ai fait ça pour ajouter une commande à Graphics.update, j'ai juste utilisé l'alias vu que j'avais pas accès au module.
Désolé de m'être mal fait comprendre en tout cas.
C'est cool d'avoir complété la réponse de Zeus avec ton explication, j'avais pas exactement compris ça, j'ai saisi un truc de plus
Donc merci à vous deux.
|
Husk -
posté le 26/07/2013 à 14:53:02 (1022 messages postés)
- | | Support : RMXP
Question :
Voilà, je me demandais s'il était possible, ou si cela existe déjà, de créer des variables local, du même style que les interrupteurs locaux de base.
Edit: Du même style que ça enfaite, mais pour xp. http://nuki.music-all.be/Scripts/Local_Event.php
|
Itch.io | Don't click on the potato! |
Cortez -
posté le 26/07/2013 à 16:23:07 (524 messages postés)
| | L'event extender fait ce que tu demande (et bien plus)
Le script : https://github.com/Funkywork/Scripts-rm/blob/master/XP/EventExtender_XP.rb
Les instruction (anglais) :
http://eventextender.gri.im/UK.html
Ne clique pas sur la version fr des instruction, ça marche plus.
(d'ailleurs si ils pouvaient remettre la page...)
|
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!!
|