Ради вашего удобства наш сайт использует cookies! Узнать больше! Мы используем cookies

Better Chatting

An attempt at improving Factorio's built in chat.

Recommended to be combined with Twemoji or Fluent Emoji (or both)

Emojipack

The main reason I made this mod, is to add support for discord style emotes. eg: :purple_heart: -> 💜

This functions by other mods calling remote.call("emojipack registration", "add") with the mod name and a dictionary of shortcodes and their tags. I recommend using

Scripting

To print a permanent message instead of letting Better Chat clear it away, use remote.call("better-chat", "send", {}) <br>The arguments are:

  • message - LocalisedString : The contents of the message.
  • level - historyLevel : Whether the message is intended for "global" broadcast, everyone on some "force", everyone on a "surface", or a specific "player".
  • recipient - uint : Either the player, surface, or force that recieves it if the send\_level was not global.
  • color - Color? : The base color of the message.
  • process_color - boolean? : Whether or not the message is faded out by the player's settings. Defaults to false.
  • skip_print - boolean? : Whether or not the added chat is printed at all. This will also skip any sound. Defaults to false.
  • This was intended to be able to preserve the output of commands with less jank.
  • clear - boolean? : Whether or not the chat is cleared before printing the new message. Defaults to true.
  • sound - defines.print_sound? : If a sound should be emitted for this message. Defaults to defines.print_sound.use_player_settings if clear is false. Otherwise defaults to defines.print_sound.never.
  • sound_path - SoundPath? : The sound to play. If not given, UtilitySounds::console\_message will be used instead.
  • volume_modifier - float? : The volume of the sound to play. Must be between 0 and 1 inclusive. Defaults to 1

Compatibility

For easy compatibility, you can just use this code snippet and turn every object.print(message, settings) into compat_send(object, message, settings).

```lua
---@type boolean?
local has_better_chat = nil
local send_levels = {
["LuaGameScript"] = "global",
["LuaForce"] = "force",
["LuaPlayer"] = "player",
["LuaSurface"] = "surface",
}
--- Safely attempts to print via the Better Chatting's interface
---@param recipient LuaGameScript|LuaForce|LuaPlayer|LuaSurface
---@param msg LocalisedString
---@param print_settings PrintSettings?
function compat_send(recipient, msg, print_settings)
if has_better_chat == nil then
local better_chat = remote.interfaces["better-chat"]
has_better_chat = better_chat and better_chat["send"] or false
end

if not has_better_chat then return recipient.print(msg, print_settings) end
print_settings = print_settings or {}

local send_level = send_levels[recipient.object_name]
---@type int?
local send_index
if send_level ~= "global" then
send_index = recipient.index
if not send_index then
error("Invalid Recipient", 2)
end
end

remote.call("better-chat", "send", {
message = msg,
send_level = send_level,
color = print_settings.color,
recipient = send_index,
clear = false,

sound = print_settings.sound,
sound_path = print_settings.sound_path,
volume_modifier = print_settings.volume_modifier
})
end
```

## Todo List:

  • \[ ] Add nicknames

Рейтинг

Войдите, чтобы голосовать.
🏅 Нет оценок

Базовые теги:

Загрузить 4.9 KB