[Duvida] Problemas com vJASS
4 participantes
Página 1 de 1
[Duvida] Problemas com vJASS
A área de perguntas está com algum bug,não estou conseguindo postar lá por isso coloquei aqui ;X
Bom,como estou começando a fazer magias pro meu mapa,que antes era apenas "Papel",me deparei com um problema frequente que acontece todas as vezes,sempre que tento criar um.
Aqui está o código,de cara o que pode estar errado?
@obs : estou parcialmente de volta,porem ainda viajando então não voltei totalmente =P
Bom,como estou começando a fazer magias pro meu mapa,que antes era apenas "Papel",me deparei com um problema frequente que acontece todas as vezes,sempre que tento criar um.
Aqui está o código,de cara o que pode estar errado?
- Spoiler:
library MultiShock initializer Init
globals
private constant integer ACTIVATOR_RAWCODE = 'A003'
private constant integer DUMMY_RAWCODE = 'h000'
private constant string DUMMY_STRING = "carrionswarm"
private constant real TARGET_ARC = 300
private constant integer WAVE_NUMBER_PER_LEVEL = 3
private constant integer WAVE_NUMBER_BASE = 0
private constant real TARGET_ARC_CUTOFF = TARGET_ARC/6.28319
private constant real TARGET_OFFSET = 150
private constant real DUMMY_DURATION = 1
endglobals
private function MSCondition takes nothing returns boolean
return GetSpellAbilityId() == ACTIVATOR_RAWCODE
endfunction
private constant function DummyFilter takes nothing returns boolean
return true
endfunction
private function MultiShock takes nothing returns nothing
local unit tu = GetTriggerUnit()
local location tl = GetSpellTargetLoc()
local unit lu
local player p = GetOwningPlayer(tu)
local integer im = WAVE_NUMBER_BASE + GetUnitAbilityLevel(tu,ACTIVATOR_RAWCODE) * WAVE_NUMBER_PER_LEVEL
local integer i = 0
local real x = GetUnitX(tu)
local real y = GetUnitY(tu)
local real tx = GetLocationX(tl)
local real ty = GetLocationY(tl)
local real distance = SquareRoot((x-tx)*(x-tx)+(y-ty)*(y-ty))
local real circum
local real r
call RemoveLocation(tl)
set tl = null
if distance > TARGET_ARC_CUTOFF then
set circum = TARGET_ARC/distance
set r = Atan2(ty-y,tx-x) - circum/2
else
set circum = 6.28319
set r = GetUnitFacing(tu)*bj_DEGTORAD
endif
set circum = circum/im
loop
exitwhen i == im
set lu = CreateUnit(p,DUMMY_RAWCODE,x,y,r*bj_RADTODEG)
call UnitApplyTimedLife(lu,'BTLF',DUMMY_DURATION)
call IssuePointOrder(lu,DUMMY_STRING,x+TARGET_OFFSET*Cos(r),y+TARGET_OFFSET*Sin(r))
set r = r + circum
set i = i + 1
endloop
set tu = null
set lu = null
set p = null
endfunction
private function Init takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i = 0
local filterfunc ff = Filter(function DummyFilter)
loop
exitwhen (i >= bj_MAX_PLAYER_SLOTS)
call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, ff)
set i = i + 1
endloop
call TriggerAddCondition(t,Condition(function MSCondition))
call TriggerAddAction(t,function MultiShock)
call DestroyFilter(ff)
set ff = null
endfunction
endlibrary
@obs : estou parcialmente de volta,porem ainda viajando então não voltei totalmente =P
Tamires- Número de Posts : 487
Data de inscrição : 09/01/2012
Reputação : 27 Pontos : 26343
Re: [Duvida] Problemas com vJASS
O que exatamante é o erro? Pois erros de compilação não tem nenhum. O que tem é umas coisas que você pode melhorar:
- Não precisa de por filter em Eventos, pode por null.
- Nao precisa usar GetSpellTargetLoc(), use GetSpellTargetX() e GetSpellTargetY().
- Não crie triggers com Actions, apenas crie com Conditions.
Abaixo o seu código revisado com as sugestões que citei:
http://pastebin.com/vtQ4K8WT
- Não precisa de por filter em Eventos, pode por null.
- Código:
call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
- Nao precisa usar GetSpellTargetLoc(), use GetSpellTargetX() e GetSpellTargetY().
- Não crie triggers com Actions, apenas crie com Conditions.
Abaixo o seu código revisado com as sugestões que citei:
http://pastebin.com/vtQ4K8WT
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 32084
Re: [Duvida] Problemas com vJASS
Ah bills,ainda estou aprendendo,por isso os erros x-x,foi mal..
Já fiz o que vc falou e ainda continua dando o mesmo erro,a magia não aparece no jogo.
Já fiz o que vc falou e ainda continua dando o mesmo erro,a magia não aparece no jogo.
Tamires- Número de Posts : 487
Data de inscrição : 09/01/2012
Reputação : 27 Pontos : 26343
Re: [Duvida] Problemas com vJASS
Não citei erros, relaxa. Foram sugestões =)
O erro pode está fora do código. Voce pode me mandar um mapa com a sua magia?
O erro pode está fora do código. Voce pode me mandar um mapa com a sua magia?
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 32084
Re: [Duvida] Problemas com vJASS
Este topico ja esta resolvido?
ArthusBehemoth- Número de Posts : 1061
Data de inscrição : 30/03/2011
Reputação : 62 Pontos : 28939
Re: [Duvida] Problemas com vJASS
Bills,eu descobri o que era!,era na própria magia,estava em CHANNEL e não INSTANT,por isso estava bugando.
Tópico resolvido.
Tópico resolvido.
Tamires- Número de Posts : 487
Data de inscrição : 09/01/2012
Reputação : 27 Pontos : 26343
Re: [Duvida] Problemas com vJASS
Olá,
O formulario de duvidas foi removido temporarimente até a sua manutenção.
Até mais.
O formulario de duvidas foi removido temporarimente até a sua manutenção.
Até mais.
Fox- Número de Posts : 502
Data de inscrição : 04/03/2012
Reputação : 14 Pontos : 112475
Tópicos semelhantes
» [vJass, JESP] Time Stop 1.3.2
» [Duvida] Coisas noobs sobre Vjass
» Poderes em VJass
» [System][vJass]RGB <-> Hexadecimal
» [TUTORIAL] vJass tuts #1 - Básico
» [Duvida] Coisas noobs sobre Vjass
» Poderes em VJass
» [System][vJass]RGB <-> Hexadecimal
» [TUTORIAL] vJass tuts #1 - Básico
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos