Доброго времени суток!
Подскажите пожалуйста, можно ли каким то образом сменить тип звуков атаки у героя в процессе игры, не меняя тип юнита? Просто поменять набор звуков для атаки ближнего боя.

Вот карта, там найдёшь триггер HeroPhantomAssasin , ну и собственно герой Фантомка, при её атаке звуки ударов фартомки из доты
Функция баганная и недоделанная, была выключена, включил для тебя, что-то там работает и ладно, думаю с ней тебе будет попроще разобраться
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
8
Да, можно, через JASS например, вытащи с помощью MPQ Editor звуки и импортируй их с правильными именами для своего кода в варкрафте, после чего создавай/заменяй звук во время эвента получения урона на нужный в позиции атакующего/атакуемого юнита
Я такое тоже делал, недоделал вот НЕдоделанная наработка
library SoundAttackLib
function soundAttackStringVariationCount_Func takes integer sAttack returns string
local integer variationCount = 1
local integer variationNumber = 0
if sAttack >= 0 and sAttack <= 11
variationCount = 3
variationNumber = GetRandomInt(1, variationCount)
endif
return I2S(variationNumber)
endfunction

function soundAttackString_Func takes integer sAttack returns string
local string soundAttackString = ""
if sAttack == 0
soundAttackString = "MetalHeavyBash"
elseif sAttack == 1
soundAttackString = "MetalHeavyChop"
elseif sAttack == 2
soundAttackString = "MetalHeavySlice"
elseif sAttack == 3
soundAttackString = "MetalLightChop"
elseif sAttack == 4
soundAttackString = "MetalLightSlice"
elseif sAttack == 5
soundAttackString = "MetalMediumBash"
elseif sAttack == 6
soundAttackString = "MetalMediumChop"
elseif sAttack == 7
soundAttackString = "MetalMediumSlice"
elseif sAttack == 8
soundAttackString = "RockHeavyBash"
elseif sAttack == 9
soundAttackString = "WoodHeavyBash"
elseif sAttack == 10
soundAttackString = "WoodLightBash"
elseif sAttack == 11
soundAttackString = "WoodMediumBash"
endif
return soundAttackString
endfunction

function soundDefenceString_Func takes integer sDefence returns string
local string soundDefenceString = ""
if sDefence == 0
soundDefenceString = "Flesh"
elseif sDefence == 1
soundDefenceString = "Metal"
elseif sDefence == 2
soundDefenceString = "Stone"
elseif sDefence == 3
soundDefenceString = "Wood"
endif
return soundDefenceString
endfunction

function SoundAttack takes integer sAttack, integer sDefence, boolean greatSound, boolean melee returns string
if melee == true
local integer variationCount = 0
local integer variationNumber = 0
if greatSound == true
return "Sound_"+soundAttackString_Func(sAttack)+soundDefenceString_Func(sDefence)+soundAttackStringVariationCount_Func(sAttack)+".wav"
else
if sDefence == 0
soundDefenceString = "Ethereal"
endif
endif


else

endif
return ""
endfunction

endlibrary
Ответы (5)
2
Да, можно, через JASS например, вытащи с помощью MPQ Editor звуки и импортируй их с правильными именами для своего кода в варкрафте, после чего создавай/заменяй звук во время эвента получения урона на нужный в позиции атакующего/атакуемого юнита
Я такое тоже делал, недоделал вот НЕдоделанная наработка
library SoundAttackLib
function soundAttackStringVariationCount_Func takes integer sAttack returns string
local integer variationCount = 1
local integer variationNumber = 0
if sAttack >= 0 and sAttack <= 11
variationCount = 3
variationNumber = GetRandomInt(1, variationCount)
endif
return I2S(variationNumber)
endfunction

function soundAttackString_Func takes integer sAttack returns string
local string soundAttackString = ""
if sAttack == 0
soundAttackString = "MetalHeavyBash"
elseif sAttack == 1
soundAttackString = "MetalHeavyChop"
elseif sAttack == 2
soundAttackString = "MetalHeavySlice"
elseif sAttack == 3
soundAttackString = "MetalLightChop"
elseif sAttack == 4
soundAttackString = "MetalLightSlice"
elseif sAttack == 5
soundAttackString = "MetalMediumBash"
elseif sAttack == 6
soundAttackString = "MetalMediumChop"
elseif sAttack == 7
soundAttackString = "MetalMediumSlice"
elseif sAttack == 8
soundAttackString = "RockHeavyBash"
elseif sAttack == 9
soundAttackString = "WoodHeavyBash"
elseif sAttack == 10
soundAttackString = "WoodLightBash"
elseif sAttack == 11
soundAttackString = "WoodMediumBash"
endif
return soundAttackString
endfunction

function soundDefenceString_Func takes integer sDefence returns string
local string soundDefenceString = ""
if sDefence == 0
soundDefenceString = "Flesh"
elseif sDefence == 1
soundDefenceString = "Metal"
elseif sDefence == 2
soundDefenceString = "Stone"
elseif sDefence == 3
soundDefenceString = "Wood"
endif
return soundDefenceString
endfunction

function SoundAttack takes integer sAttack, integer sDefence, boolean greatSound, boolean melee returns string
if melee == true
local integer variationCount = 0
local integer variationNumber = 0
if greatSound == true
return "Sound_"+soundAttackString_Func(sAttack)+soundDefenceString_Func(sDefence)+soundAttackStringVariationCount_Func(sAttack)+".wav"
else
if sDefence == 0
soundDefenceString = "Ethereal"
endif
endif


else

endif
return ""
endfunction

endlibrary
За интересную идею и за помощь, спасибо. Но мне нужно именно переключать набор из стандартных звуков атаки юнита (что уже есть в варкрафте, в редакторе объектов когда выбираем звуки атаки). Единственное, что мне бы хотелось делать это в процессе игры. Чтобы атака юнита меняла свой набор звуков при нужных мне условиях.
16
Tredor46, пожалуйста, скрывайте под кат большие простыни текста\кода!
8
Elder_Shadow, я и имел ввиду, вытащи как раз СТАНДАРТНЫЕ звуки и импортируй их, чтобы к ним можно было обращаться, ни среди обычных триггеров, ни в мемхаке я не нашёл смены звука атаки юниту (я вроде хорошо искал, не знаю), может быть они есть в UjAPI, но это уже Мод, и это решение может не подойти
Предложу ещё 1 вариант - (Костыль)
Морф юнита через мемхаковскую функцию MorphUnitToTypeId, в юнита, созданого заранее, у которого установлен нужный звук
8
Ydav, сейчас исправлю, я только что этому научился, возможно умел раньше но забыл
8
Ydav, А нет, не могу исправить, там время исправления вышло
8
Вот карта, там найдёшь триггер HeroPhantomAssasin , ну и собственно герой Фантомка, при её атаке звуки ударов фартомки из доты
Функция баганная и недоделанная, была выключена, включил для тебя, что-то там работает и ладно, думаю с ней тебе будет попроще разобраться
Загруженные файлы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.