Модератор форума: Kris†a™  
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)

Вопросы по скриптам Papyrus
sansuli  Offline  Сообщение №1 написано: 31 августа 2012, 13:29 | Отредактировано: Multigone - 23 апреля 2020, 14:24


The Red Sun


193
Уроки по скриптованию на языке Papyrus
Прежде чем задать вопрос просмотрите вышеуказанные уроки.
ok


Тема регламентирована.


• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней.
• Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней.
• При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС.
• При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "
+" полезного сообщения.

Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Insomniac  Offline  Сообщение №121 написано: 30 января 2013, 18:52



70
Народ, подскажите чем можно перекомпилировать .pex в .psc или на крайняк хотя бы просто открыть .pex
Может у кого есть Papyrus Assembler GUI? а то в инете он пропал Оо

GreyFox447  Offline  Сообщение №122 написано: 3 февраля 2013, 14:11 | Отредактировано: GreyFox447 - 3 февраля 2013, 14:12


King of Thieves


76
доброго времени суток, нужна ваша помощь, нужен скрипт для спела, при касте которого на NPC, этот NPC телепортируется в указанное место при этом что б ГГ с ним не телепортировался.

А у нас все как обычно, все друг друга грабят, убивают, глотки друг другу грызут, в общем стандартный цивилизованый мир...
_Dark_Assassin_  Offline  Сообщение №123 написано: 8 февраля 2013, 15:42


I returned...


363
Скажите, есть ли такой способ, чтобы твоя репутация, оставалась как под квестом "Тёмного Братства" то есть чтобы там стража говарила - Эй я знаю кто ты... Слава ситису. А не так, как начинаешь квест, например за магов, и всё тебя все называют - ооо ты маг все дела, а надо чтобы репа была, как после прохождения Тёмного Братства.

mOOnlyn  Offline  Сообщение №124 написано: 9 февраля 2013, 00:50 | Отредактировано: mOOnlyn - 9 февраля 2013, 01:17



17
Подскажите пожалуйста, какой скрипт в DLC: Dawnguard отвечает за смену стадий вампиризма? Изменения в скрипте "PlayerVampireQuestScript.psc", лежащем в "Data\Scripts\Source\Dawnguard", результатов не дали. Задумка следующая - сытый вампир это четвертая стадия, голодный это первая, питание повышает уровень вампира с 1 до 4, голод постепенно снижает уровень (4-3-2-1).

PaukSama  Offline  Сообщение №125 написано: 9 февраля 2013, 02:16


Прячущий свое сердце


mOOnlyn, это делается спелловым путем. Скрипты тут не нужны. Да и таких модов уже немало.

Отними у меня апельсин - и я тебя убью
Съешь мой апельсин - и я тебя убью
Подари мне апельсин - и... я тебя убью
Мне не нужен никто, лишь мой апельсин
А тот кто не пойман - не ассасин!
mOOnlyn  Offline  Сообщение №126 написано: 9 февраля 2013, 02:29 | Отредактировано: mOOnlyn - 9 февраля 2013, 02:47



17
Модов не мало, но я делаю под себя, ни один из них мне не нравится.
Разница между уровнями вампира - да, в спеллах, для разных стадий разные спеллы, но переключение между стадиями явно прописано в этом скрипте в виде квеста, так же там указано на каких стадиях какие спеллы активируются, а какие деактивируются, когда какие сообщения о стадиях выводятся на экран и какой эффект пробегает по экрану при переключении стадий и при нахождении на солнце, механизм излечения, смена рас, но никакие изменения в игре не отражаются, а спеллы измененные и сохраненные в .esp да, работают на нужных стадиях, однако порядок стадий не тот что мне нужен.
Спелловым путем не реализовать таймеры, условия и переменные, это в любом случае делается скриптом.
Я бы может просто поменял бы вверх ногами силу спеллов усиливающихся или ослабевающих со стадиями, перекроил бы меседжи, но ведь есть спеллы которые появляются и исчезают в зависимости от стадии, а их появление и исчезновение как раз в этом скрипте и прописано, а он не работает. Да, для проверки начинал новую игру после каждого внесенного изменения.

sansuli  Offline  Сообщение №127 написано: 9 февраля 2013, 08:48 | Отредактировано: sansuli - 9 февраля 2013, 08:57


The Red Sun


193
mOOnlyn, PaukSama прав

_Dark_Assassin_, както я не понял вопроса

GreyFox447, повесь скрипт на магический эффект
Свойство задай здесь
Event OnEffectStart(Actor akTarget, Actor akCaster)
If akCaster == Game.GetPlayer
AkTarget.MoveTo(и здесь надо написать куда телепортировать, можно задать это через свойства или фиксировать местоположения и перемещать цель по заданному параметру)
EndIf
EndEvent
А остальное это уже Creation Kit

Insomniac, slastik, сам интересуюсь, но на сколько я знаю текстовый редактор Notepad++ можно подстроить под Papyrus, ищи тутор

Добавлено (09.02.2013, 12:36)
---------------------------------------------
termitor, к сожаления я не смог просмотреть скрипты по заданным тобой ссылкам

Добавлено (09.02.2013, 12:48)
---------------------------------------------
Snakesalamandra, ну не знаю как перебросить на ближайшую цель, наверное надо посмотреть заклинание цепная молния, и возможно его можно сделать без скрипта, но можно сделать заражение всех, то есть заражаешь одного, он подходит к другому (или к другим) и заражает их, это можно сделать без скрипта создаешь заклинание которое добавляет на цель "Плащ" (надеюсь ты понимаешь о чем я) с негативным эффектом, а этот самый плащ, тоже будет добавлять другим тот же самый плащь и негативный эффект. Да ну и выразился)), надеюсь ты понял. Если интересно то что я сказал, пиши, помогу в создании и в скриптах

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
_Dark_Assassin_  Offline  Сообщение №128 написано: 9 февраля 2013, 09:28


I returned...


363
sansuli, Короче, тёмным остаться, как после тёмного братства !

mOOnlyn  Offline  Сообщение №129 написано: 9 февраля 2013, 09:39 | Отредактировано: mOOnlyn - 9 февраля 2013, 09:45



17
sansuli, Вы меня извините, Вы этот скрипт хотя бы смотрели?
Код
ScriptName PlayerVampireQuestScript extends Quest Conditional

;Variable to track if the player is a vampire
;0 = Not a Vampire
;1 = Vampire
;2 = Vampire Stage 2
;3 = Vampire Stage 3
;4 = Vampire Stage 4
Int Property VampireStatus Auto Conditional

Message Property VampireFeedMessage Auto
Message Property VampireStageProgressionMessage Auto
Race Property ArgonianRace  Auto    
Race Property ArgonianRaceVampire  Auto    
Race Property BretonRace  Auto    
Race Property BretonRaceVampire  Auto    
Race Property DarkElfRace  Auto    
Race Property DarkElfRaceVampire  Auto    
Race Property HighElfRace  Auto    
Race Property HighElfRaceVampire  Auto    
Race Property ImperialRace  Auto    
Race Property ImperialRaceVampire  Auto    
Race Property KhajiitRace  Auto    
Race Property KhajiitRaceVampire  Auto    
Race Property NordRace  Auto    
Race Property NordRaceVampire  Auto    
Race Property OrcRace  Auto    
Race Property OrcRaceVampire  Auto    
Race Property RedguardRace  Auto    
Race Property RedguardRaceVampire  Auto    
Race Property WoodElfRace  Auto    
Race Property WoodElfRaceVampire  Auto    
Race Property CureRace Auto
Static Property XMarker Auto

Faction Property VampirePCFaction  Auto    

Float Property LastFeedTime Auto
Float Property FeedTimer Auto
GlobalVariable Property GameDaysPassed Auto

Idle Property VampireFeedingBedRight Auto
Idle Property VampireFeedingBedrollRight Auto
GlobalVariable Property VampireFeedReady Auto
imageSpaceModifier Property VampireTransformIncreaseISMD  Auto
imageSpaceModifier Property VampireTransformDecreaseISMD  Auto   
effectShader property VampireChangeFX auto

Event OnUpdateGameTime()

   ;Feed timer
   FeedTimer = GameDaysPassed.Value - LastFeedTime
;  debug.trace(self + "Feed Timer is:" + FeedTimer + "days")
     
     
   ;Vampire progression should not happen if player is in combat or controls are locked or the player can't fast travel   
   ; DLC01 - also skip progression if player is currently vampire lord
   actor player = Game.GetPlayer()
   If  Game.IsMovementControlsEnabled() && Game.IsFightingControlsEnabled() && player.GetCombatState() == 0 && player.HasMagicEffect(DLC1VampireChangeEffect) == false && player.HasMagicEffect(DLC1VampireChangeFXEffect) == false
    ;If player hasn't fed, progress Vampirism
    If (FeedTimer >= 3) && (VampireStatus == 3)
     ;add Stage 4 Vampire buffs and spells
     VampireFeedReady.SetValue(3)
     ;VampireStageProgressionMessage.Show()
     VampireStage4Message.Show()
     VampireStatus = 4
     VampireProgression(Game.GetPlayer(), 4)
     ;/ REMOVING HATE ON LEVEL 4 VAMPIRE
     ;All NPCs  hate the evil Vampire
     Game.GetPlayer().AddtoFaction(VampirePCFaction)
     Game.GetPlayer().SetAttackActorOnSight()

     int cfIndex = 0
     Debug.Trace("VAMPIRE update: DLC1CrimeFactions = " + DLC1CrimeFactions)
     Debug.Trace("VAMPIRE update: CrimeFactions before = " + CrimeFactions)
     CrimeFactions = DLC1CrimeFactions
     Debug.Trace("VAMPIRE update: CrimeFactions after = " + CrimeFactions)
        while (cfIndex < CrimeFactions.GetSize())
             Debug.Trace("VAMPIRE update: Setting enemy flag on " + CrimeFactions.GetAt(cfIndex))
            (CrimeFactions.GetAt(cfIndex) as Faction).SetPlayerEnemy()
            cfIndex += 1
        endwhile
     /;
     ;stop checking GameTime until the player feeds again
     UnregisterforUpdateGameTime()
    ElseIf FeedTimer >= 2 && (VampireStatus == 2)
     ;add Stage 3 Vampire buffs and spells
     VampireFeedReady.SetValue(2)
     VampireStageProgressionMessage.Show()
     VampireStatus = 3
     VampireProgression(Game.GetPlayer(), 3)   
    ElseIf FeedTimer >= 1 && (VampireStatus == 1)
     ;add Stage 2 Vampire buffs and spells
     VampireFeedReady.SetValue(1)
     VampireStageProgressionMessage.Show()
     VampireStatus = 2
     VampireProgression(Game.GetPlayer(), 2)   
    EndIf
   Endif
     
EndEvent

Function VampireFeedBed()

   Game.GetPlayer().PlayIdle(VampireFeedingBedRight)

EndFunction

Function VampireFeedBedRoll()

   Game.GetPlayer().PlayIdle(VampireFeedingBedrollRight)

EndFunction

Function VampireChange(Actor Target)
   ;Effects for hiding the change
   Game.DisablePlayerControls()
   VampireChangeFX.play(Target)
   VampireTransformIncreaseISMD.applyCrossFade(2.0)
   ObjectReference myXmarker = Target.PlaceAtMe(Xmarker)
   MAGVampireTransform01.Play(myXmarker)
   myXmarker.Disable()
   utility.wait(2.0)
   imageSpaceModifier.removeCrossFade()
   VampireChangeFX.stop(Target)

   ;Change player's race, defaults to Nord Vampire
   if (Target.GetActorBase().GetRace() == ArgonianRace)
    CureRace = ArgonianRace
    Target.SetRace(ArgonianRaceVampire)
   elseif (Target.GetActorBase().GetRace() == BretonRace)
    CureRace = BretonRace
    Target.SetRace(BretonRaceVampire)   
   elseif (Target.GetActorBase().GetRace() == DarkElfRace)
    CureRace = DarkElfRace
    Target.SetRace(DarkElfRaceVampire)   
   elseif (Target.GetActorBase().GetRace() == HighELfRace)
    CureRace = HighELfRace
    Target.SetRace(HighELfRaceVampire)   
   elseif (Target.GetActorBase().GetRace() == ImperialRace)
    CureRace = ImperialRace
    Target.SetRace(ImperialRaceVampire)   
   elseif (Target.GetActorBase().GetRace() == KhajiitRace)
    CureRace = KhajiitRace
    Target.SetRace(KhajiitRaceVampire)   
   elseif (Target.GetActorBase().GetRace() == NordRace)
    CureRace = NordRace
    Target.SetRace(NordRaceVampire)   
   elseif (Target.GetActorBase().GetRace() == OrcRace)
    CureRace = OrcRace
    Target.SetRace(OrcRaceVampire)   
   elseif (Target.GetActorBase().GetRace() == RedguardRace)
    CureRace = RedguardRace
    Target.SetRace(RedguardRaceVampire)   
   elseif (Target.GetActorBase().GetRace() == WoodElfRace)
    CureRace = WoodElfRace
    Target.SetRace(WoodElfRaceVampire)   
   endif

   ;Clear player's diseases
   ;VampireCureDisease.Cast(Target)
   Target.RemoveSpell(DiseaseBoneBreakFever)
   Target.RemoveSpell(DiseaseBrainRot )
   Target.RemoveSpell(DiseaseRattles )
   Target.RemoveSpell(DiseaseRockjoint )
   Target.RemoveSpell(DiseaseWitbane )
   Target.RemoveSpell(DiseasePorphyricHemophelia)
   Target.RemoveSpell(DiseaseAtaxia)

   ;Clear player's trap diseases
   ;VampireCureDisease.Cast(Target)
   Target.RemoveSpell(TrapDiseaseBoneBreakFever)
   Target.RemoveSpell(TrapDiseaseBrainRot )
   Target.RemoveSpell(TrapDiseaseRattles )
   Target.RemoveSpell(TrapDiseaseRockjoint )
   Target.RemoveSpell(TrapDiseaseWitbane )
   Target.RemoveSpell(TrapDiseasePorphyricHemophelia)
   Target.RemoveSpell(TrapDiseaseAtaxia)

   ;Make player Vampire Stage 1
   VampireStatus = 1
   VampireProgression(Game.GetPlayer(), 1)
     
   ;Setup the Feed Timers
   RegisterForUpdateGameTime(12)
   LastFeedTime =  GameDaysPassed.Value

   ;Set the Global for stat tracking
   PlayerIsVampire.SetValue(1)
     
   Utility.Wait(1)
   Game.EnablePlayerControls()   

   ;If the player has been cured before, restart the cure quest
   If VC01.GetStageDone(200) == 1
    VC01.SetStage(25)
   EndIf
     
EndFunction

Function VampireFeed()
   ;Effects for hiding the change
   ;VampireChangeFX.play(game.getPlayer())
   VampireTransformDecreaseISMD.applyCrossFade(2.0)
   utility.wait(2.0)
   imageSpaceModifier.removeCrossFade()
   ;VampireChangeFX.stop(game.getPlayer())
     
   Game.IncrementStat( "Necks Bitten" )
   VampireFeedMessage.Show()
   VampireFeedReady.SetValue(0)
   ;Game.ForceThirdPerson()
   ;Game.GetPlayer().PlayIdle(VampireFeedingBedRight)
   ;Player has fed, regress to Stage 1 Vampirisim
   ;Remove Stage 2, 3, and 4 buffs and spells
   LastFeedTime =  GameDaysPassed.Value
   VampireStatus = 1
   VampireProgression(Game.GetPlayer(), 1)

   ;Player is no longer hated. Only used for players that load DLC as a vampire
   Game.GetPlayer().RemoveFromFaction(VampirePCFaction)
   Game.GetPlayer().SetAttackActorOnSight(False)

   int cfIndex = 0
   Debug.Trace("VAMPIRE feed: DLC1CrimeFactions = " + DLC1CrimeFactions)
   Debug.Trace("VAMPIRE feed: CrimeFactions before = " + CrimeFactions)
   CrimeFactions = DLC1CrimeFactions
   Debug.Trace("VAMPIRE feed: CrimeFactions after = " + CrimeFactions)
   while (cfIndex < CrimeFactions.GetSize())
    Debug.Trace("VAMPIRE: Removing enemy flag from " + CrimeFactions.GetAt(cfIndex))
    (CrimeFactions.GetAt(cfIndex) as Faction).SetPlayerEnemy(false)
    cfIndex += 1
   endwhile
     
   ;Start checking GameTime again if we weren't already
   UnregisterforUpdateGameTime()
   RegisterForUpdateGameTime(12)
     
     
EndFunction

Function VampireProgression(Actor Player, int VampireStage)
   ;Swap out abilities depending on stage of Vampirism   
   If VampireStage == 2
    VampireTransformIncreaseISMD.applyCrossFade(2.0)
    utility.wait(2.0)
    imageSpaceModifier.removeCrossFade()    
    Player.RemoveSpell(AbVampire01)
    Player.RemoveSpell(AbVampire01b)
    Player.AddSpell(AbVampire02b, abVerbose = False)
    Player.AddSpell(AbVampire02, abVerbose = False)
    ;Player.RemoveSpell(VampireStrength01)
    ;Player.AddSpell(VampireStrength02, abVerbose = False)
    Player.RemoveSpell(VampireSunDamage01)
    Player.AddSpell(VampireSunDamage02, abVerbose = False)    
      
    Player.AddSpell(VampireDrain02, abVerbose = False)
    ;check to see if player has power equipped and switch them out
    If Player.GetEquippedSpell(0) == VampireDrain01
     Player.EquipSpell(VampireDrain02, 0)     
    EndIf
      
    If Player.GetEquippedSpell(1) == VampireDrain01
     Player.EquipSpell(VampireDrain02, 1)
    EndIf
    Player.RemoveSpell(VampireDrain01)
      
    Player.AddSpell(VampireRaiseThrall02, abVerbose = False)
    Player.RemoveSpell(VampireRaiseThrall01)
      
    Player.AddSpell(VampireCharm)
   ElseIf VampireStage == 3
    VampireTransformIncreaseISMD.applyCrossFade(2.0)
    utility.wait(2.0)
    imageSpaceModifier.removeCrossFade()
    Player.RemoveSpell(AbVampire01)
    Player.RemoveSpell(AbVampire02)
    Player.RemoveSpell(AbVampire01b)
    Player.RemoveSpell(AbVampire02b)
    Player.AddSpell(AbVampire03b, abVerbose = False)
    Player.AddSpell(AbVampire03, abVerbose = False)

    Player.AddSpell(VampireDrain03, abVerbose = False)
    ;check to see if player has power equipped and switch them out
    If Player.GetEquippedSpell(0) == VampireDrain02 || Player.GetEquippedSpell(0) == VampireDrain01
     Player.EquipSpell(VampireDrain03, 0)     
    EndIf
      
    If Player.GetEquippedSpell(1) == VampireDrain02 || Player.GetEquippedSpell(1) == VampireDrain01
     Player.EquipSpell(VampireDrain03, 1)
    EndIf
    Player.RemoveSpell(VampireDrain01)
    Player.RemoveSpell(VampireDrain02)
      
    Player.RemoveSpell(VampireRaiseThrall01)
    Player.RemoveSpell(VampireRaiseThrall02)
    Player.AddSpell(VampireRaiseThrall03, abVerbose = False)
    ;Player.RemoveSpell(VampireStrength01)
    ;Player.RemoveSpell(VampireStrength02)
    ;Player.AddSpell(VampireStrength03, abVerbose = False)
    Player.RemoveSpell(VampireSunDamage01)
    Player.RemoveSpell(VampireSunDamage02)
    Player.AddSpell(VampireSunDamage03, abVerbose = False)
      
    ;Player.AddSpell(VampireHuntersSight)
    ;Player.AddSpell(VampireCloak)
   ElseIf VampireStage == 4
    VampireTransformIncreaseISMD.applyCrossFade(2.0)
    utility.wait(2.0)
    imageSpaceModifier.removeCrossFade()
    Player.RemoveSpell(AbVampire01)
    Player.RemoveSpell(AbVampire02)
    Player.RemoveSpell(AbVampire03)
    Player.RemoveSpell(AbVampire01b)
    Player.RemoveSpell(AbVampire02b)
    Player.RemoveSpell(AbVampire03b)
    Player.AddSpell(AbVampire04, abVerbose = False)
    Player.AddSpell(AbVampire04b, abVerbose = False)

    Player.AddSpell(VampireDrain04, abVerbose = False)    
    ;check to see if player has power equipped and switch them out
    If Player.GetEquippedSpell(0) == VampireDrain03 || Player.GetEquippedSpell(0) == VampireDrain02 || Player.GetEquippedSpell(0) == VampireDrain01
     Player.EquipSpell(VampireDrain04, 0)     
    EndIf
      
    If Player.GetEquippedSpell(1) == VampireDrain03 || Player.GetEquippedSpell(1) == VampireDrain02 || Player.GetEquippedSpell(1) == VampireDrain01
     Player.EquipSpell(VampireDrain04, 1)
    EndIf
    Player.RemoveSpell(VampireDrain01)
    Player.RemoveSpell(VampireDrain02)
    Player.RemoveSpell(VampireDrain03)    
      
    Player.RemoveSpell(VampireRaiseThrall01)
    Player.RemoveSpell(VampireRaiseThrall02)
    Player.RemoveSpell(VampireRaiseThrall03)
    Player.AddSpell(VampireRaiseThrall04, abVerbose = False)
    ;Player.RemoveSpell(VampireStrength01)
    ;Player.RemoveSpell(VampireStrength02)
    ;Player.RemoveSpell(VampireStrength03)
    ;Player.AddSpell(VampireStrength04, abVerbose = False)
    Player.RemoveSpell(VampireSunDamage01)
    Player.RemoveSpell(VampireSunDamage02)
    Player.RemoveSpell(VampireSunDamage03)
    Player.AddSpell(VampireSunDamage04, abVerbose = False)
      
    Player.AddSpell(VampireInvisibilityPC)   
      
   ElseIf VampireStage == 1
    Player.AddSpell(ABVampireSkills, abVerbose = False)
    Player.AddSpell(ABVampireSkills02, abVerbose = False)
    Player.RemoveSpell(AbVampire04)
    Player.RemoveSpell(AbVampire02)
    Player.RemoveSpell(AbVampire03)
    Player.RemoveSpell(AbVampire04b)
    Player.RemoveSpell(AbVampire02b)
    Player.RemoveSpell(AbVampire03b)
    Player.AddSpell(AbVampire01, abVerbose = False)
    Player.AddSpell(AbVampire01b, abVerbose = False)
      
    Player.AddSpell(VampireDrain01, abVerbose = False)
    ;check to see if player has power equipped and switch them out
    If Player.GetEquippedSpell(0) == VampireDrain03 || Player.GetEquippedSpell(0) == VampireDrain04 || Player.GetEquippedSpell(0) == VampireDrain02
     Player.EquipSpell(VampireDrain01, 0)     
    EndIf
      
    If Player.GetEquippedSpell(1) == VampireDrain03 || Player.GetEquippedSpell(1) == VampireDrain04 || Player.GetEquippedSpell(1) == VampireDrain02
     Player.EquipSpell(VampireDrain01, 1)
    EndIf
    Player.RemoveSpell(VampireDrain04)
    Player.RemoveSpell(VampireDrain02)
    Player.RemoveSpell(VampireDrain03)
      
    Player.RemoveSpell(VampireRaiseThrall04)
    Player.RemoveSpell(VampireRaiseThrall02)
    Player.RemoveSpell(VampireRaiseThrall03)
    Player.AddSpell(VampireRaiseThrall01, abVerbose = False)
    ;Player.RemoveSpell(VampireStrength04)
    ;Player.RemoveSpell(VampireStrength02)
    ;Player.RemoveSpell(VampireStrength03)
    ;Player.AddSpell(VampireStrength01, abVerbose = False)
    Player.RemoveSpell(VampireSunDamage04)
    Player.RemoveSpell(VampireSunDamage02)
    Player.RemoveSpell(VampireSunDamage03)
    Player.AddSpell(VampireSunDamage01, abVerbose = False)
      
    Player.RemoveSpell(VampireCharm)
    ;Player.RemoveSpell(VampireCloak)
    Player.RemoveSpell(VampireInvisibilityPC)   
   EndIf
EndFunction

Function VampireCure(Actor Player)
     
   Game.IncrementStat( "Vampirism Cures" )
   ;Stop tracking the Feed Timer
   UnregisterforUpdateGameTime()

   VampireStatus = 0
   ;Player is no longer hated
   Player.RemoveFromFaction(VampirePCFaction)
   Player.SetAttackActorOnSight(False)
     
   ;Remove all abilities
   Player.RemoveSpell(DLC1VampireChange)
   Player.RemoveSpell(ABVampireSkills)
   Player.RemoveSpell(ABVampireSkills02)   
   Player.RemoveSpell(AbVampire01)
   Player.RemoveSpell(AbVampire02)
   Player.RemoveSpell(AbVampire03)
   Player.RemoveSpell(AbVampire04)
   Player.RemoveSpell(AbVampire01b)
   Player.RemoveSpell(AbVampire02b)
   Player.RemoveSpell(AbVampire03b)
   Player.RemoveSpell(AbVampire04b)
   Player.RemoveSpell(VampireDrain01)
   Player.RemoveSpell(VampireDrain02)
   Player.RemoveSpell(VampireDrain03)
   Player.RemoveSpell(VampireDrain04)
   Player.RemoveSpell(VampireRaiseThrall01)
   Player.RemoveSpell(VampireRaiseThrall02)
   Player.RemoveSpell(VampireRaiseThrall03)
   Player.RemoveSpell(VampireRaiseThrall04)
   ;Player.RemoveSpell(VampireStrength01)
   ;Player.RemoveSpell(VampireStrength02)
   ;Player.RemoveSpell(VampireStrength03)
   ;Player.RemoveSpell(VampireStrength04)
   Player.RemoveSpell(VampireSunDamage01)
   Player.RemoveSpell(VampireSunDamage02)
   Player.RemoveSpell(VampireSunDamage03)
   Player.RemoveSpell(VampireSunDamage04)
     
   Player.RemoveSpell(VampireCharm)
   ;Player.RemoveSpell(VampireCloak)
   Player.RemoveSpell(VampireInvisibilityPC)   
     
   ;Change player's race, defaults to Nord
   if (Player.GetRace() == ArgonianRaceVampire)
    Player.SetRace(ArgonianRace)
   elseif (Player.GetRace() == BretonRaceVampire)
    Player.SetRace(BretonRace)   
   elseif (Player.GetRace() == DarkElfRaceVampire)
    Player.SetRace(DarkElfRace)   
   elseif (Player.GetRace() == HighELfRaceVampire)
    Player.SetRace(HighElfRace)   
   elseif (Player.GetRace() == ImperialRaceVampire)
    Player.SetRace(ImperialRace)   
   elseif (Player.GetRace() == KhajiitRaceVampire)
    Player.SetRace(KhajiitRace)   
   elseif (Player.GetRace() == NordRaceVampire)
    Player.SetRace(NordRace)   
   elseif (Player.GetRace() == OrcRaceVampire)
    Player.SetRace(OrcRace)   
   elseif (Player.GetRace() == RedguardRaceVampire)
    Player.SetRace(RedguardRace)   
   elseif (Player.GetRace() == WoodElfRaceVampire)
    Player.SetRace(WoodElfRace)   
   endif

   ;Set the Global for stat tracking
   PlayerIsVampire.SetValue(0)
     
   ;make sure Hunter's Sight is gone
   Player.RemoveSpell(VampireHuntersSight)
     
EndFunction

Spell Property AbVampire01 Auto
Spell Property AbVampire02 Auto
Spell Property AbVampire03 Auto
Spell Property AbVampire04 Auto
Spell Property AbVampire01b Auto
Spell Property AbVampire02b Auto
Spell Property AbVampire03b Auto
Spell Property AbVampire04b Auto

Spell Property VampireDrain01 Auto
Spell Property VampireDrain02 Auto
Spell Property VampireDrain03 Auto
Spell Property VampireDrain04 Auto

Spell Property VampireRaiseThrall01 Auto
Spell Property VampireRaiseThrall02 Auto
Spell Property VampireRaiseThrall03 Auto
Spell Property VampireRaiseThrall04 Auto

Spell Property VampireStrength01 Auto
Spell Property VampireStrength02 Auto
Spell Property VampireStrength03 Auto
Spell Property VampireStrength04 Auto

Spell Property VampireSunDamage01 Auto
Spell Property VampireSunDamage02 Auto
Spell Property VampireSunDamage03 Auto
Spell Property VampireSunDamage04 Auto

Spell Property VampireHuntersSight Auto
Spell Property VampireCharm Auto
Spell Property VampireCloak Auto
Spell Property VampireInvisibilityPC Auto

Spell Property VampireCureDisease Auto

Spell Property ABVampireSkills Auto
Spell Property ABVampireSkills02 Auto

Spell Property DiseasePorphyricHemophelia Auto

GlobalVariable Property PlayerIsVampire  Auto    

Sound  Property MagVampireTransform01  Auto    

Spell Property DiseaseAtaxia auto
Spell Property DiseaseBoneBreakFever Auto
Spell Property DiseaseBrainRot Auto
Spell Property DiseaseRattles Auto
Spell Property DiseaseRockjoint auto
Spell Property DiseaseWitbane Auto
;Trap Diseases that also need to be removed
Spell Property TrapDiseaseAtaxia auto
Spell Property TrapDiseaseBoneBreakFever Auto
Spell Property TrapDiseaseBrainRot Auto
Spell Property TrapDiseaseRattles Auto
Spell Property TrapDiseaseRockjoint auto
Spell Property TrapDiseaseWitbane Auto
Spell Property TrapDiseasePorphyricHemophelia Auto

Message Property VampireStage4Message Auto

Quest Property VC01 Auto
FormList Property CrimeFactions  Auto    

SPELL Property DLC1VampireChange  Auto    

FormList Property DLC1CrimeFactions  Auto    

; used to check for player in vampire lord form
MagicEffect Property DLC1VampireChangeEffect Auto
MagicEffect Property DLC1VampireChangeFXEffect Auto

Уж наверное не зря в ванильной игре он существует...
Если лично Вы не создавали мод, влияющий именно на стадии вампиризма, а не на спеллы в стадиях, не пишите пожалуйста, я хотел бы услышать ответ на вопрос, даже если это делается не скриптом (в чем Вы совершенно уверены по непонятной причине) - ткните, пожалуйста, носом.

sansuli  Offline  Сообщение №130 написано: 9 февраля 2013, 15:13 | Отредактировано: sansuli - 9 февраля 2013, 15:22


The Red Sun


193
_Dark_Assassin_, то есть чтобы в течении всей игры после прохождения темного братства, стражники и люди отзывались о вас как об убийце (Эй я знаю кто ты... Слава Ситису)?

mOOnlyn, да смотрел я этот скрипт, да я неправильно понял чего вы хочешь, да я могу отредактировать этот скрипт под вашу идею. И обязательно надо было критиковать, типа ой не знаешь не говори не тыч носом и т.п.
Да PaukSama не прав, надеюсь вы это хотели прочитать.

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
mOOnlyn  Offline  Сообщение №131 написано: 9 февраля 2013, 15:45 | Отредактировано: mOOnlyn - 9 февраля 2013, 17:22



17
sansuli спасибо, но вопрос снимаю, сам уже разобрался. Метод тыка решает как всегда...
Не хотел никого обидеть, просто по природе спорщик :)

sansuli  Offline  Сообщение №132 написано: 10 февраля 2013, 06:36 | Отредактировано: sansuli - 10 февраля 2013, 06:11


The Red Sun


193
slastik, появился декомпилятор, смотри шапку темы

Добавлено (10.02.2013, 10:11)
---------------------------------------------
Snakesalamandra: додскажи пожалуйста как сделать скрипт если у цели заклятья есть шит то наноситься урон огнем а если нету то ненаносится?

По идее можно сделать это без скрипта, надо просто повесить условие Target Conditions на магический эффект наносящий урон. Но как то я не нашел условие фиксирующая экипированный щит. Но в скрипте такое условие есть, это GetEquippedShield(). Ну скрипт можно написать ща...

Snakesalamandra: помоги пожалуйста как сделать спелл чтобы при касте он давал доступ к удаленному сундука или контейнеру.Буду
очень благодарен за помощь.

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

Добавлено (10.02.2013, 10:36)
---------------------------------------------
Snakesalamandra, вот такой простой скрипт вешается на маг.эффект


Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Monroe  Offline  Сообщение №133 написано: 10 февраля 2013, 06:50



857
Цитата sansuli

Snakesalamandra: додскажи пожалуйста как сделать скрипт если у цели заклятья есть шит то наноситься урон огнем а если нету то ненаносится?


Не обязательно это писать в скрипте, можно в Condition прописать условие атаки при экипированной щите.

Snakesalamandra  Offline  Сообщение №134 написано: 10 февраля 2013, 07:28


СУЗИ


295
Цитата sansuli

Snakesalamandra: помоги пожалуйста как сделать спелл чтобы при касте он давал доступ к удаленному сундука или контейнеру.Буду
очень благодарен за помощь.

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



Так чтобы сундук стоял где то вне досягаемости а при касте ГГ получал к нему доступ напрямую из любого места.



Играю в Mass Effect 3, пишите в ЛС поиграем вместе!
sansuli  Offline  Сообщение №135 написано: 10 февраля 2013, 07:49 | Отредактировано: sansuli - 10 февраля 2013, 09:13


The Red Sun


193
Snakesalamandra, ага это вроде Бездонной торбы в Dragon Age, любопытно, я уже представляю что делать, но не уверен что это сработает...

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

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
_Dark_Assassin_  Offline  Сообщение №136 написано: 10 февраля 2013, 10:26


I returned...


363
sansuli,
Цитата sansuli

то есть чтобы в течении всей игры после прохождения темного братства, стражники и люди отзывались о вас как об убийце (Эй я знаю кто ты... Слава Ситису)?


Да, да, именно !

sansuli  Offline  Сообщение №137 написано: 10 февраля 2013, 10:34


The Red Sun


193
_Dark_Assassin_, я вот думал, надо найти скрипты (если они есть), которые отвечают за реакции НПС, и ковырнуть в них. Это самый простой способ.
Можно поменять в папке Sound голоса, то есть вместо фразы на мага вставить фразу ту самую. Но этот способ какой то нелепый, и долгий. Посмотрю есть ли такие скрипты.

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
_Dark_Assassin_  Offline  Сообщение №138 написано: 10 февраля 2013, 11:18


I returned...


363
sansuli, Спасибо, и ещё хотел узнать, можно ли увеличить урон от заклинания разрушения, молнии ?

sansuli  Offline  Сообщение №139 написано: 10 февраля 2013, 11:22


The Red Sun


193
_Dark_Assassin_, да легко, но это уже не скрипты, надо открыть заклинание и присвоить цифру в строке Magnitude

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
_Dark_Assassin_  Offline  Сообщение №140 написано: 10 февраля 2013, 11:27


I returned...


363
Цитата sansuli

_Dark_Assassin_, да легко, но это уже не скрипты, надо открыть заклинание и присвоить цифру в строке Magnitude


А где открывать ? я просто в этом лол :D

sansuli  Offline  Сообщение №141 написано: 10 февраля 2013, 11:33


The Red Sun


193
_Dark_Assassin_, ок, войди в Creation Kit, перейди по вкладам слева Magic >> Spell
Появится список заклинаний, найди ту самую, и открой ее. Откроется окно с магическими эффектами
Смотри скрин

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
_Dark_Assassin_  Offline  Сообщение №142 написано: 10 февраля 2013, 11:47 | Отредактировано: _Dark_Assassin_ - 10 февраля 2013, 11:54


I returned...


363
sansuli, Скачал Creation Kit, и что-то не запускает у меня ?
А куда, его кидать ?

sansuli  Offline  Сообщение №143 написано: 10 февраля 2013, 12:02


The Red Sun


193
_Dark_Assassin_, скидывай в папку с игрой

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
BigGreenDamo  Offline  Сообщение №144 написано: 11 февраля 2013, 05:49



7
PEX Decompile программа декомпиляции скриптов

странновато но прога не скачивается

sansuli  Offline  Сообщение №145 написано: 11 февраля 2013, 07:54


The Red Sun


193
BigGreenDamo, надо зарегистрироватся на Нексусе и нажать на Dawnload

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
SilverHAWK  Offline  Сообщение №146 написано: 11 февраля 2013, 13:22 | Отредактировано: SilverHAWK - 11 февраля 2013, 13:23



10
Хочу сделать так, чтобы после завершения задания через некоторое время (игровая неделя) какой-либо объект игрового мира "отключался", а другой, находящийся на его месте, но скрытый, активировался. Причем было бы неплохо реализовать так, что если на момент подключения плагина задание было завершено, то скрипт точно также запускался (та же неделя, те же изменения).
Понимаю, что для этого нужно всего лишь задать условие "если задание выполнено, то Reference.Enable()" и пр., но, в отличие от Construction Set, я не могу понять, как это сделать.
Реализация подобного есть в задании "Чудо природы"


Однако здесь мне непонятно, как осуществляется задержка перед изменением златолиста. Кроме того, запуск скрипта реализован в отдельном задании.
В расширенном виде:


Debug Trace. Не понимаю.
К тому же это все в "развернутом" виде. В свойствах скрипта указаны несколько параметров. Без них можно обойтись?

Может кто помочь?

sansuli  Offline  Сообщение №147 написано: 11 февраля 2013, 18:41 | Отредактировано: sansuli - 11 февраля 2013, 18:08


The Red Sun


193
Insomniac, задержку можно задать в настройке заклинания, скриптом тож можно.

SilverHAWK, с помощью свойства к скрипту приписываются различные обьекты, без них никак.

Пишем событие
If квест.GetStage() == Стокато
Обьект.Enable()
Обьект2.Disable()
RegisterForSingleUpdateGameTime()
EndIf
EndEvent

Event OnUpdateGameTime()
Обьект.Disable()
Обьект2.Enable()
квест.GstStage(Стокато)
EndEvent

А потом событие при достижении этого времени и начать квест снова.

Ну примерно как то так, я честно не знаю как убираются обьекты из мира, но знаю что они связаны с маркером который связан с квестом

Добавлено (11.02.2013, 22:41)
---------------------------------------------

Цитата sansuli

Напишите скрипт что бы
1.при попадании данной магии у НПС отключался АИ.
2.активировав предмет, попадаешь в другую локацию, а потом через X часов возвращался к активированому предмету, желательно в то же время в которое ушел


Когда то я это задал, но ответ не появился, а сейчас я знаю ответ, но это мне не нужно уже, смешно))

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
mOOnlyn  Offline  Сообщение №148 написано: 11 февраля 2013, 22:36



17
Первоначально задавал свой вопрос в тему "Вопросы по Creation Kit" так как не знал точно куда обратиться, переадресовываю сюда.

Цитата mOOnlyn

Перекопал все скрипты даунгварда, в названии которых присутствует "vamp" или "vampire", так и не нашел скрипта в ктором прописано перевоплощение в лорда, скорее всего проглядел, скриптов пруд пруди, если кто наткнется - сообщите пожалуйста.


Во время повторного более подробного изучения папки скриптов Даунгварда обнаружил скрипт "DLC1PlayerVampireChangeScript". Кто хорошо в скриптах разбирается - подскажите, пожалуйста, можно ли добиться желаемого, внеся изменения в него, и не вылезут ли какие-то конфликты с другими вампирскими скриптами при внесении этих изменений?

Добавлено (12.02.2013, 02:36)
---------------------------------------------
Покопался в этом и связанным с ним скриптах, что-то мне больше не улыбается туда лезть, слишком много взаимозависимостей, трудно мне за всем этим уследить, от идеи отказываюсь, пусть будет чучело, однако если кто сделает на досуге - буду очень благодарен.


sansuli  Offline  Сообщение №149 написано: 12 февраля 2013, 02:24


The Red Sun


193

Вот поменяй эту функцию, если не получится то поставь перед этой строкой ; , чтобы скрипт его не читал

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
mOOnlyn  Offline  Сообщение №150 написано: 12 февраля 2013, 02:42 | Отредактировано: mOOnlyn - 12 февраля 2013, 02:49



17
Цитата sansuli

Вот поменяй эту функцию


В этом же скрипте чуть ниже так же пишется что персонажа раздевают и одевают в одежду лорда-вампира, это раз, в некоторых соседних скриптах встречаются условия - "если игрок расы вампира-лорда, то 1, 2 и 3", следовательно эти условия не сработают, это два. Найти все подобные взаимозависимости трудно при большом количестве и объеме прочесываемых скриптов. И в данном случае мало пролистать скрипты по ключевым словам, надо еще понять каждую строку скрипта, в котором они встретились, чтобы отследить второстепенные эффекты им (скриптом) оказываемые дабы избежать несоответствий. Думаю, мне проще не пользоваться формой лорда-вампира. :)

Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)
Поиск:





Ответ на жалобу смотрите в разделе жалоб