Помогите

makc45tlist

Пользователь
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
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,137
195
www.dotabuff.com
Проект
Roshan defense
"if (sCreatureName ~= "npc_dota_neutral_mud_golem") then"
замени на
"if ( killedEntity:IsRealHero == false) then"
 
  • Нравится
Реакции: Илья

Илья

Друзья CG
25 Сен 2015
2,348
41
Вопрос то не тривиальный. Если тебе достаточно, чтобы только герои не респались нейтралами, то вон, тебе ответили. А вот если еще какие-то объекты не должны ресаться, то тут тебе нужно ограничения ставить осмысленные, вроде того же комментария выше. Другое дело, если тебе нужно ресать только конкретных крипов, допустим, тут всего одно условие нужно поставить, опять же в духе комменатрия выше.
 
Реклама: