CustomGames.ru - Dota 2 пользовательские игры

CreateParticle по вектору

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
CreateParticle по вектору
« : 18-08-2017, 14:55:33 »
Помогите с частицей, хочу сделать частицу (CreateParticle) которая появлялась на карте через вектор (GetForwardVector) по времени (CreateTimer), единственное что я не понимаю как создать вектор на карте (без хамера)(просто CreateParticle требует владельца)

Оффлайн Илья

  • Супермодератор
  • 2142
  • Мощь: 21
Re: CreateParticle по вектору
« Ответ #1 : 18-08-2017, 15:35:07 »
Ты про тип данных или про что?
local v = Vector(x,y,z)

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Re: CreateParticle по вектору
« Ответ #2 : 18-08-2017, 16:19:53 »
CreateParticle("партикал", к чему прикрепить, кастер или таргет) куда мне вектор прописывать ?)

Оффлайн MahouShoujo

  • Продвинутый
  • 204
  • Мощь: 4
Re: CreateParticle по вектору
« Ответ #3 : 18-08-2017, 17:01:24 »
SetParticleControl

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Re: CreateParticle по вектору
« Ответ #4 : 18-08-2017, 17:29:15 »
SetParticleControl

 :-* :-* :-*, я долго и упорно пытался использовать SetParticleControlForward и SetParticleControlEnt но не пробовал ещё SetParticleControl, спасибо работает)

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Re: Re:CreateParticle по вектору
« Ответ #5 : 19-08-2017, 23:54:53 »
Как мне сделать так что бы вектор был у ParticleManager:SetParticleControl такой же как и у FindUnitsInRadius я хочу сделать ForceKill если в радиусе от рандомного вектора где создаётся частица герой умирал ? в итоге на данный момент у меня работает так: создаётся частица каждые 2 сек через CreateTimer и если я рядом в радиусе 150 находится герой то он умирает, но при этом не важно где бы герой стоял (local vector_list) в одном из 3 координат герой всё равно умрёт хоть даже если партикл создался в другом векторе
Спойлер
Код
		for playerID = 0, DOTA_MAX_TEAM_PLAYERS-1 do
local teams = PlayerResource:GetTeam(playerID)

local vector_list = {[1] = Vector(-672,-736,160),
[2] = Vector(544,32,160),
[3] = Vector(-416,160,160)};

for i = 1, math.random(#vector_list) do
ParticleManager:SetParticleControl( particle, 0, vector_list[i] );
local units = FindUnitsInRadius(teams, vector_list[i], nil, 150, DOTA_UNIT_TARGET_TEAM_BOTH, DOTA_UNIT_TARGET_ALL,
                                        DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false);

for i, un in ipairs(units) do
if un:IsHero() then
un:ForceKill(false)
end
end
end
end
[свернуть]

Оффлайн MahouShoujo

  • Продвинутый
  • 204
  • Мощь: 4
Re: CreateParticle по вектору
« Ответ #6 : 20-08-2017, 11:20:15 »
> for i = 1, math.random(#vector_list) do

И как ты думаешь, что же это значит?

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Re: CreateParticle по вектору
« Ответ #7 : 20-08-2017, 13:23:20 »
> for i = 1, math.random(#vector_list) do

И как ты думаешь, что же это значит?
Рандомный выбор из списка(#- оператор длины переменной)) Ок, даже если for i = 1, #vector_list do, что мне надо выставить для того чтобы одинаковые вектора выбирались для SetParticleControl и FindUnitsInRadius по рандому соответственно ?
« Последнее редактирование: 20-08-2017, 15:25:12 от den4iccc »

Оффлайн MahouShoujo

  • Продвинутый
  • 204
  • Мощь: 4
Re: CreateParticle по вектору
« Ответ #8 : 20-08-2017, 23:02:36 »
Это не рандомный выбор из списка. Подумай еще, подебажь, порасставляй принты.

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Re: CreateParticle по вектору
« Ответ #9 : 21-08-2017, 16:15:22 »
Я сделал RollPercentage для всех координат частица создаётся рандомно как было и с math.random, но FindUnitsInRadius активируется во всех 3 координатах как я писал выше (пробовал через RandomInt())не знаю как мне удалить FindUnitsInRadius через CreateTimer. Я хз чё уже делать, сделать костыль с юнитом который бы чекал а потом умирал
Спойлер
Код
				local vector_list = { [1] = Vector(-672,-736,160),
      [2] = Vector(544,32,160),
      [3] = Vector(-416,-64,160)}

for i = 1, #vector_list do
if RollPercentage(40) then
ParticleManager:SetParticleControl( particle, 0, vector_list[1] )
local uni = FindUnitsInRadius(teams, vector_list[1], nil, 150, DOTA_UNIT_TARGET_TEAM_BOTH, DOTA_UNIT_TARGET_ALL, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false)
for i, un in ipairs(uni) do
if un:IsHero() then
un:ForceKill(false)
end
end

elseif RollPercentage(60) then
local vec = ParticleManager:SetParticleControl( particle, 0, vector_list[2])
local units = FindUnitsInRadius(teams, vector_list[2], nil, 150, DOTA_UNIT_TARGET_TEAM_BOTH, DOTA_UNIT_TARGET_ALL, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false)
for i, un in ipairs(units) do
if un:IsHero() then
un:ForceKill(false)
end
end

elseif RollPercentage(50) then
ParticleManager:SetParticleControl( particle, 0, vector_list[3])
local unit = FindUnitsInRadius(teams, vector_list[3], nil, 150, DOTA_UNIT_TARGET_TEAM_BOTH, DOTA_UNIT_TARGET_ALL, DOTA_UNIT_TARGET_FLAG_NONE, FIND_ANY_ORDER, false)
for i, un in ipairs(unit) do
if un:IsHero() then
un:ForceKill(false)
end
end
  end
end
[свернуть]
Я тупой, надо было сразу делать проверку через глобальные переменные, всё сделал
« Последнее редактирование: 23-08-2017, 13:57:50 от den4iccc »