Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=928d0f23c949fce0af4dd584b36a9864Mé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

[vJass] Special Effect Utils ( Beta )

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Fonction Jass
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Wareditor
The Master of Nothing


Inscrit le: 22 Déc 2008
Messages: 1638
Sujets: 88
Spécialité en worldedit: Effacer


MessagePosté le: 25/05/12 22:09    Sujet du message: [vJass] Special Effect Utils ( Beta ) Citer

Nom de la fonction : Special Effect Utils
Créateur : wareditor
Fonctions requises : TimerUtils

Secret:

Jass:
//===========================================================================
// SPECIAL EFFECT`UTILS v 0.2 BETA By wareditor - 28 / 05 / 12
//===========================================================================
//
//  AIM :
//
//      * Help you in using special effect functions
//      * Providing some cool effect
//
//  API :
//
//      FUNCTIONS :
//      * call CreateSpecialEffect( modelName, x, y)
//          - Instantly destroy the effect to remove all the leak, however the effect is played.
//            But certains effect won't appear, because they need need time, use the Timed version then.
//
//      * call CreateSpecialEffectTimed( modelName, x, y, time)
//          - Will destroy the effect after the time
//
//      * call CreateSpecialEffectOnTargetTimed( modelName, targetWidget, attachPointName, time)
//          - Wille destroy the effect after the time
// 
//      * call ApplyUltraBlood(x,y)
//          - Create a large spray of blood
//
//      METHODS :
//      * call TurningCreatingEffect.create( modelName, targetWidget, radius, speedAngle, defaultAngle, timeout, time)
//          - Create a Special Effect ( like with CreateSpecialEffect ) every timeout around the widget during time
//
//
//  COMMENTARY :
//
//      * Please give credits
//
//  REQUIRES :
//
//      * TimerUtils(Ex) - Vexorian, Bribe & Magtheridon96 -
//          ( ... )
//
//
//===========================================================================
// Enjoy
//===========================================================================

library SpecialEffectUtils requires TimerUtils
   
    //===========================================================================
    // STRUCT - TCF
    //===========================================================================
   
    struct TurningCreatingEffect
   
        private widget targetWidget
        private string modelName
        private real radius
        private real actualAngle
        private real speedAngle
        private real time
        private real timeout
       
        private static method applyTurn takes nothing returns nothing
       
            local timer t = GetExpiredTimer()
            local thistype this = GetTimerData(t)
            local real x
            local real y
           
            set this.actualAngle = this.actualAngle + this.speedAngle
            set x = GetWidgetX(targetWidget) + this.radius*Cos(this.actualAngle*bj_DEGTORAD)
            set y = GetWidgetY(targetWidget) + this.radius*Sin(this.actualAngle*bj_DEGTORAD)
            call DestroyEffect(AddSpecialEffect(this.modelName, x, y))
           
            set this.time = this.time - this.timeout
            if this.time <= 0 then
                call ReleaseTimer(t)
                call this.destroy()
            endif
       
        endmethod
   
        static method create takes string modelName,  widget targetWidget, real radius, real speedAngle, real defaultAngle, real timeout, real time returns thistype
       
            local thistype this = thistype.allocate()
            local real x
            local real y
           
            set this.modelName = modelName
            set this.targetWidget = targetWidget
            set this.radius = radius
            set this.speedAngle = speedAngle
            set this.actualAngle = defaultAngle
            set this.time = time
            set this.timeout = timeout
           
            set x = GetWidgetX(targetWidget) + radius*Cos(defaultAngle*bj_DEGTORAD)
            set y = GetWidgetY(targetWidget) + radius*Sin(defaultAngle*bj_DEGTORAD)
            call DestroyEffect(AddSpecialEffect(modelName, x, y))
           
            call TimerStart(NewTimerEx(this), timeout, true, function thistype.applyTurn )
           
            return this
       
        endmethod
   
    endstruct
   
    //===========================================================================
    // STRUCT - TE
    //===========================================================================
   
    struct TimedEffect
       
        private effect specialEffect
       
        private static method remove takes nothing returns nothing
       
            local timer t = GetExpiredTimer&#40;)
            local thistype this = GetTimerData&#40;t)
           
            call DestroyEffect&#40;this.specialEffect)
            call ReleaseTimer&#40;t)
       
        endmethod
       
        static method create takes effect eff, real time returns thistype
       
            local thistype this = thistype.allocate&#40;)
           
            set this.specialEffect = eff
            call TimerStart&#40;NewTimerEx&#40;this), time, false, function thistype.remove)
           
            return this
       
        endmethod
   
    endstruct
   
    //===========================================================================
    // FUNCTIONS
    //===========================================================================

    function CreateSpecialEffect takes string modelName, real x, real y returns nothing
        call DestroyEffect&#40;AddSpecialEffect&#40;modelName, x, y))
    endfunction
   
    function CreateSpecialEffectTimed takes string modelName, real x, real y, real time returns nothing
        call TimedEffect.create(AddSpecialEffect(modelName, x, y), time)
    endfunction
   
    function CreateSpecialEffectOnTargetTimed takes string modelName, widget targetWidget, string attachPointName, real time returns nothing
        call TimedEffect.create(AddSpecialEffectTarget(modelName, targetWidget, attachPointName), time)
    endfunction
   
    //===========================================================================
    // VARIOUS CUSTOM FUNCTIONS
    //===========================================================================

    function ApplyUltraBlood takes real x, real y returns nothing
       
        call CreateSpecialEffect("Objects\\Spawnmodels\\Orc\\Orcblood\\BattrollBlood.mdl", x, y)
        call CreateSpecialEffect("Objects\\Spawnmodels\\Orc\\Orcblood\\OrcBloodHellScream.mdl", x, y)
        call CreateSpecialEffect("Objects\\Spawnmodels\\Human\\HumanLargeDeathExplode\\HumanLargeDeathExplode.mdl", x, y)
        call CreateSpecialEffect("Objects\\Spawnmodels\\Orc\\OrcSmallDeathExplode\\OrcSmallDeathExplode.mdl", x, y)
        call CreateSpecialEffect("Objects\\Spawnmodels\\Undead\\UndeadLargeDeathExplode\\UndeadLargeDeathExplode.mdl", x, y)
        call CreateSpecialEffect("Objects\\Spawnmodels\\NightElf\\NightElfLargeDeathExplode\\NightElfLargeDeathExplode.mdl", x, y)
        call CreateSpecialEffect("Objects\\Spawnmodels\\Other\\BeastmasterBlood\\BeastmasterBlood.mdl", x, y)
        call CreateSpecialEffect("Objects\\Spawnmodels\\Critters\\Albatross\\CritterBloodAlbatross.mdl", x, y)
        call CreateSpecialEffect("Objects\\Spawnmodels\\Orc\\Orcblood\\HeroShadowHunterBlood.mdl", x, y)
        call CreateSpecialEffect("Objects\\Spawnmodels\\NightElf\\NightElfBlood\\NightElfBloodChimaera.mdl", x, y)
        call CreateSpecialEffect("Objects\\Spawnmodels\\NightElf\\NightElfBlood\\NightElfBloodHippogryph.mdl", x, y)
       
    endfunction   

endlibrary
//===========================================================================
// CONTACT ME AT : Wareditor.TFL[AT]gmail.com
//===========================================================================



Utilisation : lisez l'API
Copyright : Comme vous voulez
Remarques : Savez vous comment on sait si un effect s'affiche si on le détruit directement ?
_________________


Dernière édition par Wareditor le 28/05/12 17:27; édité 6 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 25/05/12 22:14    Sujet du message: Citer

Ça me fait penser à la librairie que j'avais posté il y a deux mois Rolling Eyes.
Mais bon, c'est pas plus mal, parce que celle que j'avais faîte n'était pas super bien codée. Faudra que je m'y remette.
Sinon, bah c'est très utile Wink.

Edit :
Wareditor a écrit:
Savez vous comment on sait si un effect s'affiche si on le détruit directement ?

Bah faut qu'il ait une animation de mort non?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Wareditor
The Master of Nothing


Inscrit le: 22 Déc 2008
Messages: 1638
Sujets: 88
Spécialité en worldedit: Effacer


MessagePosté le: 25/05/12 22:20    Sujet du message: Citer

J'ai justement vue ta lib' Smile . Elle se base plus sur les effets sur les unités. La mienne est juste une utils qui permet surtout de créé des effets sans leak.

En fait tu m'a répondu mais sans dire la bonne réponse. Je crois que si l'animation de mort est présente l'effet ne sera pas afficher des qu'on le detruit. Je me trompe ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 25/05/12 22:28    Sujet du message: Citer

Oui, en effet, après un petit test sur wc3 viewer, c'est pas aussi simple que ça... Je m'y connait pas assez dans ce genre de truc, désolé :/.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Wareditor
The Master of Nothing


Inscrit le: 22 Déc 2008
Messages: 1638
Sujets: 88
Spécialité en worldedit: Effacer


MessagePosté le: 26/05/12 12:23    Sujet du message: Citer

Mise a jour :
utilise maintenant TimerUtils
_________________
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/05/12 14:00    Sujet du message: Citer

Mouahaha, le savoir-faire artisanal de Troll-Brain vaincu par la multinationale Vexorian.


_________________
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é
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
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/05/12 14:09    Sujet du message: Citer

Pour ma défense je me suis sabré tout seul par mp

Je lui ai simplement expliqué qu'utiliser une ressource envoyé au cimetière était une très mauvaise idée.
Puis comme tu le sais et l'explique si bien la seule raison de son enterrement est la popularité de TimerUtils, ni plus, ni moins.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Vladadamm
Floodozaurus


Inscrit le: 11 Fév 2011
Messages: 2151
Sujets: 114
Spécialité en worldedit: Chasser le Dragon, puis l'exterminer proprement avec une petite cuillère et une poêle.


MessagePosté le: 26/05/12 14:09    Sujet du message: Citer

De toute façon le Made in France est toujours surpassé par le Made in OtherCountry.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
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/05/12 14:11    Sujet du message: Citer

Vladadamm a écrit:
De toute façon le Made in France est toujours surpassé par le Made in OtherCountry.


Tout dépend le domaine ...
En gastronomie par ex on se défend bien.

Arrêtez avec vos généralités qui ne veulent rien dire.
_________________
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/12 14:43    Sujet du message: Citer

Tirlititi a écrit:
Mouahaha, le savoir-faire artisanal de Troll-Brain vaincu par la multinationale Vexorian.



xD j'ai rit en lisant ça !!

qui a publié sa fonction Timer en premier ? vexorian ou tb ?
y-a-t-il une différence entre les deux ?
(oui chuis hs mais bon j'ai rien à dire sur sa fonction, j'ai pas le niveau de critiquer)
_________________
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
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7143
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/05/12 17:51    Sujet du message: Citer

Y'a rien de révolutionnaire, c'est juste que Vexorian nous a quitté et que toute façon il n'a jamais été prompt à éditer ses ressources vJass.
Et puis bon globalement c'est simplement une stack de timer ...

TimerUtils a été écrit bien avant, et en gros c'est comme la version blue mais en "mieux".
Ma library ne permet par contre pas de changer de versions, il n'y en a qu'une seule.
Flemme de développer plus.

Fin du HS en ce qui me concerne.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Wareditor
The Master of Nothing


Inscrit le: 22 Déc 2008
Messages: 1638
Sujets: 88
Spécialité en worldedit: Effacer


MessagePosté le: 28/05/12 17:22    Sujet du message: Citer

Mise a jour :
* Optimisation pour les Timed Effect ( j'avais vraiment fait un truc bizarre )
* Ajout d'une method : TurningCreatingEffect. Cette method permet de crée un effet tout les x temps autour d'un widget pédant y temps. Cette effet de ne tourne pas, il se crée plusieurs fois autour du widget, la position de création, elle, tourne.
_________________
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 -> Fonction Jass Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
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