Jump to content

sLoPpYdOtBiGhOlE

Supporter
  • Posts

    929
  • Joined

  • Last visited

Everything posted by sLoPpYdOtBiGhOlE

  1. Pocket Empire? Adds a Coin & Purse Inn across the bridge from Honningbrew Meadery. The inn contains about 5 followers (can't remember exactly how many, maybe mpore) and some trainers and a merchant. Some of the followers are also trainers. Alea the Huntress, Zebled (he was my favorite who also trained in 2 handed), Daphine (also trained in block I think) and a few others that i can't remember their names. There were trainers for block, sneak, 2 handed, speech, destruction, conjuration, pickpocket and maybe more. (I also noticed it seemed to raise the training cap per level from 5 to 50 for all trainers in the game).
  2. It's not a case that they work better, it's a case of what your trying to accomplish. An array can be just as slow if you have to loop through all elements while calling functions on each element or if you have multiple different types of items. It really depends on what your trying to do. Your formlists, how many items does each one contain? Does you formlist contain more then one type of item? eg: Armor and Weapons in 1 list (Shield is Armor, Sword is Weapon, so say you want to put stuff on a 3 piece plaque) An array can only be declared as 1 type, but you can cast back and forth between types as needed in some instances. Are you filling the formlists at runtime or are you filling the list in ck and they never change? Did you understand what a property array is and how to fill it in CK? (Like what I posted in my example)?
  3. Ah that makes sense then. You can use the Find function for that. Objectreference ItemContainer int iIndex = Formlist1.Find(akBaseObject) If iIndex != -1 ItemContainer = Formlist2.GetAt(iIndex) Else ; actions if object not in formlist1 EndIf And a tip -- if you want to optimize for speed, arrays are faster than formlists in papyrus. You can transfer your formlists to arrays when your script starts. The drawback is that there's no Find() function for arrays, so you'd have to iterate the array (like you were doing with the formlist above in the While loop) to find the baseobject. This would still be faster than using formlists. There is find function for arrays and I use it often. Arrays vs form lists really they both have pros and cons. Using them combined can break a lot of limitations that one or the other has. Array's you can not initialize an array with a int variable, which means you can't dynamically assign the size of an array on the fly at runtime. eg: int i = 49 ObjectReference[] MyObjects = New ObjectReference This will not work, so if your trying to use the count of something to set the size of an array then nope. Well if you use SKSE 1.7.2 then you can actually initialize the size of an array using a variable. You can not store an array in an array, which makes formlists handy. You can not set the size of an array greater then 128 eg: ObjectReference[] MyObjects = New ObjectReference[266] Will fail, yet you can actually declare an array property and fill it in CK to any size from what I tested. Once again SKSE 1.7.2 breaks that limitation. No mixed form types in arrays. Formlists don't seem to have a limit on the Size, I often have formlists with more the 15000 entries. I can stick formlists in arrays and loop through forms very easily. A formlist can contain multiple types of forms so I don't need a different formlist just because I want multiple types of items in a list.
  4. Myself I'd sync it all to property arrays. Here's a crude example of what I mean. The first example is so you can see what's what to get the idea of it. The Second example is the same thing but you'd fill the properties in the CK: ScriptName _111BW_MstrContScript extends ObjectReference Actor Property PlayerRef Auto FormList Property ItemToDisplay Auto FormList Property ItemToDisplayWpn Auto FormList Property ItemToMann Auto ObjectReference Property ItemCont Auto ;Assign this to your Display Item container ObjectReference Property WpnCont Auto ;Assign this to your Display Weapon container ObjectReference Property MannCont Auto Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) ;I'm only setting these arrays like this so you can see what's in them, you would fill the array properties in CK and remove the array assignment from here. Formlist[] FL = New Formlist[3] FL[0] = ItemToDisplay FL[1] = ItemToDisplayWpn FL[2] = ItemToMann String[] Msg = New String[3] Msg[0] = "Is Display Item" Msg[1] = "Is Display Weapon" Msg[2] = "Is Mannequin Item" ObjectReference[] Cont = New ObjectReference[3] Cont[0] = ItemCont Cont[1] = WpnCont Cont[2] = MannCont Int i = 0 Int j Bool bFound = False While i < FL.Length ;Loop through each formlist j = FL[i].Find(akBaseItem) ; Check if the akBaseItem is in the formlist If j >= 0 ;We have found an item in a list, tell what type of item it is. Debug.Notification(Msg[i] + " and it's name is: " + akBaseItem.GetName() + " and it's index in the list is: " + j) ;Put the item in it's matching container Self.RemoveItem(akBaseItem, aiItemCount, false, Cont[i]) ;When we exit the loop we'll know that the item was found and moved to another container. bFound = True ;Since I assume each list does not contain items from another list, I don't need to look any further, exit the loop. i = FL.Length EndIf i += 1 EndWhile ;If this is false then no items were found in any lists, so we return the item to what ever container put it here. If !bFound Self.RemoveItem(akBaseItem, aiItemCount, false, akSourceContainer) EndIf EndEvent2nd example cleaned up: ScriptName _111BW_MstrContScript extends ObjectReference Formlist[] Property FL Auto ;In CK assign your formlists. String[] Property Msg Auto ;In CK assign you Messages, the index of the message should match the index of your formlist. ObjectReference[] Property Cont Auto ;In CK assign your containers, each container should match the same index as your Forlist and Message Event OnItemAdded(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) Int i = 0 Int j Bool bFound = False While i < FL.Length j = FL[i].Find(akBaseItem) If j >= 0 Debug.Notification(Msg[i] + " and it's name is: " + akBaseItem.GetName() + " and it's index in the list is: " + j) Self.RemoveItem(akBaseItem, aiItemCount, false, Cont[i]) bFound = True i = FL.Length EndIf i += 1 EndWhile If !bFound Self.RemoveItem(akBaseItem, aiItemCount, false, akSourceContainer) EndIf EndEvent
  5. I did ass about face for testing cell reset. Go somewhere outside not in the cell you want to test. open console: Set Timescale To 200000, hit enter and exit console. Wait and count day to night cycles till it hits 30 or more (usually a few seconds in real time). open console: Set Timescale To 20, hit enter and exit console and travel to the cell your wanting to test for reset. But I would only do that for a test and not on a save I was going to continue playing.
  6. There's no one good rule of thumb when it comes to yes or no overwriting. Time, common sense and research helps you to decide each time if it's a good or bad thing to overwrite. There are just to many variables to take in to account when it comes to overwriting mods. Exception is you know what your doing, you can restore your game to the way it was prior, you don't mind learning from mistakes. Then Yes overwrite when unsure. If your unsure of what your doing and you find trying to restore your game to the way it was prior a huge problem, you get impatient when things going wrong. Then No to overwrite when unsure. Blind faith yes or no to overwrite because some random person offered an opinion on a forum will only net you trouble in the long run.
  7. As a guess why it fails, the weapon is not a persistent reference so the OnCrosshairRefChange() isn't being called once the weapon is equipped. This is only an assumption on my behalf and I haven't tested it , nor have I used the RegisterForCrosshairRef() functions yet. Quote about OnEquipped from http://www.creationkit.com/OnEquipped_-_ObjectReference: Ways around it could be create the weapon as a persistent item in the game, eg: place the weapon in the game world in CK. Or Use PlacAtMe with the abForcePersist bool set to True. Or Instead of attaching the script to your weapon, attach a script to the actor/player and use OnObjectEquipped and OnObjectUnequipped and check that the weapon un/equipped is your weapon when those events fire.
  8. Does seem odd then as you mentioned you haven't checked the Optional flag and going by the info I read then the quest shouldn't actually start if a Reference Alias doesn't fill, but as you mentioned it's not the case and the quest is running. I really haven't used an actor as a hard set specific ref yet, but I have used other non optional objects as a specific ref or location ref and the ref alias has always been filled on the quest start. (I can tell they are filled as the specific ref <Alias=object> and <Alias=location> I use in a book the quest creates and the book displays them). Most actors I've used as specific ref the quest has started and I've used ForceRefTo the actor via a script at a later time as needed. Which obviously does not help with your specific problem.
  9. The only thing that I could reference if using Unique Actor fill type. I gather that means the actor is part of a Location. eg: right click the Actor in the object window and select Use Info. If the actor has LCTN and that location has their ref in the actor tab in the location window and that location is persistent then it should work when using the Unique Actor fill type.
  10. I still think skyrim does some form of temp precaching in windows swap file or in ram or combo of both. Even when you exit the game and load the game again and end up with another ctd. eg: a save game that you use to test stuff and you never save to it or overwrite it, and a game that has not changed since creating the save. Yet that game save works flawlessly after reboot. It's like skyrim is comparing something against a temp cache and it fails so ctd. I've seen many instances where skyrim crashes on loading a save game when the save and game has not changed. Yet the good old reboot pc seems to solve the persistant ctd on load or shortly after and it's as if there was never a problem. It makes one wonder how well their released mod is going to fair in the wild when battling quirky crap like the above.
  11. Yes as far as I'm aware the Sunday, 03.00pm (x6 hours) package will take priority when it's schedule is due over the 24/24 Any Day package. I have not read this anywhere though, I'm only going from my own experiences with ai packages that I have attached to multiple Quest Alias. For example: I have a fallback sandbox ai package that has no date and times set that runs when no other packages are running. Then I have a work ai package from 9am x 8 hours any day. Each day the npc sandboxes in one area unlit the work package kicks in and the then npc walks to the work area and works for 8 hours. Edit: I do understand not wanting to set conditions for every package. Currently I'm working on something that has no less then 1792 AI Packages and it's damn painful when I have to put a condition on every package. But you gotta do what you gotta do when it needs doing :)
  12. UFO only has 1 Alias slot for animals. So you can only have 1 true animal follower with UFO at a time. Only fix for more animal followers is to rewrite UFO. And to be truthful I don't see that happening any time soon as there has been no updates to ufo in quite a while. There was mention of a new version rewritten, but it seem to be only a mention and no reall progress was ever posted. Want more animal followers, use a different follower mod.
  13. NavCut layer is exactly that, the player and objects can still pass through the collision box, just the npcs see the area where the NavCut collision box pokes through the navmesh as if there is no navmesh there. Disabling the NavCut Collision box removes the cut. Obviously you would need to setup those Navcut Collision Boxes in CK as you cant set collision box bounds and layers dynamically on the fly as required in game at runtime. You can move already created collision boxes at runtime if required, but usually just enable and disable is all you'll need.
  14. Edit: Are you setting the Collision Box Layer to NavCut? You can use a Collision Box or Boxes with NavCut layer applied to them. Use your scripts/events or quest fragments to enable and disable the NavCut Collision Boxes as needed. Pretty much that's how Hearthfires houses are handled for stopping npcs from trying to walk upstairs or in rooms when when there is no upstairs or rooms been been built by the player yet.
  15. ^^ +1 SEQ file. if your creating start up quests with dialogue then you will need to generate a SEQ file if you haven't already. TessEdit would be the easiest way to generate the SEQ file and it takes half a second to generate with 2 mouse clicks after you load your plugin. There's also the steam/cmdline method of generating a SEQ file, but I didn't have much success with that method and it usually resulted with CK hanging until I terminated it, your mileage may differ.
  16. Yep same image code in the book as I posted earlier, only changed the sizes and file name. Win 7 SP1 x64 here, I haven't used win 8 so I couldn't give you and advice on that one. But if vanilla books in skyrim shows pictures, then there's no reason why your own images should not work.
  17. I really can't see where it's going wrong for you. I right clicked your displayed forum image (not the flicker link) and saved it, renamed it to gib_1.png put it in my directory, used your file name in my book (used the same code I posted earlier). The result I get is... At the true size of the image (H202 x W200): http://nsae02.casimages.net/img/2015/02/21/150221012211344695.jpg At stretched size (H471 x W296) http://nsae02.casimages.net/img/2015/02/21/150221012203461679.jpg
  18. No offense, but honestly a GT640 is a very weak card for games regardless of 4GB of DDR3 memory. The throughput of your card is lacking greatly. GT 640 really only any good for low resolution gaming or high resolution still photo editing /viewing, bet surfing, flash games, unreal tournament... etc The memory bandwidth on your card is around 57024 MB/sec Texel Rate of around 28800 Mtexels/sec Pixel Rate of around 14400 Mpixels/sec Which equates to it can't push enough data through itself to utilize 4GB of memory at an enjoyable frame rate. An old non ti GTX 560 performs almost twice as fast with a quarter of the memory of you GT640 and it would still perform a hell of a lot better in skyrim at any resolution your GT 640 runs. Mainly because it has a lot more throughput and it can actually utilize it's measly 1024mb ddr5 memory effectively. The up side of the GT 640 is it won't break the bank when your electricity bill comes in. At 65wat power consumption at peek it's a bargain when it come to electricity use. It's a great power miser of a card.
  19. Put the image in a <p> tag. example: <p align='center'> <img src='img://textures/interface/books/ndpainting.png' height='176' width='244'> </p>I had the same problem only a couple of days ago and found that it wasn't my png format as I tried the native skyrim book images and they wouldn't work either. As soon as I put the image inside a paragraph tag it showed. You can have other tags and text in the paragraph tag along with the image, but some trickier combinations of tags sometimes don't work (well for me anyways). The paragraph tag doesn't have to be center it can be any alignment. The images don't have to be in the path of my example, can be anywhere in the data folder and the path must start with //. I put my images in //Interface/MHIYHL/MHIYHL_BoT.png and it works fine after wrapping it in a <p> tag. This text in the page field of the book results with left page in the the image below it <p align='center'><font face='$HandwrittenFont' size='25'><u><b>Book of Tenants</b></u></font> <font face='$HandwrittenFont' size='20'><Alias=TMT></font> <img src='img://Interface/MHIYHL/MHIYHL_BoT.png' height='212' width='220'></p> [pagebreak]eg: http://nsae02.casimages.net/img/2015/02/19/150219040720380499.jpg
×
×
  • Create New...