Как найти ворота

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

justjew

Пользователь
19 Мар 2016
18
0
Есть код
Код:
function OpenDoor()
	local EntryDoor = Entities:FindByName(nil, "dung_door")
	local EntryDoorObs = Entities:FindByName(nil, "dung_door_obs")

	if Lock == false then
		EntryDoor.SetAnimation("gate_entrance002_open")
		EntryDoorObs.Disable()
	end
end

Но таким образом ворота и обстракшены не находятся.
Подскажите, в чем проблема
 
Последнее редактирование модератором:
[ W VScript ]: Script Runtime Error: ...ns\test\scripts\vscripts\dung_script.lua:13: attempt to call field 'SetAnimation' (a nil value)
 
[quote author=justjew link=topic=778.msg3150#msg3150 date=1458573165]
[ W VScript ]: Script Runtime Error: ...ns\test\scripts\vscripts\dung_script.lua:13: attempt to call field 'SetAnimation' (a nil value)
[/quote]

Ну здесь ругается компилятор на то, что нет такого способа вызова функции, либо нет такой функции. Поставь вместо точки двоеточие:

Код:
	if Lock == false then
		EntryDoor:SetAnimation("gate_entrance002_open")
		EntryDoorObs:Disable()
	end

А вопрос твой я не понял: код просто находит два объекта, dung_door и dung_door_obs, проверяет какую-то необъявленную переменную "Lock" (я так понимаю, она глобальная и где-то в начале твоего файла расположена).
Ну и придает EntryDoor другой вид, а EntryDoorObs отключает.

Что ты подразумеваешь под этим?

Но таким образом ворота и обстракшены не находятся.
 
Последнее редактирование модератором:
[quote author=Илья link=topic=778.msg3151#msg3151 date=1458578687]
Ну здесь ругается компилятор на то, что нет такого способа вызова функции, либо нет такой функции. Поставь вместо точки двоеточие:

Код:
	if Lock == false then
		EntryDoor:SetAnimation("gate_entrance002_open")
		EntryDoorObs:Disable()
	end

А вопрос твой я не понял: код просто находит два объекта, dung_door и dung_door_obs, проверяет какую-то необъявленную переменную "Lock" (я так понимаю, она глобальная и где-то в начале твоего файла расположена).
Ну и придает EntryDoor другой вид, а EntryDoorObs отключает.

Что ты подразумеваешь под этим?
[/quote]
Lock объявлена выше
Двоеточия ставил, все равно не работает.
Подразумевал я то, что при помощи Entities:FindByName(nil, name) он не находит ни ворота, ни point_simple_obstruction, и, вероятно, именно из-за этого компилятор и ругается, что у переменной со значением nil я пытаюсь вызвать метод SetAnimation
 
Последнее редактирование модератором:
Lock объявлена выше
Двоеточия ставил, все равно не работает.
Подразумевал я то, что при помощи Entities:FindByName(nil, name) он не находит ни ворота, ни point_simple_obstruction, и, вероятно, именно из-за этого компилятор и ругается, что у переменной со значением nil я пытаюсь вызвать метод SetAnimation
Тут я ошибся, все он нормально находит.

Тогда как мне сделать SetAnimation для ворот и Disable для point_simple_obstruction?
 
Последнее редактирование модератором:
Disable работает с CBaseTrigger, а так же с CBaseEntity, поэтому должен функционировать.

А вот SetAnimation работает с CBodyComponent, это, насколько я понимаю, физические объекты, а не Entity.

Если по гитхабу полазить, то никто не пользовался даже такой вещью в lua. Думаю, ты не те методы используешь для достижения своей цели.
 
Реклама: