📗Scripting API
Explaining how to create and run a custom mod
To browse the API, do yourself a favour and use NativeDB
Summary
This page explains what is what
This page is still heavily WIP! Perhaps you'd like to work on it?
Helpers
- Helpers make it easy, some listed below 
Game
Game- Where can we use it, difference to redscript thing 
GetPlayer
GetPlayer- What is it in reds, dont store it etc. 
IsDefined
IsDefined- Description 
From/ToVariant
From/ToVariantClasses
- TODO: What names to use 
Creating Instances
- .new, as constructor 
Member Functions
These functions are called on Handles. You do not call them on a class, but rather on an instance of a class (not NPCPuppet:isTargetingPlayer(), but npcHandle:isTargetingPlayer())
Static Functions
They do not need a handle and are all located in a class, e.g. the Game object:
Game.PrintHealth()
-- or
Game.AddToInventory("Items.money", 500)Enums
- How to use, nativeDB link, enumInt 
CName
- Function to add CNames, string to cname 
Observe and Override
Blackboard System
Blackboard is a kind of shared data storage and a framework to access/notify/listen to the data in the storage. Similar to a real blackboard, game objects put their data on the board that then other objects can observe, react to or update the data. E.g. various game state values.
Handle functions
They require a handle (more on that later). Assuming you have a player handle:
print(player:IsNaked())
print(player:IsMoving())
player:OnDied()Handles
Handles are a way to pass an object to the function. For example IsNaked makes no sense without telling the engine for which object we want to know this information.
Singleton
These handles are static, there is only one in the game, for example the gameTimeSystem is a singleton so there is no need to tell the script engine which one you want. That being said you need a singleton handle so it knows you want to call a function on that system.
Sample:
gameTime = GetSingleton("gameTimeSystem")
print(gameTime:GetGameTime())
gameTime:SetGameTimeByHMS(12,0,0) -- 12h0m0sRegular handles
These handles are not unique, for example, the game contains multiple NPCs so there are as many handles as NPCs. Currently as far as I know we can only get the handle of the player by calling the global function Game.GetPlayer().
Sample:
player = Game.GetPlayer()
if player:IsNaked() then
    player:OnDied() -- kill the player if it's naked
endplayer = Game.GetPlayer()
ts = Game.GetTransactionSystem()
tid = TweakDBID.new("Items.money")
itemid = ItemID.new(tid)
result = ts:GiveItem(player, itemid, 100000)
if result then
    print("We added " .. tostring(itemid) .. " to the inventory!")
else
    print("Failed to add " .. tostring(itemid))
endHelpers
Last updated