Как заставить скрипт активировать спавн крипов?

tasman208

Активный
30 Мар 2016
128
0
Доброго дня. Я делаю карту с возможностью добавления крипов в последующие волны за деньги покупкой предметов. Сделал предмет который активирует скрипт, теперь нужно чтобы этот скрипт активировал npc_script_spawner а именно активировал действие SpawnNPC, никак не могу найти как это сделать, помогите плз.
 
Не знаю как это мне поможет. Не могу понять команду чтобы заставить спавнить крипов, вот что у меня имеется но выдает ошибку
Код:
function spawn()
   local spawn = Entities:FindByName( nil, "spawner")
   --local time = GameRules:GetGameTime()
   spawn:SetNPCTeam(1)
   spawn:SetNPCType(8)
   spawn:SpawnNPC(1)
end
 
Последнее редактирование модератором:
Я уже почти с этим разобрался, но есть проблема.
Код:
local a = 1
local x = 1

function upgood()
	print("Activate")
	a = a + 1
	if x <= a then 
		x = a
	end
	print("x= ", x)
end

function upgoods(x)
	print(x)
end
Функция upgood вызывается предметом, а upgoods игровым событием, можно ли сделать так, чтобы вторая функция считывала x который сделает первая? P.S. Если первая делает x=2, то вторая все равно пишет 1
 
Последнее редактирование модератором:
Код:
function upgoods(x)
	print(x)
end

В эту функцию ты передаешь переменную "х", которую затем и выводишь. Если хочешь, чтобы она писала тот глобальный "х", что сверху, то пишешь так:

Код:
function upgoods()
	print(x)
end
 
Последнее редактирование модератором:
Хорошо, теперь другая проблема
Код:
require( 'timers' )
require( 'barebones' )

local a = 1

function upgood()
	print("Activate")
	a = a + 1
	print("a doljno= ", a)
end

function upgoods()
	if a == 2 then
	upgoodspawn1()
	elseif a == 3 then
	upgoodspawn()
	upgoodspawn()
	elseif a == 4 then
	upgoodspawn()
	upgoodspawn()
	upgoodspawn()
	elseif a == 5 then
	upgoodspawn()
	upgoodspawn()
	upgoodspawn()
	upgoodspawn()
	elseif a >= 6 then
	upgoodspawn()
	upgoodspawn()
	upgoodspawn()
	upgoodspawn()
	upgoodspawn()
	end
	print("a tut = ", a)		
end

function upgoodspawn()
	local point = Entities:FindByName( nil, "spawnpoint"):GetAbsOrigin()
	local waypoint = Entities:FindByName( nil, "point1")
	local unit = CreateUnitByName("npc_dota_creep_goodguys_melee_upgraded", point + RandomVector( RandomFloat( 0, 200 ) ), true, nil, nil, DOTA_TEAM_GOODGUYS ) 
  unit:SetInitialGoalEntity( waypoint )
  end

function timer()
	local c = 0
	Timers:CreateTimer(1, function ()
		c = c + 1
		if c%30 < 1 then
		upgoods()
		print("spawn")
	end
	return 1
	end)	
end
когда таймер доходит до 30 секунд, он запускает функцию upgoods() и она пишет что а = 1, даже, если функцией upgood() сделать а больше. почему так происходит?
 
Последнее редактирование модератором:
Разобрался, просто сделал в главном моде переменную
Код:
_G.a
 
Если это описано было не в главном скрипте, то каждый раз при запуске любой функции из этого скрипта его "глобальные" переменные устанавливаются в исходное значение, ибо скрипт работает заново с нуля.

Поэтому ты верно сделал, что перенес глобалку в главный скрипт, который работает единожды.
 
Последнее редактирование модератором:
Реклама: