Простые вопросы #3

S4NDW1CH

Пользователь
15 Ноя 2020
27
0
steamcommunity.com
Проект
Memes Reborn 2.0
добавь юниту модификатор "modifier_fear"
я сделаль
function Nightmare( event ) local caster = event.caster local target = event.target -- find enemy fountain local buildings = FindUnitsInRadius( caster:GetTeamNumber(), -- int, your team number Vector(150,150,0), -- point, center point nil, -- handle, cacheUnit. (not known) FIND_UNITS_EVERYWHERE, -- float, radius. or use FIND_UNITS_EVERYWHERE DOTA_UNIT_TARGET_TEAM_FRIENDLY, -- int, team filter DOTA_UNIT_TARGET_BUILDING, -- int, type filter DOTA_UNIT_TARGET_FLAG_INVULNERABLE, -- int, flag filter 0, -- int, order filter false -- bool, can grow cache ) local fountain = nil for _,building in pairs(buildings) do if building:GetClassname()=="ent_dota_fountain" then fountain = building break end end -- if no fountain, just don't do anything if not fountain then return end -- for lane creep, MoveToPosition won't work, so use this if target:IsCreep() then target:SetForceAttackTargetAlly( fountain ) -- for creeps end -- for others, order to run to fountain target:MoveToPosition( fountain:GetOrigin() ) end
 
20 Дек 2016
886
164
Есть ли возможность отправить команду в консоль из js клиента?
(CreateCustomKeyBind не подходит. Мне нужно чтоб это срабатывало при нажатии на элемент худа)
 

SniperX

Друзья CG
26 Фев 2018
534
92
steamcommunity.com
Проект
Dota 2 Classic 6.84

KILL ME

Пользователь
27 Июн 2021
17
0
Проект
Gods two Girls
Ребят подскажите в чем проблема.
Есть крч вот такой вот код, но когда запускаешь кастомку он ругается на Dynamic_Wrap

function GameMode:InitGameMode()
ListenToGameEvent("entity_killed", Dynamic_Wrap(CustomGameMode, "OnEntityKilled"), self)
end

function GameMode:OnEntityKilled( keys )

local killed_unit = EntIndexToHScript( keys.entindex_killed )
local killer = EntIndexToHScript( keys.entindex_attacker )

if killed_unit:GetUnitName() == "unit_name1" then
GameRules:SetGameWinner(killer:GetTeam())
end

if killed_unit:GetUnitName() == "unit_name2" then
GameRules:SetGameWinner(killer:GetTeam())
end
end
 

stranger568

Активный
7 Сен 2015
91
18
bmemov.ru
Проект
Birzha Memov
Ребят подскажите в чем проблема.
Есть крч вот такой вот код, но когда запускаешь кастомку он ругается на Dynamic_Wrap

function GameMode:InitGameMode()
ListenToGameEvent("entity_killed", Dynamic_Wrap(CustomGameMode, "OnEntityKilled"), self)
end

function GameMode:OnEntityKilled( keys )

local killed_unit = EntIndexToHScript( keys.entindex_killed )
local killer = EntIndexToHScript( keys.entindex_attacker )

if killed_unit:GetUnitName() == "unit_name1" then
GameRules:SetGameWinner(killer:GetTeam())
end

if killed_unit:GetUnitName() == "unit_name2" then
GameRules:SetGameWinner(killer:GetTeam())
end
end
Зачем подключать CustomGameMode ? Если у тебя GameMode
 
  • Вооу
Реакции: vulkantsk

KILL ME

Пользователь
27 Июн 2021
17
0
Проект
Gods two Girls
подскажите плех, как сделать книгу (item) которая при использовании будет сравнить припасов в определенной точке и отправлять их на waypoint
 

DeFughIv

Новичок
10 Сен 2021
3
1
При использовании скилла, что выполнен на подобии Чаржа бары, выдает ошибку Screenshot_1.png

Самостоятельно решить проблему не удалось, поэтому пишу на форум

modifier_TaisonCharge = class({})

function modifier_TaisonCharge:IsHidden()
return false
end

function modifier_TaisonCharge:IsDebuff()
return false
end

function modifier_TaisonCharge:IsPurgable()
return false
end

function modifier_TaisonCharge:OnCreated( kv )

if not IsServer() then return end

self.caster = self:GetCaster()
self.parent = self:GetParent()
self.bonus_ms = self:GetAbility():GetSpecialValueFor( "movement_speed" )
self.radius = self:GetAbility():GetSpecialValueFor( "bash_radius" )
self.duration = self:GetAbility():GetSpecialValueFor( "stun_duration" )

