📗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/ToVariant
Classes
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) -- 12h0m0s
Regular 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
end
player = 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))
end
Helpers
Last updated