Помогите с режимом тд

  • Автор темы Автор темы aizek
  • Дата начала Дата начала
[quote author=Илья link=topic=1393.msg8973#msg8973 date=1490548325]
Елки палки, я тебе не говорил что-то править в этой строчке.

Мы сейчас не говорим о том, как решить какие-то там твои новые вопросы. Я тебе говорю: сядь и осознай то, что ты уже сделал, что работает. Разбери каждую строчку того рабочего блока кода. Если не знаешь как разбирать - я тебе вот привел пример разбора строчки кода.

И 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
в этой же функции game progress просто после все об одной точку скопировал, вставил иизменил на вторую точку. Итог пошли но очень быстро. Волна с одной и волна с другой. Хотя лучше бы было чтоб шла 1я волна но по 3 крипа с каждого выходили . Хотелось бы так : 1я волна идут по 3 крипа с каждой точки. я волна опять 3 крипа с точки каждой. А он место этого 1я волна справа, 2я слева. 3я справа 4я слева. Нельзя это как либо пофиксить ?
 
Последнее редактирование модератором:
addon_info
чтобы была только команда света
В правилах (GameRules) мода через SetCustomGameTeamMaxPlayers().
на карте только одна точка респавна
В hammere оставить только одну сущность спавна.

героев а при выборе есть и тьма и свет
Если ты убираешь одну из команд, то она не предоставиться на выбор игроку.
 
Я устал в 10й раз разбирать по полочкам людям этот код. Если ты сам не можешь ответить на эти вопросы, значит ты до сих пор не понял, как работает твой код, а без понимания поток вопросов не прекратиться.
 
Блин. До этого по тупости стояла точка респавна : basic_entities_adventure. Решил её удалить и просто выставить basic_entits_radient. При компиляции карты была ошибка, через назад вернул все как было но теперь все также при компиляции выскакивает эта ошибка
Код:
CDataModel: Unable to open file C:\Program Files (x86)\Steam\steamapps\common\dota 2 beta\game\bin\win64\aps\prefabs\basic_entities_adventure.vmap
CDataModel: Unable to open file C:\Program Files (x86)\Steam\steamapps\common\dota 2 beta\game\bin\win64\maps\error.vmap
Error: Missing dependency: aps/prefabs/basic_entities_adventure.vmap (c:/program files (x86)/steam/steamapps/common/dota 2 beta/content/dota_addons/fire_arena/aps/prefabs/basic_entities_adventure.vmap).
[FAIL]
Есть возможность решения ? в аддонс инфо как не было так ничего и нет. Скриптами не менял и кроме того что в hammere удалил и вернул эту точку больше ничего не делал
 
basic_entities_adventure - это не точка респавна,это префаб с сущностями, в который входят блоки с настройками параметров мода, вроде освещения, тумана и т.п., а так же спавнеры обеих команд, включая спавны курьеров.

А когда ты удалил этот префаб и поставил префаб только лишь для одной команды, тебе пожаловаться должен был редактор на отсутствие спавнеров для второй команды, т.к. ты её не отключал.

Конечно, я мог ошибиться и действительно ты ничего не попутал и удалял не префаб, а какую-то сущность basic_entities_adventure. В таком случае, я ничего сказать не могу.

И на текущую ошибку лично я тоже ничего большего сказать не могу.
 
basic_entities_adventure - это не точка респавна,это префаб с сущностями, в который входят блоки с настройками параметров мода, вроде освещения, тумана и т.п., а так же спавнеры обеих команд, включая спавны курьеров.

А когда ты удалил этот префаб и поставил префаб только лишь для одной команды, тебе пожаловаться должен был редактор на отсутствие спавнеров для второй команды, т.к. ты её не отключал.

Конечно, я мог ошибиться и действительно ты ничего не попутал и удалял не префаб, а какую-то сущность basic_entities_adventure. В таком случае, я ничего сказать не могу.

И на текущую ошибку лично я тоже ничего большего сказать не могу.
блин, плохо дело. А её как нибудь по новой скачать можно или где то что там покаверкать ?
 
Последнее редактирование модератором:
Реклама: