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

Как передаются аргументы

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

Оффлайн justjew

  • 18
  • Мощь: 0
Как передаются аргументы
« : 20-03-2016, 20:13:13 »
С программированием на объектно-ориентированных языках я знаком (java, c#), но со скриптовыми никогда не работал.
Вот в чем вопрос: есть следующий код
Код
function teleportPlayer(event)
     local unit = event.activator
     local  wws= "tpPoint" -- вот та сама точка, куда мы будем телепортировать героя, мы её указали в скрипте

     local ent = Entities:FindByName( nil, wws) --строка ищет как раз таки нашу точку pnt1
     local point = ent:GetAbsOrigin() --эта строка выясняет где находится pnt1 и получает её координаты
     event.activator:SetAbsOrigin( point ) -- получили координаты, теперь меняем место героя на pnt1
     FindClearSpaceForUnit(event.activator, point, false) --нужно чтобы герой не застрял
     event.activator:Stop() --приказываем ему остановиться, иначе он побежит назад к предыдущей точке
end
Entity Script'у триггера я присваиваю имя файла.lua, затем в самом триггере CallScriptFunction'у я передаю название функции, без передачи каких-либо аргументов.

Собственно, откуда функция teleportPlayer берет этот самый event?

Оффлайн Adam Smith

  • Друзья CG
  • 468
  • Мощь: 6
  • жрять жри его
Re: Как передаются аргументы
« Ответ #1 : 20-03-2016, 21:06:13 »
С программированием на объектно-ориентированных языках я знаком (java, c#), но со скриптовыми никогда не работал.
Вот в чем вопрос: есть следующий код
Код
function teleportPlayer(event)
     local unit = event.activator
     local  wws= "tpPoint" -- вот та сама точка, куда мы будем телепортировать героя, мы её указали в скрипте

     local ent = Entities:FindByName( nil, wws) --строка ищет как раз таки нашу точку pnt1
     local point = ent:GetAbsOrigin() --эта строка выясняет где находится pnt1 и получает её координаты
     event.activator:SetAbsOrigin( point ) -- получили координаты, теперь меняем место героя на pnt1
     FindClearSpaceForUnit(event.activator, point, false) --нужно чтобы герой не застрял
     event.activator:Stop() --приказываем ему остановиться, иначе он побежит назад к предыдущей точке
end
Entity Script'у триггера я присваиваю имя файла.lua, затем в самом триггере CallScriptFunction'у я передаю название функции, без передачи каких-либо аргументов.

Собственно, откуда функция teleportPlayer берет этот самый event?
ниоткуда, ключи ты сам называешь, эта функция передает все ключи и их значения, которые прописаны в c++
function teleportPlayer(kokoko) хоть так можно
By PG.Freeman

Оффлайн CryDeS

  • Друзья CG
  • 1200
  • Мощь: 12
Re: Как передаются аргументы
« Ответ #2 : 20-03-2016, 21:21:36 »
С программированием на объектно-ориентированных языках я знаком (java, c#), но со скриптовыми никогда не работал.
Вот в чем вопрос: есть следующий код
Код
function teleportPlayer(event)
     local unit = event.activator
     local  wws= "tpPoint" -- вот та сама точка, куда мы будем телепортировать героя, мы её указали в скрипте

     local ent = Entities:FindByName( nil, wws) --строка ищет как раз таки нашу точку pnt1
     local point = ent:GetAbsOrigin() --эта строка выясняет где находится pnt1 и получает её координаты
     event.activator:SetAbsOrigin( point ) -- получили координаты, теперь меняем место героя на pnt1
     FindClearSpaceForUnit(event.activator, point, false) --нужно чтобы герой не застрял
     event.activator:Stop() --приказываем ему остановиться, иначе он побежит назад к предыдущей точке
end
Entity Script'у триггера я присваиваю имя файла.lua, затем в самом триггере CallScriptFunction'у я передаю название функции, без передачи каких-либо аргументов.

Собственно, откуда функция teleportPlayer берет этот самый event?
Эвент идет из хаммера автоматически. Прочекать его можно типа for i,x in pairs(event) do print(i,x) end

Оффлайн justjew

  • 18
  • Мощь: 0
Re: Как передаются аргументы
« Ответ #3 : 20-03-2016, 22:15:45 »
ниоткуда, ключи ты сам называешь, эта функция передает все ключи и их значения, которые прописаны в c++
function teleportPlayer(kokoko) хоть так можно
А где я могу узнать какие вообще есть "ключи, которые прописаны в с++"?

Оффлайн CryDeS

  • Друзья CG
  • 1200
  • Мощь: 12
Re: Как передаются аргументы
« Ответ #4 : 21-03-2016, 06:49:15 »
А где я могу узнать какие вообще есть "ключи, которые прописаны в с++"?
Эвент идет из хаммера автоматически. Прочекать его можно типа
for i,x in pairs(event) do print(i,x) end