[Sistema] Creep Respawn
+4
^^Accursed^^
WaaR.SiiDe
Bills
lcc
8 participantes
Página 1 de 1
[Sistema] Creep Respawn
Um Sistema basico de Respawn de creep , que "revive" as unidades que morrerão no local onde elas estavão colocadas no mapa e com o mesmo angulo.Vc ainda pode registrar qualquer unidade a qualquer hora dentro do jogo.
Coloquei aqui porq,o unico respawn q tem no forúm usa o custom value das unidades, esse ñ.
Créditos
Vexorian - Por ter criado o VJass
Requires JassHelper
Coloquei aqui porq,o unico respawn q tem no forúm usa o custom value das unidades, esse ñ.
Créditos
Vexorian - Por ter criado o VJass
Requires JassHelper
- Spoiler:
- Código:
library respawn initializer init
globals
private hashtable respawn = InitHashtable()
private unit tempunit
private constant player toplayer = Player(PLAYER_NEUTRAL_AGGRESSIVE) //para quem vai dar respawn
real respawntime = 50. // tempo que levara para recriar a unidade
string sfx = "Abilities\\Spells\\Orc\\FeralSpirit\\feralspiritdone.mdl" // efeito que vai fazer quando reviver unit
endglobals
public function register takes unit u,real x,real y,real a returns nothing
call SaveReal(respawn,GetHandleId(u),1,x)
call SaveReal(respawn,GetHandleId(u),2,y)
call SaveReal(respawn,GetHandleId(u),3,a)
endfunction
private function cod takes nothing returns boolean
return GetOwningPlayer(GetTriggerUnit()) == toplayer and IsUnitType(GetTriggerUnit(), UNIT_TYPE_STRUCTURE) == false and IsUnitType(GetTriggerUnit(),UNIT_TYPE_SUMMONED) == false and IsUnitType(GetTriggerUnit(),UNIT_TYPE_HERO) == false and GetUnitAbilityLevel(GetTriggerUnit(),'Aloc') == 0
endfunction
private function create takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit a = LoadUnitHandle(respawn, GetHandleId(t), 1 )
local unit b = CreateUnit(GetOwningPlayer(a),GetUnitTypeId(a),LoadReal(respawn,GetHandleId(a),1),LoadReal(respawn,GetHandleId(a),2),LoadReal(respawn,GetHandleId(a),3))
call FlushChildHashtable(respawn,GetHandleId(a))
call FlushChildHashtable(respawn,GetHandleId(t))
call RemoveUnit(a)
call register(b,GetUnitX(b),GetUnitY(b),GetUnitFacing(b))
call DestroyEffect(AddSpecialEffect(sfx,GetUnitX(b),GetUnitY(b)))
call DestroyTimer(t)
set t = null
set a = null
set b = null
endfunction
private function act takes nothing returns nothing
local unit c = GetTriggerUnit()
local timer t = CreateTimer()
call SaveUnitHandle(respawn, GetHandleId(t), 1, c)
call TimerStart(t, respawntime, false, function create )
set c = null
set t = null
endfunction
//===========================================================================
private function filter takes nothing returns boolean
return IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false and IsUnitType(GetFilterUnit(),UNIT_TYPE_HERO) == false
endfunction
private function callback takes nothing returns nothing
set tempunit = GetEnumUnit()
call respawn_register(tempunit, GetUnitX(tempunit), GetUnitY(tempunit), GetUnitFacing(tempunit))
set tempunit = null
endfunction
private function init takes nothing returns nothing
local trigger t = CreateTrigger()
local group g = CreateGroup()
local boolexpr filt = Filter ( function filter )
local unit u = null
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( t, Condition( function cod) )
call TriggerAddAction( t, function act )
call GroupEnumUnitsOfPlayer(g,toplayer, filt)
call ForGroup(g, function callback )
call DestroyBoolExpr(filt)
call DestroyGroup(g)
set g = null
set filt = null
endfunction
endlibrary
Última edição por lcc em 2011-02-05, 21:07, editado 2 vez(es)
lcc- Número de Posts : 933
Data de inscrição : 13/07/2010
Reputação : 104 Pontos : 27309
Re: [Sistema] Creep Respawn
Na function init usa ForGroup é mais rapido e fica melhor ja q é uma function de inicialização.
Pra q vc cria uma trigger só pra pegar a handle dela?
Pra q vc cria uma unit pra criar uma copia dela e depois remove-la? O.o
Pra q vc cria uma trigger só pra pegar a handle dela?
Pra q vc cria uma unit pra criar uma copia dela e depois remove-la? O.o
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 32039
Re: [Sistema] Creep Respawn
eu não usei ForGroup() porq eu tava com preguissa de criar uma outra funcion e pra diminuir o tamanho da library , e eu nem usava o init reg. dentro da lib porq eu usava a function register fora dessa lib.
se for local trigger t = CreateTrigger() eu uso isso pra não usa uma variavel global.
Por algum motivo o b desa linha
EDIT: aproveitei que não abri o wow ainda e o notepad++ e mudei pra ForGroup
Aonde?Pra q vc cria uma trigger só pra pegar a handle dela?
se for local trigger t = CreateTrigger() eu uso isso pra não usa uma variavel global.
Vc leu direito? , eu não crio uma unidade para removela eu só carrego a unidade q morreu para pegar os valores dela e limpar os valores da hashatble, copiar ela e remover a unidade morta.
Pra q vc cria uma unit pra criar uma copia dela e depois remove-la
Por algum motivo o b desa linha
- Código:
call register(b,GetUnitX(B),GetUnitY(B),GetUnitFacing(B))
EDIT: aproveitei que não abri o wow ainda e o notepad++ e mudei pra ForGroup
lcc- Número de Posts : 933
Data de inscrição : 13/07/2010
Reputação : 104 Pontos : 27309
Re: [Sistema] Creep Respawn
Cara isso serve para td pq to presisando aprender um sistema assim so que para td sacas? tpw sai os bixo e vai andando ou esses e pra arena que fika parado esperando vim mata?
WaaR.SiiDe- Número de Posts : 28
Data de inscrição : 06/02/2011
Reputação : 1 Pontos : 25193
Re: [Sistema] Creep Respawn
Lcc em vez de usar hashtabe use struct pra memorizar cada creep. Será bem mais simples e o seu system ficará menos, ja q vc quer diminui-lo. Caso não saiba usar struct, dê uma lida no jasshelpermanual que vem na pasta do JNPG. Strcuts são simples e bastante uteis. Qualquer cosia vai no forum e procura meu system de Fear ou então procura nos downloads pelo meu knockback usando struct, ambos são bem faceis de entender.
flw
flw
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 32039
Re: [Sistema] Creep Respawn
Eu sei usar struct , mais se eu usa-las no lugar de uma hashtable o sistema ira requerir outro sistema, e eu não quero usar isso porq esse é so um sitema basic pra quem não sabe nada de jass, eu bem que posso fazer um sistema de indexação no lugar de hashtable, mais vai ficar maior doq já ta.
@WaaR.SiiDe
Oq ele faz ta escrito no primeiro post.
@WaaR.SiiDe
Oq ele faz ta escrito no primeiro post.
lcc- Número de Posts : 933
Data de inscrição : 13/07/2010
Reputação : 104 Pontos : 27309
Re: [Sistema] Creep Respawn
ei, faz um mapa e bota pra download pra eu copia o sistema?
yakuro- Número de Posts : 263
Data de inscrição : 21/02/2011
Reputação : 12 Pontos : 25457
Re: [Sistema] Creep Respawn
n precisa +, ja consigui fazer o respawn
yakuro- Número de Posts : 263
Data de inscrição : 21/02/2011
Reputação : 12 Pontos : 25457
Re: [Sistema] Creep Respawn
Alguem pode pelo amor de deus fazer um tuturial falando onde eu ponho esses codigos ae pra poder funciona no meu mapa ? POR FAVOR!!!!
Agradeço desde ja.
Agradeço desde ja.
Principe Kael- Número de Posts : 10
Data de inscrição : 28/03/2011
Reputação : 1 Pontos : 24919
Re: [Sistema] Creep Respawn
cara para de briga no topico oO
sistema simples bem legal mais aprendi em um video q e bem mais rapido pq se vai venu o cara faze e faz aconselho video mais se quiserem sofrer sofram num so eu memo ;D
sistema simples bem legal mais aprendi em um video q e bem mais rapido pq se vai venu o cara faze e faz aconselho video mais se quiserem sofrer sofram num so eu memo ;D
VeneNoColt- Número de Posts : 909
Data de inscrição : 15/04/2011
Reputação : 16 Pontos : 26772
Tópicos semelhantes
» Creep Respawn... maneira ::C
» [Duvida] Respawn de creep
» [Tutorial] Creep Respawn (GUI)
» [Resolvido] AJUDA Creep Respawn
» [TRIGGERS] Triger de respawn de creep ou unidades
» [Duvida] Respawn de creep
» [Tutorial] Creep Respawn (GUI)
» [Resolvido] AJUDA Creep Respawn
» [TRIGGERS] Triger de respawn de creep ou unidades
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos