Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
Posté le: 04/05/11 17:50 Sujet du message: Création de doodads/destructibles sur commande
(UP) Salut !
J'ai tenté de créer un déclencheur pour pouvoir créer un destructible sur commande, j'ai donc créé un déclo en Jass sur le même principe que dans le sujet "Compétence sur commande", cependant ce déclo refuse de marcher, Je crois que cela bloque au niveau du GetObjectName, après des test j'en ai conclu ça
Jass:
function Trig_Destructibles_Actions takes nothing returns nothing
local integer i = 0
loop
exitwhen i > 106
if (StringCase(GetEventPlayerChatString(),false) == StringCase("-D "+GetObjectName(udg_VariableDestructible[i]),false)) then
call CreateDestructableLoc( udg_VariableDestructible[i], udg_Point[GetConvertedPlayerId(GetTriggerPlayer())], GetRandomDirectionDeg(), 1, 0)
call UnitAddItemByIdSwapped( udg_VariableItem[i], gg_unit_ngnw_0023 )
endif
set i = i + 1
endloop
endfunction
Inscrit le: 14 Avr 2011 Messages: 1846 Sujets: 119 Spécialité en worldedit: fonctions paramétriques, équation de mouvement.
Posté le: 26/05/11 18:37 Sujet du message:
j'ai un peu de mal à comprendre le jass, (c'est carrément du vjass la) peux tu m'apporter quelques précision ? ^^ (j'pourrais surement pas t'aider mais moi j'apprendrais des trucs =))
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
Posté le: 26/05/11 18:51 Sujet du message:
Si je dis pas n'importe quoi, cette ligne est la condition "la commande du joueur = Nom du destructible contenu dans VariableDestructible[i]" en gros ^^ (Oui j'explique très mal x) ), et StringCase sert à mettre tout un texte en minuscule ou en majuscule (Cette fonction existe d'ailleurs en GUI (Conversion - Convert String Case). Ainsi là c'est genre "Si Minuscule(Commande du joueur) = Minuscule(Nom du destructible contenu dans VariableDestructible[i]) Alors exécuter actions"
VariableDestructible est une variable à déploiement de type Type-Destructible, et chaque index de 1 à 106 de cette variable contient un des 106 destructibles du jeu ^^ _________________
Inscrit le: 14 Avr 2011 Messages: 1846 Sujets: 119 Spécialité en worldedit: fonctions paramétriques, équation de mouvement.
Posté le: 26/05/11 19:51 Sujet du message:
ok, et ton loop, une fois qu'il a fait les 106 valeurs de i, il recommence à 0 ?
si j'ai bien compris tu écris le nom d'un destructible, i ajoute 1 jusqu'à ce qu'il arrive à la valeur du déploiement de ta variable qui pointera le destructible sélectionné, et après on peut le créer en cliquant ?
il demande le 6, le 50, le 84, mais si après il demande le 1 il va jusqu'à 106, retourne à 0 et ensuite prend 1 ? _________________
22:27:43<Seiraw> Bah y a deux genre de personnes
22:27:57<Seiraw> les soumis et les soumises
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
Posté le: 26/05/11 20:07 Sujet du message:
Nan, à chaque fois qu'on tape le nom du destructible, la loop démarre en partant de i = 0 et s'arrête à i = 106, même si le destructible demandé est le 84 la loop continuera jusqu'à 106, et lorsqu'on demande un 2e destructible, i est réinitialisé à 0 et la loop monte jusqu'à 106 ^^
Jsais pas si c'est clair ce que je dis, j'explique comme un pied :p _________________
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
Posté le: 27/05/11 17:00 Sujet du message:
"GetEventPlayerChatString()" commencera toujours par "-D" (à cause de l'event) donc, à moins que tes destructibles aient des noms qui commence comme ça, ça ne marchera jamais. _________________
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
Posté le: 27/05/11 17:40 Sujet du message:
Autant pour moi, j'avais corrigé ce problème mais j'ai oublié de corriger dans le premier post, malheuresement même avec ce déclencheur :
Jass:
function Trig_Destructibles_Actions takes nothing returns nothing
local integer i = 0
loop
exitwhen i > 106
if (StringCase(GetEventPlayerChatString(),false) == StringCase("-D "+GetObjectName(udg_VariableDestructible[i]),false)) then
call CreateDestructableLoc( udg_VariableDestructible[i], udg_Point[GetConvertedPlayerId(GetTriggerPlayer())], GetRandomDirectionDeg(), 1, 0)
call UnitAddItemByIdSwapped( udg_VariableItem[i], gg_unit_ngnw_0023 )
endif
set i = i + 1
endloop
endfunction
Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
Posté le: 26/08/11 00:36 Sujet du message:
Il faut sérieusement que tu apprennes à débugger, affiche des text messages pour voir ce qui se passe dans ta loop, comme le nom des tes doodads, les "types destructibles" -> entiers, etc.
Rajoutes des wait s'il le faut pour que tu puisses lire les messages.
Tu peux utiliser BJDebugMsg pour cela qui a le mérite de ne prendre qu'un argument, le string que tu veux afficher, et d'être aussi assez court à taper, à fortiori avec le JNGP.
Et si tu veux une aide efficace il faut que tu expliques ce qui ne fonctionne pas exactement, ou du moins dans les grandes lignes, "rien, la création du destructible, etc ..." _________________
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
Posté le: 26/08/11 01:16 Sujet du message:
En gros le destructible ne se créé pas, tout ce qui est à l'intérieur du If/then/else ne s'exécute pas.
Il semblerait que cela vienne de cette condition
En effet, j'ai fait un test en demandant d'afficher le message "i" (l'entier i de la boucle) à l'intérieur de la boucle et rien ne s'affiche, rien ne se passe, cependant j'ai également demandé avant et après le if then else d'afficher des messages, ceux-ci se sont bien affichés.
J'ai donc remplacé udg_VariableDestructible[i] par udg_VariableCapacite[i] (cette dernière variable contient toutes les compétences du jeu).
udg_VariableCapacite[1] correspond à Lenteur, quant à udg_VariableDestructible[1], il correspond à Murs d'arbres d'Ashenvale, j'ai donc écrit "-D lenteur" dans la game, et mon arbre a été créé, et le message "1" a été affiché, en gros ça a marché.
La variable udg_VariableDestructible est de type "Type-Destructible" _________________
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
Posté le: 26/08/11 15:59 Sujet du message:
Il faut faire "BJDebugMsg(StringCase(GetEventPlayerChatString(),false))" et "BJDebugMsg(StringCase("-D "+GetObjectName(udg_VariableCapacite[i]),false))" hors du if/then/else pour voir d'où vient le problème. _________________
Toutes les heures sont au format GMT + 1 Heure Aller à la page 1, 2, 3Suivante
Page 1 sur 3
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum