• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!
edo494
Reaction score
85

Profile posts Latest activity Postings Experience Resources About

  • Uninspiring. You gave me all the ones that are top rated in the thing but I played all of them :(
    D
    Hey! You don't actually need to review the Event anymore, as I've moved on :) It was nice found, but as it's no instant (vs TriggerEvaluate), it doesn't offer as much functionality. Though I know a scenario where it comes in super handy to have 5ms convenient delay, it's just not that important.

    So as I've moved on,

    Can you check this system? :p
    [stable][c]Table v1.0.3[/stable]I know it doesn't have all the functionality (TableArr/List miss the flush - method etc.), but how does it look like in general?

    Here's a quick demo I made:
    scope TestInferface initializer init
    //! runtextmacro TABLE_EXTEND ("","sTable","string","Str")
    /* Set-up guide:

    1. Sort your methods in such order: ( !tm=//! runtextmacro(...) )

    !tm TI_TOP()
    ...
    void destroy()
    !tm TI_DEALLOC()
    ...
    static thistype create(<stuff>)
    local thistype this
    !tm TI_ALLOC()
    ...
    !tm TI_BOT()

    2. Have non-static method called "fire" in place of "..."

    3. Your struct now uses interface! */
    private struct ChildA extends array
    //! runtextmacro TI_TOP()
    private static sTable sT
    method destroy takes nothing returns nothing
    //! runtextmacro TI_DEALLOC()
    endmethod
    static method create takes string s returns thistype
    local thistype this
    //! runtextmacro TI_ALLOC()
    set sT[this]=s
    return this
    endmethod
    method fire takes nothing returns nothing
    call BJDebugMsg("ChildA says: "+sT[this])
    endmethod
    private static method onInit takes nothing returns nothing
    set sT=Table.create()
    endmethod
    //! runtextmacro TI_BOT()
    endstruct
    private struct ChildB extends array
    //! runtextmacro TI_TOP()
    private static sTable sT
    method destroy takes nothing returns nothing
    //! runtextmacro TI_DEALLOC()
    endmethod
    static method create takes string s returns thistype
    local thistype this
    //! runtextmacro TI_ALLOC()
    set sT[this]=s
    return this
    endmethod
    method fire takes nothing returns nothing
    call BJDebugMsg("ChildB says: "+sT[this])
    endmethod
    private static method onInit takes nothing returns nothing
    set sT=Table.create()
    endmethod
    //! runtextmacro TI_BOT()
    endstruct
    private struct ChildC extends array
    //! runtextmacro TI_TOP()
    private static sTable sT
    method destroy takes nothing returns nothing
    //! runtextmacro TI_DEALLOC()
    endmethod
    static method create takes string s returns thistype
    local thistype this
    //! runtextmacro TI_ALLOC()
    set sT[this]=s
    return this
    endmethod
    method fire takes nothing returns nothing
    call BJDebugMsg("ChildC says: "+sT[this])
    endmethod
    private static method onInit takes nothing returns nothing
    set sT=Table.create()
    endmethod
    //! runtextmacro TI_BOT()
    endstruct

    private function OnEsc takes nothing returns boolean
    local TI_Struct a = ChildA.create("Boo!")
    local TI_Struct b = ChildB.create("Boo!")
    local TI_Struct c = ChildC.create("Boo!")
    // test recycler
    call BJDebugMsg("a: "+I2S(a)+" ; b: "+I2S(b)+" ; c: "+I2S(c))
    call a.destroy()
    call b.destroy()
    call c.destroy()
    set a = ChildA.create("Boo!")
    set b = ChildB.create("Boo!")
    set c = ChildC.create("Boo!")
    call BJDebugMsg("a: "+I2S(a)+" ; b: "+I2S(b)+" ; c: "+I2S(c))
    call a.pop()
    call b.pop()
    call c.pop()
    return false
    endfunction

    private function init takes nothing returns nothing
    local trigger t = CreateTrigger()
    call TriggerAddCondition(t,Condition(function OnEsc))
    call TriggerRegisterPlayerEvent(t,Player(0),EVENT_PLAYER_END_CINEMATIC)
    set t = null

    call BJDebugMsg("Hit ESC to test Table Interfaces")
    endfunction
    endscope

    As always, say if you're in hurry and I wont bother you, ehehehe :hohum:
    Reputation (+4):
    (Post) [23-18-26] :user: edo494: Nestharus, if you were so good at competitive level, why havent I see you on any e-sports event yet?
    D
    Uh, just say if you're busy :/
    I just celebrate both dates of Christmas.
    Just because Christmas is not mostly in a date, Christmas is in a soul. That's what this holiday is.
    D
    actually, I made updates to them, I'll pm you the newest versions.
    D
    Uhh... about that Event?

    You could just say you have no time to check it :/
    I'm guessing it is the map path, but I could be wrong. It isn't passing it to jasshelper--it is passing it to ObjectMerger.exe (one of PitzerMike's grim extensions).
    D
    I put the VM back off because I don't like them visible to everyone :/

    But I have them back on for a while now,

    I'll PM you the map since it's still WIP.

    Notice: If you set the interval to 0.005 , the text doesn't appear anymore? And when you set it 0.007 , it appears normally. On 0.006 it blinks rapidly, at least for me. Is there a way to fix this? Or does this mean the delay of the ResumeTimer() is 5-6 milliseconds?
    D
    Would you mind taking a look at the map? I made a small demo for it.
    D
    Popper re-pauses the instance, so it can be used again. It's actually abuse of the ResumeTimer() native, because it somehow seems to call the binded function two times.

    So the order in the beginning was:
    1st run
    2nd run

    I actually didn't want the second run and it was really difficult to somehow prevent it, but creating another instantly expiring timer (binded to popper function) will result in:

    1st run
    pop function -> pause timer
    no 2nd run (because timer is paused)

    and this will result in the following: timer is still binded to the original function because it was paused before its last run. meaning the event can be used over and over again.

    I'd say it's pretty nice discovery :) but maybe someone has already discovered it?

    And there's a downside to it: You can't fire an instance two times in a row. Wc3 seems to queue the 0-second timers after function has passed, so acticating instance two times would result in:

    A's 1st run
    A's pop function -> pause timer
    no B's 1st run (because timer is paused)
    B's pop function -> messes up the system
    no A's 2nd run (because timer is paused)
    no B's 2nd run (because timer is paused)

    Also I already made a plug-in for it: http://www.hiveworkshop.com/forums/pastebin.php?id=9a1yo2

    Event Cluster chains multiple Events together via linked list so you can fire multiple functions at once.

    Atm I'm trying to cut down 2 native calls from a .fire() call, quite irritating how difficult it can be on such a short piece of code >.<
    D
    Hey do you review short libraries? (79 lines)
    Hi wanna participate in a small Dota 2 Tournament? This tournament is for people from Hive, not needed to be in a Dota 2 Group. Current goal is 16 players. Be sure to PM me if u are interested in playing.(Need time Zone too and Steam Account)
    The tournament is single elimination till the champion is risen.

    Have a nice day, mogulkhan1Axe.
    Yes I know that :D

    I meant more his specific wishes which are quite "special" and as you didn't say something like "feature request accepted" I guess its quite unlikely someone will implement them.

    But that was just my interpretation, sry if it was wrong :)
  • Loading…
  • Loading…
  • Loading…
  • Loading…
  • Loading…
Top