Iron Talon - lua

  • Автор темы Автор темы Danis
  • Дата начала Дата начала

Danis

Продвинутый
12 Июн 2016
285
0
Проект
Custom Hero Arena
как сделать так чтобы на луа не выходила ошибка при касте на дерево или крипа, как не пробовал и не пытался все время ошибка
Код:
if IsServer() then
		if self:IsCooldownReady() then
			local target = self:GetCursorTarget()

			if target:IsStanding() == nil then
				self:StartCooldown(self:GetCooldown(self:GetLevel()))
				target:SetHealth(target:GetHealth() / 2)
			end

			if target:IsCreep() == nil then
				self:StartCooldown(self:GetCooldown(self:GetLevel()) / 4)
				target:CutDown(self:GetCaster():GetTeamNumber())
			end
		end
	end
Код:
if IsServer() then
		if self:IsCooldownReady() then
			local target = self:GetCursorTarget()

			if target:IsCreep() then
				self:StartCooldown(self:GetCooldown(self:GetLevel()))
				target:SetHealth(target:GetHealth() / 2)
			end

			if target:IsStanding() then
				self:StartCooldown(self:GetCooldown(self:GetLevel()) / 4)
				target:CutDown(self:GetCaster():GetTeamNumber())
			end
		end
	end
Код:
if IsServer() then
		if self:IsCooldownReady() then
			local target = self:GetCursorTarget()

			if target:IsCreep() and not target:IsStanding() then
				self:StartCooldown(self:GetCooldown(self:GetLevel()))
				target:SetHealth(target:GetHealth() / 2)
			end

			if target:IsStanding() and not target:IsCreep() then
				self:StartCooldown(self:GetCooldown(self:GetLevel()) / 4)
				target:CutDown(self:GetCaster():GetTeamNumber())
			end
		end
	end
Код:
[ W VScript    ]: Script Runtime Error: ..._addons\arena\scripts\vscripts\items\item_light_pike.lua:17: attempt to call method 'IsStanding' (a nil value)
Код:
[ W VScript    ]: Script Runtime Error: ..._addons\arena\scripts\vscripts\items\item_light_pike.lua:22: attempt to call method 'IsCreep' (a nil value)
Я уже правда не знаю как это исправить, если кто знает расскажите?
 
Прочти эту старенькую статью. Затем вновь подумай.

boolean это true или false. Кроме того IsStanding для CDOTA_MapTree, а не для CBaseEntity. А IsCreep для CDOTA_BaseNPC, а не CDOTA_MapTree
 
Danis, нужно было просто использовать оператор elseif в место второго if
 
Если будешь ему готовые ответы давать, он так и не научится думать.
 
эм, я elseif и так пробовал, не работает, выдает туже самую ошибку :-\
Код:
if IsServer() then
		if self:IsCooldownReady() then
			local target = self:GetCursorTarget()

			if target:IsCreep() then
				self:StartCooldown(self:GetCooldown(self:GetLevel()))
				target:SetHealth(target:GetHealth() / 2)
            elseif target:IsStanding() then
				self:StartCooldown(self:GetCooldown(self:GetLevel()) / 4)
				target:CutDown(self:GetCaster():GetTeamNumber())
			end
		end
	end
 
[quote author=Danis link=topic=1061.msg5964#msg5964 date=1472063772]
эм, я elseif и так пробовал, не работает, выдает туже самую ошибку :-\
Код:
if IsServer() then
		if self:IsCooldownReady() then
			local target = self:GetCursorTarget()

			if target:IsCreep() then
				self:StartCooldown(self:GetCooldown(self:GetLevel()))
				target:SetHealth(target:GetHealth() / 2)
            elseif target:IsStanding() then
				self:StartCooldown(self:GetCooldown(self:GetLevel()) / 4)
				target:CutDown(self:GetCaster():GetTeamNumber())
			end
		end
	end
[/quote]
Принтани и скинь сюда target:GetClassname() , поставив его до ошибки.
 
Елки палки, да дело в том, что у тебя есть два класса с взаимно отсутствующими методами. В первом случае объект-крип с методом "а крип ли это" и объект дерево с методом "а дерево ли это (ну или похожим)". И эти методы свойственны только этим классам. Поэтому, когда ты используешь "а крип ли это" на дерево, тебе выдаст ошибку. То же самое с деревом и "а дерево ли это". Все это мог бы понять, прочитав статью. Подумай, как завертеть иначе.
 
Последнее редактирование модератором:
Реклама: