Перейти к содержанию

Рекомендуемые сообщения

Опубликовано
Всем доброго времени суток.
Я обратился сюда так как я уже совсем отчаялся и незнаю больше куда обратиться, надеюсь вы мне поможете.
Я провел два дня пытаясь добавить аналог меча Бладскал в игру через СК, что то я понял а что то не очень, были какие-то недопопытки но результат почти нулевой. Дело в том что этот меч заскриптован до чертиков, и как он работает понятно только тем кто его создал и не только, но не суть...Я нашел в интернете мод, который добавляет в игру двуручный меч с такими же эффектами что и у Бладскала но только другого цвета и с чучуть другой механикой и при том при всём этот меч создаваемый! Его можно создать с такими поприкушками, я по копался немного и понял, как я бы не пытался создать такой же аналог, я не смогу создать его и за скриптов так как не знаю как их создать. Мораль всей басни в чём...я хочу добавить в игру оружие с эффектом Бладскала, это в полне реализуемо, и даже не трудно, но вот знать бы как(((...я умею добавлять предметы которые можно скрафтить в кузне, менять цвет, делать ретекстур, основы я понял, но вот уж этот Бладскал со своими скриптами(((.
Уважаемые Админы, Модер-Мейкеры и просто Люди которые разбираетесь во всех этих нюансах, помогите мне понять как добавить в игру аналог Бладскала который я бы мог создать сам с нуля, у кого-то получилось добавить, я тоже так хочу уметь...Надеюсь вы поняли что я имею ввиду, буду рад любой информации и подсказкам.
Опубликовано

Учись писать скрипты. Разбирайся, как работает скриптовый движок. Смотри чужие скрипты, пытайся понять, как и что там устроено.
Других вариантов нет.
 
Вот тебе ссылка на вики по СК.
Там есть раздел с туториалами.
 
Потому что если тебе дать скрипт, который отвечает за работу бладскала, ты все равно в нем нифига не разберешься - ибо для этого нужен обязательный набор базовых знаний.
Но если прям хочется - то держи.
 
Скрипт раз, попроще.

Только для силовых атак оружия в правой руке/двуручного.

Спойлер
Scriptname SwordEffectScript extends activemagiceffect  

Spell Property SpellHoriz auto
Spell Property SpellVert auto

Actor SelfRef

Event OnEffectStart(Actor akTarget, Actor akCaster)
        SelfRef = akCaster
        registerForAnimationEvent(SelfRef, "AttackPowerStanding_FXstart")
        registerForAnimationEvent(SelfRef, "AttackPowerRight_FXstart")
        registerForAnimationEvent(SelfRef, "AttackPowerLeft_FXstart")
        registerForAnimationEvent(SelfRef, "AttackPowerBackward_FXstart")
        registerForAnimationEvent(SelfRef, "AttackPowerForward_FXstart")
endEvent

Event OnEffectFinish(Actor akTarget, Actor akCaster)
;;Automatically Unregisterd when Ability Removed
ENDEVENT

Event OnAnimationEvent(ObjectReference akSource, string EventName)
        if (eventName == "AttackPowerRight_FXstart") || (eventName == "AttackPowerLeft_FXstart") || (eventName == "AttackPowerBackward_FXstart")
            SpellHoriz.cast(SelfRef)

        elseif  (eventName == "AttackPowerStanding_FXstart") || (eventName == "AttackPowerForward_FXstart")
            SpellVert.cast(SelfRef)
        endif
endEVENT



Скрипт два, посложнее.

Для любых атак, включая безоружные, для оружия в любой руке. В том числе и для щитов.

Спойлер
scriptName SwordsMagicScript extends activemagiceffect

actor property selfref auto hidden

spell property OneHandedSpellForward auto
spell property OneHandedSpellStand auto
spell property OneHandedSpellSide auto
spell property OneHandedSpellBack auto

spell property OneHandedSpellForwardLeft auto
spell property OneHandedSpellStandLeft auto
spell property OneHandedSpellSideLeft auto
spell property OneHandedSpellBackLeft auto

spell property SpellForward auto
spell property SpellStand auto
spell property SpellSide auto
spell property SpellBack auto

spell property AxeSpellForward auto
spell property AxeSpellStand auto
spell property AxeSpellSide auto
spell property AxeSpellBack auto

spell property UnarmedSpellForward auto
spell property UnarmedSpellStand auto
spell property UnarmedSpellSide auto
spell property UnarmedSpellBack auto

spell property SpellBash auto

Float property Direction auto
Float property Speed auto


function OnEffectStart(actor akTarget, actor akCaster)

    selfref = akCaster
    self.registerForAnimationEvent(akCaster as objectreference, "PowerAttack_Start_End")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerStanding_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerRight_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerLeft_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerBackward_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerForward_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "bashRelease")
    self.registerForAnimationEvent(akCaster as objectreference, "WeaponSwing")
    self.registerForAnimationEvent(akCaster as objectreference, "WeaponLeftSwing")
endFunction

function OnAnimationEvent(objectreference akSource, String EventName)

    if EventName == "bashRelease"
            SpellBash.Cast(selfref as objectreference, none)
    elseIf EventName == "AttackPowerStanding_FXStart"
            SpellStand.Cast(selfref as objectreference, none)
    elseIf EventName == "AttackPowerForward_FXStart"
        if selfref.IsSprinting()
                SpellForward.Cast(selfref as objectreference, none)
        endIf
    elseIf EventName == "AttackPowerRight_FXStart" || EventName == "AttackPowerLeft_FXStart"
            SpellSide.Cast(selfref as objectreference, none)
    elseIf EventName == "AttackPowerBackward_FXStart"
            SpellBack.Cast(selfref as objectreference, none)
    elseIf EventName == "WeaponSwing"
        Direction = selfref.GetAnimationVariableFloat("Direction")
        Speed = selfref.GetAnimationVariableFloat("Speed")
        Bool PowerAttack = selfref.GetAnimationVariableBool("bAllowRotation")
        if PowerAttack
            if selfref.GetEquippedItemType(0) == 6
                if Speed == 0.000000
                        AxeSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                        if selfref.IsSprinting() == 0
                                AxeSpellForward.Cast(selfref as objectreference, none)
                        endIf
                    elseIf Direction == 0.250000
                            AxeSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            AxeSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            AxeSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf
            elseIf selfref.GetEquippedItemType(1) == 1 || selfref.GetEquippedItemType(1) == 2 || selfref.GetEquippedItemType(1) == 3 || selfref.GetEquippedItemType(1) == 4
                if Speed == 0.000000
                        OneHandedSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                        if selfref.IsSprinting() == 0
                                OneHandedSpellForward.Cast(selfref as objectreference, none)
                        endIf
                    elseIf Direction == 0.250000
                            OneHandedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            OneHandedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            OneHandedSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf            
            elseIf selfref.GetEquippedItemType(1) == 0
                if Speed == 0.000000
                        UnarmedSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                            UnarmedSpellForward.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.250000
                            UnarmedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            UnarmedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            UnarmedSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf
            endIf
        endIf    
    elseIf EventName == "WeaponLeftSwing"
        Direction = selfref.GetAnimationVariableFloat("Direction")
        Speed = selfref.GetAnimationVariableFloat("Speed")
        Bool PowerAttack = selfref.GetAnimationVariableBool("bAllowRotation")
        if PowerAttack
            if selfref.GetEquippedItemType(0) == 6
                if Speed == 0.000000
                        AxeSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                        if selfref.IsSprinting() == 0
                                AxeSpellForward.Cast(selfref as objectreference, none)
                        endIf
                    elseIf Direction == 0.250000
                            AxeSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            AxeSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            AxeSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf
            elseIf selfref.GetEquippedItemType(1) == 1 || selfref.GetEquippedItemType(1) == 2 || selfref.GetEquippedItemType(1) == 3 || selfref.GetEquippedItemType(1) == 4
                if Speed == 0.000000
                        OneHandedSpellStandLeft.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                        if selfref.IsSprinting() == 0
                                OneHandedSpellForwardLeft.Cast(selfref as objectreference, none)
                        endIf
                    elseIf Direction == 0.250000
                            OneHandedSpellSideLeft.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            OneHandedSpellSideLeft.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            OneHandedSpellBackLeft.Cast(selfref as objectreference, none)
                    endIf
                endIf            
            elseIf selfref.GetEquippedItemType(1) == 0
                if Speed == 0.000000
                        UnarmedSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                            UnarmedSpellForward.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.250000
                            UnarmedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            UnarmedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            UnarmedSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf
            endIf
        endIf                    
    endIf
endFunction

function OnEffectFinish(actor akTarget, actor akCaster)

    self.unregisterForAnimationEvent(akCaster as objectreference, "PowerAttack_Start_End")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerStanding_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerRight_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerLeft_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerBackward_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerForward_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "bashRelease")
    self.unregisterForAnimationEvent(akCaster as objectreference, "WeaponSwing")
    self.unregisterForAnimationEvent(akCaster as objectreference, "WeaponLeftSwing")
endFunction

Опубликовано
11.01.2019 10:46:07, Azazellz сказал(-а):

Учись писать скрипты. Разбирайся, как работает скриптовый движок. Смотри чужие скрипты, пытайся понять, как и что там устроено.
Других вариантов нет.
 
Вот тебе ссылка на вики по СК.
Там есть раздел с туториалами.
 
Потому что если тебе дать скрипт, который отвечает за работу бладскала, ты все равно в нем нифига не разберешься - ибо для этого нужен обязательный набор базовых знаний.
Но если прям хочется - то держи.
 
Скрипт раз, попроще.

Только для силовых атак оружия в правой руке/двуручного.

Спойлер
Scriptname SwordEffectScript extends activemagiceffect  

Spell Property SpellHoriz auto
Spell Property SpellVert auto

Actor SelfRef

Event OnEffectStart(Actor akTarget, Actor akCaster)
        SelfRef = akCaster
        registerForAnimationEvent(SelfRef, "AttackPowerStanding_FXstart")
        registerForAnimationEvent(SelfRef, "AttackPowerRight_FXstart")
        registerForAnimationEvent(SelfRef, "AttackPowerLeft_FXstart")
        registerForAnimationEvent(SelfRef, "AttackPowerBackward_FXstart")
        registerForAnimationEvent(SelfRef, "AttackPowerForward_FXstart")
endEvent

Event OnEffectFinish(Actor akTarget, Actor akCaster)
;;Automatically Unregisterd when Ability Removed
ENDEVENT

Event OnAnimationEvent(ObjectReference akSource, string EventName)
        if (eventName == "AttackPowerRight_FXstart") || (eventName == "AttackPowerLeft_FXstart") || (eventName == "AttackPowerBackward_FXstart")
            SpellHoriz.cast(SelfRef)

        elseif  (eventName == "AttackPowerStanding_FXstart") || (eventName == "AttackPowerForward_FXstart")
            SpellVert.cast(SelfRef)
        endif
endEVENT



Скрипт два, посложнее.

Для любых атак, включая безоружные, для оружия в любой руке. В том числе и для щитов.

Спойлер
scriptName SwordsMagicScript extends activemagiceffect

actor property selfref auto hidden

spell property OneHandedSpellForward auto
spell property OneHandedSpellStand auto
spell property OneHandedSpellSide auto
spell property OneHandedSpellBack auto

spell property OneHandedSpellForwardLeft auto
spell property OneHandedSpellStandLeft auto
spell property OneHandedSpellSideLeft auto
spell property OneHandedSpellBackLeft auto

spell property SpellForward auto
spell property SpellStand auto
spell property SpellSide auto
spell property SpellBack auto

spell property AxeSpellForward auto
spell property AxeSpellStand auto
spell property AxeSpellSide auto
spell property AxeSpellBack auto

spell property UnarmedSpellForward auto
spell property UnarmedSpellStand auto
spell property UnarmedSpellSide auto
spell property UnarmedSpellBack auto

spell property SpellBash auto

Float property Direction auto
Float property Speed auto


function OnEffectStart(actor akTarget, actor akCaster)

    selfref = akCaster
    self.registerForAnimationEvent(akCaster as objectreference, "PowerAttack_Start_End")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerStanding_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerRight_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerLeft_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerBackward_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerForward_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "bashRelease")
    self.registerForAnimationEvent(akCaster as objectreference, "WeaponSwing")
    self.registerForAnimationEvent(akCaster as objectreference, "WeaponLeftSwing")
endFunction

function OnAnimationEvent(objectreference akSource, String EventName)

    if EventName == "bashRelease"
            SpellBash.Cast(selfref as objectreference, none)
    elseIf EventName == "AttackPowerStanding_FXStart"
            SpellStand.Cast(selfref as objectreference, none)
    elseIf EventName == "AttackPowerForward_FXStart"
        if selfref.IsSprinting()
                SpellForward.Cast(selfref as objectreference, none)
        endIf
    elseIf EventName == "AttackPowerRight_FXStart" || EventName == "AttackPowerLeft_FXStart"
            SpellSide.Cast(selfref as objectreference, none)
    elseIf EventName == "AttackPowerBackward_FXStart"
            SpellBack.Cast(selfref as objectreference, none)
    elseIf EventName == "WeaponSwing"
        Direction = selfref.GetAnimationVariableFloat("Direction")
        Speed = selfref.GetAnimationVariableFloat("Speed")
        Bool PowerAttack = selfref.GetAnimationVariableBool("bAllowRotation")
        if PowerAttack
            if selfref.GetEquippedItemType(0) == 6
                if Speed == 0.000000
                        AxeSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                        if selfref.IsSprinting() == 0
                                AxeSpellForward.Cast(selfref as objectreference, none)
                        endIf
                    elseIf Direction == 0.250000
                            AxeSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            AxeSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            AxeSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf
            elseIf selfref.GetEquippedItemType(1) == 1 || selfref.GetEquippedItemType(1) == 2 || selfref.GetEquippedItemType(1) == 3 || selfref.GetEquippedItemType(1) == 4
                if Speed == 0.000000
                        OneHandedSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                        if selfref.IsSprinting() == 0
                                OneHandedSpellForward.Cast(selfref as objectreference, none)
                        endIf
                    elseIf Direction == 0.250000
                            OneHandedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            OneHandedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            OneHandedSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf            
            elseIf selfref.GetEquippedItemType(1) == 0
                if Speed == 0.000000
                        UnarmedSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                            UnarmedSpellForward.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.250000
                            UnarmedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            UnarmedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            UnarmedSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf
            endIf
        endIf    
    elseIf EventName == "WeaponLeftSwing"
        Direction = selfref.GetAnimationVariableFloat("Direction")
        Speed = selfref.GetAnimationVariableFloat("Speed")
        Bool PowerAttack = selfref.GetAnimationVariableBool("bAllowRotation")
        if PowerAttack
            if selfref.GetEquippedItemType(0) == 6
                if Speed == 0.000000
                        AxeSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                        if selfref.IsSprinting() == 0
                                AxeSpellForward.Cast(selfref as objectreference, none)
                        endIf
                    elseIf Direction == 0.250000
                            AxeSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            AxeSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            AxeSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf
            elseIf selfref.GetEquippedItemType(1) == 1 || selfref.GetEquippedItemType(1) == 2 || selfref.GetEquippedItemType(1) == 3 || selfref.GetEquippedItemType(1) == 4
                if Speed == 0.000000
                        OneHandedSpellStandLeft.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                        if selfref.IsSprinting() == 0
                                OneHandedSpellForwardLeft.Cast(selfref as objectreference, none)
                        endIf
                    elseIf Direction == 0.250000
                            OneHandedSpellSideLeft.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            OneHandedSpellSideLeft.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            OneHandedSpellBackLeft.Cast(selfref as objectreference, none)
                    endIf
                endIf            
            elseIf selfref.GetEquippedItemType(1) == 0
                if Speed == 0.000000
                        UnarmedSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                            UnarmedSpellForward.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.250000
                            UnarmedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            UnarmedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            UnarmedSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf
            endIf
        endIf                    
    endIf
endFunction

function OnEffectFinish(actor akTarget, actor akCaster)

    self.unregisterForAnimationEvent(akCaster as objectreference, "PowerAttack_Start_End")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerStanding_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerRight_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerLeft_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerBackward_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerForward_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "bashRelease")
    self.unregisterForAnimationEvent(akCaster as objectreference, "WeaponSwing")
    self.unregisterForAnimationEvent(akCaster as objectreference, "WeaponLeftSwing")
endFunction

Вы правы, но хотел бы узнать, чем их открыть? как их писать? Подскажите

Опубликовано
12.01.2019 12:25:47, neluturcanu сказал(-а):
Вы правы, но хотел бы узнать, чем их открыть? как их писать? Подскажите

Ты б еще спросил "как собрать ядерную бомбу в домашних условиях".

В двух словах такое не расскажешь.

Ссылку на СК-вики я тебе дал. Базовая информация там есть, уроки для начинающих с примерами там тоже есть. Вперед.

Опубликовано
12.01.2019 12:48:44, Azazellz сказал(-а):

Ты б еще спросил "как собрать ядерную бомбу в домашних условиях".

а как?

Опубликовано
12.01.2019 12:48:44, Azazellz сказал(-а):

Ты б еще спросил "как собрать ядерную бомбу в домашних условиях".

В двух словах такое не расскажешь.

Ссылку на СК-вики я тебе дал. Базовая информация там есть, уроки для начинающих с примерами там тоже есть. Вперед.

Спасибо

  • 2 недели спустя...
Опубликовано
11.01.2019 10:46:07, Azazellz сказал(-а):

Учись писать скрипты. Разбирайся, как работает скриптовый движок. Смотри чужие скрипты, пытайся понять, как и что там устроено.
Других вариантов нет.
 
Вот тебе ссылка на вики по СК.
Там есть раздел с туториалами.
 
Потому что если тебе дать скрипт, который отвечает за работу бладскала, ты все равно в нем нифига не разберешься - ибо для этого нужен обязательный набор базовых знаний.
Но если прям хочется - то держи.
 
Скрипт раз, попроще.

Только для силовых атак оружия в правой руке/двуручного.

Спойлер
Scriptname SwordEffectScript extends activemagiceffect  

Spell Property SpellHoriz auto
Spell Property SpellVert auto

Actor SelfRef

Event OnEffectStart(Actor akTarget, Actor akCaster)
        SelfRef = akCaster
        registerForAnimationEvent(SelfRef, "AttackPowerStanding_FXstart")
        registerForAnimationEvent(SelfRef, "AttackPowerRight_FXstart")
        registerForAnimationEvent(SelfRef, "AttackPowerLeft_FXstart")
        registerForAnimationEvent(SelfRef, "AttackPowerBackward_FXstart")
        registerForAnimationEvent(SelfRef, "AttackPowerForward_FXstart")
endEvent

Event OnEffectFinish(Actor akTarget, Actor akCaster)
;;Automatically Unregisterd when Ability Removed
ENDEVENT

Event OnAnimationEvent(ObjectReference akSource, string EventName)
        if (eventName == "AttackPowerRight_FXstart") || (eventName == "AttackPowerLeft_FXstart") || (eventName == "AttackPowerBackward_FXstart")
            SpellHoriz.cast(SelfRef)

        elseif  (eventName == "AttackPowerStanding_FXstart") || (eventName == "AttackPowerForward_FXstart")
            SpellVert.cast(SelfRef)
        endif
endEVENT



Скрипт два, посложнее.

Для любых атак, включая безоружные, для оружия в любой руке. В том числе и для щитов.

Спойлер
scriptName SwordsMagicScript extends activemagiceffect

actor property selfref auto hidden

spell property OneHandedSpellForward auto
spell property OneHandedSpellStand auto
spell property OneHandedSpellSide auto
spell property OneHandedSpellBack auto

spell property OneHandedSpellForwardLeft auto
spell property OneHandedSpellStandLeft auto
spell property OneHandedSpellSideLeft auto
spell property OneHandedSpellBackLeft auto

spell property SpellForward auto
spell property SpellStand auto
spell property SpellSide auto
spell property SpellBack auto

spell property AxeSpellForward auto
spell property AxeSpellStand auto
spell property AxeSpellSide auto
spell property AxeSpellBack auto

spell property UnarmedSpellForward auto
spell property UnarmedSpellStand auto
spell property UnarmedSpellSide auto
spell property UnarmedSpellBack auto

spell property SpellBash auto

Float property Direction auto
Float property Speed auto


function OnEffectStart(actor akTarget, actor akCaster)

    selfref = akCaster
    self.registerForAnimationEvent(akCaster as objectreference, "PowerAttack_Start_End")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerStanding_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerRight_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerLeft_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerBackward_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "AttackPowerForward_FXStart")
    self.registerForAnimationEvent(akCaster as objectreference, "bashRelease")
    self.registerForAnimationEvent(akCaster as objectreference, "WeaponSwing")
    self.registerForAnimationEvent(akCaster as objectreference, "WeaponLeftSwing")
endFunction

function OnAnimationEvent(objectreference akSource, String EventName)

    if EventName == "bashRelease"
            SpellBash.Cast(selfref as objectreference, none)
    elseIf EventName == "AttackPowerStanding_FXStart"
            SpellStand.Cast(selfref as objectreference, none)
    elseIf EventName == "AttackPowerForward_FXStart"
        if selfref.IsSprinting()
                SpellForward.Cast(selfref as objectreference, none)
        endIf
    elseIf EventName == "AttackPowerRight_FXStart" || EventName == "AttackPowerLeft_FXStart"
            SpellSide.Cast(selfref as objectreference, none)
    elseIf EventName == "AttackPowerBackward_FXStart"
            SpellBack.Cast(selfref as objectreference, none)
    elseIf EventName == "WeaponSwing"
        Direction = selfref.GetAnimationVariableFloat("Direction")
        Speed = selfref.GetAnimationVariableFloat("Speed")
        Bool PowerAttack = selfref.GetAnimationVariableBool("bAllowRotation")
        if PowerAttack
            if selfref.GetEquippedItemType(0) == 6
                if Speed == 0.000000
                        AxeSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                        if selfref.IsSprinting() == 0
                                AxeSpellForward.Cast(selfref as objectreference, none)
                        endIf
                    elseIf Direction == 0.250000
                            AxeSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            AxeSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            AxeSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf
            elseIf selfref.GetEquippedItemType(1) == 1 || selfref.GetEquippedItemType(1) == 2 || selfref.GetEquippedItemType(1) == 3 || selfref.GetEquippedItemType(1) == 4
                if Speed == 0.000000
                        OneHandedSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                        if selfref.IsSprinting() == 0
                                OneHandedSpellForward.Cast(selfref as objectreference, none)
                        endIf
                    elseIf Direction == 0.250000
                            OneHandedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            OneHandedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            OneHandedSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf            
            elseIf selfref.GetEquippedItemType(1) == 0
                if Speed == 0.000000
                        UnarmedSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                            UnarmedSpellForward.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.250000
                            UnarmedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            UnarmedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            UnarmedSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf
            endIf
        endIf    
    elseIf EventName == "WeaponLeftSwing"
        Direction = selfref.GetAnimationVariableFloat("Direction")
        Speed = selfref.GetAnimationVariableFloat("Speed")
        Bool PowerAttack = selfref.GetAnimationVariableBool("bAllowRotation")
        if PowerAttack
            if selfref.GetEquippedItemType(0) == 6
                if Speed == 0.000000
                        AxeSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                        if selfref.IsSprinting() == 0
                                AxeSpellForward.Cast(selfref as objectreference, none)
                        endIf
                    elseIf Direction == 0.250000
                            AxeSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            AxeSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            AxeSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf
            elseIf selfref.GetEquippedItemType(1) == 1 || selfref.GetEquippedItemType(1) == 2 || selfref.GetEquippedItemType(1) == 3 || selfref.GetEquippedItemType(1) == 4
                if Speed == 0.000000
                        OneHandedSpellStandLeft.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                        if selfref.IsSprinting() == 0
                                OneHandedSpellForwardLeft.Cast(selfref as objectreference, none)
                        endIf
                    elseIf Direction == 0.250000
                            OneHandedSpellSideLeft.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            OneHandedSpellSideLeft.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            OneHandedSpellBackLeft.Cast(selfref as objectreference, none)
                    endIf
                endIf            
            elseIf selfref.GetEquippedItemType(1) == 0
                if Speed == 0.000000
                        UnarmedSpellStand.Cast(selfref as objectreference, none)
                elseIf Speed > 0.000000
                    if Direction == 1.00000 || Direction == 0.000000
                            UnarmedSpellForward.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.250000
                            UnarmedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.750000
                            UnarmedSpellSide.Cast(selfref as objectreference, none)
                    elseIf Direction == 0.500000
                            UnarmedSpellBack.Cast(selfref as objectreference, none)
                    endIf
                endIf
            endIf
        endIf                    
    endIf
endFunction

function OnEffectFinish(actor akTarget, actor akCaster)

    self.unregisterForAnimationEvent(akCaster as objectreference, "PowerAttack_Start_End")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerStanding_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerRight_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerLeft_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerBackward_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "AttackPowerForward_FXStart")
    self.unregisterForAnimationEvent(akCaster as objectreference, "bashRelease")
    self.unregisterForAnimationEvent(akCaster as objectreference, "WeaponSwing")
    self.unregisterForAnimationEvent(akCaster as objectreference, "WeaponLeftSwing")
endFunction

У меня получилось!....но мне опять нужна твоя помощ http://tesall.ru/topic/21177-problema-s-teksturami/

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...