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

Статус
В этой теме нельзя размещать новые ответы.

DDSuper

Друзья CG
31 Май 2019
405
57
Нужна помощь с Юнитом не юзает скиллы

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
232
34
Проект
Boss Survival Adventure
тебе не кажется что тут чего-то не хватает?)
 
20 Дек 2016
892
170
Как узнать кейбинд игрока для какой-либо дефолтной команды? Мне надо узнать, на какую клавишу у игрока стоит "Выбрать курьера"
 

DDSuper

Друзья CG
31 Май 2019
405
57
Так у меня юнит нейтрал и ему надо использовать но он не хочет
 

muRLoc

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

LAPKI

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

muRLoc

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

LAPKI

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

muRLoc

Активный
25 Ноя 2018
83
23
да, я открывал исходники, но разбирать файл в 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

Друзья CG
31 Май 2019
405
57
Что нужно сделать так чтобы урон наносился чистым
ну это так

Код:
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
83
23
Что нужно сделать так чтобы урон наносился чистым
ну это так

Код:
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

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

DDSuper

Друзья CG
31 Май 2019
405
57
Как узнать, где находятся звуки доты. Через GCFScape. Но а как узнать название этого звука
Они же используются так Hero_ability1
Может я тупой
 
Статус
В этой теме нельзя размещать новые ответы.
Реклама: