查看: 93|回复: 3
收起左侧

[求助咨询] 炮台法术脚本问题。

[复制链接]

1

主题

159

帖子

3135

积分

超级玩家

Rank: 6Rank: 6

点赞
0
贡献
2
猫币
0
精华
0
金元
2956
积分
3135
发表于 2020-7-16 11:14:28 | 显示全部楼层 |阅读模式
100金元
在进入主题之前,我必须提到这一点。我引用了Beyond Reach(https://www.nexusmods.com/skyrim/mods/48467)和VIGILANT(https://www.nexusmods.com/skyrim/mods/67103)来制作新脚本,因此样式和变量名称与脚本中使用的作者相同。
炮塔有时不会开火,或在错误的时间开火(在启用魔术效果的同时,我设定为每1秒开火,但有时需要3-5秒)。我以为这是因为敌人不在搜索区域内,所以我试图增加搜索半径并使敌人尽可能靠近炮塔。但是,炮塔有时会向敌人施放法术,但有时不会。
我尝试使用CasterActor.GetCombatTarget()代替使用FindRandomActorFromRef。我试图将CasterActor.GetCombatTarget()放在事件OnEffectStart中。这只对一个敌人有用。如果魔法效果已经开始,即使我的准星瞄准器指向另一个敌人,炮塔也不会改变目标。另外,如果在魔术效果开始之前敌人的瞄准点没有对准前瞄准器,那么即使您稍后将瞄准器的瞄准点对准敌人,炮塔也会在其他地方而不是敌人的目标上施法。 (我猜魔术弹的方向取决于我如何设置炮塔角度,但是即使我已经阅读了Creation Kit Wiki,也对此一无所知)
我还尝试将CasterActor.GetCombatTarget()放在Event OnUpdate中。然后我必须保持瞄准镜的交叉以指向敌人的目标之一。如果在魔术效果期间没有指向任何演员,则炮塔将在其他地方施放咒语.........
我认为FindRandomActorFromRef比CasterActor.GetCombatTarget()更好,只是可以解决时间问题……(因此,我确实需要帮助,非常感谢您抽出宝贵时间阅读这篇长文章和您的建议)。
以下是脚本:

import weather
import utility
import game
;======================================================================================;
;  PROPERTIES  /
;=============/
Float Property CastHeight = 256.0 auto
Float Property fBaseRandom = 512.0 auto
Float Property fBaseTime = 1.0 auto
Float Property SpellRadius = 2000.0 auto

activator property PlacedActivator auto

Spell property SpellRef auto



;======================================================================================;
;  VARIABLES   /
;=============/


objectReference ActivatorRef3

bool KeepUpdating = true
Actor CasterActor
Actor TargetActor
Float PosX
Float PosY  
Float PosZ
Float TPosX
Float TPosY  
Float TPosZ


Actor player

;======================================================================================;
;   EVENTS     /
;=============/

Event OnEffectStart(Actor Target, Actor Caster)

回复

使用道具 举报

1

主题

159

帖子

3135

积分

超级玩家

Rank: 6Rank: 6

点赞
0
贡献
2
猫币
0
精华
0
金元
2956
积分
3135
 楼主| 发表于 2020-7-16 11:15:45 | 显示全部楼层
脚本没有发完全,以下:
import weather
import utility
import game
;======================================================================================;
;  PROPERTIES  /
;=============/
Float Property CastHeight = 256.0 auto
Float Property fBaseRandom = 512.0 auto
Float Property fBaseTime = 1.0 auto
Float Property SpellRadius = 2000.0 auto

activator property PlacedActivator auto

Spell property SpellRef auto



;======================================================================================;
;  VARIABLES   /
;=============/


objectReference ActivatorRef3

bool KeepUpdating = true
Actor CasterActor
Actor TargetActor
Float PosX
Float PosY  
Float PosZ
Float TPosX
Float TPosY  
Float TPosZ


Actor player

;======================================================================================;
;   EVENTS     /
;=============/

Event OnEffectStart(Actor Target, Actor Caster)
                CasterActor = Caster
                TargetActor = Target

                ActivatorRef3 = TargetActor.placeAtMe(PlacedActivator)
                PosX = TargetActor.GetPositionX()
                PosY = TargetActor.GetPositionY()
                PosZ = TargetActor.GetPositionZ()
                ActivatorRef3.SetPosition(PosX,PosY,PosZ)
                Game.GetCombatTarget

                PosZ = (PosZ + CastHeight)
                ActivatorRef3.SetPosition(PosX,PosY,PosZ)
                ActivatorRef3.SetAngle(0,0,0)

                RegisterForSingleUpdate(0.5)
EndEvent


Event OnUpdate()
        Actor Enemy = Game.FindRandomActorFromRef(CasterActor, SpellRadius)
        If Enemy == none
       
        elseIf Enemy != CasterActor && Enemy.Ishostiletoactor(CasterActor) && Enemy.Isdead() != 1 && ActivatorRef3.isdisabled() != 1
                SpellRef.remotecast(ActivatorRef3, CasterActor, Enemy)
        endif

        RegisterForSingleUpdate(fBaseTime)
endEvent


Event OnEffectFinish(Actor Target, Actor Caster)
        if ActivatorRef3 != none
                ActivatorRef3.disable()
                ActivatorRef3.delete()
        endif
EndEvent
回复

使用道具 举报

1

主题

61

帖子

1199

积分

中级玩家

Rank: 3Rank: 3

点赞
0
贡献
2
猫币
0
精华
0
金元
1118
积分
1199
发表于 2020-7-20 00:30:28 | 显示全部楼层
自顶一下
回复

使用道具 举报

1

主题

61

帖子

1199

积分

中级玩家

Rank: 3Rank: 3

点赞
0
贡献
2
猫币
0
精华
0
金元
1118
积分
1199
发表于 2020-7-20 00:33:34 | 显示全部楼层
自顶一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|玖大猫论坛

GMT+8, 2025-11-22 07:36

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.