Jump to content

Help OBSE script (noob)


peacy66

Recommended Posts

Hello guys i am trying to modify a script wich i thought would be easy but i am totally noob at scripting. Basically i have a script that adds amulets but it is only for female npc(neck seam cover). So i wanted to add it for males too for personal use, thought it would be simple (probably is) but im lost. So here is the original script:

 

ScriptName KhNSCEDistributionQuestScript
;Updated script by claustromaniac. Thanks, friend!

ref ThisNPC
ref rNext
ref TempRef
short WhichNSC
array_var IsFemale

Begin GameMode

if eval !GetCellChanged
return
endif

Let rNext := GetFirstRef 69 1
while ThisNPC := rNext
Let rNext := GetNextRef

if eval ThisNPC.GetIsCreature
continue
elseif eval !ThisNPC.IsFemale
continue
elseif eval ThisNPC.GetInFaction Beggars
continue
elseif eval ThisNPC.GetEquippedObject 8
continue
elseif eval (TempRef := ThisNPC.GetEquippedObject 2)
if eval GetHidesAmulet TempRef
continue
endif
endif

If eval !GetPlayerInSEWorld
Let WhichNSC := Rand 1 77
If eval WhichNSC == 1
Let TempRef := KhWNeckSeamCopperA
ElseIf eval WhichNSC == 2
Let TempRef := KhWNeckSeamCopperBlackSoulA
ElseIf eval WhichNSC == 3
Let TempRef := KhWNeckSeamCopperBloodA
ElseIf eval WhichNSC == 4
Let TempRef := KhWNeckSeamCopperChippedWelkyndBlueA
ElseIf eval WhichNSC == 5
Let TempRef := KhWNeckSeamCopperChippedWelkyndGreenA
ElseIf eval WhichNSC == 6
Let TempRef := KhWNeckSeamCopperChippedWelkyndRedA
ElseIf eval WhichNSC == 7
Let TempRef := KhWNeckSeamCopperChippedWelkyndWhiteA
ElseIf eval WhichNSC == 8
Let TempRef := KhWNeckSeamCopperMagickaA
ElseIf eval WhichNSC == 9
Let TempRef := KhWNeckSeamCopperOrbA
ElseIf eval WhichNSC == 10
Let TempRef := KhWNeckSeamCopperPoisonA
ElseIf eval WhichNSC == 11
Let TempRef := KhWNeckSeamCopperWelkyndAmberA
ElseIf eval WhichNSC == 12
Let TempRef := KhWNeckSeamCopperWelkyndAquaA
ElseIf eval WhichNSC == 13
Let TempRef := KhWNeckSeamCopperWelkyndBloodA
ElseIf eval WhichNSC == 14
Let TempRef := KhWNeckSeamCopperWelkyndBlueA
ElseIf eval WhichNSC == 15
Let TempRef := KhWNeckSeamCopperWelkyndGreenA
ElseIf eval WhichNSC == 16
Let TempRef := KhWNeckSeamCopperWelkyndPaleA
ElseIf eval WhichNSC == 17
Let TempRef := KhWNeckSeamCopperWelkyndRedA
ElseIf eval WhichNSC == 18
Let TempRef := KhWNeckSeamCopperWelkyndVioletA
ElseIf eval WhichNSC == 19
Let TempRef := KhWNeckSeamCopperWelkyndWhiteA
ElseIf eval WhichNSC == 20
Let TempRef := KhWNeckSeamGoldA
ElseIf eval WhichNSC == 21
Let TempRef := KhWNeckSeamGoldBlackSoulA
ElseIf eval WhichNSC == 22
Let TempRef := KhWNeckSeamGoldBloodA
ElseIf eval WhichNSC == 23
Let TempRef := KhWNeckSeamGoldChippedWelkyndBlueA
ElseIf eval WhichNSC == 24
Let TempRef := KhWNeckSeamGoldChippedWelkyndGreenA
ElseIf eval WhichNSC == 25
Let TempRef := KhWNeckSeamGoldChippedWelkyndRedA
ElseIf eval WhichNSC == 26
Let TempRef := KhWNeckSeamGoldChippedWelkyndWhiteA
ElseIf eval WhichNSC == 27
Let TempRef := KhWNeckSeamGoldMagickaA
ElseIf eval WhichNSC == 28
Let TempRef := KhWNeckSeamGoldOrbA
ElseIf eval WhichNSC == 29
Let TempRef := KhWNeckSeamGoldPoisonA
ElseIf eval WhichNSC == 30
Let TempRef := KhWNeckSeamGoldWelkyndAmberA
ElseIf eval WhichNSC == 31
Let TempRef := KhWNeckSeamGoldWelkyndAquaA
ElseIf eval WhichNSC == 32
Let TempRef := KhWNeckSeamGoldWelkyndBloodA
ElseIf eval WhichNSC == 33
Let TempRef := KhWNeckSeamGoldWelkyndBlueA
ElseIf eval WhichNSC == 34
Let TempRef := KhWNeckSeamGoldWelkyndGreenA
ElseIf eval WhichNSC == 35
Let TempRef := KhWNeckSeamGoldWelkyndPaleA
ElseIf eval WhichNSC == 36
Let TempRef := KhWNeckSeamGoldWelkyndRedA
ElseIf eval WhichNSC == 37
Let TempRef := KhWNeckSeamGoldWelkyndVioletA
ElseIf eval WhichNSC == 38
Let TempRef := KhWNeckSeamGoldWelkyndWhiteA
ElseIf eval WhichNSC == 39
Let TempRef := KhWNeckSeamPewterA
ElseIf eval WhichNSC == 40
Let TempRef := KhWNeckSeamPewterBlackSoulA
ElseIf eval WhichNSC == 41
Let TempRef := KhWNeckSeamPewterBloodA
ElseIf eval WhichNSC == 42
Let TempRef := KhWNeckSeamPewterChippedWelkyndBlueA
ElseIf eval WhichNSC == 43
Let TempRef := KhWNeckSeamPewterChippedWelkyndGreenA
ElseIf eval WhichNSC == 44
Let TempRef := KhWNeckSeamPewterChippedWelkyndRedA
ElseIf eval WhichNSC == 45
Let TempRef := KhWNeckSeamPewterChippedWelkyndWhiteA
ElseIf eval WhichNSC == 46
Let TempRef := KhWNeckSeamPewterMagickaA
ElseIf eval WhichNSC == 47
Let TempRef := KhWNeckSeamPewterOrbA
ElseIf eval WhichNSC == 48
Let TempRef := KhWNeckSeamPewterPoisonA
ElseIf eval WhichNSC == 49
Let TempRef := KhWNeckSeamPewterWelkyndAmberA
ElseIf eval WhichNSC == 50
Let TempRef := KhWNeckSeamPewterWelkyndAquaA
ElseIf eval WhichNSC == 51
Let TempRef := KhWNeckSeamPewterWelkyndBloodA
ElseIf eval WhichNSC == 52
Let TempRef := KhWNeckSeamPewterWelkyndBlueA
ElseIf eval WhichNSC == 53
Let TempRef := KhWNeckSeamPewterWelkyndGreenA
ElseIf eval WhichNSC == 54
Let TempRef := KhWNeckSeamPewterWelkyndPaleA
ElseIf eval WhichNSC == 55
Let TempRef := KhWNeckSeamPewterWelkyndRedA
ElseIf eval WhichNSC == 56
Let TempRef := KhWNeckSeamPewterWelkyndVioletA
ElseIf eval WhichNSC == 57
Let TempRef := KhWNeckSeamPewterWelkyndWhiteA
ElseIf eval WhichNSC == 58
Let TempRef := KhWNeckSeamSilverA
ElseIf eval WhichNSC == 59
Let TempRef := KhWNeckSeamSilverBlackSoulA
ElseIf eval WhichNSC == 60
Let TempRef := KhWNeckSeamSilverBloodA
ElseIf eval WhichNSC == 61
Let TempRef := KhWNeckSeamSilverChippedWelkyndBlueA
ElseIf eval WhichNSC == 62
Let TempRef := KhWNeckSeamSilverChippedWelkyndGreenA
ElseIf eval WhichNSC == 63
Let TempRef := KhWNeckSeamSilverChippedWelkyndRedA
ElseIf eval WhichNSC == 64
Let TempRef := KhWNeckSeamSilverChippedWelkyndWhiteA
ElseIf eval WhichNSC == 65
Let TempRef := KhWNeckSeamSilverMagickaA
ElseIf eval WhichNSC == 66
Let TempRef := KhWNeckSeamSilverOrbA
ElseIf eval WhichNSC == 67
Let TempRef := KhWNeckSeamSilverPoisonA
ElseIf eval WhichNSC == 68
Let TempRef := KhWNeckSeamSilverWelkyndAmberA
ElseIf eval WhichNSC == 69
Let TempRef := KhWNeckSeamSilverWelkyndAquaA
ElseIf eval WhichNSC == 70
Let TempRef := KhWNeckSeamSilverWelkyndBloodA
ElseIf eval WhichNSC == 71
Let TempRef := KhWNeckSeamSilverWelkyndBlueA
ElseIf eval WhichNSC == 72
Let TempRef := KhWNeckSeamSilverWelkyndGreenA
ElseIf eval WhichNSC == 73
Let TempRef := KhWNeckSeamSilverWelkyndPaleA
ElseIf eval WhichNSC == 74
Let TempRef := KhWNeckSeamSilverWelkyndRedA
ElseIf eval WhichNSC == 75
Let TempRef := KhWNeckSeamSilverWelkyndVioletA
ElseIf eval WhichNSC == 76
Let TempRef := KhWNeckSeamSilverWelkyndWhiteA
EndIf
Else
Let WhichNSC := Rand 77 98
If eval WhichNSC == 77
Let TempRef := KhWNeckSeamSECopperAmberA
ElseIf eval WhichNSC == 78
Let TempRef := KhWNeckSeamSECopperAsterBloomA
ElseIf eval WhichNSC == 79
Let TempRef := KhWNeckSeamSECopperFlyTrapA
ElseIf eval WhichNSC == 80
Let TempRef := KhWNeckSeamSECopperSporeA
ElseIf eval WhichNSC == 81
Let TempRef := KhWNeckSeamSECopperWitheringMoonA
ElseIf eval WhichNSC == 82
Let TempRef := KhWNeckSeamSEGoldAmberA
ElseIf eval WhichNSC == 83
Let TempRef := KhWNeckSeamSEGoldAsterBloomA
ElseIf eval WhichNSC == 84
Let TempRef := KhWNeckSeamSEGoldFlyTrapA
ElseIf eval WhichNSC == 85
Let TempRef := KhWNeckSeamSEGoldSporeA
ElseIf eval WhichNSC == 86
Let TempRef := KhWNeckSeamSEGoldWitheringMoonA
ElseIf eval WhichNSC == 87
Let TempRef := KhWNeckSeamSEPewterAmberA
ElseIf eval WhichNSC == 88
Let TempRef := KhWNeckSeamSEPewterAsterBloomA
ElseIf eval WhichNSC == 89
Let TempRef := KhWNeckSeamSEPewterFlyTrapA
ElseIf eval WhichNSC == 90
Let TempRef := KhWNeckSeamSEPewterSporeA
ElseIf eval WhichNSC == 91
Let TempRef := KhWNeckSeamSEPewterWitheringMoonA
ElseIf eval WhichNSC == 92
Let TempRef := KhWNeckSeamSilverWelkyndPaleA
ElseIf eval WhichNSC == 93
Let TempRef := KhWNeckSeamSESilverAmberA
ElseIf eval WhichNSC == 94
Let TempRef := KhWNeckSeamSESilverAsterBloomA
ElseIf eval WhichNSC == 95
Let TempRef := KhWNeckSeamSESilverFlyTrapA
ElseIf eval WhichNSC == 96
Let TempRef := KhWNeckSeamSESilverSporeA
ElseIf eval WhichNSC == 97
Let TempRef := KhWNeckSeamSESilverWitheringMoonA
EndIf
EndIf
ThisNPC.AddItem TempRef 1
ThisNPC.EquipItemSilent TempRef
loop

