Гайд по Scripting часть 3
5842
30
Спойлер: "Вторая часть"Спойлер: "Следующая часть"*** Триггер ***1) Каждый, кто добавлял рошана, использовал дефолтный триггер. Триггер - фиговина, имеющая два состояния. В случае с рошей состояния такие:Кроме "рошанского" триггера есть еще парочка дефолтных, но все изващенные фантазии разработчиков предусмотреть нельзя, поэтому есть способ создания своего кастомного тригерра.
- Можно бить (вы в зоне тригерра)
- Нельзя бить (вы вне зоны)
Подготовка Триггера2) Делаем все, как в "рошанском" триггере (см. главную тему раздела) когда дело доходит до выбора класса (для роши: trigger_boss_atackable) здесь выбираем trigger_hero - будем отлавливать героев. Выделите триггер и зайдите в свойства (ALT + ENTER или дабл клик по тригеру) дальше по фото:Создание скрипта: создать файл.тхт переименовать в .lua, сам файл пока пустой. для тех, кто в танке: закинуть скрипт в папку ваш_аддон\scripts\vscripts\ В этом же окне перейдите во вкладку Outputs и внизу нажмите add далее как на фото:Спойлер: "ФОТО_Инструкция"Потом еще раз add но уже выбрать OnEndTouch и четвертом параметре имя другой функции myFunctionLeave. 3) Последний штрих - заполнить сам скрипт. Офиц. вольво доки дают следующий пример: https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Simple_Trigger_that_calls_Lua Там имена функций совпадают методом которые мы выбирали в окне свойств (первое поле) Это удобно, но не обязательно, главное, чтобы имя совпадало с четвертым полем. Не буду топтаться над этими свойствами, кто дошел до 3-й части все это и сам поймет.Спойлер: "ФОТО_инструкция"В примере от вольво выводятся в консоль trigger.activator и trigger.caller я их закомментил и вывел свои понятные сообщения.Спойлер: "КОД_скрипта"function myFunctionEnter(trigger) print('------enter ------') --print(trigger.activator) --print(trigger.caller) end function myFunctionLeave(trigger) print('------ leave------') --print(trigger.activator) --print(trigger.caller) endПодготовка завершена. Проверим: для начала запомните где ваш триггер (он же прозрачный) разместите его рядом с базой, или наставьте объектов по периметру - это уже на ваше усмотрение. Пикните героя, и зайдите в триггер. посмотрите в консоль (клавиша ~ или ё) должно появится сообщение ------enter ------ (тоже синее) если есть значит все ОК.
- trigger.activator - тот, кто зашел в зону.
- trigger.caller - не знаю (с англ. вызывающий, но разве это нам о чем то говорит? мне - нет:))
Собсна само скриптоделие :cool:4) Как ни странно, но эта часть намного меньше первой. Почему? да потому ,что там все очень просто: На вход функциям передается trigger как вы уже заметили у него есть свойство activator так вот этот активатор никто иной как "представитель" CDOTA_BaseNPC те, кто читал первые 2 части уже знает про существование списка API методов. https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/API И там есть раздел CDOTA_BaseNPC так вот методы из этого раздела могут вызывать представители класса CDOTA_BaseNPC (вот так нежданчик ??). Хватит балаболить, возьмем любой (интересный) метод из этого списка и вызовем у нашего активатора. Этим методом будет AddNewModifier(handle caster, handle optionalSourceAbility, string modifierName, handle modifierData)https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Built-In_Modifier_Names Лично я использовал только этот modifier_rune_haste (другие модификаторы потестите сами) Да да чувак, попавший в область триггера получает хасту. По логике при выходе из области нужно отбирать хасту - так и сделаем. trigger.activator:RemoveModifierByName("modifier_rune_haste")
- второй и третий будут nil
- в первый передаем trigger.activator
- последний - самый интересный. Передаем модификатор из списка:
Спойлер: "Фулл_КОД"function myFunctionEnter(trigger) print('------enter ------') trigger.activator:AddNewModifier(trigger.activator, nil, "modifier_rune_haste", nil) end function myFunctionLeave(trigger) print('------ leave------') trigger.activator:RemoveModifierByName("modifier_rune_haste") end
Не проще давать ссылки на русскую вики? ПыСы Попросил админов закрепить часть 2doter.ua сказал(а):↑Уже поздно поэтому сделаю видео-результат потом. (шучу не поздно, просто я - ленивая жопа)Спойлер: "Вторая часть"*** Триггер ***1) Каждый, кто добавлял рошана, использовал дефолтный триггер. Триггер - фиговина, имеющая два состояния. В случае с рошей состояния такие:Кроме "рошанского" триггера есть еще парочка дефолтных, но все изващенные фантазии разработчиков предусмотреть нельзя, поэтому есть способ создания своего кастомного тригерра.
- Можно бить (вы в зоне тригерра)
- Нельзя бить (вы вне зоны)
Подготовка Триггера2) Делаем все, как в "рошанском" триггере (см. главную тему раздела) когда дело доходит до выбора класса (для роши: trigger_boss_atackable) здесь выбираем trigger_hero - будем отлавливать героев. Выделите триггер и зайдите в свойства (ALT + ENTER или дабл клик по тригеру) дальше по фото:Создание скрипта: создать файл.тхт переименовать в .lua, сам файл пока пустой. для тех, кто в танке: закинуть скрипт в папку ваш_аддон\scripts\vscripts\ В этом же окне перейдите во вкладку Outputs и внизу нажмите add далее как на фото:Спойлер: "ФОТО_Инструкция"Потом еще раз add но уже выбрать OnEndTouch и четвертом параметре имя другой функции myFunctionLeave. 3) Последний штрих - заполнить сам скрипт. Офиц. вольво доки дают следующий пример: https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Simple_Trigger_that_calls_Lua Там имена функций совпадают методом которые мы выбирали в окне свойств (первое поле) Это удобно, но не обязательно, главное, чтобы имя совпадало с четвертым полем. Не буду топтаться над этими свойствами, кто дошел до 3-й части все это и сам поймет.Спойлер: "ФОТО_инструкция"В примере от вольво выводятся в консоль trigger.activator и trigger.caller я их закомментил и вывел свои понятные сообщения.Спойлер: "КОД_скрипта"function myFunctionEnter(trigger) print('------enter ------') --print(trigger.activator) --print(trigger.caller) end function myFunctionLeave(trigger) print('------ leave------') --print(trigger.activator) --print(trigger.caller) endПодготовка завершена. Проверим: для начала запомните где ваш триггер (он же прозрачный) разместите его рядом с базой, или наставьте объектов по периметру - это уже на ваше усмотрение. Пикните героя, и зайдите в триггер. посмотрите в консоль (клавиша ~ или ё) должно появится сообщение ------enter ------ (тоже синее) если есть значит все ОК.
- trigger.activator - тот, кто зашел в зону.
- trigger.caller - не знаю (с англ. вызывающий, но разве это нам о чем то говорит? мне - нет:))
Собсна само скриптоделие :cool:4) Как ни странно, но эта часть намного меньше первой. Почему? да потому ,что там все очень просто: На вход функциям передается trigger как вы уже заметили у него есть свойство activator так вот этот активатор никто иной как "представитель" CDOTA_BaseNPC те, кто читал первые 2 части уже знает про существование списка API методов. https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/API И там есть раздел CDOTA_BaseNPC так вот методы из этого раздела могут вызывать представители класса CDOTA_BaseNPC (вот так нежданчик ??). Хватит балаболить, возьмем любой (интересный) метод из этого списка и вызовем у нашего активатора. Этим методом будет AddNewModifier(handle caster, handle optionalSourceAbility, string modifierName, handle modifierData)https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Built-In_Modifier_Names Лично я использовал только этот modifier_rune_haste (другие модификаторы потестите сами) Да да чувак, попавший в область триггера получает хасту. По логике при выходе из области нужно отбирать хасту - так и сделаем. trigger.activator:RemoveModifierByName("modifier_rune_haste")
- второй и третий будут nil
- в первый передаем trigger.activator
- последний - самый интересный. Передаем модификатор из списка:
Спойлер: "Фулл_КОД"function myFunctionEnter(trigger) print('------enter ------') trigger.activator:AddNewModifier(trigger.activator, nil, "modifier_rune_haste", nil) end function myFunctionLeave(trigger) print('------ leave------') trigger.activator:RemoveModifierByName("modifier_rune_haste") endНажмите, чтобы раскрыть...
Прост я те разделы уже прошел, а в закладках так и остались англ версии, думаю каждый знает что можно дописать в конце адресса :ru Плюс ко всему разделы обновляются, в русс версии скриптинга в отделе ссылок 2 "пункта" а в англ уже 7.Nagibator230 сказал(а):↑Не проще давать ссылки на русскую вики? ПыСы Попросил админов закрепить часть 2Нажмите, чтобы раскрыть...
СУПЕР ДЕЛАЙ ЕЩЕ ГАЙДИКОВ!!!doter.ua сказал(а):↑Спойлер: "Вторая часть"*** Триггер ***1) Каждый, кто добавлял рошана, использовал дефолтный триггер. Триггер - фиговина, имеющая два состояния. В случае с рошей состояния такие:Кроме "рошанского" триггера есть еще парочка дефолтных, но все изващенные фантазии разработчиков предусмотреть нельзя, поэтому есть способ создания своего кастомного тригерра.
- Можно бить (вы в зоне тригерра)
- Нельзя бить (вы вне зоны)
Подготовка Триггера2) Делаем все, как в "рошанском" триггере (см. главную тему раздела) когда дело доходит до выбора класса (для роши: trigger_boss_atackable) здесь выбираем trigger_hero - будем отлавливать героев. Выделите триггер и зайдите в свойства (ALT + ENTER или дабл клик по тригеру) дальше по фото:Создание скрипта: создать файл.тхт переименовать в .lua, сам файл пока пустой. для тех, кто в танке: закинуть скрипт в папку ваш_аддон\scripts\vscripts\ В этом же окне перейдите во вкладку Outputs и внизу нажмите add далее как на фото:Спойлер: "ФОТО_Инструкция"Потом еще раз add но уже выбрать OnEndTouch и четвертом параметре имя другой функции myFunctionLeave. 3) Последний штрих - заполнить сам скрипт. Офиц. вольво доки дают следующий пример: https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Simple_Trigger_that_calls_Lua Там имена функций совпадают методом которые мы выбирали в окне свойств (первое поле) Это удобно, но не обязательно, главное, чтобы имя совпадало с четвертым полем. Не буду топтаться над этими свойствами, кто дошел до 3-й части все это и сам поймет.Спойлер: "ФОТО_инструкция"В примере от вольво выводятся в консоль trigger.activator и trigger.caller я их закомментил и вывел свои понятные сообщения.Спойлер: "КОД_скрипта"function myFunctionEnter(trigger) print('------enter ------') --print(trigger.activator) --print(trigger.caller) end function myFunctionLeave(trigger) print('------ leave------') --print(trigger.activator) --print(trigger.caller) endПодготовка завершена. Проверим: для начала запомните где ваш триггер (он же прозрачный) разместите его рядом с базой, или наставьте объектов по периметру - это уже на ваше усмотрение. Пикните героя, и зайдите в триггер. посмотрите в консоль (клавиша ~ или ё) должно появится сообщение ------enter ------ (тоже синее) если есть значит все ОК.
- trigger.activator - тот, кто зашел в зону.
- trigger.caller - не знаю (с англ. вызывающий, но разве это нам о чем то говорит? мне - нет:))
Собсна само скриптоделие :cool:4) Как ни странно, но эта часть намного меньше первой. Почему? да потому ,что там все очень просто: На вход функциям передается trigger как вы уже заметили у него есть свойство activator так вот этот активатор никто иной как "представитель" CDOTA_BaseNPC те, кто читал первые 2 части уже знает про существование списка API методов. https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/API И там есть раздел CDOTA_BaseNPC так вот методы из этого раздела могут вызывать представители класса CDOTA_BaseNPC (вот так нежданчик ??). Хватит балаболить, возьмем любой (интересный) метод из этого списка и вызовем у нашего активатора. Этим методом будет AddNewModifier(handle caster, handle optionalSourceAbility, string modifierName, handle modifierData)https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Built-In_Modifier_Names Лично я использовал только этот modifier_rune_haste (другие модификаторы потестите сами) Да да чувак, попавший в область триггера получает хасту. По логике при выходе из области нужно отбирать хасту - так и сделаем. trigger.activator:RemoveModifierByName("modifier_rune_haste")
- второй и третий будут nil
- в первый передаем trigger.activator
- последний - самый интересный. Передаем модификатор из списка:
Спойлер: "Фулл_КОД"function myFunctionEnter(trigger) print('------enter ------') trigger.activator:AddNewModifier(trigger.activator, nil, "modifier_rune_haste", nil) end function myFunctionLeave(trigger) print('------ leave------') trigger.activator:RemoveModifierByName("modifier_rune_haste") endНажмите, чтобы раскрыть...
Лив работает, значит ошибка в названии функции(либо в скрипте, либо в четвертом свойстве в том окошке) кароче они должны быть одинаковы.Immortal0110 сказал(а):↑Почему-то не работает. Консоль выводит сообщение: Делал всё по инструкции. Может вы можете подсказать, где я совершил ошибку?Нажмите, чтобы раскрыть...
Я такой же самоучка как и все, смотрю разные исходники (тот же холдаут), читаю вики, английские форумы. Кстати четверг вот вот закончится :)6o6uK сказал(а):↑Слушай, ты в скриптинге норм разбираешся? Именно lua и код доты. Если да, то я тебе в четверг вечером отпишу, есть дело) А гайды очень хорошие, пиши еще.Нажмите, чтобы раскрыть...
Так и не разобрался, но зато у меня получилось сделать тоже самое, но немного по-другому. Вот способ: https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools:ru/Scripting:ru/Simple_Trigger_that_calls_Lua:rudoter.ua сказал(а):↑Я такой же самоучка как и все, смотрю разные исходники (тот же холдаут), читаю вики, английские форумы. Кстати четверг вот вот закончится :)Нажмите, чтобы раскрыть...
Ну да, это оригинал, в этом гайде даже ссылка на него (только на англ. версию)Immortal0110 сказал(а):↑Так и не разобрался, но зато у меня получилось сделать тоже самое, но немного по-другому. Вот способ: https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools:ru/Scripting:ru/Simple_Trigger_that_calls_Lua:ruНажмите, чтобы раскрыть...
Вот мой скрипт + карта (карту в папку мапс кинь и открой в хаммере) http://rghost.ru/57473640obkose сказал(а):↑даНажмите, чтобы раскрыть...
Тема закрыта
-
ЗаголовокОтветов ПросмотровПоследнее сообщение
-
Rivetloh 26 Apr 2024 в 16:25Сообщений: 2 26 Apr 2024 в 16:25
Сообщений:2
Просмотров:2
-
Сообщений:3
Просмотров:4
-
Сообщений:4
Просмотров:5
-
Сообщений:4
Просмотров:5
-
Сообщений:2
Просмотров:3