[quote author=Илья link=topic=1393.msg8973#msg8973 date=1490548325]
Елки палки, я тебе не говорил что-то править в этой строчке.
Мы сейчас не говорим о том, как решить какие-то там твои новые вопросы. Я тебе говорю: сядь и осознай то, что ты уже сделал, что работает. Разбери каждую строчку того рабочего блока кода. Если не знаешь как разбирать - я тебе вот привел пример разбора строчки кода.
И nil в ней не "ненужны", он нужный, читай описание FindByName() :
Метод ищет сущность по имени. Передайте nil, чтобы начать итерацию поиска или же ссылку на предыдущий объект.
А своей фразой:
Я говорил, что необязательно нужен какой-то там handle первым параметром, можно просто nil передать, чтобы начать поиск.
[/quote]
в этой же функции game progress просто после все об одной точку скопировал, вставил иизменил на вторую точку. Итог пошли но очень быстро. Волна с одной и волна с другой. Хотя лучше бы было чтоб шла 1я волна но по 3 крипа с каждого выходили . Хотелось бы так : 1я волна идут по 3 крипа с каждой точки. я волна опять 3 крипа с точки каждой. А он место этого 1я волна справа, 2я слева. 3я справа 4я слева. Нельзя это как либо пофиксить ?
Елки палки, я тебе не говорил что-то править в этой строчке.
Мы сейчас не говорим о том, как решить какие-то там твои новые вопросы. Я тебе говорю: сядь и осознай то, что ты уже сделал, что работает. Разбери каждую строчку того рабочего блока кода. Если не знаешь как разбирать - я тебе вот привел пример разбора строчки кода.
И nil в ней не "ненужны", он нужный, читай описание FindByName() :
Метод ищет сущность по имени. Передайте nil, чтобы начать итерацию поиска или же ссылку на предыдущий объект.
А своей фразой:
Я говорил, что необязательно нужен какой-то там handle первым параметром, можно просто nil передать, чтобы начать поиск.
[/quote]
Код:
function GameMode:OnGameInProgress()
print("[BAREBONES] The game has officially begun")
local point = Entities:FindByName( nil, "spawnerino" ):GetAbsOrigin() -- Записываем в переменную 'point' координаты нашего спавнера 'spawnerino'
local waypoint = Entities:FindByName( nil, "way1" ) -- Записываем в переменную 'waypoint' координаты первого бокса way1
local return_time = 10 -- Записываем в переменную значение '10'
Timers:CreateTimer(20, function() -- Создаем таймер, который запустится через 20 секунд после начала матча и запустит следующую функцию
GAME_ROUND = GAME_ROUND + 1 -- Значение GAME_ROUND увеличивается на 1
if GAME_ROUND == MAX_ROUNDS then -- Если GAME_ROUND равно MAX_ROUNDS, переменная return_time получит нулевое значение
return_time = nil
end
Say(nil,"Wave №" .. GAME_ROUND, false) -- Выводим в чат сообщение 'Wave №', в конце к которому добавится значение GAME_ROUND.
for i=1, ROUND_UNITS do -- Произведет нижние действия столько раз, сколько указано в ROUND_UNITS. То есть в нашем случае создаст 2 юнита.
local unit = CreateUnitByName( "example_unit_" .. GAME_ROUND, point + RandomVector( RandomFloat( 0, 200 ) ), true, nil, nil, DOTA_TEAM_BADGUYS ) --[[ Создаем юнита 'example_unit_', в конце к названию добавится 1,2,3,4 или 5, в зависимости от раунда, и в итоге получатся наши example_unit_1, example_unit_2 и т.д. Юнит появится в векторе point + RandomVector (RandomFloat( 0, 200 ) ) - point - наша переменная, а рандомный вектор добавляется для того, чтобы мобы не появлялись в одной точке и не застревали. Мобы будут за силы света. ]]
unit:SetInitialGoalEntity( waypoint ) -- Посылаем мобов на наш way1, координаты которого мы записали в переменную 'waypoint'
end
return return_time -- Возвращаем таймеру время, через которое он должен снова сработать. Когда пройдет последний раунд таймер получит значение 'nil' и выключится.
end)
print("[BAREBONES] The game has officially begun")
local point = Entities:FindByName( nil, "spawnerino1" ):GetAbsOrigin() -- Записываем в переменную 'point' координаты нашего спавнера 'spawnerino'
local waypoint = Entities:FindByName( nil, "wey1" ) -- Записываем в переменную 'waypoint' координаты первого бокса way1
local return_time = 10 -- Записываем в переменную значение '10'
Timers:CreateTimer(20, function() -- Создаем таймер, который запустится через 20 секунд после начала матча и запустит следующую функцию
GAME_ROUND = GAME_ROUND + 1 -- Значение GAME_ROUND увеличивается на 1
if GAME_ROUND == MAX_ROUNDS then -- Если GAME_ROUND равно MAX_ROUNDS, переменная return_time получит нулевое значение
return_time = nil
end
Say(nil,"Wave №" .. GAME_ROUND, false) -- Выводим в чат сообщение 'Wave №', в конце к которому добавится значение GAME_ROUND.
for i=1, ROUND_UNITS do -- Произведет нижние действия столько раз, сколько указано в ROUND_UNITS. То есть в нашем случае создаст 2 юнита.
local unit = CreateUnitByName( "example_unit_" .. GAME_ROUND, point + RandomVector( RandomFloat( 0, 200 ) ), true, nil, nil, DOTA_TEAM_BADGUYS ) --[[ Создаем юнита 'example_unit_', в конце к названию добавится 1,2,3,4 или 5, в зависимости от раунда, и в итоге получатся наши example_unit_1, example_unit_2 и т.д. Юнит появится в векторе point + RandomVector (RandomFloat( 0, 200 ) ) - point - наша переменная, а рандомный вектор добавляется для того, чтобы мобы не появлялись в одной точке и не застревали. Мобы будут за силы света. ]]
unit:SetInitialGoalEntity( waypoint ) -- Посылаем мобов на наш way1, координаты которого мы записали в переменную 'waypoint'
end
return return_time -- Возвращаем таймеру время, через которое он должен снова сработать. Когда пройдет последний раунд таймер получит значение 'nil' и выключится.
end)
end
Последнее редактирование модератором: