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

den4iccc

Друзья CG
20 Сен 2014
440
1
Проект
Survival in Taiga XE
как реализовать: - Тратится 1 заряд предмета если был использован другой предмет (На примере лука и колчан для стрел, хочу сделать лук который бы использовал колчан)
есть ли функция которая отвечала бы за использование предмета *?
 
Я просто во время каста проверял инвентарь.
Старый код и без красоты, но работал нормально.

Хмм, возможно я потом его переделал на "метание копья", оставив название абилки, и закомментил проверку стрел. Но думаю суть уловишь.
 
Последнее редактирование модератором:
Выглядит проще написать на item_lua чем на dd, вот только я на item_lua ещё ни разу не писал, это по сути аналог ability_lua ?
 
Выглядит проще написать на item_lua чем на dd, вот только я на item_lua ещё ни разу не писал, это по сути аналог ability_lua ?

Да, это по сути одно и то же. Любая вещь - абилка.
 
Последнее редактирование модератором:
Может кто-нибудь объяснить мне почему частица "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"
			}	
		}
 
Последнее редактирование модератором:
Ты используешь не дефолтный прожектил а приблуду от БМД, тут сложно помочь.
 
Блин, не особо хочется дефолтный использовать ProjectileManager.CreateLinearProjectile
 
den4iccc, а просто при надевании лука менять ближнюю атаку на дальнюю не?
 
den4iccc, и да, летит криво, потому что она вылетает из attach="attach_attack1", если хочешь прямо из модельки нужно attach_hitloc
 
Последнее редактирование модератором:
Реклама: