doter.ua

Пользователь

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

doter.ua

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

iddqd сказал(а):
мнеб пример - яб его разобрал
просто вот вижу в коде например строчки типа self: caster: итд, и не могу понять где оно присваивается и как делать =\
Нажмите, чтобы раскрыть...
Вчера, когда абилки изучал видел забавный пример, где из скила лон друида спавнили по таргету:

//===============================================
// Make Bear
//===============================================

"item_make_bear"
{

"ID"






"4"

"BaseClass"




"item_datadriven"

"AbilityBehavior"



"DOTA_ABILITY_BEHAVIOR_POINT"

"AbilityTextureName"


"item_rapier"

"ItemCost"




"0"

"AbilityCastRange"


"400"

"AbilityCooldown"



"60"

"AbilityManaCost"



"0"

"ItemKillable"



"0"

"ItemSellable"



"0"

"ItemDroppable"



"1"



"ItemInitialCharges"



"1"

"OnSpellStart"

{


"SpendCharge"



{}


"SpawnUnit"


{



"Target"


"POINT"



"UnitName"


"npc_dota_lone_druid_bear1"



"UnitCount"


"1"


}

}
}

npc_dota_lone_druid_bear1 - константа с именем юнита. И да это не скилл а шмотка, но суть от этого не меняется

Nagibator230

Пользователь

Регистрация: 22.07.2013

Сообщения: 892

Рейтинг: 309

Nagibator230

Регистрация: 22.07.2013

Сообщения: 892

Рейтинг: 309

iddqd сказал(а):
Нажмите, чтобы раскрыть...

Чье это, не кибер мэта ли?

iddqd

Пользователь

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

iddqd

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

Nagibator230 сказал(а):
Чье это, не кибер мэта ли?
Нажмите, чтобы раскрыть...

его или нет - хз
с его твиттера дёрнул

iddqd

Пользователь

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

iddqd

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

doter.ua сказал(а):
Вчера, когда абилки изучал видел забавный пример, где из скила лон друида спавнили по таргету:

//===============================================
// Make Bear
//===============================================

"item_make_bear"
{

"ID"






"4"

"BaseClass"




"item_datadriven"

"AbilityBehavior"



"DOTA_ABILITY_BEHAVIOR_POINT"

"AbilityTextureName"


"item_rapier"

"ItemCost"




"0"

"AbilityCastRange"


"400"

"AbilityCooldown"



"60"

"AbilityManaCost"



"0"

"ItemKillable"



"0"

"ItemSellable"



"0"

"ItemDroppable"



"1"



"ItemInitialCharges"



"1"

"OnSpellStart"

{


"SpendCharge"



{}


"SpawnUnit"


{



"Target"


"POINT"



"UnitName"


"npc_dota_lone_druid_bear1"



"UnitCount"


"1"


}

}
}

npc_dota_lone_druid_bear1 - константа с именем юнита. И да это не скилл а шмотка, но суть от этого не меняется
Нажмите, чтобы раскрыть...


да мнеб всётаки через луа
да и надо разобраться бы с этими переменными то

lomal

Пользователь

Регистрация: 10.08.2014

Сообщения: 12

Рейтинг: 0

lomal

Регистрация: 10.08.2014

Сообщения: 12

Рейтинг: 0

Afroamericano сказал(а):
Дело не в скиле, а в том что его нужно прекешировать
Нажмите, чтобы раскрыть...

А подскажи как подключить звуки к скилам?
Догадываюсь что прекешировать как и анимацию, но как именно не знаю, нужен пример.

Afroamericano

Пользователь

Регистрация: 16.05.2013

Сообщения: 7182

Рейтинг: 3181

Afroamericano

Регистрация: 16.05.2013

Сообщения: 7182

Рейтинг: 3181

lomal сказал(а):
А подскажи как подключить звуки к скилам?
Догадываюсь что прекешировать как и анимацию, но как именно не знаю, нужен пример.
Нажмите, чтобы раскрыть...

Скачай карту с кастомными скилам, расковыряй и посмотри

L00na

Пользователь

Регистрация: 02.03.2014

Сообщения: 47

Рейтинг: 18

L00na

Регистрация: 02.03.2014

Сообщения: 47

Рейтинг: 18

Итак, сейчас расскажу как застанить всех героев до начала игры и как добавить им в инвентарь предмет (-ы).
Для начала, в функции инициализации аддона (MyAddon:InitGameMode к примеру) создадим таблицу heroes, она, естественно, будет пока пустой:

self.heroes = {}

Также нам понадобится событие npc_spawned, создадим функцию:

function MyAddon:OnNPCSpawned( keys )

local unit = EntIndexToHScript( keys.entindex ) -- Преобразуем числовое значение в таблицу

if unit:IsRealHero() then -- Проверяем, герой ли это


local item = CreateItem("item_blink", unit, unit) -- Создадим предмет с названием "item_blink" и делаем юнита владельцем


unit:AddItem(item) -- Добавляем созданный выше предмет в инвентарь герою


table.insert(self.heroes, unit) -- Добавляем героя в таблицу

end
end

Прослушаем это событие:

ListenToGameEvent('npc_spawned', Dynamic_Wrap(MyAddon, 'OnNPCSpawned'), self)

В функции MyAddon:Think пишем:

if GameRules:State_Get() <= DOTA_GAMERULES_STATE_PRE_GAME then -- Проверяем состояние игры, если это подготовка к игре или раньше, то продолжаем

for k,v in pairs(self.heroes) do -- Выполняем итерацию по заданной выше таблице

if not v:HasModifier("modifier_stunned") then -- Проверяем, нет ли уже у героя модификатора


v:AddNewModifier(v, nil, "modifier_stunned", {}) -- Если нет, то добавляем ему этот модификатор

end

end
elseif GameRules:State_Get() == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then -- Если игра уже началась

for k,v in pairs(self.heroes) do -- Итерируем таблицу снова

if v:HasModifier("modifier_stunned") then -- Проверям, имеет ли герой модификатор


v:RemoveModifierByName("modifier_stunned") -- Если имеет, то удаляем его

end

end
elseif GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then

return nil
end
return 1

И не забываем в функции инициализации аддона написать следующее:

GameMode:SetContextThink( "MyAddon:Think", function() return self:Think() end, 0.25 ) -- 0.25 - время между каждым вызовом функции (в секундах)

Весь код: http://pastebin.com/rQQURSpj
Или, на всякий случай, под споилером
Спойлер: "Код"

if MyAddon == nil then

MyAddon = class({})
end

function Precache( context )

end

function Activate()

GameRules.AddonTemplate = MyAddon()

GameRules.AddonTemplate:InitGameMode()
end

function MyAddon:InitGameMode()

local GameMode = GameRules:GetGameModeEntity()

GameMode:SetContextThink( "MyAddon:OnThink", function() return self:Think() end, 0.25 )

ListenToGameEvent('npc_spawned', Dynamic_Wrap(MyAddon, 'OnNPCSpawn'), self)


self.heroes = {}
end

function MyAddon:OnNPCSpawn( keys )

local unit = EntIndexToHScript(keys.entindex)

print("PLAYER OWNER ID: ", unit:GetPlayerOwnerID())

print("PLAYER OWNER: ", unit:GetOwner())

print("UNIT INDEX: ", keys.entindex)

print("UNIT HSCRIPT: ", unit)


if unit:IsRealHero() then

local item = CreateItem("item_blink", unit, unit)

print("ITEM CREATED: ", item)

unit:AddItem(item)

print("ITEM ADDED TO INVENTORY")

table.insert(self.heroes, unit)

end
end

function MyAddon:Think()

if GameRules:State_Get() <= DOTA_GAMERULES_STATE_PRE_GAME then

for k,v in pairs(self.heroes) do


if not v:HasModifier("modifier_stunned") then


v:AddNewModifier(v, nil, "modifier_stunned", {})


end

end

elseif GameRules:State_Get() == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then

for k,v in pairs(self.heroes) do


if v:HasModifier("modifier_stunned") then


v:RemoveModifierByName("modifier_stunned")


end

end

elseif GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then

return nil

end

return 1
end

doter.ua

Пользователь

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

doter.ua

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

322_google сказал(а):
мдалол,там кстати движок другой)))Сурс 2,а знаете,что это значит?
Нажмите, чтобы раскрыть...

Это значит, что больше движков соурс не будет, Габен не любит число три.

doter.ua

Пользователь

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

doter.ua

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

iddqd сказал(а):
да мнеб всётаки через луа
да и надо разобраться бы с этими переменными то
Нажмите, чтобы раскрыть...


local myHero = PlayerResource:GetSelectedHeroEntity( 0 )

if myHero ~= nil then


print( myHero:GetCursorPosition())

end
Все время возвращает вектор(0 0 0) Кароче эта функция никак не связана с курсором мыши, а с его позицией - тем более.
Максимум, что могу посоветовать - считывать вектор героя и творить рядом с ним (изменить одну из координат) Чтобы ориентироваться в размерах скажу, что 550 ед - средняя атака ренж героя, можно что-нибудь создать в радиусе 500 ед.

Iceblaze

Пользователь

Регистрация: 17.05.2013

Сообщения: 39

Рейтинг: 21

Iceblaze

Регистрация: 17.05.2013

Сообщения: 39

Рейтинг: 21

img
Привет всем. Я наверно совсем тупой вопрос сейчас задам, но подскажите, пожалуйста, как опубликовать карту в мастерской?

Nagibator230

Пользователь

Регистрация: 22.07.2013

Сообщения: 892

Рейтинг: 309

Nagibator230

Регистрация: 22.07.2013

Сообщения: 892

Рейтинг: 309

ПОЧТИ РАЗОБРАЛСЯ С МИНИКАРТОЙ!!!!!!!!!!!!! ШОК, СОТРЕТЬ ВСЕМ БЕЗ СМС!

Смысл в том, что у каждого объекта есть на карте координаты. Карта собой представляет квадрат с
координатам от 8192 до -8192. (тоесть координатная плоскость, если вам так проще)

В файле с названием карты, который лежит тут
dota 2 beta\dota_ugc\game\dota_addons\имя_вашего_супер_аддона\resource\overviews

По дефолту содержится примерно следующее:

имя_вашей_мегакарты
{

material materials/overviews/имя_вашей_мегакарты.vmat это ссылка на изображение (сама миникарта, та которая отображается с права всего лишь картинка

pos_x -8192 Карта подразумевает квадрат, тоесть второе значение будет таким же

pos_y 8192

scale 16

Непонятно что =/

zoom 1.050 коэффициент маштабирования.
}

Сейчас гуйд напишу =)

iddqd

Пользователь

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

iddqd

Регистрация: 10.11.2011

Сообщения: 261

Рейтинг: 74

doter.ua сказал(а):
local myHero = PlayerResource:GetSelectedHeroEntity( 0 )

if myHero ~= nil then


print( myHero:GetCursorPosition())

end
Все время возвращает вектор(0 0 0) Кароче эта функция никак не связана с курсором мыши, а с его позицией - тем более.
Максимум, что могу посоветовать - считывать вектор героя и творить рядом с ним (изменить одну из координат) Чтобы ориентироваться в размерах скажу, что 550 ед - средняя атака ренж героя, можно что-нибудь создать в радиусе 500 ед.
Нажмите, чтобы раскрыть...

спасибо и на этом)
ты ж мне рабочий вариант(пофиг что курсор позишон не курсор позишон) выдал)
буду знать в какую сторону копать

Iceblaze

Пользователь

Регистрация: 17.05.2013

Сообщения: 39

Рейтинг: 21

Iceblaze

Регистрация: 17.05.2013

Сообщения: 39

Рейтинг: 21

img
Iceblaze сказал(а):
Привет всем. Я наверно совсем тупой вопрос сейчас задам, но подскажите, пожалуйста, как опубликовать карту в мастерской?
Нажмите, чтобы раскрыть...


Ответьте, пожалуйста.

Nagibator230 сказал(а):


Смысл в том, что у каждого объекта есть на карте координаты. Карта собой представляет квадрат с
координатам от 8192 до -8192. (тоесть координатная плоскость, если вам так проще)

Нажмите, чтобы раскрыть...


Хмм... Напомнило редактор Starcraft 2. Там тоже у каждого объекта есть координаты. Отлично помогает, когда настраиваешь триггер на один из множества одинаковых объектов или юнитов.

Iceblaze

Пользователь

Регистрация: 17.05.2013

Сообщения: 39

Рейтинг: 21

Iceblaze

Регистрация: 17.05.2013

Сообщения: 39

Рейтинг: 21

img
Кстати, вот первые скриншоты моей карты. В целом, схожа с обычной, но есть и довольно большие отличия.
Спойлер: "Скрины"







Спойлер: "Миникарта"

Nagibator230

Пользователь

Регистрация: 22.07.2013

Сообщения: 892

Рейтинг: 309

Nagibator230

Регистрация: 22.07.2013

Сообщения: 892

Рейтинг: 309

Iceblaze сказал(а):
Кстати, вот первые скриншоты моей карты. В целом, схожа с обычной, но есть и довольно большие отличия.
Спойлер: "Скрины"







Спойлер: "Миникарта"
Нажмите, чтобы раскрыть...

Ничего не видно

Neoshka

Пользователь

Регистрация: 05.06.2014

Сообщения: 157

Рейтинг: 44

Neoshka

Регистрация: 05.06.2014

Сообщения: 157

Рейтинг: 44

Кто знает куда именно скачивается эта программка? В папку с игрой? или у неё отдельная директория?

Nagibator230

Пользователь

Регистрация: 22.07.2013

Сообщения: 892

Рейтинг: 309

Nagibator230

Регистрация: 22.07.2013

Сообщения: 892

Рейтинг: 309

Neoshka сказал(а):
Кто знает куда именно скачивается эта программка? В папку с игрой? или у неё отдельная директория?
Нажмите, чтобы раскрыть...

В папку с игрой
...\Steam\SteamApps\common\dota 2 beta\dota_ugc\

Neoshka

Пользователь

Регистрация: 05.06.2014

Сообщения: 157

Рейтинг: 44

Neoshka

Регистрация: 05.06.2014

Сообщения: 157

Рейтинг: 44

Nagibator230 сказал(а):
В папку с игрой
...\Steam\SteamApps\common\dota 2 beta\dota_ugc\
Нажмите, чтобы раскрыть...

Огрооооомное спасибо, выручил :)

Iceblaze

Пользователь

Регистрация: 17.05.2013

Сообщения: 39

Рейтинг: 21

Iceblaze

Регистрация: 17.05.2013

Сообщения: 39

Рейтинг: 21

img
Nagibator230 сказал(а):
Ничего не видно
Нажмите, чтобы раскрыть...


Да, знаю. Сейчас исправлю.

Iceblaze

Пользователь

Регистрация: 17.05.2013

Сообщения: 39

Рейтинг: 21

Iceblaze

Регистрация: 17.05.2013

Сообщения: 39

Рейтинг: 21

img
Спойлер: "Скрины карты"
[ATTACH=full]42892[/ATTACH] [ATTACH=full]42893[/ATTACH] [ATTACH=full]42892[/ATTACH] [ATTACH=full]42893[/ATTACH] [ATTACH=full]42894[/ATTACH] [ATTACH=full]42896[/ATTACH] [ATTACH=full]42897[/ATTACH] [ATTACH=full]42898[/ATTACH] [ATTACH=full]42899[/ATTACH]
Спойлер: "Миникарта"
[ATTACH=full]42900[/ATTACH]


Декорациями практически не занимался, так как карта ещё на Альфа стадии и явно придётся её править для улучшения баланса.

DeathGame

Пользователь

Регистрация: 04.07.2012

Сообщения: 672

Рейтинг: 185

DeathGame

Регистрация: 04.07.2012

Сообщения: 672

Рейтинг: 185

Кастомный герой не появляется((((

Почему так? ( вот код
//=================================================================================================================


// HERO: Mirana Wars Mirana


//=================================================================================================================


"npc_dota_hero_mirana_wars"


{




// General




//-------------------------------------------------------------------------------------------------------------




"override_hero"









"npc_dota_hero_mirana"







// Родительский класс









// Abilities




//-------------------------------------------------------------------------------------------------------------




"AbilityLayout"





"4"




"Ability1"








"mirana_arrow_new"























"Ability2"








"my_mirana_leap"























"Ability3"








"my_furion_sprout"























"Ability4"








"ability_4"























"Ability5"








"attribute_bonus"








// Armor




//-------------------------------------------------------------------------------------------------------------




"ArmorPhysical"





"-1"
















// Физ. защита




"MagicalResistance"




"25"
















// Маг. защита (в процентах)




// Attack




//-------------------------------------------------------------------------------------------------------------




"AttackCapabilities"


"DOTA_UNIT_CAP_RANGED_ATTACK"




"AttackDamageMin"





"1"


















// Мин. дамаг




"AttackDamageMax"





"1"


















// Макс. дамаг




"AttackRate"






"1.7"
















// Скорость атаки




"AttackAnimationPoint"

"0.3"
















// Цикл между атаками




"AttackAcquisitionRange"

"800"
















// Рейндж, в котором герой может нацелиться на противника




"AttackRange"






"600"
















// Рийндж атаки героя




"ProjectileSpeed"





"900"
















// Скорость снаряда




// Attributes




//-------------------------------------------------------------------------------------------------------------




"AttributePrimary"




"DOTA_ATTRIBUTE_STRENGTH"







// Базовый атрибут




"AttributeBaseStrength"

"0"


















// Сила




"AttributeStrengthGain"

"0"


















// Силы за уровень




"AttributeBaseIntelligence"
"0"


















// Интеллект




"AttributeIntelligenceGain"
"0"


















// Интеллекта за уровень




"AttributeBaseAgility"

"0"


















// Ловкость




"AttributeAgilityGain"

"0"


















// Ловкости за уровень




// Bounty




//-------------------------------------------------------------------------------------------------------------




"BountyXP"








"0"
















// Получиние экспы за убийство героя




// Movement




//-------------------------------------------------------------------------------------------------------------




"MovementSpeed"





"380"
















// Скорость передвижения




"MovementTurnRate"




"0.4"
















// Скорость поворота




// Status




//-------------------------------------------------------------------------------------------------------------




"StatusHealth"





"600"
















// Базовое здоровье




"StatusHealthRegen"




"0.25"















// Базовый реген здоровья




"StatusMana"






"300"


















// Базовая мана




"StatusManaRegen"





"0.1"
















// Базовый реген маны








// Vision




//-------------------------------------------------------------------------------------------------------------




"VisionDaytimeRange"


"1800"















// Дальность просмотра днём...




"VisionNighttimeRange"

"1000"
















// ... и ночью


}

doter.ua

Пользователь

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

doter.ua

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

DeathGame сказал(а):
Кастомный герой не появляется((((

Почему так? ( вот код
//=================================================================================================================


// HERO: Mirana Wars Mirana


//=================================================================================================================


"npc_dota_hero_mirana_wars"


{




// General




//-------------------------------------------------------------------------------------------------------------




"override_hero"









"npc_dota_hero_mirana"







// Родительский класс







// Abilities




//-------------------------------------------------------------------------------------------------------------




"AbilityLayout"





"4"




"Ability1"








"mirana_arrow_new"






















"Ability2"








"my_mirana_leap"






















"Ability3"








"my_furion_sprout"






















"Ability4"








"ability_4"






















"Ability5"








"attribute_bonus"







// Armor




//-------------------------------------------------------------------------------------------------------------




"ArmorPhysical"





"-1"
















// Физ. защита




"MagicalResistance"




"25"
















// Маг. защита (в процентах)




// Attack




//-------------------------------------------------------------------------------------------------------------




"AttackCapabilities"


"DOTA_UNIT_CAP_RANGED_ATTACK"




"AttackDamageMin"





"1"


















// Мин. дамаг




"AttackDamageMax"





"1"


















// Макс. дамаг




"AttackRate"






"1.7"
















// Скорость атаки




"AttackAnimationPoint"

"0.3"
















// Цикл между атаками




"AttackAcquisitionRange"

"800"
















// Рейндж, в котором герой может нацелиться на противника




"AttackRange"






"600"
















// Рийндж атаки героя




"ProjectileSpeed"





"900"
















// Скорость снаряда




// Attributes




//-------------------------------------------------------------------------------------------------------------




"AttributePrimary"




"DOTA_ATTRIBUTE_STRENGTH"







// Базовый атрибут




"AttributeBaseStrength"

"0"


















// Сила




"AttributeStrengthGain"

"0"


















// Силы за уровень




"AttributeBaseIntelligence"
"0"


















// Интеллект




"AttributeIntelligenceGain"
"0"


















// Интеллекта за уровень




"AttributeBaseAgility"

"0"


















// Ловкость




"AttributeAgilityGain"

"0"


















// Ловкости за уровень




// Bounty




//-------------------------------------------------------------------------------------------------------------




"BountyXP"








"0"
















// Получиние экспы за убийство героя




// Movement




//-------------------------------------------------------------------------------------------------------------




"MovementSpeed"





"380"
















// Скорость передвижения




"MovementTurnRate"




"0.4"
















// Скорость поворота




// Status




//-------------------------------------------------------------------------------------------------------------




"StatusHealth"





"600"
















// Базовое здоровье




"StatusHealthRegen"




"0.25"















// Базовый реген здоровья




"StatusMana"






"300"


















// Базовая мана




"StatusManaRegen"





"0.1"
















// Базовый реген маны







// Vision




//-------------------------------------------------------------------------------------------------------------




"VisionDaytimeRange"


"1800"















// Дальность просмотра днём...




"VisionNighttimeRange"

"1000"
















// ... и ночью


}
Нажмите, чтобы раскрыть...

Наверно где-то существует список с героями.
scripts/npc/herolist.txt посмотри в holdaut (который как пример в папке с остальными аддонами)

Nagibator230

Пользователь

Регистрация: 22.07.2013

Сообщения: 892

Рейтинг: 309

Nagibator230

Регистрация: 22.07.2013

Сообщения: 892

Рейтинг: 309

doter.ua сказал(а):
Наверно где-то существует список с героями.
scripts/npc/herolist.txt посмотри в holdaut (который как пример в папке с остальными аддонами)
Нажмите, чтобы раскрыть...

https://developer.valvesoftware.com/wiki/Dota_2_Workshop_Tools/Scripting/Heroes_internal_names

doter.ua

Пользователь

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

doter.ua

Регистрация: 04.07.2012

Сообщения: 547

Рейтинг: 214

Nagibator230 сказал(а):
Нажмите, чтобы раскрыть...

Ну это ты справочник скинул, а в тхт редактируют список доступных героев (по идее, я не тестил)

Gulich

Пользователь

Регистрация: 23.07.2014

Сообщения: 24

Рейтинг: 1

Gulich

Регистрация: 23.07.2014

Сообщения: 24

Рейтинг: 1

doter.ua сказал(а):
Ну это ты справочник скинул, а в тхт редактируют список доступных героев (по идее, я не тестил)
Нажмите, чтобы раскрыть...

Всё верно