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

Абилка, меняющая модель героя

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

Оффлайн NanoDragon

  • 4
  • Мощь: 0
  • Скилл по скрптингу = -10
Привет, как сделать чтобы юзал скилл и тебя превращало в кого-то, будь это машина, волк... Неважно.


Оффлайн -ExotiC-

  • Администратор
  • 347
  • Мощь: 3
  • Забанен

Оффлайн MahouShoujo

  • Продвинутый
  • 199
  • Мощь: 3
Re: Абилка, меняющая модель героя
« Ответ #3 : 01-07-2017, 15:49:27 »
^ кривая хрень и делать так не стоит.

Оффлайн Adam Smith

  • Друзья CG
  • 476
  • Мощь: 6
  • жрять жри его
Re: Абилка, меняющая модель героя
« Ответ #4 : 01-07-2017, 16:03:33 »
Код
beast_shapeshift = class({})
LinkLuaModifier( "modifier_beast_shapeshift", "abilities/beast_shapeshift.lua", LUA_MODIFIER_MOTION_NONE )
LinkLuaModifier( "modifier_beast_shapeshift_passive", "abilities/beast_shapeshift.lua", LUA_MODIFIER_MOTION_NONE )

function beast_shapeshift:GetIntrinsicModifierName ()
    return "modifier_beast_shapeshift_passive"
end

function beast_shapeshift:OnSpellStart()
local duration = self:GetSpecialValueFor( "duration" )

  self:GetCaster():AddNewModifier( self:GetCaster(), self, "modifier_stunned", {duration = self:GetSpecialValueFor("transformation_time")}  )
  Timers:CreateTimer(self:GetSpecialValueFor("transformation_time"), function()
    self:GetCaster():AddNewModifier( self:GetCaster(), self, "modifier_beast_shapeshift", { duration = duration }  )
  end)

local nFXIndex = ParticleManager:CreateParticle( "particles/units/heroes/hero_sven/sven_spell_gods_strength.vpcf", PATTACH_ABSORIGIN_FOLLOW, self:GetCaster() )
ParticleManager:SetParticleControlEnt( nFXIndex, 1, self:GetCaster(), PATTACH_ABSORIGIN_FOLLOW, nil, self:GetCaster():GetOrigin(), true )
ParticleManager:ReleaseParticleIndex( nFXIndex )

EmitSoundOn( "Hero_Lycan.Shapeshift.Cast", self:GetCaster() )

self:GetCaster():StartGesture( ACT_DOTA_OVERRIDE_ABILITY_4 );
end

if modifier_beast_shapeshift == nil then modifier_beast_shapeshift = class({}) end

function modifier_beast_shapeshift:IsBuff()
    return true
end

function modifier_beast_shapeshift:IsPurgable()
    return false
end

function modifier_beast_shapeshift:DeclareFunctions ()
    local funcs = {
        MODIFIER_PROPERTY_MODEL_CHANGE,
        MODIFIER_PROPERTY_MODEL_SCALE,
        MODIFIER_PROPERTY_MOVESPEED_ABSOLUTE,
        MODIFIER_PROPERTY_MOVESPEED_LIMIT,
        MODIFIER_PROPERTY_MOVESPEED_MAX
    }

    return funcs
end

function modifier_beast_shapeshift:GetModifierModelChange(params)
  return "models/creeps/nian/nian_creep.vmdl"
end

function modifier_beast_shapeshift:GetModifierModelScale(params)
  return -0.4
end

function modifier_beast_shapeshift:GetModifierMoveSpeed_Absolute(params)
  return self:GetAbility():GetSpecialValueFor("speed")
end

function modifier_beast_shapeshift:GetModifierMoveSpeed_Limit(params)
  return self:GetAbility():GetSpecialValueFor("speed")
end

function modifier_beast_shapeshift:GetModifierMoveSpeed_Max(params)
  return self:GetAbility():GetSpecialValueFor("speed")
end

if modifier_beast_shapeshift_passive == nil then modifier_beast_shapeshift_passive = class({}) end

function modifier_beast_shapeshift_passive:IsBuff()
    return true
end

function modifier_beast_shapeshift_passive:IsPurgable()
    return false
end

function modifier_beast_shapeshift_passive:IsHidden()
    return true
end

function modifier_beast_shapeshift_passive:DeclareFunctions ()
    local funcs = {
        MODIFIER_PROPERTY_INCOMING_DAMAGE_PERCENTAGE,
    }

    return funcs
end

function modifier_beast_shapeshift_passive:GetModifierIncomingDamage_Percentage(params)
  return self:GetAbility():GetSpecialValueFor("damage_reduction")
end

function beast_shapeshift:GetAbilityTextureName() return self.BaseClass.GetAbilityTextureName(self)  end


By PG.Freeman

Оффлайн MahouShoujo

  • Продвинутый
  • 199
  • Мощь: 3
Re: Абилка, меняющая модель героя
« Ответ #5 : 01-07-2017, 21:05:41 »
> function beast_shapeshift:GetAbilityTextureName() return self.BaseClass.GetAbilityTextureName(self)  end
Уже не нужно.
Я считаю модифаеры нужно всегда в отдельные файлы выносить т.к. каждый модифаер заново запускает свой указанный файл и дополнительно инитит, но это мелочи.