self.target = EntIndexToHScript( kv.target )
self.direction = self.caster:GetForwardVector()
self.targets = {}

self.search_radius = 4000
self.tree_radius = 150
self.min_dist = 150
self.offset = 20
self.interrupted = false

self.mod = self.parent:FindModifierByName( "modifier_none")
if self.mod and self.mod:GetAbility():GetLevel()<1 then
self.mod = nil
end


if not self:ApplyHorizontalMotionController() then
self.interrupted = true
self:Destroy()
end

self:SetTarget( self.target )

self:GetAbility():SetActivated( false )

local sound_cast = "Hero_Spirit_Breaker.ChargeOfDarkness"
EmitSoundOn( sound_cast, self.parent )
end

function modifier_TaisonCharge:OnRefresh( kv )
end

function modifier_TaisonCharge:OnRemoved()
end

function modifier_TaisonCharge:OnDestroy()
if not IsServer() then return end

GridNav:DestroyTreesAroundPoint( self:GetParent():GetOrigin(), self.tree_radius, true )

self:GetParent():RemoveHorizontalMotionController( self )

if self.debuff and (not self.debuff:IsNull()) then
self.debuff:Destroy()
end

self:GetAbility():SetActivated( true )

self:GetAbility():UseResources( false, false, true)

if self.interrupted then return end

self.target:AddNewModifier(
self.parent,
self:GetAbility(),
"modifier_memes_stunned",
{ duration = self.duration }
)
if self.target:IsAlive() then
local order = {
UnitIndex = self.parent:entindex(),
OrderType = DOTA_UNIT_ORDER_ATTACK_TARGET,
TargetIndex = self.target:entindex(),
}
ExecuteOrderFromTable( order )
self.parent:SetAttacking( self.target )
end

local sound_cast = "Hero_Spirit_Breaker.Charge.Impact"
EmitSoundOn( sound_cast, self.target )
end

function modifier_TaisonCharge:DeclareFunctions()
local funcs = {
MODIFIER_EVENT_ON_ORDER,
MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT,
MODIFIER_PROPERTY_IGNORE_MOVESPEED_LIMIT,
}
return funcs
end

function modifier_TaisonCharge:OnOrder( params )
if params.unit~=self.parent then return end

if
params.order_type==DOTA_UNIT_ORDER_MOVE_TO_POSITION or
params.order_type==DOTA_UNIT_ORDER_MOVE_TO_TARGET or
params.order_type==DOTA_UNIT_ORDER_ATTACK_TARGET or
params.order_type==DOTA_UNIT_ORDER_STOP or
params.order_type==DOTA_UNIT_ORDER_HOLD_POSITION or
params.order_type==DOTA_UNIT_ORDER_CAST_POSITION or
params.order_type==DOTA_UNIT_ORDER_CAST_TARGET or
params.order_type==DOTA_UNIT_ORDER_CAST_TARGET_TREE or
params.order_type==DOTA_UNIT_ORDER_CAST_RUNE or
params.order_type==DOTA_UNIT_ORDER_VECTOR_TARGET_POSITION

then
self.interrupted = true
self:Destroy()
end
end

function modifier_TaisonCharge:GetModifierMoveSpeedBonus_Constant()
return self.bonus_ms
end

function modifier_TaisonCharge:GetModifierIgnoreMovespeedLimit()
return 1
end

function modifier_TaisonCharge:UpdateHorizontalMotion( me, dt )

self:CancelLogic()

local direction = self.target:GetOrigin()-me:GetOrigin()
local dist = direction:Length2D()
direction.z = 0
direction = direction:Normalized()

if dist<self.min_dist then
self:Destroy()
return
end

local pos = me:GetOrigin() + direction * me:GetIdealSpeed() * dt
pos = GetGroundPosition( pos,me )

me:SetOrigin( pos )
self.direction = direction

self.parent:FaceTowards( self.target:GetOrigin() )
end

function modifier_TaisonCharge:OnHorizontalMotionInterrupted()
self.interrupted = true
self:Destroy()
end

function modifier_TaisonCharge:BashLogic()

if (not self.mod) or self.mod:IsNull() then return end

local loc = self.parent:GetOrigin() + self.direction * self.offset

local enemies = FindUnitsInRadius(
self.parent:GetTeamNumber(),
loc,
nil,
self.radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_HERO,
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES,
0,
false
)

for _,enemy in pairs(enemies) do
if not self.targets[enemy] then
self.targets[enemy] = true

self.mod:Bash( enemy, 0, false )
end
end
end

function modifier_TaisonCharge:CancelLogic()

local check = self.parent:IsHexed() or self.parent:IsStunned() or self.parent:IsRooted()
if check then
self.interrupted = true
self:Destroy()
end

if not self.target:IsAlive() then

local enemies = FindUnitsInRadius(
self.parent:GetTeamNumber(),
self.target:GetOrigin(),
nil,
self.search_radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_HERO,
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES + DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE + DOTA_UNIT_TARGET_FLAG_NO_INVIS,
FIND_CLOSEST,
false
)

if #enemies<1 then
self.interrupted = true
self:Destroy()
return

else
self:SetTarget( enemies[1] )
end
end
end

function modifier_TaisonCharge:SetTarget( target )

if self.debuff and (not self.debuff:IsNull()) then
self.debuff:Destroy()
end

self.debuff = target:AddNewModifier(
self.parent,
self:GetAbility(),
"modifier_TaisonCharge_debuff",
{}
)

self.target = target

self.targets[target] = true
end

function modifier_TaisonCharge:GetEffectName()
return "particles/units/heroes/hero_spirit_breaker/spirit_breaker_charge.vpcf"
end

function modifier_TaisonCharge:GetEffectAttachType()
return PATTACH_ABSORIGIN_FOLLOW
end
 

KILL ME

Пользователь
27 Июн 2021
17
0
Проект
Gods two Girls
Подскажите как сделать что б придмет после использования пропал
 

SniperX

Друзья CG
26 Фев 2018
534
92
steamcommunity.com
Проект
Dota 2 Classic 6.84
Подскажите как сделать что б придмет после использования пропал
Даёшь предмету заряды, скрываешь эти заряды, после использования расходуешь заряды
KV:
"ItemStackable"                 "0"
"ItemInitialCharges"            "1"
"ItemHideCharges"               "1"

Lua:
function item_enchanted_mango_lua:OnSpellStart()
    self:SpendCharge()
end
или
KV:
"OnSpellStart"
{
    "SpendCharge"
    {}
}
 

KILL ME

Пользователь
27 Июн 2021
17
0
Проект
Gods two Girls
Даёшь предмету заряды, скрываешь эти заряды, после использования расходуешь заряды
KV:
"ItemStackable"                 "0"
"ItemInitialCharges"            "1"
"ItemHideCharges"               "1"

Lua:
function item_enchanted_mango_lua:OnSpellStart()
    self:SpendCharge()
end
или
KV:
"OnSpellStart"
{
    "SpendCharge"
    {}
}
спасибо, но уже нашел все. не подскажешь как сделать пик как в сингл драфт?
 

DeFughIv

Новичок
10 Сен 2021
3
1
При использовании скилла, что выполнен на подобии Чаржа бары, выдает ошибку Посмотреть вложение 1408

Самостоятельно решить проблему не удалось, поэтому пишу на форум

modifier_TaisonCharge = class({})

function modifier_TaisonCharge:IsHidden()
return false
end

function modifier_TaisonCharge:IsDebuff()
return false
end

function modifier_TaisonCharge:IsPurgable()
return false
end

function modifier_TaisonCharge:OnCreated( kv )

if not IsServer() then return end

self.caster = self:GetCaster()
self.parent = self:GetParent()
self.bonus_ms = self:GetAbility():GetSpecialValueFor( "movement_speed" )
self.radius = self:GetAbility():GetSpecialValueFor( "bash_radius" )
self.duration = self:GetAbility():GetSpecialValueFor( "stun_duration" )

self.target = EntIndexToHScript( kv.target )
self.direction = self.caster:GetForwardVector()
self.targets = {}

self.search_radius = 4000
self.tree_radius = 150
self.min_dist = 150
self.offset = 20
self.interrupted = false

self.mod = self.parent:FindModifierByName( "modifier_none")
if self.mod and self.mod:GetAbility():GetLevel()<1 then
self.mod = nil
end


if not self:ApplyHorizontalMotionController() then
self.interrupted = true
self:Destroy()
end

self:SetTarget( self.target )

self:GetAbility():SetActivated( false )

local sound_cast = "Hero_Spirit_Breaker.ChargeOfDarkness"
EmitSoundOn( sound_cast, self.parent )
end

function modifier_TaisonCharge:OnRefresh( kv )
end

function modifier_TaisonCharge:OnRemoved()
end

function modifier_TaisonCharge:OnDestroy()
if not IsServer() then return end

GridNav:DestroyTreesAroundPoint( self:GetParent():GetOrigin(), self.tree_radius, true )

self:GetParent():RemoveHorizontalMotionController( self )

if self.debuff and (not self.debuff:IsNull()) then
self.debuff:Destroy()
end

self:GetAbility():SetActivated( true )

self:GetAbility():UseResources( false, false, true)

if self.interrupted then return end

self.target:AddNewModifier(
self.parent,
self:GetAbility(),
"modifier_memes_stunned",
{ duration = self.duration }
)
if self.target:IsAlive() then
local order = {
UnitIndex = self.parent:entindex(),
OrderType = DOTA_UNIT_ORDER_ATTACK_TARGET,
TargetIndex = self.target:entindex(),
}
ExecuteOrderFromTable( order )
self.parent:SetAttacking( self.target )
end

local sound_cast = "Hero_Spirit_Breaker.Charge.Impact"
EmitSoundOn( sound_cast, self.target )
end

function modifier_TaisonCharge:DeclareFunctions()
local funcs = {
MODIFIER_EVENT_ON_ORDER,
MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT,
MODIFIER_PROPERTY_IGNORE_MOVESPEED_LIMIT,
}
return funcs
end

function modifier_TaisonCharge:OnOrder( params )
if params.unit~=self.parent then return end

if
params.order_type==DOTA_UNIT_ORDER_MOVE_TO_POSITION or
params.order_type==DOTA_UNIT_ORDER_MOVE_TO_TARGET or
params.order_type==DOTA_UNIT_ORDER_ATTACK_TARGET or
params.order_type==DOTA_UNIT_ORDER_STOP or
params.order_type==DOTA_UNIT_ORDER_HOLD_POSITION or
params.order_type==DOTA_UNIT_ORDER_CAST_POSITION or
params.order_type==DOTA_UNIT_ORDER_CAST_TARGET or
params.order_type==DOTA_UNIT_ORDER_CAST_TARGET_TREE or
params.order_type==DOTA_UNIT_ORDER_CAST_RUNE or
params.order_type==DOTA_UNIT_ORDER_VECTOR_TARGET_POSITION

then
self.interrupted = true
self:Destroy()
end
end

function modifier_TaisonCharge:GetModifierMoveSpeedBonus_Constant()
return self.bonus_ms
end

function modifier_TaisonCharge:GetModifierIgnoreMovespeedLimit()
return 1
end

function modifier_TaisonCharge:UpdateHorizontalMotion( me, dt )

self:CancelLogic()

local direction = self.target:GetOrigin()-me:GetOrigin()
local dist = direction:Length2D()
direction.z = 0
direction = direction:Normalized()

if dist<self.min_dist then
self:Destroy()
return
end

local pos = me:GetOrigin() + direction * me:GetIdealSpeed() * dt
pos = GetGroundPosition( pos,me )

me:SetOrigin( pos )
self.direction = direction

self.parent:FaceTowards( self.target:GetOrigin() )
end

function modifier_TaisonCharge:OnHorizontalMotionInterrupted()
self.interrupted = true
self:Destroy()
end

function modifier_TaisonCharge:BashLogic()

if (not self.mod) or self.mod:IsNull() then return end

local loc = self.parent:GetOrigin() + self.direction * self.offset

local enemies = FindUnitsInRadius(
self.parent:GetTeamNumber(),
loc,
nil,
self.radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_HERO,
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES,
0,
false
)

for _,enemy in pairs(enemies) do
if not self.targets[enemy] then
self.targets[enemy] = true

self.mod:Bash( enemy, 0, false )
end
end
end

function modifier_TaisonCharge:CancelLogic()

local check = self.parent:IsHexed() or self.parent:IsStunned() or self.parent:IsRooted()
if check then
self.interrupted = true
self:Destroy()
end

if not self.target:IsAlive() then

local enemies = FindUnitsInRadius(
self.parent:GetTeamNumber(),
self.target:GetOrigin(),
nil,
self.search_radius,
DOTA_UNIT_TARGET_TEAM_ENEMY,
DOTA_UNIT_TARGET_HERO,
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES + DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE + DOTA_UNIT_TARGET_FLAG_NO_INVIS,
FIND_CLOSEST,
false
)

if #enemies<1 then
self.interrupted = true
self:Destroy()
return

else
self:SetTarget( enemies[1] )
end
end
end

function modifier_TaisonCharge:SetTarget( target )

if self.debuff and (not self.debuff:IsNull()) then
self.debuff:Destroy()
end

self.debuff = target:AddNewModifier(
self.parent,
self:GetAbility(),
"modifier_TaisonCharge_debuff",
{}
)

self.target = target

self.targets[target] = true
end

function modifier_TaisonCharge:GetEffectName()
return "particles/units/heroes/hero_spirit_breaker/spirit_breaker_charge.vpcf"
end

function modifier_TaisonCharge:GetEffectAttachType()
return PATTACH_ABSORIGIN_FOLLOW
end

Проблему спустя несколько дней решил. Просто недоглядел. Для всех, кто столкнется с такой же проблемой напишу способ решения:
Чтоб решить эту проблему, в луа коде, где вы привязываете к скиллу модификатор через LinkLuaModifier пропишите в конце LUA_MODIFIER_MOTION_HORIZONTAL (ну или какой вам там надо)
Пример:
LinkLuaModifier("modifier_*название модификатора", "путь к модификатору*", LUA_MODIFIER_MOTION_HORIZONTAL )
 

N1vaga

Новичок
17 Сен 2021
1
0
Проект
Дота 2 кастомка
Скажите как убрать колесо чата. После обновления с компендиумом появилось. Некоторые уже убрали, а я не знаю как

123.jpg
 

DeFughIv

Новичок
10 Сен 2021
3
1
Как удалить у персонажа аганим шард?
Проблема такая: есть персонаж Dark Seer и у него есть аганим шард на доп способность. Однако этот аганим шард привязан к самому персонажу, а не к скиллу, как обычно, бывает. Мне не удалось найти строчку кода, которая отвечала бы за этот шард. За помощь буду благодарен
 

DDSuper

Друзья CG
31 Май 2019
397
53
Как удалить у персонажа аганим шард?
Проблема такая: есть персонаж Dark Seer и у него есть аганим шард на доп способность. Однако этот аганим шард привязан к самому персонажу, а не к скиллу, как обычно, бывает. Мне не удалось найти строчку кода, которая отвечала бы за этот шард. За помощь буду благодарен
Переписать с нуля
 

CTNZ

Новичок
27 Сен 2021
2
0
создал button в xml, расположил на loading screen - все появилось, хотел сделать анимацию через :hover c параматером transform scale3d, но ракции ни какой на псевдокласс, в чем может быть проблема ?
 

stranger568

Активный
7 Сен 2015
91
18
bmemov.ru
Проект
Birzha Memov
Как удалить у персонажа аганим шард?
Проблема такая: есть персонаж Dark Seer и у него есть аганим шард на доп способность. Однако этот аганим шард привязан к самому персонажу, а не к скиллу, как обычно, бывает. Мне не удалось найти строчку кода, которая отвечала бы за этот шард. За помощь буду благодарен
Почему бы тебе просто не убрать способность? Аганим шарды встроены в код доты и изменить их нельзя
 

stranger568

Активный
7 Сен 2015
91
18
bmemov.ru
Проект
Birzha Memov
создал button в xml, расположил на loading screen - все появилось, хотел сделать анимацию через :hover c параматером transform scale3d, но ракции ни какой на псевдокласс, в чем может быть проблема ?
Не уверен, но у меня было такое что какие-то скрытые панели валв мешали отображению на загрузочном экране.
Пропиши в xml файле

Lua:
<script>
    $.GetContextPanel().GetParent().GetParent().FindChildTraverse("LoadingScreenBattleCupWinnerContainer").style.visibility = "collapse";
    $.GetContextPanel().GetParent().GetParent().FindChildTraverse("SidebarAndBattleCupLayoutContainer").style.visibility = "collapse";
    </script>
 

CTNZ

Новичок
27 Сен 2021
2
0
Не уверен, но у меня было такое что какие-то скрытые панели валв мешали отображению на загрузочном экране.
Пропиши в xml файле

Lua:
<script>
    $.GetContextPanel().GetParent().GetParent().FindChildTraverse("LoadingScreenBattleCupWinnerContainer").style.visibility = "collapse";
    $.GetContextPanel().GetParent().GetParent().FindChildTraverse("SidebarAndBattleCupLayoutContainer").style.visibility = "collapse";
    </script>
спасибо заработало)
 
Реклама: