- 24 Янв 2018
- 43
- 0
Что нужно убрать из кода ,чтобы респавнились только крипы, а не все что есть на карте. Ресаются даже герои, которые умирают,в виде нейтралов.Времени на изучение луа нет, а для друзей и себя карту охото сделать,помогите!И да я скопипастил с инета респавн, не надо мне этого говорить.
_G.nNEUTRAL_TEAM = 4
_G.nCREATURE_RESPAWN_TIME = 60
if CAddonTemplateGameMode == nil then
CAddonTemplateGameMode = class({})
end
require('internal/util')
require('gamemode')
function Precache( context )
DebugPrint("[BAREBONES] Performing pre-load precache")
PrecacheResource("particle", "particles/econ/generic/generic_aoe_explosion_sphere_1/generic_aoe_explosion_sphere_1.vpcf", context)
PrecacheResource("particle_folder", "particles/test_particle", context)
PrecacheResource("model_folder", "particles/heroes/antimage", context)
PrecacheResource("model", "particles/heroes/viper/viper.vmdl", context)
PrecacheModel("models/heroes/viper/viper.vmdl", context)
PrecacheResource("soundfile", "soundevents/game_sounds_heroes/game_sounds_gyrocopter.vsndevts", context)
PrecacheItemByNameSync("example_ability", context)
PrecacheItemByNameSync("item_example_item", context)
PrecacheUnitByNameSync("npc_dota_hero_ancient_apparition", context)
PrecacheUnitByNameSync("npc_dota_hero_enigma", context)
end
function OnEntityKilled (event)
local killedEntity = EntIndexToHScript(event.entindex_killed)
local sCreatureName = killedEntity:GetUnitName()
local vSpawnLoc = killedEntity.vSpawnLoc
if (vSpawnLoc == nil) then
print ("location not found")
vSpawnLoc = killedEntity:GetOrigin()
end
local vSpawnVector = killedEntity.vSpawnVector
if (sCreatureName ~= "npc_dota_neutral_mud_golem") then
GameRules:GetGameModeEntity():SetContextThink (string.format( "CreatureThink_%d", event.entindex_killed ), function () SpawnUnit(sCreatureName, vSpawnLoc) end, nCREATURE_RESPAWN_TIME)
else
local newItem = CreateItem("item_flask", nil, nil)
newItem:SetPurchaseTime(0)
CreateItemOnPositionSync(killedEntity:GetOrigin(), newItem)
newItem:LaunchLoot(false, 300, 0.75, killedEntity:GetOrigin() + RandomVector(RandomFloat(50, 350)))
end
end
function SpawnUnit (sCreatureName, vSpawnLoc, vSpawnVector)
local hUnit = CreateUnitByName(sCreatureName, vSpawnLoc, true, nil, nil, nNEUTRAL_TEAM )
hUnit.vSpawnLoc = vSpawnLoc
hUnit.vSpawnVector = vSpawnVectorfunction SpawnUnit
end
-- Create the game mode when we activate
function Activate()
GameRules.GameMode = GameMode()
GameRules.GameMode:_InitGameMode()
GameRules.AddonTemplate = CAddonTemplateGameMode()
GameRules.AddonTemplate:InitGameMode()
ListenToGameEvent("entity_killed", OnEntityKilled, nil)
local allUnits = FindUnitsInRadius(nNEUTRAL_TEAM,
Vector(0, 0, 0),
nil,
FIND_UNITS_EVERYWHERE,
DOTA_UNIT_TARGET_TEAM_FRIENDLY,
DOTA_UNIT_TARGET_ALL,
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false)
print (allUnits)
for k, hUnit in pairs( allUnits ) do
hUnit.vSpawnLoc = hUnit:GetOrigin()
hUnit.vSpawnVector = hUnit:GetForwardVector()
print (hUnit.vSpawnVector)
end
end
function CAddonTemplateGameMode:InitGameMode()
print( "Template addon is loaded." )
GameRules:GetGameModeEntity():SetThink( "OnThink", self, "GlobalThink", 2 )
end
-- Evaluate the state of the game
function CAddonTemplateGameMode:OnThink()
if GameRules:State_Get() == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
--print( "Template addon script is running." )
elseif GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then
return nil
end
return 1
end
_G.nCREATURE_RESPAWN_TIME = 60
if CAddonTemplateGameMode == nil then
CAddonTemplateGameMode = class({})
end
require('internal/util')
require('gamemode')
function Precache( context )
DebugPrint("[BAREBONES] Performing pre-load precache")
PrecacheResource("particle", "particles/econ/generic/generic_aoe_explosion_sphere_1/generic_aoe_explosion_sphere_1.vpcf", context)
PrecacheResource("particle_folder", "particles/test_particle", context)
PrecacheResource("model_folder", "particles/heroes/antimage", context)
PrecacheResource("model", "particles/heroes/viper/viper.vmdl", context)
PrecacheModel("models/heroes/viper/viper.vmdl", context)
PrecacheResource("soundfile", "soundevents/game_sounds_heroes/game_sounds_gyrocopter.vsndevts", context)
PrecacheItemByNameSync("example_ability", context)
PrecacheItemByNameSync("item_example_item", context)
PrecacheUnitByNameSync("npc_dota_hero_ancient_apparition", context)
PrecacheUnitByNameSync("npc_dota_hero_enigma", context)
end
function OnEntityKilled (event)
local killedEntity = EntIndexToHScript(event.entindex_killed)
local sCreatureName = killedEntity:GetUnitName()
local vSpawnLoc = killedEntity.vSpawnLoc
if (vSpawnLoc == nil) then
print ("location not found")
vSpawnLoc = killedEntity:GetOrigin()
end
local vSpawnVector = killedEntity.vSpawnVector
if (sCreatureName ~= "npc_dota_neutral_mud_golem") then
GameRules:GetGameModeEntity():SetContextThink (string.format( "CreatureThink_%d", event.entindex_killed ), function () SpawnUnit(sCreatureName, vSpawnLoc) end, nCREATURE_RESPAWN_TIME)
else
local newItem = CreateItem("item_flask", nil, nil)
newItem:SetPurchaseTime(0)
CreateItemOnPositionSync(killedEntity:GetOrigin(), newItem)
newItem:LaunchLoot(false, 300, 0.75, killedEntity:GetOrigin() + RandomVector(RandomFloat(50, 350)))
end
end
function SpawnUnit (sCreatureName, vSpawnLoc, vSpawnVector)
local hUnit = CreateUnitByName(sCreatureName, vSpawnLoc, true, nil, nil, nNEUTRAL_TEAM )
hUnit.vSpawnLoc = vSpawnLoc
hUnit.vSpawnVector = vSpawnVectorfunction SpawnUnit
end
-- Create the game mode when we activate
function Activate()
GameRules.GameMode = GameMode()
GameRules.GameMode:_InitGameMode()
GameRules.AddonTemplate = CAddonTemplateGameMode()
GameRules.AddonTemplate:InitGameMode()
ListenToGameEvent("entity_killed", OnEntityKilled, nil)
local allUnits = FindUnitsInRadius(nNEUTRAL_TEAM,
Vector(0, 0, 0),
nil,
FIND_UNITS_EVERYWHERE,
DOTA_UNIT_TARGET_TEAM_FRIENDLY,
DOTA_UNIT_TARGET_ALL,
DOTA_UNIT_TARGET_FLAG_NONE,
FIND_ANY_ORDER,
false)
print (allUnits)
for k, hUnit in pairs( allUnits ) do
hUnit.vSpawnLoc = hUnit:GetOrigin()
hUnit.vSpawnVector = hUnit:GetForwardVector()
print (hUnit.vSpawnVector)
end
end
function CAddonTemplateGameMode:InitGameMode()
print( "Template addon is loaded." )
GameRules:GetGameModeEntity():SetThink( "OnThink", self, "GlobalThink", 2 )
end
-- Evaluate the state of the game
function CAddonTemplateGameMode:OnThink()
if GameRules:State_Get() == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
--print( "Template addon script is running." )
elseif GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then
return nil
end
return 1
end