[AJUDA] Problema execução vjass
3 participantes
Página 1 de 1
[AJUDA] Problema execução vjass
Bem, to com um problema aqui em um codigo em vjass, que, na ideia seria um knockback. Antes que venham apontando um monte de erro e/ou falhas no código, saibam que é o primeiro codígo vjass (depois do "olá mundo" ¬¬ ) que eu escrevo, e eu ainda nao tive a oportunidade de testar. Não sei se é pq eu nao coloquei um method create, que pelo que eu vi, é opcional...
Mas o problema (segundo o jhelper, copilador vjass) o problema esta em "Unexpected 'endstruct' in line tal"
A partir disto, veio a mente duas curiosidades,
1: erro com fechamendo de bloco?
2: Eu retirei o que tinha haver com struct no bloco, só para testar, e deu no mesmo erro
+ pra quem ajudar XD
Edit: mudei um pouco o codigo (colocando um metodo dentro da struct com os comandos que estavam em uma function fora, bem, agora nao da o erro na struct, mas tb nao ta testando :/
Mas o problema (segundo o jhelper, copilador vjass) o problema esta em "Unexpected 'endstruct' in line tal"
A partir disto, veio a mente duas curiosidades,
1: erro com fechamendo de bloco?
2: Eu retirei o que tinha haver com struct no bloco, só para testar, e deu no mesmo erro
+ pra quem ajudar XD
- Spoiler:
- Código:
scope KockB initializer Init
globals
public integer Ability_KB = 'A149'
public timer KB_Timer
endglobals
struct Variaveis
unit KBB_Caster
integer KB_Level
unit KB_Target
location KB_TargetPoint
real KB_Distance
real KB_Time
real KB_Avance
location KB_AvancePoint
real KB_Angle
endstruct //<--- o erro aponta aqui
private function Condictions takes nothing returns boolean
return GetSpellAbilityId() == Ability_KB
endfunction
private function KB_Execute takes location up, location av, unit u,real d,real a,integer count returns nothing
if count>0 then
set up = GetUnitLoc(u)
set av = PolarProjectionBJ(up,d,a-180)
call SetUnitPositionLoc(u,av)
call RemoveLocation(av)
count=count-1
endif
endfunction
private function Actions takes nothing returns nothing
local Variaveis vrs = Variaveis.create()
set vrs.KB_Caster = GetTriggerUnit()
set vrs.KB_Target = GetSpellTargetUnit()
set vrs.KB_TargetPoint = GetUnitLoc(vrs.KB_Target)
set vrs.KB_Level= GetUnitAbilityLevel(vrs.KB_Caster, Ability_KB)
set vrs.KB_Distance = DistanceBetweenPoints(vrs.KB_CasterPoint, vrs.KB_TargetPoint)
set vrs.KB_Time = 0.02
set vrs.KB_Avance = vrs.KB_Distance / 10.
set vrs.KB_Angle = GetUnitFacing(vrs.KB_Target)
set vrs.KB_Count = 10
call TimerStart(KB_Timer,vrs.KB_Time, true, function KB_Execute(vrs.KB_Target,vrs.KB_Avance,vrs.KB_Target,vrs.KB_Avance,vrs.KB_Angle,vrs.KB_Count) )
endfunction
private function Init takes nothing returns nothing
local trigger Trg = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(Trg, EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(Trg,function Condictions)
call TriggerAddAction(Trg, function Actions)
endfunction
endscope
Edit: mudei um pouco o codigo (colocando um metodo dentro da struct com os comandos que estavam em uma function fora, bem, agora nao da o erro na struct, mas tb nao ta testando :/
- Spoiler:
- Código:
library KockB initializer Init
globals
public integer Ability_KB = 'A149'
public timer KB_Timer
endglobals
struct Variaveis
unit KBB_Caster
integer KB_Level
unit KB_Target
location KB_TargetPoint
real KB_Distance
real KB_Time
real KB_Avance
location KB_AvancePoint
real KB_Angle
private method KB_ takes location up, location av, unit u,real d,real a,integer count returns nothing
if count>0 then
set up = GetUnitLoc(u)
set av = PolarProjectionBJ(up,d,a-180)
call SetUnitPositionLoc(u,av)
call RemoveLocation(av)
count=count-1
endif
endmethod
endstruct
private function Condictions takes nothing returns boolean
return GetSpellAbilityId() == Ability_KB
endfunction
private function Actions takes nothing returns nothing
local Variaveis vrs = Variaveis.allocate()
set vrs.KB_Caster = GetTriggerUnit()
set vrs.KB_Target = GetSpellTargetUnit()
set vrs.KB_TargetPoint = GetUnitLoc(vrs.KB_Target)
set vrs.KB_Level= GetUnitAbilityLevel(vrs.KB_Caster, Ability_KB)
set vrs.KB_Distance = DistanceBetweenPoints(vrs.KB_CasterPoint, vrs.KB_TargetPoint)
set vrs.KB_Time = 0.02
set vrs.KB_Avance = vrs.KB_Distance / 10.
set vrs.KB_Angle = GetUnitFacing(vrs.KB_Target)
set vrs.KB_Count = 10
call TimerStart(KB_Timer,vrs.KB_Time, true, function vrs.KB_(vrs.KB_Target,vrs.KB_Avance,vrs.KB_Target,vrs.KB_Avance,vrs.KB_Angle,vrs.KB_Count) )
endfunction
private function Init takes nothing returns nothing
local trigger Trg = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(Trg, EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(Trg,function Condictions)
call TriggerAddAction(Trg, function Actions)
endfunction
endlibrary
Re: [AJUDA] Problema execução vjass
- Código:
library KockB initializer Init
globals
public integer Ability_KB = 'A149'
public timer KB_Timer
endglobals
private struct Variaveis //private já que vc vai usar apenas nessa spell
unit KBB_Caster
integer KB_Level
unit KB_Target
location KB_TargetPoint
real KB_Distance
real KB_Time
real KB_Avance
location KB_AvancePoint
real KB_Angle
private method KB_ takes location up, location av, unit u,real d,real a,integer count returns nothing
if count>0 then
set up = GetUnitLoc(u)
set av = PolarProjectionBJ(up,d,a-180)
call SetUnitPositionLoc(u,av)
call RemoveLocation(av)
count=count-1
endif
endmethod
endstruct
private function Condictions takes nothing returns boolean
return GetSpellAbilityId() == Ability_KB
endfunction
private function Actions takes nothing returns nothing
local Variaveis vrs = Variaveis.create() //create pq allocate é apenas usado dentro da struct
set vrs.KB_Caster = GetTriggerUnit()
set vrs.KB_Target = GetSpellTargetUnit()
set vrs.KB_TargetPoint = GetUnitLoc(vrs.KB_Target) //usa X/Y. não Location
set vrs.KB_Level= GetUnitAbilityLevel(vrs.KB_Caster, Ability_KB)
set vrs.KB_Distance = DistanceBetweenPoints(vrs.KB_CasterPoint, vrs.KB_TargetPoint)
set vrs.KB_Time = 0.02
set vrs.KB_Avance = vrs.KB_Distance / 10.
set vrs.KB_Angle = GetUnitFacing(vrs.KB_Target)
set vrs.KB_Count = 10
call TimerStart(KB_Timer,vrs.KB_Time, true, function vrs.KB_(vrs.KB_Target,vrs.KB_Avance,vrs.KB_Target,vrs.KB_Avance,vrs.KB_Angle,vrs.KB_Count) )
//isso NUNCA vai ocorrer, function callbacks não podem conter argumentos, e tirando que vc não pode usar method não static's dentro das functions callbacks
endfunction
private function Init takes nothing returns nothing
local trigger Trg = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(Trg, EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(Trg,function Condictions)
call TriggerAddAction(Trg, function Actions)
endfunction
endlibrary
PS: tente sempre alinhar o código de uma maneira legível
A é... coloque esse código acima no editor pra ver os comentários e onde está o erro
pra resolver a parte do callback, vc vai precisar usar um static method, eu aconselho vc usar algum sistema de timer que seria mais fácil de fazer isso
Luks- Número de Posts : 17
Data de inscrição : 31/08/2010
Reputação : 1 Pontos : 25972
Re: [AJUDA] Problema execução vjass
Como laiev mostrou, seu maior erro ali foi a function de callback a do TimerStart. Use recicler ou TimerUtils (qualquer um desses systems que ajuda a resolver seu problema). Só para falar que não disse nada de interessante, na sua function Init coloque no final dela: "set Trg = null". Para anular a local variavel.
Parabens iky por ter começado aprender vJass, continue assim =D
@EDIT
No passado quando ensinei vJass à um noob do BlizzEditors fiz esse MAPA mostrando para ele como se faz um simples knockback com structs. Espero que possa te ajudar também. o/
Parabens iky por ter começado aprender vJass, continue assim =D
@EDIT
No passado quando ensinei vJass à um noob do BlizzEditors fiz esse MAPA mostrando para ele como se faz um simples knockback com structs. Espero que possa te ajudar também. o/
Bills- Número de Posts : 1446
Data de inscrição : 04/12/2010
Reputação : 173 Pontos : 32044
Re: [AJUDA] Problema execução vjass
vlw bills, vi seu map, legal, aprendi o que eu tava confuso, em como "reconhecer" a struct em outra function, vlw
Tópicos semelhantes
» [WE] [Ajuda] Problema com ítens
» [Problema]ajuda com modelos
» [Ajuda] Problema com item
» MAGIAS ajuda aqui um problema que estã estragando meu mapa !
» [Problema] Estou tendo um problema na trigger principal do meu mapa.
» [Problema]ajuda com modelos
» [Ajuda] Problema com item
» MAGIAS ajuda aqui um problema que estã estragando meu mapa !
» [Problema] Estou tendo um problema na trigger principal do meu mapa.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos