Для того , чтобы возрадить крипов нам потребуется крип находящийся по адресу dota_addons/ваш_мод/scripts/npc/npc_units_custom :
И абилка : "Ability1" "Respawn" // Ability 1
Которую вы создадите по адресу dota_addons/ваш_мод/scripts/npc/npc_abilites_custom.txt
Для работы следующего трюка потребуется базовый набор скриптов Barebones: "Addon_game_mode.lua", "timers.lua" и "Barenones.lua" , которые нужно сохранить по адресу : "dota_addons/ваш_мод/scripts/vscripts"
https://github.com/MNoya/barebones/tree/source2/game/dota_addons/barebones/scripts/vscripts
Без репозитория "timers.lua" функция "Timers:CreateTimer()" не будет работать !
А также потребуется файл, который нужно создать по адресу dota_addons/ваш_мод/scripts/vscripts/
"units.lua"
Если вы хотите, чтобы юнит возрождался на том же самом месте,где собственно и был убит,то надо вставить в файл :
Однако ,если у юнита есть точка,куда нужно вернуть бедолагу , тогда в файл надо вставить следующее:
Точку "respawn_point" можно создать в Hammer_Edditor
Entity Tool - Entity Class:"info_target" - Properties:Name"respawn_point".
Вот собсна всё .
Дополнительный гайд по теме https://customgames.ru/forum/threads/Дополнение-Гайд-как-возродить-крипов.1440/
//=================================================================================
// Creature: Gnoll Assassin
//=================================================================================
"npc_dota_creature_gnoll_assassin"
{
// General
//----------------------------------------------------------------
"Model" "models/creeps/neutral_creeps/n_creep_gnoll/n_creep_gnoll_frost.vmdl" // Model.
"BaseClass" "npc_dota_creature"
"SoundSet" "n_creep_Ranged"
"GameSoundsFile" "soundevents/game_sounds_creeps.vsndevts"
"Level" "1"
"ModelScale" ".9"
// Abilities
//----------------------------------------------------------------
"Ability1" "Respawn" // Ability 1
"Ability2" "" // Ability 2
"Ability3" "" // Ability 3
"Ability4" "" // Ability 4
// Armor
//----------------------------------------------------------------
"ArmorPhysical" "1" // Physical protection.
// Attack
//----------------------------------------------------------------
"AttackCapabilities" "DOTA_UNIT_CAP_RANGED_ATTACK"
"AttackDamageMin" "30" // Damage range min.
"AttackDamageMax" "36" // Damage range max.
"AttackRate" "1.6" // Speed of attack.
"AttackAnimationPoint" "0.4" // Normalized time in animation cycle to attack.
"AttackAcquisitionRange" "800" // Range within a target can be acquired.
"AttackRange" "500" // Range within a target can be attacked.
"ProjectileModel" "particles/neutral_fx/gnoll_base_attack.vpcf" // Particle system model for projectile.
"ProjectileSpeed" "1500" // Speed of projectile.
// Bounds
//----------------------------------------------------------------
"RingRadius" "40"
"HealthBarOffset" "170"
// Bounty
//----------------------------------------------------------------
"BountyXP" "24" // Experience earn.
"BountyGoldMin" "21" // Gold earned min.
"BountyGoldMax" "29" // Gold earned max.
// Movement
//----------------------------------------------------------------
"MovementCapabilities" "DOTA_UNIT_CAP_MOVE_GROUND"
"MovementSpeed" "270" // Speed.
// Status
//----------------------------------------------------------------
"StatusHealth" "75" // Base health.
"StatusHealthRegen" "0.5" // Health regeneration rate.
"StatusMana" "0" // Base mana.
"StatusManaRegen" "0.0" // Mana regeneration rate.
// Vision
//----------------------------------------------------------------
"VisionDaytimeRange" "400" // Range of vision during day light.
"VisionNighttimeRange" "400" // Range of vision at night time.
// Team
//----------------------------------------------------------------
"TeamName" "DOTA_TEAM_NEUTRALS" // Team name.
"CombatClassAttack" "DOTA_COMBAT_CLASS_ATTACK_PIERCE"
"CombatClassDefend" "DOTA_COMBAT_CLASS_DEFEND_BASIC"
"UnitRelationshipClass" "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"
// Creature Data
//----------------------------------------------------------------
"Creature"
{
//Level Up
"HPGain" "50"
"DamageGain" "2"
"ArmorGain" "0.25"
"MagicResistGain" "0.1"
"MoveSpeedGain" "1"
"BountyGain" "3"
"XPGain" "15"
}
}
// Creature: Gnoll Assassin
//=================================================================================
"npc_dota_creature_gnoll_assassin"
{
// General
//----------------------------------------------------------------
"Model" "models/creeps/neutral_creeps/n_creep_gnoll/n_creep_gnoll_frost.vmdl" // Model.
"BaseClass" "npc_dota_creature"
"SoundSet" "n_creep_Ranged"
"GameSoundsFile" "soundevents/game_sounds_creeps.vsndevts"
"Level" "1"
"ModelScale" ".9"
// Abilities
//----------------------------------------------------------------
"Ability1" "Respawn" // Ability 1
"Ability2" "" // Ability 2
"Ability3" "" // Ability 3
"Ability4" "" // Ability 4
// Armor
//----------------------------------------------------------------
"ArmorPhysical" "1" // Physical protection.
// Attack
//----------------------------------------------------------------
"AttackCapabilities" "DOTA_UNIT_CAP_RANGED_ATTACK"
"AttackDamageMin" "30" // Damage range min.
"AttackDamageMax" "36" // Damage range max.
"AttackRate" "1.6" // Speed of attack.
"AttackAnimationPoint" "0.4" // Normalized time in animation cycle to attack.
"AttackAcquisitionRange" "800" // Range within a target can be acquired.
"AttackRange" "500" // Range within a target can be attacked.
"ProjectileModel" "particles/neutral_fx/gnoll_base_attack.vpcf" // Particle system model for projectile.
"ProjectileSpeed" "1500" // Speed of projectile.
// Bounds
//----------------------------------------------------------------
"RingRadius" "40"
"HealthBarOffset" "170"
// Bounty
//----------------------------------------------------------------
"BountyXP" "24" // Experience earn.
"BountyGoldMin" "21" // Gold earned min.
"BountyGoldMax" "29" // Gold earned max.
// Movement
//----------------------------------------------------------------
"MovementCapabilities" "DOTA_UNIT_CAP_MOVE_GROUND"
"MovementSpeed" "270" // Speed.
// Status
//----------------------------------------------------------------
"StatusHealth" "75" // Base health.
"StatusHealthRegen" "0.5" // Health regeneration rate.
"StatusMana" "0" // Base mana.
"StatusManaRegen" "0.0" // Mana regeneration rate.
// Vision
//----------------------------------------------------------------
"VisionDaytimeRange" "400" // Range of vision during day light.
"VisionNighttimeRange" "400" // Range of vision at night time.
// Team
//----------------------------------------------------------------
"TeamName" "DOTA_TEAM_NEUTRALS" // Team name.
"CombatClassAttack" "DOTA_COMBAT_CLASS_ATTACK_PIERCE"
"CombatClassDefend" "DOTA_COMBAT_CLASS_DEFEND_BASIC"
"UnitRelationshipClass" "DOTA_NPC_UNIT_RELATIONSHIP_TYPE_DEFAULT"
// Creature Data
//----------------------------------------------------------------
"Creature"
{
//Level Up
"HPGain" "50"
"DamageGain" "2"
"ArmorGain" "0.25"
"MagicResistGain" "0.1"
"MoveSpeedGain" "1"
"BountyGain" "3"
"XPGain" "15"
}
}
Которую вы создадите по адресу dota_addons/ваш_мод/scripts/npc/npc_abilites_custom.txt
"Respawn"
{
"BaseClass" "ability_datadriven"
"AbilityTextureName" "ability_name"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE|DOTA_ABILITY_BEHAVIOR_HIDDEN"
"OnOwnerDied" //Когда юнит умирает
{
"RunScript" //Запускается скрипт
{
"ScriptFile" "scripts/vscripts/units.lua"
"Function" "Respawn"
}
}
}
{
"BaseClass" "ability_datadriven"
"AbilityTextureName" "ability_name"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE|DOTA_ABILITY_BEHAVIOR_HIDDEN"
"OnOwnerDied" //Когда юнит умирает
{
"RunScript" //Запускается скрипт
{
"ScriptFile" "scripts/vscripts/units.lua"
"Function" "Respawn"
}
}
}
https://github.com/MNoya/barebones/tree/source2/game/dota_addons/barebones/scripts/vscripts
Без репозитория "timers.lua" функция "Timers:CreateTimer()" не будет работать !
А также потребуется файл, который нужно создать по адресу dota_addons/ваш_мод/scripts/vscripts/
"units.lua"
Если вы хотите, чтобы юнит возрождался на том же самом месте,где собственно и был убит,то надо вставить в файл :
Код:
function Respawn (keys )
local caster= keys.caster --пробиваем IP усопшего
local caster_position = caster:GetAbsOrigin() --Пробиваем адрес,где лежит жмурик
local name= caster:GetUnitName() --Пробиваем имя покойного
Timers:CreateTimer(5,function() --Через сколько секунд появится новый фраер(5)
local unit = CreateUnitByName(name, caster_position + RandomVector( RandomFloat( 0, 50)), true, nil, nil, DOTA_TEAM_NEUTRALS)
-- создаем нового пацыка по трем аргументам ( имя покойного ,адрес жмурика ,true,nil,nil,Команда_нейтралов)
end)
end
Код:
function Respawn (keys )
local caster= keys.caster --пробиваем IP усопшего
local team= caster:GetTeamNumber() --пробиваем команду терпилы
local caster_respoint = Entities:FindByName(nil,"respawn_point"):GetAbsOrigin() --Пробиваем адрес дома
local name= caster:GetUnitName() --Пробиваем имя покойного
Timers:CreateTimer(5,function() --Через сколько секунд появится новый фраер(5)
local unit = CreateUnitByName(name, caster_respoint + RandomVector( RandomFloat( 0, 50)), true, nil, nil, team)
-- создаем нового пацыка по трем аргументам ( имя покойного ,адрес дома ,true,nil,nil,команда терпилы)
end)
end
Entity Tool - Entity Class:"info_target" - Properties:Name"respawn_point".
Вот собсна всё .
Дополнительный гайд по теме https://customgames.ru/forum/threads/Дополнение-Гайд-как-возродить-крипов.1440/
Последнее редактирование модератором: