MOD心得,不算教程,但也可以算教程。
暂不详细介绍脚本如何写。
BEGIN GameMode
If ( Player.GetHealthPercentage < 0.25 ) && (Player.IsInCombat == 1)
If ( Player.IsHardcore == 1 ); Check for Hardcore mode and heal-over-time effect.
If ( Player.HasMagicEffect RestoreHealth == 0); Player doesn't have Stimpak in his system (Hardcore only).
If ( Player.GetItemCount NVDLC04AutoInjectSuperStimpak > 0 )
ShowMessage NVDLC04AutoInjectSuperStimpakUsedMSG;
PlaySound NPCHumanUsingStimpak;
Player.CastImmediateOnSelf NVDLC04AutoInjectSuperStimpak;
Player.RemoveItem NVDLC04AutoInjectSuperStimpak 1;
EndIf
Endif
Else
If ( Player.GetItemCount NVDLC04AutoInjectSuperStimpak > 0 )
ShowMessage NVDLC04AutoInjectSuperStimpakUsedMSG;
PlaySound NPCHumanUsingStimpak;
Player.CastImmediateOnSelf NVDLC04AutoInjectSuperStimpak;
Player.RemoveItem NVDLC04AutoInjectSuperStimpak 1;
EndIf
EndIf
超级版的脚本,一句句注释。
If ( Player.GetHealthPercentage < 0.25 ) && (Player.IsInCombat == 1) ;两个条件,如果玩家血量在25%以下且在战斗时,与潜行服MKII一样,不在战斗不会给你乱打针。
If ( Player.IsHardcore == 1 ) ; Check for Hardcore mode and heal-over-time effect. 检查是否是硬核模式,此变量同时还会附带检查是否已经有同类效果,但是下方已经有检查回血变量存在的条件了,不知道具体原理,也许注释写错了。
If ( Player.HasMagicEffect RestoreHealth == 0 ) ; Player doesn't have Stimpak in his system (Hardcore only).硬核模式下独有的条件,是否存在回血效果,也即治疗针打针效果。
If ( Player.GetItemCount NVDLC04AutoInjectSuperStimpak > 0 ) ;检测玩家背包里面是否有自动注射超级治疗针,只能大于0,不能等于0。
ShowMessage NVDLC04AutoInjectSuperStimpakUsedMSG;左上角弹出的使用信息。
PlaySound NPCHumanUsingStimpak;播放打针音效。
Player.CastImmediateOnSelf NVDLC04AutoInjectSuperStimpak;立即对玩家使用【自动注射超级治疗针】,这个castimmediateonself语句,wiki上说是无前摇应用actor effect,辐射4的手动打针有打针动画也一定程度说明这句话被“曲线应用”了。
Player.RemoveItem NVDLC04AutoInjectSuperStimpak 1;看起来上一句cast巴拉巴拉语句不会导致物品被使用掉,所以要用这一段移除,所以这也是左上角会同时弹出这根针被【移除】的消息,而不是正常使用掉,如果正常使用掉,那么是不会弹消息的。
好,硬核模式段落结束。中间有一段ELSE,如果分段正确的话,它的作用是针对
If ( Player.IsHardcore == 1 ) ; Check for Hardcore mode and heal-over-time effect.
这一句进行分部分。因为脚本要执行一套,需要如此格式:
首先begin然后末尾写end,这是一整个脚本的第一大前提。
然后里面有分支结果,就用if……endif,没有例外。但如果你想if中间有第二个结果,就夹杂一个else,形成if……else……endif格式。
基本上并不复杂,把if……endif看成一个大括号即可,它包了这句里面所有内容,不得将内容写出这两端之外,否则geck不让保存。如果看不懂的话,横着看,然后将if与endif替换成左右括号,应该就懂了。
第二段跟硬核模式的内容基本一样,只是少了一个判断回血效果存在与否的语句。不再多解释。
但是光靠脚本是无法常时执行的,否则很多脚本都会同时执行,游戏连运行都做不到就炸了,所以我们需要一个actor。这个actor不是指“演员”,而是启动器的意思,只有通过它,大部分脚本才能执行,从NPC到PERK到任务,都算作在内。
NPC和PERK都不能算完全的常时执行,我们要的效果是从米歇尔床上醒来就在执行了,所以这里要用到任务quest。自动注射就是这种做法。
暂不详细介绍脚本如何写。
BEGIN GameMode
If ( Player.GetHealthPercentage < 0.25 ) && (Player.IsInCombat == 1)
If ( Player.IsHardcore == 1 ); Check for Hardcore mode and heal-over-time effect.
If ( Player.HasMagicEffect RestoreHealth == 0); Player doesn't have Stimpak in his system (Hardcore only).
If ( Player.GetItemCount NVDLC04AutoInjectSuperStimpak > 0 )
ShowMessage NVDLC04AutoInjectSuperStimpakUsedMSG;
PlaySound NPCHumanUsingStimpak;
Player.CastImmediateOnSelf NVDLC04AutoInjectSuperStimpak;
Player.RemoveItem NVDLC04AutoInjectSuperStimpak 1;
EndIf
Endif
Else
If ( Player.GetItemCount NVDLC04AutoInjectSuperStimpak > 0 )
ShowMessage NVDLC04AutoInjectSuperStimpakUsedMSG;
PlaySound NPCHumanUsingStimpak;
Player.CastImmediateOnSelf NVDLC04AutoInjectSuperStimpak;
Player.RemoveItem NVDLC04AutoInjectSuperStimpak 1;
EndIf
EndIf
超级版的脚本,一句句注释。
If ( Player.GetHealthPercentage < 0.25 ) && (Player.IsInCombat == 1) ;两个条件,如果玩家血量在25%以下且在战斗时,与潜行服MKII一样,不在战斗不会给你乱打针。
If ( Player.IsHardcore == 1 ) ; Check for Hardcore mode and heal-over-time effect. 检查是否是硬核模式,此变量同时还会附带检查是否已经有同类效果,但是下方已经有检查回血变量存在的条件了,不知道具体原理,也许注释写错了。
If ( Player.HasMagicEffect RestoreHealth == 0 ) ; Player doesn't have Stimpak in his system (Hardcore only).硬核模式下独有的条件,是否存在回血效果,也即治疗针打针效果。
If ( Player.GetItemCount NVDLC04AutoInjectSuperStimpak > 0 ) ;检测玩家背包里面是否有自动注射超级治疗针,只能大于0,不能等于0。
ShowMessage NVDLC04AutoInjectSuperStimpakUsedMSG;左上角弹出的使用信息。
PlaySound NPCHumanUsingStimpak;播放打针音效。
Player.CastImmediateOnSelf NVDLC04AutoInjectSuperStimpak;立即对玩家使用【自动注射超级治疗针】,这个castimmediateonself语句,wiki上说是无前摇应用actor effect,辐射4的手动打针有打针动画也一定程度说明这句话被“曲线应用”了。
Player.RemoveItem NVDLC04AutoInjectSuperStimpak 1;看起来上一句cast巴拉巴拉语句不会导致物品被使用掉,所以要用这一段移除,所以这也是左上角会同时弹出这根针被【移除】的消息,而不是正常使用掉,如果正常使用掉,那么是不会弹消息的。
好,硬核模式段落结束。中间有一段ELSE,如果分段正确的话,它的作用是针对
If ( Player.IsHardcore == 1 ) ; Check for Hardcore mode and heal-over-time effect.
这一句进行分部分。因为脚本要执行一套,需要如此格式:
首先begin然后末尾写end,这是一整个脚本的第一大前提。
然后里面有分支结果,就用if……endif,没有例外。但如果你想if中间有第二个结果,就夹杂一个else,形成if……else……endif格式。
基本上并不复杂,把if……endif看成一个大括号即可,它包了这句里面所有内容,不得将内容写出这两端之外,否则geck不让保存。如果看不懂的话,横着看,然后将if与endif替换成左右括号,应该就懂了。
第二段跟硬核模式的内容基本一样,只是少了一个判断回血效果存在与否的语句。不再多解释。
但是光靠脚本是无法常时执行的,否则很多脚本都会同时执行,游戏连运行都做不到就炸了,所以我们需要一个actor。这个actor不是指“演员”,而是启动器的意思,只有通过它,大部分脚本才能执行,从NPC到PERK到任务,都算作在内。
NPC和PERK都不能算完全的常时执行,我们要的效果是从米歇尔床上醒来就在执行了,所以这里要用到任务quest。自动注射就是这种做法。