【MOD】A Really Useful Lullian Harquebus 安眠轮之改造安眠枪
vivec吧
全部回复
仅看楼主
level 12
ysლrk 楼主
百度网盘
花了窝三天终于完成了:一把真正安全有用的安眠枪。
使用方法:解压覆盖安眠轮mod的1.3补丁。
2014年12月29日 13点12分 1
level 12
ysლrk 楼主
安眠轮mod主线最终奖励安眠枪"Lullian Harquebus"在我的电脑上稳定地导致游戏跳出。
最初我以为是它身上的script导致崩溃,花了两天时间想尽各种方法来改,最终才发现是模型原因。那就没办法只有放弃原来的模型了。不过它的script本来也是bug的。于是这就是我的改造版。下面慢慢介绍特点~
2014年12月29日 13点12分 2
level 12
ysლrk 楼主
7. 虽然后来确认原版安眠枪的script不是导致游戏跳出的元凶,但script本身明显是bug的。
Trainwiz很厚道地在他的bsa文件里提供了所有script的源代码。虽说安眠枪附带的script的源代码psc文件不是用来编译真实pex代码文件的,但结构大致相同。
总的来说毛病是,在Event OnEquipped(actor)时给玩家添弹药,而不是给真正装备这件武器的actor添弹药,Event OnUnequipped(actor)也是同样的毛病。
这可能是他为了避免卡死做出的调整,因为在Event OnEquipped(actor)中给对象actor添加物品是很危险的:NPC每次被增添新物品时都会自动卸下旧物品重新装备一遍,然后这个Event就又启动了一次,又添加一次,然后陷入无限循环直到卡死。要避免这个问题也不是很难,在additem之前设定个条件终止第二次迭代就好了。
不过要真这么简单就好了。问题还是NPC的AI干扰我们的设定。安眠枪这个设定的思路是在装备上手时自动添加并装备弹药,但NPC会选择自己的武器,如果他们物品栏内没有弹药根本就不会装备这件武器,除非这是他们唯一的武器。即使在这种情况下,NPC装备武器后,script自动添加弹药又会导致NPC卸下武器。虽然游戏的算法(我也不知道是怎么做到的)瞬间就能化解这个矛盾,但经常结果是NPC装备上隐形武器,注册了这件物品已装备,拔武器有对应的音效和动作,但武器不显示,也无法正常使用。虽然再给NPC重新卸下再装备武器数次后还是能修复这个问题,但这当然是个不能让人满意的解决方案。
总之试了很多其它策略之后,我最终还是决定将NPC和玩家区分对待。具体可以看"_LullHarqScript",我也提供了源代码psc文件,直接就能打开。总之如果是玩家装备上安眠枪,在这时添加并装备弹药,玩家卸下安眠枪时移除弹药。但如果是NPC,则在安眠枪进入他们物品栏时添加弹药,在装备该武器时通过一个法术效果开启"_LullHarqRegenScript",每隔8秒监测是否需要补充弹药(顺便修补一个NPC不愿使用安眠弹药的问题),然后在安眠枪离开NPC物品栏时移除所有多余弹药。总而言之NPC能跟玩家一样拥有无尽的弹药且相当情愿地使用,不过玩家通过重新装备安眠枪的方式补充弹药,而NPC是自动补充。
Trainwiz的源代码中是有给玩家自动补充弹药的设定,但我觉得没必要且占资源。
8. 原版安眠枪是自动添加900发弹药,我觉得没必要,因为根本用不完。我一次添加108发,因为正常一轮6发总共18轮,或者按住连射18发6回。
9. 说道连射,因为箭术的快射perk影响这个script,所以在装备机关枪时自动移除了快射perk,在卸下武器后自动点回。我修改的安眠枪沿用了机关枪的连射script所以当然也要移除快射perk,所以如果不小心发现丢了这个perk不要紧张也千万不要浪费其它perk去补它。
如果以后有时间我想修改一下这个自动连射的script,因为我感觉实际射击间隔不是很稳定,然后希望能找到方法同时保留单射功能,这样就不用杀只雪鼠也耗六法子弹了。
2014年12月29日 15点12分 5
level 12
ysლrk 楼主
4楼是我抽掉的,手抖发早了。
楼上没说清楚,psc源代码文件用记事本就能直接打开。
然后就这么多了~
总之这算是我第一个正经编程作品吧,虽然都是很基础的东西,但还是忙了三天,其实第一天就想放弃的因为还有篇论文要赶。
不过Papyrus这个专门为TESV编写的编程语言还是挺有趣的,比如其它语言大概都会用anActor就它要说akActor~~
2014年12月29日 15点12分 6
level 13
这个是,,,五代的?
2014年12月30日 10点12分 9
是the Wheels of Lull这个mod的mod~
2014年12月30日 19点12分
level 15
if (length>2000):
print("too long no see")
goToComment()
[滑稽]
2015年01月01日 17点01分 10
do; _melkor.enlarge(1); while (_melkor.length < 6);
2015年01月01日 23点01分
回复 Nordendrache :[狂怒]
2015年01月02日 04点01分
level 12
ysლrk 楼主
[无效] http://pan.baidu.com/s/1hq1lpVe
再次更新~ 这次取消了上膛过程 真正成为全自动的枪。并加入了盾牌的脚本 用它盾击会有跟盾牌同样的效果~~
我发誓这是最后一次更新了。。。
2015年01月02日 08点01分 11
level 12
@249乙
温润如玉,奈何红尘旧梦,谁念桥边红药;
雅致如瓷,怎敌世事沧桑,你已不知何处。
2015年03月04日 14点03分 14
1