CustomGames.ru - Dota 2 пользовательские игры

Заряды для второстепенного предмета

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
как реализовать: - Тратится 1 заряд предмета если был использован другой предмет (На примере лука и колчан для стрел, хочу сделать лук который бы использовал колчан)
есть ли функция которая отвечала бы за использование предмета *?

Оффлайн ZLOY

  • Супермодератор
  • 456
  • Мощь: 6
OnAbilityExecuted

Оффлайн Илья

  • Супермодератор
  • 2142
  • Мощь: 21
Я просто во время каста проверял инвентарь.
Старый код и без красоты, но работал нормально.

Хмм, возможно я потом его переделал на "метание копья", оставив название абилки, и закомментил проверку стрел. Но думаю суть уловишь.
« Последнее редактирование: 30-07-2017, 12:32:31 от Илья »

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Спасибо

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Выглядит проще написать на item_lua чем на dd, вот только я на item_lua ещё ни разу не писал, это по сути аналог ability_lua ?

Оффлайн Илья

  • Супермодератор
  • 2142
  • Мощь: 21
Выглядит проще написать на item_lua чем на dd, вот только я на item_lua ещё ни разу не писал, это по сути аналог ability_lua ?

Да, это по сути одно и то же. Любая вещь - абилка.

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Может кто-нибудь объяснить мне почему частица "particles/units/heroes/hero_mirana/mirana_spell_arrow.vpcf" летит "криво" как то с левой части героя. В цель попадает в одном случае если частица попала именно по модельке в хит бокс, даже на пиксели не реагирует, что делать перепробовал многое
lua
Спойлер
Код
function test(args)  
          local caster = args.caster
          local target = args.target
          local ability = args.ability

          local projectile = {
          EffectName = "particles/units/heroes/hero_mirana/mirana_spell_arrow.vpcf", 
          vSpawnOrigin = {unit=caster, attach="attach_attack1", offset=Vector(0,0,0)},
          fDistance = args.FixedDistance,
          fStartRadius = args.StartRadius,
          fEndRadius = args.EndRadius,
          Source = caster,
          vVelocity = caster:GetForwardVector() * args.MoveSpeed,
          UnitBehavior = PROJECTILES_DESTROY,
          bMultipleHits = false,
          bIgnoreSource = true,
          WallBehavior = PROJECTILES_NOTHING,
          GroundBehavior = PROJECTILES_NOTHING,
          fGroundOffset = 80,
          nChangeMax = 1,
          bRecreateOnChange = true,
          bZCheck = false,
          bGroundLock = true,
          bProvidesVision = true,
          iVisionRadius = args.VisionRadius,
          UnitTest = function(self, unit) return unit:GetUnitName() ~= "npc_dummy_unit" and unit:GetTeamNumber() ~= caster:GetTeamNumber() or unit:GetUnitName() == "npc_bear" end,
          OnUnitHit = function(self, unit)
                local totalDamage = args.Damage
                local target = unit
                local damageTable = {
                                victim = target,
                                attacker = caster,
                                damage = totalDamage,
                                damage_type = DAMAGE_TYPE_PHYSICAL,
                        }
                ApplyDamage(damageTable)
                if unit:GetUnitName() == "npc_dota_hero_omniknight" then
                        ParticleManager:CreateParticle("particles/units/heroes/hero_bloodseeker/bloodseeker_bloodritual_impact.vpcf", PATTACH_ABSORIGIN_FOLLOW, unit)
                end
          end
        }
    Projectiles:CreateProjectile(projectile)
end
[свернуть]
в dd
Спойлер
Код
		"ID"							"3002"
"BaseClass" "item_datadriven"
"AbilityTextureName"         "testrgerh"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_ALL"
"Model" "models/props_gameplay/red_box.vmdl"

"ItemSellable"   "0"
"ItemPermanent" "0"
"AbilityCooldown"          "3"
"AbilityDamage" "62"

"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"start_radius" "30"
}
"02"
{
"var_type" "FIELD_INTEGER"
"end_radius" "40"
}
"03"
{
"var_type" "FIELD_INTEGER"
"range" "2500"
}
"04"
{
"var_type" "FIELD_INTEGER"
"speed" "2000"
}
"05"
{
"var_type" "FIELD_INTEGER"
"vision_radius" "400"
}
}


                "OnSpellStart"
{
"RunScript"
{
"ScriptFile" "testeee.lua"
"Function" "test"
"Target" "TARGET"
"MoveSpeed" "%speed"
"FixedDistance" "%range"
"StartRadius" "%start_radius"
"EndRadius" "%end_radius"
"Damage" "%AbilityDamage"
"VisionRadius" "%vision_radius"
}
}
[свернуть]

Оффлайн MahouShoujo

  • Продвинутый
  • 204
  • Мощь: 4
Ты используешь не дефолтный прожектил а приблуду от БМД, тут сложно помочь.

Оффлайн den4iccc

  • Продвинутый
  • 400
  • Мощь: 7
Блин, не особо хочется дефолтный использовать ProjectileManager.CreateLinearProjectile

Оффлайн I_GRIN_I

  • Продвинутый
  • 636
  • Мощь: 11
  • Научиться бы скриптить...
den4iccc, а просто при надевании лука менять ближнюю атаку на дальнюю не?

Оффлайн I_GRIN_I

  • Продвинутый
  • 636
  • Мощь: 11
  • Научиться бы скриптить...
den4iccc, и да, летит криво, потому что она вылетает из attach="attach_attack1", если хочешь прямо из модельки нужно attach_hitloc