Shabam.
scn DrakeDragonRaceQuestScriptlong adaptedItemsArraylong itemsDCpartcArraylong itemsDCpartfArraylong itemsDCpartcfArraylong itemsDCpartArraylong itemsDCpartfoArraylong itemsDCpartfcArrayshort showclawsshort showfeetshort showtailshort showwingsshort showhelmetshort forcehelmetshort forceuppershort forcelowershort forcehandsshort forcefeetshort forcetailshort forcecombinedshort initshort debugshort debugShowRaceTokenshort debugShowRevTokenshort doConfigshort choicearray_var confArrayarray_var itemArrayarray_var defaultItemArrayarray_var replacerTemplateArrayarray_var tempArrayarray_var itemstring_var raceIdlong framesToSkiplong itemsRevertPerFrameref sourceref actorRacefloat timerfloat playerXfloat playerYfloat playerZfloat fQuestDelayTimebegin gameMode set fQuestDelayTime to 0.5 if(init == 0) if(getOBSEVersion < 17) MessageBoxEX "Dragon Race:%rCurrent release requires OBSE v0017 or higher to run.%rYou don't have a proper version of OBSE!" set init to -1 return endif set showhelmet to 1 set showclaws to 1 set showfeet to 1 set showtail to 1 set showwings to 1 set forcehelmet to 0 set forceupper to 0 set forcelower to 1 set forcehands to 1 set forcefeet to 1 set forcetail to 1 set forcecombined to 0 let confArray := ar_Construct StringMap let confArray["races"] := ar_Construct StringMap let confArray["races"]["dragon"] := DrakeDragon let confArray["races"]["dragonblack"] := DrakeDragonBlack let confArray["races"]["dragonredgold"] := DrakeDragonRedGold foreach item <- confArray["races"] let raceId := item["key"] let confArray[raceId] := ar_Construct StringMap let confArray[raceId]["hair"] := ar_Construct StringMap let confArray[raceId]["hair"]["slotmask"] := 2 let confArray[raceId]["hair"]["combinations"] := ar_Construct Array let confArray[raceId]["hair"]["combinations"][0] := ar_Construct StringMap let confArray[raceId]["hair"]["combinations"][0]["tag"] := "dcpart" let confArray[raceId]["hair"]["combinations"][0]["req"] := showhelmet let confArray[raceId]["hair"]["forced"] := forcehelmet let confArray[raceId]["upperbody"] := ar_Construct StringMap let confArray[raceId]["upperbody"]["slotmask"] := 4 let confArray[raceId]["upperbody"]["combinations"] := ar_Construct Array let confArray[raceId]["upperbody"]["combinations"][0] := ar_Construct StringMap let confArray[raceId]["upperbody"]["combinations"][0]["tag"] := "dcpartc" let confArray[raceId]["upperbody"]["combinations"][0]["req"] := eval (showclaws == 1 && showfeet == 0) let confArray[raceId]["upperbody"]["combinations"][1] := ar_Construct StringMap let confArray[raceId]["upperbody"]["combinations"][1]["tag"] := "dcpartf" let confArray[raceId]["upperbody"]["combinations"][1]["req"] := eval (showclaws == 0 && showfeet == 1) let confArray[raceId]["upperbody"]["combinations"][2] := ar_Construct StringMap let confArray[raceId]["upperbody"]["combinations"][2]["tag"] := "dcpartcf" let confArray[raceId]["upperbody"]["combinations"][2]["req"] := eval (showclaws == 1 && showfeet == 1) let confArray[raceId]["upperbody"]["combinations"][3] := ar_Construct StringMap let confArray[raceId]["upperbody"]["combinations"][3]["tag"] := "dcpart" let confArray[raceId]["upperbody"]["combinations"][3]["req"] := showclaws let confArray[raceId]["upperbody"]["forced"] := forceupper let confArray[raceId]["lowerbody"] := ar_Construct StringMap let confArray[raceId]["lowerbody"]["slotmask"] := 8 let confArray[raceId]["lowerbody"]["combinations"] := ar_Construct Array let confArray[raceId]["lowerbody"]["combinations"][0] := ar_Construct StringMap let confArray[raceId]["lowerbody"]["combinations"][0]["tag"] := "dcpart" let confArray[raceId]["lowerbody"]["combinations"][0]["req"] := showfeet let confArray[raceId]["lowerbody"]["forced"] := forcelower let confArray[raceId]["hands"] := ar_Construct StringMap let confArray[raceId]["hands"]["slotmask"] := 16 let confArray[raceId]["hands"]["combinations"] := ar_Construct Array let confArray[raceId]["hands"]["combinations"][0] := ar_Construct StringMap let confArray[raceId]["hands"]["combinations"][0]["tag"] := "dcpart" let confArray[raceId]["hands"]["combinations"][0]["req"] := showclaws let confArray[raceId]["hands"]["forced"] := forcehands let confArray[raceId]["feet"] := ar_Construct StringMap let confArray[raceId]["feet"]["slotmask"] := 32 let confArray[raceId]["feet"]["combinations"] := ar_Construct Array let confArray[raceId]["feet"]["combinations"][0] := ar_Construct StringMap let confArray[raceId]["feet"]["combinations"][0]["tag"] := "dcpart" let confArray[raceId]["feet"]["combinations"][0]["req"] := showfeet let confArray[raceId]["feet"]["forced"] := forcefeet let confArray[raceId]["tail"] := ar_Construct StringMap let confArray[raceId]["tail"]["slotmask"] := 32768 let confArray[raceId]["tail"]["combinations"] := ar_Construct Array let confArray[raceId]["tail"]["combinations"][0] := ar_Construct StringMap let confArray[raceId]["tail"]["combinations"][0]["tag"] := "dcpartt" let confArray[raceId]["tail"]["combinations"][0]["req"] := eval (showtail == 1 && showwings == 0) let confArray[raceId]["tail"]["combinations"][1] := ar_Construct StringMap let confArray[raceId]["tail"]["combinations"][1]["tag"] := "dcpartw" let confArray[raceId]["tail"]["combinations"][1]["req"] := eval (showtail == 0 && showwings == 1) let confArray[raceId]["tail"]["combinations"][2] := ar_Construct StringMap let confArray[raceId]["tail"]["combinations"][2]["tag"] := "dcpartwt" let confArray[raceId]["tail"]["combinations"][2]["req"] := eval (showtail == 1 && showwings == 1) let confArray[raceId]["tail"]["combinations"][3] := ar_Construct StringMap let confArray[raceId]["tail"]["combinations"][3]["tag"] := "dcpart" let confArray[raceId]["tail"]["combinations"][3]["req"] := eval (showtail == 1 && showwings == 1) let confArray[raceId]["tail"]["forced"] := forcetail Loop let itemArray := ar_Construct StringMap let itemArray["original"] := ar_Construct StringMap ;let itemArray["original"][x] := original_BaseId let itemArray["dcpartc"] := ar_Construct StringMap let itemArray["dcpartf"] := ar_Construct StringMap let itemArray["dcpartcf"] := ar_Construct StringMap let itemArray["dcpartw"] := ar_Construct StringMap let itemArray["dcpartt"] := ar_Construct StringMap let itemArray["dcpartwt"] := ar_Construct StringMap let itemArray["dcpart"] := ar_Construct StringMap ;let itemArray[tagCode][x] := adapted_BaseId ;matching indices "x"! let defaultItemArray := ar_Construct StringMap let defaultItemArray["hair"] := ar_Construct StringMap let defaultItemArray["hair"]["dcpart"] := DrakeEmptyItem let defaultItemArray["upperbody"] := ar_Construct StringMap let defaultItemArray["upperbody"]["dcpartc"] := DrakeDragonUpperbody let defaultItemArray["upperbody"]["dcpartf"] := DrakeEmptyItem let defaultItemArray["upperbody"]["dcpartcf"] := DrakeDragonUpperbody let defaultItemArray["upperbody"]["dcpart"] := DrakeDragonUpperbody let defaultItemArray["lowerbody"] := ar_Construct StringMap let defaultItemArray["lowerbody"]["dcpart"] := DrakeDragonLegs let defaultItemArray["hands"] := ar_Construct StringMap let defaultItemArray["hands"]["dcpart"] := DrakeDragonClaws let defaultItemArray["feet"] := ar_Construct StringMap let defaultItemArray["feet"]["dcpart"] := DrakeDragonFeet let defaultItemArray["tail"] := ar_Construct StringMap let defaultItemArray["tail"]["dcpartt"] := DrakeDragonTail let defaultItemArray["tail"]["dcpartw"] := DrakeDragonWings let defaultItemArray["tail"]["dcpartwt"] := DrakeDragonWingsTail let defaultItemArray["tail"]["dcpart"] := DrakeEmptyItem ;replacer templates let replacerTemplateArray := ar_Construct StringMap let replacerTemplateArray["hair"] := ar_Construct StringMap let replacerTemplateArray["hair"]["dcpart"] := DrakeEmptyItem let replacerTemplateArray["upperbody"] := ar_Construct StringMap let replacerTemplateArray["upperbody"]["dcpartc"] := DrakeEmptyItem;no replacer templates needed for upperbody let replacerTemplateArray["upperbody"]["dcpartf"] := DrakeEmptyItem let replacerTemplateArray["upperbody"]["dcpartcf"] := DrakeEmptyItem let replacerTemplateArray["upperbody"]["dcpart"] := DrakeEmptyItem let replacerTemplateArray["lowerbody"] := ar_Construct StringMap let replacerTemplateArray["lowerbody"]["dcpart"] := DrakeDragonLegWraps let replacerTemplateArray["hands"] := ar_Construct StringMap let replacerTemplateArray["hands"]["dcpart"] := DrakeDragonHandWraps let replacerTemplateArray["feet"] := ar_Construct StringMap let replacerTemplateArray["feet"]["dcpart"] := DrakeDragonFootWraps let replacerTemplateArray["tail"] := ar_Construct StringMap let replacerTemplateArray["tail"]["dcpartt"] := DrakeEmptyItem let replacerTemplateArray["tail"]["dcpartw"] := DrakeEmptyItem let replacerTemplateArray["tail"]["dcpartwt"] := DrakeEmptyItem let replacerTemplateArray["tail"]["dcpart"] := DrakeEmptyItem let tempArray := ar_Construct StringMap set framesToSkip to 10 set itemsRevertPerFrame to 100 MessageBoxEX "Dragon Race:%rAll requirements met. Arrays initialized successfully." set doConfig to -1 set init to 1 endif if(doConfig == 1) MessageBoxEX "Dragon Race > Do You want to keep all default settings?|Yes|No" set doConfig to -2 return elseif(doConfig == -2) set choice to getButtonPressed if(choice == 0);stick to defaults MessageBoxEX "Dragon Race > Forced unequipping:%rBy default this will also affect items%rcovering more than 1 slot at once,%r(e.g. The Arena Raiments or DB Armor)%rleaving actors running around naked,%rif they weren't adapted yet.%rDo You wish to make an exception%rto allow non-fitting combined-slot items?|Yes|No" set doConfig to 12 elseif(choice == 1);customize MessageBoxEX "Dragon Race > Select Your shape:%rDo You want to be Full-Dragon shape?|Yes|No" set doConfig to 2 endif return elseif(doConfig == 2);full-dragon or custom? set choice to getButtonPressed if(choice == 0);stay full-dragon set showclaws to 1 set showfeet to 1 set showtail to 1 set showwings to 1 MessageBoxEX "Dragon Race > Select Your shape:%rDo You want controlled helmet slot,%rnot actually force-equipping anything%rbut keeping non-fitting helmets unequipped?|Yes|No" set doConfig to 5 elseif(choice == 1);further customize MessageBoxEX "Dragon Race > Select Your shape:%rWhich wings & tail combination do You prefer?|Wings and tail|Only wings|Only tail|None at all" set doConfig to 3 endif return elseif(doConfig == 3);tail & wings options set choice to getButtonPressed if(choice > -1) if(choice == 0);both set showtail to 1 set showwings to 1 elseif(choice == 1);only wings set showtail to 0 set showwings to 1 elseif(choice == 2);only tail set showtail to 1 set showwings to 0 elseif(choice == 3);neither wings nor tail set showtail to 0 set showwings to 0 endif MessageBoxEX "Dragon Race > Select Your shape:%rWhich hands & feet/legs combination do You prefer?|Dragon hands and feet/legs|Dragon hands but human feet/legs|Human hands but dragon feet/legs|Human hands and human feet/legs" set doConfig to 4 endif return elseif(doConfig == 4);hands & feet options set choice to getButtonPressed if(choice > -1) if(choice == 0);both set showclaws to 1 set showfeet to 1 elseif(choice == 1);dragon hands, human feet set showclaws to 1 set showfeet to 0 elseif(choice == 2);humand hands, dragon feet set showclaws to 0 set showfeet to 1 elseif(choice == 3);all human set showclaws to 0 set showfeet to 0 endif MessageBoxEX "Dragon Race > Select Your shape:%rDo You want controlled helmet slot,%rnot actually force-equipping anything%rbut keeping non-fitting helmets unequipped?|Yes|No" set doConfig to 5 endif return elseif(doConfig == 5);helmet options set choice to getButtonPressed if(choice > -1) if(choice == 0);controlled helmet set showhelmet to 1 elseif(choice == 1);keep hairstyles set showhelmet to 0 endif MessageBoxEX "Dragon Race > Forced unequipping:%rBy default unequipping of non-fitting items%ris forced for all slots but upperbody.%rThis includes visual replacement while keeping stats.%rWhich settings do You prefer?|Keep default (All)|None at all|Customize..." set doConfig to 6 endif return elseif(doConfig == 6) set choice to getButtonPressed if(choice > -1) if(choice == 0); all slots set forcehelmet to 1 set forceupper to 0 set forcehands to 1 set forcelower to 1 set forcefeet to 1 set forcetail to 1 MessageBoxEX "Dragon Race > Forced unequipping:%rBy default this will also affect items%rcovering more than 1 slot at once,%r(e.g. The Arena Raiments or DB Armor)%rleaving actors running around naked,%rif they weren't adapted yet.%rDo You wish to make an exception%rto allow non-fitting combined-slot items?|Yes|No" set doConfig to 12 elseif(choice == 1);none at all set forcehelmet to 0 set forceupper to 0 set forcehands to 0 set forcelower to 0 set forcefeet to 0 set forcetail to 0 MessageBoxEX "Dragon Race > Forced unequipping:%rBy default this will also affect items%rcovering more than 1 slot at once,%r(e.g. The Arena Raiments or DB Armor)%rleaving actors running around naked,%rif they weren't adapted yet.%rDo You wish to make an exception%rto allow non-fitting combined-slot items?|Yes|No" set doConfig to 12 elseif(choice == 2);customize MessageBoxEX "Dragon Race > Forced unequipping:%rDo You want the helmet/hair slot to be forced?%r(Only relevant, if it is controlled.)|Yes|No" set doConfig to 7 endif endif return elseif(doConfig == 7) set choice to getButtonPressed if(choice > -1) if(choice == 0);yes set forcehelmet to 1 elseif(choice == 1);no set forcehelmet to 0 endif MessageBoxEX "Dragon Race > Forced unequipping:%rDo You want the lowerbody/legs slot to be forced?%r(Only relevant, if it is in Dragon shape.)|Yes|No" set doConfig to 8 endif return elseif(doConfig == 8);lowerbody set choice to getButtonPressed if(choice > -1) if(choice == 0);yes set forcelower to 1 elseif(choice == 1);no set forcelower to 0 endif MessageBoxEX "Dragon Race > Forced unequipping:%rDo You want the hands slot to be forced?%r(Only relevant, if it is in Dragon shape.)|Yes|No" set doConfig to 9 endif return elseif(doConfig == 9);hands set choice to getButtonPressed if(choice > -1) if(choice == 0);yes set forcehands to 1 elseif(choice == 1);no set forcehands to 0 endif MessageBoxEX "Dragon Race > Forced unequipping:%rDo You want the feet slot to be forced?%r(Only relevant, if it is in Dragon shape.)|Yes|No" set doConfig to 10 endif return elseif(doConfig == 10);feet set choice to getButtonPressed if(choice > -1) if(choice == 0);yes set forcefeet to 1 elseif(choice == 1);no set forcefeet to 0 endif MessageBoxEX "Dragon Race > Forced unequipping:%rDo You want the tail slot to be forced?%r(Only relevant, if tail or wings were selected.)|Yes|No" set doConfig to 11 endif return elseif(doConfig == 11);tail set choice to getButtonPressed if(choice > -1) if(choice == 0);yes set forcetail to 1 elseif(choice == 1);no set forcetail to 0 endif MessageBoxEX "Dragon Race > Forced unequipping:%rBy default this will also affect items%rcovering more than 1 slot at once,%r(e.g. The Arena Raiments or DB Armor)%rleaving actors running around naked,%rif they weren't adapted yet.%rDo You wish to make an exception%rto allow non-fitting combined-slot items?|Yes|No" set doConfig to 12 endif return elseif(doConfig == 12);combined-slot items exception set choice to getButtonPressed if(choice > -1) if(choice == 0);yes set forcecombined to 0 elseif(choice == 1);no set forcecombined to 1 endif set doConfig to 13 endif return elseif(doConfig == 13);finish MessageBoxEX "Dragon Race: Thank You for your time.%rYour Dragon race should now be successfully configured.%rIf You wish to do this again, just type%r'set DragonStartQuest.doConfig to 1'%rinto the console.%rIf You called this in the middle of a game,%rYou might need to reequip your clothing,%rfor the changes to take effect!" set doConfig to 0 elseif(doConfig == -1);prepare for next frame set doConfig to 1 return endif foreach item <- confArray["races"] let raceId := item["key"] ;update shape shift settings, just in case let confArray[raceId]["hair"]["combinations"][0]["req"] := showhelmet let confArray[raceId]["upperbody"]["combinations"][0]["req"] := eval (showclaws == 1 && showfeet == 0) let confArray[raceId]["upperbody"]["combinations"][1]["req"] := eval (showclaws == 0 && showfeet == 1) let confArray[raceId]["upperbody"]["combinations"][2]["req"] := eval (showclaws == 1 && showfeet == 1) let confArray[raceId]["upperbody"]["combinations"][3]["req"] := showclaws let confArray[raceId]["lowerbody"]["combinations"][0]["req"] := showfeet let confArray[raceId]["hands"]["combinations"][0]["req"] := showclaws let confArray[raceId]["feet"]["combinations"][0]["req"] := showfeet let confArray[raceId]["tail"]["combinations"][0]["req"] := eval (showtail == 1 && showwings == 0) let confArray[raceId]["tail"]["combinations"][1]["req"] := eval (showtail == 0 && showwings == 1) let confArray[raceId]["tail"]["combinations"][2]["req"] := eval (showtail == 1 && showwings == 1) ;update forced unequipping, just in case let confArray[raceId]["hair"]["forced"] := forcehelmet let confArray[raceId]["upperbody"]["forced"] := forceupper let confArray[raceId]["lowerbody"]["forced"] := forcelower let confArray[raceId]["hands"]["forced"] := forcehands let confArray[raceId]["feet"]["forced"] := forcefeet let confArray[raceId]["tail"]["forced"] := forcetail Loop if(actorRace != player.getRace) set actorRace to player.getRace let raceId := ar_Find actorRace confArray["races"] if eval (raceId != "") if(player.getItemCount DrakeDragonRaceToken < 1) player.addItemNS DrakeDragonRaceToken 1 endif else if(player.getItemCount DrakeDragonRaceReverterToken < 1) player.addItemNS DrakeDragonRaceReverterToken 1 endif endif endif set source to DrakeDragonRaceScanner;move into new cell with player and reset count so spell is cast immediately if(source.getInSameCell player != 1) source.moveTo player set timer to 0 endif if(timer <= 0) set playerX to player.getPos X source.setPos X playerX set playerY to player.getPos Y source.setPos Y playerY set playerZ to player.getPos Z source.setPos Z playerZ source.cast DrakeDragonRaceScannerAura player set timer to 1 else set timer to (timer - getSecondsPassed) endif
Things that I found odd;
-Unlike the slots that had alternate nvde meshes that were controlled by script (Hands, legs, wings, tail, and feet), there is no variable for the upper body. Not sure if it's supposed to be like that, just seems not quite right.
-Force upper is set to zero.
-Not with the main control script; but The animation quest is still hanging about. I think this is what is causing the "locked in combat error". Whenever an animation is playing other than running or jumping or whatever, the game counts you as being in combat and doesn't let you change weapons or armour (I think, not sure).
-It might just be me, But I'm still getting the problem where it thinks there's a female altered mesh if there's a male one; regardless of whether there is one or not.
-Oh, and the OBSE check is still wrong.
In any event, Me thinks that this isn't the esp (or versions of the scripts) that you had mean to upload.