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

Направление эффекта

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

Оффлайн EnDronist

  • 222
  • Мощь: 1
  • Перфекционист-максималист
Направление эффекта
« : 04-05-2016, 10:21:33 »
Как направить эффект, накладывающийся на юнита в сторону от или к игроку, модификатор скилла/айтема которого и создаёт этот эффект?
Ням
Мой аддон: steamcommunity.com/...ils/?id=671144274
[свернуть]

Оффлайн Илья

  • Супермодератор
  • 1909
  • Мощь: 16
Re: Направление эффекта
« Ответ #1 : 04-05-2016, 15:06:28 »
ProjectileManager

Например CreateTrackingProjectile или CreateLinearProjectile

Оффлайн EnDronist

  • 222
  • Мощь: 1
  • Перфекционист-максималист
Re: Направление эффекта
« Ответ #2 : 05-05-2016, 06:53:39 »
Илья, Можно попродробнее? Я ничего не нашёл по этому делу
Ням
Мой аддон: steamcommunity.com/...ils/?id=671144274
[свернуть]

Оффлайн Илья

  • Супермодератор
  • 1909
  • Мощь: 16
Re: Направление эффекта
« Ответ #3 : 05-05-2016, 08:59:35 »
Вот тебе кусочек из моей старой абилки, когда просто летит снаряд:

Код
function shotgun_shoot:OnSpellStart()
--print("shotgun_shoot OnSpellStart")
local caster = self:GetCaster()
local point = self:GetCaster():GetAbsOrigin() + (self:GetCaster():GetForwardVector() * 200)

vDirection = point - caster:GetAbsOrigin()
vDirection = Vector(vDirection.x, vDirection.y, 0) --LIMIT MOTION TO ONLY ONE PLANE
vDirection = vDirection:Normalized()

local id1 = ParticleManager:CreateParticle("particles/econ/events/league_teleport_2014/teleport_end_dust_league.vpcf", PATTACH_ABSORIGIN, caster)

Timers:CreateTimer(3,function()
ParticleManager:DestroyParticle(id1, false)
return nil
end)

local info = {
EffectName = "particles/units/heroes/hero_lina/lina_spell_dragon_slave.vpcf",
Ability = self,
Source = caster,
vSpawnOrigin = caster:GetAbsOrigin(),
vVelocity = vDirection * 3000 * 0.7, -- EFFECT TRAVELS TOO FUCKING FAST
fStartRadius = 70,
fEndRadius = 100,
fDistance = 300,
Source = caster,
iUnitTargetTeams = DOTA_UNIT_TARGET_TEAM_ENEMY,
iUnitTargetTypes = DOTA_UNIT_TARGET_BASIC + DOTA_UNIT_TARGET_HERO,
iUnitTargetFlags = DOTA_UNIT_TARGET_FLAG_NONE,
iVisionTeamNumber = caster:GetTeamNumber(),
iVisionRadius = 65
}
first = 0
ProjectileManager:CreateLinearProjectile( info )
StartSoundEvent("Hero_Sniper.MKG_attack", self:GetCaster())
self:GetCaster():Stop()

end


Оффлайн Илья

  • Супермодератор
  • 1909
  • Мощь: 16
Re: Направление эффекта
« Ответ #4 : 05-05-2016, 09:02:58 »
А вот я недавно делал свою ice arrow (таргетовский снаряд):

Код
LinkLuaModifier("modifier_movespeed_slow", "modifiers/modifier_movespeed_slow.lua", LUA_MODIFIER_MOTION_NONE )

ice_arrow = class({})


function ice_arrow:OnSpellStart()

local caster = self:GetCaster()

        local info = {
            EffectName = "particles/units/heroes/hero_drow/drow_frost_arrow.vpcf",
            Ability = self,
            Target = self:GetCursorTarget(),
            Source = caster,
            bDodgeable = true,
            bProvidesVision = false,
            vSpawnOrigin = caster:GetAbsOrigin(),
            iMoveSpeed = 1200,
            iVisionRadius = 0,
            iVisionTeamNumber = caster:GetTeamNumber(),
            iSourceAttachment = DOTA_PROJECTILE_ATTACHMENT_ATTACK_1
        }
        ProjectileManager:CreateTrackingProjectile(info)

end


function ice_arrow:Animation(self,target)

local id1 = ParticleManager:CreateParticle("particles/units/heroes/hero_ancient_apparition/ice_temp.vpcf", PATTACH_ABSORIGIN_FOLLOW, target)

GameRules:GetGameModeEntity():SetContextThink(string.format("CreatureThink_%d", RandomInt(1, 99999)),
function()
ParticleManager:DestroyParticle(id1, false)
return nil
end,
0.2)

end


function ice_arrow:OnProjectileHit( target, location )
ice_arrow:Animation(self,target)
ice_arrow:Damage(self,target)
end


function ice_arrow:Damage(self,target)

local caster = self:GetCaster()
local dmg = caster:GetAgility()/2
EmitSoundOn("MU.ice", caster)


local damage = {
victim = target,
attacker = caster,
damage = dmg,
damage_type = DAMAGE_TYPE_MAGICAL,
ability = this,
}
ApplyDamage( damage )
target:AddNewModifier( caster, self, "modifier_movespeed_slow", {duration = 3} )

end



Оффлайн EnDronist

  • 222
  • Мощь: 1
  • Перфекционист-максималист
Re: Направление эффекта
« Ответ #5 : 05-05-2016, 09:13:50 »
Илья, Направление такого эффекта, не летящего

(P.S. + Рядом же не работает свап скиллов, можешь найти проблему? Мучаюсь уже 3 часа)
Код
"phantom_assassin_stifling_dagger_ult" // Есть
"phantom_assassin_stifling_dagger" // Есть
Код
	"OnToggleOn"
{
"ApplyModifier"
{
"ModifierName" "modifier_coup_de_grace_1"
"Target" "CASTER"
}
"RunScript"
{
"ScriptFile" "heroes/modifier_coup_de_grace_1.lua"
"Function" "modifier_coup_de_grace_toogle"
}
"RunScript"
{
"ScriptFile" "heroes/modifier_coup_de_grace_1.lua"
"Function" "swap"
}
}


"OnToggleOff"
{
"RemoveModifier"
{
"ModifierName" "modifier_coup_de_grace_1"
"Target" "CASTER"
}
"RemoveModifier"
{
"ModifierName" "modifier_coup_de_grace_crit_1"
"Target" "CASTER"
}
"RunScript"
{
"ScriptFile" "heroes/modifier_coup_de_grace_1.lua"
"Function" "ult_swap"
}
}
Код
function swap(keys)
local caster = keys.caster
local ability = keys.ability
caster:SwapAbilities( keys.phantom_assassin_stifling_dagger, keys.phantom_assassin_stifling_dagger_ult, false, true )
end

function ult_swap(keys)
local caster = keys.caster
local ability = keys.ability
caster:SwapAbilities( keys.phantom_assassin_stifling_dagger_ult, keys.phantom_assassin_stifling_dagger, false, true )
end
« Последнее редактирование: 05-05-2016, 09:19:12 от EnDronist »
Ням
Мой аддон: steamcommunity.com/...ils/?id=671144274
[свернуть]

Оффлайн Илья

  • Супермодератор
  • 1909
  • Мощь: 16
Re: Направление эффекта
« Ответ #6 : 05-05-2016, 19:25:16 »
Я не понял, чего ты хочешь.


Насчет свапа: ты уверен, что в keys есть параметры с именами phantom_assassin_stifling_dagger и phantom_assassin_stifling_dagger_ult?

Оффлайн EnDronist

  • 222
  • Мощь: 1
  • Перфекционист-максималист
Re: Направление эффекта
« Ответ #7 : 05-05-2016, 23:46:43 »
Илья, С ивентами тоже не работало
Ням
Мой аддон: steamcommunity.com/...ils/?id=671144274
[свернуть]

Оффлайн Илья

  • Супермодератор
  • 1909
  • Мощь: 16
Re: Направление эффекта
« Ответ #8 : 05-05-2016, 23:55:01 »
Какими "ивентами", ты о чем?

Оффлайн EnDronist

  • 222
  • Мощь: 1
  • Перфекционист-максималист
Re: Направление эффекта
« Ответ #9 : 06-05-2016, 01:07:59 »
Илья,
function *** (event)
Свап(event.название скилла, event.название скилла, трушки и фолсы).
Может быть, перед названиями скиллов надо приписать ability. ?
Насчёт эффекта: есть для него в файле только место его появления с характеристикой его дальнейшего поведения (следует за целью или остаётся  на месте) ("TARGET" "follow_origin" и подобные) и нет направления
« Последнее редактирование: 06-05-2016, 01:40:51 от EnDronist »
Ням
Мой аддон: steamcommunity.com/...ils/?id=671144274
[свернуть]

Оффлайн Илья

  • Супермодератор
  • 1909
  • Мощь: 16
Re: Направление эффекта
« Ответ #10 : 06-05-2016, 10:47:44 »
Я не пойму, что ты хочешь сделать... Что за абилку?

В kesy (она же event и она же data и вообще как хочешь ее назвать можешь), которые принадлежат событиям лежат эти данные.

data принадлежащую абилкам ты формируешь сам.
Чтобы ты мог вызвать phantom_assassin_stifling_dagger из keys, ты должен ее туда положить, например:

Код
		"RunScript"
{
"ScriptFile" "heroes/modifier_coup_de_grace_1.lua"
"Function" "swap"
"blabla" "phantom_assassin_stifling_dagger"
}

И тогда можешь делать так: keys.blabla (это будет стрка со значением "phantom_assassin_stifling_dagger"). Только, нафига это тебе если ты знаешь, что это будет именно она и можно просто в коде писать ту строку, без использования переменных.


Код
caster:SwapAbilities( "phantom_assassin_stifling_dagger", "phantom_assassin_stifling_dagger_ult", false, true )


data - это таблица. Здесь нет какой-либо магии. Это программирование, а оно в свою очередь является смесью математики (какой конкретно - зависит от области) , информатики школьного курса и логики.
« Последнее редактирование: 06-05-2016, 10:49:52 от Илья »

Оффлайн EnDronist

  • 222
  • Мощь: 1
  • Перфекционист-максималист
Re: Направление эффекта
« Ответ #11 : 06-05-2016, 22:50:42 »
Илья, Т.е. сам скрипт не может найти ни в кейс, ни в ивентс, а если указать ему, что пусть "этапеременная" "скилл", то сам датадрайвен найти сможет этот скилл и дать знать скрипту, что нужно брать?
Ням
Мой аддон: steamcommunity.com/...ils/?id=671144274
[свернуть]

Оффлайн Илья

  • Супермодератор
  • 1909
  • Мощь: 16
Re: Направление эффекта
« Ответ #12 : 06-05-2016, 23:08:41 »
фцнкции SwapAbilities нужно четыре аргумента:
string pAbilityName1 - строка, что есть имя абилки 1
string pAbilityName2 - строка, что есть имя абилки 2
bool bEnable1, bEnable2 -булевские переменная, т.е. true или false. За что они отвечают без понятия. На гитхабе в основном первую делают true, вторую false.


А теперь, давай сначала: что у тебя за идея? Что твоя абилка должна уметь делать? Как ты ее видишь (не код, а именно результат).




Оффлайн EnDronist

  • 222
  • Мощь: 1
  • Перфекционист-максималист
Re: Направление эффекта
« Ответ #13 : 07-05-2016, 02:37:38 »
Илья, Всё, что нужно, у меня уже работает. Мне не нравится только то, что эффект (в данном случае кровь от крита Мортры), накладываемый на юнита, направлен не в ту сторону. Эффект идёт со стороны зада юнита, а нужно со стороны атакующего (кастера). Скрин в "Ответе №5"
« Последнее редактирование: 07-05-2016, 02:39:20 от EnDronist »
Ням
Мой аддон: steamcommunity.com/...ils/?id=671144274
[свернуть]

Оффлайн EnDronist

  • 222
  • Мощь: 1
  • Перфекционист-максималист
Re: Направление эффекта
« Ответ #14 : 07-05-2016, 03:40:11 »
           
Код
    "OnToggleOn"
   {
         "RunScript"
      {
         "ScriptFile"   "heroes/modifier_coup_de_grace_1.lua"
         "Function"   "swap"
         "skill_normal"   "phantom_assassin_stifling_dagger"
         "skill_ult"   "phantom_assassin_stifling_dagger_ult"
      }
   }
    "OnToggleOff"
   {
      "RunScript"
      {
         "ScriptFile"   "heroes/modifier_coup_de_grace_1.lua"
         "Function"   "ult_swap"
         "skill_normal"   "phantom_assassin_stifling_dagger"
         "skill_ult"   "phantom_assassin_stifling_dagger_ult"
      }
   }
Код
function swap(keys)
local caster = keys.caster
caster:SwapAbilities( keys.skill_normal, keys.skill_ult, true, false )
end

function ult_swap(keys)
local caster = keys.caster
caster:SwapAbilities( keys.skill_ult, keys.skill_normal, true, false )
end
Немного не робит этот свап, почему же?
« Последнее редактирование: 07-05-2016, 03:47:11 от EnDronist »
Ням
Мой аддон: steamcommunity.com/...ils/?id=671144274
[свернуть]