mazing td help

Do you need World Editor help? Ask here!
Forum rules
Before making a new topic:
First, check if your question has already been answered in the Tutorials section.
If you didn't find a solution, use the search function.
If searching didn't help either, you can make a new topic.

Topic title & content:
You must use a descriptive title. (Help plz is not good) (Need help with Dialog buttons is good)
Go into much detail when posting. You should post attachments. Like screenshots of the problem, the map you are making, replays of the error. Or you could even make a screencast (video) of your problem and upload it here.

Spelling:
Grammar seems to be a serious problem amongst teenagers, so use a spell checker or you will get no love.
Read your posts twice, before pressing the reply button.
And do not use profanity. Chatspeak (y r u nub) and Leetspeak (1 C4N S33 H4X) are not welcome here either.

Only World Editor related questions are allowed here!
(Click for Battle.net help) (Click for World Editor help)
Evilnoah
Posts: 3
Joined: Wed Dec 02, 2009 1:17 pm

mazing td help

Unread post by Evilnoah »

Hi. This is my first warcraft map I've made and I decided I want a mazing type td (maybe not the best choice). Anyway, my question is how would I prevent the players from building towers that will block the path of the creeps? I disabled the attacks of the creeps so they can't destroy the towers and I would prefer if I could keep it that way. Thanks.

User avatar
3ICE
Admin
Posts: 2629
Joined: Sat Mar 01, 2008 11:34 pm
Realm: Europe
Account: 3ICE
Clan: 3ICE
Location: Hungary
Contact:

Re: mazing td help

Unread post by 3ICE »

Definitely not the best choice. Try making a melee map instead. (And then add some triggers for practice.)

Step 1: Google: http://www.google.com/search?q=warcraft+tower+defense+map+pathing+and+lanes
Step 2: Read...
Step 3: Problem solved

p.s.: You need to re-enable creeps' attack or else how would you punish the blocking player? (And make sure you don't put the "Invulnerable" ability on any tower.)
ImageImageImageImageImage
Image
ImageImage

Evilnoah
Posts: 3
Joined: Wed Dec 02, 2009 1:17 pm

Re: mazing td help

Unread post by Evilnoah »

I've already read that. I'm doing fairly well on the map the triggers seem to be fairly logical if you simply think through most of it. I've played a map (can't remember which one for the life of me) but when you tried building a tower that would block the creeps paths it wouldn't let you and notify you that of it. Therefore you wouldn't need creep attacks because no one could block in the first place.

Evilnoah
Posts: 3
Joined: Wed Dec 02, 2009 1:17 pm

Re: mazing td help

Unread post by Evilnoah »

Ok. So when I have the creeps attacks enabled they just seem to want to destory everything in their sight. Is their an easy remedy to this?

User avatar
3ICE
Admin
Posts: 2629
Joined: Sat Mar 01, 2008 11:34 pm
Realm: Europe
Account: 3ICE
Clan: 3ICE
Location: Hungary
Contact:

Re: mazing td help

Unread post by 3ICE »

Evilnoah wrote:I've played a map
I think you've played a flash game, not a map.
Evilnoah wrote:Is their an easy remedy to this?
Why does everyone want everything to be easy? By the way the word "their" is not proper English. You should have spelled it like this: "there". EDIT: Forgot to mention that the remedy is on the page you've read (or probably just skimmed).
Evilnoah wrote:I've already read that.
No, you haven't... (Or you didn't pay attention to the "Creeps keep Attacking?" chapter!...)

(RULE 2010: No double posting! I understand that double posting is an acceptable solution for lazy people, but please try editing the second post into the first one the next time. It isn't hard.)
ImageImageImageImageImage
Image
ImageImage

User avatar
manstie
Posts: 310
Joined: Wed Jun 17, 2009 9:27 am
Account: manstie
Location: Perth, Australia
Contact:

Re: mazing td help

Unread post by manstie »

It would be great to find out how the maker of "Mazing Contest" did their anti-blocking system.
________________________________________________________________

Or you could make the units have Blink and if its blocking - instead of attack, make them blink like, 200 distance, to the next waypoint.
Image

User avatar
3ICE
Admin
Posts: 2629
Joined: Sat Mar 01, 2008 11:34 pm
Realm: Europe
Account: 3ICE
Clan: 3ICE
Location: Hungary
Contact:

Re: mazing td help

Unread post by 3ICE »

Here:

Code: Select all

//===========================================================================
// Trigger: asdgasdfgasdgasdf
//===========================================================================
function Trig_asdgasdfgasdgasdf_Func011C takes nothing returns boolean
    if ( not ( udg_asdgsadfasdgas == 'h000' ) ) then
        return false
    endif
    return true
endfunction

function Trig_asdgasdfgasdgasdf_Func012Func002C takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetLastCreatedUnit()) == 'h001' ) ) then
        return false
    endif
    return true
endfunction

function Trig_asdgasdfgasdgasdf_Func012C takes nothing returns boolean
    if ( not ( udg_asdfsdgsadfs == true ) ) then
        return false
    endif
    return true
endfunction

function Trig_asdgasdfgasdgasdf_Func013C takes nothing returns boolean
    if ( not ( RectContainsLoc(udg_asdgfasdfsdgssdf[udg_temp_int], udg_temp_point) == true ) ) then
        return false
    endif
    return true
endfunction

function Trig_asdgasdfgasdgasdf_Actions takes nothing returns nothing
    set udg_temp_unit = GetTriggerUnit()
    set udg_temp_int = GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))
    set udg_temp_point = GetUnitLoc(GetTriggerUnit())
    set udg_asdgsadfasdgas = GetUnitTypeId(GetTriggerUnit())
    set udg_asdfgasdfasg = true
    set udg_asdgasdgasdfasasdgfa = 1
    call RemoveUnit( udg_temp_unit )
    call CreateNUnitsAtLoc( 1, udg_asdgsadfasdgas, ConvertedPlayer(udg_temp_int), udg_temp_point, bj_UNIT_FACING )
    set udg_temp_unit = GetLastCreatedUnit()
    call SetUnitUserData( udg_temp_unit, GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit())) )
    if ( Trig_asdgasdfgasdgasdf_Func011C() ) then
        set udg_asdgfasdgasdfas = 1
        call UnitRemoveAbilityBJ( 'AHtc', GetLastCreatedUnit() )
    else
        set udg_asdgfasdgasdfas = 0
    endif
    if ( Trig_asdgasdfgasdgasdf_Func012C() ) then
        call UnitAddAbilityBJ( 'A000', GetLastCreatedUnit() )
        if ( Trig_asdgasdfgasdgasdf_Func012Func002C() ) then
            call UnitAddAbilityBJ( 'A001', GetLastCreatedUnit() )
        else
        endif
    else
    endif
    if ( Trig_asdgasdfgasdgasdf_Func013C() ) then
        call RemoveLocation (udg_temp_point)
        call ConditionalTriggerExecute( gg_trg_asdgasdfgasdgasdfsa )
    else
        call AddSpecialEffectLocBJ( udg_temp_point, "Abilities\\Spells\\Human\\DispelMagic\\DispelMagicTarget.mdl" )
        call DestroyEffectBJ( GetLastCreatedEffectBJ() )
        call RemoveUnit( udg_temp_unit )
        call RemoveLocation (udg_temp_point)
        call AdjustPlayerStateBJ( udg_asdgasdgasdfasasdgfa, ConvertedPlayer(udg_temp_int), PLAYER_STATE_RESOURCE_GOLD )
        call AdjustPlayerStateBJ( udg_asdgfasdgasdfas, ConvertedPlayer(udg_temp_int), PLAYER_STATE_RESOURCE_LUMBER )
    endif
endfunction

//===========================================================================
function InitTrig_asdgasdfgasdgasdf takes nothing returns nothing
    set gg_trg_asdgasdfgasdgasdf = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_asdgasdfgasdgasdf, EVENT_PLAYER_UNIT_CONSTRUCT_START )
    call TriggerAddAction( gg_trg_asdgasdfgasdgasdf, function Trig_asdgasdfgasdgasdf_Actions )
endfunction

//===========================================================================
// Trigger: asdgasdfgasdgasdfsa
//===========================================================================
function Trig_asdgasdfgasdgasdfsa_Actions takes nothing returns nothing
    set udg_asdfasdgasd = false
    set udg_asdfasdgsdf = false
    call GroupClear( udg_Chain )
    call GroupClear( udg_Chain_New_Additions_1 )
    call GroupAddUnitSimple( udg_temp_unit, udg_Chain )
    call GroupAddUnitSimple( udg_temp_unit, udg_Chain_New_Additions_1 )
    set udg_temp_point = GetUnitLoc(udg_temp_unit)
    call ConditionalTriggerExecute( gg_trg_asdfgasdgasdfasdgasd )
    call RemoveLocation (udg_temp_point)
    call ConditionalTriggerExecute( gg_trg_asdfasdgasdfasdgsasd )
endfunction

//===========================================================================
function InitTrig_asdgasdfgasdgasdfsa takes nothing returns nothing
    set gg_trg_asdgasdfgasdgasdfsa = CreateTrigger(  )
    call TriggerAddAction( gg_trg_asdgasdfgasdgasdfsa, function Trig_asdgasdfgasdgasdfsa_Actions )
endfunction

//===========================================================================
// Trigger: asdfasdgasdfasdgsasd
//===========================================================================
function Trig_asdfasdgasdfasdgsasd_Func003A takes nothing returns nothing
    call GroupAddUnitSimple( GetEnumUnit(), udg_Chain_New_Additions_2 )
endfunction

function Trig_asdfasdgasdfasdgsasd_Func005Func002002002001 takes nothing returns boolean
    return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == true )
endfunction

function Trig_asdfasdgasdfasdgsasd_Func005Func002002002002 takes nothing returns boolean
    return ( IsUnitInGroup(GetFilterUnit(), udg_Chain) == false )
endfunction

function Trig_asdfasdgasdfasdgsasd_Func005Func002002002 takes nothing returns boolean
    return GetBooleanAnd( Trig_asdfasdgasdfasdgsasd_Func005Func002002002001(), Trig_asdfasdgasdfasdgsasd_Func005Func002002002002() )
endfunction

function Trig_asdfasdgasdfasdgsasd_Func005Func003Func002C takes nothing returns boolean
    if ( not ( DistanceBetweenPoints(udg_temp_point, udg_temp_point_2) < 182.00 ) ) then
        return false
    endif
    return true
endfunction

function Trig_asdfasdgasdfasdgsasd_Func005Func003A takes nothing returns nothing
    set udg_temp_point = GetUnitLoc(GetEnumUnit())
    if ( Trig_asdfasdgasdfasdgsasd_Func005Func003Func002C() ) then
        call GroupAddUnitSimple( GetEnumUnit(), udg_Chain )
        call GroupAddUnitSimple( GetEnumUnit(), udg_Chain_New_Additions_1 )
        call ConditionalTriggerExecute( gg_trg_asdfgasdgasdfasdgasd )
        set udg_asdgdsafsdsg = true
    else
    endif
    call RemoveLocation (udg_temp_point)
endfunction

function Trig_asdfasdgasdfasdgsasd_Func005A takes nothing returns nothing
    set udg_temp_point_2 = GetUnitLoc(GetEnumUnit())
    set udg_temp_group = GetUnitsInRectMatching(udg_asdgfasdfsdgssdf[udg_temp_int], Condition(function Trig_asdfasdgasdfasdgsasd_Func005Func002002002))
    call ForGroupBJ( udg_temp_group, function Trig_asdfasdgasdfasdgsasd_Func005Func003A )
    call RemoveLocation (udg_temp_point_2)
    call DestroyGroup (udg_temp_group)
endfunction

function Trig_asdfasdgasdfasdgsasd_Func006001 takes nothing returns boolean
    return ( udg_asdgdsafsdsg == true )
endfunction

function Trig_asdfasdgasdfasdgsasd_Actions takes nothing returns nothing
    set udg_asdgdsafsdsg = false
    call GroupClear( udg_Chain_New_Additions_2 )
    call ForGroupBJ( udg_Chain_New_Additions_1, function Trig_asdfasdgasdfasdgsasd_Func003A )
    call GroupClear( udg_Chain_New_Additions_1 )
    call ForGroupBJ( udg_Chain_New_Additions_2, function Trig_asdfasdgasdfasdgsasd_Func005A )
    if ( Trig_asdfasdgasdfasdgsasd_Func006001() ) then
        call ConditionalTriggerExecute( GetTriggeringTrigger() )
    else
        call ConditionalTriggerExecute( gg_trg_asdfasdgasdfasdga )
    endif
endfunction

//===========================================================================
function InitTrig_asdfasdgasdfasdgsasd takes nothing returns nothing
    set gg_trg_asdfasdgasdfasdgsasd = CreateTrigger(  )
    call TriggerAddAction( gg_trg_asdfasdgasdfasdgsasd, function Trig_asdfasdgasdfasdgsasd_Actions )
endfunction

