Jump to content

lubronbrons

Premium Member
  • Posts

    567
  • Joined

  • Last visited

Everything posted by lubronbrons

  1. of course money... they did something very discouraging for us modder, especially no-profit modders like OP
  2. here's a script suggestion from me (I couldn't test it so I don't know if this is working or not) I've removed some potential errors & streamlined the code for best performance (let's safe our precious FPS !) scn VAAMorganQuestScript short bLetterDelivered short bBrookGreeted short bBrooksFollow short sh1 begin GameMode Set sh1 to GetStage AAAMorganQuest if sh1 == 10 AAACathyRef.Enable AAAChaseRef.Enable elseif sh1 == 50 AAAByronRef.disable AAAByronRef.MarkForDelete elseif sh1 == 90 AAACassiusRef.enable AAALegionSpy01Ref.enable AAALegionSpy02.enable endif if AAACassiusRef.GetDead * AAALegionSpy01Ref.GetDead * AAALegionSpy02Ref.GetDead Set bBrookGreeted to 1 SetStage AAAMorganQuest 100 endif end
  3. I think you missed if condition after this lineif (AAACassiusRef.GetDead == 1 && AAALegionSpy01Ref.GetDead == 1 && AAALegionSpy02Ref.GetDead == 1)there is an extra 'endif' after 'SetStage AAAMorganQuest == 100' scn VAAMorganQuestScript short bLetterDelivered short bBrookGreeted short bBrooksFollow begin GameMode if (GetStage AAAMorganQuest == 10) AAACathyRef.Enable && AAAChaseRef.Enable --> this is more like validation rather than assign command end if (GetStage AAAMorganQuest == 50) AAAByronRef.disable AAAByronRef.MarkForDelete end If (GetStage AAAMorganQuest == 90]) --> there is extra bracket ']' AAACassiusRef.enable AAALegionSpy01Ref.enable AAALegionSpy02.enable end if (AAACassiusRef.GetDead == 1 && AAALegionSpy01Ref.GetDead == 1 && AAALegionSpy02Ref.GetDead == 1) Set bBrookGreeted to 1 SetStage AAAMorganQuest == 100 --> this looks like validation, it should go without '==' endif ---> this is an extra, error may stop the script from working endif end EDIT : oh... I also noticed there's an extra bracket ']' in this line --> If (GetStage AAAMorganQuest == 90 ] )probably that was what causing your script not working issueI think it should go like this --> If (GetStage AAAMorganQuest == 90) EDIT 2 : it seems there is other errors too, typo on 'end'... should be 'endif' instead. also there is wrong validation in this line --> AAACathyRef.Enable && AAAChaseRef.Enable
  4. I suggest that you post your full script here and I second Dubious opinion about blue "<>" symbol in editor for fancy box when code is encapsulated by fancy box it should look like this hellow world ! oho I support tab indentation endif
  5. I'm just a small time modder from TES 4 but this ... kind of a downer,,, I thought that FO 4 or TES 5 is a good place to gather fortune, polling donation from people that appreciate modder's work... but... after I read this, I believe there is hundreds, or maybe thousands, or maybe MORE !! outlaw user like this monsterhunter32 it could hurt modder esteem so much & break the creative mind (hatred effect --> heart burning out -- head evil out ) well... how could modder enjoy such battlefield ? the hunt & search for piracy will be frequent and disturbing I think... I will stay and continue modding TES 4, it is much more peaceful there :) and passionate~
  6. qutoe : "I didn't consider the fact that there are few modders left to this game" >>> I think they are considered 'left' since they moved on to greener place (FO4 Skyrim etc etc) many of them if you sent PM they will write something like this "sorry I don't play Oblivion anymore bla bla bla... sorry I don't suuport my old mods bla bla bla... and so on" sure start reading here man https://cs.elderscrolls.com/index.php?title=Main_Page
  7. your guess probably right Striker, Noxx seems want to clear out the stolen flag same here, I need to keep the food items for pc needs so I rarely encounter that stacked item ctd bug still... that bug is harmful it could be happen anywhere anytime without user know when it will gonna happen, since the stacked item is shown as one stack (like my example 43 apples has 4 stacks but in inventory shown only as 1 stack -- which is not)
  8. ahh... Yeah that mod could be simple a alternative and would solve the stacked item ctd issue, but it still need a bit of work to do that (drop -- pick up -- sell) imagine if pc have 200 stolen items.... *cough* it would be hassle
  9. easy there Frep, this beloved game is already old decade++ age we modder is few in numbers in Oblivion (you could compare the number of responses in FO4 as example) also modder that has skillset to create quests, dialog, & new location is already move on to FO4 Skyrim etc etc so to find user that has same brainwave & ambition as yours could be difficult, but good luck.. I hope you find that person~ the modder that will help realize your plan
  10. quote : "Its a lot of commands to remember and little details, it's really cool that you know all that">>> it's not really cool as you think... scripting modding experience means == a bunch of trial & errors :tongue:anyway glad this little me could be any help Okay, this is what I thought regarding your last script (oh my... the script is growing, let me shrink it~)here's my suggestion, now using template format, should makes your life easier scn aarmPublicanCountsArmsWilburDEAD short rent short sleephour short setup short doonce ref theOwner ref theBed ref theDoor ref theChest ref rf1 Begin OnDeath ;Once character A dies, character B is spawned. I would like character b to spawn at certain location AnvilMapMarkerNEW.PlaceAtMe theOwner ;change REF map marker! End begin gamemode if !doonce set doonce to 1 ;easy template Let theOwner := aaWilbur ;change the BASE OBJECT successor NPC! reminder base object ok?! Let theBed := AnvilCountsArmsRentBed ;change the REF bed inn! Let theDoor := AnvilCountsArmsRentDoor ;change the REF door inn! Let theChest := CountsArmsWilburChest ;change the REF merchant container! theChest.ClearOwnership theChest.SetOwner theOwner endif if rent if setup if GetPCMiscStat 20 != sleephour set rent to 0 set setup to 0 theDoor.SetOpenState 0 theDoor.lock 30 theBed.SetOwnership endif else set sleephour to GetPCMiscStat 20 set setup to 1 theDoor.unlock theBed.SetOwnership theOwner endif endif End in short... for each NPC you should only focus on this 6 lines of code scn aarmPublicanCountsArmsWilburDEAD AnvilMapMarkerNEW.PlaceAtMe theOwner ;change REF map marker! Let theOwner := aaWilbur ;change the BASE OBJECT successor NPC! reminder base object ok?! Let theBed := AnvilCountsArmsRentBed ;change the REF bed inn! Let theDoor := AnvilCountsArmsRentDoor ;change the REF door inn! Let theChest := CountsArmsWilburChest ;change the REF merchant container!
  11. Glad it worked! Sorry about my code has many revisions Even though I had modding experience, & had a good obse scripting tutor (Forli) But I'm just a mere human that tend to make mistakes :p
  12. To get the npc that uses the script you could use GetSelf Yeah, We should clear the ownership before assign it to something else or it wouldn't work. This is based on my modding experience Yes, I did use rf1 for the sake of lightweight memory & compact code My style of coding is like that, similar to go green campaign that prevent global warming issue :) I reuse variables that could be reused. I like to keep my code like that, it's efficient, less resources About merchant container, I believe it is Not enough to set container owner to successor If we not set successor to support previous merchant container, the successor will not sell any stuffs at all Hmm... I think I make another mistake Just before this line --> rf1.SetOwner rf2 Should insert this line before it --> Let rf2 := rf2.GetBaseObject ...because I recall that set ownership syntax need base object rather than reference. If we use set ownership on reference it would Not work..
  13. Indeed that mod could avoid the ctd issue, But User not know when this ctd bug would happening, so I'm afraid this is not efficient solution. Because user must do this routine every time want to do a barter transaction? That could be hassle Also I think for some people it could be considered cheating or lore breaking or game breaking if pc must do that routine every time. So for this bug the best solution that I can think of is by removing the buggy stack before player do transaction with merchant that have this buggy item stack issue..
  14. oh my..... the hunting is begin lol this is similar to ongoing comic I reading -- Yakusoku no Neverland Willbur is not argonian !! XD XD this is what I thought regarding your last posted script- how to use the fancy box for code script is like this my friend without the underscore --> [_code_]Text_Here[_/code_]- syntax GetPackageOffersServices is not reliable by itself, since the actor could change the package differently, so it should be accompanied by syntax GetActorPackages like my previous script- in this case I'm afraid that is not how you should use SetOwnership like that, I have suggestion below scn inkeeper1 short rent short sleephour short setup ref rf1 ref rf2 array_var ar1 Begin GameMode if rent if setup if GetPCMiscStat 20 != sleephour set rent to 0 set setup to 0 AnvilCountsArmsRentDoor.SetOpenState 0 AnvilCountsArmsRentDoor.lock 30 AnvilCountsArmsRentBed.SetOwnership endif else set sleephour to GetPCMiscStat 20 set setup to 1 AnvilCountsArmsRentDoor.unlock AnvilCountsArmsRentBed.SetOwnership endif endif End Begin OnDeath ;Once character A dies, character B is spawned. I would like character b to spawn at a map marker at the entrance to town (anvil) Let rf2 := AnvilMapMarkerNEW.PlaceAtMe charB ;merchant actor must provide merchant container to new guy/gal ForEach ar1 <- GetActorPackages Let rf1 := *ar1 if GetPackageOffersServices rf1 Let rf1 := GetMerchantContainer if rf1 ;the getmerchantcontainer command rf2.SetMerchantContainer rf1 ;set the owner of the calling script to a reference rf1.ClearOwnership rf1.SetOwner rf2 break endif endif loop End EDIT : edited script slightly, less variables, more compact. syntax GetSelf removed -- I made a mistake there
  15. hi Noxx ! :) I didn't test this bug intensively before... but if I'm not wrong, this only happen to food items~
  16. I noticed this bug pal... this is Oblivion engine bug regarding stacked item of same type the case could be something like this, assuming pc has 43 apples because Oblivion differ stack based on ownership or leveled list or script item type... the 43 apples could be something like this example --> 10 apples + 5 apples + 1 apples + 27 apples when the command remove called upon the target actor to that stacked apple, the game would crash... I've reported this bug to Tiawar, the EngineBugFix creator and his answer is like this short answer : this bug can't be fixed easily long answer (his original writing) : Your CTDs are caused by some bugged extra data in the internal stacks for the potatoes and bread loafs. The culprit is leveled list created items. Items created by leveled lists store the source list inventory index so they can be removed when the actor/container respawns. This makes them rather fragile since any changes to the number or order of the leveled lists in the inventory will result in a wrong list index. What's more, when you remove such an item and the stack count reaches 0 then the code sets the Count property to a negative value. This is quite weird and while some code sections seem to be ware of this other sections are clearly not and return a wrong count value which can cause trouble. I'm still not sure WHERE the bug is in this. But it's only part of the bigger problem of the inventory changes code itself, which is probably the biggest mess in the entire code with many bugs and several memory leaks (harmless since very small). The coding is so convoluted that probably only a complete rewrite can save it. But that would be a huge task and most likely conflict with other plugins like OR or even some OBSE functions. For similar reasons I've not been able to make a fix for the disappearing items bug we talked about before. So, as it stands, I can't offer you a real solution to the problem atm. Maybe sometime in the future.
  17. did a quick lookup I believe there is other NPCs that offer service / sell stuffs outside merchant class but there you go~ here's a quick search list result ALL vanilla actors that has merchant class click spoiler button
  18. haha I think that script is not that impressive, since you need to edit each NPCs one by one, which is hassle but as you mentioned, you only edit merchant it should do & could achieve what you want don't hesitate to ask, if you encounter issue with it. maybe I could still help with this limited skill of mine anyway my weak point in modding is modeling thingy, that mesh texture & animation...so confusing well... I not a fan of online games in any kind,,,,,,, really any kind, so I don't think I will ever play ESO
  19. hahaha that crack me up I agree the idea has certain kind of fun element there, I never played ESO my rig has very poor performance, so I can't mess up much with it I have Skyrim but this machine-I-want-to-replace-when-I-have-money-immediately is my problem now yups with the new script you could skip the new container copy and I didn't test the script, just using my imagination... but I believe it should works with delayed execution (72 hours, if your cell reset game setting has default value)
  20. hey Noxx I think this could give delay before the successor appear & replacing the dead NPC's job scn inkeeper1 short rent short sleephour short setup ref successor short flag ref rf1 array_var ar1 Begin GameMode if rent if setup if GetPCMiscStat 20 != sleephour set rent to 0 set setup to 0 AnvilCountsArmsRentDoor.SetOpenState 0 AnvilCountsArmsRentDoor.lock 30 AnvilCountsArmsRentBed.SetOwnership endif else set sleephour to GetPCMiscStat 20 set setup to 1 AnvilCountsArmsRentDoor.unlock AnvilCountsArmsRentBed.SetOwnership endif endif if flag ;after this dead body is aging more than reset hour, the charB got the action if GetTimeDead >= GetGameSetting iHoursToRespawnCell Let flag := 0 Disable ;I would like character b to spawn at a map marker at the entrance to town (anvil) successor.MoveTo AnvilMapMarkerNEW endif endif End Begin OnDeath Let flag := 1 ;Once character A dies, character B is spawned Let successor := PlaceAtMe charB ;merchant actor must provide merchant container to new guy/gal ForEach ar1 <- GetActorPackages Let rf1 := *ar1 if GetPackageOffersServices rf1 Let rf1 := GetMerchantContainer if rf1 successor.SetMerchantContainer rf1 break endif endif loop successor.Disable EndEDIT 1 : after some thoughts... if you use this script, then I think you need to edit each argonians one by one huh?? is that alright for you? it could take forever you know... and the anti-argonian that hatred inside you will / may grow to the max while you doing that XD I think this argonians hunter mod should use GetFirstRef instead, rather than editing one by one each argonian in Oblivion... EDIT 2 : Find : argonian. Found 111 records XDare you sure ? (below is ALL vanilla argonians NPC)
  21. quote : "Any way to delay charB from arriving at his new job? I mean charA dead body is still there and he already has took his job LOL">>> umm... this is difficult, like I said before. DYNAMIC NPC is the real big problem here,usually they're not loaded in memorythat's what makes them so super special annoying casealso...you mentioned merchant soI have another suggestion, here's more better revision.. scn inkeeper1 short rent short sleephour short setup ref rf1 ref rf2 array_var ar1 Begin GameMode if rent if setup if GetPCMiscStat 20 != sleephour set rent to 0 set setup to 0 AnvilCountsArmsRentDoor.SetOpenState 0 AnvilCountsArmsRentDoor.lock 30 AnvilCountsArmsRentBed.SetOwnership endif else set sleephour to GetPCMiscStat 20 set setup to 1 AnvilCountsArmsRentDoor.unlock AnvilCountsArmsRentBed.SetOwnership endif endif End Begin OnDeath ;Once character A dies, character B is spawned. I would like character b to spawn at a map marker at the entrance to town (anvil) Let rf1 := AnvilMapMarkerNEW.PlaceAtMe charB ;merchant actor must provide merchant container to new guy/gal ForEach ar1 <- GetActorPackages Let rf2 := *ar1 if GetPackageOffersServices rf2 Let rf2 := GetMerchantContainer if rf2 rf1.SetMerchantContainer rf2 endif break endif loop End EDIT : script improved, more refined, & streamlined
  22. actually I did learn OBSE scripting much from here in Nexus, especially from user Forli (the creator of Vampire Revolution) and other users too QQuix, Karmus, etc etc glad that it works now Happy hunting~!! (oh poor argonians...XD )
  23. quote : "If I wanted the same character to just respawn then I could simply check the respawn box no?" >>> This ... is Yes and No Yes the NPC will respawn when the cell is got reset routine (by default this game setting is 72 hours = 3 days in-game) NO ! because... if the NPC is die in exterior, and you frequently visit that exterior or even interior, that NPC will NEVER got respawn since everytime you visit that favorite cell, the reset hour in that cell got reset to 72!! This is heavenly annoying, usually happen in exterior quote : "Does it matter the way char A dies? because I am using frenzy and he gets killed by the guards" >>> nope, if OnDeath block don't have parameter whatever kills that NPC will trigger the script hmm... I don't know what is wrong in your setup here's my suggestion for new script scn inkeeper1 short rent short sleephour short cleanup short setup begin GameMode if rent if setup if GetPCMiscStat 20 != sleephour set cleanup to 1 endif else set sleephour to GetPCMiscStat 20 set setup to 1 AnvilCountsArmsRentDoor.unlock AnvilCountsArmsRentBed.SetOwnership endif if Cleanup set rent to 0 set setup to 0 set cleanup to 0 AnvilCountsArmsRentDoor.SetOpenState 0 AnvilCountsArmsRentDoor.lock 30 AnvilCountsArmsRentBed.SetOwnership endif endif End Begin OnDeath ;Once character A dies, character B is spawned. I would like character b to spawn at a map marker at the entrance to town (anvil) AnvilMapMarkerNEW.PlaceAtMe charB End
  24. ahh I see... now I get it, then the first script is right solution for that could you post the full script here? I already tested the script & it is working fine maybe there is something in block GameMode that causing the script stop working
×
×
  • Create New...