-
Posts
1390 -
Joined
-
Last visited
Everything posted by PeterMartyr
-
Understanding visual effects in script
PeterMartyr replied to gpp9999's topic in Skyrim's Creation Kit and Modders
OFC you will need to cast it with a script.. if not in a spell tome, or something the player cast learn!! -
Understanding visual effects in script
PeterMartyr replied to gpp9999's topic in Skyrim's Creation Kit and Modders
Basically in gaming without going to much detail.. Shader Effects are like lighting and shadows, Visual Effects are like explosion, embers and smoke. BTW next time you have a Question that is 100% gaming and nothing to do with Skyrim, it is faster to Google It than asking here Yes and No, but with a temporary magic effect I would set both FX effects to infinite (see below) with a spell duration to dispel it. Also I would not duplicate that Sovengarde magic effect either, think of a spell that player casts at themselves, with a duration, an example would be Invisible, night vision, etc, then modify that ScriptName RenameThisOK Extends MagicEffect VisualEffect Property FXSovengardeGlowEffect Auto EffectShader Property SovengardeFXS Auto Event OnEffectStart(Actor Target, Actor Caster) FXSovengardeGlowEffect.Play(Caster) SovengardeFXS.Play(Caster) EndEvent Event OnEffectFinish(Actor Target, Actor Caster) FXSovengardeGlowEffect.Stop(Caster) SovengardeFXS.Stop(Caster) EndEvent pretty simple, is it not? *** PLUS... look at the source code, recall I said set the FX effect duration to infinite, or in my code, I left as it default, which is infinite for both! Scriptname VisualEffect extends Form Hidden ; Plays this visual effect on the specified object, for a certain length of time (negative for infinite) and possibly facing another object Function Play(ObjectReference akObject, float afTime = -1.0, ObjectReference akFacingObject = None) native ; Stops this visual effect from playing in the specified object Function Stop(ObjectReference akObject) native Scriptname EffectShader extends Form Hidden ; Starts playing this effect shader on the specified object for the specified length of time in seconds. Negative values indiciate "infinite" Function Play(ObjectReference akObject, float afDuration = -1.0) native ; Stops playing this effect shader on the specified object Function Stop(ObjectReference akObject) native Since we can set the FX Effect Duration, we could do it without On Effect Finish or even in a Quest Script, however I am not recommending it, for your User Case. Use a Magic Effect with On Effect Start / Finish, and a duration, where the Spell Caster is both the Actor Caster and the Actor Target in the code I have use it Various Scripts, like; Follower Teleport to me and on appearing, adding a 3-5 seconds effect so they do not just pop in or just fade in! But fade in with style, for just a few seconds.. How you use it depends on what you want. effect.play(follower, 5) -
Managing the esp/esl dilemma...
PeterMartyr replied to csbx's topic in Skyrim's Creation Kit and Modders
Every time I have a mod in development, and I am required to use a clean save, I renumber the formID from the hex D62, to compact my esp if the plan is to eslify it, I would renumber the esp from the hex 801, before I eslify it Then eslify it, then check both in SEEdit, and check the Next Object ID is the same. sorry posted by accident, take note of this value, and only renumber the version 2 esp from that value going forward that the best you got. Perfect one to one ratio BTW if you delete a record in esp of version 2 that is in the published esl? The symmetry is broken, and advise them that clean save is needed, also drop back to the hex 801 in version 2 to compact the Esp I hope you understand BTW I never update during a playthru, cos I know better.... both we both know the community not like that -
Just for fun I prototype above and included the debug code for int MyType = akForm.GetType() in the OnInit Event, I personally would preferred to test that before I prototype anything, but is Saturday and I had nothing to do.. It compiled, but it is untested in every way
-
I have never had the need in papyrus to fix it, plus the Utility Script RandomInt function would use epoch time https://en.wikipedia.org/wiki/Epoch_(computing) not real game time, plus all the math of C++, so it already its is better than anything we could do with papyrus, all we have is real game time, and basic math https://ck.uesp.net/wiki/GetCurrentRealTime_-_Utility it does not compare, like I said in my post, it is not for actual use, just a math demo, and I stand by that We would also need not only a Random but an Array of refs to select from, thinking.... OGM this is Youtube algorithm OK idea cell location = player.getParentCell() https://ck.uesp.net/wiki/GetNumRefs_-_Cell the example look on the wiki is auto harvest, but the gist is there https://ck.uesp.net/wiki/GetType_-_Form using SKSE make a super form array of all the refs in your list, if you get over 128 refs from all your forms https://ck.uesp.net/w/index.php?title=CreateFormArray_-_Utility&action=edit&redlink=1 https://ck.uesp.net/w/index.php?title=ResizeFormArray_-_Utility&action=edit&redlink=1 You may break the Array 128 limit here, welcome to the club brother Shuffle it like deck of cards mixing them up real nice, pretend it is blackjack game, and they are a deck of cards then Waste some elements like dealer at the casino to stop blackjack player counting cards, and increase the randomness Stopping here but there is more, like handling removing a ref from the array if it used to place object, so it is not selected again. FYI to keep the Blackjack I do not what overwhelm you, basically we going to handle everything, you sure you want this? When You have working code, it might not be much better in the end? baby steps, some questions, how many forms are being checked for, I could see tree and flower in the form list, plus there is int MyType = akForm.GetType() to debug it too, But I am just brainstorming, not saying it is going to work... but make our own array of Form Refs and handle everything, but is GetNumRefs this Form going to work for you? step one is simply debug the forms in your list to see if you get a return that not... f*#@ Stupid Wikki does not say, let's assume -1 or 0 ¯\_(ツ)_/¯ is a negative result..
-
I just wanna point out, that creating the script in creation kit through the object it is attached too will correctly extend the script, most times, I admit not in this case, since it extends SkyUI and leave creating them in advance to more experienced users, at this stage create them through the KIT @Qvorvm it is SkyUI, they just attached the SkyUI Alias for Player Load Game 1 ... 2 ... 3 ... 4 I know you have SKYUI SDK, make sure it's sources are correctly in place too You are doing well for your first script keep going.. do not be discouraged
-
LOL forget about the ascii table and the ansi table plus the ansi extended table, it is all unicode these days, plus ascii only 7 bits with support for 0-127 chars it is soooooooooooooooooo SOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO obsolete highlight the left curly bracket then replace [ctrl + R] all it with the straight one, do the same for right curly bracket to fix them for get perk just replace player.GetPerkPoints()) with Game.GetPerkPoints()) and for the player variable it is this, I think you made another typo there, but I was not sure. Actor Property PlayRef Auto then in the CK Property dialogue, press Auto Fill but to answer your question make sure notepad++ is set to: file menu → encoding → UTF-8 yes that is 8 bit unicode like stated above.. and correct edit sorry my bad for Notepad++ it is [Control + H] to open the replace dialogue, that typo on me, told ya we all make them
-
There is seven errors that need attention, that I can see A unique script name? Incorrectly declared variable (player) the above mentioned curly quotes, btw it is the entire document, not just one line the above variable (player) is not defined incorrect use of GetPerkPoints, it is a Game object, not an Actor object which mean you do not need the player variable ATM One sneaky harmless but embarrassing typo in a string... when you publish, that make you look silly, don't shoot the messenger, we all make them.. that is it I will just add, a word processor, is not coding editor.. it is plain as day you cut and paste from Microsoft Word: curly quotes straight single and double quotes only in code https://code.visualstudio.com/ https://www.sublimetext.com/ https://notepad-plus-plus.org/ finally if your going to spell check a document, use US English..., if you are not from there, else it will bite you sooner or later, until you understand it better.
-
Skript Puzzle and help by Error Message
PeterMartyr replied to Dark09188's topic in Skyrim's Creation Kit and Modders
I got no idea what you doing, but I still sanitised it for you by adding some properties you may need... Starting 1 compile threads for 1 files... Compiling "Ab0000VogtQuestZusatz"... Starting assembly of Ab0000VogtQuestZusatz 0 error(s), 0 warning(s) Assembly succeeded Compilation succeeded. Batch compile of 1 files finished. 1 succeeded, 0 failed. [Finished in 2.3s] I can see you are trying to make a follower a House Stewart Scriptname Ab0000VogtQuestZusatz extends Quest Conditional ; ======================================================= ; ======================================================= ; Obliviously a Quest Script ; ======================================================= ; ======================================================= DialogueFollowerScript Property DialogueFollower Auto Bool Property bHaveSteward Auto Conditional ReferenceAlias Property Efil Auto function HireSteward(Actor akNewSteward) Efil.ForceRefTo(akNewSteward) bHaveSteward = true DialogueFollower.DismissFollower(0, 0) endFunction function DismissSteward(Actor akSteward) if Efil.GetActorRef() == akSteward Efil.Clear() bHaveSteward = false endif endFunction ; ======================================================= ; ======================================================= ; Guessing this a QF Fragment ; ======================================================= ; ======================================================= ReferenceAlias Property Alias_Efil Auto LocationAlias Property Alias_TaldesEinklangsLoc Auto Location Property TalLocation Auto Function SomeFragNumber1() SetObjectiveCompleted(10) SetObjectiveDisplayed(20) Alias_Efil.GetActorRef().SetPlayerTeammate(false) if Alias_TaldesEinklangsLoc.GetLocation() == TalLocation BYOHHouseBuilding.HireSteward(0, Alias_Efil.GetActorRef()) EndIf EndFunction ; ======================================================= ; ======================================================= ; Guessing this a QF Fragment ; ======================================================= ; ======================================================= BYOHHouseBuildingScript Property BYOHHouseBuilding Auto Location Property BYOHHouse1Location Auto {location for house 1} Location Property BYOHHouse2Location Auto {location for house 2} Location Property BYOHHouse3Location Auto {location for house 3} LocationAlias Property Alias_houseLocation Auto ReferenceAlias Property Alias_Follower Auto Function SomeFragNumber2() if Alias_HouseLocation.GetLocation() == BYOHHouse1Location BYOHHouseBuilding.HireSteward(0, Alias_Follower.GetActorRef()) elseif Alias_HouseLocation.GetLocation() == BYOHHouse2Location BYOHHouseBuilding.HireSteward(1, Alias_Follower.GetActorRef()) elseif Alias_HouseLocation.GetLocation() == BYOHHouse3Location BYOHHouseBuilding.HireSteward(2, Alias_Follower.GetActorRef()) endif Self.Stop() EndFunction ; ======================================================= ; ======================================================= By sanitising I mean I cleaned so it compiled, I am not saying it is going to work, but will help you understand what the compilation errors were -
Skript Puzzle and help by Error Message
PeterMartyr replied to Dark09188's topic in Skyrim's Creation Kit and Modders
OK, I thanks, I get it, I will just continue with advise that makes getting help easier, look at the post tool bar Notice the two chevrons <> if you click that it open a code bock, copy your code from Notepad++ and paste it here, it make easier for us to read and looks like this Event OnDeath(Actor akKiller) Actor akActor = Self.GetReference() As Actor akActor.RemoveFromAllFactions() Self.Clear() EndEvent -
Skript Puzzle and help by Error Message
PeterMartyr replied to Dark09188's topic in Skyrim's Creation Kit and Modders
Do have coding experience, to me it looks like your trying to use a then, mixed with python code indenting, or this that just sign that you have no experience and it is bad misplace attempted assignment, plus yeah how you declaring your properties and variables.. like the quest, you are treating them like they are "static objects", (just in case your experienced) you need to declare and define them. There more than one thing wrong in the image Declare int x Define int x = 42 or in Papyrus Quest Property MyQuest Auto Now in the Creation Kit point to a Quest using the property GUI (Graphic User Interface) to define it then code like this with a cast to the script (MyQuest as ThisScript).HireSteward(0, Alias_Efil.GetActorRef()) or just link it to the script directly (what I recommend) and it will look what you trying to do, again define it in the creation kit too MyQuestScriptName Property myScript Auto myScript.HireSteward(0, Alias_Efil.GetActorRef()) I hope I am right in treating you like some one that has done basic coding something.. but that info cannot hurt)) btw the above is just generic informant on declaring and defining properties, both Quest and Scripts, and how to use them in other Scripts, not advice on how to actual code your problem, I need more info, for that you have not given us much -
Try running the mods nif's (not the FaceGen) in a nif healer, or use Nifskope to sanitise them, it will fix things you will never find.. BTW I once had in crashing problem in one of my own mods on converting to SE, I finally it track to a single texture cubemap. So yeah I 100% agree they can do your head in, and I never thought an Itsy bitsy tiny weenie texture converted to BC7 could crash the game, until then Check everything that these assets used, I know it is laborious, I only solve it cos I did a Don't give up, at least you have a short list to start from. Once I worked parttime for roofer as a teen, I learnt a valuable lesson, we got a job fixing a leaking roof, that three other tried to fix with caulking guns, (Patches) this is what we did, we pulled the roof off and put it back on) we knew patches are trial and error, and we knew we could do it right the first time, and we fix it. It was galvanised tin roof for anyone that cares, and the only way we would give a warranty or guarantee of our work. OFC we charged for it. We were not one guy up on roof with caulking gun. Take from that what you will And I could not tell you were the leak was either, we did not waste time looking for it. EDIT in your case, get brand new nif head parts and texture instead tyring to fix it) it is what I did with that cubemap
-
@AmbroseTheRed your in over head, give up now, and your rude f*#@er @scorrp10 just ask for jslot file and make a step by step guide to document it, things to think about requires a 100% playable race Vampire etc all the physical asset too required for that You hit the nail with the extra modded part head on the LOL head again the physical asset for that either standalone or has requirements Coding (this not changing a preset in custom race, it smoke and mirrors has I say, it is loading a "RACEMENU PRESET" on menu switch to this 'race' or /plus and 'sex change' Events but I think you got that. or every single f*#@ing slider change event in character creation, like the script the script they posted if that is what it takes they never coded so everything from unpacking the script rar forward Dealing with a Soft Master Handling things like SkyUI That that what they want cause they not prepared to put in the hard work @AmbroseTheRed EDIT if this is for personal use, just load it using RaceMenu, and the ultimate proof you are a rude Dunning Kruger
-
Try using advance search options https://ahrefs.com/blog/google-advanced-search-operators/ They also work with other engines, and a true Linux user would love it.. Hell a true Linus User and coder should know about it)) There heaps out Tutorials there.. have you checked the Nexus Wiki? They have basic guides for most Bethesda games. Nexus dot com → NAV Menu → Community → Wikki (then pick a Game) BTW every Gamer that mods a game deals with bugs, it not what knocks you down, but how you get up that matters. Have you made a Merge Patch so all your mods play nice together? BTW it takes me like forever to create a load order (weeks), then hours (days) of testing in God Mode flying over the Game World to spot bugs at triple speed or more, visiting every city etc, we all do it to avoid surprises, and still we find more bugs in the playthru. Such is the life of all Nexus members, that what it takes, modding a game seriously. I been doing this since before the Nexus existed, and started on the same site has the owner of the Nexus did, only I downloaded mods, he was working on the site.
-
Typo.. wait If this was the Nexus of old, some one would call you out has a pirate, this is my reasoning MO natively support CK thru registry keys All you have to do shut MO and relaunch it if fails to detect CK on a new installation, while it running If your seriously having issues... Pirate Not saying above is 100%, you also might not be the sharpest tool in the shed...
-
LOL I booted up the kit and had a look, this is untested but open your Alias select "External Alias Reference" select the Quest from the drop down on the right of this with "Alias" Select an Alias in that Quest from the drop down The Just me being Random, and I told you it had no code)) and test it with + 1 priority on your overriding quest, it should work, forget what wrote above except for do not go crazy with your overriding quest priority Edit a quick update, which ever quest has priority, the Alias will use that AI stack in that Quest Alias, if this is non-issue for you? Forget the what I wrote above) but its important, if you require your AI stack to run. Only you know the nitty gritty nuts and bolts, all we can do is generalised
-
OMG I knew how to do this, or I did it once, hehehee, I remember that, you mean this Alias A is empty and then get's filled and your Alias B Automatically gets filled too copying it, it was years ago and I forget, LOL, But I will add this, it does not need code)) or you having to touch Alias A Hopefully some one who knows will answer, but there a solution, that matches all your needs.. and is even code free, To override the other Alias your quest needs a higher priority too, nothing crazy try + 5 or +10, not +30 or +40, keep it small. Hope some one better than me answers, but it can be done!! have hope
-
Reducing data saved to save file / memory usage.
PeterMartyr replied to csbx's topic in Skyrim's Creation Kit and Modders
BTW Came back for this, if you do this String text = JsonUtil.GetStringValue("FileName", "KeyName") Debug.Notification(text) what have you achieved? You declared a variable and are using RAM. So nothing. Plus it is hard coded. This is how to not use RAM Debug.Notification(JsonUtil.GetStringValue(FILE_NAME, KEY_NAME)) So it will need Const/AutoReadOnly to back it up for the FileName and KeyName. Plus it is now soft coded Is it worth it to you? btw with option A and the local variable OFC it will not get baked into the game save, but it only fulfill 50% of the post and runs slower than option B and need the windows garbage disposal unit to clean it up... FYI free unused RAM once it is no longer required. -
Reducing data saved to save file / memory usage.
PeterMartyr replied to csbx's topic in Skyrim's Creation Kit and Modders
Basically storing Constance Data in the RAM, (and the game save) no matter what language you are using, is a (Crood Movie) bad bad bad bad bad bad bad thing, that is not how we roll.... Good to see you are thinking about it -
Reducing data saved to save file / memory usage.
PeterMartyr replied to csbx's topic in Skyrim's Creation Kit and Modders
@csbx there a reason data get baked get's baked into the game save and it is over all performance, it is how the game optimises it self, you would be hamstring (lol pun intended) your mods performance if you did that. It is only an issue for Gamers that add or remove mods in mid-play-thru, That has never been recommended to do as well, basically two wrongs do not make a right, your trying to appease Gamer that we call the loud ignorant bunch. Papyrus does have an auto read only option, but I will add this, papyrus is buggy concerning the ASCII or ANSI table, to the degree that the SKSE team has DISCLAIMER over it, in String Utility. You can try to store your strings in that... but I am not recommended it, I have seen that bug first hand and it heart breaking. Go with PU or JC for that, but you cannot write code that is not hardcoded without using a const or a read only data type, and that is how you optimiser your memory usage, since strings variables or returns, in Papyrus are not case sensitive, the string bug has no effect there and most will not even know it is there. But for string data that display to the screen, I would not use it <Flags>; there are four flags available for you to use on your properties: Auto, AutoReadOnly, Hidden and Conditional. Oh the TESV_Papyrus_Flags.flg is just a list of keywords, or it try's to be, open it in Sublime, it is very over rated))) it just read only (pun intended )instruction for the compiler)) https://tesalliance.org/forums/index.php?/topic/5039-class-2-properties/ -
That because it is so easy, it does not need saying, look in Race on the last tab it called Preset NPCs, open the Actor → Actor → Preset I told to you duplicate what the other playable races are doing, before you can do that, you need to take a look to what they are doin... ten males and twenty females presets, hope you like making NPC, cos now you need to make twenty. BTW yeah I agree with you , it assumes you can make a vanilla NPC, if you cannot, find a guide for that, cos you need to make 20 of them EDIT the headparts formlist will make sense when you can make a NPC
-
q. on solving a big edge case
PeterMartyr replied to csbx's topic in Skyrim's Creation Kit and Modders
OK I did some searching myself Skyrim Scripting - YouTube Nothing like starting with easy hello world, the lady is an MO user too. -
q. on solving a big edge case
PeterMartyr replied to csbx's topic in Skyrim's Creation Kit and Modders
Your travels are just beginning, I will tag @dylbill so can they can post some youtube video's on making SKSE plugins ; wayFinder.ddl : author csbx ; returns true if they are the same Bool CompareMapMarker(mapmarker A, mapmarker B) Native But you are ready now, this requires a proper editor which you now have.