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

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

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

Оффлайн justjew

  • 18
  • Мощь: 0
Как найти ворота
« : 21-03-2016, 14:55:41 »
Есть код
Код
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

Но таким образом ворота и обстракшены не находятся.
Подскажите, в чем проблема

Оффлайн justjew

  • 18
  • Мощь: 0
Re: Как найти ворота
« Ответ #1 : 21-03-2016, 15:12:45 »
[ W VScript ]: Script Runtime Error: ...ns\test\scripts\vscripts\dung_script.lua:13: attempt to call field 'SetAnimation' (a nil value)

Оффлайн Илья

  • Супермодератор
  • 1892
  • Мощь: 16
Re: Как найти ворота
« Ответ #2 : 21-03-2016, 16:44:47 »
[ W VScript ]: Script Runtime Error: ...ns\test\scripts\vscripts\dung_script.lua:13: attempt to call field 'SetAnimation' (a nil value)

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

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


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

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

Цитировать
Но таким образом ворота и обстракшены не находятся.

Оффлайн justjew

  • 18
  • Мощь: 0
Re: Как найти ворота
« Ответ #3 : 21-03-2016, 16:52:52 »
Ну здесь ругается компилятор на то, что нет такого способа вызова функции, либо нет такой функции.  Поставь вместо точки двоеточие:

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


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

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

Оффлайн justjew

  • 18
  • Мощь: 0
Re: Как найти ворота
« Ответ #4 : 21-03-2016, 17:22:06 »
Lock объявлена выше
Двоеточия ставил, все равно не работает.
Подразумевал я то, что при помощи Entities:FindByName(nil, name) он не находит ни ворота, ни point_simple_obstruction, и, вероятно, именно из-за этого компилятор и ругается, что у переменной со значением nil я пытаюсь вызвать метод SetAnimation
Тут я ошибся, все он нормально находит.

Тогда как мне сделать SetAnimation для ворот и Disable для point_simple_obstruction?

Оффлайн Илья

  • Супермодератор
  • 1892
  • Мощь: 16
Re: Как найти ворота
« Ответ #5 : 21-03-2016, 19:44:14 »
Disable работает с CBaseTrigger, а  так же с CBaseEntity, поэтому должен функционировать.

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

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