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

ExecuteSoon
Aller à la page 1, 2  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
 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: 28/08/09 17:45    Sujet du message: ExecuteSoon Citer

Jass:
library ExecuteSoon initializer init

globals
    private constant integer MAX_TIMERS = 64
endglobals

globals
    private timer array Tim
    private integer I = 0
endglobals

function ExecuteSoon takes code func, integer data returns nothing
    set I = I-1
    call TimerStart(Tim[I],-data,false,func)
endfunction

public function GetData takes nothing returns integer
    set I = I+1
    return R2I(-TimerGetTimeout(GetExpiredTimer()))
endfunction

private function init takes nothing returns nothing
   
    loop
    exitwhen I == MAX_TIMERS
   
        set Tim[I] = CreateTimer()
        set I = I+1
   
    endloop
endfunction

endlibrary


C'est le fruit de mon ennui actuel et de mes balades sur les forums consacrés à l'éditeur.

Voilà les prémisces :
- Une discussion avec Max
- un système que j'avais déjà vu
- et enfin un post tentant de trouver une alternative pour lier un entier à un timer.

Remarque :


Il faut créer via la constante MAX_TIMERS un nombre suffisant de timers, 256 devrait être largement suffisant, voir irréaliste.

Ex d'utilisation :

Jass:
scope Test initializer init

private struct s_data
    unit u

    static method create takes nothing returns thistype
        local thistype this = .allocate()
        set .u = GetOrderedUnit()
        return this
    endmethod
   
    method onDestroy takes nothing returns nothing
        set .u = null
    endmethod
   
endstruct



private function StopPointOrders takes nothing returns nothing
    local s_data s = ExecuteSoon_GetData()
    call IssueImmediateOrder(s.u,"stop")
    call s.destroy()
   
endfunction

private function Actions takes nothing returns nothing
    call ExecuteSoon(function StopPointOrders,s_data.create)
endfunction


private function init takes nothing returns nothing
    local trigger trig = CreateTrigger()
   
    call TriggerRegisterAnyUnitEventBJ(trig,EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER)
    call TriggerAddAction(trig,function Actions)
endfunction

endscope

_________________
Le violet, c'est moche.


Dernière édition par Troll-Brain le 31/08/09 21:13; édité 4 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Brissou de Mourièssou
Créateur de sorts, depuis 1936.


Inscrit le: 30 Aoû 2007
Messages: 1511
Sujets: 26
Spécialité en worldedit: Développer des jeux vidéos pour le fun, donc world edit c'est comme faire une addition.
Médailles: 2 (En savoir plus...)
Créateur de héros (Quantité : 1) Concours de sorts amusants (Quantité : 1)

MessagePosté le: 28/08/09 19:14    Sujet du message: Citer

Et en gros ça sert à ? Exécuter une action dans 0.001 seconde
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
 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: 28/08/09 19:25    Sujet du message: Citer

Brissou de Mourièssou a écrit:
Et en gros ça sert à ? Exécuter une action dans 0.001 seconde

Non, c'est 0.0001 seconde Razz
C'est utile avec certain events.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Rommstein60
MODÉRATEUR À LA RETRAITE


Inscrit le: 23 Aoû 2007
Messages: 4767
Sujets: 136
Spécialité en worldedit: Keskesapeutfout'
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 28/08/09 19:31    Sujet du message: Citer

Tu peux donner un exemple concret de cas où ce système peut s'avérer utile stp ? Mr. Green
_________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain »
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: 28/08/09 19:34    Sujet du message: Citer

Rommstein60 a écrit:
Tu peux donner un exemple concret de cas où ce système peut s'avérer utile stp ? Mr. Green

Essaye de donner un ordre sans cible, quand une unité vient de recevoir un ordre avec point/objet pour cible.
C'est ce que fait l'ex que j'ai donné.

Y'a des events d'item aussi il me semble, du genre l'event une unité achète un objet se déclenche mais l'objet n'est pas encore dans l'inventaire (à tester).
Et c'est certain qu'il y a d'autres events du genre.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

Médailles: 1 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 28/08/09 19:53    Sujet du message: Citer

Ca ne devrait pas être dans la section fonction Jass ?
_________________
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: 28/08/09 19:58    Sujet du message: Citer

Bantas a écrit:
Ca ne devrait pas être dans la section fonction Jass ?

C'est trop restrictif comme utilisation, faut définir correctement la constant, et utiliser correctement la fonction ExecuteSoon_End, et surtout ne pas oublier de l'appeler dans le callback du timer.

TimerUtils est plus facile d'utilisation, mais devrait être moins performant.

Je ne veux pas imposer mon ugly standard de speed freak, surtout pour ne pas donner de mauvais habitudes aux novices, mais ca n'empêche que je désire quand même faire part de mes découvertes/créations Wink
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Profet (Quantité : 1)

