Jump to content

DlinnyLag

Members
  • Posts

    96
  • 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)

  • Reacting Well
  • Conversation Starter
  • Dedicated
  • First Post
  • Collaborator

Recent Badges

1

Reputation

  1. Could you describe it a bit more detailed? I never faced that script miss a event. How it would happen? What are conditions?
  2. Your solution still allow race condition. You can use the fact that calls of DS:*Set.Add/Remove and DS:*Dict*.Add/Remove are atomic and returns result of operation and build your own mutex. An example, how it can be done: Keyword someKey int someNumber = 10 const bool function AcquireLock() return DS:IntSet.Add(someKey, someNumber) ; returns true if value was added to the set, otherwise - false endfunction function ReleaseLock() DS:IntSet.Remove(someKey, someNumber) endfunction function CriticalSection() while !AcquireLock() Utility.Wait(1) ; endwhile ; Do the stuff .... ReleaseLock() endfunction
  3. hm... Not sure that I understand the problem correctly, but you can try to make your Dynamic function non-global. The reason why scripts need to be "locked" - sync access to script's variables. Global functions do not use script's variables, so it is possible that calls of global function does not "lock" script. I know that global native functions doesn't lock the script where they are declared, but I'm not sure about just global functions.
  4. And additional note: Hazmat Suit has a 1000 points of resistance to dtRadiationExposure. So it looks like a reason why Hazmat Suit gives an 100% protection to Gamma Gun fire.
  5. Would this finder quest cause overall game lag if it started/stopped too often?
  6. Or you can use arrays from F4DS, where it is suitable %)
  7. I do not see any way how it might work. f4se_1_10_163.lib has only single function for linker - StartF4SE. This is the only function that you can call from f4se_1_10_163.dll I suppose your code do not call it %) Actually, I do not see any code that calls this function. It looks like a rudiment. Perhaps, you have changed process of f4se project building and it produces something different now. Perhaps, you've changed f4se project type from dynamic library to static library, like mentioned in another thread
  8. If you take a look to the folder with f4se_1_10_163.lib you can found also f4se_1_10_163.dll, that might give you a hint - it is for dynamic linking. Next step - take a look how f4se_1_10_163.dll is used at runtime. If you take a look to installation package, you found that f4se_1_10_163.dll is placed to the root folder of Fallout 4 game. Also, looking to the exporting functions table you found a single function only - StartF4SE. This might give you a hint - it is not about plugins, but about how F4SE is starting. By the way, f4se_1_10_163.lib has only single exporting function - StartF4SE. Surprised? %) So you are looking to the wrong place. f4se_1_10_163.lib is not for your plugins. In order to build your plugin you can include necessary C++ files to your project. In your particular scenario the files are: for Heap_Allocate, Heap_Free and Console_Print: GameAPI.cpp for StringCache::Ref::Ref : GameTypes.cpp for VMValue::SetNone: PapyrusValue.cpp for UnpackHandle and GetTypeID: PapyrusArgs.cpp You can take a look to my plugins (best example). Perhaps, they would give you a better start.
  9. 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.
  10. 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:
  11. 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
×
×
  • Create New...