Здоровье дерева

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
У дерева есть какое либо значение хп? Мне нужно, чтобы, например, когда на дерево юзнули не таргет спелл(аое, можно на несколько деревьев) раз эдак 6-10(желательно рандомно), то дерево ломалось. Такое возможно?
 
Деревьям скорее всего нельзя нанести урон стандартными средствами. Но ты можешь добавить каждому дереву добавить свою переменную с "хп" и отнимать их при касте.
 
Последнее редактирование модератором:
Код:
function OnSpellStart(event)
	local point = event.target_points[1]
	local radius = event.ability:GetSpecilaValueFor("radius")
	local targets = GridNav:GetAllTreesAroundPoint(point, radius, true)	
	for tree,_ in pairs(targets) do
		tree.health = tree.health or RandomInt(6, 10)
		tree.health = tree.health - 1
		if tree.health == 0 then
			tree:CutDown(event.caster:GetTeam())
		end
	end
end
Как-то так
 
Последнее редактирование модератором:
ХП у деревьев вряд ли есть, но можешь проверить.

А вырубать деревья в области спокойно можешь. GridNav функции как раз для этого. Есть и еще другие.
 
ZLOY, а как можно через скрипты узнать на какое именно дерево способность использована?
 
Поясни, в каком виде.

Можно, например, по координатам узнать. А если через абилку, то по таргету.
 
Да и вообще, дерево по сути тот же юнит, entity, только без хп и прочей лабуды.
 
Илья, смотри: у меня есть аое способность с аое 150, которая ищет в этом радиусе деревья и, если они есть, добавляет в переменную игрока некоторое количество дерева. Мне нужно, чтобы, например, ты использовал скилл 6-10 раз на одну группу деревьев и деревья в этой области сломались, но если ты не доломал эти деревья, то другой игрок этой же способностью мог бы доломать их, но ему уже оставалось меньше использований способности.
 
Илья, я, наверное, просто в скилле RollPercentage(30) сделаю и если выпадает, то ломаю деревья. Хотя хотелось бы через хп все таки
 
Почему он мой код все время игнорит?
Я стараюсь то(
 
ZLOY, ой, прости, я не увидел, просто сайт сразу вниз промотал и я не прочитал, спасибо
 
ZLOY,
Вот код после добавления твоего:
Код:
function Gather(keys)
  local caster = keys.caster
  local ability = keys.ability
  local point = caster:GetCursorPosition()
  local findents = GridNav:GetAllTreesAroundPoint(point, 150, true)
  local playerid = caster:GetPlayerOwnerID()
  local woodmsg = "particles/wood_msg.vpcf"
  local stonemsg = "particles/stone_msg.vpcf"
  local woodmin = ability:GetSpecialValueFor("woodmin")
  local woodmax = ability:GetSpecialValueFor("woodmax")
  local stonemin = ability:GetSpecialValueFor("stonemin")
  local stonemax = ability:GetSpecialValueFor("stonemax")
  local multiplier = ability:GetSpecialValueFor("treemultiplier")
  local wood = math.random(woodmin,woodmax)
  local stone = math.random(stonemin,stonemax)
  local life = 3.0
  if #findents >= 1 then
   for tree,_ in pairs(findents) do
     tree.health = tree.health or RandomInt(6, 10)
     tree.health = tree.health - 1
     if tree.health == 0 then
      tree:CutDown(keys.caster:GetTeam())
     end
   end
   local trees = tonumber(#findents)
   local woodtotranslate = math.floor(wood * (1 + trees * multiplier))
   print(woodtotranslate)
   changes:changewood(playerid,tonumber(woodtotranslate))
   local string = string.len(woodtotranslate)
   local numbers = ParticleManager:CreateParticle( woodmsg, PATTACH_OVERHEAD_FOLLOW, caster )
   ParticleManager:SetParticleControl( numbers, 1, Vector( 1, woodtotranslate, 0 ) )
   ParticleManager:SetParticleControl( numbers, 2, Vector( life, string, 0 ) )
  else
   print(stone)
   changes:changestone(playerid,tonumber(stone))
   local string = string.len(stone)
   local numbers = ParticleManager:CreateParticle( stonemsg, PATTACH_OVERHEAD_FOLLOW, caster )
   ParticleManager:SetParticleControl( numbers, 1, Vector( 1, stone, 0 ) )
   ParticleManager:SetParticleControl( numbers, 2, Vector( life, string, 0 ) )
  end
end
А вот вылетающая ошибка(
Код:
[  Developer    ]: ...rviveinthetaiga\scripts\vscripts\abilities\gathering.lua:19: attempt to index local 'tree' (a number value)
[  Developer    ]:  ...rviveinthetaiga\scripts\vscripts\abilities\gathering.lua:19: in function <...rviveinthetaiga\scripts\vscripts\abilities\gathering.lua:1>
[ W VScript     ]: Script Runtime Error: ...rviveinthetaiga\scripts\vscripts\abilities\gathering.lua:19: attempt to index local 'tree' (a number value)
[ W VScript     ]: stack traceback:
[ W VScript     ]:  ...rviveinthetaiga\scripts\vscripts\abilities\gathering.lua:19: in function <...rviveinthetaiga\scripts\vscripts\abilities\gathering.lua:1>
19 строка
Код:
tree.health = tree.health or RandomInt(6, 10)
 
Последнее редактирование модератором:
Код:
for _,tree in pairs(findents) do
Небольшая опечатка, я перепутал ключ и значение местами
 
Почему он мой код все время игнорит?
Я стараюсь то(

хахаххаха, я так же вначале подумал: "че... ему уже скинули готовое решение, что значит "определить дерево", на карте что-ли?"
 
Последнее редактирование модератором:
Илья, у меня рили сначала не было сообщения Злого
 
Да расслабься, все все поняли. Просто было забавно.
 
Реклама: