Jump to content

DlinnyLag

Members
  • Posts

    99
  • 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. Get know how CPU works Get know assembler language, it will be necessary to understand what code implemented by Bethesda does Get know C/C++ on some level, to design some API for other people Get know how C++ compiler generates machine codes Get know how to use debuggers for reverse engineering Get know how operating systems (Windows, in particular) works. You need aspects related to processes, threads, memory, files and so on. As a plus - get know how other game engines are designed. Reserve several years for learning %)
  2. Could you describe it a bit more detailed? I never faced that script miss a event. How it would happen? What are conditions?
  3. 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
  4. 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.
  5. 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.
  6. Would this finder quest cause overall game lag if it started/stopped too often?
  7. Or you can use arrays from F4DS, where it is suitable %)
  8. 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
  9. 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.
  10. 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.
×
×
  • Create New...