From 02a1e0343af6e2ab84ff6e547752eae5f67a11ac Mon Sep 17 00:00:00 2001 From: Valmo Trindade Date: Wed, 17 Jul 2024 03:03:28 -0300 Subject: [PATCH] initial main dll extension using a3go as template --- extensions/armatak/data.go | 42 ++++++++++++++++++++ extensions/armatak/go.mod | 5 +++ extensions/armatak/go.sum | 2 + extensions/armatak/main.go | 79 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 128 insertions(+) create mode 100644 extensions/armatak/data.go create mode 100644 extensions/armatak/go.mod create mode 100644 extensions/armatak/go.sum create mode 100644 extensions/armatak/main.go diff --git a/extensions/armatak/data.go b/extensions/armatak/data.go new file mode 100644 index 0000000..bfa4d82 --- /dev/null +++ b/extensions/armatak/data.go @@ -0,0 +1,42 @@ +package main + +type Mission struct { + MissionName string `json:"missionName"` + Worldname string `json:"worldname"` + MissionAuthor string `json:"missionAuthor"` + MissionType string `json:"missionType"` + Victory string `json:"victory"` + MissionStart string `json:"missionStart"` + MissionEnd string `json:"missionEnd"` + Date string `json:"date"` + ScoreBlue string `json:"scoreBlue"` + ScoreRed string `json:"scoreRed"` + ScoreGreen string `json:"scoreGreen"` + Players []Player `json:"players"` + Kills []Kill `json:"kills"` + FPS []float64 `json:"fps"` +} + +type Player struct { + UID string `json:"uid"` + Name string `json:"name"` + Side string `json:"side"` + Shots int `json:"shots"` + Hits int `json:"hits"` + Squad string `json:"squad"` + Role string `json:"role"` + Class string `json:"class"` +} + +type Kill struct { + Time string `json:"time"` + Victim string `json:"victim"` + Killer string `json:"killer"` + Weapon string `json:"weapon"` + Distance string `json:"distance"` +} + +type DiscordPayload struct { + Content string `json:"content"` + Username string `json:"username,omitempty"` // Optional field +} diff --git a/extensions/armatak/go.mod b/extensions/armatak/go.mod new file mode 100644 index 0000000..5c0b018 --- /dev/null +++ b/extensions/armatak/go.mod @@ -0,0 +1,5 @@ +module statsLoggerExtension + +go 1.20 + +require github.com/indig0fox/a3go v0.2.1 diff --git a/extensions/armatak/go.sum b/extensions/armatak/go.sum new file mode 100644 index 0000000..9a1c8d2 --- /dev/null +++ b/extensions/armatak/go.sum @@ -0,0 +1,2 @@ +github.com/indig0fox/a3go v0.2.1 h1:Ixr/182pGd5qPbFYgHINWt5YtyKaO7Yo/va/17nF/Vg= +github.com/indig0fox/a3go v0.2.1/go.mod h1:8htVwBiIAVKpT1Jyb+5dm7GuLAAevTXgw7UKxSlOawY= \ No newline at end of file diff --git a/extensions/armatak/main.go b/extensions/armatak/main.go new file mode 100644 index 0000000..6ae502c --- /dev/null +++ b/extensions/armatak/main.go @@ -0,0 +1,79 @@ +package main + +import ( + "bytes" + "encoding/json" + "fmt" + "net/http" + "path" + + "github.com/indig0fox/a3go/a3interface" + "github.com/indig0fox/a3go/assemblyfinder" +) + +// modulePath is the absolute path to the compiled DLL, which should be the addon folder +var modulePath string = assemblyfinder.GetModulePath() + +// modulePathDir is the containing folder +var modulePathDir string = path.Dir(modulePath) + +var EXTENSION_NAME = "STATS_LOGGER" + +var mission Mission + +var RVExtensionChannels = map[string]chan string{ + ":timeNow:": make(chan string), +} + +var RVExtensionArgsChannels = map[string]chan []string{ + ":RESET:": make(chan []string), + ":MISSION:": make(chan []string), + ":WIN:": make(chan []string), + ":PLAYER:": make(chan []string), + ":KILL:": make(chan []string), + ":SHOT:": make(chan []string), + ":HIT:": make(chan []string), + ":EXPORT:": make(chan []string), + ":FPS:": make(chan []string), +} + +var a3ErrorChan = make(chan error) + +func init() { + a3interface.SetVersion("1.0.0") + a3interface.RegisterRvExtensionArgsChannels(RVExtensionArgsChannels) + + webhookURL := "YOUR_WEBHOOK_URL" + + // Create the payload with the message + payload := DiscordPayload{ + Content: "Hello World!", + } + + // Convert the payload to JSON format + jsonData, err := json.Marshal(payload) + if err != nil { + fmt.Println("Error marshalling payload:", err) + return + } + + // Create a POST request to the Discord webhook URL + req, err := http.Post(webhookURL, "application/json", bytes.NewReader(jsonData)) + if err != nil { + fmt.Println("Error creating request:", err) + return + } + + // Close the request body + defer req.Body.Close() + + // Check the response status code + if req.StatusCode != http.StatusOK { + fmt.Println("Error sending request:", req.Status) + return + } +} + +func main() { + fmt.Scanln() +}