Dota 2 Workshop Tools/Scripting/API/Global.CreateUnitByName: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Dota_Lebot push: Updated Page)
(Undo revision 190721 by RoyAwesome (talk))
Line 13: Line 13:


== Parameters ==
== Parameters ==
{| class="standard-table" style="width: 50%;"
{| class="standard-table" style="width: 100%;"
! Type
! Type
! Name
! Name
! Description
! Description
! Example
|-
|-
| string
| string
| a
| a
| No Description Set
| The name of the unit as referenced in the KV
| "npc_dota_creature_troll_healer"
|-
|-
| Vector
| Vector
| b
| b
| No Description Set
| The Vector at which the unit will be created
| keys.caster:GetAbsOrigin()
|-
|-
| bool
| bool
| c
| c
| No Description Set
| Whether or not to find free space for the unit
| true/false
|-
|-
| handle
| handle
| d
| d
| No Description Set
| NPC Owner, Unknown Function
| nil
|-
|-
| handle
| handle
| e
| e
| No Description Set
| Unit Owner, Unknown Function
| nil
|-
|-
| int
| int
| f
| f
| No Description Set
| The Team ID in which to place the unit
| keys.caster:GetTeam()
|}
|}


== Returns ==
== Returns ==


''handle'' - No Description Set
''handle'' - The handle to the unit that was created
 
== Example ==
 
The currently best known way to make a unit under the control of a player is something like
 
  function CreateUnit(keys)
      -- Create the unit around the caster and find free space for it to prevent getting suck
      local unit = CreateUnitByName("npc_dota_unit", keys.caster:GetAbsOrigin(), true, nil, nil, keys.caster:GetTeam())
      -- Set the owner of the new unit to the owner of the old unit
      unit.vOwner = keys.caster:GetOwner()
      -- Set the new owner as the controlling player
      unit:SetControllableByPlayer(keys.caster:GetOwner():GetPlayerID(), true )
        -- Note: Only heroes will return the correct value for keys.caster:GetPlayerOwnerID()
        -- Useing keys.caster:GetOwner():GetPlayerID() will allow created units to create more units
        -- For example having builder make a building and that building create units
  end

Revision as of 02:14, 17 June 2015

Note.pngNote: This page is automatically generated. Any changes may be overwritten

Function Description

handle CreateUnitByName(string a, Vector b, bool c, handle d, handle e, int f)

Creates a DOTA unit by its dota_npc_units.txt name ( szUnitName, vLocation, bFindClearSpace, hNPCOwner, hUnitOwner, iTeamNumber )


Parameters

Type Name Description Example
string a The name of the unit as referenced in the KV "npc_dota_creature_troll_healer"
Vector b The Vector at which the unit will be created keys.caster:GetAbsOrigin()
bool c Whether or not to find free space for the unit true/false
handle d NPC Owner, Unknown Function nil
handle e Unit Owner, Unknown Function nil
int f The Team ID in which to place the unit keys.caster:GetTeam()

Returns

handle - The handle to the unit that was created

Example

The currently best known way to make a unit under the control of a player is something like

  function CreateUnit(keys)
     -- Create the unit around the caster and find free space for it to prevent getting suck
     local unit = CreateUnitByName("npc_dota_unit", keys.caster:GetAbsOrigin(), true, nil, nil, keys.caster:GetTeam())
     -- Set the owner of the new unit to the owner of the old unit
     unit.vOwner = keys.caster:GetOwner()
     -- Set the new owner as the controlling player
     unit:SetControllableByPlayer(keys.caster:GetOwner():GetPlayerID(), true )
        -- Note: Only heroes will return the correct value for keys.caster:GetPlayerOwnerID()
        -- Useing keys.caster:GetOwner():GetPlayerID() will allow created units to create more units
        -- For example having builder make a building and that building create units
  end