Jump to content

DlinnyLag

Members
  • Posts

    86
  • Joined

  • Last visited

Nexus Mods Profile

About DlinnyLag

Profile Fields

  • Country
    Russia

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

DlinnyLag's Achievements

Enthusiast

Enthusiast (6/14)

  • Conversation Starter
  • Dedicated Rare
  • First Post
  • Collaborator Rare
  • Week One Done

Recent Badges

0

Reputation

  1. Just ignore your feel. You have a fact of global variables existence in their form. Nobody will change it. Accept it, and use or don't use them. Perhaps, F4DS might help you.
  2. Another option to configure building of multiple files - project file. Project files has .ppj extension. Just create .ppj file with following structure and run PapyrusCompiler.exe "path\to\your\project.ppj": Unfortunately, I can't insert code block (it is blocked by Cloudflire), so screenshot and gist:
  3. All functions list can be found on https://wiki.bethesda.net/wiki/creationkit/Main/Tags?do=viewTag&tag=Papyrus Take a look at top right corner - there is search widget
  4. Actually, it is possible to achieve via F4SE plugin. Otherwise, Robco Patcher would not be able to work. Maybe authors of SUP or Garden of Eden Papyrus Extender can add functionality to get/set bit 2 of a Form's flags. UPD: Necessary functions just added to Garden of Eden Papyrus Extender. See SetFormFlag
  5. I don't think that it is correct. Take a look to the changes in scripting engine made for Fallout 4. And follow the links %) About reasons of 128 elements limit. We can only speculate here as there is no official notice (at least I didn't found anything from dev team) Why 128, but not 256? One of the potential reasons was mentioned by aurreth - errors check. Negative numbers are invalid (see the difference between signed an unsigned integer types). Looks like a kind of "over" reinsurance. It is hard to predict potential problems, so it is easier just to play more safe. Why the limit is so low? Some of the reasonable assumptions mentioned by SSK50 - prevent potential money loss. It will be necessary to invest more time ( read "money") to test impact of a higher array size limit. 128 elements can be viewed and tested manually, 32K/64K (16 bits) elements is extremely hard to review manually. Development of auto-tests is considered as "too expensive" by unqualified managers. There are much more unqualified personnel than qualified ones. So it is easy to imagine that Bethesda uses less qualified managers that you can expect %) Developers are people, managers are people, business owners wants to reduce costs... and they are people %) They tries to do their best, but software development is the area of a huge amount of uknowns. To reduce the risk of failure (read "money loss") people tries to make "safe" decisions on their level of competence and confidence. I'm personally do not see any technical problems with 16 bits for array size, but 32 bits looks dangerous. Imagine, some script developer made a mistake a wrote a code that adds elements to an array infinitely. 32 bits means 2(or 4) billions of elements, each elements is at least 1 byte size (more likely 4 bytes or even higher), so in case of such mistake game will crash or freeze due to lack of free RAM. Single mistake may cause a huge impact on the game process globally. If the limit is low, memory loss is insignificant, so it doesn't affect full game process. Mistake still cause a problem, but it is local problem, not global. I understand that it might not be an answer you can expect, but I would prefer to stop speculating %)
  6. I suppose you could try to request "Idle animation finish" detection from NAF. Maybe it will not be so hard to add such feature.
  7. Please refer to GetAnimationVariableXXX functions. LarannKiar just listed variable and event names that may present in .hkx files. Or may not. It seems that he provided a list of event/variable names from a behavior graph, most likely it is the representation of RaiderRootBehavior.hkx an example: bool isSneaking = Game.GetPlayer().GetAnimationVariableBool("bIsSneaking") There is no guarantee that this exact call will succeed.
  8. Is there an animation variable I can check to see if the animation I am playing on an actor is complete? In general, no. A .hkx animation may has own set of events. There is no strict standard.IDLE object has a start event name, so the system is able to start animation playing. But finishing event name may be any... if any! %) It is possible to create .hkx animation without "finishing" event at all. You can try to change your approach and define duration for each animation somehow in the design time. So you can interrupt idle animation on this duration expiration.Another option - define event name (in the design time) that represents animation finish for each animation. So you can subscribe to this event I suppose that many of existing .hkx files has similar events naming convention, that may allow to handle many of them, but not all of them.
  9. You have to initialize array and initialize each element in array before accessing element's fields. something like: AmmoTypes = new AmmoType[54] AmmoTypes[0] = new AmmoType AmmoTypes[0].AmmoList = .... AmmoTypes[1] = new AmmoType AmmoTypes[1].AmmoList = .... and so on
  10. FormID (at runtime) is 4 bytes integer number. The bits of this number interpreted in following ways: For ESM/ESP: High 8 bits - [01-FD] - index of ESM/ESP in an ordered list of mods (excluding ESLs). Note: 00 is invalid, FE is reserved for ESL flagged files, FF - not sure, I've never tried to investigate the exact meaning of it. Low 24 bits - id of the record inside of ESM/ESP For ESL: High 8 bits - always FE Next 12 bits - index of ESL in an ordered list of ESL mods (excluding ESM/ESP) Low 12 bits - id of the record inside ESL. The exact value of Form Id at runtime indirectly depends on the file where record is declared. System orders mod files and the index of file in the ordered list is used to separate records of one file from records declared in another file. So records gets unique id at runtime. For example, you have 2 mods A.esp and B.esp In the particular gamer environment mods are ordered as A.esp and B.esp and has corresponding indexes in the ordered list of mods - 1C and 2E, for example. In this case at runtime records from A.esp will have IDs started from 1C (like 1C003456) and records from B.esp will have IDs started from 2E (like 2E006543) When game saved to the file then ordered list of mods is also saved to this file. This gives game a chance to reconstruct previous unique FormIds. When game lodaded - previously saved ordered mod list is used to understand how to map IDs of forms against the new ordered list of mods. For example given above, lets assume that at the moment of loading A.esp and B.esp changed their order in the list of mods. And now they has corresponding order number - 3B and 2C So record 1C003456 from the save file becomes 3B003456 and 2E006543 becomes 2C006543. And so on. It can be safe to assume that system internally has 2 independent list of mods - for ESM/ESP and ESL mods. Rules are same for ESL files. This idea of assining IDs to records causes following problems: 1) If name of mod changed (for example, rename A.esp to newA.esp) - then on the stage of loading saved file there is no information how to map records from A.esp to newA.esp - records will be lost. Workaround - patch save files with the new file name. 2) Maximum theoretically possible number of the ESM/ESP files - 253 (maybe 254, if FF at high 8 bits is valid) 3) Maximum theoretically possible records in a ESL file - 4095 (local id=0 is invalid). In practice this number is twice lower. [001-7FF]. Seems like details of implementation. 4) Potential problems when the file gain or lose ESL flag. But it depends on exact situation. 5) If records in a file renumbered somehow between save/load, then it will not be possible to restore data as there is no mapping between old IDs and new IDs
  11. You will need to alter ContainerMenu.swf Functionality similar to what you want is implemented in https://www.nexusmods.com/fallout4/mods/48758
  12. You can't alter/create UI elements in Creation Kit. UI engine is based on Scaleform GFx that uses Adobe Flash. Adobe Flash technology is abandoned, and official tools are no longer available. But ActionScript documentation still here. Alternative Flash related tools I know about: JPEXS Free Flash Decompiler FlashDevelop All UI elements defined in .swf files in /Data/Interface directory. On clean Fallout 4 install they are packed to .ba2 archive, so you may need to extract them first. Also, you may get additional information from https://github.com/F4CF/Interface
×
×
  • Create New...