Jump to content

cyran0

Members
  • Posts

    55
  • Joined

  • Last visited

Everything posted by cyran0

  1. Upon reflect this does not astonish me. It appears that map markers (if I may be excused for applying that term to Morrowind) are associated with named world cells, such as settlements, citadels within the Ghostfence and other specific quest destinations. To create the mod you describe all cells that contain a POI (point of interest?) would need to be renamed with the name of the cavern or ancestral tomb located in that cell. As a modder, I'm horrorstruck by the idea that the official cell names that I've come to depend upon as eternal could change and foil my carefully crafted plans. Moreover, if more than one POI is located in the same external cell only one of them could be represented on the world map. World map locations are identified by script or when visited. They do not indicate that the location has been cleared. Seyda Neen is marked on my world map long before I have murdered everyone in the town and taken all their possessions. As Che Guevara pointed out there are existing ways of indicating on the player's map that a location has be explored, although these can be created/read only on the local map. Other clever approaches players use is to drop an item in front of the entrance or use Chalkā„¢ to mark an 'X' on the door. Of course, one can always write the name of the location on a piece of paper.
  2. I puzzled over that one myself. No, it's not one of ours. When my search for it came up empty I concluded that it was probably the result of using a merged-whathaveyou tool, and your origin clue seems to confirm that. If it is such a 'patch' logically, it should load after the mods it affects. If changing the load order of the LGNPC mods resolves the issue, I would appreciate it if you would let me know.
  3. Jo_MorvaynGlobal is from LGNPC Pax Redoran and so I expect all of the topic "EMPTY" messages relating to Morvayn Manor are associated with that mod. I've examined Pax Redoran in the editor, again. There are no topics "EMPTY". I cannot reproduce those errors when I start Morrowind with Pax Redoran loaded. I've generated "EMPTY" topics during work on mods after creating a new topic. It sorts itself out after saving, reloading, and resaving the mod in the editor. I've read that the error can be generated by load order conflicts, but I cannot confirm this. I have noticed that you have other LGNPC installments loading after Pax Redoran. We advise loading Pax Redoran after all other LGNPC modules. However, if mlox advises the order you are using I suppose it knows what it's doing. max_avovando_paid is from LGNPC Aldruhn (the original file, not the supplement). I suspect (I don't recall) that it was a local variable in a script we added to Avo Vando. We have since suspended such practices and cleaned away all such changes to official NPCs in Ald'ruhn in order to avoid conflicts with other mods. However, that variable is referenced in three lines of dialogue under the topic 'House Redoran'. Those lines are filtered in such a way that it is impossible for the player to ever read them. That does not prevent the game from generating the error upon loading - although the dialogue topic is not "EMPTY". We will clean those dialogue entries from the mod permanently from the next update of LGNPC Aldruhn. For now, it is a harmless warning.
  4. The filters 'Class' and 'Not Class' refer to the speaker's class, not the PC's. There are no dialogue filters that reference the player's class. Whether the player creates a custom class during character generation or chooses the class you newly created in your mod (assuming that is your approach), no filtering of the greeting by class is required - it is understood that the player is that class, or there is no need to load the mod in the first place.
  5. I'm looking at Cyrodiil_main.esm right now and I don't see that it should produce this error. The original entry is where it should be and properly filtered for Imperial Guards, and there are no new entries with that text. This bug was reported in January of this year - both here and posted at the mod's download page. It was not acknowledged by anyone associated with the project. However, the archive was updated in February. Using the currently available version, I was unable to produce the error. Perhaps your friend is using an out-of-date file.
  6. You're welcome. Sometimes it just takes a pair of fresh eyes. The first was just a copy and paste error without making the proper adjustment for the different circumstances. The second was just your subconscious telling you that it would run more efficiently with a series of elseifs.
  7. There are two critical issues that I see: if ( starblessing == 0 ) if ( GameHour > 20 ) if ( GameHour < 6 ) ;hour is 6 to 8 AM set starblessing to 1 Messagebox "Underneath the stars, you feel the staff of silyanorn swell with their power.'" endif endif endif GameHour > 20 and GameHouse < 6 are mutually exclusive. It is impossible to satisfy both of these conditions at the same time. Therefore, starblessing is never set to 1 and you spells cannot be added. What you want is: if ( starblessing == 0 ) if ( GameHour > 20 ) ; evening/night set starblessing to 1 Messagebox "Underneath the stars, you feel the staff of silyanorn swell with their power.'" elseif ( GameHour < 6 ) ; night/early morning set starblessing to 1 Messagebox "Underneath the stars, you feel the staff of silyanorn swell with their power.'" endif endif The other issue occurs after starblessing is set to 1 elseif ( starmonth == 3 ) Player->Addspell "LaW_Staff_Mage_Blessing" ;the Mage endif This creates the structure: if ( starblessing == 1 ) if ( starmonth == 0 ) endif if ( starmonth == 1 ) endif if ( starmonth == 2 ) endif elseif ( starmonth == 3 ) endif if ( starmonth == 4 ) endif if ( starmonth == 5 ) endif if ( starmonth == 6 ) endif if ( starmonth == 7 ) endif if ( starmonth == 8 ) endif if ( starmonth == 9 ) endif if ( starmonth == 10 ) endif if ( starmonth == 11 ) endif This terminates the starblessing == 1 logical block before the end and sets up the remaining months to operate independently. You want if ( starmonth == 3 ), or make all of them elseif after starmonth == 0 and eliminate all of the endifs (except for the last, of course). Lesser issues: if ( staffOut == 0 ) if ( Player->GetItemCount "LaW_Staff_Light" > 0 ) Player->RemoveItem "LaW_Staff_Light" 1 set addOnce to 0 endif endif Add an addOnce == 1 check so the script is not doing an item count every frame. Similarly, you are removing spells every frame that starblessing == 0 is true. You could introduce a doOnce condition to prevent that from happening. There may be other ways of tightening up your code, but I have to run (literally).
  8. Yes and no. Bethesda gave Telvanni guards (both versions) a medium armor skill of 7. Their heavy armor skill is 75. Sharpshooters have a medium armor skill of 60 (heavy armor is 20), but they are two levels lower than the guards. Whether it was a momentary lapse of memory that bonemold is medium armor, just an entry error, or something else, it's the reason that the bonemold cuirass doesn't fit them very well. That in itself doesn't make for naked guards. My brief research into the matter cites BTB's game improvements as the culprit. It was reported to change game settings that make NPCs more strongly favor armor commensurate with their skill. The result is naked guards (Telvanni got to be free). It is easy to understand how this escaped BTB's detection. Those of us who have been around long enough can recall BTB boasting about how he had never played Morrowind. That is why I don't have any firsthand knowledge of his mod. That this is relevant at all is speculation on my part. Slicevicious has not provided any details of his/her mod list. I checked, and the Patch for Purists doesn't make any change to the armor skills of the Telvanni guards. It is reasonable to suppose that none of the other unofficial patched address the matter. Anyway, I've give Slicevicious one more day to claim his/her prize before I take it down.
  9. I can't say this will solve your issue. My Telvanni guards come fully clothed so I cannot test it. I am not certain what information about the guards is preserved in your saved game's record. Sometimes changes to official NPCs don't 'take' because they are over-written when the save loads (always last). If that is a problem, you could try to clean your save. Those spawned from lists might be fine, but you may have to kill the existing spawn for public indecency to trigger his/her replacement. There is the matter that Telvanni guards will no longer behave as guards since they are warriors. They will not interdict if you perform a crime, and they will not come to your aid if you're under attack (as if they ever did). I didn't change the sharpshooters since their medium armor skill was appropriate, but if the class and unarmored changes are necessary, they might still choose to go 'au naturale'. Good luck. https://drive.google.com/file/d/1jwpuagp5i6rO4AmWSTCv-fLDrmkQ3sOv/view?usp=sharing Edit: Activate the link; permissions will follow.
  10. Structurally, it looks fine. The float timer isn't being used. I assume the script compiles and you have it attached to the guard. The game engine can be finicky - sometimes you have to chew its food for it. Try: if ( ( player->GetDistance "VPImperialPatrolMF6" ) < 5000 ) It is inefficient to include two identical distance checks every frame. You can combine the travel code with the recover code under the same umbrella. Alternately, you could place the following block after the menu check: if ( ( player->GetDistance "VPImperialPatrolMF6" ) >= 5000 ) return endif It seems like the script is stalling at state == 0, but it could be at state == 5. If the coordinates of AITravel are not attainable (too far, not in line-of-sight, etc.) the NPC might be paralyzed by indecision. I can see that the distance between point 1 and point 2 is over 2500 units. That's on the long side, but it may work if there are no obstacles. Otherwise introduce intermediate waypoints to make the route navigable. You can introduce messageboxes that display at each step to find out how far the script processes before there is a problem.
  11. Pathgrids are perhaps the least documented aspect of modding for Morrowind - I haven't done it years. I can describe the process if you are interested, but the scripted approach gives more control and easily allows you to cross cell boundaries outside (pathgrids are confined to a single cell). In answering the questions raised in your other thread, Morrowind Scripting for Dummies (MSFD) is the best scripting reference available to modders. The original author Ghan Buri Ghan was extremely knowledgeable about scripted movement of NPCs, so his examples will be very much to the point. If you get frustrated writing a working script, post the coordinates for the waypoints you want, and I can give you the basic structure of the script for you to amend as you please.
  12. It is true you cannot filter journal entries. The way you prevent non-faction NPCs from updating the journal is to filter those responses as I described. As for using text-defines like %Name in a journal entry, I have no experience to call upon. It might permanently reference the NPC that created the journal entry, or it might display the value stored in the string %Name since the last time it was updated (presumably whenever dialogue is initiated with an NPC). My instincts expect the latter, but you have been testing so perhaps is does work the way you hope. I am already out of my depth. I don't recall seeing a duplicate entry in the journal (a second instance of the same journal index) - even when a message displays the journal has been updated. It might update the content of the text-defines (overwrite the previous values) if my instincts are correct. Each NPC will require a unique entry with a unique index. I doubt you will get any help from a script extender.
  13. Under speaker conditions, filter the dialogue entry for Rank: Rank 0. Do not identify a faction. This will make it possible for a member of any faction to use your greeting/response. There is an official example of what I describe under the topic 'background' third entry from the bottom. If you are randomizing a dialogue response, filter the entry under Function/Variable by Global: Random100 < 50 for a 50% chance of the response appearing. If this is a script, add the condition: if ( Random100 < 50 ).
  14. Yes. You can use AITravel. Script the NPC to travel to one point, and check for when the NPC arrives using GetAIPackageDone. When the latter returns true, issue AITravel to the next check point. Once the cycle is completed you can set it up to repeat. You can script pauses and idles at each checkpoint before the NPC continues. Another approach is to create a pathgrid for the NPC and use AIWander. That creates a more random patrol, since the NPC may pause and sometimes reverse direction before completing the journey to a checkpoint. Such a pathgrid needs to be distinct from any existing pathgrid. The NPC will leave the grid to engage in combat, and it's problematic to restore the patrol afterward.
  15. Such a script might be as simple as: Begin CliffracerRoulette short doOnce if ( doOnce == 1 ) return endif set doOnce to 1 if ( Random100 < 33 ) ; one-third chance of disable Disable endif End
  16. Keys are miscellaneous items and Ralds Oril (trader service) sells miscellaneous items, so you don't need a special category for keys. However, as you may have observed, the key is not available for purchase. I seemed to recall an explanation for this being that keys do not have any weight. I made my test key weigh 0.01 units and Ralds Oril happily sold it to me. I also tested by placing the (weightless) key in his inventory, and it was available for sale. I understand why you might not want to make changes to an official NPC, but the key could be added by a script. It sounds like Ralds Oril is selling a home. You might decide to sell the home and offer the key through normal dialogue rather than the barter menu. In that case, the key can be offered through dialogue results when the player agrees to purchase. No weight is required.
  17. It's an official entry filtered for ID: Imperial Guard (generic guards). One of your hundreds of mods may have inadvertently tampered with that filter. That seems more plausible than the creation of an unfiltered new entry with the same text. Not all NPCs report this background. LGNPC backgrounds are above this official entry, so you should see our content when in a less generic town. If not, then perhaps the unknown author did create a new entry and insert it very near the top of the list.
  18. Yep, that our (my) bad. Apparently there is no Molag Amur region in the game. Instead it is Molag Mar region. Sadly, the script compiler did not catch it. Either the line did not have a chance to process during testing (unlikely) or the game engine shrugged its shoulders and let it pass, but the error has gone undetected for over ten years. Since your game immediately crashes upon loading, there is no point in providing the console commands that would let you side-step the problem. If you have an earlier save from before you began the process of choosing a steward (that is before you appoint one of your retainers as steward), you can prevent the error by opening the console and type: "tunila omavel"->SetHello 31 That will cause the script to stop running and restore Tunila Omavel's healing services. Do this after starting the process of choosing a steward, but not before you have spoken (not appointed) all of the retainers you want to consult. Alternately, you could edit the script in the construction set. Load the script: jo_tu_StewardScript Edit line 23: elseif ( ( GetPCCell "Molag Amur region" ) == 1 ) to read: elseif ( ( GetPCCell "Molag Mar region" ) == 1 ) Save (compile) the script, save the file. Clean the mod with tes3cmd, renumber the references using Wrye Mash (46759) and redate the mod using Wrye Mash (6/26/2008/11:00:00 PM). You may receive a warning upon loading you save, but if you did it correctly, the warning will not return after your next save. I'm on it now. Update: I cannot get the change to compile (you might have better luck). The compliler does not recognize the region 'Molag Mar Region'. That may be because the cells in the Molag Mar Region have the ID Molag Amur. For those of you who are confused by all of this, Bethesda mistakenly named the region after the settlement Molag Mar, but the cells are for the region Molag Amur. Is it possible that you (Anthon) are using OpenMW? Its engine tends to be more exacting. If that is the case (and I would appreciate knowing), I need to rework the script to run under OpenMW, before LGNPC Tel Uvivith can be complatible with the new engine.
  19. The line if ( timer , 3) should be if ( timer < 3 ) I'd me more comfortable with "db_chest_top_00"->Move Y 20 We can't copy the text out of an image, so in the future it would be helpful to paste the code rather than an image of it.
  20. On the upper right side of the construction set window, just below the drop-down menus, is the toolbar. Third from the right (the text bubble) is the icon to open the dialogue window, but you can do it the way you described. Yes, the player needs to learn new topics before they are available. One way is to introduce the topic word or phrase in a greeting or another topic. That is nice because it creates a guided conversation through the hyperlink. You can also use AddTopic in the dialogue results section of a greeting or topic, and also from a script. E.g. AddTopic "latest rumors". I typically use both methods at the same time - you know, 'belt and suspenders'. You are not restricted to a mere 512 characters to tell your story. Add the line: Choice "Continue" 1 to the dialogue results of the start of the speech, create a new entry above that and filter it for Function: Choice = 1. You can add as many continuations as you want: Choice "Continue" 2, etcetera. Jac wrote a dialogue tutorial that many have found helpful.
  21. It sounds like you opened the dialogue window from the open window of your new NPC. Correct me if that is wrong. When you do that, the existing dialogue is filtered for the NPC. That is by class, race, faction etc. When dialogue is filtered it is not possible to move or create new entries, so the entries you edited and deleted were the official responses that other NPCs would regularly use. That is not what you want to do. You might be able to fix this easily. Open the full, unfiltered dialogue window and find your edits (yes, they are marked with asterisks). Select (for example) your edit of the background response. Right-click and select 'Copy'. It will make a duplicate of that entry above the original. Make whatever changes you want to the duplicate (upper) entry. In particular, under speaker conditions, enter the ID of your new NPC. That assures that only that NPC will use the dialogue response. You need to clean the original entry as well as the other official entries around your new entry that are marked with an asterisk. My approach is to replace the text with 'x' to make it easy to recognize. Repeat this process for every topic that you changed. To clean the mistaken changes to the official entries, you can use a third-party utility or the construction set itself. For the latter, go to the File tab, Data Files and select your mod - assure it is active. Don't click [OK] yet. Click on [Details]. It will list all of the changes your mod makes, including those mistakes. They are INFO entries. They should be easy to identify since their content is a single 'x'. Select and press [Delete]. An info window will pop-up saying you have toggled the 'ignore' flag and as you to confirm. Say [Yes]. An 'I' will be added before the line of text. Do this for those entries that you 'deleted' in the dialogue window. [Close] file details and now click [OK] to load your mod. When it loads, it will ignore the changes you marked - it does not delete them from the game. Your unintended changes are ignored, restoring the original entries' content. You can confirm this by going to the topic 'background' to see only your new entry marked with an asterisk and all the x's are gone. Saving will preserve your clean mod. When you next load your mod in the editor, you will see several warnings that changes were made to official 'background' entries and those of other topics. This is not an error or a problem. The change is to the linked list that is Morrowind dialogue, because you inserted new entries. This is the way you want your dialogue changes to be handled. Edit: @Leonardo: Thank you. I am pretty knowledgeable about dialogue, but there are plenty of modders I defer to about the construction set in general. About my inevitable appearance - am I really that predictable? :wink:
  22. I will preface this by broadly observing that there are many reasons for content to left on the cutting room floor - it is not always about making things shorter. No key exists in the base game to free the slave in Madach Tradehouse. Of all the slaves The Cutting Room floor professes to help, the one in Madach Tradehouse is not among them. There is no dialogue entry filtered for that cell that would allow the player to free Utadeek even if a key existed. There are other mods that make it possible to free slaves that are otherwise impossible to save.
  23. You forgot to reset timer to zero after the first 'movement' cycle (and again after the second cycle). When state = 3, the condition timer > 2 is immediately satisfied and it executes the move (Position) without pause. The FadeOut still executes normally. For the function Position, the rotation about the z-axis is in minutes of arc rather than degrees, so there is little difference between 11 and 314. If those are the in-world angles you want, multiply them by 60 before assigning the values to Position. I'm a big fan of hiding 'how the sausage is made' behind a fade out, but you might in this instance experiment with Move (not MoveWorld since a rowboat has orientation) and allow the player to see the boat make the journey in real time.
  24. Here is an instance of my usual book/note script. It works if the book is activated while still in the world, or if it is equipped from the player's inventory. You may not require the journal index check before updating the player's journal. It can be removed leaving just the journal update. It can be used to do things other than updating the journal: add an item, display a message, give the player a disease - the possibilities are endless. Begin lgnpc_fq_JobashaBookScript2 ; Attached to unique book "lgnpc_fq_TLNote2" ; Updates journal when player reads note. short readNote short PCSkipEquip short OnPCEquip if ( readNote == 1 ) return endif if ( menumode == 0 ) return endif set PCSkipEquip to 0 if ( OnActivate == 1 ) ; if note is in world if ( GetJournalIndex "lgnpc_fq_Jobasha2" == 10 ) Journal "lgnpc_fq_Jobasha2" 20 set readNote to 1 endif Activate return endif set PCSkipEquip to 1 if ( OnPCEquip == 1 ) ; if note is equipped from inventory if ( GetJournalIndex "lgnpc_fq_Jobasha2" == 10 ) Journal "lgnpc_fq_Jobasha2" 20 set readNote to 1 endif set OnPCEquip to 0 set PCSkipEquip to 0 Activate endif End lgnpc_fq_JobashaBookScript2
  25. It crashes because the local variable 'moneygiven' is not found. Variables cannot be declared in dialogue results, so unless it is declared in a local script attached to the NPC (or is a global variable) the game engine is not aware of it. You have a couple of simple options. Place, or amend, a script attached to the NPC to declare short moneygiven. If this is a new NPC that the mod introduces, that is a safe solution. If this is an existing NPC, then adding the script creates the possibility of mod conflicts. In that case, it would be safer to create a new global short variable named moneygiven (with the prefix you are using to distinguish your work on this mod). However you proceed, do not declare the variable in dialogue results. Also, do not set the variable to 0 - that is its value by default. By setting it to 0 in the script, you are making it do-forever since this is run every time the topic is discussed by the player.
×
×
  • Create New...