用户登录
|忘记密码

新用户注册

登录

其他登陆



自动杀死移动Screenshots

作者:comfortzone
发布:kyron2013
发布日期:2020-04-21 09:42:37
更新时间:2020-04-21 09:42:37
头像
3012
1404 人收藏
4779 次下载
12444 次浏览
1.0
上古卷轴5:重置版
本地下载 高速下载 需要优先下载下载器,50%提速

介绍

在玩Skyrim LE时,我使用了类似的mod,但是该mod从未移植到Skyrim SE。然后其他人为SE制作了类似的mod,但从未更新到游戏v1.5.97。因此,我决定尝试自己制作。

该工具会在击杀移动事件上激活,并拍摄一系列(希望非常酷)的屏幕截图。它包含一个带有ESL标志的ESP插件,一些脚本和SKSE DLL插件。有三种获取屏幕截图的方法。默认的只需要SKSE(但可能会有点慢),另外两个需要我的DLL插件(但快得多)。下面更多有关它们的信息。通过MCM可以配置mod。


警告

当我开始制作这个mod时,我几乎不知道如何用同样小的Papyrus脚本制作一个小的esp插件。很快我的超级简单的想法就没用了,我必须学习很多新东西才能实现它。当我完成时,我编译了我的第一个SKSE DLL插件,并且知道如何在运行时加载Steam库以使用其API(wtf)。那是一次冒险,我随行而学。在发布之前,我已尽可能全面地测试了此mod,但我仍将其视为Alpha版本。主要是因为我缺乏这种编程的经验。如果您想尝试,请备份您的保存。


可用模式

打印屏幕模式

这很简单。通过SKSE功能Input.TapKey,它基本上为您按下了Print Screen键。除了SKSE之外,它没有任何依赖关系,但是它的主要缺点是速度。每个屏幕截图都会产生明显的滞后,并且根据其他设置,它可以将您的kill cam变成幻灯片。尽管它仍然有效,但屏幕快照保存没有问题。因此,如果您可以忍受这种口吃,请随时使用。图像将保存到游戏的安装目录(文件名ScreenShot <index> .png)。这是默认模式。


ENB热键模式

此工作方式类似于PrintScreen模式,但需要我的DLL才能工作。用SKSE函数调用热键时,ENB不会注册该热键。因此,我不得不在C ++中创建较低级别的按键事件。此模式下屏幕快照之间的时间间隔的最小值为1秒,因为ENB会根据当前日期和时间创建名称精确到秒的图像文件。它比PrintScreen方法快得多,不会造成任何卡顿现象。您需要在MCM中提供ENB屏幕快照热键(默认情况下为插入)。图像将保存到游戏的安装目录(文件名enb <日期> <时间> .bmp)。当然,它需要ENB。否则,按热键将不会触发任何操作。


蒸汽覆盖模式

可以说这是最有趣的,因为它不模拟任何按键。而是,DLL插件在运行时加载steam_api64.dll并直接使用Steam API触发屏幕截图。此方法非常快速,您的屏幕快照可在Steam中立即显示,易于共享。但是,这花费了我最长的时间才能开始工作,而且该实现对我来说还颇为试验。它在我的机器上工作从未失败过,但是我不能保证任何事情。我在mod中内置了很多检查和验证功能,因此,如果无法成功加载库(或发生其他一些问题),您应该立即收到通知。当然,此方法需要启用Steam覆盖。您在Steam中设置的屏幕快照热键无关紧要。


附加配置

MCM中可用的其他设置:

切换整个mod-允许关闭和打开mod。如果您打算卸载该mod,请取消选中它并保存。如果先关闭然后再打开,它将把所有MCM设置重置为默认值。

暂停模组-允许暂时暂停模组。取消暂停后,设置将不会重置。

测试当前设置-无需触发终止凸轮即可测试当前设置。检查并退出MCM之后,脚本将制作3张测试屏幕截图。

启动延迟-您可以将第一个屏幕截图延迟最多2秒。每个系列的屏幕截图更少。

时间间隔-每个屏幕截图之间经过了多少时间。最小值取决于模式:PrintScreen为0.5,ENB为1.0(上述原因),Steam覆盖为0.2。

ENB热键(仅在ENB模式下)-您需要设置与ENB配置中相同的热键。 ENB中设置的修饰键无关紧要,它不用于屏幕截图。支持的密钥有限制。您在ENB config中有很多可能的键需要设置,我的模块支持大多数但不是全部。您可以在配置菜单的屏幕截图中查看更多信息。 (如果您尝试映射不支持的密钥,则会收到通知。)


正在安装

与您的MOD管理。切记在安装之前备份您的保存文件,以防万一。


解除安装

我尽力提供一种干净的卸载方式,并在轻载和重载订单上对其进行了测试。

在MCM中关闭Mod。它将停止任务并注销事件。

充分保存

e。

停用模组。

从步骤2加载保存。您将收到有关缺少esp的通知,这很正常。

一切都应该没事,请保存干净。


常问问题

我发现了一些可怕的错误。

就像我提到的那样,我已经对其进行了广泛的测试,但是有许多可能的设置,但我无法说明所有这些设置。请返回您的备份保存并进行错误报告。我会尽力修复它。


我在配置菜单中发现了一些奇怪/稀奇/有趣的内容。

这是我第一次制作MCM。我可能错过了一些东西。请提交错误报告,我将尝试尽快修复它。


为什么要限制ENB热键支持的键?不支持我的热键!

通过将DXScanCodes转换为虚拟键,幕后发生了一些事情。我对此有很多问题,因此我对某些键子集进行了自己的映射。我认为可用的密钥就足够了,但是如果您真的很关心密钥是否包含在内,请在评论中告诉我。


您为什么不使插件版本独立?

我确实很想这么做,但是我实在太菜鸟不懂如何做。在我的插件中,我没有使用游戏中的任何地址。我的插件完全不与游戏互动。它只是注册函数,以便可以从Papyrus脚本中调用它们。我不确定如何在这种情况下使用地址库。我在地址库的模块页面上发表了评论,但没有获得任何关注。如果您让我知道该怎么做,我会很乐意这样做。或者,您可以自己修改插件:权限是开放的,包括源代码。


已知的问题

MCM的ENB模式下的“映射打印屏幕”将导致该键显示为Num /。我不知道为什么会发生,似乎只用此键才能发生。它仍然可以工作。

屏幕截图中会显示来自诸如浮动健康条和浮动伤害之类的mod的信息。它不会像其他HUD一样被隐藏。不知道是否有什么办法可以解决。

您可能需要稍微调整一下时间设置才能获得一些很酷的屏幕截图。有时他们会变得模糊/没那么有趣。我还是喜欢。

在Papyrus中没有直接的OnKillMove事件。我的解决方法是注册播放器相机更改事件并对该事件进行检查。如果摄像头的状态为2(从技术上来说是VATS),则我的mod会激活,但是在Skyrim中,这基本上是致命的摄像头。我还使用Player.IsInKillMove()方法进行检查。如果这两个中的任何一个为true,则脚本将触发。通过这种混合检查,我能够捕获标准的剑/斧头/任何杀死凸轮,第一人称杀死凸轮和双重挥动技能杀死凸轮。但是仍然可能会有某种类型的杀手行动会通过。

记录

如果您在使用ENB或Steam覆盖模式时遇到麻烦,检查DLL插件的日志可能会很有用。它已保存到My Games \ Skyrim特别版\ SKSE目录(AutoScreenshotPlugin.log)。如果插件的日志为空(没有关于成功加载的消息),则意味着它甚至没有加载。


如果您决定尝试该mod并获得了一些不错的屏幕截图,请随时在此处上传它们:)。我很想见他们。



以下是有助于我制作此mod的资源列表:

Creation Kit Wiki上的SKSE插件创建文章

GitHub上的SKSE插件创建教程-从这里我可以下载带有示例插件的VS项目

GitHub上的MCM快速入门

r / skyrimmods在reddit上

Steamworks API概述

下载Steamworks SDK(您可以使用Steam Store凭证登录)

————————————————————————————————————————
Introduction
I used a similar mod when I was playing Skyrim LE, but that mod never got ported to Skyrim SE. Then someone else made a similar mod for SE, but it never got updated to v1.5.97 of the game. So I decided to try and make it myself.
This tool activates on the kill move event and takes a series of (hopefully really cool) screenshots. It consists of an ESL-flagged ESP plugin, some scripts, and SKSE DLL plugin. There are available three methods of taking screenshots. The default one requires only SKSE (but can be a bit slow), the other two require my DLL plugin (but are much faster). More about them below. Configuration of the mod is possible through the MCM.

Warning
When I started making this mod, I barely knew how to make a small esp plugin with, an equally small, Papyrus script. It turned out very soon that my super simple idea was not going to work and I would have to learn a bunch of new things to make it happen. When I was finishing, I had my first SKSE DLL plugin compiled and knew how to load Steam library at runtime in order to use its API (wtf). It was an adventure and I learnt as I went. I tested this mod as thoroughly as possible before publishing it, but I still consider it an alpha release. Mainly because of my lack of previous experiences with this type of programming.Backup your save if you want to try it out.

Available modes
PrintScreen mode
This one is very simple. It basically presses a bunch of times the Print Screen key for you with SKSE function Input.TapKey. It doesn't have any dependencies besides SKSE, but its main drawback is speed. Every screenshot creates a noticeable lag and, depending on other settings, it can turn your kill cam into a slideshow. It still works though, screenshots are saved without a problem. So if you can live with that stuttering, feel free to use it. Images are saved to the game's install directory (filename ScreenShot<index>.png). It's the default mode.

ENB hotkey mode
This works similar to the PrintScreen mode, but requires my DLL to work. ENB wouldn't register the hotkey when it was invoked with SKSE function. So I had to create the key press event on lower level, in C++. The lowest value for time interval between screenshots in this mode is 1 second, because ENB creates image files with names based on current date and time with precision to the second. It's much faster than the PrintScreen method, shouldn't cause any stuttering. You need to provide your ENB Screenshot hotkey in the MCM (Insert by default). Images are saved to the game's install directory (filename enb<date><time>.bmp). It requires ENB, of course. Otherwise the hotkey press won't trigger anything.

Steam overlay mode
This one is arguably the most interesting, because it doesn't simulate any key presses. Instead the DLL plugin loads steam_api64.dll at runtime and uses Steam API directly to trigger screenshots. This method is very fast and your screenshots are instantly visible in Steam, easy to share. But it took me the longest time to get working and the implementation feels rather experimental to me. It never failed to work on my machine, but I can't guarantee anything. I've built in a lot of checks and validation into the mod, so if loading the library won't be successful (or some other problems happen), you should immediately receive a notification. This method requires Steam overlay to be on, of course. Your screenshot hotkey set in Steam doesn't matter.

Additional configuration
Additional settings available in the MCM:

Toggle the entire mod - allows turning mod off and on. Uncheck it and save if you plan to uninstall the mod. If you turn it off and then on again, it will reset all MCM settings to default.

Pause the mod - allows temporarily pausing the mod. The settings won't get reset after unpausing.

Test current settings - allows testing current settings without the need to trigger the kill cam. After checking it and exiting the MCM, the script will make 3 test screenshots.

Start delay - you can delay the first screenshot up to 2 seconds. Will result in less screenshots per series.

Time interval - how much time passes between each screenshot. Minimum depends on the mode: 0.5 for PrintScreen, 1.0 for ENB (reason explained above), and 0.2 for Steam overlay.

ENB hotkey (only in ENB mode) - you need to set the same hotkey as in your ENB config. The modifier key set in ENB doesn't matter, it's not used for screenshots. There are limitations to supported keys. You have a lot of possible keys to set in ENB config, my mod supports most of them but not all. You can see more info in the screenshots of config menu. (You'll get a notification if you try to map an unsupported key.)


Installing
With your mod manager. Remember to backup your save before installing, just in case.

Uninstalling
I did my best to provide a clean way of uninstalling and tested it on both light and heavy load order.

Turn the mod off in the MCM. It will stop the quest and unregister for events.

Make a full save.

Deactivate the mod.

Load the save from step 2. You will get notification about a missing esp, that is normal.

Everything should be ok, make a clean save.


FAQ
I have found some awful bug./ Nothing works for me.
Like I mentioned, I tested it extensively but there are many possible setups and I can't account for all of them. Please go back to your backed up save and make a bug report. I will do my best to fix it.

I have found something weird/ wonky/ funny in the config menu.
This was my first time making the MCM. It's possible I have missed something. Please make a bug report, I'll try to fix it ASAP.

Why are you restricting supported keys for ENB hotkey? My hotkey is not supported!
There is some fuckery going on behind the scenes with converting DXScanCodes to virtual keys. I had a lot of problem with this so I made my own mapping of the certain subset of keys. In my opinion the available keys are enough, but if you really care about your key being included, let me know in the comments.

Why didn't you make the plugin version independent?
I really wanted to, but I'm too much of a noob to understand how. In my plugin, I'm not using any addresses from the game. My plugin doesn't interact with the game at all. It just registers the functions so they can be called from Papyrus script. I'm not sure how to use the Address Library in this context. I have left a comment on the modpage of Address Library but it didn't gain any traction. If you let me know how to do it, I'll gladly do it. Or you can modify the plugin yourself: permissions are open, source is included.

Known issues

Mapping Print Screen in the MCM for the ENB mode will result in the key being shown as Num/. I have no idea why it happens, seems to only happen with this key. It still works though.

Info from mods like floating health bars and floating damage will be visible on the screenshots. It doesn't get hidden like the rest of the HUD. Not sure if there's anything that can be done to fix this.

You probably will have to tinker with timing settings a bit to get some cool screenshots. Sometimes they can come out blurry/ not that interesting. I still like it though.

There's no straightforward OnKillMove event in Papyrus. My workaround is to register for player camera change event and make checks on that event. My mod activates if the camera state is 2 which technically is VATS, but in Skyrim that's basically the kill cam. I also make check with the Player.IsInKillMove() method. If either of those 2 is true, the script fires. With this mixture of checks I was able to catch standard sword/axe/ whatever kill cam, first person kill cam and dual wielding spells kill cam. But there still could be some type of kill move that will slip through.

Log
If you have troubles with ENB or Steam overlay mode, it might be useful to check the DLL plugin's log. It's saved to My Games\Skyrim Special Edition\SKSEdirectory (AutoScreenshotPlugin.log). If the plugin's log empty (there's no message about successful load inside), then it means it didn't even load.

If you decided to try this mod out and got some nice screenshots, feel free to upload them here :). I'd love to see them.


Here's a list of sources that helped me immensely in making this mod:

SKSE Plugin Creation article on the Creation Kit Wiki

SKSE Plugin Creation tutorial on GitHub - from here I could download VS project with an example plugin

MCM Quickstart on GitHub

r/skyrimmods on reddit

Steamworks API Overview

Download Steamworks SDK (you can login with Steam Store credentials)


原贴地址
1.版本号: 1.0   更新时间: 2020-04-21 09:51:55

选择快速回复类型:
  • 感谢
  • 支持
  • 疑问
  • 卖萌
  • 关心
  • 傲娇
评论


    作者精品
    logo

    自动杀死移动Screenshots


    Mod大小:92.03KB
    上传时间:2020-04-21 09:42:38

    Mod简介:

    暂无更多介绍

    本地下载
    选择快速回复类型:
    • 感谢
    • 支持
    • 疑问
    • 卖萌
    • 关心
    • 傲娇
    回复

    closeAD