improve docs
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
## What does attempt to index a nil value mean!?
|
||||
It means you tried to access a field of something that doesn't exist, for example:
|
||||
```lua
|
||||
```
|
||||
local thisIsNil = nil
|
||||
print(thisIsNil.what)
|
||||
print(thisIsNil.something())
|
||||
@@ -10,20 +10,22 @@ print(thisIsNil.something())
|
||||
|
||||
## Why i'm getting "Cannot access field test of userdata<something>" errors?
|
||||
Because you are trying to access a field in a C# class that doesn't exist.
|
||||
```lua
|
||||
```
|
||||
print(Item.thisDoesntExist)
|
||||
```
|
||||
|
||||
## What is "Attempt to access instance member "Drop" from a static userdata"
|
||||
It means you are trying to access a member that requires an instance to accessed, for example:
|
||||
```lua
|
||||
Item.Drop() -- there's a static global class called Item, but because it's static, you can't call item specific things on it, this will error.
|
||||
```
|
||||
-- there's a static global class called Item, but because it's static, you can't call item specific
|
||||
-- things on it, this will error.
|
||||
Item.Drop()
|
||||
Item.ItemList[1].Drop() -- this won't error, it will drop the first item ever created.
|
||||
```
|
||||
|
||||
## I'm getting a super big error with things related to the C# side
|
||||
It usually happens when you call something on the C# side and you provide nil inputs, you can get a better idea of it by analyzing the error message and trying to link it your lua code, for example:
|
||||
```lua
|
||||
```
|
||||
Game.SendMessage(nil)
|
||||
```
|
||||
This will result in
|
||||
@@ -36,7 +38,7 @@ Character senderCharacter, PlayerConnectionChangeType changeType)
|
||||
You can easily tell that the error has something to do with chat messages, and by looking back at your Lua code you can easily see whats causing it.
|
||||
|
||||
## How do i list all clients, characters and items?
|
||||
```lua
|
||||
```
|
||||
for _, client in pairs(Client.ClientList) do
|
||||
|
||||
end
|
||||
@@ -52,7 +54,7 @@ end
|
||||
|
||||
## Running pairs() on an enumerator doesn't work!
|
||||
pairs() Returns an enumerator that iterates through the entire table keys, if you already have an enumerator, you can just pass it in directly.
|
||||
```lua
|
||||
```
|
||||
-- get first item ever created and loop through all the items stored inside it.
|
||||
for item in Item.ItemList[1].OwnInventory.AllItems do
|
||||
|
||||
@@ -60,7 +62,7 @@ end
|
||||
```
|
||||
|
||||
## How do i spawn an item?
|
||||
```lua
|
||||
```
|
||||
local prefab = ItemPrefab.GetItemPrefab("screwdriver")
|
||||
local firstPlayerCharacter = Client.ClientList[1].Character
|
||||
|
||||
@@ -77,7 +79,7 @@ end)
|
||||
|
||||
## How do i give a character a certain affliction
|
||||
|
||||
```lua
|
||||
```
|
||||
local burnPrefab = AfflictionPrefab.Prefabs["burn"]
|
||||
|
||||
local char = Character.CharacterList[1]
|
||||
@@ -90,7 +92,7 @@ char.CharacterHealth.ApplyAffliction(limb, burnPrefab.Instantiate(100))
|
||||
|
||||
## How do i get the amount of a affliction that a character has?
|
||||
|
||||
```lua
|
||||
```
|
||||
local char = Character.CharacterList[1]
|
||||
|
||||
print(char.CharacterHealth.GetAffliction("burn"))
|
||||
@@ -100,7 +102,7 @@ print(char.CharacterHealth.GetAffliction("burn", char.AnimController.Limbs[1]))
|
||||
|
||||
## How do i send a private chat message?
|
||||
|
||||
```lua
|
||||
```
|
||||
local chatMessage = ChatMessage.Create("Sender name", "text here", ChatMessageType.MessageBox, nil, nil)
|
||||
Game.SendDirectChatMessage(chatMessage, ChatMessageType.MessageBox)
|
||||
```
|
||||
@@ -6,7 +6,7 @@ Hooks are basically functions that get called when events happen in-game, like c
|
||||
|
||||
Hooks can be added like this:
|
||||
|
||||
```lua
|
||||
```
|
||||
Hook.Add("chatMessage", "test", function(message, client)
|
||||
print(client.Name .. " has sent " .. message)
|
||||
end)
|
||||
@@ -18,7 +18,7 @@ The event name (first argument), is case-insensitive, so you can call it chatMes
|
||||
|
||||
You can also call hooks with the following code:
|
||||
|
||||
```lua
|
||||
```
|
||||
Hook.Call("myCustomEvent", {"some", "arguments", 123})
|
||||
```
|
||||
|
||||
@@ -26,13 +26,13 @@ Hook.Call("myCustomEvent", {"some", "arguments", 123})
|
||||
|
||||
With Lua, a new XML tags is added, it can be used to call Lua hooks inside status effects:
|
||||
|
||||
```xml
|
||||
```
|
||||
<StatusEffect type="OnUse">
|
||||
<LuaHook name="doSomething">
|
||||
<LuaHook name="doSomething" />
|
||||
</StatusEffect>
|
||||
```
|
||||
|
||||
```lua
|
||||
```
|
||||
Hook.Add("doSomething", "something", function (effect, deltaTime, item, targets, worldPosition)
|
||||
print(effect, ' ', item)
|
||||
end)
|
||||
@@ -42,7 +42,7 @@ end)
|
||||
|
||||
Patching allows you to hook into existing methods in the game code, notice that it can be a little unstable depending on the method that you are patching, so be aware.
|
||||
|
||||
```lua
|
||||
```
|
||||
Hook.HookMethod("Barotrauma.CharacterInfo", "IncreaseSkillLevel", function (instance, ptable)
|
||||
print(string.format("%s gained % xp", instance.Character.Name, ptable.increase))
|
||||
end, Hook.HookMethodType.After)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# Installing Lua For Barotrauma Manually
|
||||
|
||||
## Adding Lua For Barotrauma to an existing server
|
||||
1 - Download [latest version of LuaForBarotrauma](https://github.com/evilfactory/Barotrauma-lua-attempt/releases/tag/latest), choose the correct platform in the assets drop down.<br>
|
||||
2 - Extract the zip file<br>
|
||||
@@ -56,4 +58,10 @@ Same as above, but instead you need to copy/replace the following files:
|
||||
7 - Done! Now run DedicatedServer.exe to run the modded server or run Barotrauma.exe to run the modded client.<br>
|
||||
|
||||
### Linux notice
|
||||
Sometimes you will get steam initialization errors, most of the time it's because it's missing the linux64/steamclient.so binary, so you can just copy the binary from your steam instalation over to the folder and it should work.
|
||||
Sometimes you will get steam initialization errors, most of the time it's because it's missing the linux64/steamclient.so binary, so you can just copy the binary from your steam instalation over to the folder and it should work.
|
||||
|
||||
|
||||
|
||||
## Checking if everything is working
|
||||
|
||||
If the commands `reloadlua` or `cl_reloadlua` work, it means you successfully installed the mod.
|
||||
@@ -1,6 +1,6 @@
|
||||
# Lua Examples
|
||||
|
||||
```lua
|
||||
```
|
||||
Hook.Add('chatMessage', 'suicide_mod', function(msg, client)
|
||||
if msg == '!suicide' and client.Character ~= nil then
|
||||
client.Character.Kill(CauseOfDeathType.Unknown)
|
||||
@@ -10,7 +10,9 @@ Hook.Add('chatMessage', 'suicide_mod', function(msg, client)
|
||||
end)
|
||||
```
|
||||
|
||||
```lua
|
||||
<br>
|
||||
|
||||
```
|
||||
Hook.Add("itemApplyTreatment", "testItemApplyTreatment", function (item, user, character, targetlimb)
|
||||
if item.name == "Bandage" then
|
||||
local pos = character.WorldPosition
|
||||
@@ -21,7 +23,10 @@ Hook.Add("itemApplyTreatment", "testItemApplyTreatment", function (item, user, c
|
||||
end)
|
||||
```
|
||||
|
||||
```lua
|
||||
<br>
|
||||
|
||||
|
||||
```
|
||||
-- for example: create an item in xml named RandomComponent and add the wiring inputs/outputs trigger_random and random_out
|
||||
Hook.Add("signalReceived", "signalReceivedTest", function (signal, connection)
|
||||
if connection.Item.name == "RandomComponent" and connection.Name == "trigger_random" then
|
||||
@@ -30,7 +35,9 @@ Hook.Add("signalReceived", "signalReceivedTest", function (signal, connection)
|
||||
end)
|
||||
```
|
||||
|
||||
```lua
|
||||
<br>
|
||||
|
||||
```
|
||||
local discordWebHook = "your discord webhook here"
|
||||
|
||||
local function escapeQuotes(str)
|
||||
@@ -45,7 +52,10 @@ Hook.Add("chatMessage", "discordIntegration", function (msg, client)
|
||||
end)
|
||||
```
|
||||
|
||||
```lua
|
||||
<br>
|
||||
|
||||
|
||||
```
|
||||
-- by jimmyl
|
||||
Hook.Add("chatMessage","controlhuskcommand",function(msg, client)
|
||||
if msg == "!controlhusk" then
|
||||
|
||||
Reference in New Issue
Block a user