//===========================================================================
// Trigger: asdfgasdgasdfasdgasd
//===========================================================================
function Trig_asdfgasdgasdfasdgasd_Func001Func002Func002Func002C takes nothing returns boolean
    if ( ( GetLocationY(udg_temp_point) <= GetLocationY(udg_asdfasdgasdfasdgsss[udg_temp_int]) ) ) then
        return true
    endif
    if ( ( GetLocationY(udg_temp_point) >= ( GetLocationY(udg_asdfasdgasdfasdgsss[udg_temp_int]) + ( 128.00 * 7.00 ) ) ) ) then
        return true
    endif
    return false
endfunction

function Trig_asdfgasdgasdfasdgasd_Func001Func002Func002C takes nothing returns boolean
    if ( not ( GetLocationX(udg_temp_point) <= ( GetLocationX(udg_asdfasdgasdfasdgsss[udg_temp_int]) + ( 128.00 * 4.00 ) ) ) ) then
        return false
    endif
    if ( not Trig_asdfgasdgasdfasdgasd_Func001Func002Func002Func002C() ) then
        return false
    endif
    return true
endfunction

function Trig_asdfgasdgasdfasdgasd_Func001Func002C takes nothing returns boolean
    if ( ( GetLocationX(udg_temp_point) <= GetLocationX(udg_asdfasdgasdfasdgsss[udg_temp_int]) ) ) then
        return true
    endif
    if ( Trig_asdfgasdgasdfasdgasd_Func001Func002Func002C() ) then
        return true
    endif
    return false
endfunction

function Trig_asdfgasdgasdfasdgasd_Func001C takes nothing returns boolean
    if ( not Trig_asdfgasdgasdfasdgasd_Func001Func002C() ) then
        return false
    endif
    return true
endfunction

function Trig_asdfgasdgasdfasdgasd_Func002Func002Func002Func002C takes nothing returns boolean
    if ( ( GetLocationY(udg_temp_point) <= GetLocationY(udg_asdfasdgasdfasdgsss[udg_temp_int]) ) ) then
        return true
    endif
    if ( ( GetLocationY(udg_temp_point) >= ( GetLocationY(udg_asdfasdgasdfasdgsss[udg_temp_int]) + ( 128.00 * 7.00 ) ) ) ) then
        return true
    endif
    return false
endfunction

function Trig_asdfgasdgasdfasdgasd_Func002Func002Func002C takes nothing returns boolean
    if ( not ( GetLocationX(udg_temp_point) >= ( GetLocationX(udg_asdfasdgasdfasdgsss[udg_temp_int]) + ( 128.00 * 4.00 ) ) ) ) then
        return false
    endif
    if ( not Trig_asdfgasdgasdfasdgasd_Func002Func002Func002Func002C() ) then
        return false
    endif
    return true
endfunction

function Trig_asdfgasdgasdfasdgasd_Func002Func002C takes nothing returns boolean
    if ( ( GetLocationX(udg_temp_point) >= ( GetLocationX(udg_asdfasdgasdfasdgsss[udg_temp_int]) + ( 8.00 * 128.00 ) ) ) ) then
        return true
    endif
    if ( Trig_asdfgasdgasdfasdgasd_Func002Func002Func002C() ) then
        return true
    endif
    return false
endfunction

function Trig_asdfgasdgasdfasdgasd_Func002C takes nothing returns boolean
    if ( not Trig_asdfgasdgasdfasdgasd_Func002Func002C() ) then
        return false
    endif
    return true
endfunction

function Trig_asdfgasdgasdfasdgasd_Actions takes nothing returns nothing
    if ( Trig_asdfgasdgasdfasdgasd_Func001C() ) then
        set udg_asdfasdgasd = true
    else
    endif
    if ( Trig_asdfgasdgasdfasdgasd_Func002C() ) then
        set udg_asdfasdgsdf = true
    else
    endif
endfunction

//===========================================================================
function InitTrig_asdfgasdgasdfasdgasd takes nothing returns nothing
    set gg_trg_asdfgasdgasdfasdgasd = CreateTrigger(  )
    call TriggerAddAction( gg_trg_asdfgasdgasdfasdgasd, function Trig_asdfgasdgasdfasdgasd_Actions )
endfunction
His protection is pathetic (asfgasdasdfsdgasd)! Just imagine having to go through all your variables and triggers and renaming them to nonsense (asfgasdasdfsdgasd ) every time you released a new version. If Vexorian didn't create his Map Optimizer, we'd be doomed for sure!

EDIT: A Blinking trigger can be taken from Power Towers (It's in vJASS, but don't let that bother you.)
ImageImageImageImageImage
Image
ImageImage

Post Reply

Who is online

Users browsing this forum: No registered users and 47 guests