[Sistema] GUI SpellEvent
5 participantes
Página 1 de 1
[Sistema] GUI SpellEvent
Primeiramente devo informar que não sou o criador desse sistema, estou apenas divulgando-o. Os créditos por esse sistema devem ser dados ao Mag (um membro muito gente fina do THW).
O que é SpellEvent?
SpellEvent é um sistema escrito em vjass pelo bribe (outro membro do THW, porem esse não é gente fina). Esse sistema é atualmente usado em qualquer mapa que se preze.
Quando criamos spells, precisamos registrar um evento para saber quando uma magia foi usada. Geralmente em um mapa grande, uma spell terá 12 eventos (um para cada player). Imagine um mapa com umas 200 spells em trigger, seriam 2400 (12 * 200) eventos registrados. O que isso tem haver? Tem haver que quando uma spell fosse usada seriam 2400 chamadas de evento, mas apenas as condições e ações da expecifica spell seriam realmente executadas.
Para evitar esse uso excessivo do sistema, o SpellEvent gera apenas 16 eventos para "todas" as spell. Assim quando uma spell for usada, apenas as condições e ações dela serão realmente chamadas.
Vendo que isso mostra ser uma grande vantagem para todos os mapas, o Mag criou uma versão desse sistema em GUI.
O que eu ganho com isso? Seu mapa terá um desempenho muito maior, pode apostar.
Como usar o SpellEvent em GUI?
Primeiramente vá no THW e baixe o MAPA com o sistema.
Depois, abra o mapa no world editor e copie a trigger "GUI SpellEvent" para o seu mapa.
Atenção: Certifique-se que a opção "Automatically create unknown variables while pasting trigger data" está marcada em "Preferences...".
Feito isso, o sistema está quase pronto para funcionar. Precisamos agora só configurar as spells. Para configurar suas spells, crie um trigger com o evento "Map Initialization" para podermos setar todas as spell e suas respectivas triggers. Veja o exemplo:
Quando já estiver terminado de configurar todas suas spells, adicione no final dessa trigger a action "Trigger - Run (ignoring conditions)" e escolha o trigger "GUI SpellEvent". Não se esqueça de remover os eventos e condições das suas spells, pois você não precisa mais deles. Agora quem controlará os eventos de spells será esse sistema. Feito tudo isso, o sistema estará configurado e pronto para uso.
Coisas que você deve saber:
- Não registre mais que uma trigger por spell.
- Tenha certeza que a trigger GUI SpellEvent foi executada apenas uma vez.
- Não toque nas custom scripts, se não tiver certeza do que está fazendo.
O uso desse sistema é altamente recomendado por mim e pelo THW.
Até a próxima galera!
O que é SpellEvent?
SpellEvent é um sistema escrito em vjass pelo bribe (outro membro do THW, porem esse não é gente fina). Esse sistema é atualmente usado em qualquer mapa que se preze.
Quando criamos spells, precisamos registrar um evento para saber quando uma magia foi usada. Geralmente em um mapa grande, uma spell terá 12 eventos (um para cada player). Imagine um mapa com umas 200 spells em trigger, seriam 2400 (12 * 200) eventos registrados. O que isso tem haver? Tem haver que quando uma spell fosse usada seriam 2400 chamadas de evento, mas apenas as condições e ações da expecifica spell seriam realmente executadas.
Para evitar esse uso excessivo do sistema, o SpellEvent gera apenas 16 eventos para "todas" as spell. Assim quando uma spell for usada, apenas as condições e ações dela serão realmente chamadas.
Vendo que isso mostra ser uma grande vantagem para todos os mapas, o Mag criou uma versão desse sistema em GUI.
O que eu ganho com isso? Seu mapa terá um desempenho muito maior, pode apostar.
Como usar o SpellEvent em GUI?
Primeiramente vá no THW e baixe o MAPA com o sistema.
Depois, abra o mapa no world editor e copie a trigger "GUI SpellEvent" para o seu mapa.
Atenção: Certifique-se que a opção "Automatically create unknown variables while pasting trigger data" está marcada em "Preferences...".
Feito isso, o sistema está quase pronto para funcionar. Precisamos agora só configurar as spells. Para configurar suas spells, crie um trigger com o evento "Map Initialization" para podermos setar todas as spell e suas respectivas triggers. Veja o exemplo:
Quando já estiver terminado de configurar todas suas spells, adicione no final dessa trigger a action "Trigger - Run (ignoring conditions)" e escolha o trigger "GUI SpellEvent". Não se esqueça de remover os eventos e condições das suas spells, pois você não precisa mais deles. Agora quem controlará os eventos de spells será esse sistema. Feito tudo isso, o sistema estará configurado e pronto para uso.
Coisas que você deve saber:
- Não registre mais que uma trigger por spell.
- Tenha certeza que a trigger GUI SpellEvent foi executada apenas uma vez.
- Não toque nas custom scripts, se não tiver certeza do que está fazendo.
O uso desse sistema é altamente recomendado por mim e pelo THW.
Até a próxima galera!
Última edição por Bills em 2012-05-01, 15:02, editado 1 vez(es)
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 31139
Re: [Sistema] GUI SpellEvent
Deixe-me ver se eu entendi
esse sistema simplismente transforma as 2000 triggers que eu tenho no mapa em 16? O.o,isso sim é legal.
esse sistema simplismente transforma as 2000 triggers que eu tenho no mapa em 16? O.o,isso sim é legal.
Tamires- Número de Posts : 487
Data de inscrição : 09/01/2012
Reputação : 27 Pontos : 25398
Re: [Sistema] GUI SpellEvent
Sim, isso mesmo. Mas que legal, é expetacular que o mag tenha feito para poder ser usado em GUI também. =)
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 31139
Re: [Sistema] GUI SpellEvent
eu sei que systema em si reponde parte da minha pergunta mais, isso melhoraria o caso da criação de variaveis globais trigger certo?
mas o que eu queria saber é, qual o mais rapido, hashtable ou variaveis locais trigger?
por que a informação que eu tenho é que em gui variaveis trigger nao sao destruidas, aumentando a memoria usada e hashtable sao relativamente lentas, mas teria o msm beneficio (to levando em conta apenas a velocidade e nao a praticidade)
usar
local trigger t = CreateTrigger()
blablabla
set t = null
e usar o sistema com hashtable?
mas o que eu queria saber é, qual o mais rapido, hashtable ou variaveis locais trigger?
por que a informação que eu tenho é que em gui variaveis trigger nao sao destruidas, aumentando a memoria usada e hashtable sao relativamente lentas, mas teria o msm beneficio (to levando em conta apenas a velocidade e nao a praticidade)
usar
local trigger t = CreateTrigger()
blablabla
set t = null
e usar o sistema com hashtable?
Re: [Sistema] GUI SpellEvent
Variaveis são mais rapidas que hashtable, por que hashtable sempre tem que fazer um calculo para chegar no indice desejado.
Variaveis em gui são todas globais, por isso não podem ser destruidas. Elas existiram até o fim da execução do mapa.
Quando vc faz
Voce apenas fez com que a variavel local não armazenasse nada. Mas o trigger ( o que pesa na memoria ainda existe). Em muitos sistemas costumamos usar hashtable pela vantagem dos dois indices e por ela armazenar qualquer numero (respeitando o máximo de um integer, que é pouco mais de 2 bilhões). Aqueles raw codes das habilidades ('A000' por exemplo) são numeros de 10 digitos geralmente e a hashtable nos permite armazenar esses numeros como indices (no caso esse foi o motivo do Mag usar hashtable).
Variaveis em gui são todas globais, por isso não podem ser destruidas. Elas existiram até o fim da execução do mapa.
Quando vc faz
- Código:
local trigger t = CreateTrigger()
...
set t = null
Voce apenas fez com que a variavel local não armazenasse nada. Mas o trigger ( o que pesa na memoria ainda existe). Em muitos sistemas costumamos usar hashtable pela vantagem dos dois indices e por ela armazenar qualquer numero (respeitando o máximo de um integer, que é pouco mais de 2 bilhões). Aqueles raw codes das habilidades ('A000' por exemplo) são numeros de 10 digitos geralmente e a hashtable nos permite armazenar esses numeros como indices (no caso esse foi o motivo do Mag usar hashtable).
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 31139
Re: [Sistema] GUI SpellEvent
o que exatamente aconteceria neste caso?
e a na memoria, destruindo a trigger o pesa ainda fica? (acho q nao, pq nao teria sentido o comando)
- Código:
local trigger t = CreateTrigger()
...
call DestroyTrigger(t)
e a na memoria, destruindo a trigger o pesa ainda fica? (acho q nao, pq nao teria sentido o comando)
Re: [Sistema] GUI SpellEvent
Iky escreveu:o que exatamente aconteceria neste caso?a trigger aconteceria apenas uma vez? se sim, tem como cria-la novamente?
- Código:
local trigger t = CreateTrigger()
...
call DestroyTrigger(t)
e a na memoria, destruindo a trigger o pesa ainda fica? (acho q nao, pq nao teria sentido o comando)
O trigger seria criado e destruido, nem tempo dele ser usado teria.
Quando você usa DestroyTrigger voce destroi apenas o trigger, as actions e conditions ainda continuam ocupando memória. Para remover um trigger de maneira correta, voce deve usar TriggerClearActions e TriggerClearConditions e só depois usar DestroyTrigger. Mesmo destruindo a informação voce ainda tem que setar a variavel local com null.
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 31139
Re: [Sistema] GUI SpellEvent
Nñ entendi uma parte, pq tem que retirar os eventos das triggers ?
DeathYou- Número de Posts : 136
Data de inscrição : 23/05/2010
Reputação : 4 Pontos : 25859
Re: [Sistema] GUI SpellEvent
por causa da enorme quantidade de triggers de mesma condition que podem ser evitados
@bills obrigado, +
off
me deu a ideia de tentar (TENTAR) fazer um systema gui para remoção de triggers
@bills obrigado, +
off
me deu a ideia de tentar (TENTAR) fazer um systema gui para remoção de triggers
Última edição por Iky em 2012-05-01, 14:45, editado 1 vez(es)
Re: [Sistema] GUI SpellEvent
tenho algumas duvidas:
1- minhas spells estão sendo feitas em MUI eu preciso ou tenho alguma vantagem de usar este system?
2- aquela parte "coisas que voce deve saber" voce pode dar uma explicação mais detalhada?
1- minhas spells estão sendo feitas em MUI eu preciso ou tenho alguma vantagem de usar este system?
2- aquela parte "coisas que voce deve saber" voce pode dar uma explicação mais detalhada?
ArthusBehemoth- Número de Posts : 1061
Data de inscrição : 30/03/2011
Reputação : 62 Pontos : 27994
Re: [Sistema] GUI SpellEvent
DeathYou escreveu:Nñ entendi uma parte, pq tem que retirar os eventos das triggers ?
Pois você não vai mais precisar de eventos em suas spells. Os unicos eventos de spells no seu mapa serão os 16 que são criados por esse sistema. Será apartir desses 16 eventos que todas as suas habilidades funcionarão.
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 31139
Re: [Sistema] GUI SpellEvent
ArthusBehemoth escreveu:tenho algumas duvidas:
1- minhas spells estão sendo feitas em MUI eu preciso ou tenho alguma vantagem de usar este system?
2- aquela parte "coisas que voce deve saber" voce pode dar uma explicação mais detalhada?
1- a vantagem é de nao ter que criar inumeras triggers com a mesma condition e event, resultando em uma maior velocidade por redução de codigo
2- coisas para nao bugar o system
- Não registre mais que uma trigger por spell. //simples, vc nao usa mais de uma trigger para a inicialização de uma spell
- Tenha certeza que a trigger GUI SpellEvent foi executada apenas uma vez. //o systema tem que rodar uma vez, vc rodar duas vezes vai rodar as actions 2 vezes por spell
- Não toque nas custom scripts, se não tiver certeza do que está fazendo. //nao meche no systema em si,
lembre-se que esse systema é para os casos d
event> a unit starts a effect of a ability
condition> ability being cast equal Abilidade
action> ....
Re: [Sistema] GUI SpellEvent
ArthusBehemoth escreveu:tenho algumas duvidas:
1- minhas spells estão sendo feitas em MUI eu preciso ou tenho alguma vantagem de usar este system?
A vantagem eu já disse, seu jogo gastará menos memoria toda vez que uma magia for usada. Isso melhora muito o desempenho do seu jogo.
- Não registre mais que uma trigger por spell.ArthusBehemoth escreveu:2- aquela parte "coisas que voce deve saber" voce pode dar uma explicação mais detalhada?
Apenas não set aquelas variaveis duas vezes com a mesma habilidade.
- Tenha certeza que a trigger GUI SpellEvent foi executada apenas uma vez.
Tenha certeza que voce colocou apenas uma action dessa no seu mapa:
- Código:
Trigger - Run GUI SpellEvent (ignoring conditions)
Apenas não mecha na trigger "GUI SpellEvent" que voce copiará do mapa de exemplo.
@edit
vlw iky por responder também.
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 31139
Re: [Sistema] GUI SpellEvent
Muito obrigado, Iky e tio Bills, acho que vou usar esse system no meu orpg pq ele é muito muito grande e ja tem diversos sistemas..
DeathYou- Número de Posts : 136
Data de inscrição : 23/05/2010
Reputação : 4 Pontos : 25859
Re: [Sistema] GUI SpellEvent
Obrigado pelas respostas Iky e Bills... vou estar aplicando este system no meu mapa... + REP bills
ArthusBehemoth- Número de Posts : 1061
Data de inscrição : 30/03/2011
Reputação : 62 Pontos : 27994
Re: [Sistema] GUI SpellEvent
Só uma dúvida,esse sistema é compatível ao de buff do Bills? outra vez botei sei lá que sistema e deu bug em tudo do BUFF .-.
Tamires- Número de Posts : 487
Data de inscrição : 09/01/2012
Reputação : 27 Pontos : 25398
Re: [Sistema] GUI SpellEvent
Olha, se você estiver falando desse meu sistema, sim são compatíveis.
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 31139
Re: [Sistema] GUI SpellEvent
É esse ai mesmo bills,deixe-me esclarecer o porque da pergunta
eu vi em algum lugar outro dia,um sistema que tirava as leaks de GUI e algumas de JASS,ai eu testei em umas duas GUI básicas,com leak de wait e point e funcionou,mas ai quando eu coloquei um JASS básico também funfou,ai eu fui colocando nos sistemas brutos,tipo o seu de buff e gerou tanto BUG que tive q voltar uma versão pq n tinha feito back-up do mapa.
Desculpe a "noobice" da pergunta
eu vi em algum lugar outro dia,um sistema que tirava as leaks de GUI e algumas de JASS,ai eu testei em umas duas GUI básicas,com leak de wait e point e funcionou,mas ai quando eu coloquei um JASS básico também funfou,ai eu fui colocando nos sistemas brutos,tipo o seu de buff e gerou tanto BUG que tive q voltar uma versão pq n tinha feito back-up do mapa.
Desculpe a "noobice" da pergunta
Tamires- Número de Posts : 487
Data de inscrição : 09/01/2012
Reputação : 27 Pontos : 25398
Re: [Sistema] GUI SpellEvent
Tamires escreveu:É esse ai mesmo bills,deixe-me esclarecer o porque da pergunta
eu vi em algum lugar outro dia,um sistema que tirava as leaks de GUI e algumas de JASS,ai eu testei em umas duas GUI básicas,com leak de wait e point e funcionou,mas ai quando eu coloquei um JASS básico também funfou,ai eu fui colocando nos sistemas brutos,tipo o seu de buff e gerou tanto LEAK e BUG que tive q voltar 1 versão pq n tinha feito back-up do mapa.
Desculpe a "noobice" da pergunta
Tudo bem. Mas não aconselho o uso desses sistemas que removem leaks, pois alguns sistemas mantém handles por muito tempo, e esses sistemas de remover leaks podem acabar removendo algo que era para conservar.
O meu sistema só não é compatível com o AuraStruct do nestharus.
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 31139
Re: [Sistema] GUI SpellEvent
Entendo,de qualquer forma valeu
Tamires- Número de Posts : 487
Data de inscrição : 09/01/2012
Reputação : 27 Pontos : 25398
Tópicos semelhantes
» [Sistema]Sistema de Knockback,Criação de Spells Simples e o Spell Jump.
» (Sistema)sistema de banco simples
» [Sistema] Sistema de Pets [Jass, MUI]
» (Sistema)Meu primeiro sistema
» Ajuda em um Sistema
» (Sistema)sistema de banco simples
» [Sistema] Sistema de Pets [Jass, MUI]
» (Sistema)Meu primeiro sistema
» Ajuda em um Sistema
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|