Jump to content

csbx

Supporter
  • Posts

    639
  • Joined

  • Last visited

Everything posted by csbx

  1. You guys gave me an idea about one possibility unconsidered. It just so happened that the pertinent dialogue had no .iip files. I generated them and it seems that has solved things--question mark. I earlier tried the force prompt between dialogues and that didn't seem to take so I'm probably looking at a forcegreet if this turns out not to be solved--though it would be a PIA to implement here.
  2. To be honest, I used to only have topic [A] with the function running in the 'pre' fragment (generating the globvar) and the conditions (with the globvar) in the same topic. I recognized the issue and so split it to [A] and {B} thinking that would split the setting of the globvar and the checking of the condition. Apparently that's a no. It's as if [A] and {B} topics load up simultaneously.
  3. So I have 2 final dialogue topics TopicA and TopicB In the 'begin' fragment of TopicA I run a function that calculates some stuff then sets a globalVar. In my test cases globalvar x was set to 91. TopicA then flows via invisible continue into TopicB, which has dialogue with condition globalvar x <= 80 I run a debug in the function and in the fragment in TopicA which shows that x is indeed 91. The dialogue with condition globalVar x <= 80 displays, despite the reality that x = 91. I'm totally baffled and the only thing I can think of is that it's a timing issue with the globvar being set and then checked almost immediately. But I don't know. Any ideas ?
  4. Yep--that's it. Thank you. I'm steeped in the math way to resolve these so will have to adjust. I'll check out the wiki !
  5. Well sheeeit. That's rough. I actually have my setup working now, but, yes, it only works if the player is talking to an npc that is currently in a normal kind of location. E.g. if the npc is outside whiterun city, works beautifully. if it's the fisherman you're talking to down below the standing stones south of riverwood, it fails--presumably because of the PlayerLoc = game.getplayer().GetCurrentLocation() that I'm then running through If (PlayerLoc.IsSameLocation(PlaceInWhiterunHold, loctype)) I guess I should have really understood the topology around the topic before delving in headfirst presuming it would work.
  6. Location Property PlayerLoc auto PlayerLoc = game.getplayer().getcurrentlocation() debug.messagebox(playerLoc) if PlayerLoc.isSameLocation(w, keyword.getkeyword("LocTypeHold")) the debug yields NONE so clearly I don't understand even the basic portion of this EDIT: I just remembered something you said in another thread about locations in the wilderness potentially being NONE. So my code may potentially be set up almost correctly after all. So PlayerLoc is getting me nothing here--but I need to return the hold level info; then I could just use If PlayerLoc == w ;whiterunholdlocation
  7. PlayerRef.IsInLocation(w) The above never gets satisfied, though the player is definitely in Whiterun Hold (tamriel worldspace). Property w is assigned to WhiterunHoldLocation. I think I know what's wrong here. I should be asking if WhiterunHoldLocation is a 'parent' to the location that is currency in my code. I think..
  8. So rather than a comparison, what ends up making sense for my situation is the following. Now, the following does NOT work, so I'm hoping you have an idea why that is ! If PlayerRef.IsInLocation(w) ; w is a location property and is filled by "WhiterunHoldLocation" debug.messagebox("player is indeed in whiterun") If MapMarker.IsInLocation(w) || MapMarker.IsInLocation(h) || MapMarker.IsInLocation(f) h,f are loc properties for other hold locations debug.messagebox("work normally, help the player") Else csbmagmapchosen.setvalue(93) debug.messagebox("can't help the player") Endif elseif .. endif
  9. It's been a long while since looking at this so I just wanted to confirm. If I would like A & (B OR C) This expands to (A & B )OR (A & C) But I'm not clear if the below designation represents the above: A (AND) B (OR) A (And) C (?)
  10. Very much appreciated. It's indeed annoying not to be able to quickly view the quests whose elements I'm touching in some way in the CK--but I at least understand the logic of that and am happy it's not something weird going on.
  11. Right ! I'll have a look at these possible angles. Much appreciated. Thanks for taking the time. What happens if the player is currently in Dragonreach (just as an example) or in some cave in Whiterun hold. Does the game count the parent location (type hold) as Whiterun hold ? I'm worried my checks will work 95% of the time, but that I'm not solid enough on how the game designates this stuff that I'll fail to properly formulate conditions.
  12. e.g if I have a map marker ObjRef in a Formlist ? I'm trying to compare the Hold location of the player (a) with the Hold location of a particular place (b) (via its map marker). If a = b give information (cuz npc is in the region and knows) else tell player to ask around in (b). EDIT: I guess I'm doing something like: if player.IsInSameCurrentLocAsRef MapMarkerInFormlist LocTypeHold give information blah blah But I don't understand how to set up the following more complex checks: If currentHoldofPlayer == 0 ; e.g if player is in whiterun hold currently If (holdofAParticularLocation(via map marker) == 0) || (holdofAParticularLocation(via map marker) == 3) || (holdofAParticularLocation(via map marker) == 5) ;ie,a nearby hold give information to player because npc is in the hold or a nearby hold. Else npc tells player they don't know, and sends them to hold (of mapmarker) Endif Elseif currentholdofplayer == 1 ... Endif
  13. It's really helpful watching others formulate things in ways you'd never think of. And--yes--I've never used Find for indexes so will get right on integrating that. Cheers, you two !
  14. ElseIf (QI == 4 || QI == 5 || QI == 6 || QI == 7 || QI == 8 || QI == 9 || QI == 10 || QI == 11 || QI == 12 || QI == 14 || QI == 15 || QI == 16 || QI == 17 || QI == 18 || QI == 19 || QI == 20 || QI == 21 || QI == 22 || QI == 23) There has to be a nicer way to write this. Something like, "Elseif (QI IsOneOf [4,5,6,7,8])" or "Elseif (QI isOneOf[4..12,14..19]). I suppose if ((QI >= 4) && (QI <= 12)) || ((QI >= 14) && (QI <= 23)) or similar would work. Are there related syntax moves that would be better ? Here's another even uglier one: If (csbmagellanquest04locations.isrunning() && SavedText[0] != CorrectReplacementText && SavedText[1] != CorrectReplacementText && SavedText[2] != CorrectReplacementText && SavedText[3] != CorrectReplacementText && SavedText[4] ...... If the above goes to index 19, that's just a monstrosity. Is there a better way to tackle this ?
  15. As I would expect, I notice an asterisk next to a couple of vanilla quests / objects that I have made an edit to. But I also am noticing that there are a subset of vanilla quests that have been altered but which do not include an asterisk and don't show up when I click on the 'show active forms' checkbox. These are vanilla quests that I've added a fragment AND property assignment to within its dialogue. Shouldn't these quests show up in the 'show active forms' selection ? Or is this expected behavior ?
  16. I have an index within a script that adds items to a book--each entry is its own page. I was wondering if I could use that index--which tracks what page we're writing to--to open the book at that page when the player opens it. Even if the player opens the book and it then flips to that page. I've looked for something regarding this mechanic and haven't found it. Any ideas ?
  17. Superb and fulsome answer. I had no idea there were scripts (other than meta function scripts e.g. math) being used like this so this was educational for many reasons. Thanks a lot !
  18. How do I find this in the Creation Kit ? I look for that as a quest name, but there is none. If it's attached to another quest, how do I find that quest ? This may seem really obvious, but I'm afraid it really isn't obvious to me. There is no script by that name attached to CR06. I must be missing something obvious.
  19. Wow - thanks a lot--that's definitely it. But I'm confused about your method of finding that. My process was to see that 'Parent.Accepted()' was called and then to look for the Parent quest. I thought it was C00 based on the quest property on that script. But I don't see anything there. Where is this script ? You probably knew where to look--how !?
  20. Well, my lame little mod is chugging away having made some great progress in the last month or so. But I'm stuck at the following problem: My mod is looking at some radiant quests, but some of them are structured in ways I can't decipher. E.g. In the bounty quests BQ01-BQ04, the map marker is added to the map via quest stage 10. Easy. But in looking at, e.g. CR06 (stolen heirloom) and several other similar quests, I can't see where in the code this occurs--though I know that it does add a marker to the map. I was thinking it was some kind of parent quest script but I just don't see it after an hour of investigation. Could someone take a quick spin through CR06 and see where this is occurring ?
  21. My .esp is just under 200KB atm - though likely will be around 300KB when finished. I wish there was more available info (is there ?) on best practices and ways to reduce ram usage and other problems for end-users.
  22. So I can now confirm that the issue with having notes/books with changing aliases (e.g. if you do two bounty quests from bq01, does each note maintain integrity) is SOLVED when using this method of filling the alias is used. It is a pain in the ass compared to a bunch of strings stored in an array in a script, but it works.. I think all my mod is doing in terms of taking resources is adding an extra objref (somehow) stamped into each bounty letter received by the player. So if the player has 10 or 15 of these in their pockets, or left in trash chests etc. that seems like not a problem. Is having a bunch of objrefs in a cell the player never enters taxing ? Because obviously my 'pool' of objects that fill the aliases is sitting there and is only pulled from as needed for these quests.
  23. I'm ashamed to say it was an indexing problem re: formlists. I was essentially calling for index results way out of range due to wrongmath lolz. Thanks man.
  24. I'm going to give it a go. It's all set up, but I'm really daft about the syntax so something is wrong. I have: csbMagTextHolderAlias[QuestIndex].forceRefTo(MyFormlistWithMyObjRefs.GetAt(5) as objectreference) But the alias doesn't fill. It's weird--if I debug.messagebox the 'MyFormlistWithMyObjRefs.GetAt(5) as ObjectReference" it indeed yields something like "objectReference <The Id number>". I tried defining an objectreference property and dropping it in there and it worked just fine. Am I not allowed to pull an obj.ref from a formlist like that ? I'm so confused why that isn't working.
  25. Just to fill out a little more precisely what I'm trying to do: The mod I'm working on has a few modules associated with it. The module I'm working on now is about bounty quests. I'm trying to expand the 'even better quest objectives' concept to these quests. I have a small text blurb associated with certain locations and a function that looks at that quest's aliases, produces the right text for the generated location alias and fills the alias in the note the player receives. As discussed above, the setname/forceRefTo works swimmingly for the first quest, then--as you both seem to grasp well--the second fails because it effectively resets the first letter's 'blurb' alias. The only method I see to solve this is one objRef per blurb, then fill the alias with that objRef, re-using as needed. I'm not sure what a moderate approach would look like in this case. I'm just serving up one objRef at a time per bounty note--which don't appear in abundance, really.
×
×
  • Create New...