Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Geronimo Membre récent
Inscrit le: 11 Mar 2010 Messages: 91 Sujets: 32
|
|
Revenir en haut |
|
|
DaKanibal Membre a fort taux de post
Inscrit le: 12 Sep 2009 Messages: 801 Sujets: 64 Spécialité en worldedit: Ne pas.
|
Posté le: 03/09/10 17:57 Sujet du message: |
|
|
Tu les mets dans des variables... _________________
||**|| |
|
Revenir en haut |
|
|
Geronimo Membre récent
Inscrit le: 11 Mar 2010 Messages: 91 Sujets: 32
|
|
Revenir en haut |
|
|
Kami-BlackHawk Membre actif
Inscrit le: 14 Oct 2007 Messages: 110 Sujets: 17 Spécialité en worldedit: Créer des fatals errors :O
|
Posté le: 03/09/10 22:02 Sujet du message: |
|
|
Evidemment si tu mets 1500 units sur la map, je te conseille d'activer les units par région, et d'en faire des un peu plus solide plutôt que des très nombreuses. _________________
Le faucon surveille les vrais cons. |
|
Revenir en haut |
|
|
Geronimo Membre récent
Inscrit le: 11 Mar 2010 Messages: 91 Sujets: 32
|
|
Revenir en haut |
|
|
Nerzulll Floodeur prématuré
Inscrit le: 30 Jan 2009 Messages: 669 Sujets: 56 Spécialité en worldedit: Faire des bug Médailles: 1 (En savoir plus...)
|
Posté le: 04/09/10 11:00 Sujet du message: |
|
|
Ouais, ou alors tu reprend les systèmes que j'ai expliqué dans les exemples d'avant. A savoir un trigger qui se déclenche toute les 1s, et qui enlève à une variable sauvegardé dans l'ID de l'unité -1. Et quand cette variable arrive à 0, alors tu recréer ton unité.
Quand tu ne peux pas le faire avec les actions de Blizzard, créé toi même tes timers et autre. _________________
|
|
Revenir en haut |
|
|
Geronimo Membre récent
Inscrit le: 11 Mar 2010 Messages: 91 Sujets: 32
|
|
Revenir en haut |
|
|
Wareditor The Master of Nothing
Inscrit le: 22 Déc 2008 Messages: 1638 Sujets: 88 Spécialité en worldedit: Effacer
|
Posté le: 05/09/10 21:50 Sujet du message: |
|
|
Je te conseille un spawn quand l'unit rentre dans une region. _________________
|
|
Revenir en haut |
|
|
Geronimo Membre récent
Inscrit le: 11 Mar 2010 Messages: 91 Sujets: 32
|
|
Revenir en haut |
|
|
jk2pach Invité
|
Posté le: 06/09/10 10:54 Sujet du message: |
|
|
Si tu te mets au Vjass, un petit exemple d'utilisation des timers.
Je fais ça sans l'éditeur,désolé pour les éventuelles erreurs. C'est juste pour que tu comprennes les principes.
Jass: | library CreepsRepop needs AutoIndex, TimerUtils
//Autoindex et timerutils sont des libraries disponibles sur wc3.net
globals
private constant real WAIT_TIME = 30.//temps avant respawn
private constant real WAIT_RANDOM = 5.//pour que ca ne soit pas systématiquement 30 secondes.
endglobals
private struct s_delay//comme un hashtable, en VJass (un peu différent)
integer victimId
player owner
real x
real y
endstruct
private function Respawn takes unit victim returns nothing
local timer t = GetExpiredTimer() //le timer expiré
local s_delay dat = GetTimerData(t) //on récupère les données attachées au timer par la struct
call CreateUnit(dat.owner,dat.victimId,dat.x,dat.y,GetRandomReal(0.,360.)
call ReleaseTimer(t) //on recycle le timer
call dat.destroy()//on détruit la struct
endfunction
private function StartRespawn takes unit victim returns nothing
local timer t = NewTimer()//on lance un timer
local s_delay dat = s_delay.create()//on créé une struct (genre de variable stockant d'autres variables)
set dat.victimId = GetUnitTypeId(victim)
set dat.x = GetUnitX(victim)
set dat.y = GetUnitY(victim)
set dat.owner = GetOwningPlayer(victim)
call SetTimerData(t,dat)//on attribue la struct au timer
call TimerStart(t,WAIT_TIME+GetRandomReal(-WAIT_RANDOM,WAIT_RANDOM), function Respawn)//on lance le temps d'attente
endfunction
private function RepopCreeps takes nothing returns boolean
local unit victim = GetTriggerUnit()
if GetOwningPlayer(victim)==Player(PLAYER_NEUTRAL_AGGRESSIVE) then // ou tout autre joueur
call StartRespawn(victim)
endif
set victim = null
return false
endfunction
private struct s_Creeps
trigger trig = null
private method onCreate takes nothing returns nothing
set this.trig = CreateTrigger()
call TriggerRegisterUnitEvent(this.trig,me, EVENT_UNIT_DEATH )
call TriggerAddCondition(this.trig, Condition(function RepopCreeps))
endif
endmethod
implement AutoCreate
private method onDestroy takes nothing returns nothing
call DisableTrigger(.trig)
call DestroyTrigger(.trig)
set .trig = null
endmethod
implement AutoDestroy
endstruct
endlibrary
|
Version sans passer par AutoIndex (qui te permet de créer autant de triggers que d'unités et de les détruire), avec un trigger tout bête qui se déclenchera pour la mort de toute unité.
Jass: | library CreepsRepop initializer init needs TimerUtils
//Autoindex et timerutils sont des libraries disponibles sur wc3.net
globals
private constant real WAIT_TIME = 30.//temps avant respawn
private constant real WAIT_RANDOM = 5.//pour que ca ne soit pas systématiquement 30 secondes.
endglobals
private struct s_delay//comme un hashtable, en VJass (un peu différent)
integer victimId
player owner
real x
real y
endstruct
private function Respawn takes unit victim returns nothing
local timer t = GetExpiredTimer() //le timer expiré
local s_delay dat = GetTimerData(t) //on récupère les données attachées au timer par la struct
call CreateUnit(dat.owner,dat.victimId,dat.x,dat.y,GetRandomReal(0.,360.)
call ReleaseTimer(t) //on recycle le timer
call dat.destroy()//on détruit la struct
endfunction
private function StartRespawn takes unit victim returns nothing
local timer t = NewTimer()//on lance un timer
local s_delay dat = s_delay.create()//on créé une struct (genre de variable stockant d'autres variables)
set dat.victimId = GetUnitTypeId(victim)
set dat.x = GetUnitX(victim)
set dat.y = GetUnitY(victim)
set dat.owner = GetOwningPlayer(victim)
call SetTimerData(t,dat)//on attribue la struct au timer
call TimerStart(t,WAIT_TIME+GetRandomReal(-WAIT_RANDOM,WAIT_RANDOM), function Respawn)//on lance le temps d'attente
endfunction
private function RepopCreeps takes nothing returns boolean
local unit victim = GetTriggerUnit()
if GetOwningPlayer(victim)==Player(PLAYER_NEUTRAL_AGGRESSIVE) then // ou tout autre joueur
call StartRespawn(victim)
endif
set victim = null
return false
endfunction
private function init takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddCondition(t,Condition(function RepopCreeps ))
endfunction
endlibrary
|
_________________
|
|
Revenir en haut |
|
|
|