Jump to content

Galcyon

Members
  • Posts

    68
  • Joined

  • Last visited

Everything posted by Galcyon

  1. Ok, been a bit busier than I'd like, but now that I've sat down and tried to understand your work, I now realize why the CK won't load your script, and why I still can't understand what you were doing. In your .esp, the script attached to RN_PlayerQuest is named "RN_QuestScript". The .zip file you uploaded only has the source and compiled versions of "RN_EffectScript"; no other scripts appear to be part of it. So, effectively, "RN_QuestScript" is completely absent, which explains why I can't access it. Because I'm (apparently) lacking one of the vital components of your work, I ulitmately can't understand what you did to get it to work, though I see all the pieces you used. I have a vague idea of how they fit, but I'm not knowledgeable enough in Papyrus to even guess as to how the script would look.
  2. In your Skyrim/Data directory, there should be a file labeled "Scripts.rar" try unzipping the contents of it and stuffing it into the Skyrim/Data/Scripts folder: let it make one if you don't already have it. It contains a lot of necessary information that allows the CK to understand and run Papyrus, and there's a common bug where the CK can't actually read or run scripts while everything is in the .rar file, and therefore compiling a script will only result in a ton of errors.
  3. This is most likely the case. I still get occasional errors about it not finding vanilla scripts, and when I first started script working, I had to drag the files out of the compressed scripts file in Skyrim\Data, since the script kept failing to compile with unknown errors.
  4. The old drag-and-drop. I'll use NMM if a mod is complex (such as, multiple .esp options for installation), but I'm most comfortable with the old-school method. Since I can open up your script files in notepad, and that they're in the same directory as all my other scripts, I'm 99.999% sure that the issue is with my copy of the CK, not a bad mod install. Until you told me about the quest alias thing, I couldn't be 100% sure that this was the case, since one could theoretically call all the properties variations of "fart" in-script, and then use the properties window to make it run properly. Granted, I don't think you would actually do that, but I felt I needed to check anyway in case of an accidental property mismatch on the script.
  5. Yep. While I'm new to this side of modding Skyrim, I've been playing with mods since Morrowind. I even extracted the scripts twice and allowed overwrites in case it was some kind of bug that occured during the inital decompression.
  6. Away from the CK right now, so I can't give the exact error, but it's some kind of read error on the CK's part. I can't view or edit the source code- the option for it is greyed out- and trying to edit its properties just returns with a blank properties field. Looks like I'll have to give TES5Edit a spin.
  7. Point being, on my end, there's a disconnect between what the script is saying and how it relates to the magic effect in use. I know that your alternate method requires a magic effect, and I can see how that was setup to some degree in the CK, but from reading the script, I can't see where that magic effect is called or referenced. And since I can't access the script's properties window in the CK (due to some error or another), I can't see how it was called in the script. And if it's not actually called or referenced in the script, then that means it's working by some other measure that I need to look for. Ultimately, after release, it's gonna be on me if there's problems or fires that need to be addressed. And as such, I'd rather use a method I actually understand as opposed to one I don't.
  8. As-posted, it might not, as it only runs once. However, ReDragon did post an events chain that checked every 5 seconds or so, which was included into my semi-finished script (that I haven't actually posted, since its been altered from the last script I posted). As I said a few pages ago, I have two test saves with the same setup character; one before acquiring necromage and vampirism, and one afterwards. The mod worked on both; I even checked with a character that started off as a vampire before installing the mod, and took necromage after installing the mod. Still worked as-intended. While polling may be unnecessary, I don't think it's a high-load script either; it just spends 99.999% of its time returning after checking one or two variables. I could easily set the check to run every minute or five to further ease load, with a "save and reload" note if the player qualifies for it at a bad time. But I will take a look at your solution, see how you did it, and all that. -Edit- Just checked the .zip. I can't see how you linked the properties because my copy of the CK keeps throwing up error messages any time it tries to load your included script.
  9. Alright! The script works- all I needed to do was edit in the properties onto the script! That even solved the vampire keyword issue I was having earlier! Now, to clean it up a bit (remove the debug messageboxes, standardize the formatting, possibly link it to quest stages instead of an internal bool variable), and I'll be posting it to the Nexus in (hopefully) a few days. Don't worry, ReDragon2013, npdogg, I'll be crediting you both in the readme and the file's description for your work in helping me get this off the ground. Just a FYI, I used ReDragon's Events and mytestF_() Function, mixed with npdogg's suggestion/usage of FormLists. Arrays might be faster, but this is a one-time deal for a game, and it'll speed up subsequent patching if there anything I missed.
  10. Â You access script properties by right-clicking on the script and selecting Edit properties. There should also be a Properties button next to most script attachment lists. Cool, thanks. Hopefully, this is the last puzzle piece.
  11. Ah. That also likely explains why the example script you provided wasn't working either. I can access the properties window via its tab in the relevant quest, correct?
  12. By showing you where I copy/pasted the script, I thought I was answering your questions. One of the first lines in it is "perk PROPERTY necromage auto." By having the script in front of you (even if it's under spoilers to save visual room), I thought that I could save us a bunch of QA rounds, and you'd be able to say "you mixed up the script here" or "script looks good, did you do XYZ for the quest?"
  13. Yet it didn't work on the prior iteration of the script because, if I understand correctly, you can't straight up use it and expect it to work on an "extends quest" quest-based script without (at least) setting up the player as an alias in the relevant quest, and you seemingly can't use it to check or alter things on the player without converting it in some manner in the script itself. IIRC, in older TES scripting, all you had to do was type "player", and the script understood it meant "the player character" without further jiggering of the script if you wanted to do things to the player.
  14. Thanks for the .zip. I'll check it out when I have time. Can I also say that I'm starting to develop a deep-seated hatred of Papyrus and a strong desire to slap its creator with an overripe trout? What I'm trying to do seemed straightforward enough, so I don't understand why the script is making me jump through all kinds of hoops for something so trivial as, say, referring to the player. It's like some weird cancerous thing that doesn't exactly communicate with the rest of the game...
  15. Ok, having issues with it getting to load into the game. Made new quest, added in a "PlayerRef" under alias that pointed specifically to the player, shoved the example script into the last tab and compiled, made the FormLists... and still nothing. Also, I just noticed that the "RaceSwitchComplete()", assuming if I understand it correctly, will NOT make the script run the way I want to; I want it to fire off once the player has both Necromage AND Vampirism (and, ideally, only once so it doesn't keep looping); it looks like RaceSwitchComplete() will only cause the script to run once the player becomes a vampire, and will not work at any other time. If a player gets Necromage later on, it looks like the script won't fire, and they'll "miss out," which more-or-less defeats the purposes of this mod.
  16. Cool, and I think I now see why the prior attempts at pointing to the player failed. And yeah, ReDragon did mention something about Form Lists (actually looks like Arrays now), so that's also something to think about. Right now, I want to make sure the script works before any further tinkering/shrinking gets involved. I'll update this thread, either because I need further help, or because I'm announcing the mod's initial release.
  17. Did you set the properties on your script? If you just "shove the script into the new quest" (not sure what that is supposed to mean), your check to determine if the player has the necromage perk will fail because the property is empty. Reproducing the current script (again) under the spoiler: Additionally, when I say "shove the script into the new quest", it's basically shorthand for the guide here. Which, in my experience, literally means "open up the CK, make a new quest, do not touch anything because the default selections will already have it set up to run on game load, and put the script in the last tab where scripts go, making sure you have it selected for extends quest".
  18. The entire script is posted at the last post of the prior page, under spoilers. It's functioning as a simple "run in background" script, so I don't think uploading the whole .esp is absolutely necessary; it's literally a "boot up CK, make new quest, shove the script into the new quest" deal.
  19. Ok, just ran another test, and I think I found out what's happening. For some reason, the script isn't registering the player, period. Switched the order of True/false checks, and now it's claiming that the Player doesn't have Necromage. So, the most likely problem is that the script isn't properly referring to the player, instead of us not properly defining vampirism or perks. I can see the definitions of referring to the player here, but the examples that page provides are... kinda poor, since there's two ways to refer to the player, and the examples are doing a poor job doing something as basic as, say, showing how to refer to the player to see if they do or don't have something. Or maybe they do, and I'm just too Papyrus-illiterate to understand without better examples. So how do I refer to the player in the game the script will understand?
  20. So, what I'm doing is testing using two saves with the prepared character (level 81, purchased perks affected by the Necromage Vampire build). 1: Save without Necromage and Vampire, (but with the vampire disease). The purpose of this save is to test if the script will appropriately run in the background during a new or in-process game where the player does not have Necromage or Vampirism, and if saving/loading will be required to force the script to behave appropriately. Your new example code fixes that potential issue, so thanks! 2: Save with Necromage and stage 1 Vampirism. The purpose of this save is to test that the script will work with an in-progress game, where a player has both Necromage and Vampirism. It serves as a quick way to determine if the script will properly run, since the save will load with the player already ready for the script to replace perks and spells. All of the testing I have done with this in-progress mod so far has been with the 2nd save, the one with both Necromage and stage 1 Vampirism. In short, the script is consistently failing to recognize the player as a vampire despite the game loading with the player having Stage 1 Vampirism.
  21. ... It's starting to feel like the game is actively resisting attempts to detect when the player is a vampire. We've already tried the keyword vampire method, that failed. I tried Variant A (checking to see if the PC is in the VampirePCFaction), and that had failed. I've now tried Variant B (borrowing information from the vampire script), and THAT has failed. And it's all failing at the point where we see if the player is a vampire or not. To be double-sure, I'm transposing the current version of the script below. Maybe I mis-typed something somewhere, even though I'm copy/pasting? At this point, I'm wondering if doing something like defining race as property and Functioning them like with the spells/perks will work, or if using Functions isn't the way to go in this case.
  22. Just re-ran the test without the USKP. Same results (script returns with "not a vampire"), see spoiler for details. So, unless using Debug.Trace and papyrus logging will tell us something different, we need a new way to determine when a player is a vampire.
  23. Cool. I'll need to check up on how arrays function, then. I used the debug messagebox; the relevant code was setup as IF player.HasKeyword(vampire) Debug.MessageBox("Player is a vampire!") ELSE Debug.MessageBox("Player is NOT a vampire!") RETURN ; - STOP - player is of human race ENDIF The messagebox I got on loading the save with the mod installed was "Player is NOT a vampire!". When I have more time, I'll run it with your code edits, assuming that my use of debug message boxes won't provide the same results as using the debug trace command+papyrus logging. -EDIT- Hang on; I relaized I had the USKP running on my test load order. I don't have enough time to rerun it now, but I know the USKP "fixes" the necromage perk so it won't affect a player attempting to use a Necromage Vampire build. I'm not sure how that fix was done, so it's possible that the fix was to remove the "vampire" keyword from the player. If so, that would explain why the script isn't working. ... then again, in my full load order test, it still didn't work, and one of the mods was the reversion to the USKP necromage "fix". Hurm, regardless, I'll need to re-run the test again.
  24. Ok, small-ish issue. One that was confusing me for a while as to why the damn thing wasn't working. I started the Debugging process on my typical load order, script wasn't working. I disabled everything, and tried again (running only a enb and SKSE, nothing in the load order but the official stuff), and the script still didn't work. So, I started adding debugging boxes at points on the script to see what was going on, and I tracked it down to one of our three true/false checks. IF player.HasKeyword(vampire) ELSE RETURN ; - STOP - player is of human race ENDIF THIS is the problem. I used HasKeyword(vampire) because when I was doing research for this project, that was the method Skyrim supposedly used to determine if the player is a vampire. And yes, upscript we're using the following command to define vampirism "keyword property vampire auto" Either this is not how Skyrim detects if the player is a vampire, or I've set it up wrong; I'm staring at my dawnguard vampire test character, and the script doesn't see that my player's a vampire. The test character isn't a vampire lord, and I've even updated the script to require Dawnguard, so that should be out as well. Unless artificially giving the player the Vampire Disease causes keyword issues like this, I need a better way to determine if the player is a vampire or not. My current thought process is to use the"Player.GetRace" command in an ungainly if--elseif--elseif--else--end chain that covers the 10 playable vampire race variants, though this WILL cause compatibility issues with anyone using custom races or vampire races, something I'd rather avoid if at all possible. So, are there any other ways we can detect if the player is a vampire?
  25. Thanks; I didn't realize that syntax use was different between the addspell and addperk commands; I had assumed that they ran similarily. Hence adding in the "false" codifier; for AddSpell, that prevents a notification appearing to the player that the spell in question has been added, and I thought AddPerk would do the same, you just didn't normally see the notification for perks because I had (falsely, see below) assumed that perks aren't given as quest rewards. Yeah, bad idea right there. I'll be the first one to admit that I have a questionable grasp on papyrus scripting (as we've seen), so assuming I have things right without double-checking... Hm, good catch. I'll need to re-edit my lists and double-check the other abilities added to the player. I had assumed it was a Dev Typo- y'know, dev wants it to be a perk, but decides to use it as an ability(spell) instead, so they keep the old name to minimize the subsequent edits. On double-checking the perk list, however, i see an entry for it, Kynareth, and Dibella (though Kynareth's seems to be disabled, so it's not part of the Kyne quest). I *might* get away with using the spell command lines anyway, but I think the perk might just stuff it back in once the ability is removed, and you'd simply end up with a duplicate ability, so I'd need to do even more scripting stuff, so best to alter the perk, not what it gives. One question, though; I thought papyrus (and similar scripting languages) treated things placed after a semicolon as not part of it (hence it being useful for adding notes without the script pitching a fit). This is not the case? It's the only way I can think of that would allow the use of arrays in the manner you used.
×
×
  • Create New...