Forkson Posted July 9, 2012 Share Posted July 9, 2012 I made a formlist to store all Perks by CK, and write a script to run over them and clean ... It's really spend me a long time to take effect... are there any ways to make it more faster?? here's my code .... *********************************************************************** Scriptname WineResetPerkScript extends ActiveMagicEffect import skse import Debug Actor Property myself Auto FormList Property PerkList Auto //check skse version bool Function checkSKSEVersion() int major = GetVersion() int minor = GetVersionMinor() int betav = GetVersionBeta() if (major != 1) return false Endif if (minor != 5) return false Endif if (betav != 9) return false Endif return true endFunction //clean all perks and return used perk points int Function cleanPerksAndReturnPointsNumber() int i = 0 int PerkPoints = 0 Perk thisPerk while(i < PerkList.GetSize()) thisPerk = PerkList.GetAt(i) as Perk if(myself.HasPerk(thisPerk)) ; messageBox(PerkPoints+" "+thisPerk.GetFormID()+":"+thisPerk.GetName()) myself.RemovePerk(thisPerk) PerkPoints += 1 endIf i += 1 endWhile i = 0 while(i < PerkList.GetSize()) thisPerk = PerkList.GetAt(i) as Perk if(myself.HasPerk(thisPerk)) myself.RemovePerk(thisPerk) PerkPoints -= 1 endIf i += 1 endWhile return PerkPoints endFunction Function resetPerks() myself = Game.GetPlayer() int UnusedPoints = Game.GetPerkPoints() int PerkPoints = cleanPerksAndReturnPointsNumber() Game.SetPerkPoints(UnusedPoints + PerkPoints) messageBox("Reset Perk Over:"+PerkPoints) endFunction Event OnEffectStart(Actor Target, Actor Caster) if (Target == Game.GetPlayer()) messageBox("Reset Perk Start") if (checkSKSEVersion()) resetPerks() else messageBox("Error SKSE Version") endif endif EndEvent Link to comment Share on other sites More sharing options...
Recommended Posts