End

 

And here is my attempt at making a script for males using the same way to implement it:

 

ScriptName KhNSCEDistributionQuestScript
;Updated script by claustromaniac. Thanks, friend!

ref ThisNPC
ref rNext
ref TempRef
short WhichNSC

Begin GameMode

if eval !GetCellChanged
return
endif

Let rNext := GetFirstRef 69 1
while ThisNPC := rNext
Let rNext := GetNextRef

if eval ThisNPC.GetIsCreature
continue
elseif eval !ThisNPC.IsMale
continue
elseif eval ThisNPC.GetInFaction Beggars
continue
elseif eval ThisNPC.GetEquippedObject 8
continue
elseif eval (TempRef := ThisNPC.GetEquippedObject 2)
if eval GetHidesAmulet TempRef
continue
endif
endif

If eval !GetPlayerInSEWorld
Let WhichNSC := Rand 1 3
If eval WhichNSC == 1
Let TempRef := LuNecklaceCopper
ElseIf eval WhichNSC == 2
Let TempRef := LuNecklaceGold
ElseIf eval WhichNSC == 3
Let TempRef := LuNecklaceSilver
EndIf
Else
Let WhichNSC := Rand 4 6
If eval WhichNSC == 4
Let TempRef := LuNecklaceCopper
ElseIf eval WhichNSC == 5
Let TempRef := LuNecklaceGold
ElseIf eval WhichNSC == 6
Let TempRef := LuNecklaceSilver
EndIf
EndIf
ThisNPC.AddItem TempRef 1
ThisNPC.EquipItemSilent TempRef
loop

