Help the newbie alert.

A

alzidaney

Guest
Ok newbie to this forum and to JASS as well. I'm making use of someone's free code posted in the free trigger code thread.

His definition for the code function I used is as follows

Code:
function GetNearestUnitMatching takes real sourceX, real sourceY, real range, boolexpr cond, boolean considerdead returns unit

Now, below here is what I attempted to do with the function. (OBviously its wrong. Its part of the whole trigger code btw.)

Code:
function IsEnemy takes nothing returns boolean
    local unit nextunit = GetEnumUnit()
    
    return GetOwningPlayer(nextunit) == GetOwningPlayer(udg_Summoned)
endfunction

function Trig_Tornado_Effect_Actions takes nothing returns nothing
       local unit nearest
       //local boolexpr bolexpr = 
       nearest = call GetNearestUnitMatching(GetLocationX(GetUnitLoc(GetSummonedUnit())), GetLocationY(GetUnitLoc(GetSummonedUnit())), 125, Condition(IsEnemy) , false)
endfunction

The error shows in the line
Code:
nearest = call GetNearestUnitMatching(GetLocationX(GetUnitLoc(GetSummonedUnit())), GetLocationY(GetUnitLoc(GetSummonedUnit())), 125, Condition(IsEnemy) , false)

It says that "Expected Code Statement". Im lost. Totally. I tried searching around this forum but to no avail. :(
 
A

alzidaney

Guest
Just tried it. Does'nt work. What's the diff between Filter and Enum anyways?
 

phyrex1an

Staff Member and irregular helper
Reaction score
447
FilterUnit is the unit that is 'filtered' in a boolexpr callback, EnumUnit is the unit 'picked' with ForGroup.

In addition to my last post change this:
nearest = call GetNearestUnitMatching(...)
to
set nearest = GetNearestUnitMatching(...)
 
A

alzidaney

Guest
Thx for the explaination on Filter and Enum. :)

Anyway, now there's a new error. It says "Expected Expression".
For that same line as well. :(
 
A

alzidaney

Guest
For which part should I use that? I tried it in the 'Condition(function IsEnemy)' but it still gave the same error..
 

corvusHaunt

New Member
Reaction score
96
Try this
Code:
function IsEnemy takes nothing returns boolean  //this function leaks a unit btw
    local unit nextunit = GetEnumUnit()  
    
    return GetOwningPlayer(nextunit) == GetOwningPlayer(udg_Summoned)
endfunction

function Trig_Tornado_Effect_Actions takes nothing returns nothing
       local unit nearest = GetSummonedUnit()
       local boolexpr bolexpr = Condition(function IsEnemy)
     
       set nearest = GetNearestUnitMatching(GetUnitX(nearest), GetUnitY(nearest), 125, bolexpr , false)
       
        //don't forget to clean up the boolexpr:
        call DestroyBoolExpr(bolexpr)
        set bolexpr = null
endfunction
 
A

alzidaney

Guest
OMFG. I love you man! :) Works finally. So.. Can you explain what you did
and what's the cause? :D THX THX THXTHX!!!
 

corvusHaunt

New Member
Reaction score
96
Your code:
Code:
function Trig_Tornado_Effect_Actions takes nothing returns nothing
       local unit nearest
       //local boolexpr bolexpr = 
       nearest = [COLOR=Red]call[/COLOR] GetNearestUnitMatching(GetLocationX(GetUnitLoc(GetSummonedUnit())), GetLocationY(GetUnitLoc(GetSummonedUnit())), 125, Condition(IsEnemy) , false)
endfunction

Code:
function Trig_Tornado_Effect_Actions takes nothing returns nothing
       local unit nearest = GetSummonedUnit() //You get the point of this unit, then get the X,Y of that point, twice; which is useless, I switched to GetUnitX/Y
       local boolexpr bolexpr = Condition(function IsEnemy) //store the boolexpr in a variable so we can destroy the leak
     
       set nearest = GetNearestUnitMatching(GetUnitX(nearest), GetUnitY(nearest), 125, bolexpr , false) //you only need to use "call" when calling the function directly, passing a function to return a value does not need this
       
        //don't forget to clean up the boolexpr:
        call DestroyBoolExpr(bolexpr)  //destroy the condition
        set bolexpr = null  //remove the var leak
endfunction

Glad I could help, have fun with this neat function :)
(PS- I made this and gave it to WP, he added the bj_lastHauntedGoldMine, I know him :p)
 
A

alzidaney

Guest
Oh geez.. And to think it was like so hard to figure that out.. Only you did it. :) Nice job! Thx a lot oh great one! ;)

Anyway, my JassCraft doesnt compile properly. When I click syntax check,
it will go "Checking ____filename___" for some time.. Then it comes out, "Parse successful : 1733 lines: common.j"

I have no idea what that means. I gave up and use WE's syntax checker, though some said its not fully fullproof.. Any suggestions?
 

corvusHaunt

New Member
Reaction score
96
Hmmm, I don't what that could be. WE's syntax checker isn't that great, JASSCraft's is a step up, plus the fact you don't have to worry about the crashes the syntax checker in WE sometimes causes when trying to enable a disabled trigger, save or test.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top