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

DDSuper

Продвинутый
31 Май 2019
164
15
Нужна помощь с Юнитом не юзает скиллы

C++:
"Creature"
        {
            "DefaultState"    "Invade"
            "States"
            {
                "Invade"
                {
                    "Name"    "Invade"
                    "Agression"    "100.0"
                    "Avoidance"    "60.0"
                    "Support"    "0.0"
                    "RoamDistance"    "560"

                    "OffensiveAbilities"
                    {
                        "Ability1"               
                             {               
                            "Name"                "ursa_overpower"
                           }
                          "Ability2"               
                        {
                            "Name"                "ursa_enrage"
                           }
                            "Ability3"               
                        {
                            "Name"                "ursa_earth_shock"
                            "AOE"                "1"
                            "Radius"             "275"
                            "MinimumTargets"     "2"
                        }
                        "Ability4"
                        {
                            "Name"        "clinkz_wind_walk"
                        }
                    }   
                }
            }
 

xDes

Продвинутый
8 Ноя 2018
158
20
Проект
Boss Survival Adventure
тебе не кажется что тут чего-то не хватает?)
 
20 Дек 2016
824
133
Как узнать кейбинд игрока для какой-либо дефолтной команды? Мне надо узнать, на какую клавишу у игрока стоит "Выбрать курьера"
 

DDSuper

Продвинутый
31 Май 2019
164
15
Так у меня юнит нейтрал и ему надо использовать но он не хочет
 

muRLoc

Пользователь
25 Ноя 2018
43
12
Как узнать кейбинд игрока для какой-либо дефолтной команды? Мне надо узнать, на какую клавишу у игрока стоит "Выбрать курьера"
Попробуй это, может быть найдешь способ.
key_findbinding dota_select_courier
показывает в консоле
[Player 0] : "F2" = "dota_select_courier"
и еще можно попробовать пропарсить через panorama debugger, до панельки с кнопкой и вытащить её, но это не точно.
keybind.jpg
 

LAPKI

Активный
26 Окт 2018
124
28
ищу хороший гайд или хорошего человека, который объяснит принципы построения и работы с сеткой.
 

muRLoc

Пользователь
25 Ноя 2018
43
12
ну тип сетка как в element td, сама система как строит сетку и как объекты создает\перемещает по ней
это GridNav и кастомный партикл сетки. Найди либу Builder Helper от Noya. У него там есть принцип работы.
Карта по стандарту разделена на кусочки со своими координатами X и Y , через GridNav работают с этими кусочками, от них и пляшут.
 

LAPKI

Активный
26 Окт 2018
124
28
это GridNav и кастомный партикл сетки. Найди либу Builder Helper от Noya. У него там есть принцип работы.
Карта по стандарту разделена на кусочки со своими координатами X и Y , через GridNav работают с этими кусочками, от них и пляшут.
да, я открывал исходники, но разбирать файл в 1.5к+ строк чет не осмелился) ну посмотрю как работает GridNav, спасибо за наводку
 

muRLoc

Пользователь
25 Ноя 2018
43
12
да, я открывал исходники, но разбирать файл в 1.5к+ строк чет не осмелился) ну посмотрю как работает GridNav, спасибо за наводку
Я как-то писал растановку юнитов ровно по сетке, один юнит в одном кусочке GridNav , написано так себе - но работает, может поможет:
Код:
if ZoneGrid == nil then
  ZoneGrid = class({})
end

function ZoneGrid:GetPosForUnit(vLocation)
  local tGridPos = ZoneGrid:GetGridPos(vLocation)
  local validPos
  if tGridPos.x%3 ~= 0 then
    tGridPos.x = ZoneGrid:GetValidX(tGridPos.x)
  end
  if tGridPos.y%3 ~= 0 then
    tGridPos.y = ZoneGrid:GetValidY(tGridPos.y)
  end
  validPos = ZoneGrid:GetPosFromGrid(tGridPos.x, tGridPos.y)
  return validPos
end

function ZoneGrid:GetGridPos(vLocation)
  if not vLocation then
    return nil
  end
  local x = GridNav:WorldToGridPosX(vLocation.x)
  local y = GridNav:WorldToGridPosY(vLocation.y)
  local gridPos = {}
  gridPos.x = x
  gridPos.y = y
  return gridPos
end

function ZoneGrid:GetValidX(fPointX)
  if fPointX%3 == 1 then
    fPointX = fPointX - 1
    return fPointX
  elseif fPointX%3 == 2 then
    fPointX = fPointX + 1
    return fPointX
  end
end

function ZoneGrid:GetValidY(fPointY)
  if fPointY%3 == 1 then
    fPointY = fPointY - 1
    return fPointY
  elseif fPointY%3 == 2 then
    fPointY = fPointY + 1
    return fPointY
  end
end

function ZoneGrid:GetPosFromGrid(fPointX, fPointY)
  if not fPointX or not fPointY then
    return nil
  end

  local xPoint = GridNav:GridPosToWorldCenterX(fPointX)
  local yPoint = GridNav:GridPosToWorldCenterY(fPointY)
  local vector = Vector(xPoint, yPoint, 128)
  return vector
end

function ZoneGrid:IsGridBlocked(vLocation)
  DebugPrint(vLocation)
  local tCheck = FindUnitsInRadius(DOTA_TEAM_NOTEAM,
                                    vLocation,
                                    nil,
                                    96,
                                    DOTA_UNIT_TARGET_TEAM_BOTH,
                                    DOTA_UNIT_TARGET_ALL,
                                    DOTA_UNIT_TARGET_FLAG_NONE,
                                    FIND_ANY_ORDER,
                                    false)
  if #tCheck > 0 then
    return true
  else
    return false
  end
end
 

DDSuper

Продвинутый
31 Май 2019
164
15
Что нужно сделать так чтобы урон наносился чистым
ну это так

Код:
local damage_table = {}
        damage_table.victim = keys.target
        damage_table.attacker = keys.caster
        damage_table.ability = keys.ability
        damage_table.damage = keys.caster:GetAttackDamage()
        damage_table.damage_type = DAMAGE_TYPE_MAGICAL

    ApplyDamage( damage_table )
Но оно показывает этот урон. Но это не то что я хочу
Что нужно сделать так чтобы урон героя стал чистым или другим типом?
А то наносит, 46 урона физического и 46 магического
А нужно так чтобы наносило только 46 магического
 
Последнее редактирование:

muRLoc

Пользователь
25 Ноя 2018
43
12
Что нужно сделать так чтобы урон наносился чистым
ну это так

Код:
local damage_table = {}
        damage_table.victim = keys.target
        damage_table.attacker = keys.caster
        damage_table.ability = keys.ability
        damage_table.damage = keys.caster:GetAttackDamage()
        damage_table.damage_type = DAMAGE_TYPE_MAGICAL

    ApplyDamage( damage_table )
Но оно показывает этот урон. Но это не то что я хочу
Что нужно сделать так чтобы урон героя стал чистым или другим типом?
А то наносит, 46 урона физического и 46 магического
А нужно так чтобы наносило только 46 магического
Есть несколько вариантов, через модификатор или через DamageFilter. Скорей всего есть еще способы, нужно просто подумать.
 

DDSuper

Продвинутый
31 Май 2019
164
15
Есть несколько вариантов, через модификатор или через DamageFilter. Скорей всего есть еще способы, нужно просто подумать.
Если, у вас есть примеры буду, благодарен.
Но у меня только не Луа абилка а DD абилка
 
Последнее редактирование:

DDSuper

Продвинутый
31 Май 2019
164
15
Как узнать, где находятся звуки доты. Через GCFScape. Но а как узнать название этого звука
Они же используются так Hero_ability1
Может я тупой
 
Реклама: