SUPPORT ACCOUNT CLANS
Welcome, Unregistered.
 

Thread: How to make a hero

Page 1 of 30 1234511 ... LastLast
Results 1 to 20 of 614

Hybrid View

  1. #1
    Offline
    S2 Staff Member S2 Games Staff
    Join Date
    Jul 2009
    Posts
    5,571

    How to make a hero

    So today I am going to shine a little light on how I take a blank template and turn it into a hero, my example being the Plague Rider. The point of this is that you can take this information and make your own custom hero to play around with ingame and test with in practice mode. Any hero you make won't work in a real game ever, so I will explain how to set it to dev mode so you won't have to worry about it showing up.

    This is our entity editor: http://notepad-plus.sourceforge.net/uk/site.htm

    =]

    First of all you need to set up the folder structure correctly. Formatting is a big deal, so pay attention! Make a new folder named the name of whatever hero you want, and inside set up a bunch of files and folders. The name of the file is important, but they are all just notepad++ files.

    Code:
    Folder named Hero name
    |-ability_01 (folder)
      |-ability.entity
      |-state.entity
    |-ability_02 (folder)
      |-ability.entity
      |-state.entity
    |-ability_03 (folder)
      |-ability.entity
      |-state.entity
    |-ability_04 (folder)
      |-ability.entity
      |-affector.entity
      |-state.entity
    |-projectile (folder)
      |-projectile.entity
    |-hero.entity
    I am going to link what the default of each file looks like.

    hero.entity
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <hero
        name="Hero_Name"
    
        team="Dev_Legion"
        icon="icon.tga"
        portrait="icon.tga"
        model="model.mdf"
        skin=""
        
        passiveeffect=""
        spawneffect=""
        respawneffect="/shared/effects/respawn.effect"
        selectedsound="sounds/voice/select_%.wav"
        selectedflavorsound="sounds/voice/select_flavour_%.wav"
        confirmmovesound="sounds/voice/move_%.wav"
        confirmattacksound="sounds/voice/attack_%.wav"
        nomanasound="sounds/voice/no_mana.wav"
        cooldownsound="sounds/voice/cooldown.wav"
        announcersound="sounds/voice/hero_select.wav"
        tauntedsound="sounds/voice/taunt_prior.wav"
        tauntkillsound="sounds/voice/taunt_after.wav"
        
        preglobalscale="1"
        modelscale="1.0"
        effectscale="1"
        boundsheight="112"
        boundsradius="24"
        selectionradius="48"
        targetoffset="0 0 64"
    
        movespeed="300"
        turnrate="450"
        turnsmoothing="0.05"
        
        maxhealth="150"
        healthregen="0.25"
        maxmana="0"
        manaregen="0.01"
    
        armor="0.0"
        magicarmor="5.5"
    
        inventory0="Ability_Name1"
        inventory1="Ability_Name2"
        inventory2="Ability_Name3"
        inventory3="Ability_Name4"
        inventory4="Ability_AttributeBoost"
        inventory5=""
        inventory6=""
        inventory8="Ability_Taunt"
    
        attackduration="1000"
        attackactiontime="500"
        attackcooldown="1700"
        attackdamagemin="10"
        attackdamagemax="40"
        attacknumanims="2"
        attackoffset="20 64 100"
        attackprojectile="Projectile_Name_Attack"
        attackrange="600"
        attackstarteffect=""
        attackactioneffect=""
        attackimpacteffect=""
        attacktype="ranged"
        combattype="Hero"
    
        aggrorange="800"
        sightrangeday="1800"
        sightrangenight="800"
        wanderrange="250"
        
        corpsetime="3300"
        corpsefadetime="3000"
        corpsefadeeffect="/shared/effects/corpse_sink.effect"
    
        primaryattribute="Intelligence"
        strength="10"
        strengthperlevel="1"
        agility="10"
        agilityperlevel="1"
        intelligence="10"
        intelligenceperlevel="1"
    >
        <recommendeditem name="" />
        <recommendeditem name="" />
        <recommendeditem name="" />
        <recommendeditem name="" />
        
        <recommendeditem name="" />
        <recommendeditem name="" />
        <recommendeditem name="" />
        <recommendeditem name="" />
        
        <recommendeditem name="" />
        <recommendeditem name="" />
        <recommendeditem name="" />
        <recommendeditem name="" />
    </hero>
    projectile.entity
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <projectile
        name="Projectile_Name_Attack"
    
        speed=""
        gravity=""
    
        modelscale="1"
        model="/core/null/null.mdf"
    
        traileffect=""
        impacteffect=""
    >
    </projectile>
    ability.entity
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <ability
        name="Ability_Name#"
    
        icon="icon.tga"
        
        anim="ability_1"
        casttime="1000"
        castactiontime="500"
    
        maxlevel="4"
        requiredlevel="1,3,5,7"
    
        actiontype=""
        targetscheme=""
        casteffecttype=""
        
        manacost=""
        cooldowntime=""
    >
        <onimpact>
        </onimpact>
        
        <onframe>
        </onframe>
        
        <modifier>
        </mofifier>
    </ability>
    state.entity
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <affector
        name="Affector_Name_Ability#"
    
        radius=""
        lifetime=""
        targetselection=""
        targetscheme=""
        effecttype=""
    >
        <onimpact>
        </onimpact>
        
        <onframe>
        </onframe>
        
        <modifier>
        </modifier>
    </affector>
    affector.entity
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <state
        name="State_Name_Ability#"
        
        icon="icon.tga"
        passiveeffect=""
        
        effecttype=""
    >
        <onimpact>
        </onimpact>
        
        <onframe>
        </onframe>
        
        <modifier>
        </modifier>
    </state>
    From here you can go back through all the files and plug in the appropriate values for what you want to do. Not all the variables need to be changed, though.

    In the hero.entity file, change the name="Hero_Name" to whatever your hero is called instead of Name. Capitalization is important, so be consistent. You need to make sure the team has "Dev_" in it. You can change this to Hellbourne instead of Legion if you want. The Dev command will make your hero only show up in Dev mode, which you turn on by opening the console and type cg_dev 1.

    Don't touch any of the preglobal scale, sound stuff, or bounds radius settings. You can adjust the movespeed and turnrate, but don't mess with turn smoothing unless it looks bad. .05 is fine most of the time.

    Max health is always 150 base (normal hero) and max mana is always 0. Armor changes based on what you want your hero's base armor to be. Most heroes have negative base armor in this stat. Magicarmor doesnt change.

    Leave the inventory for now, only mess with this if you want to make more complex double or triple interfaces. Just replace Name with your hero name, same capitalization as above.

    You can change the attackactiontime and damage numbers as you want. Set the attackprojectile to "" if the hero is melee, and if he is ranged you can change the range here as well.

    Leave the aggro, sight, wander stuff, corpse timers, and fade stuff alone.

    At the bottom you can set what your main stat is and then set the stats and stat gain. You can also input the 12 recommended items for your hero if you know exactly what you want him to end up getting. If you leave these blank, then the Recommended shop will be empty, so no big deal for right now.

    Here is an example from the Plague Rider (internal name DiseasedRider):

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <hero
        name="Hero_DiseasedRider"
    
        team="Hellbourne"
        icon="icon.tga"
        portrait="icon.tga"
        model="model.mdf"
        skin=""
        
        passiveeffect="effects/body.effect"
        spawneffect=""
        respawneffect="/shared/effects/respawn.effect"
        selectedsound="sounds/voice/select_%.wav"
        selectedflavorsound="sounds/voice/select_flavour_%.wav"
        confirmmovesound="sounds/voice/move_%.wav"
        confirmattacksound="sounds/voice/attack_%.wav"
        nomanasound="sounds/voice/no_mana.wav"
        cooldownsound="sounds/voice/cooldown.wav"
        announcersound="sounds/voice/hero_select.wav"
        tauntedsound="sounds/voice/taunt_prior.wav"
        tauntkillsound="sounds/voice/taunt_after.wav"
        
        infoheight="250"
        preglobalscale="1.6"
        modelscale="1.0"
        effectscale="0.9"
        boundsheight="112"
        boundsradius="24"
        selectionradius="48"
        targetoffset="0 0 64"
    
        movespeed="305"
        turnrate="450"
        turnsmoothing="0.1"
    
        maxhealth="150"
        healthregen="0.25"
        maxmana="0"
        manaregen="0.01"
    
        armor="-1.0"
        magicarmor="5.5"
    
        inventory0="Ability_DiseasedRider1"
        inventory1="Ability_DiseasedRider2"
        inventory2="Ability_DiseasedRider3"
        inventory3="Ability_DiseasedRider4"
        inventory4="Ability_AttributeBoost"
        inventory5=""
        inventory6=""
        inventory8="Ability_Taunt"
    
        attackduration="1000"
        attackactiontime="460"
        attackcooldown="1700"
        attackdamagemin="19"
        attackdamagemax="38"
        attacknumanims="2"
        attackoffset="0 120 90"
        attackprojectile="Projectile_DiseasedRider_Attack"
        attackrange="550"
        attackstarteffect=""
        attackactioneffect=""
        attackimpacteffect=""
        attacktype="ranged"
        combattype="Hero"
    
        aggrorange="800"
        sightrangeday="1800"
        sightrangenight="800"
        wanderrange="250"
        
        corpsetime="3300"
        corpsefadetime="3000"
        corpsefadeeffect="/shared/effects/corpse_sink.effect"
    
        primaryattribute="Intelligence"
        strength="18"
        strengthperlevel="1.55"
        agility="15"
        agilityperlevel="2"
        intelligence="18"
        intelligenceperlevel="3.25"
    >
        <recommendeditem name="Item_MinorTotem" />
        <recommendeditem name="Item_RunesOfTheBlight" />
        <recommendeditem name="Item_HealthPotion" />
        <recommendeditem name="Item_HomecomingStone" />
        
        <recommendeditem name="Item_Strength5" />
        <recommendeditem name="Item_Intelligence5" />
        <recommendeditem name="Item_Astrolabe" />
        <recommendeditem name="Item_Steamboots" />
        
        <recommendeditem name="Item_HealthMana3" />
        <recommendeditem name="Item_Intelligence7" />
        <recommendeditem name="Item_BarrierIdol" />
        <recommendeditem name="Item_Morph" />
    </hero>
    The projectile file only needs three things changed (if you use a projectile).

    The name="" must match the attackprojectile from the hero.entity file. You then can change the speed and gravity. Gravity gives it the arch in the air, but it doesn't slow it down at all, even if you set the gravity to 30000 it will still get to the target as if the gravity was 0 (straight line).

    Leave the model as the null.mdf. This is the teapot.

    Now... onto abilities.

    In the ability folders, you will be modifying the ability.entity. You might or might not need the state.entity, or you might need more files. It depends on what you want to do and how things you want to do work. I can't really run you through all the possible examples, but just show you what an easy ability would look like compared to a complex one.

    The general rule is if you need to buff or debuff or DOT, you need a state.entity. If you are doing AOE damage, you can either use the <areaofeffect> tag or use an affector. If you are doing something that needs a delay (like do X after .3 seconds or like magmus's ult which impacts 5-8 times (boom, wait, boom, wait, boom, wait, etc) you need an affector.

    Projectile files are just for if you want your guy to throw something and the impact to happen after the projectile gets there.

    Just make sure to set maxlevel and requiredlevels to appropiate values.

    Actiontype says what targetting scheme you get. target_entity means you click a unit, target_position means you click a position on the ground. Also, the casteffecttype tells you who you can cast it on. Magic = cant target magic immune. Physical = cant target physical immune. Transfigure = can't use on creeps that are immune to transfigure.

    IE: Magic Dominate will make it so you can't cast it on anything that can't be dominated (like the big creeps) and you can't cast it on magic immune units (like the blue guys with wings).

    manacost and cooldowntime are self explanatory. If you want to make something scale with level, just put a comma inbetween the values. The engine automattical just uses the correct value based on level. Range is in just basic units. All time is in miliseconds... so 50000 is 50 seconds.

    Finally, <onimpact> is when you either A) click the button if there is no projectile or B) when the projectile you throw with the ability get to the target.

    So here is a simple ability. This is Plague Rider's ability to kill a creep and get mana.

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <ability
        name="Ability_DiseasedRider3"
    
        icon="icon.tga"
        
        anim="ability_3"
        casttime="1100"
        castactiontime="400"
    
        maxlevel="4"
        requiredlevel="1,3,5,7"
    
        actiontype="target_entity"
        targetscheme="ally_creeps"
        casteffecttype="Magic Transfigure"
    
        manacost="25"
        cooldowntime="55000,50000,45000,40000"
        
        range="400"
    >
        <onimpact>
            <playeffect effect="effects/impact.effect" target="source_entity" source="target_entity" />
            <playeffect effect="effects/self.effect" target="source_entity" source="source_entity" />
            <playeffect effect="effects/target.effect" target="target_entity" source="target_entity" />
            <setvar0 a="target_health" b=".15,.3,.45,.6" op="mult"/> 
            <givemana target="source_entity" amount="var0" />
            <popup name="bonus_mana" a="var0" source="source_entity" target="source_entity" />        
            <kill target="target_entity" source="" experiencebountymult="0.0" />        
        </onimpact>
    </ability>
    Notice at the end it sets the experiencebountymult to 0 so no one gets experience for the kill and the source is "", meaning there is no source. This translates into the fact that it doesn't count as a deny for the player.

    So that was simple, it should make sense. Here is a tip. If you want to know what things are in an ability, find a line after the <onimpact> and put <printdebuginfo /> in there. It will print out all of the relevant information like who is the target, who is the source, what the var s are, etc.

    It's helpful if you get lost.

    So let's see a complex ability. Like... Plague Rider's new ult.

    Three files, the ability, the projectile, and the state.

    Ability.entity
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <ability
        name="Ability_DiseasedRider4"
    
        icon="icon.tga"
        
        statuseffecttooltip="State_DiseasedRider_Ability4"
        anim="ability_4"
        casttime="1100"
        castactiontime="400"
        casteffect=""
    
        maxlevel="3"
        requiredlevel="6,11,16"
    
        actiontype="target_entity"
        targetscheme="nonstealth_organic_enemy_units"
        casteffecttype=""
    
        manacost="200,325,500"
        cooldowntime="145000,115000,60000"
        
        range="750"
    >
        <onimpact>
            <spawnprojectile name="Projectile_DiseasedRider_Ability4" source="source_entity" target="target_position" proxy="target_entity" param="8" />
        </onimpact>
    </ability>
    projectile.entity
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <projectile
        name="Projectile_DiseasedRider_Ability4"
    
        speed="480"
        gravity="0"
        
        flying="true"
        flyheight="48"
    
        modelscale="1.2"
        model="effects/model.mdf"
    
        impacteffect=""
        invalideffect=""
        traileffect="effects/trail.effect"
    >
        <onimpact>
            <!-- Deal damage and apply state if the target is still valid -->
            <cantarget targetscheme="nonstealth_organic_enemy_units" target="proxy_entity">
                <!-- Stun on first impact -->
                <condition test="param eq 7">
                    <applystate name="State_Stunned" duration="100" target="proxy_entity" />
                </condition>
            
                <!-- Boost with SotM -->
                <hasmodifier name="ult_boost">
                    <damage effecttype="Magic" amount="370,460,550" target="proxy_entity" />
                </hasmodifier>
                <else>
                    <damage effecttype="Magic" amount="280,370,460" target="proxy_entity" />
                </else>
                <applystate name="State_DiseasedRider_Ability4" target="proxy_entity" duration="4000" />
            </cantarget>
            
            <!-- Impact effect -->
            <playeffect effect="effects/impact.effect" target="proxy_position" source="proxy_position" />
            
            <!-- Bounce -->
            <condition test="param gt 0">
                <setvar0 a="param" b="1" op="sub" />
                <areaofeffect
                    radius="600"
                    maxtotalimpacts="1"
                    targetselection="random"
                    targetscheme="nonstealth_organic_enemy_units"
                    center="proxy_position"
                    ignore="proxy_entity"
                >
                    <spawnprojectile name="Projectile_DiseasedRider_Ability4" source="proxy_position" target="target_position" proxy="target_entity" param="var0" />
                </areaofeffect>
            </condition>
        </onimpact>
    </projectile>
    state.entity
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <state
        name="State_DiseasedRider_Ability4"
    
        icon="icon.tga"
    
        movespeedslow="0.3"
        attackspeed="-.2"
    
        effecttype="StatusDebuff"
    >
    </state>
    Fun, isn't it? =]

    Just be sure to make the names at the top of the files match correctly. ability.entity files need to match the ones in the hero.entity file and the state or affector ones need to match where they are called in the ability.entity they are for.

    You can open the resource file with winrar and explore the hero files and folders to get an idea of how to make this work right.

    When you finish your hero just drop it into the folder with all of the other heroes (game/heroes/) and you will be able to see it in practice mode after you turn on dev mode (make sure your hero is a dev hero!)

    You might have to remove it to play on real servers, but not sure. Depends how we change our server code to work. As long as it's a dev hero it should be fine.
    Last edited by MaxGhost; 01-29-2010 at 11:58 AM.

  2. #2
    Offline
    Account Icon
    Join Date
    Sep 2009
    Location
    Austria, Vienna
    Posts
    12,243
    I don't have time to look through all of that right now, but I smell awesomeness.

    Forum Moderators are not S2 Games employees. My posts in no way represent the view of S2 Games or any of its staff.

    Please use the report post function to have me review a post that you believe is breaking the Forum Rules.
    Check the Sticky Threads for additional information on this sub-forum and the Announcement Threads for more information about Heroes of Newerth as a whole!

    -----------------------------


  3. #3
    i read most of it and will give it a try soon, but by the looks of it this mean you will just get a teapot and the spells will have no animations (more teapots yay!) unless you take existing ones and place them in the folder or create your own. is this correct?

  4. #4
    Offline
    S2 Staff Member S2 Games Staff
    Join Date
    Jul 2009
    Posts
    5,571
    Quote Originally Posted by FearParanoia View Post
    i read most of it and will give it a try soon, but by the looks of it this mean you will just get a teapot and the spells will have no animations (more teapots yay!) unless you take existing ones and place them in the folder or create your own. is this correct?
    Right, and I didn't get into the effects at all, which is a whole nother bag of marbles.

  5. #5
    Quote Originally Posted by Idejder View Post
    Right, and I didn't get into the effects at all, which is a whole nother bag of marbles.
    also, is it possible to activate dev mode and host a public game with your hero in it? i'm thinking no because i have tried this with maps i edited myself but wouldn't work because the other person wouldn't have the same map i did, is this the same?

    and btw awesome guide, this is going to excite a lot of people.

  6. #6
    Awesome, if only I understood even 5% of that... SOMEONE MAKE A TECHIES LOL
    Quote Originally Posted by Eccentrikit View Post
    How to use ALT + F4 to RAGE QUIT HoN:
    1) Open Console (Ctrl + F8)
    2) Type in "Bind ALT+F4 Quit"
    -Alternatively, you can use "Disconnect" instead of "Quit" to disconnect from current game.
    3) press ALT + F4 to RAGE QUIT!
    -Note: This will NOT work if you have a chatbox focused. (Escape to unfocus a chatbox)
    **If you have any questions about keybinds in HoN, feel free to ask and I'll try my best to help.

  7. #7
    Quote Originally Posted by Eccentrikit View Post
    Awesome, if only I understood even 5% of that... SOMEONE MAKE A TECHIES LOL
    lulz im makin a techies

    using an edited and obv smaller version of engineer atm, got any better idea for the model?

  8. #8
    Offline
    S2 Staff Member S2 Games Staff
    Join Date
    Jul 2009
    Posts
    5,571
    No you cannot. The server controls who and what is available, so since the server doesn't have your hero... well... you see the point.

  9. #9
    :O
    I will get to work on this right away!
    Any chance you could explain the effects bit? (I could most likely figure this out myself, but I'm currently in a rush right now and have only skimmed through your post.)
    I <3 Efel.

    Stuff Made by Yours Truly
    Deadwood Pawnch
    Gauntlet [Unsatisfied with it]
    Engineer's Direction Based Turret
    Riftshard Upgrades


    If I don't respond to your pm, it's because I'm currently processing and evaluating other pms.

  10. #10
    Is this the beginning of a series of tutorials for learning some of the editor?

  11. #11
    Offline
    Account Icon
    Chat Symbol
    Join Date
    Jun 2009
    Location
    Ontario, Canada
    Posts
    4,608
    Hey Idejder, could you post a list of variable types with basic examples of what some & what they do?

    For example, I'm looking to make a ranged nuke that deals damage based on my hero's Strength. Or another is a leap-attack skill with AoE damage based on his max hp.

    Any tips on how I could go about doing this?

    Edit: Here's the basic breakdown of my hero's skills (Giant, located in sig).
    - Active AoE damage/stun centered around self; damage based on Giant's STR
    - Active Self-buff, channels for 'x' seconds gaining 'y' STR per second, lasts 'z' seconds.
    - Passive ability that deals 'x' AoE damage & 'y'% AoE slow based on distance moved; damage based on STR
    - Active Minor leap that deals AoE damage based on Giant's max hp, and scales down (dealing less damage) further away from Giant's location. (Different values at 100,200,350,500 radius)


    I know skills 3 & 4 are probably going to be too complicated... but I'd like to at least code 1 & 2, which shouldn't be too difficult (I think). Any quick tips on how to do it? PM me or post here for a public example if you have the time. Thanks!
    Last edited by Anghkor; 09-21-2009 at 09:17 AM.
    "Everything is valuable under the right conditions. To a man dying of thirst, water be more precious than gold. To a drowning man, water be of little worth and great trouble."

    "The best way to predict your future is to create it."

  12. #12
    Offline
    Account Icon
    Chat Symbol
    Join Date
    Jun 2009
    Location
    Ontario, Canada
    Posts
    4,608
    Quote Originally Posted by Anghkor View Post
    Hey Idejder, could you post a list of variable types with basic examples of what some & what they do?

    For example, I'm looking to make a ranged nuke that deals damage based on my hero's Strength. Or another is a leap-attack skill with AoE damage based on his max hp.

    Any tips on how I could go about doing this?

    Edit: Here's the basic breakdown of my hero's skills (Giant, located in sig).
    - Active AoE damage/stun centered around self; damage based on Giant's STR
    - Active Self-buff, channels for 'x' seconds gaining 'y' STR per second, lasts 'z' seconds.
    - Passive ability that deals 'x' AoE damage & 'y'% AoE slow based on distance moved; damage based on STR
    - Active Minor leap that deals AoE damage based on Giant's max hp, and scales down (dealing less damage) further away from Giant's location. (Different values at 100,200,350,500 radius)


    I know skills 3 & 4 are probably going to be too complicated... but I'd like to at least code 1 & 2, which shouldn't be too difficult (I think). Any quick tips on how to do it? PM me or post here for a public example if you have the time. Thanks!
    For the first spell, I have the basics done, but I need the code to add damage based on his Strength. Everything else is good to go.

    I still need some assistance with the others though, so if anyone who knows what they're doing has some time, PM me if you can help. Thanks in advance.

    Edit: Skill 2 is almost done, I just need to figure out how to break channeling (it keeps channeling regardless), and how to extend the buff duration when the channeling ends. Works great though, so far. I incorporated some code from Insanitarius that handled all of the max/current HP numbers when STR changes.
    Last edited by Anghkor; 09-21-2009 at 02:49 PM.
    "Everything is valuable under the right conditions. To a man dying of thirst, water be more precious than gold. To a drowning man, water be of little worth and great trouble."

    "The best way to predict your future is to create it."

  13. #13
    Offline
    Account Icon
    Join Date
    Jul 2009
    Posts
    160
    tyvm Idejder for your tutorial . heres some result of my hero ^_^ ( took me long enough to understand all that )

  14. #14
    Offline
    Account Icon
    Chat Symbol
    Join Date
    Jun 2009
    Location
    Ontario, Canada
    Posts
    4,608
    On another note, is there a way to view the code in the other hero files? I'd like to use their code as a reference for creating new, similar effects & skills, if that's possible.
    "Everything is valuable under the right conditions. To a man dying of thirst, water be more precious than gold. To a drowning man, water be of little worth and great trouble."

    "The best way to predict your future is to create it."

  15. #15
    Offline
    Account Icon
    Join Date
    Jul 2009
    Posts
    160
    just open resource0.s2z file with winrar , go to heroes folder , choose your hero you want to "copy/edit" , at least htats hod i did it. You can also turn boses into heroes , just like i did , to find their files , go to "npc" folder withint resource0.s2z

  16. #16
    Quote Originally Posted by kpobococ View Post
    just open resource0.s2z file with winrar , go to heroes folder , choose your hero you want to "copy/edit" , at least htats hod i did it. You can also turn boses into heroes , just like i did , to find their files , go to "npc" folder withint resource0.s2z
    when i open file resource0.s2z i don't have a heroes folder my list looks like

    (textures)
    (fonts)
    (core)
    core.resources
    checksums

    all in () are folders any tips?

  17. #17
    Offline
    Account Icon
    Chat Symbol
    Join Date
    Jun 2009
    Location
    Ontario, Canada
    Posts
    4,608
    Yeah... I did that. I was having a problem opening the individual files to see the code, but I fixed the problem.
    "Everything is valuable under the right conditions. To a man dying of thirst, water be more precious than gold. To a drowning man, water be of little worth and great trouble."

    "The best way to predict your future is to create it."

  18. #18
    Offline
    Account Icon
    Join Date
    Jul 2009
    Location
    Canada
    Posts
    3,256
    Quote Originally Posted by Anghkor View Post
    Yeah... I did that. I was having a problem opening the individual files to see the code, but I fixed the problem.
    You can open them with Notepad++ no problem which Idejder linked at the beginning
    Last edited by Warchamp7; 09-21-2009 at 11:51 AM.
    I'm an honest guy who's not afraid to be blunt. Hope you can handle that.

  19. #19
    Omfg, can't wait to mess around with this, thanks for the tutorial!

  20. #20
    I can't wait to do this.

    Forum Moderators are not S2 Games employees. My posts in no way represent the view of S2 Games or any of its staff.

    Please use the report post function to have me review a post that you believe is breaking the Forum Rules.
    Check the Sticky Threads for additional information on this sub-forum and the Announcement Threads for more information about Heroes of Newerth as a whole!

    -----------------------------

    Having trouble getting started? The Training Grounds and Project Epoch can help!
    I am of the firm opinion that subtracting "raging stupidity" from anyone's voice can only cause them to sound more like myself.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •