Search the Community
Showing results for tags 'scripting'.
-
Working on making pervy mods, and am having some trouble figuring out what functions can be called using Lua. I have looked around the internets, but not found a big list of possible commands for Baldurs Gate 3 and their syntax (like how Beth games, you can look at the vanilla papyrus to see all the possible functions, or places on the internet will list all of them). Does anyone know of a published list, or game file that lists the possible Lua functions? Many thanks
-
More of a general directions asking post. I recently learnt how to make dialogue lines, and I do know a thing or 2 about scripting (nothing pro, but I manage) So I was wondering if maybe there was a way to integrate some sexlab stuff into mods. Idea was just some immersive dialogue lines that called for scenes, and that said scenes were properly tagged. Thing is, for that, I need to know the code lines to call for a sexlab scene and how to call for appropriate tags. It's dialogue line, end dialogue fragment script, insert code, but what? Trying to look for documentation but I'm still a little lost, also opened a few scripts from mods that could help, like SLEN, but I'm still little bit lost here. Anyone kind enough to point me in the right direction?
-
modding [RESOLVED] Self Test Spell Casts Repeatedly
rydin posted a topic in Skyrim Technical Support
Sorry to come up with a new question so quickly. I've made a lot of headway with a mod I've been working on, but I'm getting a little stuck again. So a good few years ago, a forum member had helped me with a simple mod that applied an overlay effect onto a character who had been spanked via an animation. Back then, I was too overwhelmed to dissect the mod and take it further, though it was pretty neat. Now I've returned to it and updated it slightly, but I've run into a bit of a snag. Inside the mod, there was a test spell that could be cast onto an NPC, and it would trigger the effect. It was mostly so I could play about with the timing to affect the progress of the effects. However, looking at the actual files, that test spell used one of the main effects than the test effect. I have updated and played about with the forms to create a new test spell (SPEL) and Magic Effect (MGEF), but one that I can cast on myself as the player. I felt this would be easier because I could easily remove my character's clothes and see what was happening underneath. However, when I cast the spell, I get a very odd issue where it seems like it is casting itself repeatedly, even if I cast it once. I can see the effect marker on the right hand of the screen fading in repeatedly. I've looked at MatchMaker, which does the same, but I couldn't see anything I was doing differently. So I'm wondering if there is something fundamental I'm missing. The three files are: The spell configuration: The Magic Effect configuration: The script shows the Debug message: Scriptname RYDB_SpankTestSpell extends activemagiceffect Event OnEffectStart(Actor akTarget, Actor akCaster) SelfSpankTestSpell.cast(akTarget, akTarget) debug.notification("Casted on " + akTarget.getDisplayName()) endEvent Spell Property SelfSpankTestSpell Auto Thanks for any advice. -
I'm having some trouble using the AddCustomBed function in SexLabFramework. The script I'm using is below. The .AddCustomBed lines always return False, and I don't know why. Scriptname CDC_INIT extends Quest Hidden Actor Property PlayerRef Auto SexLabFramework SexLab Furniture Property CDC_Bedroll Auto Form Property CDC_BedrollToken Auto Event OnInit() SexLab = ((Game.GetFormFromFile(0x00000D62, "SexLab.esm") As Quest) as SexLabFramework) Debug.Notification(SexLab.AddCustomBed(CDC_Bedroll, 1) ) Utility.Wait(1) If SexLab.AddCustomBed(CDC_Bedroll, 1) Debug.Notification("Bedroll initialised") PlayerRef.AddItem(CDC_BedrollToken,1) Else Debug.Notification("Bedroll initialisation failed") EndIf EndEvent CDC_Bedroll exists and is correct, since the property line is copied from another script that does work (this whole thing is adapted from the SimpleBedroll mod, if anyone cares). I've tried changing it from Furniture to Form with no difference. So far as I can tell, the SexLab variable is also correct (putting it in the .Notification line returned [sexlabframework, which seems about right?). I'm using SexLab Framework v1.63 Beta 8. Presumably I'm doing something stupid (for which I will cheerfully blame Skyrim, because I'm petty like that). Can anyone help?
-
Step-by step guide to setting up a scripting enviornment in MO2 for Sexlab and SLA View File So, after googling for hours and reading over old posts, I figured I should put together a guide on how to get the creation kit to work with MO2 with a focus on SL scripting. (Download is just a word document version of this post) Install creation kit from bethesda.net, and point MO2 to the creation kit executable through this box: 2) Install SSE creation kit fixes and multiple masters fix: https://www.nexusmods.com/skyrimspecialedition/mods/2786 https://www.nexusmods.com/skyrimspecialedition/mods/20061 3) If you haven’t already, install SKSE and be sure to keep the .psc source files handy for the next part. 4)Now, create a new mod in MO2 by simply opening your MO2 profile dir and making a new folder. Inside, you will need to create 2 folders: scripts and scripts\source. 5)Move the SKSE .psc files into the \scripts\source folder 6)Now, go to your skyrim data folder (<skyrim installation path>\data\scripts) and grab a zip file called Scripts.zip. You will need to extract it into your new MO2 mod, and be sure to keep all the .psc files in the \scripts\source folder. 7) After that, you’re going to need a few more dependencies before you can start developing: SkyUI Developmet sdk: https://github.com/schlangster/skyui/wiki RaceMenu developer: https://www.nexusmods.com/skyrim/mods/29624?tab=files (download modder’s package) FNIS (FNIS ships with its sources, but you need to change the file structure. FNIS has its sources in sources\scripts, and you need to move them to scripts\sources) PapyrusUtil The regular RaceMenu plugin 8 Now you need to unpack RaceMenu’s BSA, which you can do with Cathedral Asset Optimizer. Just open it up, and point it to RaceMenu’s mod dir: You will need the RaceMenu source scripts when you are compiling. 9) Now you need to change the CK ini file to reflect your script directory: [Papyrus] bPerforceEnabled = 0 iMinMemoryPageSize = 128 iMaxMemoryPageSize = 512 sScriptSourceFolder = ".\Data\Scripts\Source" After that, you just have to boot up the CK and load Sexlab and SLA as your master files, along with any other .esps you will need. Then you’re good to go for scripting! I'm pretty sure I got everything covered, but its entirely possible I may have missed a step after getting everything working - so please let me know if I missed something. Some mods with good example scripts that you can look at: Submitter BluByt3 Submitted 02/04/2021 Category Framework & Resources Requires Regular Edition Compatible Not Applicable
- 1 reply
-
3
-
- scripting
- creation kit
-
(and 1 more)
Tagged with:
-
Hi, I have problems understanding the new changes from equipDevice( ) to lockDevice( ) in Devious Devices 5.1. I am working on a little mod which should equip a certain Devious Device. I started this mod with DD 4.x and the core functionality worked fine with equipDevice( ). Now I switched from Skyrim to SSE and ported my mod. Many Devices still work and some not at all. So since I upgraded DD one major version I checked the code and found that equipDevice( ) is now deprecated and the code is replaced: Function EquipDevice(actor akActor, armor deviceInventory, armor deviceRendered, keyword zad_DeviousDevice, bool skipEvents=false, bool skipMutex=false) LockDevice(akActor, deviceInventory) EndFunction Now I understand partly whats happening here. The code is replaced and the LockDevice( ) function is called with less parameters. But how do I pass my keywords now? There are certain devices I really dont like and would like to avoid, but if I only call a certain device like "zlibs.zad_DeviousPlugVaginal" for "deviceInventory" it would return all Devices of that kind, correct? I would be really thankful if someone could point me to a good tutorial or more in depth info.
-
I can't for the life of me seem to get this right. I've tried a dozen variations, over a few months of frustration, and it just is never working. I've taken an old open-permissions basic follower mod (Mango) and started adding stuff to it, including new XVASynth dialogue. I've started with a simple "find my lost gear" micro-quest (right in the same dungeon). The quest starts. The marker works. Finding the gear updates the quest (only the cuirass is required from the chest the stuff is found in). The dialogue when you return to the quest-giver is there, but then when you trigger it to give the gear, nothing happens and the quest is stuck forever. What's supposed to happen is when you tell her you got her gear for her, it takes the quest-flagged cuirass from you and equips the non-quest-flagged variant on the NPC. Sounds dirt simple. Here's the mod in its presently broken alpha state. Can anyone please help fix this? I think if I get this working and see why it works and my older attempts failed, I'll be able to proceed with the rest of the "real" quests I have in mind without any further serious problems. https://mega.nz/file...7NDp5ZtWsJneLlA NSFW: The follower NPC doesn't have an outfit on when you find her, so if your game has nude textures instead of vanilla underwear textures, she'll show up nude. For expedient testing: Clear out Embershard mine, and save. Install the alpha mod, and go back into Embershard. The follower NPC, Mango, is chained to the wall across from the locked bandit armory room in the middle of the dungeon. The dialogue is very simple and self-explanatory. The Heirloom Nordic Cuirass to find is in the chest on the table near the bandits' forge and armoring table in the cavern a bit further inside the dungeon.
-
Much like the vanilla Marriage Quest which requires an Amulet of Mara, an Amulet conditional could simplify dialogue bloat in many of the "kink" mods. It would also be more immersive than toggling something in an MCM. So, I tried FlowerGirls as a proof of concept. I added the conditional T GetEquipped Armor:"ReligiousDibellaBeauty" == 1 AND using the pull down menus. I may have not represeted them perfectly here but I think it shows what was done. I was initially excited because the dialogue options were not present with the Flower Girls. However, upon equipping the amulet the dialgue did not appear. Maybe this gets into scripting and compiling with the added complexity of SKSE? If I can figure this out, I would do it for the "seduction" options and something similar for Milk Mod Ecconomy and some of the others. Say, with Kynes amulet. That way we do not have to sort through Milk Maid / Cow dialogue options
-
- skse64
- flowergirls
-
(and 1 more)
Tagged with:
-
I'm trying to debug an issue I'm having with a sexlab script, and I'm wondering what the return values from this function mean: sslBaseAnimation.GetCumID(stage) Apparently a positive number means it's a penetrative sex animation. I assume 0 means that there shouldn't be any cum effects. But what do negatives mean?
- 1 reply
-
- sexlab
- sslbaseanimation
-
(and 2 more)
Tagged with:
-
Greetings! Is there any way to change my quest stage when a specific Rune is planted on a specific Object Reference? I tried out OnHit Event (that works for any other spell) but it didn’t work with Rune spell. I guess it’s something different and do not technically hit the object. Maybe there is an Event when a Decal texture is appeared on the Object? Idk. Any opinions about this? Discussions are also welcome Maybe I can also learn something from your thoughts.
-
Trying to rig PSQ patch to make both 3BBB Bodymorph and Separate orgasm work properly in SE environment, but it seems like im not properly equipped to handle any sexlab related source codes. Any tips on constructing my own sexlab mods under Sexlab 1.6.3? Currently installed SKSE, FNIS, SKY UI source files, but it's certain i need to install more. Can anyone give me advice on building source folder for scripting?
-
I need help figuring out how to delay lines of idle chatter being said by my companion. I just recently found out how to get them to say their lines by using coding in the script for GECK, but I now face the problem of them saying their lines way too much. They go through them every couple of seconds or so and I'm not sure exactly what to do to fix this. Can anyone help me fix the coding to get them not to say their lines as much?
-
Tried whole bunch of methods, but i simply can't figure out which method i should use to distribute Keyword to vanilla NPCs. Here's the keyword that i've tried. somehow it does not work at all no matter what. i.e.) ;ActorIsDefault Keyword = 0x00000820~RaceMilkCompatibility.esp | ActorTypeNPC | NONE | NONE | NONE | NONE | 100 ;ActorIsNord Keyword = 0x0000082A~RaceMilkCompatibility.esp | (What should I add here?)| NONE | NONE | NONE | NONE | 100 And i simply cant figure out which should i attempt to inject into the 2nd section. 1st is about default race, but 2nd? cant figure out. my plan is to inject ActorisXXXX into that specific race within game only. but turns out anything other than ActorTypeNPC wont work. Any possible alternative other than ActorTypeNPC? how do SPID keyword distribution even work in the first place? I need either examples or templates.
-
Alright, I'm trying to modify SGO/MME to make their main script consider custom races that were supposed to be Nord/Argonian to be considered as their appropriate vanilla equivalent by either race name recognition, manual ESPFE designation via keywords on race or npc. But since this is highly complicated remodeling process and since both SGO and MME uses Getrace and FormID list to figure out which Milk to distribute(which means i need to heavily modify primary scripts of both mods.), I really need help regarding the direction of writing scripts. Got few plans, but not certain how to form an actual script line. Below is my original direction to scripting. 1. use getrace to figure out NPC's raceID to figure out whether its vanilla or custom. If vanilla, distribute race milk, if not, proceed to 2nd. 2. If NPC is custom, use getracename to figure out which race it was supposed to be. i.e. Follower Neisa got custom race despite being obviously a Nord in RaceID. this script will immediately consider Neisa as Nord and distribute Nord milk. 3. If all above fails, distribute keywords about vanilla races that dictate the race recognition in my script, via high priority getkeyword script. If script fetches distributed keyword, immediately dispense milk of race that keyword indicates. If not, race is considered completely foreign, thus distribute default custom race milk that MME and SGO was supposed to drop(Exotic milk in MME, milk or semen with no prefix in SGO). Plan looks solid, but i sincerely dunno how to write practical script out of this concept, so i post this thread to get advices or examples that can be learned from. So it will be very appreciated if anyone willing to help me.
- 1 reply
-
- soulgem oven
- milk mod
-
(and 2 more)
Tagged with:
-
Hey friends, I have some ideas and buildings in the works for a mod or two that are devious in nature. I could use someone who is decent with scripting and questing to help me create it! PM me if you are interested. I have most things planned out, I just need someone who is better than me at scripting/questing to help implement it.
- 2 replies
-
- looking for modder
- sexlab
- (and 12 more)
-
I am trying to make a Racemenu addon that changes the player's race when certain sliders are changed. A problem I've encountered is that the SetRace() command does not have any visual effect if called whilst the menu is up because the game logic is frozen and is not able to update the player's model. Does anyone know the specific function(s) that are called when you select a race in Racemenu that allow the player's model to update? If not, can anyone think of suggestions for commands that could achieve this effect?
-
PART I: Concepts. _________________ Much has been said about "script heavy" mods and how they can break your game. But over the years, the notion that scripts can break your game has become less and less of an understood phenomenon, and more of a creepy boogeyman to scare children away from using scripted mods. I'm here to shed some light on this matter, not because I'm an expert nor because "I know it all", but instead, because I've investigated this phenomenon, I've witnessed how it works with my own eyes, and I've learnt to take measures on how to solve it most of the times. This article may be of beginner level to some, but I intend it both, to help beginner modders learn something, and to attempt to make normal users understand a bit more about why their game could be "broken" and why it's not because of "script heavy mods' fault". First of all I have to say one very important thing: THERE ARE NO SCRIPT-HEAVY MODS. - "But Myst, everyone knows if you install mods with scripts, you can break your game" Lies. Scripts won't break your game. Bad coding, however, can, and it poses a real danger, but that's not something that happens because of "scripts being scripts", it happens because a modder makes a mistake and publishes a mod with bad coding. Second, we should clarify what does people understand by "breaking one's game". Because this notion may seem generic and common, but it may be different for everyone. Some people says it relates to having frequent CTDs, while others, such as myself think it relates to when the game's scripts seemingly stop working and you can't do anything because scripts dont do what they're supposed to do. I have experienced this kind of "broken game" myself as well, and I also fought to understand the reasons for it, and ultimately, fix them. Script lag, is one thing, but CTDs and broken quests are a completely different one, and it's usually related to stuff such as a bad load order, mod incompatibilities, corrupt assets (IE missing textures or broken nifs) or bad graphic settings but neither of these has anything to do with scripting. Alternatively, some scripts can cause CTDs, but that's a rare thing and it's usually related to other types of bad coding which I wont refer to on this article. Third, there is another misconception on what a "script heavy mod" even is. Because it can be A mod with many scripts. A mod with LONG scripts. A mod with complex scripts that interact with many things A mod with scripts that never stop running in the background And here's the shocker, because NONE of the above constitutes ANY kind of danger to the game. A friend developed an entire mod to test the effects of scripts on the game and try to pinpoint an exact cause of script issues, it was designed to overload the game in every possible way as described by the "script heavy" myth, and his results concluded that the game can candle thousands and thousands of instances of scripts simultaneously in the background, and keep running without even coming close such a thing a s "limit". The mod was designed to push Skyrim's script engine's limits beyond what any combination of mods can ever achieve. PART II: How It Happens ________________________ What was found after such testing, however, is that there is a situation that DOES exist, and can be mistaken for a "broken game" because in practice, it is. I will not describe every possible case of "bad code", because I'm certain there's more than one screw up that can cause game issues, but I will talk about one of the most frequent ones which is by far, one, if not the most common reason of script issues. And now, I'm referring to something I call "script saturation" although I'm not sure if that's the correct term. This phenomenon, occurs when the game is receiving lots and lots of simultaneous script calls per second. As a result, a chain of events begins to occur. First,you'll notice the game can start lagging in terms of scripted events. If something was supposed to happen when you get hit, you'll notice it happens later, if you use a scripted spell, the effect will also come with a delay. This lag can be something tolerable, or it can be massive and you end up seeing the effects of a script, as far as 5 minutes later, or more. Second, if you have enabled the log in your Skyrim.ini, you'll notice the existence of the infamous stack dumps. Stack dumps, arent a problem per-se, but they are warning you of the current script saturation you're experiencing. Script saturation, in the internal mechanics of the game, means you're getting too many script calls and the game isn't capable of answering them all in time, so it stores pendant calls for the next frame in hope it can finish in time, so as described by the wiki (somewhere I can't recall), the game delays the execution of scripts. The visual result was evident since you started seeing script lag occur and stuff happening seconds, to minutes after they were supposed to. PART III: Why it Happens - Section A): Fundaments of Script Lag ________________________ - "I knew it!, I knew script heavy mods existed, you're just trying to confuse me!" Technically, a form of "script heavy" mod can exist, but I just call that BAD CODE. See, the thing is, it doesnt happen because "a mod has many scripts" or because "the scripts run in the background" or "are too long". It doesnt happen either because "you have too many mods" or "you combined more than 2 or 3 script-heavy mods in one install". It happens EXCLUSIVELY for the action of a single, lone script, which can come from anywhere, at any time. Any script can have bad coding, and size doesnt matter. If you want an example, here is one: The pevious script, has only 2 events, and does absolutely nothing in practice. But what it does do, is cause an event to get locked on processing as soon as it arrives. Now, during a battle, a concentration spell can spam these events dozens of times each frame, and the longer such concentration spell is held on the bearer of this script, the more script calls that begin to accumulate on them, until at a given moment, the barrier will be breached and your papyrus log will generate a stack dump. When that happens, if you were expecting something to happen with the script, say a shader apply, you'd notice shaders begin being applied later. And this is how a single script with 2 spammy events and no precaution, can generate script spam and slow down your script engine. Notice it's not long, it's not complex, it doesnt even do anything it just spams events. The probem is that the more events that get spammed, the more likely the game gets saturated, and other scripted mods will suffer the script lag as well. PART III: Why it Happens - Section B): "A Broken Game" ______________________ The game, can normally recover from these kinds of situations, after all, no mod is going to have a concentration spell casted on an actor during the entire game... right?... Wrong. Some mods, use mechanics that do apply constant effects on the player, ALL the time. And if you have a mod that's set to respond to these events, if it's not set correctly, there's a chance it will get saturated. The first part was correct, the game DOES try to recover from stressful scripting situations, and it does this by simply finishing answering all the script calls untill the demand is back to what it can answer on a single frame, AKA a relaxed environment. It's simple, the stress rises up, the game deals with it as best as it can, then the stress ends and the engine can relax again. But what if it never relaxes? This is when the real danger of event spammers comes into play. It happens when you have a stressful situation that generates enough script calls to saturate the engine, and you dont ever get to the moment when it finishes answering them all. I dont know the exact number, but as a mental exercise, lets say the game can answer 100 script calls per second, from a single concentration magic effect. Now, picture that you have a combination of mods, that allows an event spammer as described above, coupled with a stressful situation, say a dragon, 2 companions and 6 mages. Suddenly, you're no longer receiving 100 script calls or less per second but 400 instead. The game will queue 300 to be answered on the next time, but when that time comes, we will get another 400 By the third time it checks, you will be getting a total sum of 900 delayed calls because it can only answer 100 each time. And the lower your framerate, the less actual execution time the script engine has to catch up with the increasing demand. Now imagine the "battle" never ends, and you get this eternal event spam. You're never ever going to see scripts working again because the lag is infinite. This is close to what happens when you have an event spammer mod combined with a mod that creates a concentration, or cloak effect, being permanently applied to the player, since more than a few mods apply unseen effects on the player. This is the reason why scripts stop working and people say their game is "broken". PART IV. How to Fix It ________________________ The solution, for mod makers, is simple, for mod users, not so much as they have yet to learn to identify a troublesome mod and either fix it or remove it. But for modders, it begins by knowing the first rule, which is: BEWARE of event spammers. Try not to use those kinds of events at all, avoid effects that cause repeated calls such as cloaks or concentration type effects if possible, but if you absolutely MUST use those kinds of events/effects, you should always use an EVENT FILTER, like this: The above example is a State filter, and it will ensure only one event is processed at a time, and when it's done, the gate will be opened for another event. Alternatively, a Bool filter also works The second example is not as effective as the first one since it still has code inside, but it will reduce script spam. Note that none of these methods is flawless. Even when using them, mods are still likely to get a stack dump or two every once in a while, but by reducing their capacity to spam, you will ensure that the game's load can be overcome more than 90% of the times. So you see, scripts are not evil, but we have to be careful about how we design our mods because it's very easy to screw up and end up regretting it later. Most people never bothers to understand the mechanic of this phenomenon, and when their game malfunctions, they look for the causes of it on myths such as "scripts being evil" when it's not about having many scripts, or complicated scripting. A single mod is more than capable of "breaking" one's game under certain circumstances.
-
Things in the Dark could have been one of the greatest LL quest mods ever. Unfortunately, it has a lot of bugs. The "modified" version fixes some of them, making it sort of playable. Almost every quest in TitD is a broken progression blocker. Why does TitD have so many bugs? Why does Delzaron consistently make mods that have so many faulty quests? To be fair to Delzaron, he's not the only modder with this problem, he's just the most prolific. I could name a few other authors, with buggy mods, who script their quests in exactly the same way. When trying to patch up my TitD so I could play through it some more, I started to see various common recurring problems, with how the quests were set up. I think TitD serves as a "how not to" guide on writing quests, and there are some cautionary lessons to be learned from it. Most broken quests involved a simple mistake or typo, or some non-updated value, but those mistakes all have a common root cause: unnecessary complexity. The quests are not cookies, they are snowflakes, and this massively expands the effort required to write and test them, to the point where it is impossible. Because it was effectively impossible, Delzaron failed. How can we ensure that quest development remains in the realm of possible, or better still easy? Rather than hard, or impossible? As mentioned above, the complexity and hardness comes from a few oft-repeated mistakes. As these common mistakes are so well established, and known to be flaws in so many mods, you'd think that we'd stop seeing them. Skyrim quests aren't written in a world of automated testing and extensive QA, and they can not easily be continuously updated without upsetting players with running games. Mods get periodic releases, and those releases should be as robust as possible to avoid player angst; quest logic should be as defensive as possible. If it allows the player to cheat, it's better than a quest that easily becomes blocked. When you do multiple bad things, you compound the player's pain. When you do multiple good things, you reduce the risk of your mod breaking, even if you make a mistake somewhere else. The following practices combine together to help stop the root cause of numerous quest bugs that have a common form. 1) Quest stages should be self contained What I mean by this, is if you do "setstage" on a quest, the quest should be set completely in the correct state. It shouldn't be possible to run setstage and have the quest go into an inconsistent or broken state. For example, some player dialog becomes available at stage 50, if you have collected 10 mushrooms. Choosing that dialog runs a fragment that sets another NPC's faction, sets that NPC's location, and puts a key in their inventory. Then it sets quest stage to 60. What's wrong with this? The problem is that if you want to test this quest, you cannot simply set the stage to 60, because the NPC won't be set up properly. If this quest breaks, you cannot simply set the stage to 60, because, again, the NPC won't be set up properly. How it should have worked is quite simple: the dialog fragment should have done ONE thing, set the quest stage to 60. Then, the trigger script for stage 60 should have set up the NPC's faction, location and inventory. In this case, you can test stage 60 of the quest without any additional preparation, the stage is "self contained". Following this rule avoids so many problems. The bad pattern occurs when the logic to set up the quest stage is hidden away somewhere in a different stage. This is not good modularity or encapsulation. Quest stages are a developer tool to help organize work, but many modders use them with no clear objective in mind, just because they think they should 2) Quest stages should serve a clear purpose If you have quest stages that exist without objectives, alarm bells should probably go off. Why does that stage exist? What state is it representing? In most cases, a quest stage should have a matching quest objective that the player can see, and the stage advances when that objective is met. Such quests are easy to understand as a player, or developer, and are easy to test. The worst example of this is ping-pong quests that bounce quest stage updates between multiple quests, where none of the stages were strictly necessary, and served only to update a stage on a foreign quest that itself serves no purpose at all but to update back to the previous quest. Multiple quests become entangled for no reason. However, there are legitimate reasons to have a stage with no objectives, particularly if the goal is to sequence events in a simple way. A classic example of event sequencing is the multi-step dialog. The modder uses quest stages (without objectives) to make the player have a conversation with an NPC in a certain order. Each time the player addresses the correct topic, and gets down to the right branch, the quest steps forward, unlocking the next topic and disabling the old one. This is a reasonable way to turn the dialogs on and off, because it's easy to set the quest stage to test the dialogs, and the fragments that advance the dialog stages are simple owning-quest setstage calls. Additionally, testing a quest stage in a condition is quite efficient. This pattern is broken when the modder does strange, random things: The progression of stages is erratically numbered, or jumps back and forth between dialog on different quests in a way that makes following it in the CK extremely tiresome. The stages actually go down as well as up. Very confusing. The stages intermix variant ways to control the quest, sometimes stage number, sometimes a variable. 3) Dialog conditions that involve == on anything but a quest stage are fragile The rider to this is: counter values can advance unpredictably. The corollary of this is that dialog conditions that use == on a quest stage are a good thing, but on counters that go up, probably bad, and on values that take on non-integral values, disastrous. How many mods have you played where you collected one flower too many and the quest become impossible to finish? Jobs of Skyrim, I'm looking at you! Things in the Dark has the same problem. Press the button that advances your slave ranking, and you'll skip past ranking 8, never hit the magic slave-ranking value in the dialog conditions and never be able to transition from Daithe to Hashep. Worse, you can't just setstage to start the Hashep quest-line because this quest violates rule (1) above. The solution to most of these counter bugs is to test >= instead of ==, then if something unexpected happens, your quest can still progress. And by always using a dialog condition with a stage check that asserts the correct stage, the game won't end up polluted with dialogs that should have gone away because they'd done their job. Counter values are particularly unreliable in Skyrim, due to threading, and slow Papyrus, and the player's ability to mess things around, you are asking for trouble when you expect counters to take on exact values. You never know whether you will see every counter value that is set, sometimes you might miss several. If you test for 20 petals, the odds of the player being able to get 22 before your check runs are decent. Just because you never see that case in testing doesn't mean it can't happen. But if the player has to go through a certain dialog to advance the quest, and that dialog only shows up for the exact stage that needs it, that's a good thing, stick to that pattern. 4) Use a coherent numbering scheme and keep stages ordered When quest stages are numbered 0, 10, 20, 50, 53, 54, 55, 67, 90, 100, and three of those stages are not even used, it's harder to work on that quest and keep it aligned with other quests and dialog conditions than if it used sensible numbering. It's even worse if a quest's stage numbers differ wildly from its objective numbers. In the cleanest case, objectives and stages have the same numbering, so you don't have to flip back and forth between stages and objectives to figure out what is being done. There is no reason not to start with quest stages rising in 100s. This allows you to use a pattern of steps of 5 for cases where you are doing simple dialog sequencing. Then, when you see a value other than a round hundred, you immediately know it's dialog sequencing. Of course, sometimes you need to add a stage to an established quest, but this really should be a last resort. Using steps of 100 makes this a lot less likely to run into a blockage though. In such cases, you should still strive to always keep objective numbers lined up with quest stages - there's no reason not to do that and not doing it can be enormously confusing. 5) NPCs can move - cope with it Things in the Dark, and Deadly Pleasures are frequently upset by an NPC being in the wrong place. NPCs walk off and start doing odd things, but the quest demands them to be in a certain room or near a certain marker. In some cases, TitD ports Frabbi out of the city, totally blocking your progression - it's not really what I'm talking about here though - the most obvious issue is NPCs that you have a talk objective with, who will not talk. That said, all kinds of misplaced NPC issue should be considered. Assumptions that NPCs will be where you expect are highly likely to be wrong - unless you have immediate (short term) measures to get them in place. If the PC needs to talk to a certain NPC, don't constrain that conversation to only taking place in a specific location. Constrain it by quest stage. That is enough. It will be easier to test, and work better for the player. Unless you have a really good reason, and proper mechanics around it, stopping the player from having a conversation just because they're in the wrong room is infuriating, and leads to player confusion again and again. They have no idea why they can't progress the quest, and why the dialog is missing. They have a quest objective to talk to NPC X, but NPC X has nothing to say! Avoid that pattern. It's a cause of woe. When dealing with mods like AI Overhaul, NPCs will walk off to all kinds of odd places. If an NPC must stay put, you need a special "priority 100" quest and AI package to lock them in place. Even that may not be enough. You may need a way for the PC to summon the NPC "in game". For example, if your quest requires Frabbi to be in the ruined dwemer pumping station, then port her there at the stage start. But if the player enters the station, check to see if Frabbi is there. If she is not there, port Frabbi outside the (only) exit of the pumping station, so when the frustrated player leaves, he bumps right into Frabbi and can have the conversation. Another thing that follows from this is quest markers - if the goal is an NPC, make sure the NPC is the target, not the location that they may not be at. In DP you can arrive at the quest location, but nine times out of ten, the NPC isn't there. As you don't know who you have to speak to, there's no easy workaround. 6) Scenes are your friend - don't make them an enemy Slaverun has a mechanism for using scenes that allowed Kenjoka to write massive amounts of story content without much in the way of bugs. In comparison, TitD has a small amount of story, and it fails to advance it correctly at almost every single step. Why did Kenjoka have no problems with this issue in Slaverun Reloaded, but Delzaron hits an iceberg on almost every single quest in Things in the Dark? It's not because one of them is simply a genius who keeps it all straight in his head, it's because Slaverun has a high-level system for triggering scenes, and that system is used over and over again to run the story content. This allows the story content to be tested simply by triggering those scenes at the high level. In contrast, every story segment in TitD and DP is a hand-crafted snowflake, built out of quest stages, gated dialog, forcegreets, and AI behaviors. Anything that uses Skyrim AI is inherently fragile. It's mostly fine when you have it working right, but only mostly, and it's hard to get right in the first place. AI sometimes fails for no obvious reason, and the CK mechanism for editing it is extremely fragile. Edit working AI, change nothing, and it suddenly stops and will never run again. At all. As for sharing AI ... it's hazardous. Scenes require no AI behaviors. All you have to do is ensure the participants are present, then start the scene. If the scene has the PC in it, you probably have to move the camera to a dummy and lock their controls while it's running. If you have a scene management system you only need to write that code once. Where scenes go wrong (and alas, Devious Followers is the archetype for this) is when they bind scripting into the scene stages, ad-hoc, possibly even advancing various quests as they go. This is terribly hard to maintain, because you have to know exactly which scene steps have script buried inside them. There are so many places you can hide a script away in a scene. For example, on the dialog lines instead of on the stage that fires them. There is too much freedom, and if you abuse it, you'll never untangle the mess that results. If you're going to run a script on a scene, stick to one script, run at the finish. At most two (one at the start, and one at the finish). You should need very special reasons to run scripting mid scene, and if you do, it shouldn't advance quests or make changes to internal state that advance quests, it should be purely to help the NPCs "act" during the scene. 7) SexLab can fail Don't assume that a SexLab scene will start and run to completion just because you try to start it. If your quest progression is controlled by an animation end handler for SexLab, one missing animation blocks your quest. This is a very simple mistake, and it's simple to fix. Never advance quests (directly) based on a SexLab animation end. If you want to run a pre-defined SexLab scene - create a high-level manager to ensure that shared logic for SexLab scenes is written once and tested many times, not different and unique for each use case. Design the high-level manager so it ensures all participants are present before trying to start the scene, starts the expected scene, and returns, or raises a mod event on animation end. If you know the animation failed to start, handle that immediately in the manager (spit out a Debug.Notify and act as if it ran). In the event of no animation end, use a timeout to catch it. No matter what goes wrong, when the manager determines the scene ended cleanly, or didn't start, or crashed, the caller can safely advance the quest. If there's a debug notification that the player can see in the event the scene doesn't run properly, all the better. If the manager crashes and takes down the control flow, you're still hosed. You can defend against this, but it adds complexity. A high-level scene manager that ensures participant presence solves a lot of problems. I'd rather have an NPC appear from nowhere for a scene, than the entire quest sequence block forever because they weren't in the right place at the magic moment. In most cases, a well written manager will not crash, even with missing animations - that should be a tested case. Deadly Pleasures requires the player to have a special "Patreon contributors only" animation pack. It says it works with the free version, but that's not true at all. Because it doesn't handle missing animations well, and because using the free animation pack leads to many missing animations, this results in broken quest progression on numerous occasions. I would suggest that this is not a good development pattern, unless you want players to start avoiding your mods due to a consistent expectation of nothing but broken quests. 8 ) Branching within Quests Skyrim quests, as designed by Bethesda, are not really intended to support branching within a quest. If you look at vanilla quests, they rarely introduce optional content. If they do it's usually a stage you can progress by either method (a), or method (b), or a stage with an optional step (c). Most quests progress with simple AND conditions. If you meet all the requirements, you go on to the next major stage. The flow of vanilla quests is typically sequential, (often) with no stages skipped, and stages only advancing. Some quests let you skip a stage here or there, or provide a basic OR in how you can progress. When they want to start a genuine branch, they usually launch a new quest to do it. The quest system is designed to support this model, and becomes awkward if used for other models. Quest stages can only get set to higher values. Stages have a concept of completion. Code is run on stage start, and on completion do nothing other than a SetStage(). Usually, new stages clean up the objectives of old ones. It's quite simplistic. While we have a function that is run on stage entry, there is no equivalent for stage exit (which is a serious flaw, and is probably why so many sloppily made quests don't clean-up objectives properly). There's an interesting bug/feature here ... if you SetStage to a LOWER stage number, the set will not change the stage, but the stage entry script will still execute! This can lead to modder confusion. You can definitely create more sophisticated logic, but Skyrim does nothing special to help you. Quests are designed to work the simple way I suggest above, and that's it. That is how the journal objective system is designed to work: do steps, in order, finish quest, success, get reward. There aren't many branches in Skyrim vanilla. There are some exclusive choices, but they're usually done by starting two quests and failing one of them when you finish the other. Civil War does this for Storm Cloaks vs Imperials vs Broker Peace. Using that model, it can launch a new quest any time, and have that quest shut-down competing branches. If you want to make vanilla-style quests, you should design like this. It's not a huge benefit, but it's a benefit. The alternative is that you have to write a quest system of your own in script. Misapprehension of this pattern leads to Delzaron coming unstuck sometimes, but most of his quests are linear and fit this model perfectly. Fish seems to "get" it, but still gets sloppy with objective clean-up. Sex Slaves permits branching, so it launches "competing" quests, but you can't complete them all successfully. While you can build multiple paths into a single quest, it's not really the intended pattern and it makes objective clean-up harder; there are ways to be rigorous about it, but Beth just don't bother; it's probably easier and cleaner to make a new quest. e.g. 10 Learn you must find the maguffin 20 Magguffin found - sets objectives "give maguffin to a Ulfric or Balgruuf" 30 Maguffin given to Balgruuf - start new quest Balgruuf's Maguffin 40 Maguffin given to Ulfric - start new quest Ulfric's Maguffin 50 Clean up objectives ... Completion vs 10 Learn you must find the maguffin 20 Magguffin found - sets objectives "give maguffin to a Ulfric or Balgruuf" 30 Maguffin given to Balgruuf - go to stage 100 40 Maguffin given to Ulfric - go to stage 200 100 Clean up common objectives from 10-40 110 Do stuff with Balguuf's maguffin... Go to stage 300 ... (various stages) 150 Complete Balgruff's maguffin quest-line 200 Clean up common objectives from 10-40 210 Do stuff with Ulfric's maguffin... ... (various stages) 260 Complete Ulfric's maguffin... Go to stage 300 300 Completion And if you want to unify clean-up ... 10 Learn you must find the maguffin 20 Magguffin found - sets objectives "give maguffin to a Ulfric or Balgruuf" 30 Maguffin given to Balgruuf - set Balgruuf flag - go to stage 50 40 Maguffin given to Ulfric - clear Balgruuf flag - go to stage 50 50 Clean up objectives from before (unified clean-up), branch on Balgruuf flag, go to stage if true 100 or 200 if false 100 Do stuff with Balguuf's maguffin... ... (various stages) 150 Complete Balgruff's maguffin quest-line... Clean up Balgruuf objectives ... Go to stage 300 200 Do stuff with Ulfric's maguffin... ... (various stages) 260 Complete Ulfric's maguffin... Clean up Ulfric objectives ... Go to stage 300 300 Clean up common objectives ... Completion See how much simpler it is if you don't do branches within the quest? Often, we'll see quest authors mush their stages together, performing multiple activities per stage to get around this. This muddy thinking often leads to them getting muddled about what a stage should do, or having poor stage planning and design. It also leads to "objective clean up in completion code" which then creates broken objectives when players SetStage from the console. Last Words A smart person learns from their mistakes. A really smart person learns from the mistakes of others. I know this seems like a hatchet job on poor Delzaron. I used his mods as an example, but he's not alone in doing this. I love what he's trying to do. I admire his persistence. His mods are consistently interesting, and raise all kinds of provoking possibilities. However, his scripting is a tail of tears, and I think it's worth examining why, so that others don't go down that same road and fall straight into the same potholes. There are other good/bad habits I didn't mention. Maybe you've come across some quest patterns you'd like to never see again?
- 9 comments
-
19
-
Version 1.0.0
412 downloads
So, after googling for hours and reading over old posts, I figured I should put together a guide on how to get the creation kit to work with MO2 with a focus on SL scripting. (Download is just a word document version of this post) Install creation kit from bethesda.net, and point MO2 to the creation kit executable through this box: 2) Install SSE creation kit fixes and multiple masters fix: https://www.nexusmods.com/skyrimspecialedition/mods/2786 https://www.nexusmods.com/skyrimspecialedition/mods/20061 3) If you haven’t already, install SKSE and be sure to keep the .psc source files handy for the next part. 4)Now, create a new mod in MO2 by simply opening your MO2 profile dir and making a new folder. Inside, you will need to create 2 folders: scripts and scripts\source. 5)Move the SKSE .psc files into the \scripts\source folder 6)Now, go to your skyrim data folder (<skyrim installation path>\data\scripts) and grab a zip file called Scripts.zip. You will need to extract it into your new MO2 mod, and be sure to keep all the .psc files in the \scripts\source folder. 7) After that, you’re going to need a few more dependencies before you can start developing: SkyUI Developmet sdk: https://github.com/schlangster/skyui/wiki RaceMenu developer: https://www.nexusmods.com/skyrim/mods/29624?tab=files (download modder’s package) FNIS (FNIS ships with its sources, but you need to change the file structure. FNIS has its sources in sources\scripts, and you need to move them to scripts\sources) PapyrusUtil 8 Now you need to unpack RaceMenu’s BSA, which you can do with Cathedral Asset Optimizer. Just open it up, and point it to RaceMenu’s mod dir: You will need the RaceMenu source scripts when you are compiling. 9) Now you need to change the CK ini file to reflect your script directory: [Papyrus] bPerforceEnabled = 0 iMinMemoryPageSize = 128 iMaxMemoryPageSize = 512 sScriptSourceFolder = ".\Data\Scripts\Source" After that, you just have to boot up the CK and load Sexlab and SLA as your master files, along with any other .esps you will need. Then you’re good to go for scripting! I'm pretty sure I got everything covered, but its entirely possible I may have missed a step after getting everything working - so please let me know if I missed something. Some mods with good example scripts that you can look at:-
11
-
- scripting
- creation kit
-
(and 1 more)
Tagged with:
-
Does anyone know if weightmorphs (https://www.nexusmods.com/skyrim/mods/70243/) has been patched to work with NPCs? The mod author says he sees no point in applying weight morphs to NPCs and won't do it. I and a number of other people use mods where NPCs do eat and drink, and it would be fun to see followers with the effect applied. I made it as far as porting in the changes for Devourment to the latest version, but don't know how to convert the mod to apply the effect to NPCs and not just the player. So guidance, tips, etc. would be greatly appreciated, assuming someone hasn't already done this.
-
I finally have a working scripting setup and decided to start learning a bit about scripting. Basically, I want it so when the player is wearing a gag with the zad_Deviousgag keyword, a drool texture appears on her face. This is what I came up with so far: The problem is, ofcourse, no drool texture appears. I'm sure this has to do with the fact that the script doesn't know where to look for the .dds texture file, but I have no clue on how to do this. I typed the texture just there because I would think thats where NiOverride would look (in nioverride.ini - sDefaultTexture=textures\actors\character\overlays\default.dds). Any help would greatly be appreciated.
-
I'm trying to register some custom creature races I made for a personal mod. I copied (more or less) the script from Sexy Nixy & Sexy Dwemmy, with appropriate mod and race name changes. Here's the script: Scriptname CaroWHRegisterCreatures extends Quest SexLabFramework Property SexLab Auto Event OnInit() Debug.Trace("[CaroWH] OnInit") InitializeRaces() EndEvent ; Initialise (runs once) Function InitializeRaces() Debug.Trace("[CaroWH] Initializing") ; SexLab = Game.GetFormFromFile(0xD62, "SexLab.esm") as SexLabFramework if SexLab int slversion = SexLab.GetVersion() if slversion < 16000 SexLab = none endif endif if SexLab RegisterForModEvent("SexLabRegisterCreatureKey", "OnCreatureRegister") ; If SL is already loaded up, won't get the register event... so call it directly. if sslCreatureAnimationSlots.HasRaceKey("SabreCats") OnCreatureRegister() else Debug.Trace("[CaroWH] SL creatures not yet registered") endif else Debug.Notification("Need SexLab 1.60 or higher for sexytimes") Debug.Trace("[CaroWH] Need SexLab 1.60 or higher for sexytimes") endif EndFunction ;;;;;;;;;;;;;;;;;;;; ; Callbacks ;;;;;;;;;;;;;;;;;;;; ; Catch the SL creature register event and register our creatures if needed Function OnCreatureRegister() Debug.Trace("[CaroWH] Creature Register") sslCreatureAnimationSlots.AddRaceID("Bears", "CaroWHreaturesBearBrownRace") sslCreatureAnimationSlots.AddRaceID("Bears", "CaroWHreaturesBearSnowRace") sslCreatureAnimationSlots.AddRaceID("Chaurus", "CaroWHreaturesChaurusRace") sslCreatureAnimationSlots.AddRaceID("ChaurusHunters", "CaroWHreaturesChaurusHunterRace") sslCreatureAnimationSlots.AddRaceID("DragonPriests", "CaroWHreaturesDragonPriestRace") sslCreatureAnimationSlots.AddRaceID("Dragons", "CaroWHreaturesDragonRace") sslCreatureAnimationSlots.AddRaceID("Draugrs", "CaroWHreatiresDraugrRace") sslCreatureAnimationSlots.AddRaceID("DwarvenBallistas", "CaroWHreaturesDwarvenBallistaRace") sslCreatureAnimationSlots.AddRaceID("DwarvenCenturions", "CaroWHreaturesDwarvenCenturionRace") sslCreatureAnimationSlots.AddRaceID("DwarvenSpheres", "CaroWHreaturesDwarvenSphereRace") sslCreatureAnimationSlots.AddRaceID("DwarvenSpiders", "CaroWHreaturesDwarvenSpiderRace") sslCreatureAnimationSlots.AddRaceID("Deers", "CaroWHreaturesElkRace") sslCreatureAnimationSlots.AddRaceID("Falmers", "CaroWHreaturesFalmerRace") sslCreatureAnimationSlots.AddRaceID("Gargoyles", "CaroWHreaturesGargoyleRace") sslCreatureAnimationSlots.AddRaceID("Gargoyles", "CaroWHreaturesGargoyleVariantRace") sslCreatureAnimationSlots.AddRaceID("Giants", "CaroWHreaturesGiantRace") sslCreatureAnimationSlots.AddRaceID("Horses", "CaroWHreaturesHorseRace") sslCreatureAnimationSlots.AddRaceID("Netches", "CaroWHreaturesNetchRace") sslCreatureAnimationSlots.AddRaceID("SabreCats", "CaroWHreaturesSabreCatRace") sslCreatureAnimationSlots.AddRaceID("SabreCats", "CaroWHreaturesSabreCatSnowyRace") sslCreatureAnimationSlots.AddRaceID("Seekers", "CaroWHreaturesSeekerRace") sslCreatureAnimationSlots.AddRaceID("Trolls", "CaroWHreaturesTrollRace") sslCreatureAnimationSlots.AddRaceID("Trolls", "CaroWHreaturesTrollFrostRace") sslCreatureAnimationSlots.AddRaceID("VampireLords", "CaroWHreaturesVampireBeastRace") sslCreatureAnimationSlots.AddRaceID("Werewolves", "CaroWHreaturesWerewolfBeastRace") sslCreatureAnimationSlots.AddRaceID("Wolves", "CaroWHreaturesWolfRace") sslCreatureAnimationSlots.AddRaceID("Canines", "CaroWHreaturesWolfRace") EndFunction It fails to compile with these errors: So...what am I doing wrong? I really don't understand any of this - I can only guess that one of these script files has the function that I'm calling in my script, but why would that affect it? I admit, I know almost nothing about Papyrus, and I'm terrible at coding in general. I thought copying the script from Sexy Dwemmy would be fine, since it's not particularly old, but I have no idea. EDIT: I've noticed ' ; SexLab = Game.GetFormFromFile(0xD62, "SexLab.esm") as SexLabFramework ' might be a problem, but it's commented out. (To add, I've set up so that I'm not using MO, but I honestly don't know if I got the manual installs right on everything. The mods that I'm using (some are required for my mod, some are masters of those mods) are: I followed the install guide for MNC and CreatureFramework by MadMansGun, but I wasn't sure where some of the other mods fitted into that. I'm not sure if that makes any difference though.)
- 1 reply
-
- sexlab
- custom race
-
(and 4 more)
Tagged with:
-
I'm working on a little script to do what it says in the title, in order to make it easier to keep track of all animations that I have available. I've gotten pretty far, but two things are causing a roadblock to the script being finished (one major, one minor). The first being finding the display name of an animation, and the second being translating "custom" object IDs into something a little more readable (class name or whatever). I feel like probably only TURBODRIVER himself would be able to shed light on this since it relies a lot on his code, but I'll post it here anyway in case anyone else has looked into the scripting behind WW. So, let's get to the grit... Getting a full list of animations and their properties is easy enough, using get_sex_animations() and iterating through it. Most of the properties come out fine (aside from animators who didn't fill out their XML properly), but SexAnimationInstance.get_display_name() pretty much only returns some sort of hash value (unless the animator specified the name as raw text). Of course this hash value references the actual display name text in the STBL file, but nothing I've tried seems to work in converting the hash into the full text for the purposes of printing it out. I've looked through the code for other places that SexAnimationInstance.get_display_name() is used, and it seems like all it does is pass it through TurboL18NUtil.get_localized_string() and move on. When I do that, I just get another seemingly unusable hashed object. Technically it's a LocalizedString object, but same problem: I don't know what to do with it. The only data I can find contained in it is still just the hash value. I did decide to go a little deeper and get crazy. It would seem the game itself never displays strings outside of a "dialog", and dialogs have a function called _build_localized_string_msg() that must do something. I tried creating a temporary dialog just to use its function, but that didn't do what I need either. I finally tried looking into how the code gets the data from the STBL within the .package file itself, but a few key .pyo files wouldn't decompile, so I hit another roadblock. Problem #2 is that custom objects used by animations are listed as IDs in the XML file and stored as such. I tried telling the game to create a temporary instance of the object (in the household inventory or somewhere) and then use that to get a more readable name. I'm not really sure how to do that though. I tried TurboObjectUtil.GameObject.create_object() using the ID, but that always seems to fail and return None. Not sure what else to try. I'm sure if the script user does not have the object installed this will never work, but I do have the objects in question installed, and I assume the end-user will too most likely. It's not critical, but it would be nice to have a solution for this as "Azmodan22:DancingPoleShort26012017" is a bit more useful than a random number. I attached what I have so far in case anyone is interested, source included (with lots of commented out things that I tried). Basically you type 'getanims' in the console and it will output a TSV file you can import/paste into a spreadsheet or something. Updated Mar 1 2018: It had been broken for a while due to some scripting changes in WW. Fixed now in case anyone uses it. (Fixed as in got it back to it's previous state; none of the above problems have been fixed.) WWanimationList.zip
-
Hello, I hope I'm posting this in the right forum. I'm trying to make my custom NPC follower initiate a dialogue and depending on the response, initiate sex. I still new to scripting and a lot of the material is still quite overwhelming. I am using a variety of tutorials and have been googling for answers on my own. But right now I'm trying to create the script where my character accept the response and initiate the animation at the end of dialogue. (which is where sexlab comes in) I've been following a tutorial called: Sexlab & Creation Kit tutorial for beginners, make actor, play animations. by trepleen but I'm stuck on step 6 where i need to compile the line "SexLabFramework property SexLab auto" in my edit source. it gave me this: Starting 1 compile threads for 1 files... Compiling "TIF__08000D7A"... C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\TIF__08000D7A.psc(17,13): script property SexLab already defined C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\TIF__08000D7A.psc(17,13): script variable ::SexLab_var already defined C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\TIF__08000D7A.psc(17,13): script property SexLab already has a get function defined C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\TIF__08000D7A.psc(17,13): script property SexLab already has a set function defined No output generated for TIF__08000D7A, compilation failed. Batch compile of 1 files finished. 0 succeeded, 1 failed. Failed on TIF__08000D7A According to some of the solutions I've looked up, says I might have to reinstalled SKSE and restarted creation kit but it didn't work. I see that it says it's "already defined" and I assume it means that the script I'm trying to make already exist and has a certain purpose? I don't really understand what the issue is. Am I missing a step? What should I be doing here?
- 42 replies
-
- creation kit
- sexlab
-
(and 2 more)
Tagged with:
-
Would any of you be interested in providing help for the creation of a gay sex mod for Stardew Valley? We're trying to surpass all the recent mods to make something noteworthy, and would appreciate if someone with experience provided some help with coding and scripts. If any of you is interested, PM me. We would like to find help in creating some stuff such as: Mechanics Coding Adding new items that can be referenced in events Perhaps finding a way to make more high definition animations If anyone is interested, PM me.
- 2 replies
-
- sdv
- stardew valley
- (and 9 more)