Compare commits

...

33 커밋
3.0 ... main

작성자 SHA1 메시지 날짜
3f214a3cd3 New Api Version
All checks were successful
Workflow / Linting (push) Successful in 7s
Workflow / Release (push) Successful in 9s
2024-11-24 15:25:25 +01:00
d9ab607b4c Update Readme Badges
All checks were successful
Workflow / Linting (push) Successful in 7s
Workflow / Release (push) Has been skipped
2024-09-20 13:54:38 +02:00
92882f9de1 Merge pull request 'Implement Gitea Workflow' (#8) from implement-gitea-workflow into main
All checks were successful
Workflow / Linting (push) Successful in 7s
Workflow / Release (push) Has been skipped
Reviewed-on: #8
2024-09-20 11:43:10 +00:00
a64f7525d0 Add status to readme
All checks were successful
Workflow / Linting (push) Successful in 7s
Workflow / Release (push) Has been skipped
2024-09-20 13:42:26 +02:00
fa78082738 Implement Gitea Workflow
All checks were successful
Workflow / Linting (push) Successful in 7s
Workflow / Release (push) Has been skipped
2024-09-20 13:29:05 +02:00
9b655c1848 Add version status to readme, tag v16 due to an upload fail in esoui
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2024-09-20 00:06:54 +02:00
fba862a1ef Fix Bracket-Style
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-09-19 22:43:07 +02:00
c5a82f86c9 New Api Version 2024-09-19 22:29:02 +02:00
341f07a0f6 New Api Version
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2023-08-27 21:11:14 +02:00
bead07a0cf New Api Version
All checks were successful
continuous-integration/drone Build is passing
continuous-integration/drone/tag Build is passing
2023-08-12 16:39:57 +02:00
407dc14298 New Api Version
All checks were successful
continuous-integration/drone Build is passing
continuous-integration/drone/tag Build is passing
2023-03-28 17:43:12 +02:00
7b9de40e57 New Api Version
All checks were successful
continuous-integration/drone Build is passing
continuous-integration/drone/tag Build is passing
2022-08-31 22:39:30 +02:00
450cad90b9 New Api Version
All checks were successful
continuous-integration/drone Build is passing
continuous-integration/drone/tag Build is passing
2022-07-18 20:04:11 +02:00
739352c641 New Api Version
Some checks reported errors
continuous-integration/drone/push Build was killed
continuous-integration/drone/tag Build is passing
continuous-integration/drone Build is passing
2022-03-30 21:23:07 +02:00
6ccaa69b5a New Api Version
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
continuous-integration/drone/tag Build is passing
2021-11-18 20:40:07 +01:00
6ae87cea64 New Api Version
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
continuous-integration/drone/tag Build is passing
2021-08-26 12:36:56 +02:00
f9d3cf6e84 Fixing typos
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-06-07 20:58:05 +02:00
0d5248671f New Api Version 2021-06-07 20:58:00 +02:00
Florian Brinker
634f7b5c6d Fix ShowDetails not working properly
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-03-20 16:03:01 +01:00
Florian Brinker
affde86fa9 New Api Version
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2021-03-12 18:01:08 +01:00
53bc660b7c Add Download and Favorites Badge
All checks were successful
continuous-integration/drone/push Build is passing
2020-11-02 21:53:06 +00:00
Florian Brinker
ec7939be37 Fix Linting for new global method
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-11-02 22:10:33 +01:00
de1cb88ca8 Fix Typo
Some checks failed
continuous-integration/drone/push Build is failing
2020-11-02 21:08:29 +00:00
Florian Brinker
176a0ccf91 Fix a bug with gendered labels
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing
2020-11-02 21:53:39 +01:00
Florian Brinker
fde8966292 New Api Version
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-11-02 20:23:24 +01:00
Florian Brinker
90332bac93 Remove screenshots from build
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-08-25 09:56:37 +02:00
Florian Brinker
014300b239 New Api version
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-08-25 09:52:01 +02:00
b55d263f25 Add description and screenshot
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-07 20:52:50 +00:00
7c530dc0a1 Remove screenshots from build
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-07 20:50:42 +00:00
c9ac569694 Dateien hochladen nach „screenshots“
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-07 20:49:39 +00:00
Florian Brinker
35abf9337b Fix typo
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2020-06-07 20:03:56 +02:00
c7d11b3e44 Merge pull request '#2: Add accountwide settings' (#6) from 2-account-wide-settings into master
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
Reviewed-on: #6
2020-06-07 12:58:15 +00:00
Florian Brinker
af3a473fe2 #2: Add accountwide settings
All checks were successful
continuous-integration/drone/push Build is passing
2020-06-07 14:54:32 +02:00
14개의 변경된 파일174개의 추가작업 그리고 85개의 파일을 삭제

파일 보기

@ -1,3 +0,0 @@
{
"url": "https://drone.f-brinker.de/fbrinker/elderscrolls-addon-achievementInfo/"
}

파일 보기

@ -1,58 +0,0 @@
---
kind: pipeline
name: default
clone:
disable: true
steps:
- name: clone
image: alpine/git
commands:
- git clone https://git.f-brinker.de/fbrinker/elderscrolls-addon-achievementInfo.git sources
- cd sources && git checkout $DRONE_COMMIT
- name: lint
image: alpine
commands:
- apk update
- apk add --no-cache build-base curl unzip
- apk add --no-cache lua5.1 lua5.1-dev luarocks5.1
- luarocks-5.1 install luacheck
- cd sources
- luacheck ./*.lua
- name: build
image: alpine
commands:
- apk update && apk add --no-cache zip
# Delete unneeded files/dirs
- rm -rf sources/.git
- rm -f sources/.drone.status
- rm -f sources/.drone.yml
- rm -f sources/.luacheckrc
# Set Version and AddonVersion
- export VERSION=$DRONE_TAG
- export ADDON_VERSION=$(echo $DRONE_TAG | sed -E 's/(0|)\.//g')
- sed -i "s/0.123456789/$VERSION/g" sources/AchievementInfoCommon.lua
- sed -i "s/0.123456789/$VERSION/g" sources/AchievementInfo.txt
- sed -i "s/0.123456789/$ADDON_VERSION/g" sources/AchievementInfo.txt
# Rename and zip
- mv sources AchievementInfo
- zip -r "AchievementInfo-$DRONE_TAG.zip" ./AchievementInfo
when:
event:
- tag
- name: release
image: plugins/gitea-release
settings:
base_url: https://git.f-brinker.de
api_key:
from_secret: gitea_token
files: ./*.zip
title: AchievementInfo ${DRONE_TAG}
note: AchievementInfo/CHANGELOG.md
when:
event:
- tag

파일 보기

@ -0,0 +1,55 @@
name: Workflow
run-name: ${{ gitea.actor }} is linting and creating a new release on tag pushes 🚀
on: [push]
jobs:
Linting:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Run Luacheck linter
uses: lunarmodules/luacheck@v1
Release:
needs: [Linting]
if: ${{ startsWith(github.ref, 'refs/tags/') }} # only for tags
runs-on: ubuntu-latest
env:
Version: ${{ gitea.ref_name }}
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
path: sources
- name: Delete unneeded files/dirs
run: |
rm -rf sources/.git
rm -rf sources/.gitea
rm -rf sources/screenshots
rm -f sources/.luacheckrc
- name: Set Version and AddonVersion
run: |
echo "Version: ${{ env.Version }}"
export ADDON_VERSION=$(echo ${{ env.Version }} | sed -E 's/(0|)\.//g')
sed -i "s/0.123456789/${{ env.Version }}/g" sources/AchievementInfoCommon.lua
sed -i "s/0.123456789/${{ env.Version }}/g" sources/AchievementInfo.txt
sed -i "s/0.123456789/$ADDON_VERSION/g" sources/AchievementInfo.txt
- name: Rename and zip
run: |
mv sources AchievementInfo
zip -r "AchievementInfo-${{ env.Version }}.zip" ./AchievementInfo
- name: Create release
id: create_release
uses: akkuman/gitea-release-action@v1
with:
token: ${{ secrets.token }}
name: "AchievementInfo ${{ env.Version }}"
tag_name: "${{ env.Version }}"
body_path: AchievementInfo/CHANGELOG.md
draft: false
prerelease: false
sha256sum: true
files: |-
*.zip

파일 보기

@ -17,7 +17,8 @@ read_globals = {
"EVENT_ACHIEVEMENT_UPDATED",
"EVENT_ADD_ON_LOADED",
"EVENT_MANAGER",
"LINK_STYLE_BRACKET",
"LINK_STYLE_BRACKETS",
"zo_callLater",
"zo_strformat",
"ZO_SavedVars",
}

파일 보기

@ -15,6 +15,7 @@ function AchievementInfo.initialize(_, addOnName)
AchievementInfo.hijackedFirstLoad = true
-- Load Saved Variables
AchievementInfo.useAccountWideSettings = AchievementInfo.loadUseAccountWideSettings()
AchievementInfo.savedVars = AchievementInfo.loadSavedVars()
-- Load Language Data

파일 보기

@ -5,8 +5,8 @@
## Author: |c87B7CCAsto|r, @Astarax
## Contact: mail@coded-with-heart.com
## APIVersion: 100031
## SavedVariables: ACHIEVEMENT_INFO_DB
## APIVersion: 101044
## SavedVariables: ACHIEVEMENT_INFO_DB ACHIEVEMENT_INFO_DB_USE_AW
## DependsOn: LibAddonMenu-2.0

파일 보기

@ -49,7 +49,7 @@ function AchievementInfo.onAchievementUpdated(_, achId)
local percentageStep = false
local percentageStepSize = AchievementInfo.settingGet("genShowUpdateSteps")
local link = GetAchievementLink(achId, LINK_STYLE_BRACKET)
local link = GetAchievementLink(achId, LINK_STYLE_BRACKETS)
local catName = "/"
if categoryId ~= false then
@ -67,13 +67,18 @@ function AchievementInfo.onAchievementUpdated(_, achId)
tmpOutput = tmpOutput .. ", "
end
tmpOutput = tmpOutput .. description .. " "
tmpOutput = tmpOutput .. zo_strformat("<<1>>", description) .. " "
tmpOutput = tmpOutput .. AchievementInfo.calcCriteriaColor(numCompleted, numRequired) .. numCompleted .. "|r"
tmpOutput = tmpOutput .. AchievementInfo.clrDefault .. "/" .. "|r"
tmpOutput = tmpOutput .. AchievementInfo.clrCriteriaComplete .. numRequired .. "|r"
tmpOutput = tmpOutput .. AchievementInfo.clrDefault
if AchievementInfo.settingGet("genShowOpenDetailsOnly") == true and numCompleted ~= numRequired then
if AchievementInfo.settingGet("genShowOpenDetailsOnly") == true then
if numCompleted ~= numRequired then
detailOutput[detailOutputCount] = tmpOutput
detailOutputCount = detailOutputCount + 1
end
else
detailOutput[detailOutputCount] = tmpOutput
detailOutputCount = detailOutputCount + 1
end

파일 보기

@ -35,6 +35,9 @@ LANG_STORE.EN.SettingsOption.AddOnEnabled = "AddOn enabled"
LANG_STORE.EN.SettingsOption.AddOnEnabledTooltip = "Enable or disable this AddOn"
LANG_STORE.EN.SettingsOption.AddOnEnabledWarning = "Only the output messages can be disabled here"
LANG_STORE.EN.SettingsOption.AccountWideEnabled = "Use account-wide Settings"
LANG_STORE.EN.SettingsOption.AccountWideEnabledTooltip = "Use and edit the same settings for all characters"
LANG_STORE.EN.SettingsOption.ShowEveryUpdate = "Show every update"
LANG_STORE.EN.SettingsOption.ShowEveryUpdateTooltip = "Shows a message on every status update of an achievement. Otherwise the messages appear only in steps of x%"
@ -86,6 +89,9 @@ LANG_STORE.DE.SettingsOption.AddOnEnabled = "AddOn aktiviert"
LANG_STORE.DE.SettingsOption.AddOnEnabledTooltip = "Aktiviere oder deaktiviere dieses AddOn"
LANG_STORE.DE.SettingsOption.AddOnEnabledWarning = "An dieser Stelle können nur die Ausgaben deaktiviert werden."
LANG_STORE.DE.SettingsOption.AccountWideEnabled = "Accountübergreifende Einstellungen"
LANG_STORE.DE.SettingsOption.AccountWideEnabledTooltip = "Benutze und speichere die Einstellungen für alle Charaktere"
LANG_STORE.DE.SettingsOption.ShowEveryUpdate = "Zeige alle Fortschritte"
LANG_STORE.DE.SettingsOption.ShowEveryUpdateTooltip = "Zeigt bei jeder Aktualisierung eines Erfolgs einen Hinweis. Alternativ wird nur in x% Schritten ein Status ausgegeben"
@ -138,6 +144,9 @@ LANG_STORE.FR.SettingsOption.AddOnEnabled = "Extension activée"
LANG_STORE.FR.SettingsOption.AddOnEnabledTooltip = "Active ou désactive cette extension"
LANG_STORE.FR.SettingsOption.AddOnEnabledWarning = "Seul les messages sortants peuvent être désactivés"
LANG_STORE.FR.SettingsOption.AccountWideEnabled = LANG_STORE.EN.SettingsOption.AccountWideEnabled
LANG_STORE.FR.SettingsOption.AccountWideEnabledTooltip = LANG_STORE.EN.SettingsOption.AccountWideEnabledTooltip
LANG_STORE.FR.SettingsOption.ShowEveryUpdate = "Affichage de chaque mise à jour"
LANG_STORE.FR.SettingsOption.ShowEveryUpdateTooltip = "Affiche un message pour chaque mise à jour d'un succès. Le reste du temps les messages n'apparaissent que sous forme de plage de x%"

파일 보기

@ -5,6 +5,15 @@
-- Function to determine if Account Wide Settings should be used
function AchievementInfo.loadUseAccountWideSettings()
return ZO_SavedVars:New("ACHIEVEMENT_INFO_DB_USE_AW", 1, nil, {
enabled = false
})
end
-- Function to set and load the Saved Variables
function AchievementInfo.loadSavedVars()
local defaults = {
@ -36,9 +45,14 @@ function AchievementInfo.loadSavedVars()
cat20 = true,
cat21 = true,
cat22 = true,
-- ... new one default to true
devDebug = false
}
if AchievementInfo.useAccountWideSettings["enabled"] == true then
return ZO_SavedVars:NewAccountWide("ACHIEVEMENT_INFO_DB", 1, nil, defaults)
end
return ZO_SavedVars:New("ACHIEVEMENT_INFO_DB", 1, nil, defaults)
end
@ -49,16 +63,16 @@ function AchievementInfo.createSettingsPanel()
local panelData = {
type = "panel",
name = AchievementInfo.name,
displayName = AchievementInfo.clrDefault..AchievementInfo.name,
displayName = AchievementInfo.clrDefault .. AchievementInfo.name,
author = AchievementInfo.author,
version = string.format("%.1f", AchievementInfo.version),
version = string.format("%.2f", AchievementInfo.version),
slashCommand = "/achievementInfo"
}
local optionsTable = {
[1] = {
type = "header",
name = AchievementInfo.clrSettingsHeader..LANG.SettingsHeader.General
name = AchievementInfo.clrSettingsHeader .. LANG.SettingsHeader.General
},
[2] = {
type = "checkbox",
@ -69,13 +83,21 @@ function AchievementInfo.createSettingsPanel()
warning = LANG.SettingsOption.AddOnEnabledWarning
},
[3] = {
type = "checkbox",
name = LANG.SettingsOption.AccountWideEnabled,
tooltip = LANG.SettingsOption.AccountWideEnabledTooltip,
getFunc = function() return AchievementInfo.useAccountWideSettings["enabled"] end,
setFunc = function() AchievementInfo.toggleAccountWideSettings() end,
requiresReload = true
},
[4] = {
type = "checkbox",
name = LANG.SettingsOption.ShowEveryUpdate,
tooltip = LANG.SettingsOption.ShowEveryUpdateTooltip,
getFunc = function() return AchievementInfo.settingGet("genShowEveryUpdate") end,
setFunc = function() AchievementInfo.settingToogle("genShowEveryUpdate") end
},
[4] = {
[5] = {
type = "slider",
name = LANG.SettingsOption.ShowUpdateSteps,
tooltip = LANG.SettingsOption.ShowUpdateStepsTooltip,
@ -86,21 +108,21 @@ function AchievementInfo.createSettingsPanel()
setFunc = function(value) AchievementInfo.settingSet("genShowUpdateSteps", value) end,
default = 25
},
[5] = {
[6] = {
type = "checkbox",
name = LANG.SettingsOption.ShowDetails,
tooltip = LANG.SettingsOption.ShowDetailsTooltip,
getFunc = function() return AchievementInfo.settingGet("genShowDetails") end,
setFunc = function() AchievementInfo.settingToogle("genShowDetails") end
},
[6] = {
[7] = {
type = "checkbox",
name = LANG.SettingsOption.ShowOpenDetailsOnly,
tooltip = LANG.SettingsOption.ShowOpenDetailsOnlyTooltip,
getFunc = function() return AchievementInfo.settingGet("genShowOpenDetailsOnly") end,
setFunc = function() AchievementInfo.settingToogle("genShowOpenDetailsOnly") end
},
[7] = {
[8] = {
type = "checkbox",
name = LANG.SettingsOption.OneElementPerLine,
tooltip = LANG.SettingsOption.OneElementPerLineTooltip,
@ -108,11 +130,11 @@ function AchievementInfo.createSettingsPanel()
setFunc = function() AchievementInfo.settingToogle("genOnePerLine") end,
warning = LANG.SettingsOption.OneElementPerLineWarning
},
[8] = {
[9] = {
type = "header",
name = AchievementInfo.clrSettingsHeader .. LANG.SettingsHeader.Categories
},
[9] = {
[10] = {
type = "description",
text = LANG.SettingsHeader.CategoriesDescription .. ":"
}
@ -128,8 +150,8 @@ function AchievementInfo.createSettingsPanel()
type = "checkbox",
name = catName,
tooltip = LANG.SettingsOption.CategoryTooltip .. " '" .. catName .. "'",
getFunc = function() return AchievementInfo.settingGet("cat"..i) end,
setFunc = function() AchievementInfo.settingToogle("cat"..i) end
getFunc = function() return AchievementInfo.settingGetForCategory("cat" .. i) end,
setFunc = function() AchievementInfo.settingToogle("cat" .. i) end
})
end
@ -149,8 +171,8 @@ function AchievementInfo.createSettingsPanel()
})
-- Register
LibAddonMenu2:RegisterAddonPanel(AchievementInfo.name.."SettingsPanel", panelData)
LibAddonMenu2:RegisterOptionControls(AchievementInfo.name.."SettingsPanel", optionsTable)
LibAddonMenu2:RegisterAddonPanel(AchievementInfo.name .. "SettingsPanel", panelData)
LibAddonMenu2:RegisterOptionControls(AchievementInfo.name .. "SettingsPanel", optionsTable)
end
@ -167,6 +189,18 @@ end
-- Function to retrieve settings for categories (default true)
function AchievementInfo.settingGetForCategory(id)
if AchievementInfo.savedVars[id] == nil then
AchievementInfo.savedVars[id] = true
return true
else
return AchievementInfo.savedVars[id]
end
end
-- Function to toggle Checkbox values
function AchievementInfo.settingToogle(id)
if AchievementInfo.savedVars[id] == false then
@ -178,6 +212,17 @@ end
-- Function to toggle Checkbox value for accountWideSettings
function AchievementInfo.toggleAccountWideSettings()
if AchievementInfo.useAccountWideSettings["enabled"] == false then
AchievementInfo.useAccountWideSettings["enabled"] = true
else
AchievementInfo.useAccountWideSettings["enabled"] = false
end
end
-- Function to set settings
function AchievementInfo.settingSet(id, value)
AchievementInfo.savedVars[id] = value

파일 보기

@ -1,5 +1,18 @@
#### Notable Changes
##### Release 4.15
* Fixed "bracket style" of the achievement links, thanks to DakJaniels
##### Release 4.5
* Fixed "ShowDetails" option working only in combination with "ShowOpenDetailsOnly"
##### Release 4.3
* Fixed an error with gendered achievement descriptions
##### Release 4.0
* Added accountwide settings
* Added an "use accountwide settings" option to the settings of each character
##### Release 3.0
* Removed the bundled Dependency LibAddonMenu-2.0: You have to download it on your own now

파일 보기

@ -1,12 +1,33 @@
# AchievementInfo
[![Build Status](https://drone.f-brinker.de/api/badges/fbrinker/elderscrolls-addon-achievementInfo/status.svg)](https://drone.f-brinker.de/fbrinker/elderscrolls-addon-achievementInfo)
[![Latest Releases](https://badgen.net/badge/releases/latest)](https://git.f-brinker.de/fbrinker/elderscrolls-addon-achievementInfo/releases)
[![Version Status](https://monitoring.f-brinker.de/api/badge/18/status?style=plastic&upLabel=Up%20to%20date&downLabel=Outdated)](https://monitoring.f-brinker.de/status/eso)
[![Build Status](https://git.f-brinker.de/fbrinker/elderscrolls-addon-achievementInfo/actions/workflows/build.yaml/badge.svg)](https://git.f-brinker.de/fbrinker/elderscrolls-addon-achievementInfo/actions)
This is an **The Elderscrolls Online** addon. [See all details and the download @ESOUI](http://www.esoui.com/downloads/info350-AchievementInfo.html#info).
[![Latest Releases](https://badgen.net/badge/releases/latest)](https://git.f-brinker.de/fbrinker/elderscrolls-addon-achievementInfo/releases)
[![Downloads](https://badgen.net/https/scripts.f-brinker.de/esoui-stats/badge-total.php?cache=1800)](https://www.esoui.com/downloads/info350-AchievementInfo.html)
[![Favorites](https://badgen.net/https/scripts.f-brinker.de/esoui-stats/badge-fav.php?cache=1800)](https://www.esoui.com/downloads/info350-AchievementInfo.html)
This is a **The Elderscrolls Online** addon. [See all details and the download @ESOUI](http://www.esoui.com/downloads/info350-AchievementInfo.html#info).
[Issue-Tracker](https://git.f-brinker.de/fbrinker/elderscrolls-addon-achievementInfo/issues)
## Description
### What is this AddOn about?
I like achievements, and I like to know what to do to complete them and what type of achievements exist without browsing through the entire achievement catalog: This AddOn displays lightweight chat notifications if you make progress in an achievement (please see the screenshots).
### Features
* Shows chat notifications if you do something that is needed for an achievement
* Triggers on each action or just in x% steps of the achievement's requirements (configurable)
* Can show some details in the chat notification like (kill 250/1000 Humanoids)
* You can toggle the notifications for each category
* Lightweight: It is not always present and shows up only when necessary
* You can enable account-wide settings
![preview screenshot](screenshots/chat-1.jpg)
## Why is this a public project?
In case I quit or pause playing TESO and cannot maintain this addon, feel free to contribute to keep this up to date and running.
@ -14,9 +35,9 @@ I'll still be available here and be able to update the ESOUI page.
## How to contribute?
**IMPORTANT: Github is a mirror.** Please contribute at [git.f-brinker.de/elderscrolls-addon-achievementInfo](https://git.f-brinker.de/fbrinker/elderscrolls-addon-achievementInfo) - You can login with your Github or Gitlab account (OAuth2).
**IMPORTANT: Github is a mirror.** Please contribute at [git.f-brinker.de/elderscrolls-addon-achievementInfo](https://git.f-brinker.de/fbrinker/elderscrolls-addon-achievementInfo) - You can log in with your Github or Gitlab account (OAuth2).
Then, create a fork of the repository, do what you have to do and create a pull-request afterwards. Feel free to contact me any time.
Then, create a fork of the repository, do what you have to do, and create a pull-request afterward. Feel free to contact me any time.
#### Linting
Luacheck is used to check the LUA code. [Documentation](https://luacheck.readthedocs.io/en/stable/index.html)

BIN
screenshots/chat-1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  크기: 60 KiB

BIN
screenshots/chat-2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  크기: 21 KiB

BIN
screenshots/settings.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  크기: 91 KiB