End

 

I thought it would be as easy as change the necklace id's and switch the IsFemale with Ismale, but IsMale doesn't work...

Help would be much appreciated.

Link to comment
Share on other sites

Hmm, well, there is in fact no "IsMale" function counterpart to "IsFemale", but you also don't need any. "IsFemale" returns either 1 or 0, true or false, nothing else, and as such can be used to check for both.

Don't laugh, but the correct way of changing the female-only script above to male-only would have been to remove the "!" = "not" from in front of the "IsFemale" check, where it says "if the gender is not female, abort at this point" like so:

Turn

...
elseif eval !ThisNPC.IsFemale
continue
...

(abort, if not female, i.e. male)

into

...
elseif eval ThisNPC.IsFemale
continue
...

(abort, if female, i.e. not male)

Hope it helps. :thumbsup:

Link to comment
Share on other sites

Ty Drake, I did try to do like you said (removing the !) but for some reasons none of my males npc get a necklace. I am obviously very lost in scripting world. I even tried to keep the original script unchanged and just remove the !, still no luck. I do not understand, seems so simple to do and it does not work. That is why i never script haha.

Link to comment
Share on other sites

Hmm, maybe one or more of the other restrictions is fulfilled, i.e. they wear something which hides amulets, etc.

 

But could you give us the whole script the exact way it is now? It's always easier to check an actual script and see where something's wrong, than to blindly guess your way through to the culprit.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...