wc3campaigns
WC3C Homepage - www.wc3c.netUser Control Panel (Requires Log-In)Engage in discussions with other users and join contests in the WC3C forums!Read one of our many tutorials, ranging in difficulty from beginner to advanced!Show off your artistic talents in the WC3C Gallery!Download quality models, textures, spells (vJASS/JASS), systems, and scripts!Download maps that have passed through our rigorous approval process!

Go Back   Wc3C.net > Warcraft III Modding > Developer's Corner > Triggers & Scripts
User Name
Password
Register Rules Get Hosted! Chat Pastebin FAQ and Rules Members List Calendar



Reply
 
Thread Tools Search this Thread
Old 03-09-2010, 11:25 AM   #1
Anachron
User
 
Anachron's Avatar
 
Join Date: Mar 2009
Posts: 1,079

Anachron will become famous soon enough (51)Anachron will become famous soon enough (51)

Default [system] (vJass) CustomFilter

I am doing a very advanced filter system right now.
You can connect the different filter types with ands / ors and have a very high functionality, without making anything to complicated.

Some of its features:
  • You can do your own filters.
  • They are faster as any other system
  • They are more flexible
  • you can connect them with OR, AND, NOR, NAND
  • You can limit your enums easily
  • easy to use
  • You can also connect Unit and Player filters :P
  • Also, having one enumeration boolexpr only with unlimited filters ROCK.
  • You don't need new handles for new filters.
  • You can connect filters endless. (You can have endless filters on a single enumeration in theory)
  • Could make a new standard.

Collapse JASS:
library CustomFilterExamples initializer all requires CustomFilter, CFLib, CFEnum

    //: ------------------------------------------------------------------------
    //: Lets do some basic stuff at first.
    private function e1 takes nothing returns nothing
        //: Create a new group
        local group g = CreateGroup()
        //: and lets use the alive filter
        call FILTER_UNIT_ALIVE.apply()
        //: and now lets enumerate units into the group.
        call GroupEnumUnitsInRange(g, 0., 0., 512., UNIT_FILTER)
        //: Lets do a little check if we picked any unit
        call BJDebugMsg("We picked " + I2S(CountUnitsInGroup(g)) + " units!")
    endfunction
    
    //: ------------------------------------------------------------------------
    //: Lets do something more advanced. We pick all units that are non-heroes
    //: and print them.
    private function e2_Print takes nothing returns nothing
        //: Notice how we can access to the global variable
        //: FILTER_UNIT at any place!
        call BJDebugMsg(GetUnitName(FILTER_UNIT))
    endfunction

    private function e2 takes nothing returns nothing
        local group g = CreateGroup()
        call FILTER_UNIT_NOT_HERO.apply()
        //: We actually need to link the enum with function
        //: Do this AFTER applying the filter!
        call setOnUnitEnum(e2_Print)
        call GroupEnumUnitsInRange(g, 0., 0., 512., UNIT_FILTER)
    endfunction
    
    //: ------------------------------------------------------------------------
    //: Lets do some advanced filtering this time. 
    //: Who wants all units to be filtered, everytime?
    //: To face it, we want only 10 units that are not undead.
    private function e3 takes nothing returns nothing
        local group g = CreateGroup()
        //: Notice how we can connect filters inside each other!
        local LimitedFilter lf = LimitedFilter.create(FILTER_UNIT_NOT_UNDEAD, 10)
        
        call lf.apply()
        call GroupEnumUnitsInRange(g, 0., 0., 512., UNIT_FILTER)
        call lf.destroy()
        
        //: Lets do a little check if we picked any unit
        call BJDebugMsg("We picked " + I2S(CountUnitsInGroup(g)) + " units!")
    endfunction
    
    //: ------------------------------------------------------------------------
    //: We still haven't concatigated conditions yet. 
    //: This time, we want to have an unit that is either dead or alive and 
    //: not an hero
    private function e4 takes nothing returns nothing
        local group g = CreateGroup()
        //: Notice how we can connect this two filters 
        //: with an AND connector.
        local AndFilter ad = AndFilter.create(FILTER_UNIT_ALIVE, FILTER_UNIT_HERO, false)
        //: Notice how we can now connect 2 filters 
        //: of different types with this or filter
        local OrFilter of = OrFilter.create(FILTER_UNIT_DEAD, ad)
        
        call of.apply()
        call GroupEnumUnitsInRange(g, 0., 0., 512., UNIT_FILTER)
        call of.destroy()
        call ad.destroy()
        
        //: Lets do a little check if we picked any unit
        call BJDebugMsg("We picked " + I2S(CountUnitsInGroup(g)) + " units!")
    endfunction
    
    //: ------------------------------------------------------------------------
    //: Now we want to do something more advanced.
    //: This time we want to have a filter for all units of a spell.
    //: The filter is for disentigrate from Diablo III, so we use the CFEnum
    //: library to get new, great enumeration functions.
    //: For this spell we want to have alive units only, that are enemies.
    globals
        private constant real DISINTEGRATE_RANGE = 128.
    endglobals
    
    private struct e5struct
        private unit caster = null
        private real x1 = 0.
        private real y1 = 0.
        private real x2 = 0.
        private real y2 = 0.
        
        private method dmg takes nothing returns nothing
            local real lastHp = GetUnitState(FILTER_UNIT, UNIT_STATE_LIFE)
            local real newHp = lastHp - 25.
            
            call SetUnitState(FILTER_UNIT, newHp)
        endmethod
        
        //: This is the method that is run every few ms.
        private method e5 takes nothing returns nothing
            local group g = CreateGroup()
            //: Create a new allyfilter
            local AllyFilter af = AllyFilter.create(GetOwningPlayer(.caster), false)
            //: Create a new andfilter and connect it with ally and alivefilter
            local AndFilter andf = AndFilter.create(af, FILTER_UNIT_ALIVE, false)
            
            call andf.apply()
            //: Notice how we again connect enumeration with method calls.
            call setOnUnitEnum(.dmg)
            //: Function of the CFLib
            call EnumUnitsInRangeOfLine(g, .x1, .y1, .x2, .y2, DISINTEGRATE_RANGE)
            call andf.destroy()
            call af.destroy()
        endmethod
    endstruct
    
    //: ------------------------------------------------------------------------
    //: Lets use our own condition functions.
    private function e6_Print takes nothing returns nothing
        //: Notice how we can access to the global variable
        //: FILTER_UNIT at any place!
        call BJDebugMsg(GetUnitName(FILTER_UNIT))
    endfunction
    
    private function e6_Cond takes nothing returns boolean
        return GetUnitState(FILTER_UNIT, UNIT_STATE_LIFE) >= 100.
    endfunction
    
    private function e6 takes nothing returns nothing
        local group g = CreateGroup()
        //: Lets filter all units (TRUE_FILTER) that match our condition
        local CondFilter cf = UnitCondFilter.create(TRUE_FILTER, e6_Cond, false)
        
        call cf.apply()
        //: Notice how we again connect enumeration with method calls.
        call setOnUnitEnum(e6_Print)
        call GroupEnumUnitsInRange(g, 0., 0., 512., UNIT_FILTER)
        call cf.destroy()
        //: Thats it. Was is that hard?
    endfunction
    
    //: ------------------------------------------------------------------------
    //: Now you know about a lot of functionality of this system.
    //: Thanks for downloading and using.
    //: ------------------------------------------------------------------------
    
    private function all takes nothing returns nothing
        call e1()
        //call e2()
        //call e3()
        //call e4()
        //call e5struct.create().e5()
        //call e6()
    endfunction
endlibrary

CF_UP_v.0.0.1.w3x

Edit: Sorry for removing the library, I am currently completely remaking it!
__________________
CustomInventory [Discussion - Download] - Got Directors Cut!
CustomMissle [Discussion - [Download (not yet)] - In development!
Other systems [Spawn System] [Move System] [CustomBar] [SpellBar]

Last edited by Anachron : 03-10-2010 at 12:40 PM.
Anachron is offline   Reply With Quote
Sponsored Links - Login to hide this ad!
Old 03-09-2010, 05:16 PM   #2
TheKid
User
 
TheKid's Avatar
 
Join Date: Mar 2009
Posts: 195

TheKid will become famous soon enough (37)TheKid will become famous soon enough (37)

Default

The idea is pretty nice. It would be nice to have a standardized script that allows similar target-checking fields (and functionality) as WarCraft III's object editor provides.
__________________
TheKid is offline   Reply With Quote
Old 03-09-2010, 06:30 PM   #3
Anachron
User
 
Anachron's Avatar
 
Join Date: Mar 2009
Posts: 1,079

Anachron will become famous soon enough (51)Anachron will become famous soon enough (51)

Default

Updated first post with an early wip. Please check it.

Edit: Some advantages:
Quote:
[21-40-54] Anachron: YourNameHere, You can do your own filters.
[21-41-02] Anachron: YourNameHere, They are faster as any other system
[21-41-07] Anachron: YourNameHere, They are more flexible
[21-41-21] Anachron: YourNameHere, you can connect them with OR, AND, NOR, NAND
[21-41-30] Anachron: YourNameHere, You can limit your enums easily
[21-41-35] Xarwin: & easy to use
[21-44-07] Anachron: You can also connect Unit and Player filters :P
[21-46-03] Anachron: Also, having one enumeration boolexpr only with unlimited filters ROCK.
[21-46-10] Anachron: You don't need new handles for new filters.

Edit2:
The testmap now enumerates 2 random living units by player 1 and kills them! :D have fun!
(One will stay alive)
__________________
CustomInventory [Discussion - Download] - Got Directors Cut!
CustomMissle [Discussion - [Download (not yet)] - In development!
Other systems [Spawn System] [Move System] [CustomBar] [SpellBar]

Last edited by Anachron : 03-09-2010 at 09:48 PM.
Anachron is offline   Reply With Quote
Old 03-10-2010, 01:11 AM   #4
PurgeandFire111
User
 
PurgeandFire111's Avatar
 
Join Date: Dec 2006
Posts: 253

PurgeandFire111 will become famous soon enough (58)PurgeandFire111 will become famous soon enough (58)

Default

Does this support 3+ filters? =D (Have 3 different filters for an enumeration)

Last edited by PurgeandFire111 : 03-10-2010 at 01:12 AM.
PurgeandFire111 is offline   Reply With Quote
Old 03-10-2010, 04:03 AM   #5
TheKid
User
 
TheKid's Avatar
 
Join Date: Mar 2009
Posts: 195

TheKid will become famous soon enough (37)TheKid will become famous soon enough (37)

Default

Does this run a boolexpr for each filter, or are they all combined into one?
__________________
TheKid is offline   Reply With Quote
Old 03-10-2010, 04:04 AM
TheKid
This message has been deleted by TheKid.
Old 03-10-2010, 04:04 AM
TheKid
This message has been deleted by TheKid.
Old 03-10-2010, 08:13 AM   #6
Anachron
User
 
Anachron's Avatar
 
Join Date: Mar 2009
Posts: 1,079

Anachron will become famous soon enough (51)Anachron will become famous soon enough (51)

Default

Quote:
Does this support 3+ filters? =D (Have 3 different filters for an enumeration)
Yes, you can connect filters with and, or, nand, nor (not and, not or).
(You can also connect and, or, nand and nor filters with another one! So unlimited tree of filters possible!)

Example (This uses 2 unittype filters and one limit filter):
Collapse JASS:
// Enumerate alive units that are non-heroes please!
local AndFilter af = AndFilter.create(FILTER_UNIT_ALIVE, FILTER_UNIT_NOT_HERO, false)
// Don't exceed the limit of 2.
local LimitedFilter lf = LimitedFilter.create(af, 2)

call lf.apply()
//Do enumeration

lf.destroy()
af.destroy()

Quote:
Does this run a boolexpr for each filter, or are they all combined into one?
When you look into the code you'll see one boolexpr variable, basically it is that one. It is all combined into one, one of the main aspects of this system.

Edit:
I have decided to make an enumeration utils for this.
So this will soon have for example Line Enumeration functions.
Thanks for the input.
__________________
CustomInventory [Discussion - Download] - Got Directors Cut!
CustomMissle [Discussion - [Download (not yet)] - In development!
Other systems [Spawn System] [Move System] [CustomBar] [SpellBar]

Last edited by Anachron : 03-10-2010 at 09:25 AM.
Anachron is offline   Reply With Quote
Old 03-10-2010, 12:24 PM   #7
Anitarf
Procrastination Incarnate


Development Director
 
Join Date: Feb 2004
Posts: 8,190

Submissions (19)

Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)

2008 Spell olympics - Fire - SilverApproved Map: Old School Alliance TacticsHero Contest #2 - 3rd PlaceSpell making session 2 winner

Default

I really don't see how this is better than just writing your own custom filter functions.
__________________
Anitarf is offline   Reply With Quote
Old 03-10-2010, 12:38 PM   #8
Anachron
User
 
Anachron's Avatar
 
Join Date: Mar 2009
Posts: 1,079

Anachron will become famous soon enough (51)Anachron will become famous soon enough (51)

Default

Quote:
Originally Posted by Anachron
  • You can do your own filters.
  • They are faster as any other system
  • They are more flexible
  • you can connect them with OR, AND, NOR, NAND
  • You can limit your enums easily
  • easy to use
  • You can also connect Unit and Player filters :P
  • Also, having one enumeration boolexpr only with unlimited filters ROCK.
  • You don't need new handles for new filters.
  • You can connect filters endless. (You can have endless filters on a single enumeration in theory)

Also I updated examples.
Now you can easily remake disintegrate with new enumeration functions.

Also, this does only need 4 boolexpr vars, no matter how many Enums and filters you have.
__________________
CustomInventory [Discussion - Download] - Got Directors Cut!
CustomMissle [Discussion - [Download (not yet)] - In development!
Other systems [Spawn System] [Move System] [CustomBar] [SpellBar]

Last edited by Anachron : 03-10-2010 at 12:39 PM.
Anachron is offline   Reply With Quote
Old 03-10-2010, 11:28 PM   #9
Anitarf
Procrastination Incarnate


Development Director
 
Join Date: Feb 2004
Posts: 8,190

Submissions (19)

Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)

2008 Spell olympics - Fire - SilverApproved Map: Old School Alliance TacticsHero Contest #2 - 3rd PlaceSpell making session 2 winner

Default

I still don't see how this is better than just writing your own custom filter functions.

Quote:
  • You can do your own filters.
Yes, you can and you don't need this system to do it, which is kind of my point.
Quote:
  • They are faster as any other system
But still slower than using no system at all, which is, again, kind of my point.
Quote:
  • They are more flexible
They can't be more flexible than writing your own filter functions, since those are by definition as flexible as the language allows.
Quote:
  • you can connect them with OR, AND, NOR, NAND
You can also use or, and and not in JASS.
Quote:
  • You can limit your enums easily
You could do the same with PruneGroup, except with more control.
Quote:
  • easy to use
Doesn't seem like it.
Quote:
  • You can also connect Unit and Player filters :P
Again, how is that something you can't do in a custom filter function?
Quote:
  • Also, having one enumeration boolexpr only with unlimited filters ROCK.
  • You don't need new handles for new filters.
Who cares?
Quote:
  • You can connect filters endless. (You can have endless filters on a single enumeration in theory)
You can also cram as much code as you want in a custom filter function.
__________________
Anitarf is offline   Reply With Quote
Old 03-11-2010, 12:07 AM   #10
TheKid
User
 
TheKid's Avatar
 
Join Date: Mar 2009
Posts: 195

TheKid will become famous soon enough (37)TheKid will become famous soon enough (37)

Default

Quote:
Originally Posted by Anitarf
You can also cram as much code as you want in a custom filter function.

Nope, you'll hit an OP limit at some point or another. This system BYPASSES that, that's just how good it is.
__________________
TheKid is offline   Reply With Quote
Old 03-11-2010, 01:01 AM   #11
Earth-Fury
Two Blue
 
Earth-Fury's Avatar
 
Join Date: Mar 2003
Posts: 2,179

Submissions (7)

Earth-Fury is just really nice (343)Earth-Fury is just really nice (343)Earth-Fury is just really nice (343)Earth-Fury is just really nice (343)

Send a message via MSN to Earth-Fury
Default

Systems who's sole purpose is soft coding on the level of this library are the devil.

Libraries are supposed to make writing code easier, or cleaner, or faster, or better. When you generalize a solution, you are attempting to expand the domain of problems that it solves; Which is all well and good. Of course, systems like this are an example of taking it too far, to the point of the inner platform effect. You end up with a less functional clone of the platform the library was designed with, while maintaining a similar, or worse level of end-user complexity. In JASS, there is also the concern of execution speed, as it's a really slow language.

Truly, it is libraries like this that need to be burned in a lake of boiling liquid sulfur, not put in to general use.

As an aside, let me point to another inner-platform we are all familiar with: The trigger editing GUI. Remember that next time you think about coding an all-encompassing soft-coding system.

The concept of DRY (Don't Repeat Yourself) is a good one at it's core. Try to minimize repetition to ease development and maintenance. However, when you attempt to abstract to the point of a general solution, you're trying too hard. One's attempts at reducing repetition should be focused on specific instances of repetition, and trying to consolidate them. Attempting to consolidate 20 different things all in to one, without assessing if they should actually be consolidated, inevitably leads to the aforementioned inner-platform effect.
__________________
Useful Links:
My Resources:
Good Resources:
Search
Tutorials
Ability Guide

UnitMaxState
BonusMod

AutoIndex
ARGB
TimerUtils


Last edited by Earth-Fury : 03-11-2010 at 01:05 AM.
Earth-Fury is offline   Reply With Quote
Old 03-11-2010, 01:35 AM   #12
moyack
Evil Emoticon
 
moyack's Avatar


Respected User
Project Leader: PoC
 
Join Date: Jan 2006
Posts: 3,279

Submissions (17)

moyack is a splendid one to behold (666)moyack is a splendid one to behold (666)moyack is a splendid one to behold (666)moyack is a splendid one to behold (666)

AI Tournament #2 - 2nd PlaceHero Contest - Second place

Send a message via MSN to moyack
Default

Every word in EF's post is gold. People here should start doing more WC3 maps & mods instead of systems "for the lulz", expecting to have the luck of catching a programming need.

I'll save this post because it's really useful.
moyack is offline   Reply With Quote
Old 03-11-2010, 07:36 AM   #13
Anachron
User
 
Anachron's Avatar
 
Join Date: Mar 2009
Posts: 1,079

Anachron will become famous soon enough (51)Anachron will become famous soon enough (51)

Default

to Anitarf

Quote:
I still don't see how this is better than just writing your own custom filter functions.
If you ignore all the features, its sure that you can't see it. But seriously, just check its advances and get into it.

Quote:
Yes, you can and you don't need this system to do it, which is kind of my point.
Is it lazyness or do you just don't want to get anything of this system? Seems kinda like it.

Quote:
But still slower than using no system at all, which is, again, kind of my point.
You only have one point, uh?
Quote:
They can't be more flexible than writing your own filter functions, since those are by definition as flexible as the language allows.
They are the same way flexible, because they also support user defined filters.

Quote:
You can also use or, and and not in JASS.
Yes, but no other filtersystem does that.

Quote:
You could do the same with PruneGroup, except with more control.
Yes, you will need a HELL more control.

Quote:
Doesn't seem like it.
It really is.

Quote:
Again, how is that something you can't do in a custom filter function?
You can make an ENUMERATION tree, which you can't in normal filters.

Quote:
Who cares?
Big maps with a lot of enumerations, such as missle systems with collisions.

Quote:
You can also cram as much code as you want in a custom filter function.
Yes, but again its harder to connect.

NEW POINTS! (If you still don't believe me)
  • You don't need new functions for every boolexpr filter
  • You can connect them easily

And please, check the examples here.


to moyack


Quote:
Every word in EF's post is gold. People here should start doing more WC3 maps & mods instead of systems "for the lulz", expecting to have the luck of catching a programming need.

I'll save this post because it's really useful.
I did a map and I needed a lot of filter systems, that was the purpose for doing this.


to Earth-Fury


Quote:
Systems who's sole purpose is soft coding on the level of this library are the devil.
Well, it really isn't. Checked the testmap? You can do things much easier imho.

Quote:

Libraries are supposed to make writing code easier, or cleaner, or faster, or better. When you generalize a solution, you are attempting to expand the domain of problems that it solves; Which is all well and good. Of course, systems like this are an example of taking it too far, to the point of the inner platform effect. You end up with a less functional clone of the platform the library was designed with, while maintaining a similar, or worse level of end-user complexity. In JASS, there is also the concern of execution speed, as it's a really slow language.
But in fact it is easier?

Quote:
Truly, it is libraries like this that need to be burned in a lake of boiling liquid sulfur, not put in to general use.
Thanks a lot...

Quote:
The concept of DRY (Don't Repeat Yourself) is a good one at it's core. Try to minimize repetition to ease development and maintenance. However, when you attempt to abstract to the point of a general solution, you're trying too hard. One's attempts at reducing repetition should be focused on specific instances of repetition, and trying to consolidate them. Attempting to consolidate 20 different things all in to one, without assessing if they should actually be consolidated, inevitably leads to the aforementioned inner-platform effect.
Well, I suppose I might have overdone some stuff, but it really isn't that bad, is it?

__________________
CustomInventory [Discussion - Download] - Got Directors Cut!
CustomMissle [Discussion - [Download (not yet)] - In development!
Other systems [Spawn System] [Move System] [CustomBar] [SpellBar]

Last edited by Anachron : 03-11-2010 at 07:40 AM.
Anachron is offline   Reply With Quote
Old 03-11-2010, 09:47 AM   #14
Earth-Fury
Two Blue
 
Earth-Fury's Avatar
 
Join Date: Mar 2003
Posts: 2,179

Submissions (7)

Earth-Fury is just really nice (343)Earth-Fury is just really nice (343)Earth-Fury is just really nice (343)Earth-Fury is just really nice (343)

Send a message via MSN to Earth-Fury
Default

  1. Don't use hidden tags like that. It's horrible.

  2. Quote:
    Originally Posted by Anachron
    If you ignore all the features, its sure that you can't see it. But seriously, just check its advances and get into it.
    I've read the code. It's not better than writing your own filters. It is mildly simpler for the most basic case, and only the most basic case. Beyond that, it is also slow, and your implementation is poor.

  3. Quote:
    Originally Posted by Anachron
    Is it lazyness or do you just don't want to get anything of this system? Seems kinda like it.
    Is that English? Seems kind of like it.

  4. Quote:
    Originally Posted by Anachron
    You only have one point, uh?
    He has many points... he even listed them.

  5. Quote:
    Originally Posted by Anachron
    They are the same way flexible, because they also support user defined filters.
    The same amount of flexibility at the cost of a higher complexity is exactly why a library like this is fundamentally flawed.

  6. Quote:
    Originally Posted by Anachron
    Yes, but no other filtersystem does that.
    The concern people are bringing forth is: Is there a need for any filter system?

  7. Quote:
    Originally Posted by Anachron
    Yes, you will need a HELL more control.
    Again, not really comprehending what you are trying to get across. Makes it really easy to ignore you argument when you don't make it coherent.

  8. Quote:
    Originally Posted by Anachron
    It really is.
    Having to learn to use an entire system to do something JASS was built to do from the start is not easy, or simple, or really sane, unless it provides noticeable improvements in what can be done. Which this does not provide.

  9. Quote:
    Originally Posted by Anachron
    You can make an ENUMERATION tree, which you can't in normal filters.
    You can do anything you bloody well want with normal filters, while doing it better, faster, and likely cleaner than you can with this system.

  10. Quote:
    Originally Posted by Anachron
    Big maps with a lot of enumerations, such as missle systems with collisions.
    ... Boolexprs don't leak, and you will use only a few of them even if you use a different boolexpr for each groupenum in your whole map. Those two points are completely stupid.

  11. Quote:
    Originally Posted by Anachron
    Yes, but again its harder to connect.
    That is the only potentially valid point you may have. It is, however, negated by the ease of using function interfaces.

    Any usage of a system like this would be mostly in map-specific code, which means you could solve the problem specifically in the map instead of generally in a stupid system like this, and end up with a better result.

  12. Quote:
    Originally Posted by Anachron
    NEW POINTS! (If you still don't believe me)
    I still don't.

  13. Quote:
    Originally Posted by Anachron
    • You don't need new functions for every boolexpr filter
    • You can connect them easily
    See above.

  14. Quote:
    Originally Posted by Anachron
    And please, check the examples here.
    I did.
  15. Quote:
    Originally Posted by Anachron
    I did a map and I needed a lot of filter systems, that was the purpose for doing this.
    That is a reason to engineer a solution for your specific problem. Inner-platforms are born out of seeing repetition, and trying far too zealously to squash it. You end up with a giant bloated mess who's usage makes little sense, instead of solving a concrete problem.

  16. Quote:
    Originally Posted by Anachron
    Well, it really isn't. Checked the testmap? You can do things much easier imho.
    As I said, the simplest thing is made slightly simpler, at the cost of massive amounts of speed and complexity for more complex things. It simply makes no sense. The library by Tot is actually a better library, as it does not attempt to do too much all at once. It does two things, and only two things. (Combining unit type comparisons and ally state comparisons.) And even that is too much crap for what you gain with it.

  17. Quote:
    Originally Posted by Anachron
    But in fact it is easier?
    See above.

  18. Quote:
    Originally Posted by Anachron
    Well, I suppose I might have overdone some stuff, but it really isn't that bad, is it?
    It is.
__________________
Useful Links:
My Resources:
Good Resources:
Search
Tutorials
Ability Guide

UnitMaxState
BonusMod

AutoIndex
ARGB
TimerUtils

Earth-Fury is offline   Reply With Quote
Old 03-29-2010, 08:10 AM   #15
Anachron
User
 
Anachron's Avatar
 
Join Date: Mar 2009
Posts: 1,079

Anachron will become famous soon enough (51)Anachron will become famous soon enough (51)

Default

If you checked the examples, how can you still say that this system is bad? It's fast, efficient and has a lot of new functionality.
It even provides new features that makes life easier.
__________________
CustomInventory [Discussion - Download] - Got Directors Cut!
CustomMissle [Discussion - [Download (not yet)] - In development!
Other systems [Spawn System] [Move System] [CustomBar] [SpellBar]
Anachron is offline   Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off


All times are GMT. The time now is 11:55 PM.


Affiliates
The Hubb The JASS Vault Clan WEnW Campaign Creations Clan CBS GamesModding Flixreel Videos

Powered by vBulletin (Copyright ©2000 - 2019, Jelsoft Enterprises Ltd).
Hosted by www.OICcam.com
IT Support and Services provided by Executive IT Services