Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.phpMédailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Création de doodads/destructibles sur commande
Aller à la page 1, 2, 3  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 rgf
Membre reconnu


Inscrit le: 09 Mar 2009
Messages: 1154
Sujets: 54
Spécialité en worldedit: Croâ ?


MessagePosté le: 04/05/11 17:50    Sujet du message: Création de doodads/destructibles sur commande Citer

(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 Surprised
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

//============================
function InitTrig_Destructibles takes nothing returns nothing
    set gg_trg_Destructibles = CreateTrigger()
    call TriggerRegisterPlayerChatEvent( gg_trg_Destructibles, ConvertedPlayer(1), "-D ", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Destructibles, ConvertedPlayer(2), "-D ", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Destructibles, ConvertedPlayer(3), "-D ", false )
    call TriggerAddAction( gg_trg_Destructibles, function Trig_Destructibles_Actions )
endfunction

Je ne comprends pas pourquoi ce déclo bug x)
_________________
Croâh ?


Dernière édition par rgf le 27/05/11 17:40; édité 2 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 rgf
Membre reconnu


Inscrit le: 09 Mar 2009
Messages: 1154
Sujets: 54
Spécialité en worldedit: Croâ ?


MessagePosté le: 26/05/11 18:25    Sujet du message: Citer

Up
_________________
Croâh ?
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 kungfu-sheep
Anomalie floodiforme


Inscrit le: 14 Avr 2011
Messages: 1846
Sujets: 119
Spécialité en worldedit: fonctions paramétriques, équation de mouvement.


MessagePosté le: 26/05/11 18:37    Sujet du message: Citer

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 =))

"StringCase(GetEventPlayerChatString(),false) == StringCase(GetObjectName(udg_VariableDestructible[i]),false))"

VariableDestructible égal quoi ?
stringcase ressemble à substring, ça fait quoi ?
ou tout simplement en faite, que fait cette ligne ? ^^"

merci
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
 rgf
Membre reconnu


Inscrit le: 09 Mar 2009
Messages: 1154
Sujets: 54
Spécialité en worldedit: Croâ ?


MessagePosté le: 26/05/11 18:51    Sujet du message: Citer

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 ^^
_________________
Croâh ?
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 kungfu-sheep
Anomalie floodiforme


Inscrit le: 14 Avr 2011
Messages: 1846
Sujets: 119
Spécialité en worldedit: fonctions paramétriques, équation de mouvement.


MessagePosté le: 26/05/11 19:51    Sujet du message: Citer

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
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
 rgf
Membre reconnu


Inscrit le: 09 Mar 2009
Messages: 1154
Sujets: 54
Spécialité en worldedit: Croâ ?


MessagePosté le: 26/05/11 20:07    Sujet du message: Citer

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
_________________
Croâh ?
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 kungfu-sheep
Anomalie floodiforme


Inscrit le: 14 Avr 2011
Messages: 1846
Sujets: 119
Spécialité en worldedit: fonctions paramétriques, équation de mouvement.


MessagePosté le: 26/05/11 20:09    Sujet du message: Citer

nan c'est bon tkt je comprend =) c'est pas si compliqué, j'hésitais entre mon truc et ce que tu as dit ^^
_________________
22:27:43<Seiraw> Bah y a deux genre de personnes
22:27:57<Seiraw> les soumis et les soumises
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 27/05/11 17:00    Sujet du message: Citer

"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.
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 rgf
Membre reconnu


Inscrit le: 09 Mar 2009
Messages: 1154
Sujets: 54
Spécialité en worldedit: Croâ ?


MessagePosté le: 27/05/11 17:40    Sujet du message: Citer

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

//============================
function InitTrig_Destructibles takes nothing returns nothing
    set gg_trg_Destructibles = CreateTrigger()
    call TriggerRegisterPlayerChatEvent( gg_trg_Destructibles, ConvertedPlayer(1), "-D ", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Destructibles, ConvertedPlayer(2), "-D ", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Destructibles, ConvertedPlayer(3), "-D ", false )
    call TriggerAddAction( gg_trg_Destructibles, function Trig_Destructibles_Actions )
endfunction
Ca ne marche pas, et c'est là toute la source de mon incompréhension ^^
Je corrige dans le premier post également !
_________________
Croâh ?
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 rgf
Membre reconnu


Inscrit le: 09 Mar 2009
Messages: 1154
Sujets: 54
Spécialité en worldedit: Croâ ?


MessagePosté le: 26/08/11 00:15    Sujet du message: Citer

Up ! (c'était y'a longtemps mais j'ai toujours le même problème qui n'est pas résolu et jsais vraiment pas d'où vient le bug ><)
_________________
Croâh ?
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


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...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 26/08/11 00:36    Sujet du message: Citer

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 ..."
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 rgf
Membre reconnu


Inscrit le: 09 Mar 2009
Messages: 1154
Sujets: 54
Spécialité en worldedit: Croâ ?


MessagePosté le: 26/08/11 01:16    Sujet du message: Citer

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
Jass:
(StringCase(GetEventPlayerChatString(),false) == StringCase("-D "+GetObjectName(udg_VariableDestructible[i]),false))
et plus précisément de
Jass:
GetObjectName(udg_VariableDestructible[i])

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"
_________________
Croâh ?
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


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...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 26/08/11 15:17    Sujet du message: Citer

Fais voir ton code avec ton rajout des messages.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 rgf
Membre reconnu


Inscrit le: 09 Mar 2009
Messages: 1154
Sujets: 54
Spécialité en worldedit: Croâ ?


MessagePosté le: 26/08/11 15:53    Sujet du message: Citer

Voila :
Jass:
function Trig_Destructibles_Actions takes nothing returns nothing
    local integer i = 0
    call DisplayTextToForce( GetPlayersAll(), SubStringBJ(GetEventPlayerChatString(), 4, StringLength(GetEventPlayerChatString())) )
    loop
        exitwhen i > 106
        if (StringCase(GetEventPlayerChatString(),false) == StringCase("-D "+GetObjectName(udg_VariableCapacite[i]),false)) then
            call DisplayTextToForce( GetPlayersAll(), I2S(i) )
            call CreateDestructableLoc( udg_VariableDestructible[i], udg_Point[GetConvertedPlayerId(GetTriggerPlayer())], GetRandomDirectionDeg(), 1, 0)
            call UnitAddItemByIdSwapped( udg_VariableItem[i], gg_unit_ngnw_0248 )
        endif
        set i = i + 1
    endloop
    call DisplayTextToForce( GetPlayersAll(), "Endloop" )
endfunction

//============================
function InitTrig_Destructibles takes nothing returns nothing
    set gg_trg_Destructibles = CreateTrigger()
    call TriggerRegisterPlayerChatEvent( gg_trg_Destructibles, ConvertedPlayer(1), "-D ", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Destructibles, ConvertedPlayer(2), "-D ", false )
    call TriggerRegisterPlayerChatEvent( gg_trg_Destructibles, ConvertedPlayer(3), "-D ", false )
    call TriggerAddAction( gg_trg_Destructibles, function Trig_Destructibles_Actions )
endfunction

_________________
Croâh ?
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 26/08/11 15:59    Sujet du message: Citer

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.
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs Toutes les heures sont au format GMT + 1 Heure
Aller à la page 1, 2, 3  Suivante
Page 1 sur 3

 
Sauter vers:  
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


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com