MessagePosté le: 28/08/09 20:23    Sujet du message: Citer

Un appel vers une fonction avec un .execute() ne suffit pas ?
_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 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: 28/08/09 20:36    Sujet du message: Citer

profet a écrit:
Un appel vers une fonction avec un .execute() ne suffit pas ?

Non Sad
_________________
Le violet, c'est moche.
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: 30/08/09 20:54    Sujet du message: Citer

Comme on me l'a fait remarqué la fonction End est inutile, je peux compléter la fonction GetData à la place.
Code édité dans le premier post.
_________________
Le violet, c'est moche.
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: 31/08/09 19:03    Sujet du message: Citer

Toujours comme on me l'a fait remarqué, le set de la variable timer array est inutile en dehors de l'initializer.
Je le faisais car je croyais que parfois des timers à la même période lancés en même temps pouvaient ne pas s'achever dans l'ordre où ils étaient lancés.
Ce qui s'avère inexact après un rapide test.

A savoir que cela a été envoyé au cimetière sur www.thehelper.net, mais en même temps venant de Jesus4Lyf je m'y attendais, dire que ca ne me touche pas serait faux, sinon je n'en parlerais même pas, mais bon c'est un marchand de tapis qui défend ses codes envers et contre tous les autres, et qui "oublie" de mentionner les points négatifs des siens, quitte à faire de la démagogie, pond des affirmations sans aucune preuve, et tarde à mettre au cimetière ses propres codes inutiles.

Bref vous aurez compris, je l' <3

Erf c'est bien du flood ...
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 profet
Instanton Gravitationnel Singulier


Inscrit le: 21 Aoû 2007
Messages: 1633
Sujets: 53
Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...)
Médailles: 2 (En savoir plus...)
Profet (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 31/08/09 19:18    Sujet du message: Citer

Jass:

private function Actions takes nothing returns nothing
    local s_data s = s_data.create()
    call ExecuteSoon(function StopPointOrders,s)
endfunction


en plus "speedfreak" :

Jass:

private function Actions takes nothing returns nothing
    call ExecuteSoon(function StopPointOrders,s_data.create())
endfunction

_________________

Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Brissou de Mourièssou
Créateur de sorts, depuis 1936.


Inscrit le: 30 Aoû 2007
Messages: 1511
Sujets: 26
Spécialité en worldedit: Développer des jeux vidéos pour le fun, donc world edit c'est comme faire une addition.
Médailles: 2 (En savoir plus...)
Concours de sorts amusants (Quantité : 1) Créateur de héros (Quantité : 1)

MessagePosté le: 31/08/09 19:40    Sujet du message: Citer

Osef de theHelper nous on l'utilisera ! On ne le mettra pas au cimetière mais on le gardera dans notre <3

Edit: pour te venger tu peux lui dire qu'il y a un bug avec sa librairie Damage

Jass:
public function IsPhysical takes nothing returns boolean
        return GetType()==DAMAGE_TYPE_NORMAL
    endfunction


DAMAGE_TYPE_NORMAL c'est des dégâts magiques, pas du tout des dégâts physique, j'ai testé samedi dernier...

C'est d'ailleurs marqué ici Jass API, j'avais quand même testé pour être sûr et d'ailleurs DAMAGE_TYPE_UNKNOWN ne touche pas les invulnérables...
_________________


Dernière édition par Brissou de Mourièssou le 31/08/09 19:52; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
 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: 31/08/09 19:51    Sujet du message: Citer

@ profet : Ouai j'y avais pensé, mais bon y'a toujours plus speed freak si on veut ^^
Par ex ici on pourrait utiliser une variable integer et une array qui servirait d'index et recoder en quelque sorte une struct basique se contentant d'incrémenter/décrémenter l'index.

@Brissou : t'es vraiment lolant quand tu t'y mets Very Happy
_________________
Le violet, c'est moche.


Dernière édition par Troll-Brain le 31/08/09 19:54; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Brissou de Mourièssou
Créateur de sorts, depuis 1936.


Inscrit le: 30 Aoû 2007
Messages: 1511
Sujets: 26
Spécialité en worldedit: Développer des jeux vidéos pour le fun, donc world edit c'est comme faire une addition.
Médailles: 2 (En savoir plus...)
Concours de sorts amusants (Quantité : 1) Créateur de héros (Quantité : 1)

MessagePosté le: 31/08/09 19:53    Sujet du message: Citer

C'était une paire de fesses pas un coeur ! omg j'espère que tu n'as pas confondu.

(C'est juste pour up et que tu voyes l'édit)
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
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  Suivante
Page 1 sur 2

 
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