Announcement

Collapse
No announcement yet.

New custom Kismet nodes to download [ Updated 20/01, 2 New Added]

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    New custom Kismet nodes to download [ Updated 20/01, 2 New Added]

    Name : KB_CustomKismetActions
    Size: 25Kb

    Here are 4 new kismet actions i have coded mainly for my own use.. Others may find them usefull so i have
    posted them here with a download link and usage instructions for others to look at..


    I'll explain the uses for each in detail


    GetSeatPawn ( Actions-->Vehicles-->Get Seat Pawn)



    Usage :

    Given a Vehicle Reference (in an Object) and Seat position ( in a Int) it will return the pawn reference that is in the seat.

    Uses:

    Mainly for use with scripted sequences on bots.

    Connections: (mostly self explanatory but will list anyway)

    Inputs
    Vehicle/Vehicle Factory (Object, Input)) - The reference to your vehicle
    Seat Pawn (Object, Output) - This should contain the reference to the pawn you specified when finished
    Total Number Of Seats (Int, Output, Optional) - This returns the total number of seats the Vehicle has
    Seat Index (Int, Input, Optional, In main options (default 0) - Visual reference so you can see you have overridden the default value

    Outputs

    Out - Works exactly the same as other kismet actions

    Example use:

    (1) Spawn a Darkwalker... then spawn two bots and place the returned spawned references for each pawn in a separate object
    (2) Use a EnterVehicle node to place one bot in driver seat (0) and one in gunner seat (1)
    (3) Using a FireAt node will work for the driver but NOT the gunner

    Why doesn't the gunner FireAt work? ..

    Well... the gunner is a UTWeaponPawn.. when you issued the EnterVehicle on gunner.. the engine created a
    UTWeaponPawn with the old bots controller and attached that to the gunner seat.. your old reference is useless
    as it points to the pawn you spawned and NOT the pawn in the gunners seat
    If you use this node to get the new UTWeaponPawn reference and link that to the FireAt node it works


    GetObjectListEntry ( Actions-->ObjectList-->Get ObjectList Entry)



    Usage :

    Given an ObjectList and Index Number ( in a Int) it will return whatever is in the slot specified by Index Number.

    Uses:

    Used for getting information out of an ObjectList.. Not included in retail versions of UT3.

    Connections: (mostly self explanatory but will list anyway)

    Inputs

    ObjectListVar (ObjectList, Input)) - The reference to your ObjectList
    Index Number (Int, Input, In main options (default -1) - This should contain the Index number of the information you want to returned

    Index Number Notes
    Default of -1 returns a random entry from the objectlist
    NOTE: ObjectList are an array of Object so internally the first entry is always 0 .. e.g. Objectlist bla has 2 entries.. so it has bla[0] + bla[1]
    You specify the index directly.. A ModifyObjectList returns ListEntryCount as an Int.. you can work out the slot numbers
    by taking away 1 from ListEntryCount

    Index Content (Object, Output) - This returns the info stored in the specified slot
    Total Entries (Int, Output, Optional) - Returns the total number of entries in List (same format as ModifyObjectList output ListEntryCount)

    Outputs
    Out - Works exactly the same as other kismet actions
    Success (Optional) - A result was returned ( i.e Valid Objectlist + Index Number)
    Failed (Optional) - One of the following was not correct ( no ObjectList, empty ObjectList, or index number not valid)

    Example use:

    For a kismet random powerup spawner
    (1) Create a new Objectlist and add directly to it 4 powerups
    (2) Connect your powerup ObjectList to this node, leave Index at -1 then connect new object to index content
    (3) Every time it's fired you get a random powerup that you can use with an Actor factory (to spawn it where you need)


    GetVector ( Actions-->Actor-->Get Vector)



    Usage :

    Given an Object containing an in level actor.. it will return the position vector.

    Uses:

    Mainly for SpawnProjectile

    Connections: (mostly self explanatory but will list anyway)

    Inputs

    Target (Object, Input)) - The Actor you wish to get the vector for
    Location (Vector, Output) - The actors location

    Outputs

    Out - Works exactly the same as other kismet actions

    Example use:

    For SpawnProjectile in kismet
    (1) Get the vector of two separate actors
    (2) Plug them into the SpawnProjectile and send some deemers flying


    GetPawnHealth ( Actions-->Pawn-->Get Pawn Health/Armor)



    Usage :

    Given a pawn reference it will get the amount of health, armor (separately) or all of them combined.

    Uses:

    Mainly coded for myself to check damage amounts done by weaponfire

    Connections: (mostly self explanatory but will list anyway)

    Inputs

    Target (Object, Input)) - The Pawn you wish to get the information from
    Health (Int, Output) - How much health the pawn has
    Armor (Float, Output) - The combined total of all armor (Shieldbelt/Vest/ThighPads/Helmet)
    Combined Health/Armor (Float, Output)- The health and Armor added together
    ShieldBeltArmor (Float, Output, Optional) - How much Shieldbelt the pawn has
    VestArmor (Float, Output, Optional) - How much Vest the pawn has
    ThighPadArmor (Float, Output, Optional) - How much Thighpad the pawn has
    HelmetArmor (Float, Output, Optional) - How much Helmet the pawn has


    Outputs
    Out - Works exactly the same as other kismet actions


    How to update from previous versions

    Make sure you dont have UnrealEd or UT3 running, replace the old KB_CustomKismetActions.u with the new one from the downloaded zip file, restart UnrealED, the new actions should show up.


    Disclaimer

    There is Zero references for coding custom Kismet nodes (Thanks Epic!! .. cough.. UT3 UDN .. cough.. ) so these have been a product of some guesswork and a lot of reading epics sparse code ( i.e. mostly native). I've tested these a lot for errors offline only.. How they work in multiplay i have no idea..
    If would recommend you don't use them on a published map until i know they are multiplayer and generally safe!


    Version History

    16/01/08 - initial release
    20/01/08 - added GetVector + GetPawnHealth


    Download

    Temporarily Removed



    If you spot anything wrong with the code, want a look at the source .uc's or want more info on what a certain function does, feel free to ask

    @ Mods .. If this belongs in the Full Releases section then please move it

    #2
    Very much appreciated, KB!
    Thanks.

    You know the get ObjectListEntry is a winner

    Comment


      #3
      Ok I made something with it and it works on my end.

      This is actually something that someone requested, well sort of.
      Swap the teams at game end ! (well he/she actually wanted Round End in WAR, but there's no Round End event in Kismet )

      At Game End I collect all the players, check them 1 by 1 which team they're on and then give them a new team status.

      Cut in 2 screens.
      [shot]http://users.telenet.be/detox/switchplayers1.jpg[/shot]
      [shot]http://users.telenet.be/detox/switchplayers2.jpg[/shot]

      text file to paste in Kismet

      I collect all the players in an ObjectList, then start a delayed switch (it has 12 links for a server with max12players) which will fire a pulse every 0.2secs.

      If at GameEnd there were 6 players the Gate will Autoclose after 6 triggers.

      So every trigger will result in an Int Value of 6 then 5 then 4 etc which will be subtracted by 1

      And the Get ObjectList Entry will extract index 5
      passing it along to get the team number of that player and then change it.

      Then the next pulse comes which will extract index 4 passing it along. Etc.

      (With this method every player gets swapped 1 by 1
      I could've put all blue and all red players in a an ObjectList but the Change Team doesn't work with ObjectLists, only Objects.)

      Comment


        #4
        Originally posted by Entil'Zha View Post
        I could've put all blue and all red players in a an ObjectList but the Change Team doesn't work with ObjectLists, only Objects.)
        It's not obvious but any node that takes an object can have an objectlist connect to it aswell (since an objectlist is just an array of objects)

        If it works or not depends on how the actual node is coded, returning multiple index's to GetIndexEntry is something i plan to add at a later date.

        Comment


          #5
          Great, can you please post some small howto or tutorial maybe about how to create custom nodes? Kismet is driving me nuts even to do simple: "Case A of" statment i need to duplicate many unnecessary nodes. Some simple actions like setting random material from list turn into complicated mess of nodes, then i need to repeat it for each object. Kismet now is like coding without loops functions and procedures.

          Would be really helpfull to have tut about creating such custom nodes. And ready to use frame work to copy paste custom code into. That would really help such UT script noobs like me that are skilled in java or C.

          Comment


            #6
            Originally posted by KillBait! View Post
            It's not obvious but any node that takes an object can have an objectlist connect to it aswell (since an objectlist is just an array of objects)

            If it works or not depends on how the actual node is coded, returning multiple index's to GetIndexEntry is something i plan to add at a later date.
            Well I had an ObjectList connected to the "Get Team" at first but it would only process one or two of the Objects in it.

            Comment


              #7
              Hey Entil thats awesome! Would it work if I copy pasted that into my WAR-Sandria map? (up to 32 players max on the map)

              Comment


                #8
                It should !
                Just replace the Game End like I said in the other thread. And you also have to re-open the Gate every new round. If you can't figure it out, I'll look at it tomorrow.

                Btw, I think we should move back to the other thread, we're kind of hijacking KillBait's thread.

                Comment


                  #9
                  This may sound like a really stupid question, but I'm kinda new to custom Kismet nodes. Where do I place the KB_CustomKismetActions.u?

                  [edit]Nevermind, I found it.[/url] How does one create a custom Kismet Node? I couldn't find any info on how to do it? Can I have a look at your .uc files? Thanks in advance. BTW, if you still need a mirror for your files, just let me know, I'll be happy to host it for you, I have plenty of webspace and bandwidth.

                  Comment


                    #10
                    I've temporarily taken the download offline.. i did a test cook of the map i'm working on and there are some issue with the bots controlled by the kismet (which includes some of these nodes) and a crash when loading the cooked version in UED

                    I'm unsure if it has to do with the code, my map, or the bot pathing.

                    Until i can track down the problem i would advise you don't cook a map using these.

                    I apologize in advance and i'm trying to track the problem down ASAP

                    Comment

                    Working...
                    X